Repository: seloufian/Deep-Learning-Computer-Vision Branch: master Commit: 3f3a790b14da Files: 126 Total size: 79.1 MB Directory structure: gitextract_4rfjadju/ ├── README.md ├── cs231n/ │ ├── assignment1/ │ │ ├── README.md │ │ ├── cs231n/ │ │ │ ├── __init__.py │ │ │ ├── classifiers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── k_nearest_neighbor.py │ │ │ │ ├── linear_classifier.py │ │ │ │ ├── linear_svm.py │ │ │ │ ├── neural_net.py │ │ │ │ └── softmax.py │ │ │ ├── data_utils.py │ │ │ ├── datasets/ │ │ │ │ └── get_datasets.sh │ │ │ ├── features.py │ │ │ ├── gradient_check.py │ │ │ └── vis_utils.py │ │ ├── features.ipynb │ │ ├── knn.ipynb │ │ ├── requirements.txt │ │ ├── softmax.ipynb │ │ ├── svm.ipynb │ │ └── two_layer_net.ipynb │ ├── assignment2/ │ │ ├── BatchNormalization.ipynb │ │ ├── ConvolutionalNetworks.ipynb │ │ ├── Dropout.ipynb │ │ ├── FullyConnectedNets.ipynb │ │ ├── PyTorch.ipynb │ │ ├── README.md │ │ ├── cs231n/ │ │ │ ├── __init__.py │ │ │ ├── build/ │ │ │ │ └── temp.linux-x86_64-3.6/ │ │ │ │ └── im2col_cython.o │ │ │ ├── classifiers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cnn.py │ │ │ │ └── fc_net.py │ │ │ ├── data_utils.py │ │ │ ├── datasets/ │ │ │ │ └── get_datasets.sh │ │ │ ├── fast_layers.py │ │ │ ├── gradient_check.py │ │ │ ├── im2col.py │ │ │ ├── im2col_cython.c │ │ │ ├── im2col_cython.pyx │ │ │ ├── layer_utils.py │ │ │ ├── layers.py │ │ │ ├── optim.py │ │ │ ├── setup.py │ │ │ ├── solver.py │ │ │ └── vis_utils.py │ │ └── requirements.txt │ └── assignment3/ │ ├── Generative_Adversarial_Networks_PyTorch.ipynb │ ├── LSTM_Captioning.ipynb │ ├── NetworkVisualization-PyTorch.ipynb │ ├── README.md │ ├── RNN_Captioning.ipynb │ ├── StyleTransfer-PyTorch.ipynb │ ├── cs231n/ │ │ ├── __init__.py │ │ ├── captioning_solver.py │ │ ├── classifiers/ │ │ │ ├── __init__.py │ │ │ ├── rnn.py │ │ │ └── squeezenet.py │ │ ├── coco_utils.py │ │ ├── data_utils.py │ │ ├── datasets/ │ │ │ ├── get_assignment3_data.sh │ │ │ ├── get_coco_captioning.sh │ │ │ ├── get_dataset.sh │ │ │ ├── get_datasets.sh │ │ │ ├── get_imagenet_val.sh │ │ │ └── get_squeezenet_tf.sh │ │ ├── fast_layers.py │ │ ├── gan_pytorch.py │ │ ├── gradient_check.py │ │ ├── im2col.py │ │ ├── im2col_cython.pyx │ │ ├── image_utils.py │ │ ├── layer_utils.py │ │ ├── layers.py │ │ ├── net_visualization_pytorch.py │ │ ├── optim.py │ │ ├── rnn_layers.py │ │ ├── setup.py │ │ └── style_transfer_pytorch.py │ ├── requirements.txt │ └── style-transfer-checks.npz └── eecs498-007/ ├── A4/ │ ├── README.md │ ├── a4_helper.py │ ├── eecs598/ │ │ ├── __init__.py │ │ ├── data.py │ │ ├── grad.py │ │ ├── solver.py │ │ ├── submit.py │ │ ├── utils.py │ │ └── vis.py │ ├── network_visualization.ipynb │ ├── network_visualization.py │ ├── pytorch_autograd_and_nn.ipynb │ ├── pytorch_autograd_and_nn.pkl │ ├── pytorch_autograd_and_nn.py │ ├── rnn_lstm_attention_captioning.ipynb │ ├── rnn_lstm_attention_captioning.py │ ├── rnn_lstm_attention_submission.pkl │ ├── style_transfer.ipynb │ └── style_transfer.py ├── A5/ │ ├── README.md │ ├── a5_helper.py │ ├── eecs598/ │ │ ├── __init__.py │ │ ├── data.py │ │ ├── grad.py │ │ ├── solver.py │ │ ├── submit.py │ │ ├── utils.py │ │ └── vis.py │ ├── frcnn_detector.pt │ ├── single_stage_detector.py │ ├── single_stage_detector_yolo.ipynb │ ├── two_stage_detector.py │ ├── two_stage_detector_faster_rcnn.ipynb │ └── yolo_detector.pt └── A6/ ├── README.md ├── a6_helper.py ├── eecs598/ │ ├── __init__.py │ ├── data.py │ ├── grad.py │ ├── solver.py │ ├── submit.py │ ├── utils.py │ └── vis.py ├── gan.py ├── generative_adversarial_networks.ipynb ├── vae.py └── variational_autoencoders.ipynb ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # Deep Learning for Computer Vision Courses ## General info I present my assignment solutions for both 2020 course offerings: **Stanford University CS231n** (CNNs for Visual Recognition) and **University of Michigan EECS 498-007/598-005** (Deep Learning for Computer Vision). ### Review After reading enormous positive reviews about CS231n, I decided to dive in by myself into the course lectures which, as expected, were great with well-presented and explained topics (thanks to the instructors) that covers a plethora of Machine Learning / Deep Learning concepts (not only computer vision related), theoretically (via lectures, slides and extra reading content) and practically (via the well-designed assignments). Depending on your ML understanding (especially, statistics, algebra and Python programming with NumPy package) this course can be challenging since the topics are covered from the fundamentals (actually, from scratch, going through all the math behind). Even me, having a mathematical background, I found myself struggled with some advanced topics (like Variational Autoencoders), which pushed me to review some maths/stats formulas. That being said, most of the course materials aren't that difficult and even so, all the putted efforts and spent time are totally worth it, you will learn a lot. In parallel to CS231n, I took also its Michigan's updated equivalent EECS 498-007 (abbreviated, as there is a lot of numbers in the course's title), because: - For CS231n, only 2016 and 2017 lectures are available, which is a little bit old given the fast progress in ML in general. However, this concerns only some topics and even that, the old lectures are still worthy to watch. - For EECS 498-007, the 2019 lectures are available. They cover more topics (like Attention, 3D, Video, etc.), and the ones existing in CS231n are updated, and some topics are explained in more detail (like Object detection and VAEs). This novelty concerns also the assignments. The similarity between the two courses is related to the fact that one of CS231n's main instructors (precisely, Justin Johnson) moved from Stanford to Michigan in 2019. ### Assignments Assignments are the funniest part of the courses, they allow practicing most of the learned theoretical concepts. That is, you will implement vectorized mathematical formulas, gradient descent (be prepared to spend some hours with a pen and a sheet figuring out how to compute formula gradients), neural networks (among others: CNNs and RNNs) from scratch, etc. . That being said, in advanced assignment parts, you will also use high-level frameworks: TensorFlow and PyTorch. Assignment questions are in form of Jupyter notebooks that call external Python files in order to execute properly. That is, you will mostly implement missing parts in the Python files and execute notebook's cells to check the correctness of your implementation. However, you'll write also some code in the notebooks and respond to inline questions (result analysis and theoretical questions). For my implementation, I solved all from the three CS231n assignments, for the questions that use frameworks, they ask to pick only one, and for that I choosed PyTorch. That is, questions that require framework were implemented with PyTorch (and not with TensorFlow). For EECS 498-007, since its assignments are similar to the CS231n ones, I solved only those who bring new concepts, precisely A4 (partially, the first two questions about Residual Networks and Attention LSTM), A5 (Object detection: YOLO and Faster RCNN) and A6 (partially, the 1st question about VAEs). For EECS 498-007, there is no choice, only PyTorch is used (which fits perfectly with my choice of using it also in CS231n). Note that, even that my coding solutions are probably correct, the CS231n assignments contain inline questions for which I'm not sure about their correctness, I just responded as well as I know. Also, Except for the CS231n first assignment (which is less commented), for the remaining assignments, I tried to comment on my code as richly as I can to make it understandable. ### Repository Structure The repository file's structure is quite intuitive, there are two folders (one for each course), each one with its sub-folders that represent the assignments (three for both, CS231n and EECS 498-007). Note that for each assignment's folder, I put a README which shows covered topics and question descriptions (copied from the assignment's website). In the rest of this README, I will present a [quick access to the assignments files](#assignment-files), [useful links](#useful-links), some [obtained results](#result-examples) and [credits](#credits). ### Courses' Materials Links The table below shows relevant links to both courses' materials. | Relevent info | CS231n | EECS 498-007 | |:-:|:-:|:-:| | Official website | [[2020]](http://cs231n.stanford.edu/2020/index.html), [[2017]](http://cs231n.stanford.edu/2017/index.html) | [[2020]](https://web.eecs.umich.edu/~justincj/teaching/eecs498/FA2020/), [[2019]](https://web.eecs.umich.edu/~justincj/teaching/eecs498/FA2019/) | | Lectures playlist | [[2017]](https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv), [[2016]](https://www.youtube.com/playlist?list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC) | [[2019]](https://www.youtube.com/playlist?list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r) | | Syllabus | [[2020]](http://cs231n.stanford.edu/2020/syllabus.html), [[2017]](http://cs231n.stanford.edu/2017/syllabus) | [[2020]](https://web.eecs.umich.edu/~justincj/teaching/eecs498/FA2020/schedule.html), [[2019]](https://web.eecs.umich.edu/~justincj/teaching/eecs498/FA2019/schedule.html) | ## Assignment Files ### CS231n: Convolutional Neural Networks for Visual Recognition #### Assignment 1 **Modified Python files:** [``k_nearest_neighbor.py``](cs231n/assignment1/cs231n/classifiers/k_nearest_neighbor.py), [``linear_classifier.py``](cs231n/assignment1/cs231n/classifiers/linear_classifier.py), [``linear_svm.py``](cs231n/assignment1/cs231n/classifiers/linear_svm.py), [``softmax.py``](cs231n/assignment1/cs231n/classifiers/softmax.py), [``neural_net.py``](cs231n/assignment1/cs231n/classifiers/neural_net.py). | Question | Title | IPython Notebook | |:--------:|:--------------------------------------------:|:-----------------------------------------------------------------:| | Q1 | k-Nearest Neighbor classifier | [``knn.ipynb``](cs231n/assignment1/knn.ipynb) | | Q2 | Training a Support Vector Machine | [``svm.ipynb``](cs231n/assignment1/svm.ipynb) | | Q3 | Implement a Softmax classifier | [``softmax.ipynb``](cs231n/assignment1/softmax.ipynb) | | Q4 | Two-Layer Neural Network | [``two_layer_net.ipynb``](cs231n/assignment1/two_layer_net.ipynb) | | Q5 | Higher Level Representations: Image Features | [``features.ipynb``](cs231n/assignment1/features.ipynb) | #### Assignment 2 **Modified Python files:** [``layers.py``](cs231n/assignment2/cs231n/layers.py), [``optim.py``](cs231n/assignment2/cs231n/optim.py), [``fc_net.py``](cs231n/assignment2/cs231n/classifiers/fc_net.py), [``cnn.py``](cs231n/assignment2/cs231n/classifiers/cnn.py). | Question | Title | IPython Notebook | |:--------:|:--------------------------------:|:---------------------------------------------------------------------------------:| | Q1 | Fully-connected Neural Network | [``FullyConnectedNets.ipynb``](cs231n/assignment2/FullyConnectedNets.ipynb) | | Q2 | Batch Normalization | [``BatchNormalization.ipynb``](cs231n/assignment2/BatchNormalization.ipynb) | | Q3 | Dropout | [``Dropout.ipynb``](cs231n/assignment2/Dropout.ipynb) | | Q4 | Convolutional Networks | [``ConvolutionalNetworks.ipynb``](cs231n/assignment2/ConvolutionalNetworks.ipynb) | | Q5 | PyTorch / TensorFlow on CIFAR-10 | [``PyTorch.ipynb``](cs231n/assignment2/PyTorch.ipynb) | #### Assignment 3 **Modified Python files:** [``rnn_layers.py``](cs231n/assignment3/cs231n/rnn_layers.py), [``rnn.py``](cs231n/assignment3/cs231n/classifiers/rnn.py), [``net_visualization_pytorch.py``](cs231n/assignment3/cs231n/net_visualization_pytorch.py), [``style_transfer_pytorch.py``](cs231n/assignment3/cs231n/style_transfer_pytorch.py), [``gan_pytorch.py``](cs231n/assignment3/cs231n/gan_pytorch.py). | Question | Title | IPython Notebook | |:--------:|:----------------------------------:|:---------------------------------------------------------------------------------------------------------------------:| | Q1 | Image Captioning with Vanilla RNNs | [``RNN_Captioning.ipynb``](cs231n/assignment3/RNN_Captioning.ipynb) | | Q2 | Image Captioning with LSTMs | [``LSTM_Captioning.ipynb``](cs231n/assignment3/LSTM_Captioning.ipynb) | | Q3 | Network Visualization | [``NetworkVisualization-PyTorch.ipynb``](cs231n/assignment3/NetworkVisualization-PyTorch.ipynb) | | Q4 | Style Transfer | [``StyleTransfer-PyTorch.ipynb``](cs231n/assignment3/StyleTransfer-PyTorch.ipynb) | | Q5 | Generative Adversarial Networks | [``Generative_Adversarial_Networks_PyTorch.ipynb``](cs231n/assignment3/Generative_Adversarial_Networks_PyTorch.ipynb) | ### EECS 498-007 / 598-005: Deep Learning for Computer Vision #### Assignment 4 **Modified Python files:** [``pytorch_autograd_and_nn.py``](eecs498-007/A4/pytorch_autograd_and_nn.py), [``rnn_lstm_attention_captioning.py``](eecs498-007/A4/rnn_lstm_attention_captioning.py), [``network_visualization.py``](eecs498-007/A4/network_visualization.py), [``style_transfer.py``](eecs498-007/A4/style_transfer.py). | Question | Title | IPython Notebook | |:--------:|:-----------------------------------------------:|:---------------------------------------------------------------------------------------------:| | Q1 | PyTorch Autograd | [``pytorch_autograd_and_nn.ipynb``](eecs498-007/A4/pytorch_autograd_and_nn.ipynb) | | Q2 | Image Captioning with Recurrent Neural Networks | [``rnn_lstm_attention_captioning.ipynb``](eecs498-007/A4/rnn_lstm_attention_captioning.ipynb) | | Q3 | Network Visualization | [``network_visualization.ipynb``](eecs498-007/A4/network_visualization.ipynb) | | Q4 | Style Transfer | [``style_transfer.ipynb``](eecs498-007/A4/style_transfer.ipynb) | #### Assignment 5 **Modified Python files:** [``single_stage_detector.py``](eecs498-007/A5/single_stage_detector.py), [``two_stage_detector.py``](eecs498-007/A5/two_stage_detector.py). | Question | Title | IPython Notebook | |:--------:|:---------------------:|:-----------------------------------------------------------------------------------------------:| | Q1 | Single-Stage Detector | [``single_stage_detector_yolo.ipynb``](eecs498-007/A5/single_stage_detector_yolo.ipynb) | | Q2 | Two-Stage Detector | [``two_stage_detector_faster_rcnn.ipynb``](eecs498-007/A5/two_stage_detector_faster_rcnn.ipynb) | #### Assignment 6 **Modified Python files:** [``vae.py``](eecs498-007/A6/vae.py), [``gan.py``](eecs498-007/A6/gan.py). | Question | Title | IPython Notebook | |:--------:|:-------------------------------:|:-------------------------------------------------------------------------------------------------:| | Q1 | Variational Autoencoder | [``variational_autoencoders.ipynb``](eecs498-007/A6/variational_autoencoders.ipynb) | | Q2 | Generative Adversarial Networks | [``generative_adversarial_networks.ipynb``](eecs498-007/A6/generative_adversarial_networks.ipynb) | ## Useful Links The list below provides the most useful external resources that helped me to clarify and understand deeply some ambiguous topics encountered in the lectures. Note that those are only the most important ones, that is, completely understanding them will maybe require checking other -not mentioned- resources. - Convolutional Neural Networks (CNNs). - CNNs implementation from scratch in Python [[Part 1]](https://victorzhou.com/blog/intro-to-cnns-part-1/) [[Part 2]](https://victorzhou.com/blog/intro-to-cnns-part-2/). - [A guide to receptive field arithmetic for CNNs](https://medium.com/mlreview/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807). - Normalization layers. - [Understanding the backward pass through Batch Normalization Layer](https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html) (Staged computation method). - [Deriving the Gradient for the Backward Pass of Batch Normalization](https://kevinzakka.github.io/2016/09/14/batch_normalization/) (Gradient derivation method). - [Group Normalization - The paper](https://arxiv.org/abs/1803.08494) (Concept and implementation well explained). - Principal Component Analysis (PCA). - [Principal Component Analysis (PCA) from Scratch](https://drscotthawley.github.io/blog/2019/12/21/PCA-From-Scratch.html) (Covariance matrix method). - StatQuest: PCA (SVD Decomposition method) [[Part 1]](https://youtu.be/FgakZw6K1QQ) [[Part 2]](https://youtu.be/oRvgq966yZg). - [In Depth: Principal Component Analysis](https://jakevdp.github.io/PythonDataScienceHandbook/05.09-principal-component-analysis.html) (Using Sklearn package). - Object Detection. - [mAP (mean Average Precision) for Object Detection](https://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173). - Object Detection for Dummies [[Part 1]](https://lilianweng.github.io/lil-log/2017/10/29/object-recognition-for-dummies-part-1.html) [[Part 2]](https://lilianweng.github.io/lil-log/2017/12/15/object-recognition-for-dummies-part-2.html) [[Part 3]](https://lilianweng.github.io/lil-log/2017/12/31/object-recognition-for-dummies-part-3.html) [[Part 4]](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html). - Variational Autoencoders (VAEs). - [Kullback-Leibler (KL) Divergence Explained](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained). - [Variational autoencoders](https://www.jeremyjordan.me/variational-autoencoders/). - [Variational Autoencoder Demystified With PyTorch Implementation](https://towardsdatascience.com/variational-autoencoder-demystified-with-pytorch-implementation-3a06bee395ed). - Generative Adversarial Networks (GANs). - [GANs from Scratch: A deep introduction, with code in PyTorch](https://medium.com/ai-society/gans-from-scratch-1-a-deep-introduction-with-code-in-pytorch-and-tensorflow-cb03cdcdba0f). - [GAN objective function origin explanation](https://ai.stackexchange.com/a/13038). - [Google DeepMind: Generative Adversarial Networks](https://youtu.be/wFsI2WqUfdA). ## Result Examples As mentioned previously, assignments are the funniest part of the courses. In this section, I will provide some interesting obtained results. That being said, during assignment solving, you will encounter other amazing results, here I just picked some of them. ### Class Visualization Consists of generating a synthetic image that will maximize some class score. Illustrations shown below are generated by applying this technique on a pre-trained CNN on ImageNet dataset. You can see the changes on the synthetic image during training for different classes (categories). Even that those images are not understandable (because they are supposed to maximize scores, not to be pretty) you can identify some specific patterns/shapes for these particular classes. | ![Analog Clock](examples/analog_clock.gif) | ![Dining Table](examples/dining_table.gif) | ![Kit Fox](examples/kit_fox.gif) | ![Tarantula](examples/tarantula.gif) | |:------------------------------------------:|:------------------------------------------:|:--------------------------------:|:------------------------------------:| | Analog Clock | Dining Table | Kit Fox | Tarantula | ### GANs The goal of Generative Adversarial Networks is to generate novel data (in our case, images) that mimic the original data from a dataset. Illustrations below were generated by training three types of GANs (on left: The most basic one, on right: The most advanced one) on the MNIST dataset. You can see the changes on the generated images during training, from completely noisy to reasonable images (that do not exist in the dataset). | ![Vanilla GAN](examples/vanilla_gan.gif) | ![DCGAN](examples/dcgan.gif) | |:----------------------------------------:|:----------------------------:| | Vanilla GAN | DCGAN | ### Style Transfer Consists of applying a style from an artistic drawing on an input image. The illustration below shows the result of applying different styles on two images. | ![Style transfer](examples/style_transfer.png) | |:-:| | Style transfer applied on two images.
Drawing credits (from left to the right): [The Scream](https://artsandculture.google.com/asset/the-scream-edvard-munch/eQFdRTFKDtVQ1A), [Bicentennial Print](https://artsandculture.google.com/asset/bicentennial-print-roy-lichtenstein/TAHrv5B7P6vh1A), [Horses on the Seashore](https://artsandculture.google.com/asset/horses-on-the-seashore/-wFNr8bqc58Ghw), [Head of a Clown](https://artsandculture.google.com/asset/head-of-a-clown/CQHMqKf7DRo76w) and [The Starry Night](https://artsandculture.google.com/asset/the-starry-night-vincent-van-gogh/bgEuwDxel93-Pg). | ## Credits I would like to thank everyone involved, directly or indirectly, for making such a great course freely available for everyone. Especially, the instructors: [Fei-Fei Li](https://profiles.stanford.edu/fei-fei-li), [Andrej Karpathy](https://karpathy.ai/), [Serena Yeung](http://ai.stanford.edu/~syyeung/) and [Justin Johnson](https://web.eecs.umich.edu/~justincj/). ================================================ FILE: cs231n/assignment1/README.md ================================================

CS231n: Convolutional Neural Networks for Visual Recognition

Assignment 1 (2020)

# Goals In this assignment you will practice putting together a simple image classification pipeline based on the k-Nearest Neighbor or the SVM/Softmax classifier. The goals of this assignment are as follows: - Understand the basic **Image Classification pipeline** and the data-driven approach (train/predict stages). - Understand the train/val/test **splits** and the use of validation data for **hyperparameter tuning**. - Develop proficiency in writing efficient **vectorized** code with numpy. - Implement and apply a k-Nearest Neighbor (**kNN**) classifier. - Implement and apply a Multiclass Support Vector Machine (**SVM**) classifier. - Implement and apply a **Softmax** classifier. - Implement and apply a **Two layer neural network** classifier. - Understand the differences and tradeoffs between these classifiers. - Get a basic understanding of performance improvements from using **higher-level representations** as opposed to raw pixels, e.g. color histograms, Histogram of Gradient (HOG) features, etc. # Questions ## Q1: k-Nearest Neighbor classifier The notebook [``knn.ipynb``](knn.ipynb) will walk you through implementing the kNN classifier. ## Q2: Training a Support Vector Machine The notebook [``svm.ipynb``](svm.ipynb) will walk you through implementing the SVM classifier. ## Q3: Implement a Softmax classifier The notebook [``softmax.ipynb``](softmax.ipynb) will walk you through implementing the Softmax classifier. ## Q4: Two-Layer Neural Network The notebook [``two_layer_net.ipynb``](two_layer_net.ipynb) will walk you through the implementation of a two-layer neural network classifier. ## Q5: Higher Level Representations: Image Features The notebook [``features.ipynb``](features.ipynb) will examine the improvements gained by using higher-level representations as opposed to using raw pixel values. ================================================ FILE: cs231n/assignment1/cs231n/__init__.py ================================================ ================================================ FILE: cs231n/assignment1/cs231n/classifiers/__init__.py ================================================ from cs231n.classifiers.k_nearest_neighbor import * from cs231n.classifiers.linear_classifier import * ================================================ FILE: cs231n/assignment1/cs231n/classifiers/k_nearest_neighbor.py ================================================ from builtins import range from builtins import object import numpy as np from past.builtins import xrange class KNearestNeighbor(object): """ a kNN classifier with L2 distance """ def __init__(self): pass def train(self, X, y): """ Train the classifier. For k-nearest neighbors this is just memorizing the training data. Inputs: - X: A numpy array of shape (num_train, D) containing the training data consisting of num_train samples each of dimension D. - y: A numpy array of shape (N,) containing the training labels, where y[i] is the label for X[i]. """ self.X_train = X self.y_train = y def predict(self, X, k=1, num_loops=0): """ Predict labels for test data using this classifier. Inputs: - X: A numpy array of shape (num_test, D) containing test data consisting of num_test samples each of dimension D. - k: The number of nearest neighbors that vote for the predicted labels. - num_loops: Determines which implementation to use to compute distances between training points and testing points. Returns: - y: A numpy array of shape (num_test,) containing predicted labels for the test data, where y[i] is the predicted label for the test point X[i]. """ if num_loops == 0: dists = self.compute_distances_no_loops(X) elif num_loops == 1: dists = self.compute_distances_one_loop(X) elif num_loops == 2: dists = self.compute_distances_two_loops(X) else: raise ValueError('Invalid value %d for num_loops' % num_loops) return self.predict_labels(dists, k=k) def compute_distances_two_loops(self, X): """ Compute the distance between each test point in X and each training point in self.X_train using a nested loop over both the training data and the test data. Inputs: - X: A numpy array of shape (num_test, D) containing test data. Returns: - dists: A numpy array of shape (num_test, num_train) where dists[i, j] is the Euclidean distance between the ith test point and the jth training point. """ num_test = X.shape[0] num_train = self.X_train.shape[0] dists = np.zeros((num_test, num_train)) for i in range(num_test): for j in range(num_train): ##################################################################### # TODO: # # Compute the l2 distance between the ith test point and the jth # # training point, and store the result in dists[i, j]. You should # # not use a loop over dimension, nor use np.linalg.norm(). # ##################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** distance_ij = np.square(X[i] - self.X_train[j]) distance_ij = np.sqrt(np.sum(distance_ij)) dists[i, j] = distance_ij # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return dists def compute_distances_one_loop(self, X): """ Compute the distance between each test point in X and each training point in self.X_train using a single loop over the test data. Input / Output: Same as compute_distances_two_loops """ num_test = X.shape[0] num_train = self.X_train.shape[0] dists = np.zeros((num_test, num_train)) for i in range(num_test): ####################################################################### # TODO: # # Compute the l2 distance between the ith test point and all training # # points, and store the result in dists[i, :]. # # Do not use np.linalg.norm(). # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** dists[i, :] = np.sqrt(np.sum(np.square(X[i] - self.X_train), axis=1)) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return dists def compute_distances_no_loops(self, X): """ Compute the distance between each test point in X and each training point in self.X_train using no explicit loops. Input / Output: Same as compute_distances_two_loops """ num_test = X.shape[0] num_train = self.X_train.shape[0] dists = np.zeros((num_test, num_train)) ######################################################################### # TODO: # # Compute the l2 distance between all test points and all training # # points without using any explicit loops, and store the result in # # dists. # # # # You should implement this function using only basic array operations; # # in particular you should not use functions from scipy, # # nor use np.linalg.norm(). # # # # HINT: Try to formulate the l2 distance using matrix multiplication # # and two broadcast sums. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** train_matrix_tr = self.X_train.T sum_1 = np.sum(np.square(X), axis=1) sum_1 = sum_1.reshape((-1, sum_1.size)).T sum_2 = np.sum(np.square(train_matrix_tr), axis=0) dists = -2 * X.dot(train_matrix_tr) + sum_1 + sum_2 dists = np.sqrt(dists) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return dists def predict_labels(self, dists, k=1): """ Given a matrix of distances between test points and training points, predict a label for each test point. Inputs: - dists: A numpy array of shape (num_test, num_train) where dists[i, j] gives the distance betwen the ith test point and the jth training point. Returns: - y: A numpy array of shape (num_test,) containing predicted labels for the test data, where y[i] is the predicted label for the test point X[i]. """ num_test = dists.shape[0] y_pred = np.zeros(num_test) for i in range(num_test): # A list of length k storing the labels of the k nearest neighbors to # the ith test point. closest_y = [] ######################################################################### # TODO: # # Use the distance matrix to find the k nearest neighbors of the ith # # testing point, and use self.y_train to find the labels of these # # neighbors. Store these labels in closest_y. # # Hint: Look up the function numpy.argsort. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** closet_indexes = np.argsort(dists[i]) closet_indexes = closet_indexes[:k] closest_y = self.y_train.take(closet_indexes) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ######################################################################### # TODO: # # Now that you have found the labels of the k nearest neighbors, you # # need to find the most common label in the list closest_y of labels. # # Store this label in y_pred[i]. Break ties by choosing the smaller # # label. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** y_pred[i] = np.bincount(closest_y).argmax() # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return y_pred ================================================ FILE: cs231n/assignment1/cs231n/classifiers/linear_classifier.py ================================================ from __future__ import print_function from builtins import range from builtins import object import numpy as np from cs231n.classifiers.linear_svm import * from cs231n.classifiers.softmax import * from past.builtins import xrange class LinearClassifier(object): def __init__(self): self.W = None def train(self, X, y, learning_rate=1e-3, reg=1e-5, num_iters=100, batch_size=200, verbose=False): """ Train this linear classifier using stochastic gradient descent. Inputs: - X: A numpy array of shape (N, D) containing training data; there are N training samples each of dimension D. - y: A numpy array of shape (N,) containing training labels; y[i] = c means that X[i] has label 0 <= c < C for C classes. - learning_rate: (float) learning rate for optimization. - reg: (float) regularization strength. - num_iters: (integer) number of steps to take when optimizing - batch_size: (integer) number of training examples to use at each step. - verbose: (boolean) If true, print progress during optimization. Outputs: A list containing the value of the loss function at each training iteration. """ num_train, dim = X.shape num_classes = np.max(y) + 1 # assume y takes values 0...K-1 where K is number of classes if self.W is None: # lazily initialize W self.W = 0.001 * np.random.randn(dim, num_classes) # Run stochastic gradient descent to optimize W loss_history = [] for it in range(num_iters): X_batch = None y_batch = None ######################################################################### # TODO: # # Sample batch_size elements from the training data and their # # corresponding labels to use in this round of gradient descent. # # Store the data in X_batch and their corresponding labels in # # y_batch; after sampling X_batch should have shape (batch_size, dim) # # and y_batch should have shape (batch_size,) # # # # Hint: Use np.random.choice to generate indices. Sampling with # # replacement is faster than sampling without replacement. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** batch_indexes = np.random.choice(num_train, batch_size) X_batch = X[batch_indexes] y_batch = y[batch_indexes] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # evaluate loss and gradient loss, grad = self.loss(X_batch, y_batch, reg) loss_history.append(loss) # perform parameter update ######################################################################### # TODO: # # Update the weights using the gradient and the learning rate. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** self.W += - learning_rate * grad # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** if verbose and it % 100 == 0: print('iteration %d / %d: loss %f' % (it, num_iters, loss)) return loss_history def predict(self, X): """ Use the trained weights of this linear classifier to predict labels for data points. Inputs: - X: A numpy array of shape (N, D) containing training data; there are N training samples each of dimension D. Returns: - y_pred: Predicted labels for the data in X. y_pred is a 1-dimensional array of length N, and each element is an integer giving the predicted class. """ y_pred = np.zeros(X.shape[0]) ########################################################################### # TODO: # # Implement this method. Store the predicted labels in y_pred. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** predict_matrix = X.dot(self.W) y_pred = predict_matrix.argmax(axis=1) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return y_pred def loss(self, X_batch, y_batch, reg): """ Compute the loss function and its derivative. Subclasses will override this. Inputs: - X_batch: A numpy array of shape (N, D) containing a minibatch of N data points; each point has dimension D. - y_batch: A numpy array of shape (N,) containing labels for the minibatch. - reg: (float) regularization strength. Returns: A tuple containing: - loss as a single float - gradient with respect to self.W; an array of the same shape as W """ pass class LinearSVM(LinearClassifier): """ A subclass that uses the Multiclass SVM loss function """ def loss(self, X_batch, y_batch, reg): return svm_loss_vectorized(self.W, X_batch, y_batch, reg) class Softmax(LinearClassifier): """ A subclass that uses the Softmax + Cross-entropy loss function """ def loss(self, X_batch, y_batch, reg): return softmax_loss_vectorized(self.W, X_batch, y_batch, reg) ================================================ FILE: cs231n/assignment1/cs231n/classifiers/linear_svm.py ================================================ from builtins import range import numpy as np from random import shuffle from past.builtins import xrange def svm_loss_naive(W, X, y, reg): """ Structured SVM loss function, naive implementation (with loops). Inputs have dimension D, there are C classes, and we operate on minibatches of N examples. Inputs: - W: A numpy array of shape (D, C) containing weights. - X: A numpy array of shape (N, D) containing a minibatch of data. - y: A numpy array of shape (N,) containing training labels; y[i] = c means that X[i] has label c, where 0 <= c < C. - reg: (float) regularization strength Returns a tuple of: - loss as single float - gradient with respect to weights W; an array of same shape as W """ dW = np.zeros(W.shape) # initialize the gradient as zero # compute the loss and the gradient num_classes = W.shape[1] num_train = X.shape[0] loss = 0.0 for i in range(num_train): scores = X[i].dot(W) correct_class_score = scores[y[i]] no_meet_margin = 0 for j in range(num_classes): if j == y[i]: continue margin = scores[j] - correct_class_score + 1 # note delta = 1 if margin > 0: loss += margin no_meet_margin += 1 dW[:, j] += X[i] dW[:, y[i]] -= no_meet_margin * X[i] # Right now the loss is a sum over all training examples, but we want it # to be an average instead so we divide by num_train. loss /= num_train # Add regularization to the loss. loss += reg * np.sum(W * W) ############################################################################# # TODO: # # Compute the gradient of the loss function and store it dW. # # Rather than first computing the loss and then computing the derivative, # # it may be simpler to compute the derivative at the same time that the # # loss is being computed. As a result you may need to modify some of the # # code above to compute the gradient. # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** dW /= num_train # Add the regularization to 'dW' (derivate of L2 norm) dW += 2 * reg * W # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return loss, dW def svm_loss_vectorized(W, X, y, reg): """ Structured SVM loss function, vectorized implementation. Inputs and outputs are the same as svm_loss_naive. """ loss = 0.0 dW = np.zeros(W.shape) # initialize the gradient as zero ############################################################################# # TODO: # # Implement a vectorized version of the structured SVM loss, storing the # # result in loss. # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** scores = X.dot(W) correct_class_score = scores[np.arange(len(scores)), y] scores_check_margin = scores - correct_class_score.reshape(-1, 1) + 1 scores_check_margin[np.arange(len(scores_check_margin)), y] = 0 num_meet_margin = - np.sum(scores_check_margin > 0, axis=1) scores_check_margin[scores_check_margin < 0] = 0 loss = scores_check_margin.sum() loss /= X.shape[0] loss += reg * np.sum(W * W) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################# # TODO: # # Implement a vectorized version of the gradient for the structured SVM # # loss, storing the result in dW. # # # # Hint: Instead of computing the gradient from scratch, it may be easier # # to reuse some of the intermediate values that you used to compute the # # loss. # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** scores_check_margin[scores_check_margin > 0] = 1 scores_check_margin[np.arange(len(scores_check_margin)), y] = num_meet_margin dW = X.T.dot(scores_check_margin) dW /= X.shape[0] dW += reg * 2 * W # Derivate of L2 norm # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return loss, dW ================================================ FILE: cs231n/assignment1/cs231n/classifiers/neural_net.py ================================================ from __future__ import print_function from builtins import range from builtins import object import numpy as np import matplotlib.pyplot as plt from past.builtins import xrange class TwoLayerNet(object): """ A two-layer fully-connected neural network. The net has an input dimension of N, a hidden layer dimension of H, and performs classification over C classes. We train the network with a softmax loss function and L2 regularization on the weight matrices. The network uses a ReLU nonlinearity after the first fully connected layer. In other words, the network has the following architecture: input - fully connected layer - ReLU - fully connected layer - softmax The outputs of the second fully-connected layer are the scores for each class. """ def __init__(self, input_size, hidden_size, output_size, std=1e-4): """ Initialize the model. Weights are initialized to small random values and biases are initialized to zero. Weights and biases are stored in the variable self.params, which is a dictionary with the following keys: W1: First layer weights; has shape (D, H) b1: First layer biases; has shape (H,) W2: Second layer weights; has shape (H, C) b2: Second layer biases; has shape (C,) Inputs: - input_size: The dimension D of the input data. - hidden_size: The number of neurons H in the hidden layer. - output_size: The number of classes C. """ self.params = {} self.params['W1'] = std * np.random.randn(input_size, hidden_size) self.params['b1'] = np.zeros(hidden_size) self.params['W2'] = std * np.random.randn(hidden_size, output_size) self.params['b2'] = np.zeros(output_size) def loss(self, X, y=None, reg=0.0): """ Compute the loss and gradients for a two layer fully connected neural network. Inputs: - X: Input data of shape (N, D). Each X[i] is a training sample. - y: Vector of training labels. y[i] is the label for X[i], and each y[i] is an integer in the range 0 <= y[i] < C. This parameter is optional; if it is not passed then we only return scores, and if it is passed then we instead return the loss and gradients. - reg: Regularization strength. Returns: If y is None, return a matrix scores of shape (N, C) where scores[i, c] is the score for class c on input X[i]. If y is not None, instead return a tuple of: - loss: Loss (data loss and regularization loss) for this batch of training samples. - grads: Dictionary mapping parameter names to gradients of those parameters with respect to the loss function; has the same keys as self.params. """ # Unpack variables from the params dictionary W1, b1 = self.params['W1'], self.params['b1'] W2, b2 = self.params['W2'], self.params['b2'] N, D = X.shape # Compute the forward pass scores = None ############################################################################# # TODO: Perform the forward pass, computing the class scores for the input. # # Store the result in the scores variable, which should be an array of # # shape (N, C). # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** hid_layer = X.dot(W1) + b1 hid_layer_act = np.maximum(0, hid_layer) # Apply ReLU out_layer = hid_layer_act.dot(W2) + b2 scores = out_layer # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # If the targets are not given then jump out, we're done if y is None: return scores # Compute the loss loss = None ############################################################################# # TODO: Finish the forward pass, and compute the loss. This should include # # both the data loss and L2 regularization for W1 and W2. Store the result # # in the variable loss, which should be a scalar. Use the Softmax # # classifier loss. # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # scores = scores - np.max(scores) # Ensure numerical stability out_layer_act = np.exp(scores) sum_out_layer_act = out_layer_act.sum(axis=1, keepdims=True) out_layer_act = out_layer_act / sum_out_layer_act y_scores = out_layer_act[range(N), y] loss = - np.log(y_scores) loss = loss.sum() / N loss += reg * (np.sum(W1 ** 2) + np.sum(W2 ** 2)) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Backward pass: compute gradients grads = {} ############################################################################# # TODO: Compute the backward pass, computing the derivatives of the weights # # and biases. Store the results in the grads dictionary. For example, # # grads['W1'] should store the gradient on W1, and be a matrix of same size # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** d_scores = out_layer_act d_scores[range(N), y] -= 1 d_scores /= N grads['W2'] = hid_layer_act.T.dot(d_scores) + 2 * reg * W2 grads['b2'] = d_scores.sum(axis=0) d_hid_layer_act = d_scores.dot(W2.T) d_hid_layer_act[hid_layer_act <= 0] = 0 grads['W1'] = X.T.dot(d_hid_layer_act) + 2 * reg * W1 grads['b1'] = d_hid_layer_act.sum(axis=0) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return loss, grads def train(self, X, y, X_val, y_val, learning_rate=1e-3, learning_rate_decay=0.95, reg=5e-6, num_iters=100, batch_size=200, verbose=False): """ Train this neural network using stochastic gradient descent. Inputs: - X: A numpy array of shape (N, D) giving training data. - y: A numpy array f shape (N,) giving training labels; y[i] = c means that X[i] has label c, where 0 <= c < C. - X_val: A numpy array of shape (N_val, D) giving validation data. - y_val: A numpy array of shape (N_val,) giving validation labels. - learning_rate: Scalar giving learning rate for optimization. - learning_rate_decay: Scalar giving factor used to decay the learning rate after each epoch. - reg: Scalar giving regularization strength. - num_iters: Number of steps to take when optimizing. - batch_size: Number of training examples to use per step. - verbose: boolean; if true print progress during optimization. """ num_train = X.shape[0] iterations_per_epoch = max(num_train / batch_size, 1) # Use SGD to optimize the parameters in self.model loss_history = [] train_acc_history = [] val_acc_history = [] for it in range(num_iters): X_batch = None y_batch = None ######################################################################### # TODO: Create a random minibatch of training data and labels, storing # # them in X_batch and y_batch respectively. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** batch_indexes = np.random.choice(num_train, batch_size) X_batch = X[batch_indexes] y_batch = y[batch_indexes] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Compute loss and gradients using the current minibatch loss, grads = self.loss(X_batch, y=y_batch, reg=reg) loss_history.append(loss) ######################################################################### # TODO: Use the gradients in the grads dictionary to update the # # parameters of the network (stored in the dictionary self.params) # # using stochastic gradient descent. You'll need to use the gradients # # stored in the grads dictionary defined above. # ######################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** self.params['W1'] -= learning_rate * grads['W1'] self.params['b1'] -= learning_rate * grads['b1'] self.params['W2'] -= learning_rate * grads['W2'] self.params['b2'] -= learning_rate * grads['b2'] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** if verbose and it % 100 == 0: print('iteration %d / %d: loss %f' % (it, num_iters, loss)) # Every epoch, check train and val accuracy and decay learning rate. if it % iterations_per_epoch == 0: # Check accuracy train_acc = (self.predict(X_batch) == y_batch).mean() val_acc = (self.predict(X_val) == y_val).mean() train_acc_history.append(train_acc) val_acc_history.append(val_acc) # Decay learning rate learning_rate *= learning_rate_decay return { 'loss_history': loss_history, 'train_acc_history': train_acc_history, 'val_acc_history': val_acc_history, } def predict(self, X): """ Use the trained weights of this two-layer network to predict labels for data points. For each data point we predict scores for each of the C classes, and assign each data point to the class with the highest score. Inputs: - X: A numpy array of shape (N, D) giving N D-dimensional data points to classify. Returns: - y_pred: A numpy array of shape (N,) giving predicted labels for each of the elements of X. For all i, y_pred[i] = c means that X[i] is predicted to have class c, where 0 <= c < C. """ y_pred = None ########################################################################### # TODO: Implement this function; it should be VERY simple! # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** W1 = self.params['W1'] b1 = self.params['b1'] W2 = self.params['W2'] b2 = self.params['b2'] hid_layer_act = np.maximum(0, X.dot(W1) + b1) out_layer = hid_layer_act.dot(W2) + b2 y_pred = out_layer.argmax(axis=1) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return y_pred ================================================ FILE: cs231n/assignment1/cs231n/classifiers/softmax.py ================================================ from builtins import range import numpy as np from random import shuffle from past.builtins import xrange def softmax_loss_naive(W, X, y, reg): """ Softmax loss function, naive implementation (with loops) Inputs have dimension D, there are C classes, and we operate on minibatches of N examples. Inputs: - W: A numpy array of shape (D, C) containing weights. - X: A numpy array of shape (N, D) containing a minibatch of data. - y: A numpy array of shape (N,) containing training labels; y[i] = c means that X[i] has label c, where 0 <= c < C. - reg: (float) regularization strength Returns a tuple of: - loss as single float - gradient with respect to weights W; an array of same shape as W """ # Initialize the loss and gradient to zero. loss = 0.0 dW = np.zeros_like(W) ############################################################################# # TODO: Compute the softmax loss and its gradient using explicit loops. # # Store the loss in loss and the gradient in dW. If you are not careful # # here, it is easy to run into numeric instability. Don't forget the # # regularization! # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Gradient for the Softmax function. # Check: https://stackoverflow.com/a/53972798 num_classes = W.shape[1] num_train = X.shape[0] for i in range(num_train): scores = X[i].dot(W) correct_class_score = scores[y[i]] numerator = np.exp(correct_class_score) denominator = 0.0 for j in range(num_classes): denominator += np.exp(scores[j]) loss += - np.log(numerator / denominator) dW[:, y[i]] += (numerator / denominator - 1) * X[i] for j in range(num_classes): if j != y[i]: dW[:, j] += (np.exp(scores[j]) / denominator) * X[i] loss /= num_train loss += reg * np.sum(W * W) dW /= num_train dW += reg * 2 * W # Derivate of L2 norm # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return loss, dW def softmax_loss_vectorized(W, X, y, reg): """ Softmax loss function, vectorized version. Inputs and outputs are the same as softmax_loss_naive. """ # Initialize the loss and gradient to zero. loss = 0.0 dW = np.zeros_like(W) ############################################################################# # TODO: Compute the softmax loss and its gradient using no explicit loops. # # Store the loss in loss and the gradient in dW. If you are not careful # # here, it is easy to run into numeric instability. Don't forget the # # regularization! # ############################################################################# # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** scores = np.exp(X.dot(W)) sum_scores = scores.sum(axis=1) y_scores = scores[np.arange(len(scores)), y] loss = - np.log(y_scores / sum_scores) loss = np.mean(loss) loss += reg * np.sum(W * W) scores /= sum_scores.reshape(-1, 1) scores[np.arange(len(scores)), y] -= 1 dW = X.T.dot(scores) dW /= X.shape[0] dW += reg * 2 * W # Derivate of L2 norm # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** return loss, dW ================================================ FILE: cs231n/assignment1/cs231n/data_utils.py ================================================ from __future__ import print_function from builtins import range from six.moves import cPickle as pickle import numpy as np import os from imageio import imread import platform def load_pickle(f): version = platform.python_version_tuple() if version[0] == '2': return pickle.load(f) elif version[0] == '3': return pickle.load(f, encoding='latin1') raise ValueError("invalid python version: {}".format(version)) def load_CIFAR_batch(filename): """ load single batch of cifar """ with open(filename, 'rb') as f: datadict = load_pickle(f) X = datadict['data'] Y = datadict['labels'] X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype("float") Y = np.array(Y) return X, Y def load_CIFAR10(ROOT): """ load all of cifar """ xs = [] ys = [] for b in range(1,6): f = os.path.join(ROOT, 'data_batch_%d' % (b, )) X, Y = load_CIFAR_batch(f) xs.append(X) ys.append(Y) Xtr = np.concatenate(xs) Ytr = np.concatenate(ys) del X, Y Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch')) return Xtr, Ytr, Xte, Yte def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=1000, subtract_mean=True): """ Load the CIFAR-10 dataset from disk and perform preprocessing to prepare it for classifiers. These are the same steps as we used for the SVM, but condensed to a single function. """ # Load the raw CIFAR-10 data cifar10_dir = 'cs231n/datasets/cifar-10-batches-py' X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir) # Subsample the data mask = list(range(num_training, num_training + num_validation)) X_val = X_train[mask] y_val = y_train[mask] mask = list(range(num_training)) X_train = X_train[mask] y_train = y_train[mask] mask = list(range(num_test)) X_test = X_test[mask] y_test = y_test[mask] # Normalize the data: subtract the mean image if subtract_mean: mean_image = np.mean(X_train, axis=0) X_train -= mean_image X_val -= mean_image X_test -= mean_image # Transpose so that channels come first X_train = X_train.transpose(0, 3, 1, 2).copy() X_val = X_val.transpose(0, 3, 1, 2).copy() X_test = X_test.transpose(0, 3, 1, 2).copy() # Package data into a dictionary return { 'X_train': X_train, 'y_train': y_train, 'X_val': X_val, 'y_val': y_val, 'X_test': X_test, 'y_test': y_test, } def load_tiny_imagenet(path, dtype=np.float32, subtract_mean=True): """ Load TinyImageNet. Each of TinyImageNet-100-A, TinyImageNet-100-B, and TinyImageNet-200 have the same directory structure, so this can be used to load any of them. Inputs: - path: String giving path to the directory to load. - dtype: numpy datatype used to load the data. - subtract_mean: Whether to subtract the mean training image. Returns: A dictionary with the following entries: - class_names: A list where class_names[i] is a list of strings giving the WordNet names for class i in the loaded dataset. - X_train: (N_tr, 3, 64, 64) array of training images - y_train: (N_tr,) array of training labels - X_val: (N_val, 3, 64, 64) array of validation images - y_val: (N_val,) array of validation labels - X_test: (N_test, 3, 64, 64) array of testing images. - y_test: (N_test,) array of test labels; if test labels are not available (such as in student code) then y_test will be None. - mean_image: (3, 64, 64) array giving mean training image """ # First load wnids with open(os.path.join(path, 'wnids.txt'), 'r') as f: wnids = [x.strip() for x in f] # Map wnids to integer labels wnid_to_label = {wnid: i for i, wnid in enumerate(wnids)} # Use words.txt to get names for each class with open(os.path.join(path, 'words.txt'), 'r') as f: wnid_to_words = dict(line.split('\t') for line in f) for wnid, words in wnid_to_words.items(): wnid_to_words[wnid] = [w.strip() for w in words.split(',')] class_names = [wnid_to_words[wnid] for wnid in wnids] # Next load training data. X_train = [] y_train = [] for i, wnid in enumerate(wnids): if (i + 1) % 20 == 0: print('loading training data for synset %d / %d' % (i + 1, len(wnids))) # To figure out the filenames we need to open the boxes file boxes_file = os.path.join(path, 'train', wnid, '%s_boxes.txt' % wnid) with open(boxes_file, 'r') as f: filenames = [x.split('\t')[0] for x in f] num_images = len(filenames) X_train_block = np.zeros((num_images, 3, 64, 64), dtype=dtype) y_train_block = wnid_to_label[wnid] * \ np.ones(num_images, dtype=np.int64) for j, img_file in enumerate(filenames): img_file = os.path.join(path, 'train', wnid, 'images', img_file) img = imread(img_file) if img.ndim == 2: ## grayscale file img.shape = (64, 64, 1) X_train_block[j] = img.transpose(2, 0, 1) X_train.append(X_train_block) y_train.append(y_train_block) # We need to concatenate all training data X_train = np.concatenate(X_train, axis=0) y_train = np.concatenate(y_train, axis=0) # Next load validation data with open(os.path.join(path, 'val', 'val_annotations.txt'), 'r') as f: img_files = [] val_wnids = [] for line in f: img_file, wnid = line.split('\t')[:2] img_files.append(img_file) val_wnids.append(wnid) num_val = len(img_files) y_val = np.array([wnid_to_label[wnid] for wnid in val_wnids]) X_val = np.zeros((num_val, 3, 64, 64), dtype=dtype) for i, img_file in enumerate(img_files): img_file = os.path.join(path, 'val', 'images', img_file) img = imread(img_file) if img.ndim == 2: img.shape = (64, 64, 1) X_val[i] = img.transpose(2, 0, 1) # Next load test images # Students won't have test labels, so we need to iterate over files in the # images directory. img_files = os.listdir(os.path.join(path, 'test', 'images')) X_test = np.zeros((len(img_files), 3, 64, 64), dtype=dtype) for i, img_file in enumerate(img_files): img_file = os.path.join(path, 'test', 'images', img_file) img = imread(img_file) if img.ndim == 2: img.shape = (64, 64, 1) X_test[i] = img.transpose(2, 0, 1) y_test = None y_test_file = os.path.join(path, 'test', 'test_annotations.txt') if os.path.isfile(y_test_file): with open(y_test_file, 'r') as f: img_file_to_wnid = {} for line in f: line = line.split('\t') img_file_to_wnid[line[0]] = line[1] y_test = [wnid_to_label[img_file_to_wnid[img_file]] for img_file in img_files] y_test = np.array(y_test) mean_image = X_train.mean(axis=0) if subtract_mean: X_train -= mean_image[None] X_val -= mean_image[None] X_test -= mean_image[None] return { 'class_names': class_names, 'X_train': X_train, 'y_train': y_train, 'X_val': X_val, 'y_val': y_val, 'X_test': X_test, 'y_test': y_test, 'class_names': class_names, 'mean_image': mean_image, } def load_models(models_dir): """ Load saved models from disk. This will attempt to unpickle all files in a directory; any files that give errors on unpickling (such as README.txt) will be skipped. Inputs: - models_dir: String giving the path to a directory containing model files. Each model file is a pickled dictionary with a 'model' field. Returns: A dictionary mapping model file names to models. """ models = {} for model_file in os.listdir(models_dir): with open(os.path.join(models_dir, model_file), 'rb') as f: try: models[model_file] = load_pickle(f)['model'] except pickle.UnpicklingError: continue return models def load_imagenet_val(num=None): """Load a handful of validation images from ImageNet. Inputs: - num: Number of images to load (max of 25) Returns: - X: numpy array with shape [num, 224, 224, 3] - y: numpy array of integer image labels, shape [num] - class_names: dict mapping integer label to class name """ imagenet_fn = 'cs231n/datasets/imagenet_val_25.npz' if not os.path.isfile(imagenet_fn): print('file %s not found' % imagenet_fn) print('Run the following:') print('cd cs231n/datasets') print('bash get_imagenet_val.sh') assert False, 'Need to download imagenet_val_25.npz' f = np.load(imagenet_fn) X = f['X'] y = f['y'] class_names = f['label_map'].item() if num is not None: X = X[:num] y = y[:num] return X, y, class_names ================================================ FILE: cs231n/assignment1/cs231n/datasets/get_datasets.sh ================================================ # Get CIFAR10 wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz -O cifar-10-python.tar.gz tar -xzvf cifar-10-python.tar.gz rm cifar-10-python.tar.gz ================================================ FILE: cs231n/assignment1/cs231n/features.py ================================================ from __future__ import print_function from builtins import zip from builtins import range from past.builtins import xrange import matplotlib import numpy as np from scipy.ndimage import uniform_filter def extract_features(imgs, feature_fns, verbose=False): """ Given pixel data for images and several feature functions that can operate on single images, apply all feature functions to all images, concatenating the feature vectors for each image and storing the features for all images in a single matrix. Inputs: - imgs: N x H X W X C array of pixel data for N images. - feature_fns: List of k feature functions. The ith feature function should take as input an H x W x D array and return a (one-dimensional) array of length F_i. - verbose: Boolean; if true, print progress. Returns: An array of shape (N, F_1 + ... + F_k) where each column is the concatenation of all features for a single image. """ num_images = imgs.shape[0] if num_images == 0: return np.array([]) # Use the first image to determine feature dimensions feature_dims = [] first_image_features = [] for feature_fn in feature_fns: feats = feature_fn(imgs[0].squeeze()) assert len(feats.shape) == 1, 'Feature functions must be one-dimensional' feature_dims.append(feats.size) first_image_features.append(feats) # Now that we know the dimensions of the features, we can allocate a single # big array to store all features as columns. total_feature_dim = sum(feature_dims) imgs_features = np.zeros((num_images, total_feature_dim)) imgs_features[0] = np.hstack(first_image_features).T # Extract features for the rest of the images. for i in range(1, num_images): idx = 0 for feature_fn, feature_dim in zip(feature_fns, feature_dims): next_idx = idx + feature_dim imgs_features[i, idx:next_idx] = feature_fn(imgs[i].squeeze()) idx = next_idx if verbose and i % 1000 == 999: print('Done extracting features for %d / %d images' % (i+1, num_images)) return imgs_features def rgb2gray(rgb): """Convert RGB image to grayscale Parameters: rgb : RGB image Returns: gray : grayscale image """ return np.dot(rgb[...,:3], [0.299, 0.587, 0.144]) def hog_feature(im): """Compute Histogram of Gradient (HOG) feature for an image Modified from skimage.feature.hog http://pydoc.net/Python/scikits-image/0.4.2/skimage.feature.hog Reference: Histograms of Oriented Gradients for Human Detection Navneet Dalal and Bill Triggs, CVPR 2005 Parameters: im : an input grayscale or rgb image Returns: feat: Histogram of Gradient (HOG) feature """ # convert rgb to grayscale if needed if im.ndim == 3: image = rgb2gray(im) else: image = np.at_least_2d(im) sx, sy = image.shape # image size orientations = 9 # number of gradient bins cx, cy = (8, 8) # pixels per cell gx = np.zeros(image.shape) gy = np.zeros(image.shape) gx[:, :-1] = np.diff(image, n=1, axis=1) # compute gradient on x-direction gy[:-1, :] = np.diff(image, n=1, axis=0) # compute gradient on y-direction grad_mag = np.sqrt(gx ** 2 + gy ** 2) # gradient magnitude grad_ori = np.arctan2(gy, (gx + 1e-15)) * (180 / np.pi) + 90 # gradient orientation n_cellsx = int(np.floor(sx / cx)) # number of cells in x n_cellsy = int(np.floor(sy / cy)) # number of cells in y # compute orientations integral images orientation_histogram = np.zeros((n_cellsx, n_cellsy, orientations)) for i in range(orientations): # create new integral image for this orientation # isolate orientations in this range temp_ori = np.where(grad_ori < 180 / orientations * (i + 1), grad_ori, 0) temp_ori = np.where(grad_ori >= 180 / orientations * i, temp_ori, 0) # select magnitudes for those orientations cond2 = temp_ori > 0 temp_mag = np.where(cond2, grad_mag, 0) orientation_histogram[:,:,i] = uniform_filter(temp_mag, size=(cx, cy))[round(cx/2)::cx, round(cy/2)::cy].T return orientation_histogram.ravel() def color_histogram_hsv(im, nbin=10, xmin=0, xmax=255, normalized=True): """ Compute color histogram for an image using hue. Inputs: - im: H x W x C array of pixel data for an RGB image. - nbin: Number of histogram bins. (default: 10) - xmin: Minimum pixel value (default: 0) - xmax: Maximum pixel value (default: 255) - normalized: Whether to normalize the histogram (default: True) Returns: 1D vector of length nbin giving the color histogram over the hue of the input image. """ ndim = im.ndim bins = np.linspace(xmin, xmax, nbin+1) hsv = matplotlib.colors.rgb_to_hsv(im/xmax) * xmax imhist, bin_edges = np.histogram(hsv[:,:,0], bins=bins, density=normalized) imhist = imhist * np.diff(bin_edges) # return histogram return imhist # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** pass # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ================================================ FILE: cs231n/assignment1/cs231n/gradient_check.py ================================================ from __future__ import print_function from builtins import range from past.builtins import xrange import numpy as np from random import randrange def eval_numerical_gradient(f, x, verbose=True, h=0.00001): """ a naive implementation of numerical gradient of f at x - f should be a function that takes a single argument - x is the point (numpy array) to evaluate the gradient at """ fx = f(x) # evaluate function value at original point grad = np.zeros_like(x) # iterate over all indexes in x it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite']) while not it.finished: # evaluate function at x+h ix = it.multi_index oldval = x[ix] x[ix] = oldval + h # increment by h fxph = f(x) # evalute f(x + h) x[ix] = oldval - h fxmh = f(x) # evaluate f(x - h) x[ix] = oldval # restore # compute the partial derivative with centered formula grad[ix] = (fxph - fxmh) / (2 * h) # the slope if verbose: print(ix, grad[ix]) it.iternext() # step to next dimension return grad def eval_numerical_gradient_array(f, x, df, h=1e-5): """ Evaluate a numeric gradient for a function that accepts a numpy array and returns a numpy array. """ grad = np.zeros_like(x) it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite']) while not it.finished: ix = it.multi_index oldval = x[ix] x[ix] = oldval + h pos = f(x).copy() x[ix] = oldval - h neg = f(x).copy() x[ix] = oldval grad[ix] = np.sum((pos - neg) * df) / (2 * h) it.iternext() return grad def eval_numerical_gradient_blobs(f, inputs, output, h=1e-5): """ Compute numeric gradients for a function that operates on input and output blobs. We assume that f accepts several input blobs as arguments, followed by a blob where outputs will be written. For example, f might be called like: f(x, w, out) where x and w are input Blobs, and the result of f will be written to out. Inputs: - f: function - inputs: tuple of input blobs - output: output blob - h: step size """ numeric_diffs = [] for input_blob in inputs: diff = np.zeros_like(input_blob.diffs) it = np.nditer(input_blob.vals, flags=['multi_index'], op_flags=['readwrite']) while not it.finished: idx = it.multi_index orig = input_blob.vals[idx] input_blob.vals[idx] = orig + h f(*(inputs + (output,))) pos = np.copy(output.vals) input_blob.vals[idx] = orig - h f(*(inputs + (output,))) neg = np.copy(output.vals) input_blob.vals[idx] = orig diff[idx] = np.sum((pos - neg) * output.diffs) / (2.0 * h) it.iternext() numeric_diffs.append(diff) return numeric_diffs def eval_numerical_gradient_net(net, inputs, output, h=1e-5): return eval_numerical_gradient_blobs(lambda *args: net.forward(), inputs, output, h=h) def grad_check_sparse(f, x, analytic_grad, num_checks=10, h=1e-5): """ sample a few random elements and only return numerical in this dimensions. """ for i in range(num_checks): ix = tuple([randrange(m) for m in x.shape]) oldval = x[ix] x[ix] = oldval + h # increment by h fxph = f(x) # evaluate f(x + h) x[ix] = oldval - h # increment by h fxmh = f(x) # evaluate f(x - h) x[ix] = oldval # reset grad_numerical = (fxph - fxmh) / (2 * h) grad_analytic = analytic_grad[ix] rel_error = (abs(grad_numerical - grad_analytic) / (abs(grad_numerical) + abs(grad_analytic))) print('numerical: %f analytic: %f, relative error: %e' %(grad_numerical, grad_analytic, rel_error)) ================================================ FILE: cs231n/assignment1/cs231n/vis_utils.py ================================================ from builtins import range from past.builtins import xrange from math import sqrt, ceil import numpy as np def visualize_grid(Xs, ubound=255.0, padding=1): """ Reshape a 4D tensor of image data to a grid for easy visualization. Inputs: - Xs: Data of shape (N, H, W, C) - ubound: Output grid will have values scaled to the range [0, ubound] - padding: The number of blank pixels between elements of the grid """ (N, H, W, C) = Xs.shape grid_size = int(ceil(sqrt(N))) grid_height = H * grid_size + padding * (grid_size - 1) grid_width = W * grid_size + padding * (grid_size - 1) grid = np.zeros((grid_height, grid_width, C)) next_idx = 0 y0, y1 = 0, H for y in range(grid_size): x0, x1 = 0, W for x in range(grid_size): if next_idx < N: img = Xs[next_idx] low, high = np.min(img), np.max(img) grid[y0:y1, x0:x1] = ubound * (img - low) / (high - low) # grid[y0:y1, x0:x1] = Xs[next_idx] next_idx += 1 x0 += W + padding x1 += W + padding y0 += H + padding y1 += H + padding # grid_max = np.max(grid) # grid_min = np.min(grid) # grid = ubound * (grid - grid_min) / (grid_max - grid_min) return grid def vis_grid(Xs): """ visualize a grid of images """ (N, H, W, C) = Xs.shape A = int(ceil(sqrt(N))) G = np.ones((A*H+A, A*W+A, C), Xs.dtype) G *= np.min(Xs) n = 0 for y in range(A): for x in range(A): if n < N: G[y*H+y:(y+1)*H+y, x*W+x:(x+1)*W+x, :] = Xs[n,:,:,:] n += 1 # normalize to [0,1] maxg = G.max() ming = G.min() G = (G - ming)/(maxg-ming) return G def vis_nn(rows): """ visualize array of arrays of images """ N = len(rows) D = len(rows[0]) H,W,C = rows[0][0].shape Xs = rows[0][0] G = np.ones((N*H+N, D*W+D, C), Xs.dtype) for y in range(N): for x in range(D): G[y*H+y:(y+1)*H+y, x*W+x:(x+1)*W+x, :] = rows[y][x] # normalize to [0,1] maxg = G.max() ming = G.min() G = (G - ming)/(maxg-ming) return G ================================================ FILE: cs231n/assignment1/features.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"features.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"x4FJ_QKSt97H","executionInfo":{"status":"ok","timestamp":1616336945540,"user_tz":-60,"elapsed":33043,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2f1382c6-55d7-4fc1-effa-a1b49dfc4854"},"source":["from google.colab import drive\n","\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# 'cs231n' folder containing the '.py', 'classifiers' and 'datasets'\n","# folders.\n","# e.g. 'cs231n/assignments/assignment1/cs231n/'\n","FOLDERNAME = 'cs231n/assignments/assignment1/cs231n/'\n","\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","%cd drive/My\\ Drive\n","%cp -r $FOLDERNAME ../../\n","%cd ../../\n","%cd cs231n/datasets/\n","!bash get_datasets.sh\n","%cd ../../"],"execution_count":1,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive\n","/content\n","/content/cs231n/datasets\n","--2021-03-21 14:28:59-- http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n","Resolving www.cs.toronto.edu (www.cs.toronto.edu)... 128.100.3.30\n","Connecting to www.cs.toronto.edu (www.cs.toronto.edu)|128.100.3.30|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 170498071 (163M) [application/x-gzip]\n","Saving to: ‘cifar-10-python.tar.gz’\n","\n","cifar-10-python.tar 100%[===================>] 162.60M 61.2MB/s in 2.7s \n","\n","2021-03-21 14:29:02 (61.2 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]\n","\n","cifar-10-batches-py/\n","cifar-10-batches-py/data_batch_4\n","cifar-10-batches-py/readme.html\n","cifar-10-batches-py/test_batch\n","cifar-10-batches-py/data_batch_3\n","cifar-10-batches-py/batches.meta\n","cifar-10-batches-py/data_batch_2\n","cifar-10-batches-py/data_batch_5\n","cifar-10-batches-py/data_batch_1\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"GFLgyN93t97O"},"source":["# Image features exercise\n","*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n","\n","We have seen that we can achieve reasonable performance on an image classification task by training a linear classifier on the pixels of the input image. In this exercise we will show that we can improve our classification performance by training linear classifiers not on raw pixels but on features that are computed from the raw pixels.\n","\n","All of your work for this exercise will be done in this notebook."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"skxP_7nlt97P","executionInfo":{"status":"ok","timestamp":1616336951293,"user_tz":-60,"elapsed":620,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["import random\n","import numpy as np\n","from cs231n.data_utils import load_CIFAR10\n","import matplotlib.pyplot as plt\n","\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading extenrnal modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2"],"execution_count":2,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"PIm_jpxDt97Q"},"source":["## Load data\n","Similar to previous exercises, we will load CIFAR-10 data from disk."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"0sDu4RUzt97Q","executionInfo":{"status":"ok","timestamp":1616336961633,"user_tz":-60,"elapsed":2776,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["from cs231n.features import color_histogram_hsv, hog_feature\n","\n","def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=1000):\n"," # Load the raw CIFAR-10 data\n"," cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n","\n"," # Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n"," try:\n"," del X_train, y_train\n"," del X_test, y_test\n"," print('Clear previously loaded data.')\n"," except:\n"," pass\n","\n"," X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n"," \n"," # Subsample the data\n"," mask = list(range(num_training, num_training + num_validation))\n"," X_val = X_train[mask]\n"," y_val = y_train[mask]\n"," mask = list(range(num_training))\n"," X_train = X_train[mask]\n"," y_train = y_train[mask]\n"," mask = list(range(num_test))\n"," X_test = X_test[mask]\n"," y_test = y_test[mask]\n"," \n"," return X_train, y_train, X_val, y_val, X_test, y_test\n","\n","X_train, y_train, X_val, y_val, X_test, y_test = get_CIFAR10_data()"],"execution_count":3,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"P-R35dUyt97Q"},"source":["## Extract Features\n","For each image we will compute a Histogram of Oriented\n","Gradients (HOG) as well as a color histogram using the hue channel in HSV\n","color space. We form our final feature vector for each image by concatenating\n","the HOG and color histogram feature vectors.\n","\n","Roughly speaking, HOG should capture the texture of the image while ignoring\n","color information, and the color histogram represents the color of the input\n","image while ignoring texture. As a result, we expect that using both together\n","ought to work better than using either alone. Verifying this assumption would\n","be a good thing to try for your own interest.\n","\n","The `hog_feature` and `color_histogram_hsv` functions both operate on a single\n","image and return a feature vector for that image. The extract_features\n","function takes a set of images and a list of feature functions and evaluates\n","each feature function on each image, storing the results in a matrix where\n","each column is the concatenation of all feature vectors for a single image."]},{"cell_type":"code","metadata":{"scrolled":true,"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"SSU9t4v7t97S","executionInfo":{"status":"ok","timestamp":1616337031550,"user_tz":-60,"elapsed":60354,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f8db031a-24df-441a-e436-889fbc78b35e"},"source":["from cs231n.features import *\n","\n","num_color_bins = 20 # Number of bins in the color histogram (Changed from original value: 10)\n","feature_fns = [hog_feature, lambda img: color_histogram_hsv(img, nbin=num_color_bins)]\n","X_train_feats = extract_features(X_train, feature_fns, verbose=True)\n","X_val_feats = extract_features(X_val, feature_fns)\n","X_test_feats = extract_features(X_test, feature_fns)\n","\n","# Preprocessing: Subtract the mean feature\n","mean_feat = np.mean(X_train_feats, axis=0, keepdims=True)\n","X_train_feats -= mean_feat\n","X_val_feats -= mean_feat\n","X_test_feats -= mean_feat\n","\n","# Preprocessing: Divide by standard deviation. This ensures that each feature\n","# has roughly the same scale.\n","std_feat = np.std(X_train_feats, axis=0, keepdims=True)\n","X_train_feats /= std_feat\n","X_val_feats /= std_feat\n","X_test_feats /= std_feat\n","\n","# Preprocessing: Add a bias dimension\n","X_train_feats = np.hstack([X_train_feats, np.ones((X_train_feats.shape[0], 1))])\n","X_val_feats = np.hstack([X_val_feats, np.ones((X_val_feats.shape[0], 1))])\n","X_test_feats = np.hstack([X_test_feats, np.ones((X_test_feats.shape[0], 1))])"],"execution_count":4,"outputs":[{"output_type":"stream","text":["Done extracting features for 1000 / 49000 images\n","Done extracting features for 2000 / 49000 images\n","Done extracting features for 3000 / 49000 images\n","Done extracting features for 4000 / 49000 images\n","Done extracting features for 5000 / 49000 images\n","Done extracting features for 6000 / 49000 images\n","Done extracting features for 7000 / 49000 images\n","Done extracting features for 8000 / 49000 images\n","Done extracting features for 9000 / 49000 images\n","Done extracting features for 10000 / 49000 images\n","Done extracting features for 11000 / 49000 images\n","Done extracting features for 12000 / 49000 images\n","Done extracting features for 13000 / 49000 images\n","Done extracting features for 14000 / 49000 images\n","Done extracting features for 15000 / 49000 images\n","Done extracting features for 16000 / 49000 images\n","Done extracting features for 17000 / 49000 images\n","Done extracting features for 18000 / 49000 images\n","Done extracting features for 19000 / 49000 images\n","Done extracting features for 20000 / 49000 images\n","Done extracting features for 21000 / 49000 images\n","Done extracting features for 22000 / 49000 images\n","Done extracting features for 23000 / 49000 images\n","Done extracting features for 24000 / 49000 images\n","Done extracting features for 25000 / 49000 images\n","Done extracting features for 26000 / 49000 images\n","Done extracting features for 27000 / 49000 images\n","Done extracting features for 28000 / 49000 images\n","Done extracting features for 29000 / 49000 images\n","Done extracting features for 30000 / 49000 images\n","Done extracting features for 31000 / 49000 images\n","Done extracting features for 32000 / 49000 images\n","Done extracting features for 33000 / 49000 images\n","Done extracting features for 34000 / 49000 images\n","Done extracting features for 35000 / 49000 images\n","Done extracting features for 36000 / 49000 images\n","Done extracting features for 37000 / 49000 images\n","Done extracting features for 38000 / 49000 images\n","Done extracting features for 39000 / 49000 images\n","Done extracting features for 40000 / 49000 images\n","Done extracting features for 41000 / 49000 images\n","Done extracting features for 42000 / 49000 images\n","Done extracting features for 43000 / 49000 images\n","Done extracting features for 44000 / 49000 images\n","Done extracting features for 45000 / 49000 images\n","Done extracting features for 46000 / 49000 images\n","Done extracting features for 47000 / 49000 images\n","Done extracting features for 48000 / 49000 images\n","Done extracting features for 49000 / 49000 images\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"fPDBygbjt97S"},"source":["## Train SVM on features\n","Using the multiclass SVM code developed earlier in the assignment, train SVMs on top of the features extracted above; this should achieve better results than training SVMs directly on top of raw pixels."]},{"cell_type":"code","metadata":{"tags":["code"],"colab":{"base_uri":"https://localhost:8080/"},"id":"1KC8Xhvzt97T","executionInfo":{"status":"ok","timestamp":1616337059111,"user_tz":-60,"elapsed":1988,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"04859090-c05b-4d56-8436-acb9be78139c"},"source":["# Use the validation set to tune the learning rate and regularization strength\n","\n","from cs231n.classifiers.linear_classifier import LinearSVM\n","\n","learning_rates = [1e-8]\n","regularization_strengths = [1e6]\n","\n","results = {}\n","best_val = -1\n","best_svm = None\n","\n","################################################################################\n","# TODO: #\n","# Use the validation set to set the learning rate and regularization strength. #\n","# This should be identical to the validation that you did for the SVM; save #\n","# the best trained classifer in best_svm. You might also want to play #\n","# with different numbers of bins in the color histogram. If you are careful #\n","# you should be able to get accuracy of near 0.44 on the validation set. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# Tested numbers of bins in the color histogram:\n","# num_color_bins = 10, best validation accuracy: 0.417\n","# num_color_bins = 15, best validation accuracy: 0.432\n","# num_color_bins = 20, best validation accuracy: 0.430\n","# num_color_bins = 25, best validation accuracy: 0.423\n","\n","for lr in learning_rates:\n"," for rs in regularization_strengths:\n"," svm = LinearSVM()\n"," loss_hist = svm.train(X_train_feats, y_train, learning_rate=lr, reg=rs,\n"," num_iters=2000, verbose=False)\n","\n"," y_train_pred = svm.predict(X_train_feats)\n"," training_accuracy = np.mean(y_train == y_train_pred)\n","\n"," y_val_pred = svm.predict(X_val_feats)\n"," validation_accuracy = np.mean(y_val == y_val_pred)\n","\n"," results[(lr, rs)] = (training_accuracy, validation_accuracy)\n","\n"," if validation_accuracy > best_val:\n"," best_val = validation_accuracy\n"," best_svm = svm\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# Print out results.\n","for lr, reg in sorted(results):\n"," train_accuracy, val_accuracy = results[(lr, reg)]\n"," print('lr %e reg %e train accuracy: %f val accuracy: %f' % (\n"," lr, reg, train_accuracy, val_accuracy))\n"," \n","print('best validation accuracy achieved during cross-validation: %f' % best_val)"],"execution_count":7,"outputs":[{"output_type":"stream","text":["lr 1.000000e-08 reg 1.000000e+06 train accuracy: 0.419776 val accuracy: 0.437000\n","best validation accuracy achieved during cross-validation: 0.437000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"svm_test_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616337078469,"user_tz":-60,"elapsed":679,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3e64d1d1-7754-46ca-bcb9-afcd8991e8ad"},"source":["# Evaluate your trained SVM on the test set: you should be able to get at least 0.40\n","y_test_pred = best_svm.predict(X_test_feats)\n","test_accuracy = np.mean(y_test == y_test_pred)\n","print(test_accuracy)"],"execution_count":8,"outputs":[{"output_type":"stream","text":["0.418\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":482},"id":"cFzozd1zt97U","executionInfo":{"status":"ok","timestamp":1616337088495,"user_tz":-60,"elapsed":3409,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e5931541-445d-48a9-9ddc-62aa1d4edc49"},"source":["# An important way to gain intuition about how an algorithm works is to\n","# visualize the mistakes that it makes. In this visualization, we show examples\n","# of images that are misclassified by our current system. The first column\n","# shows images that our system labeled as \"plane\" but whose true label is\n","# something other than \"plane\".\n","\n","examples_per_class = 8\n","classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n","for cls, cls_name in enumerate(classes):\n"," idxs = np.where((y_test != cls) & (y_test_pred == cls))[0]\n"," idxs = np.random.choice(idxs, examples_per_class, replace=False)\n"," for i, idx in enumerate(idxs):\n"," plt.subplot(examples_per_class, len(classes), i * len(classes) + cls + 1)\n"," plt.imshow(X_test[idx].astype('uint8'))\n"," plt.axis('off')\n"," if i == 0:\n"," plt.title(cls_name)\n","plt.show()"],"execution_count":9,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"FAxaCAUat97V"},"source":["### Inline question 1:\n","Describe the misclassification results that you see. Do they make sense?\n","\n","\n","$\\color{blue}{\\textit Your Answer:}$\n","\n","As described previously, the SVM classifier takes as input the concatenation of the image's texture (HOG) and its color information (color histogram). Thus, misclassified images have -much probably- the same texture and/or overall color as their predicted wrong class.\n","\n","By analyzing the results above, we notice that this is the case, e.g: Some images are labeled (wrongly) as \"plane\" because they have the same texture as a plane (a \"ship\" or \"bird\") or they have a blue color (e.g. a ship in the sea) which misleads the classifier to \"think\" that this blue represents the \"sky\"."]},{"cell_type":"markdown","metadata":{"id":"Tn9kA-Rmt97W"},"source":["## Neural Network on image features\n","Earlier in this assigment we saw that training a two-layer neural network on raw pixels achieved better classification performance than linear classifiers on raw pixels. In this notebook we have seen that linear classifiers on image features outperform linear classifiers on raw pixels. \n","\n","For completeness, we should also try training a neural network on image features. This approach should outperform all previous approaches: you should easily be able to achieve over 55% classification accuracy on the test set; our best model achieves about 60% classification accuracy."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"7k0YZddMt97W","executionInfo":{"status":"ok","timestamp":1616337101834,"user_tz":-60,"elapsed":598,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9e2977cf-2e70-4699-f216-0503b8f0cce8"},"source":["# Preprocessing: Remove the bias dimension\n","# Make sure to run this cell only ONCE\n","print(X_train_feats.shape)\n","X_train_feats = X_train_feats[:, :-1]\n","X_val_feats = X_val_feats[:, :-1]\n","X_test_feats = X_test_feats[:, :-1]\n","\n","print(X_train_feats.shape)"],"execution_count":10,"outputs":[{"output_type":"stream","text":["(49000, 165)\n","(49000, 164)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["code"],"id":"BWjkrKQ1t97X","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616340518584,"user_tz":-60,"elapsed":342699,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5f82ddf6-d911-4b1c-9f9a-0fa056ebf572"},"source":["from cs231n.classifiers.neural_net import TwoLayerNet\n","\n","input_dim = X_train_feats.shape[1]\n","# hidden_dim = 500\n","num_classes = 10\n","\n","# net = TwoLayerNet(input_dim, hidden_dim, num_classes)\n","best_net = None\n","\n","################################################################################\n","# TODO: Train a two-layer neural network on image features. You may want to #\n","# cross-validate various parameters as in previous sections. Store your best #\n","# model in the best_net variable. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# To find the optimal parameter combination, we'll use a random search strategy.\n","# For that, define a random search function, which yields tuples of (hidden_size, lr, reg)\n","# Note that the hard-coded low/high values for each parameter are changed (i.e. refined)\n","# during tests.\n","def random_search(sample_size):\n"," for _ in range(sample_size):\n"," hsize = np.random.randint(low=10, high=1000)\n"," lr = 10 ** np.random.uniform(low=-1, high=0)\n"," reg = 10 ** np.random.uniform(low=-10, high=-4)\n","\n"," yield hsize, lr, reg\n","\n","best_val_acc = 0.0\n","\n","# These three parameters are kept unchanged during the random search.\n","# As their changing don't contribute with a significant amount to the validation accuracy.\n","lr_decay = 0.95\n","batch_size = 200\n","num_iters = 3000\n","\n","# Test 10 parameter combinations.\n","for i, params in enumerate(random_search(10)):\n"," hsize, lr, reg = params\n","\n"," net = TwoLayerNet(input_dim, hsize, num_classes)\n","\n"," stats = net.train(X_train_feats, y_train, X_val_feats, y_val,\n"," num_iters=num_iters, batch_size=batch_size,\n"," learning_rate=lr, learning_rate_decay=lr_decay,\n"," reg=reg, verbose=False)\n","\n"," val_acc = stats['val_acc_history'][-1]\n","\n"," print('%2d) hsize=%3d | lr=%.3e | reg=%.3e | val_acc=%.4f' % (i+1, hsize, lr, reg, val_acc))\n","\n"," if val_acc > best_val_acc:\n"," best_val_acc = val_acc\n"," best_net = net\n","\n","print('\\nBest validation accuracy: %.4f' % best_val_acc)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"],"execution_count":28,"outputs":[{"output_type":"stream","text":[" 1) hsize=957 | lr=3.221e-01 | reg=1.121e-07 | val_acc=0.5990\n"," 2) hsize=908 | lr=6.121e-01 | reg=4.822e-06 | val_acc=0.5860\n"," 3) hsize=390 | lr=3.733e-01 | reg=2.092e-08 | val_acc=0.6030\n"," 4) hsize=616 | lr=2.790e-01 | reg=8.903e-10 | val_acc=0.6100\n"," 5) hsize=942 | lr=1.167e-01 | reg=4.351e-09 | val_acc=0.5950\n"," 6) hsize=717 | lr=2.326e-01 | reg=3.680e-07 | val_acc=0.6180\n"," 7) hsize=483 | lr=2.543e-01 | reg=1.282e-09 | val_acc=0.5970\n"," 8) hsize=710 | lr=1.975e-01 | reg=3.573e-07 | val_acc=0.5960\n"," 9) hsize=936 | lr=6.352e-01 | reg=6.854e-06 | val_acc=0.5900\n","10) hsize=316 | lr=1.482e-01 | reg=4.773e-10 | val_acc=0.5840\n","\n","Best validation accuracy: 0.6180\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"nn_test_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616340523054,"user_tz":-60,"elapsed":602,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9a428292-e27d-4b84-cb1d-377eda5a1a92"},"source":["# Run your best neural net classifier on the test set. You should be able\n","# to get more than 55% accuracy.\n","\n","test_acc = (best_net.predict(X_test_feats) == y_test).mean()\n","print(test_acc)"],"execution_count":29,"outputs":[{"output_type":"stream","text":["0.587\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"EW-Pj5E4t97Y"},"source":["---\n","# IMPORTANT\n","\n","This is the end of this question. Please do the following:\n","\n","1. Click `File -> Save` to make sure the latest checkpoint of this notebook is saved to your Drive.\n","2. Execute the cell below to download the modified `.py` files back to your drive."]},{"cell_type":"code","metadata":{"id":"9R3-aHGbt97Y"},"source":["import os\n","\n","FOLDER_TO_SAVE = os.path.join('drive/My Drive/', FOLDERNAME)\n","FILES_TO_SAVE = []\n","\n","for files in FILES_TO_SAVE:\n"," with open(os.path.join(FOLDER_TO_SAVE, '/'.join(files.split('/')[1:])), 'w') as f:\n"," f.write(''.join(open(files).readlines()))"],"execution_count":null,"outputs":[]}]} ================================================ FILE: cs231n/assignment1/knn.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"knn.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"6eEULpafGIVd","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616929228991,"user_tz":-60,"elapsed":31546,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2997ada3-75c9-43d3-bea6-6779afe83b9e"},"source":["from google.colab import drive\n","\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# 'cs231n' folder containing the '.py', 'classifiers' and 'datasets'\n","# folders.\n","# e.g. 'cs231n/assignments/assignment1/cs231n/'\n","FOLDERNAME = 'cs231n/assignments/assignment1/cs231n/'\n","\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","%cd drive/My\\ Drive\n","%cp -r $FOLDERNAME ../../\n","%cd ../../\n","%cd cs231n/datasets/\n","!bash get_datasets.sh\n","%cd ../../"],"execution_count":1,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive\n","/content\n","/content/cs231n/datasets\n","--2021-03-28 11:00:19-- http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n","Resolving www.cs.toronto.edu (www.cs.toronto.edu)... 128.100.3.30\n","Connecting to www.cs.toronto.edu (www.cs.toronto.edu)|128.100.3.30|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 170498071 (163M) [application/x-gzip]\n","Saving to: ‘cifar-10-python.tar.gz’\n","\n","cifar-10-python.tar 100%[===================>] 162.60M 47.1MB/s in 3.8s \n","\n","2021-03-28 11:00:22 (43.0 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]\n","\n","cifar-10-batches-py/\n","cifar-10-batches-py/data_batch_4\n","cifar-10-batches-py/readme.html\n","cifar-10-batches-py/test_batch\n","cifar-10-batches-py/data_batch_3\n","cifar-10-batches-py/batches.meta\n","cifar-10-batches-py/data_batch_2\n","cifar-10-batches-py/data_batch_5\n","cifar-10-batches-py/data_batch_1\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"HVHmJk29GIVl"},"source":["# k-Nearest Neighbor (kNN) exercise\n","\n","*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n","\n","The kNN classifier consists of two stages:\n","\n","- During training, the classifier takes the training data and simply remembers it\n","- During testing, kNN classifies every test image by comparing to all training images and transfering the labels of the k most similar training examples\n","- The value of k is cross-validated\n","\n","In this exercise you will implement these steps and understand the basic Image Classification pipeline, cross-validation, and gain proficiency in writing efficient, vectorized code."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"H2l03fqlGIVm","executionInfo":{"status":"ok","timestamp":1616929248263,"user_tz":-60,"elapsed":597,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["# Run some setup code for this notebook.\n","\n","import random\n","import numpy as np\n","from cs231n.data_utils import load_CIFAR10\n","import matplotlib.pyplot as plt\n","\n","# This is a bit of magic to make matplotlib figures appear inline in the notebook\n","# rather than in a new window.\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# Some more magic so that the notebook will reload external python modules;\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2"],"execution_count":2,"outputs":[]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"LRAH9dpuGIVn","executionInfo":{"status":"ok","timestamp":1616929253539,"user_tz":-60,"elapsed":1943,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9949e05f-db47-468a-d7da-2ca404c4d6e1"},"source":["# Load the raw CIFAR-10 data.\n","cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n","\n","# Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n","try:\n"," del X_train, y_train\n"," del X_test, y_test\n"," print('Clear previously loaded data.')\n","except:\n"," pass\n","\n","X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n","\n","# As a sanity check, we print out the size of the training and test data.\n","print('Training data shape: ', X_train.shape)\n","print('Training labels shape: ', y_train.shape)\n","print('Test data shape: ', X_test.shape)\n","print('Test labels shape: ', y_test.shape)"],"execution_count":3,"outputs":[{"output_type":"stream","text":["Training data shape: (50000, 32, 32, 3)\n","Training labels shape: (50000,)\n","Test data shape: (10000, 32, 32, 3)\n","Test labels shape: (10000,)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/","height":475},"id":"RQt4ZzkQGIVo","executionInfo":{"status":"ok","timestamp":1616929263795,"user_tz":-60,"elapsed":4046,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c0e52130-5beb-4c65-f866-6f1a07989d1e"},"source":["# Visualize some examples from the dataset.\n","# We show a few examples of training images from each class.\n","classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n","num_classes = len(classes)\n","samples_per_class = 7\n","for y, cls in enumerate(classes):\n"," idxs = np.flatnonzero(y_train == y)\n"," idxs = np.random.choice(idxs, samples_per_class, replace=False)\n"," for i, idx in enumerate(idxs):\n"," plt_idx = i * num_classes + y + 1\n"," plt.subplot(samples_per_class, num_classes, plt_idx)\n"," plt.imshow(X_train[idx].astype('uint8'))\n"," plt.axis('off')\n"," if i == 0:\n"," plt.title(cls)\n","plt.show()"],"execution_count":4,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"kjoRGEBXGIVo","executionInfo":{"status":"ok","timestamp":1616929268712,"user_tz":-60,"elapsed":682,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"206f44dd-4bca-4ba5-912c-31a148b41d83"},"source":["# Subsample the data for more efficient code execution in this exercise\n","num_training = 5000\n","mask = list(range(num_training))\n","X_train = X_train[mask]\n","y_train = y_train[mask]\n","\n","num_test = 500\n","mask = list(range(num_test))\n","X_test = X_test[mask]\n","y_test = y_test[mask]\n","\n","# Reshape the image data into rows\n","X_train = np.reshape(X_train, (X_train.shape[0], -1))\n","X_test = np.reshape(X_test, (X_test.shape[0], -1))\n","print(X_train.shape, X_test.shape)"],"execution_count":5,"outputs":[{"output_type":"stream","text":["(5000, 3072) (500, 3072)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"yktr4Q2FGIVo","executionInfo":{"status":"ok","timestamp":1616929281593,"user_tz":-60,"elapsed":766,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["from cs231n.classifiers import KNearestNeighbor\n","\n","# Create a kNN classifier instance. \n","# Remember that training a kNN classifier is a noop: \n","# the Classifier simply remembers the data and does no further processing \n","classifier = KNearestNeighbor()\n","classifier.train(X_train, y_train)"],"execution_count":6,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0R6Gnn8DGIVp"},"source":["We would now like to classify the test data with the kNN classifier. Recall that we can break down this process into two steps: \n","\n","1. First we must compute the distances between all test examples and all train examples. \n","2. Given these distances, for each test example we find the k nearest examples and have them vote for the label\n","\n","Lets begin with computing the distance matrix between all training and test examples. For example, if there are **Ntr** training examples and **Nte** test examples, this stage should result in a **Nte x Ntr** matrix where each element (i,j) is the distance between the i-th test and j-th train example.\n","\n","**Note: For the three distance computations that we require you to implement in this notebook, you may not use the np.linalg.norm() function that numpy provides.**\n","\n","First, open `cs231n/classifiers/k_nearest_neighbor.py` and implement the function `compute_distances_two_loops` that uses a (very inefficient) double loop over all pairs of (test, train) examples and computes the distance matrix one element at a time."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eIOPiOjMGIVp","executionInfo":{"status":"ok","timestamp":1616929384039,"user_tz":-60,"elapsed":40051,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"ebd061fa-7ad4-4045-972c-600cddbdae4c"},"source":["# Open cs231n/classifiers/k_nearest_neighbor.py and implement\n","# compute_distances_two_loops.\n","\n","# Test your implementation:\n","dists = classifier.compute_distances_two_loops(X_test)\n","print(dists.shape)"],"execution_count":7,"outputs":[{"output_type":"stream","text":["(500, 5000)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":107},"id":"DExUA9bBGIVp","executionInfo":{"status":"ok","timestamp":1616929388789,"user_tz":-60,"elapsed":1291,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"31d6267e-3473-4384-ba6b-7adcb7a72674"},"source":["# We can visualize the distance matrix: each row is a single test example and\n","# its distances to training examples\n","plt.imshow(dists, interpolation='none')\n","plt.show()"],"execution_count":8,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"4aJQok-gGIVq"},"source":["**Inline Question 1** \n","\n","Notice the structured patterns in the distance matrix, where some rows or columns are visible brighter. (Note that with the default color scheme black indicates low distances while white indicates high distances.)\n","\n","- What in the data is the cause behind the distinctly bright rows?\n","- What causes the columns?\n","\n","$\\color{blue}{\\textit Your Answer:}$ The distinctly bright rows are caused by the data structure itself. Since we are dealing with images (hence, pixel matrices), some of the test ones maybe be “ambiguous”, that is, they contain elements which make them close to all dataset classes (based on the used distance formula). The same thing applies to bright columns.\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4aGbgg3HGIVq","executionInfo":{"status":"ok","timestamp":1616929400518,"user_tz":-60,"elapsed":951,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"709ee626-7b52-4d51-faac-51ac7c91cff4"},"source":["# Now implement the function predict_labels and run the code below:\n","# We use k = 1 (which is Nearest Neighbor).\n","y_test_pred = classifier.predict_labels(dists, k=1)\n","\n","# Compute and print the fraction of correctly predicted examples\n","num_correct = np.sum(y_test_pred == y_test)\n","accuracy = float(num_correct) / num_test\n","print('Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy))"],"execution_count":9,"outputs":[{"output_type":"stream","text":["Got 137 / 500 correct => accuracy: 0.274000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"WJATqLc1GIVr"},"source":["You should expect to see approximately `27%` accuracy. Now lets try out a larger `k`, say `k = 5`:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"HXcPmSycGIVs","executionInfo":{"status":"ok","timestamp":1616929405651,"user_tz":-60,"elapsed":659,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"dfbd45cc-c013-472e-ad7b-da7db3f25df3"},"source":["y_test_pred = classifier.predict_labels(dists, k=5)\n","num_correct = np.sum(y_test_pred == y_test)\n","accuracy = float(num_correct) / num_test\n","print('Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy))"],"execution_count":10,"outputs":[{"output_type":"stream","text":["Got 139 / 500 correct => accuracy: 0.278000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"EmT6WECnGIVs"},"source":["You should expect to see a slightly better performance than with `k = 1`."]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"aJpXxzr0GIVt"},"source":["**Inline Question 2**\n","\n","We can also use other distance metrics such as L1 distance.\n","For pixel values $p_{ij}^{(k)}$ at location $(i,j)$ of some image $I_k$, \n","\n","the mean $\\mu$ across all pixels over all images is $$\\mu=\\frac{1}{nhw}\\sum_{k=1}^n\\sum_{i=1}^{h}\\sum_{j=1}^{w}p_{ij}^{(k)}$$\n","And the pixel-wise mean $\\mu_{ij}$ across all images is \n","$$\\mu_{ij}=\\frac{1}{n}\\sum_{k=1}^np_{ij}^{(k)}.$$\n","The general standard deviation $\\sigma$ and pixel-wise standard deviation $\\sigma_{ij}$ is defined similarly.\n","\n","Which of the following preprocessing steps will not change the performance of a Nearest Neighbor classifier that uses L1 distance? Select all that apply.\n","1. Subtracting the mean $\\mu$ ($\\tilde{p}_{ij}^{(k)}=p_{ij}^{(k)}-\\mu$.)\n","2. Subtracting the per pixel mean $\\mu_{ij}$ ($\\tilde{p}_{ij}^{(k)}=p_{ij}^{(k)}-\\mu_{ij}$.)\n","3. Subtracting the mean $\\mu$ and dividing by the standard deviation $\\sigma$.\n","4. Subtracting the pixel-wise mean $\\mu_{ij}$ and dividing by the pixel-wise standard deviation $\\sigma_{ij}$.\n","5. Rotating the coordinate axes of the data.\n","\n","$\\color{blue}{\\textit Your Answer:}$ I suppose that these preprocessing techniques concern all dataset images (and not, only some of them).\n","\n","Preprocessing that will not change the performance of the kNN classifier that uses L1 distance are: 1, 2, and 5.\n","\n","$\\color{blue}{\\textit Your Explanation:}$\n","\n","- Since preprocessing are applied to all images, subtracting either “the mean” (statement 1) or “the per pixel mean” (statement 2) won’t affect the L1 distance equation. This is due to the fact that the same value is substituted for each pixel in the same position in both images (for those who the L1 distance in computed).\n","\n","- Dividing pixel values by the standard deviation, after subtracting “the mean” (statement 3) or “the per pixel mean” (statement 4), will most probably have an effect on the L1 distance values, and hence, on kNN performance. This is due to fact that pixels will be divided by different values (since the standard deviation is different from one image to another).\n","\n","- Rotating the coordinate axes of the data (statement 5) also won’t change the L1 distance, since the latter computes the difference between pixel values in the same position. So, pixel position is preserved by rotating all images in the same direction.\n"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"id":"PoJJbPTVGIVt","executionInfo":{"status":"ok","timestamp":1616929446199,"user_tz":-60,"elapsed":34562,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"605ed5bd-0ec2-4300-b271-6b505f3d666f"},"source":["# Now lets speed up distance matrix computation by using partial vectorization\n","# with one loop. Implement the function compute_distances_one_loop and run the\n","# code below:\n","dists_one = classifier.compute_distances_one_loop(X_test)\n","\n","# To ensure that our vectorized implementation is correct, we make sure that it\n","# agrees with the naive implementation. There are many ways to decide whether\n","# two matrices are similar; one of the simplest is the Frobenius norm. In case\n","# you haven't seen it before, the Frobenius norm of two matrices is the square\n","# root of the squared sum of differences of all elements; in other words, reshape\n","# the matrices into vectors and compute the Euclidean distance between them.\n","difference = np.linalg.norm(dists - dists_one, ord='fro')\n","print('One loop difference was: %f' % (difference, ))\n","if difference < 0.001:\n"," print('Good! The distance matrices are the same')\n","else:\n"," print('Uh-oh! The distance matrices are different')"],"execution_count":11,"outputs":[{"output_type":"stream","text":["One loop difference was: 0.000000\n","Good! The distance matrices are the same\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"scrolled":true,"tags":["pdf-ignore-input"],"id":"Kj-8mMu0GIVu","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616929464968,"user_tz":-60,"elapsed":1927,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"49002e88-884b-48db-df8d-214c6a287f26"},"source":["# Now implement the fully vectorized version inside compute_distances_no_loops\n","# and run the code\n","dists_two = classifier.compute_distances_no_loops(X_test)\n","\n","# check that the distance matrix agrees with the one we computed before:\n","difference = np.linalg.norm(dists - dists_two, ord='fro')\n","print('No loop difference was: %f' % (difference, ))\n","if difference < 0.001:\n"," print('Good! The distance matrices are the same')\n","else:\n"," print('Uh-oh! The distance matrices are different')"],"execution_count":12,"outputs":[{"output_type":"stream","text":["No loop difference was: 0.000000\n","Good! The distance matrices are the same\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"no_loop","tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616929542602,"user_tz":-60,"elapsed":73707,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"bcb6fb7e-04c2-4ca9-938d-6cae05106c54"},"source":["# Let's compare how fast the implementations are\n","def time_function(f, *args):\n"," \"\"\"\n"," Call a function f with args and return the time (in seconds) that it took to execute.\n"," \"\"\"\n"," import time\n"," tic = time.time()\n"," f(*args)\n"," toc = time.time()\n"," return toc - tic\n","\n","two_loop_time = time_function(classifier.compute_distances_two_loops, X_test)\n","print('Two loop version took %f seconds' % two_loop_time)\n","\n","one_loop_time = time_function(classifier.compute_distances_one_loop, X_test)\n","print('One loop version took %f seconds' % one_loop_time)\n","\n","no_loop_time = time_function(classifier.compute_distances_no_loops, X_test)\n","print('No loop version took %f seconds' % no_loop_time)\n","\n","# You should see significantly faster performance with the fully vectorized implementation!\n","\n","# NOTE: depending on what machine you're using, \n","# you might not see a speedup when you go from two loops to one loop, \n","# and might even see a slow-down."],"execution_count":13,"outputs":[{"output_type":"stream","text":["Two loop version took 38.968158 seconds\n","One loop version took 33.640804 seconds\n","No loop version took 0.511983 seconds\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"rPSLs_NfGIVv"},"source":["### Cross-validation\n","\n","We have implemented the k-Nearest Neighbor classifier but we set the value k = 5 arbitrarily. We will now determine the best value of this hyperparameter with cross-validation."]},{"cell_type":"code","metadata":{"tags":["code"],"id":"AakEU3ShGIVv","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611248968978,"user_tz":-60,"elapsed":59080,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"391e4953-529f-453c-8361-dcc3a2d0ef69"},"source":["num_folds = 5\n","k_choices = [1, 3, 5, 8, 10, 12, 15, 20, 50, 100]\n","\n","X_train_folds = []\n","y_train_folds = []\n","################################################################################\n","# TODO: #\n","# Split up the training data into folds. After splitting, X_train_folds and #\n","# y_train_folds should each be lists of length num_folds, where #\n","# y_train_folds[i] is the label vector for the points in X_train_folds[i]. #\n","# Hint: Look up the numpy array_split function. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","X_train_folds = np.array_split(X_train, num_folds)\n","y_train_folds = np.array_split(y_train, num_folds)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# A dictionary holding the accuracies for different values of k that we find\n","# when running cross-validation. After running cross-validation,\n","# k_to_accuracies[k] should be a list of length num_folds giving the different\n","# accuracy values that we found when using that value of k.\n","k_to_accuracies = {}\n","\n","\n","################################################################################\n","# TODO: #\n","# Perform k-fold cross validation to find the best value of k. For each #\n","# possible value of k, run the k-nearest-neighbor algorithm num_folds times, #\n","# where in each case you use all but one of the folds as training data and the #\n","# last fold as a validation set. Store the accuracies for all fold and all #\n","# values of k in the k_to_accuracies dictionary. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","for k in k_choices:\n"," k_to_accuracies[k] = []\n","\n"," # Test-fold index changes over iterations\n"," for test_idx in range(num_folds): \n"," X_test_cross = X_train_folds[test_idx]\n"," y_test_cross = y_train_folds[test_idx]\n","\n"," # Merge all 'X' train folds into one part which didn't contain the current\n"," # test fold.\n"," X_train_cross = [x for i, x in enumerate(X_train_folds) if i != test_idx]\n"," X_train_cross = np.concatenate(X_train_cross)\n","\n"," # Merge all 'y' train folds into one part which didn't contain the current\n"," # test fold.\n"," y_train_cross = [x for i, x in enumerate(y_train_folds) if i != test_idx]\n"," y_train_cross = np.concatenate(y_train_cross)\n","\n"," classifier.train(X_train_cross, y_train_cross)\n","\n"," dists = classifier.compute_distances_no_loops(X_test_cross)\n","\n"," y_test_pred = classifier.predict_labels(dists, k)\n"," num_correct = np.sum(y_test_pred == y_test_cross)\n"," accuracy = float(num_correct) / num_test\n","\n"," k_to_accuracies[k].append(accuracy)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# Print out the computed accuracies\n","for k in sorted(k_to_accuracies):\n"," for accuracy in k_to_accuracies[k]:\n"," print('k = %d, accuracy = %f' % (k, accuracy))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["k = 1, accuracy = 0.526000\n","k = 1, accuracy = 0.514000\n","k = 1, accuracy = 0.528000\n","k = 1, accuracy = 0.556000\n","k = 1, accuracy = 0.532000\n","k = 3, accuracy = 0.478000\n","k = 3, accuracy = 0.498000\n","k = 3, accuracy = 0.480000\n","k = 3, accuracy = 0.532000\n","k = 3, accuracy = 0.508000\n","k = 5, accuracy = 0.496000\n","k = 5, accuracy = 0.532000\n","k = 5, accuracy = 0.560000\n","k = 5, accuracy = 0.584000\n","k = 5, accuracy = 0.560000\n","k = 8, accuracy = 0.524000\n","k = 8, accuracy = 0.564000\n","k = 8, accuracy = 0.546000\n","k = 8, accuracy = 0.580000\n","k = 8, accuracy = 0.546000\n","k = 10, accuracy = 0.530000\n","k = 10, accuracy = 0.592000\n","k = 10, accuracy = 0.552000\n","k = 10, accuracy = 0.568000\n","k = 10, accuracy = 0.560000\n","k = 12, accuracy = 0.520000\n","k = 12, accuracy = 0.590000\n","k = 12, accuracy = 0.558000\n","k = 12, accuracy = 0.566000\n","k = 12, accuracy = 0.560000\n","k = 15, accuracy = 0.504000\n","k = 15, accuracy = 0.578000\n","k = 15, accuracy = 0.556000\n","k = 15, accuracy = 0.564000\n","k = 15, accuracy = 0.548000\n","k = 20, accuracy = 0.540000\n","k = 20, accuracy = 0.558000\n","k = 20, accuracy = 0.558000\n","k = 20, accuracy = 0.564000\n","k = 20, accuracy = 0.570000\n","k = 50, accuracy = 0.542000\n","k = 50, accuracy = 0.576000\n","k = 50, accuracy = 0.556000\n","k = 50, accuracy = 0.538000\n","k = 50, accuracy = 0.532000\n","k = 100, accuracy = 0.512000\n","k = 100, accuracy = 0.540000\n","k = 100, accuracy = 0.526000\n","k = 100, accuracy = 0.512000\n","k = 100, accuracy = 0.526000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"__b92dd-hxTq","executionInfo":{"status":"ok","timestamp":1611249064405,"user_tz":-60,"elapsed":1303,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d96f5620-d883-42d8-d126-3fdf84ae28f9"},"source":["# Cell added by me, to choose the best K value.\n","best_k = k_choices[0]\n","best_accuracy = 0\n","\n","for k in sorted(k_to_accuracies):\n"," sum_cross = 0\n"," for accuracy in k_to_accuracies[k]:\n"," sum_cross += accuracy\n","\n"," average_accuracy = sum_cross / num_folds\n","\n"," if average_accuracy > best_accuracy:\n"," best_k = k\n"," best_accuracy = average_accuracy\n","\n","print('Best value for k is %d (accuracy = %f)' % (best_k, best_accuracy))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Best value for k is 10 (accuracy = 0.560400)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"RLzB9z9yGIVw","colab":{"base_uri":"https://localhost:8080/","height":513},"executionInfo":{"status":"ok","timestamp":1611249069925,"user_tz":-60,"elapsed":1553,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"103b166d-9d0b-40b9-d975-2421d384fe8c"},"source":["# plot the raw observations\n","for k in k_choices:\n"," accuracies = k_to_accuracies[k]\n"," plt.scatter([k] * len(accuracies), accuracies)\n","\n","# plot the trend line with error bars that correspond to standard deviation\n","accuracies_mean = np.array([np.mean(v) for k,v in sorted(k_to_accuracies.items())])\n","accuracies_std = np.array([np.std(v) for k,v in sorted(k_to_accuracies.items())])\n","plt.errorbar(k_choices, accuracies_mean, yerr=accuracies_std)\n","plt.title('Cross-validation on k')\n","plt.xlabel('k')\n","plt.ylabel('Cross-validation accuracy')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"cross_validation","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611249103249,"user_tz":-60,"elapsed":2080,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"4aa3adff-4b96-41f1-e390-3d2278d465a7"},"source":["# Based on the cross-validation results above, choose the best value for k, \n","# retrain the classifier using all the training data, and test it on the test\n","# data. You should be able to get above 28% accuracy on the test data.\n","best_k = 10 # Modified value by me.\n","\n","classifier = KNearestNeighbor()\n","classifier.train(X_train, y_train)\n","y_test_pred = classifier.predict(X_test, k=best_k)\n","\n","# Compute and display the accuracy\n","num_correct = np.sum(y_test_pred == y_test)\n","accuracy = float(num_correct) / num_test\n","print('Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Got 141 / 500 correct => accuracy: 0.282000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"2WB0ZNGYGIVw"},"source":["**Inline Question 3**\n","\n","Which of the following statements about $k$-Nearest Neighbor ($k$-NN) are true in a classification setting, and for all $k$? Select all that apply.\n","1. The decision boundary of the k-NN classifier is linear.\n","2. The training error of a 1-NN will always be lower than that of 5-NN.\n","3. The test error of a 1-NN will always be lower than that of a 5-NN.\n","4. The time needed to classify a test example with the k-NN classifier grows with the size of the training set.\n","5. None of the above.\n","\n","$\\color{blue}{\\textit Your Answer:}$ Statement that is true about kNN setting is: 4 (classification time is related to the training set).\n","\n","\n","$\\color{blue}{\\textit Your Explanation:}$\n","\n","- For the statement 1: Basing on its definition, the training procedure of a kNN classifier consists on saving the training set samples. So, it’s clear that we can’t talk about a “linear classifier”.\n","\n","- For the statement 2 and 3: The K value is an hyperparameter, hence, it depends on the problem nature (so, in this case, the dataset) itself. Raising the K value won’t guarantee getting a high accuracy and/or low error on the train/test set.\n","\n","- For the statement 4: In order to classify a test image, kNN have to compute the distances between this image and all the training images (and after that, making a vote based on top-K distance image labels). So, the time needed to compute all the distances depends on the of training set."]},{"cell_type":"markdown","metadata":{"id":"Ys-Ag9_oGIVw"},"source":["---\n","# IMPORTANT\n","\n","This is the end of this question. Please do the following:\n","\n","1. Click `File -> Save` to make sure the latest checkpoint of this notebook is saved to your Drive.\n","2. Execute the cell below to download the modified `.py` files back to your drive."]},{"cell_type":"code","metadata":{"id":"eYSUABI-GIVx","executionInfo":{"status":"ok","timestamp":1616929573800,"user_tz":-60,"elapsed":682,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["import os\n","\n","FOLDER_TO_SAVE = os.path.join('drive/My Drive/', FOLDERNAME)\n","FILES_TO_SAVE = ['cs231n/classifiers/k_nearest_neighbor.py']\n","\n","for files in FILES_TO_SAVE:\n"," with open(os.path.join(FOLDER_TO_SAVE, '/'.join(files.split('/')[1:])), 'w') as f:\n"," f.write(''.join(open(files).readlines()))"],"execution_count":14,"outputs":[]}]} ================================================ FILE: cs231n/assignment1/requirements.txt ================================================ attrs==19.1.0 backcall==0.1.0 bleach==3.1.0 certifi==2019.3.9 chardet==3.0.4 colorama==0.4.1 cycler==0.10.0 decorator==4.4.0 defusedxml==0.5.0 entrypoints==0.3 future==0.17.1 gitdb2==2.0.5 GitPython==2.1.11 idna==2.8 ipykernel==5.1.0 ipython==7.4.0 ipython-genutils==0.2.0 ipywidgets==7.4.2 imageio==2.8.0 jedi==0.13.3 Jinja2==2.10 jsonschema==3.0.1 jupyter==1.0.0 jupyter-client==5.2.4 jupyter-console==6.0.0 jupyter-core==4.4.0 jupyterlab==0.35.4 jupyterlab-server==0.2.0 kiwisolver==1.0.1 MarkupSafe==1.1.1 matplotlib==3.0.3 mistune==0.8.4 nbconvert==5.4.1 nbdime==1.0.5 nbformat==4.4.0 notebook==5.7.8 numpy==1.16.2 pandocfilters==1.4.2 parso==0.3.4 pexpect==4.6.0 pickleshare==0.7.5 Pillow==6.0.0 prometheus-client==0.6.0 prompt-toolkit==2.0.9 ptyprocess==0.6.0 Pygments==2.3.1 pyparsing==2.3.1 pyrsistent==0.14.11 python-dateutil==2.8.0 pyzmq==18.0.1 qtconsole==4.4.3 requests==2.21.0 scipy==1.2.1 Send2Trash==1.5.0 six==1.12.0 smmap2==2.0.5 terminado==0.8.2 testpath==0.4.2 tornado==6.0.2 traitlets==4.3.2 urllib3==1.24.1 wcwidth==0.1.7 webencodings==0.5.1 widgetsnbextension==3.4.2 ================================================ FILE: cs231n/assignment1/softmax.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"softmax.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Wn23ESPrECJL","executionInfo":{"status":"ok","timestamp":1611324210339,"user_tz":-60,"elapsed":25117,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"48f13ec0-6c25-4ce7-8090-693b62df3062"},"source":["from google.colab import drive\n","\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# 'cs231n' folder containing the '.py', 'classifiers' and 'datasets'\n","# folders.\n","# e.g. 'cs231n/assignments/assignment1/cs231n/'\n","FOLDERNAME = 'cs231n/assignments/assignment1/cs231n/'\n","\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","%cd drive/My\\ Drive\n","%cp -r $FOLDERNAME ../../\n","%cd ../../\n","%cd cs231n/datasets/\n","!bash get_datasets.sh\n","%cd ../../"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive\n","/content\n","/content/cs231n/datasets\n","--2021-01-22 14:03:23-- http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n","Resolving www.cs.toronto.edu (www.cs.toronto.edu)... 128.100.3.30\n","Connecting to www.cs.toronto.edu (www.cs.toronto.edu)|128.100.3.30|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 170498071 (163M) [application/x-gzip]\n","Saving to: ‘cifar-10-python.tar.gz’\n","\n","cifar-10-python.tar 100%[===================>] 162.60M 69.1MB/s in 2.4s \n","\n","2021-01-22 14:03:25 (69.1 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]\n","\n","cifar-10-batches-py/\n","cifar-10-batches-py/data_batch_4\n","cifar-10-batches-py/readme.html\n","cifar-10-batches-py/test_batch\n","cifar-10-batches-py/data_batch_3\n","cifar-10-batches-py/batches.meta\n","cifar-10-batches-py/data_batch_2\n","cifar-10-batches-py/data_batch_5\n","cifar-10-batches-py/data_batch_1\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"EeM4R9xBECJT"},"source":["# Softmax exercise\n","\n","*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n","\n","This exercise is analogous to the SVM exercise. You will:\n","\n","- implement a fully-vectorized **loss function** for the Softmax classifier\n","- implement the fully-vectorized expression for its **analytic gradient**\n","- **check your implementation** with numerical gradient\n","- use a validation set to **tune the learning rate and regularization** strength\n","- **optimize** the loss function with **SGD**\n","- **visualize** the final learned weights\n"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"SK6UB4Q_ECJU"},"source":["import random\n","import numpy as np\n","from cs231n.data_utils import load_CIFAR10\n","import matplotlib.pyplot as plt\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading extenrnal modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"qTgSBas-ECJU","executionInfo":{"status":"ok","timestamp":1611324274582,"user_tz":-60,"elapsed":4146,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cfa0fc95-c2f3-434d-fce4-5a387a6a129a"},"source":["def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=1000, num_dev=500):\n"," \"\"\"\n"," Load the CIFAR-10 dataset from disk and perform preprocessing to prepare\n"," it for the linear classifier. These are the same steps as we used for the\n"," SVM, but condensed to a single function. \n"," \"\"\"\n"," # Load the raw CIFAR-10 data\n"," cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n"," \n"," # Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n"," try:\n"," del X_train, y_train\n"," del X_test, y_test\n"," print('Clear previously loaded data.')\n"," except:\n"," pass\n","\n"," X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n"," \n"," # subsample the data\n"," mask = list(range(num_training, num_training + num_validation))\n"," X_val = X_train[mask]\n"," y_val = y_train[mask]\n"," mask = list(range(num_training))\n"," X_train = X_train[mask]\n"," y_train = y_train[mask]\n"," mask = list(range(num_test))\n"," X_test = X_test[mask]\n"," y_test = y_test[mask]\n"," mask = np.random.choice(num_training, num_dev, replace=False)\n"," X_dev = X_train[mask]\n"," y_dev = y_train[mask]\n"," \n"," # Preprocessing: reshape the image data into rows\n"," X_train = np.reshape(X_train, (X_train.shape[0], -1))\n"," X_val = np.reshape(X_val, (X_val.shape[0], -1))\n"," X_test = np.reshape(X_test, (X_test.shape[0], -1))\n"," X_dev = np.reshape(X_dev, (X_dev.shape[0], -1))\n"," \n"," # Normalize the data: subtract the mean image\n"," mean_image = np.mean(X_train, axis = 0)\n"," X_train -= mean_image\n"," X_val -= mean_image\n"," X_test -= mean_image\n"," X_dev -= mean_image\n"," \n"," # add bias dimension and transform into columns\n"," X_train = np.hstack([X_train, np.ones((X_train.shape[0], 1))])\n"," X_val = np.hstack([X_val, np.ones((X_val.shape[0], 1))])\n"," X_test = np.hstack([X_test, np.ones((X_test.shape[0], 1))])\n"," X_dev = np.hstack([X_dev, np.ones((X_dev.shape[0], 1))])\n"," \n"," return X_train, y_train, X_val, y_val, X_test, y_test, X_dev, y_dev\n","\n","\n","# Invoke the above function to get our data.\n","X_train, y_train, X_val, y_val, X_test, y_test, X_dev, y_dev = get_CIFAR10_data()\n","print('Train data shape: ', X_train.shape)\n","print('Train labels shape: ', y_train.shape)\n","print('Validation data shape: ', X_val.shape)\n","print('Validation labels shape: ', y_val.shape)\n","print('Test data shape: ', X_test.shape)\n","print('Test labels shape: ', y_test.shape)\n","print('dev data shape: ', X_dev.shape)\n","print('dev labels shape: ', y_dev.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Train data shape: (49000, 3073)\n","Train labels shape: (49000,)\n","Validation data shape: (1000, 3073)\n","Validation labels shape: (1000,)\n","Test data shape: (1000, 3073)\n","Test labels shape: (1000,)\n","dev data shape: (500, 3073)\n","dev labels shape: (500,)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"B9XBkJ3YECJW"},"source":["## Softmax Classifier\n","\n","Your code for this section will all be written inside `cs231n/classifiers/softmax.py`.\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LDy4xf2DECJW","executionInfo":{"status":"ok","timestamp":1611324441565,"user_tz":-60,"elapsed":1118,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"98e1c28a-76d5-47aa-f94d-33ac15ba2810"},"source":["# First implement the naive softmax loss function with nested loops.\n","# Open the file cs231n/classifiers/softmax.py and implement the\n","# softmax_loss_naive function.\n","\n","from cs231n.classifiers.softmax import softmax_loss_naive\n","import time\n","\n","# Generate a random softmax weight matrix and use it to compute the loss.\n","W = np.random.randn(3073, 10) * 0.0001\n","loss, grad = softmax_loss_naive(W, X_dev, y_dev, 0.0)\n","\n","# As a rough sanity check, our loss should be something close to -log(0.1).\n","print('loss: %f' % loss)\n","print('sanity check: %f' % (-np.log(0.1)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["loss: 2.322750\n","sanity check: 2.302585\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"vLgazbi1ECJX"},"source":["**Inline Question 1**\n","\n","Why do we expect our loss to be close to -log(0.1)? Explain briefly.**\n","\n","$\\color{blue}{\\textit Your Answer:}$ In the data preprocessing, **X_dev** is normalized (*mean* ≈ 0, *std* ≈ 1). So, the multiplication between **X_dev** and **W** will result in a matrix with values (*val*) relatively close to each other. With the number of classes $C=10$, we'll get: $\\frac{e^{val}}{C * e^{val}} = \\frac{e^{val}}{10 * e^{val}} ≈ 0.1$ [Denominator values are close to each other, so we can directly multiply by $C$, instead of summing them] (for every single **X_dev** sample, which will be divided by N, so, the final result will be also close to **0.1**). And by applying the softmax loss function, we'll get: **-log(0.1)**."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"w8v0xlyTECJX","executionInfo":{"status":"ok","timestamp":1611324450104,"user_tz":-60,"elapsed":6411,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8e5ea4bc-db58-447c-df35-4468e7b8afa6"},"source":["# Complete the implementation of softmax_loss_naive and implement a (naive)\n","# version of the gradient that uses nested loops.\n","loss, grad = softmax_loss_naive(W, X_dev, y_dev, 0.0)\n","\n","# As we did for the SVM, use numeric gradient checking as a debugging tool.\n","# The numeric gradient should be close to the analytic gradient.\n","from cs231n.gradient_check import grad_check_sparse\n","f = lambda w: softmax_loss_naive(w, X_dev, y_dev, 0.0)[0]\n","grad_numerical = grad_check_sparse(f, W, grad, 10)\n","\n","# similar to SVM case, do another gradient check with regularization\n","loss, grad = softmax_loss_naive(W, X_dev, y_dev, 5e1)\n","f = lambda w: softmax_loss_naive(w, X_dev, y_dev, 5e1)[0]\n","grad_numerical = grad_check_sparse(f, W, grad, 10)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["numerical: -2.405989 analytic: -2.405989, relative error: 8.762001e-09\n","numerical: -1.554251 analytic: -1.554251, relative error: 5.237692e-08\n","numerical: 0.098306 analytic: 0.098306, relative error: 3.893297e-07\n","numerical: 0.097479 analytic: 0.097479, relative error: 5.392960e-08\n","numerical: -0.207212 analytic: -0.207212, relative error: 1.097736e-07\n","numerical: -0.029221 analytic: -0.029221, relative error: 3.005833e-06\n","numerical: 1.595536 analytic: 1.595536, relative error: 2.211457e-08\n","numerical: -1.093525 analytic: -1.093525, relative error: 2.311254e-08\n","numerical: 0.757587 analytic: 0.757587, relative error: 5.062852e-08\n","numerical: -1.507960 analytic: -1.507960, relative error: 1.564765e-08\n","numerical: -0.487731 analytic: -0.487731, relative error: 9.720138e-08\n","numerical: -1.770322 analytic: -1.770322, relative error: 4.287101e-08\n","numerical: 2.332688 analytic: 2.332688, relative error: 9.362696e-09\n","numerical: 2.570502 analytic: 2.570502, relative error: 4.806156e-09\n","numerical: -5.324541 analytic: -5.324542, relative error: 8.506626e-09\n","numerical: 0.306370 analytic: 0.306370, relative error: 2.915036e-07\n","numerical: -2.795721 analytic: -2.795721, relative error: 2.812300e-08\n","numerical: -0.589289 analytic: -0.589289, relative error: 1.039900e-08\n","numerical: 0.069590 analytic: 0.069590, relative error: 6.788522e-07\n","numerical: 2.587821 analytic: 2.587821, relative error: 1.049984e-08\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZEhAB4ynECJX","executionInfo":{"status":"ok","timestamp":1611324455899,"user_tz":-60,"elapsed":680,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c332108f-542d-4d1a-b54b-45781bf9a45b"},"source":["# Now that we have a naive implementation of the softmax loss function and its gradient,\n","# implement a vectorized version in softmax_loss_vectorized.\n","# The two versions should compute the same results, but the vectorized version should be\n","# much faster.\n","tic = time.time()\n","loss_naive, grad_naive = softmax_loss_naive(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('naive loss: %e computed in %fs' % (loss_naive, toc - tic))\n","\n","from cs231n.classifiers.softmax import softmax_loss_vectorized\n","tic = time.time()\n","loss_vectorized, grad_vectorized = softmax_loss_vectorized(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('vectorized loss: %e computed in %fs' % (loss_vectorized, toc - tic))\n","\n","# As we did for the SVM, we use the Frobenius norm to compare the two versions\n","# of the gradient.\n","grad_difference = np.linalg.norm(grad_naive - grad_vectorized, ord='fro')\n","print('Loss difference: %f' % np.abs(loss_naive - loss_vectorized))\n","print('Gradient difference: %f' % grad_difference)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["naive loss: 2.322750e+00 computed in 0.138603s\n","vectorized loss: 2.322750e+00 computed in 0.018519s\n","Loss difference: 0.000000\n","Gradient difference: 0.000000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"tuning","tags":["code"],"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611324551242,"user_tz":-60,"elapsed":11516,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"40f0f1ab-0242-498a-b884-5f9ab9e7e9da"},"source":["# Use the validation set to tune hyperparameters (regularization strength and\n","# learning rate). You should experiment with different ranges for the learning\n","# rates and regularization strengths; if you are careful you should be able to\n","# get a classification accuracy of over 0.35 on the validation set.\n","\n","from cs231n.classifiers import Softmax\n","results = {}\n","best_val = -1\n","best_softmax = None\n","\n","################################################################################\n","# TODO: #\n","# Use the validation set to set the learning rate and regularization strength. #\n","# This should be identical to the validation that you did for the SVM; save #\n","# the best trained softmax classifer in best_softmax. #\n","################################################################################\n","\n","# Provided as a reference. You may or may not want to change these hyperparameters\n","learning_rates = [1e-6] # Modified\n","regularization_strengths = [5e3] # Modified\n","\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","for lr in learning_rates:\n"," for rs in regularization_strengths:\n"," softmax = Softmax()\n"," loss_hist = softmax.train(X_train, y_train, learning_rate=lr, reg=rs,\n"," num_iters=1500, verbose=False)\n","\n"," y_train_pred = softmax.predict(X_train)\n"," training_accuracy = np.mean(y_train == y_train_pred)\n","\n"," y_val_pred = softmax.predict(X_val)\n"," validation_accuracy = np.mean(y_val == y_val_pred)\n","\n"," results[(lr, rs)] = (training_accuracy, validation_accuracy)\n","\n"," if validation_accuracy > best_val:\n"," best_val = validation_accuracy\n"," best_softmax = softmax\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"," \n","# Print out results.\n","for lr, reg in sorted(results):\n"," train_accuracy, val_accuracy = results[(lr, reg)]\n"," print('lr %e reg %e train accuracy: %f val accuracy: %f' % (\n"," lr, reg, train_accuracy, val_accuracy))\n"," \n","print('best validation accuracy achieved during cross-validation: %f' % best_val)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["lr 1.000000e-06 reg 5.000000e+03 train accuracy: 0.374163 val accuracy: 0.385000\n","best validation accuracy achieved during cross-validation: 0.385000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"test","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611324558556,"user_tz":-60,"elapsed":753,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"21694e4c-d67c-4091-886c-b4d2983018bb"},"source":["# evaluate on test set\n","# Evaluate the best softmax on test set\n","y_test_pred = best_softmax.predict(X_test)\n","test_accuracy = np.mean(y_test == y_test_pred)\n","print('softmax on raw pixels final test set accuracy: %f' % (test_accuracy, ))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["softmax on raw pixels final test set accuracy: 0.373000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"ipzFgSK-ECJZ"},"source":["**Inline Question 2** - *True or False*\n","\n","Suppose the overall training loss is defined as the sum of the per-datapoint loss over all training examples. It is possible to add a new datapoint to a training set that would leave the SVM loss unchanged, but this is not the case with the Softmax classifier loss.\n","\n","$\\color{blue}{\\textit Your Answer:}$ No, it is not possible to add a new datapoint to a training set that would leave the “new” SVM loss unchanged.\n","\n","$\\color{blue}{\\textit Your Explanation:}$ The new loss formula, as defined in the question, will be:\n","\n","$\\sum_{i=0}^{N}-log(\\frac{e^{y_{i, correct}}}{\\sum_{j=0}^{C}e^{y_{i, j}}})$ , with *N: Size of the training set* and *C: Number of classes*.\n","\n","To leave the SVM loss unchanged, the new datapoint must have a null loss, therefore, the inner value of the log function have to be equals to 1 (so, **log(1) = 0**). And the latter is not possible to achieve, because the fraction (inside the log function) result value is bounded by 0 and 1 (strictly, in both sides)."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":380},"id":"0Cave-V9ECJZ","executionInfo":{"status":"ok","timestamp":1611324709723,"user_tz":-60,"elapsed":1447,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b3c3760a-221b-47e4-d554-eb7b2487a408"},"source":["# Visualize the learned weights for each class\n","w = best_softmax.W[:-1,:] # strip out the bias\n","w = w.reshape(32, 32, 3, 10)\n","\n","w_min, w_max = np.min(w), np.max(w)\n","\n","classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n","for i in range(10):\n"," plt.subplot(2, 5, i + 1)\n"," \n"," # Rescale the weights to be between 0 and 255\n"," wimg = 255.0 * (w[:, :, :, i].squeeze() - w_min) / (w_max - w_min)\n"," plt.imshow(wimg.astype('uint8'))\n"," plt.axis('off')\n"," plt.title(classes[i])"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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QgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcIIYQQo0cTHiGEEEKMHk14hBBCCDF6NOERQgghxOjRhEcI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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"UXKOoMXKECJa"},"source":["---\n","# IMPORTANT\n","\n","This is the end of this question. Please do the following:\n","\n","1. Click `File -> Save` to make sure the latest checkpoint of this notebook is saved to your Drive.\n","2. Execute the cell below to download the modified `.py` files back to your drive."]},{"cell_type":"code","metadata":{"id":"LPLFhnQoECJa"},"source":["import os\n","\n","FOLDER_TO_SAVE = os.path.join('drive/My Drive/', FOLDERNAME)\n","FILES_TO_SAVE = ['cs231n/classifiers/softmax.py']\n","\n","for files in FILES_TO_SAVE:\n"," with open(os.path.join(FOLDER_TO_SAVE, '/'.join(files.split('/')[1:])), 'w') as f:\n"," f.write(''.join(open(files).readlines()))"],"execution_count":null,"outputs":[]}]} ================================================ FILE: cs231n/assignment1/svm.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"svm.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"dB0DTFEcrApK","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611250993482,"user_tz":-60,"elapsed":28284,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"92264e1c-4a25-40c4-bbf0-e13e45e8cbe5"},"source":["from google.colab import drive\n","\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# 'cs231n' folder containing the '.py', 'classifiers' and 'datasets'\n","# folders.\n","# e.g. 'cs231n/assignments/assignment1/cs231n/'\n","FOLDERNAME = 'cs231n/assignments/assignment1/cs231n/'\n","\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","%cd drive/My\\ Drive\n","%cp -r $FOLDERNAME ../../\n","%cd ../../\n","%cd cs231n/datasets/\n","!bash get_datasets.sh\n","%cd ../../"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive\n","/content\n","/content/cs231n/datasets\n","--2021-01-21 17:43:05-- http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n","Resolving www.cs.toronto.edu (www.cs.toronto.edu)... 128.100.3.30\n","Connecting to www.cs.toronto.edu (www.cs.toronto.edu)|128.100.3.30|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 170498071 (163M) [application/x-gzip]\n","Saving to: ‘cifar-10-python.tar.gz’\n","\n","cifar-10-python.tar 100%[===================>] 162.60M 44.9MB/s in 4.1s \n","\n","2021-01-21 17:43:10 (40.1 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]\n","\n","cifar-10-batches-py/\n","cifar-10-batches-py/data_batch_4\n","cifar-10-batches-py/readme.html\n","cifar-10-batches-py/test_batch\n","cifar-10-batches-py/data_batch_3\n","cifar-10-batches-py/batches.meta\n","cifar-10-batches-py/data_batch_2\n","cifar-10-batches-py/data_batch_5\n","cifar-10-batches-py/data_batch_1\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"pAWqq9RerApR"},"source":["# Multiclass Support Vector Machine exercise\n","\n","*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n","\n","In this exercise you will:\n"," \n","- implement a fully-vectorized **loss function** for the SVM\n","- implement the fully-vectorized expression for its **analytic gradient**\n","- **check your implementation** using numerical gradient\n","- use a validation set to **tune the learning rate and regularization** strength\n","- **optimize** the loss function with **SGD**\n","- **visualize** the final learned weights\n"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"yfPnLbOxrApS"},"source":["# Run some setup code for this notebook.\n","import random\n","import numpy as np\n","from cs231n.data_utils import load_CIFAR10\n","import matplotlib.pyplot as plt\n","\n","# This is a bit of magic to make matplotlib figures appear inline in the\n","# notebook rather than in a new window.\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# Some more magic so that the notebook will reload external python modules;\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"vLpK5dGwrApT"},"source":["## CIFAR-10 Data Loading and Preprocessing"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"pFVXUMuOrApT","executionInfo":{"status":"ok","timestamp":1611251005220,"user_tz":-60,"elapsed":1958,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"eae89f84-e166-484d-dde7-bcf25b900a7e"},"source":["# Load the raw CIFAR-10 data.\n","cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n","\n","# Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n","try:\n"," del X_train, y_train\n"," del X_test, y_test\n"," print('Clear previously loaded data.')\n","except:\n"," pass\n","\n","X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n","\n","# As a sanity check, we print out the size of the training and test data.\n","print('Training data shape: ', X_train.shape)\n","print('Training labels shape: ', y_train.shape)\n","print('Test data shape: ', X_test.shape)\n","print('Test labels shape: ', y_test.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Training data shape: (50000, 32, 32, 3)\n","Training labels shape: (50000,)\n","Test data shape: (10000, 32, 32, 3)\n","Test labels shape: (10000,)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/","height":475},"id":"AXddpg_irApT","executionInfo":{"status":"ok","timestamp":1611251014588,"user_tz":-60,"elapsed":3363,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"98cf13d1-f7b2-4aa0-bac8-ddd1a66cf19a"},"source":["# Visualize some examples from the dataset.\n","# We show a few examples of training images from each class.\n","classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n","num_classes = len(classes)\n","samples_per_class = 7\n","for y, cls in enumerate(classes):\n"," idxs = np.flatnonzero(y_train == y)\n"," idxs = np.random.choice(idxs, samples_per_class, replace=False)\n"," for i, idx in enumerate(idxs):\n"," plt_idx = i * num_classes + y + 1\n"," plt.subplot(samples_per_class, num_classes, plt_idx)\n"," plt.imshow(X_train[idx].astype('uint8'))\n"," plt.axis('off')\n"," if i == 0:\n"," plt.title(cls)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAjwAAAHLCAYAAADMcEKmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9ebTk53nX+Xl/a+13X3vfpdZiybLsyPGS2E5MCE6cQGAgxiQsBzJhwnKYQALMyUBmWIYkAwkETmDgBMgyJGEJyzg2jm3kJY6txbKkVqulvr3f/d66tf2qfss7fzxP/apuu9V9W2qrZaW+5/TpulW/5X3e5Xmf/TXWWkYYYYQRRhhhhBHezHDudgNGGGGEEUYYYYQRvt4YCTwjjDDCCCOMMMKbHiOBZ4QRRhhhhBFGeNNjJPCMMMIII4wwwghveowEnhFGGGGEEUYY4U2PkcAzwggjjDDCCCO86fF1EXiMMd9ijLn89Xj2CK8PjDFLxpgP3OD7dxtjXrgTzxrh9YMx5l8ZY37ybrfj9cCbjVZjzCljzFPGmIYx5kfudnteC0a8YABjzE8YY/7NTX5/1hjzLa9jk94wMMZYY8zxO/3ckYVnhNuCtfZ/WGtP3e123G2MGPcIryN+FPhta23VWvuP7nZjRnh9YK29z1r7qbvdjlfCNyIPHAk8dxnGGO9ut+FO4c1Eywi3xmi8XzccAp690Q/GGPd1bstdx2jevfHxRh2j1yTwqIT3Y8aY54wxW8aYf2mMKdzgur9mjHlJTbLPGWO+Z+i3HzDGPG6M+Qf6jPPGmO8Y+n3MGPMvjDHXjDFXjDE/+UZa5MaYA8aY3zDGrBljNowxP2eMOWaM+aT+vW6M+bfGmPGhe5aMMX/VGPMVoPVGnRzAo9eP7fXuyhvRYoz548aYC0r/X7+L7d8TbncMjTH/GjgI/KYxpmmM+dG7S8HXwhjzsDHmCV1zvwoUhn77A+oi2TbGfM4Y8+DQb4vGmF/Xvjg/7EJRE/yvGWP+jTFmB/iB15WoV8AtaP0zxphzxphNY8x/MsYsDv327caYF4wxdWPMPzHGfNoY86fvChGvAGPMJ4FvBX5O59ovGWN+3hjzX40xLeBbjTH3GmM+peP5rDHmu4bunzLG/KYxZscY87vKPx+/awQJHjLGfEX7/Vf7e8YtxsoaY37YGPMi8KIR/IwxZlVpe8YYc79eG+p+ctEYs2KM+afGmOJdorXf/r+q+1dD59z79afAGPOL+v2zxpi3Dd2TW1CG1t6v6rVPGGPecleI4cY8UMfoTxljLgKfvH6v0PuGaXKNMT9uBrLBl40xB27wrncZYy6ZO+Hes9a+6n/AEvBV4AAwCXwW+EngW4DLQ9d9H7CICFh/BGgBC/rbDwAx8GcAF/gh4Cpg9Pd/D/wzoAzMAl8E/uxrafed+qftfRr4GW1fAXgXcBz4NiAEZoDPAP/3df32lPZb8W7T8RrHdhctwGmgCbxH6f9pIAE+cLdp+jqM4RuVpgC4APwlwAf+kK6xnwQeBlaBdyjtf0JpCXV9fhn43/QZR4GXgQ/qc39Cn/Nhvfauz91b0Po+YB14q9L3s8Bn9L5pYAf4XsAD/oLe96fvNk03oPFT/XYB/wqoA9+sY1AFzgE/rn3xPqABnNLrf0X/lXRtXgIev4u0LCE8fFH5yvPAn7vZWOl9Fvi43lMEPqhzdRwwwL0M9pSfAf6TXlsFfhP4O3eR5lPa74v692HgmK6nCPj9uhb/DvCF6/rqA/q5v/b+kM7zvwKcB/y7PJb99h3WMfpFhI8WuW6vuME9/yvwjPaPAd4CTA2N93Hg92nfvf2OtPkOEPznhv7+/cBLNyL0uvueAr5bP/8AcG7ot5ISOw/MAV2GGCvwRxF/9l0Z5OvoeAxYA7xbXPdh4Mnr+u1P3u3234mxvZ4WZLP8laG/y0CPN65w8FrG8I1K03sYUhr0u88hQsDPA3/7uutfAN6LCEEXr/vtx4B/qZ9/gqFN6I3w7xa0/gvg7w99X0E2jcPAR4HPD/1mlLF+Iwg8vzj027uBZcAZ+u6XdaxcpffU0G8/yd0XeD4y9PffB/7pzcZK/7bA+4Z+fx9wFvim62g3iEJ9bOi7x4Dzd5Hm44iS8QGGBBQdo08M/X0a6FzXV8MCz7Aw5ADXgHff5bG8XuA5OvT7t3BzgecFVA64wbOt8p4LwP13qs13wpVyaejzBURy3wVjzEeBv6ydAjKZp4cuWe5/sNa2jTH9ayYRafaafgcy0MPvvJs4AFyw1ibDXxpj5oB/iDCjKtLmrevufaPQcDPccmxvcN3i8N/W2pYxZuPr0LY7hdcyhm9ULAJXrHIOxQX9/xDwJ4wx/8vQb4HekwKLxpjtod9c4H8M/f1Gm7c3o3UReKL/pbW2qXNxH187T+315vc3ML5mvVlrs6HvLiA0ziDWq0uvcO/dwvLQ5zZCwxSvPFZL+vXweH3SGPNzwD8GDhljfgOxehQQpfnLQ3uGQebxXYG19pwx5i8iQst9xpiPIfshfG1fFIwx3vX8SDFMf6bz9ZV48t3C7cyvA4gS/Ur4i4hw/9XX1qQB7kTQ8rDP7SCibeUwxhwCfgH484i5ahxxlRhujUuIhWfaWjuu/2rW2vvuQLvvBC4BB83XxuD8n4iE+oC1tgZ8hK+l9xvhmPqbju0Qhmm5NnyfMaaEMLM3Kl7tGL6Rx+8asM8McXxk/EDo/T+G1tO4tbZkrf1l/e38db9VrbW/f+g5bzS6b0brVUTAA8AYU0bm4hW9b//Qb2b47zc4hsfgKnDAGDPMyw8iNK4h7uRhur4mRuINgpuNVR+75p619h9Zax9BLCMnERfJOtAB7huaw2PW2srXm4CbwVr7S9badyE0WuDvvYrHDPNVBxnXV+LJrwduxAuGv2shwieQB9jPDP1+CXHtvRK+D/iwMeYvvJZGDuNOCDw/bIzZb4yZBP468KvX/V5GOmENwBjzg8D9e3mwtfYa8FvATxljasYYx0gw6XvvQLvvBL6IMM6/a4wpGwnq/WbEItAE6saYfchC/EbErcb2Rvg14A9ooFkA/C3e2NmAr3YMV5AYlzciPo9sdD9ijPGNMd8LvF1/+wXgzxlj3qGBn2VjzHcaY6pIXzQ0wLKoQYX3G2MevUt07AU3o/WXgR80xjxkjAkRIfZ3rLVLwH8BHjDGfFiF3R9G3OjfaPgdxDLwo0r/twAfQtzKKfAbwE8YY0rGmHsQV94bETcbq6+BMeZRncM+srFGQKaWrl8AfsYYM6vX7jPGfPB1oeLGbT1ljHmf0hUhAll2i9tuhEeMMd+r8/UvIsaAL9zBpt4ubsUDzyIWq+/UcfobSHxWH/8c+NvGmBPKix40xgwrx1eB9wN/wRjzQ3eiwXdiI/olRCh5GTFP7Sr4Za19DvgphDGtAA8gAbB7xUcRk/tziEvh14CF19zqOwBlKB9CfLQXgctIUPb/jgTf1RHG+ht3q42vETcd2xvBWvsssnn8EiJIbCH98obEaxjDvwP8DSOZMX/l9WvxrWGt7SHBuD8AbCL0/Ib+9iUkQeDnkLE5p9f1++IPAA8hAZHrCFMaez3bfzu4Ba2fAP4m8OvIXDwG/E/62zqiQf59YAOxEnwJ2US+YaD0fwj4DmS8/gnwUWvtGb3kzyPjtwz8a0SweMPReLOxegXUEMFmC3HhbQD/l/72V5F5/QUj2YSfQAJj7xZC4O8i47OMJN/82Kt4zn9E5vcW8MeB77XWxneqka8COQ9Egql3wVpbB/5nhIdcQQTT4b3gp4H/F9ljdpA4ruJ1z7iICD1/zdyBDMp+JtSru9mYJSSY7hOvtSEjjDDCCHcL6iK4DHy/tfa373Z7vl4wxvw9YN5a+yfudltG2DuMMT8BHLfWfuRut+UbGW9kV8MII4wwwtcNxpgPGmPG1dXw40iM1t10EdxxGGPuUVeBMca8HfhTSKmPEUb4PYc3asG7EUYYYYSvNx5DXK99l/mHrbWdu9ukO44q4sZaREIKfgpxjYwwwu85vCaX1ggjjDDCCCOMMMI3AkYurRFGGGGEEUYY4U2PkcAzwggjjDDCCCO86XHTGJ5//h9+1z5zrglAKQjJbApA5hicfn0hO6jGZuzeqgm+Evq1w4wxDDxtlv5Td5UWM4A1gz+M3NCLuzz64D4Avu/9J2/ZnP37D1op4wHjlRJJLwIgNdDrSKkEN/DwC3Ie4TsfmeKPvkv6JO5OMlWbA+DS+XWClecBeCnq8MJlKex5ZSvg0SPy/K9uH+KbHzkJwKnZLokjBYhb1y7x/GoAwNX1Hms9qZH12Ld/iPHyBACf+dTHefJ3viTtyaDZ6wFwfnXnljR+5Ae/1TrOkGyrfeU4u/t8d+02HQCT5d9nsUOGL/e6ZSYmpWzJvoV9hKGUV3Bdl3a7DUAYhqytrUo/XL1Eq9XQZ/cwRvrEYPN3GcfsksD77tZf/Bf//aY0dq5+0mZ5dqaTPy/LLDbL9FkZtk9TlmF1LtvMYl9pfiky26W9JTRde3mbzfW6/JC08dNNAKrVGvvf9k4AiqWALLPai5ZM25ClWf59lmXEifTB0bd/5JZj+Jf/5g/ZTlMKICdxG2tlfgVhgUyzjNvtev583yvn4xZ1O/R0XmMzenGc94nruNprDo7Tb1uPfn+GoYvvC5uoVCpMTU0pXVAsyZjHcZeLF6T+2dT0DF5J+qrgLjJeuAeAv/QjP3ZLGk+dusf2ekKL4zgEgayJickJimVZf71eL59fSZIMBs1ApyPhN0EQUizK9Z7n75qb/XHv9jo4joyLH/j0Mp0P1uA4fbbo5J99PAL9utvbISjIH4sLBzh3bgmAT3/8c7ek8bHjx+xLV6W47k43xtF6gcOhBbIK+nRleF7/GmmfYHcoQn99O45Dps+yxpBpAWbHgTD0834oBGW5JoNe0tX3Zviu0OUZh0z71toUV9/38rVrN6XxO77/HXZsrCrPcx3arX4GvE+no+8xEOqcCjyfXiS8zHcLPPKwnJ3phoaNrQ1tu0+1Imcvr61t4fsynhub1+h0t/Qak8/9RqOB73naSxaM0N2NYuKurLmo3aHblXkU+ODJVOPTv/ncLcfwM09dtP0NyvW8vG8Cz8P1XKXR5EOUxhmxrjljDGkqn4MACkUZB5wATL/vE4yW6XE9N58baZLiuPJ8z3WHeJTB03ELPRejc9x3HTJlqFmWEUXS//vmqrek8R3f/qA9eXpa39ujWpXnz0xOYZDnX7ywxhe+eBEA6/ocOSXXT89U2NmWvi1VyswvyNhVfPI9e2K8gKN0ecbn7CXhbVHiUl+WfeL8uUuUizKXTjwyj9ExXVvfIUukfwoVF5Tec8+vcOCwvOs//uPP3pDGkYVnhBFGGGGEEUZ40+OmFp4sy3Lp0tqM/nEt1pqBtjxQ0Ad/wx5NPWb3p11Hn9zooTf+ytq+pUD+uJ1A7Pn5IoERKXtrc4t6SzThYsknUs25TJGdxjUAllZbfHlpEoC2f4L7d+SYjzHvGtm4XD8ZQ7gibTg+n/DwvHTzi802zphYny53DH4kUvDVDYeenpzS6sDFVdEAy08+z8aqWEiefeYruXTqu4ayP1yw8tbYpUGaVxqkIYuZahiOcYljaZzvVJiflerm1do8R4+d1vY4rKolp1qpsjAvFqo4Tjh5/MH8nY9/9jMAnD37VTCq+ZlM/gHYLLci7rY23RymbSkc0fdk6YAMa/Nnq41Kf8iGppo7NJUc+kfuWGswavGIGptceV7avrGySaRWrnbXJW5Ie6vdLofHpEr65IEDYn3oQ/s+GxoDay022/s8Xdx3DxtrYkXZWFsmVq087qT0T8Xw/Ckct6/ph3iOzOtKDdbWlwDotDbo29FcN8jngmN7BKqd9mJDGksPtbrxYHww+KFaQ8cnRcsEkp5DTy2Oq8trFLSY/L55iHrre6axWAxIlC7HNfSNkhkpMaIVR0mEG6pVKnBy61maJJi8nSn9sQ5Dl2Kxb4lK6Z/AUCwW8DyhMbUJofab5/g4VsY3iyHpSv90Ol2aiazX6rhPSa1PpD0qpdtYi75HLx/3gb45PN+NMfRPxjLG4Go/O45Lmqq1cIg3A3iq/RpjsDr3HJPi5Gs9oxiE+hwHV+d2nA14g+s6eTtSm5HpynCweRtuhcB3SVKZCxaHxKT5Z8I+jYnaCKBUGWO8KnUts16Pl14Qfjo1u0ilJt/Pzc3ywP1ymtBTTz/FmTPPAVDfvkqCvitz8Vyh7/ChI1RrUr/u8uUL1BsteWsa55aWJI0pleQax6Z0lRfvBW7cJUnVUtRKSdUqabM0f34UdYl7YnHsthtEkewrSZKQJXLNZKXE4eP3yueFA+BJ+xPHYhy1rmUDS1EvS4nVUjtskTc4+H0rlu/g6ZgbbM7xrB1YlCVx7+YoFFLSnvRbp2kpBDJXL169TFnnfnWygBtIGzbXdnjuS+L5CIKQA0fF0uJQ5KUXVwA4fWpS5gGw04wIld9MjtWYnXP1+yZE8vy3vvMkriczZbORUCoJXRsrHfYfFBrGJ4tsr8jYjZdK2OTmNTVvKvAYY3YJIYMOHtqMhj/agYV5L6zcGMMuV8v1777pzXbgdTFm4I74GtfMzVGrdeh2RICZOzBJsSedd3GpycSEtK1azqglsnl4vs9zmzI4tdISK2Oyuc+NjWGr4n6qxh7RM+cB+OLZAl+9JIPmlFrYDanR2Ks9xnosG+QXzi1z5rKYBvEMWX9RZhZ04peKHrWyDPJ2vU6UvpYCm31Ttf0aRtv/3WYyNXrdlHJJ3BgH95/ixAk5FaRSm2F9YweAbqfL4oIcgzMxMcH0tJg219c2KKgr8N7Tp9i37zAAH//4f+G5574MQLO5DTn7S/PP17ftZnjxc19i1pEz9KYPn6S/2bm75pYlHXJvMSSwD3lFyPqujSwlS+SHs089yZkXpEBobIr0tLlZYjBqonXCIoWazCO8Io667EQAV+Fx6LMBsrRP960RJXUyZe7GzUDvTbIkd9t5eISeSBuOG+Zu4STLKJVknhob5czd8zyKhZpc5DSIY2FYjslw+8JDzyHRfpibm+XYKTmWyXEc0lhMz6tra8zOy+axtRmxviy0z00GONneK+j7oYsXqWiaJRh1JyVpj6In8ygo+LnrIkkTwoIwR5u4TE6O5W3rbzylcoG4p5tQu0dBr3dcNxcSXFzSLO531kCYyVxqU9I/vczy8sVz8q7UUgilPVmaEAZ7P5ey3mzRTfsbj3OdIjJYl8NrNE37SsBAIBlmsI7j4AzdWwiFrvFaickp4Unz8zOcOCH8Zn1jk9/6+KelT2KD099c7UCAdIzJeQ/WEgb+nug7cHSuHyHA6vImcbMfItAjjuXZlVKZUIWvUljGN9J/lfHp3O2yvr5J2tXNcblJe02e07Ntrq3I+ZRzC9NMTghvara6bG3L/N1pttluCW9yiwELE7ImGjsNGjuyide3eyTpQFBJ3b3P02c+//huAUbHM0uTfG7KcMic8t0kFxiN47C9LkrAamOH9UsvA3D41H3sO3ocgHBihkQHuNftDYTNIcVyfHycQqGoX3vE+t44yTCZKqieR19ryGx2W4aAqZkyq6sisFWKIdtb0m+Ol7Gle0+atRmbkr5tNVP67mg36rFyVdz+je0OqPv91JFZgn4dZcfiuLou04itTeFJvSTD1fUXJzHlcVnTdquehx7sPzCBX5D5aLKQdkNcn6VqRrV2c+Vj5NIaYYQRRhhhhBHe9LitwoOvpWLPjbT11xLgbHe50l59y1a36wTZLABhwaNWE82tUOxQLKlW43RwS9LajXqEcUQyrR6a4PKWBO6WwgO89bS4ezbOfYHDhySY9exqj+2uPOfw/ililWrf+tZHcMePABD7htX/9O8A2G7FtNsioac2o1IVq87s5BQXLotbzRpIb4Nka23ugnSMc/2P8r8xufUBXGwmUvnB/Sd4+CE5i7HZiCiVRONN05RKRaxeM1Mz7NsnrrpCoUChIFJ2pVyj3RYt4fKlq6ysrAFQLtcohkJXt9ulp6ZTnN2Bw3vVSJaWd1j9mPTf/e97P2PzovW1Wo0h7Suj7yfIspRMtaAss/n3aS+i2xbtK8l6rK7JNS88f4koln4zJHhqsvecBKy6QjzorD4j7d5282dam+YWmCwbClq2We722v/wH7sljTbr5QGamW3ieOqGwOaWol7cxXNlTI4cuoc0k3Yur1yiVtN5GpTZ3hFrYpp1cVy1GtksNzenGQSuzv2SpW+kOXRkgZpaNJ999ilqahw6fGSBpgakz0wVuXJR+rDVbGKLwS1p62N2fhqrLpBmq0VZ3RJYQ1SXOeIFHqFqd44fUqkKvXHUzgOVrbVsb8m8K5YMkxrwOnVggUJJNMYLVy5zdUUO4o7TLon6lIMgoJmJdvrut72DB05I0PUTZ55h6cpLALTbXdJUJmq32yMs7t2ldXllY8hdxVDixZC7E5snFhhjsLrYY3r0Xa5kJg8yn6gWKZeE9lq1zKRqxfOzUxw4JDxpbHyMCbWApfFBzjwtbqEXL2/kFnubZdi+tccYXP3eNQ6O2ZsVa6O5henJfUmaEPgy/t0koxrI3Ek2U3ZSGc9jCycoaEC6H3i4RZmPO+0m7bbMqZeevcCnfkssUvuPz1Ge1znlGxydC4tT01TG1cJT3+HqNbECpa0u2bg83wlgfFra4ISwvSXjbK1Hsbz3edqpr+Su0cB1cIsaSOwXcqthmmYkidAyOz+dB84vLV1g6dIF+b5YJOpIm69eOkerI+3Zd+oBYuUrvu8xPSUW843tLZJY5nUYTOKpVcqYLOfrgefjqou7sbMjRHN7FnOAStGnUpF7/dDlyiUZi9pYCGoF932HtzwkfGVzJSLuyPehH3J4v/Dg2Ha5elnuffHFFWamZSympqvU5mXset02Lz0r7voks8zOidXo/MurlKsa8DxZoqnhA4cOzrJ8TT6fPXeNOJZ+K5Q96luvwaV1p2DMdRkwg1/yTe12BkOQB8oj7rZX17Zux2O8JhOn1UhZvyoTqlyaIAj6mUQQNZW5TJXwfXlZs7NOZVw2+mblIZYLYu5veDucXROmX/LaBBWZjIUg4LllYTrHEsv+MY2xKFdZVObeSxO6sk6YqpQ588ILAGx12iROP8YiziP99wKbZXnchnEdBiE8dhebzc3oqWW/up/e/c5vA41pmBwLKalbrR1FFHSDmZ6aoqcm3sZOnVJZMw+Mi6PZAzs7TZ57TrLYWq0GnrpeSsVxur3+JE2H3KV7j8Xa7LnUr4mAaT71MU48KptUEAR5lkrS7bKxJqbPKIpI+n53yDOPjG2zviyMcmO7y6UrMhCRLRKUZOH5ZATKRBwDmbpdatOzFFQA9Bwnd8dgTG6KhSEhztq8bXtBKaziGOnv1Lbye10nJehHKBmPWkUZblIHR66fmdlHosJP7IdYR5hFu72GTWW+J3GU77meF5CqoOi4Js8SunZpmZfPirC0ubVFc0L6oVZzc/dAmrYxTt8F45LdhmReLIdMTMn6qI5X8hihZr2F6bsKsgyv76p0ILPSzrHxSu6B6fZ6hJpFFYQuRRXeZmemOXRY5saLL11k5ZrMB9c1+I7Mx147zWOWSqVxaiostdsterHM8UqlQE2lPUtMN977WZy9dDDHDeSxGsO8UJ6bkzj4LrN5lpkLTE7IWlxYGOPwQeFD9917iqK6OkwKYxM6b8OQrO+K6LSZVN4TrG1idXO1aZrzYc/z8uwXxzi52+tWaDTjPMMoNRk9fQYmwNWUoW4ror4jm+Da1TpHT+kB2Salp4JQoRBSyDT2Kmqzek03RLfFkYq4r22YEKnruLCzRVH9JSfvOcrJkyLonT//Iut14cXNdiePR4yiXt7JWZrd1k7oFUy+PqpjY5R1HCampygW1c3kuoQFEa5qY1N5v84fOcEjj70LgJlymWJJ5p3rO4M1XaqR6cgHvo+vLh7XTZmdExdlmmbYvtJmM4yvsXuuk7s0o8ih3pD1XQgLQzE8t0Y3iggmZP0tvdzKY/221rpMTAhdlUqJLNas0MBF5W+azTa1qpzvHZQnSCKZAzvrm5Q8FWCqPu22KlhRShBq1vGzW4yVDwNQDiug6/7SpRVCX/hZazujWJE1XRs3XH2pH+QEtf03H8iRS2uEEUYYYYQRRnjT4xZBy+R+J2sspp9tghnyhDhDOvlwBHM6pL0MPccOW3uGrDTmek1wOPirf++QWS5zMH0zq70+q2vvGKvGFAoi900EJWpl0Qwi67G6JYHHExMZQaAZO1GHokru3biba4NpFlPUmgFXO5D5oqkGlQSjZt3t9Tq1OdFaNpsR0Rc/D8C5F55jtS1ScCWsEoXSniRJqVTlXS+e2yYMRBuI4x7ubciqbkbekU5mBiZs7C6Rtx9DG/pl7jv9FkDMtF2tR1SdHM8zIerbLeKuBAbW1za4dFncA2OT40zPiouwOjZBW2tsjNVqPPbN7wag1Wzwucf/BwDLK1fx22LWTbKEQYNS9ur07PQsiWYV7bx4gagnJs79xw5S74hWvrx0jgtnXwQg6nTyoFbHc5iZkVpKhaKXu5k6cUijrdlPlWJe9yYslHCt0JR2Onlg577T38T4QXH9ZdkgcwqG5/Crd+KOjR/EOOP6/AyrJuwrF18g2hFXJ56D74vlIUkS+ol8pVIV4/VrkTQpleWadnuG+qZkUDR7y/TUNByEHkV1XcbdjDCUebe+3sGqtc8xE9Q10NDaiHYkmYWNZp1yQQLYbZiQ2r1bP6JuhyCUtRIMWfjKlSKBzruwGJBqjaBu1sOqhSdNHCId016vRxgO6vC0IplfF5bPE6nFaWd7E0/78MHT93PtslgIN7a3KZaF3t/6xKdobEiftNrtPLA5LFSGMtcyPH/va9FcNwdeycJ9o79MBqG+68iRfbztbQ8AMDlVY2FO5vB4rZZbuhwshaLQEhaLbK5r3a9mg/Fx+X5xcYLVNbG2JNH1AdTqrvVdsj0G9WZtwNdrHYuvmTjdnR64MrZeYKnvCO+4cnGNY0clA8tzwFPLq4lb9N1349UZsngJgM2VOpMLmmVUyIjUQhmEJcloAlrdHYoanN5KmkRqgbPW5kkyWTaoy+X7Hkm8d+vHL//qv32hK7gAACAASURBVOP7vu+PAPDBD30PTqFfE8vbVdfMcfoZn4P5Mb9vLq+ZQ5Lm7miLxXX717kM6jCRhx0c2r+YM5MsG7jE4yTNA5td16GjYQQmS3H79cCSlLi797VoMoenf1f4StRMOXhQ9rNiyaOkoR5jtRLW79fNsrm1tTReItW+Xdtssv+wuL0KgZO75MoVl86OJltYn5MnhWdcvRJTqQrvefjRg5y/LHO2uFxge1tc+sbtkakV8eCxCVJNtlhdqXPm+eimdN3c/mMs1vQLqA0nLQ+kFjPEmAwm920a4w8t7kFqnWMYckUNiUh2t1vKaraOYXCDtXaXy2NXBll+51DRrj2gu1NlfJ908Oz0PkJf3ntl5SqNVt+FlNHtCLOrOEXabdnwnMAlXlBXQdLD82UihJ5LVd0baatDU4sk2ayAo2mlY+UaXiift9e2aLa1GJWbUCvJsLR7ER3NWii4Ad2ObDC+5+bZKXuFyRMUk8FYWAejKdZJbOlbPA8t7mdhXkzkjnGx+qo46bK5KQWizp07x+qqmJkvnF+ip5kwxUqZU6cl1XKr3qSg2UHz8/McPXoUgFKxyIkTp/T7BbZ35F1ffuLTpMp4jLN3l5ZbLGE1fbHVzrh8STKqys4am5oRce3iFTpb0va4G9FuybgFlSpbsTDf2tgEro5hLy7iOJJ15fgeTr+QmXEHBTiTNo5mr1SnJukHu9gkxvZTVYbKJFibYfMCd4PvC2r+vRnKYQ23Ipt4uVyhp/eur16jUZfYqEpphmJxBoBOe5P1DWEWE1OLTM1IHzfShExdCwsLJ5nSOLL65iab2xJbsL1zlTQR03y1WsnjhdI0zl0bXmzI+qUUGm2arT6DngK0LEGWkiV7T/f1PCePdUjSJGfc4+M1Uo2x8QMHV9mWweZp+BabbzCO4+DrOGaZJLUDtHt1vvhlUTLqOy38vtC4dJFYN/taucD4rLgNzp55jv/8MRHkp/eNMTU1nrezX7TO982Q8HP7sMO8bZgB3sBHXwh9ThwXhey973k7+/bJvOl0E2wmizSNffp64PhUkdqY0LJdb1JS91xtPGL/omxCseuwuSEbRuoM3Go2y/LYM0IPL9ybz8eS5vy61WySalq/jV0KOrbF6QLu1X4MVAdHswAvL13m8lVxmT741gf47g99t7R9rc7Puz8PwIUrS9x34h3yzDBipytzn9QQq0C6vrJKoEpjFLXw1SVrbEpPN30ndxqJK6+f7r8X9KIex09IAdnlja2hwo1p3n/ZkPvR5lmo5L8BOMbbVTDSVUHI97y8cGIQBINswqHMwkKhkAs5aS+ip4JTpVyhVlaXpoWoJUJC1G6RZnvPCnU9sOquSuJBpmBqDC+clT5/4D6PuQMiOB8+OEtd08PDopdn5I1Vx5iYF2HJzSw1LdRbLRmuXBC+WyymFIpC1zveeYjCmPC58emAR2cPA9Bp93j6BVGqznz1CpVMaGxuR8wckOeff2GLYvXm2YQjl9YII4wwwggjjPCmx81dWrv+GKp7g8XtW36yZFC8zNiBZyorkGcUDMEyUF6ybEirMcNvtAMFx2b51w5GAswAnBSnX3I9HTIB3iZKpRKOI9r+kcUpxquiKYXFgHBcNNXPffFxxkLRnOfmJ9lcF014ZbnN+75ZLBVvf/RRPG3D2MwEblEkzUq1Qlkl8ULoUdRiWmHgUCrL8/edPMp5ra8wMz7G1rp8NnZgDctwMH0N1mTMhLdp4XH6lroYpx/AbE2u2XpBhdP3SY2dtzz4cF56vlAocGFLawQZeOllof35M89zfklcRI2tHaampX+W11bZUNNjp5vQ6YrWdfz4cba25PuVa9cY02Jj3/md38H0jBzJcPHii1y9LJkwrhkcA3BL+F7u7mtupCSZWAaiyHL8qAQ4zo971Hc022FlhZ1NzTqYmckL05UmJqlrhlyyLZkqAMakuesqw2KtLJs4ySgW1aWy9TyNRPopS67T6PoWoSzL6/xkWUaqlr/Fh26dpbW8skSrpQHGacSO1hPpdNq4GnDbajdpNcUF02lu0myJ5r527Qpj41JDJiUm7sl7V8IqkxPifnTDEn6oaVfJJh19Vzmo5e4Hx43zukpZ6hL3pB+a7R6eutJcN8RV95Nx/Bu4ql8ZjeYOqe0Hsxdz640xZmCxSRP10Ypr0qiGXJmcyjPjsGnuSknjZNAGJ6Pb1SwX3+fk4eN6TS+3Jp287x7e/f73AvBzP/sPOXdGAu3jpECo6yYsFPL1FCcxsWbt7RU3slzuKiRnTF4PBwOhBq1OTVY5dFAsM9NT42RJP9MwplRWF3ro54Xtok6MtTIHoiglUYuWX6pSVlfX4tQUkzXhN5dbgyKRUZoOjpnwPVx/b1lahXIxtwb4XpYHPuODLWjWlxdw9KRYe9//2LezMCnWx+ULlziyX2oFffd3/iHe9raHpS3dLmFVNPqvPP0ctaqs427UYmVNkgzOXz5PqSjPD8sOoRbE8yoZBJrFmPa4dk3cNM1eC1Kt7dPt4dxgr3olGDIe/6y45Etnn8vpdTK7K7CiX/ZvV90vfYL84OT7nOM4ufXGG/ochmF+xMrw52KxSKUi+4fruvncqVarTE6KZbpSqeUZjWsba4T+3veMXpTlVrJ2K6PTlDleDlw8dSmXCw4F9ZtPT4YcP3kYgIUDVS68JONS6YQcUR7cbjeZnJT2tDYj+uWostgl0qNG9u0v0dE6Yb1ui6ykiQITBR44Ltah+ekxCmrJWb66zJOfF7d8e6dDs3nzPWPvsem7RjIj1AUwPTWD52rmgGOJ1V+aZjaPiMeQm+jiJMmLThnH5EXBrLUkulAdx8VThoUx9DRtqVwp09XPqQ1oRzKhup3kOlL2LvxYmxHF+szM4Gu69Dve9Qgzi+JXvHL1R+hp2u2xmWl62zKYTtEypkLL2MQ0Xc3iGPMmODAlG8m2ddnWTbSXenhWBIPPfvxJSlXZPI4evZ97joqJtLF2gf/+27KYJmvjzM/LZLnv3tM0mzIRvvz4b1Ny9p6lJcxUTafGZZAcVGB6Sp5/+r5HOaJtuHLtCs+ekYJYp04dZ3lVGOHsXECsjNh4Ho2WbLrXlq9x/rwIQhPTk+w/dBCAIM6IN0TImZqaIlJz8sMPP4yrDOZ3vvBljqmZ/tTJB7h6SfrWZr1B9exbIIq6OP3Kza7BVeGk3UtZXpPYjM7GBqluNHFqcbVYXBBAqrEf66tbRJrZ5AUVfJ1H3V6HqKHnZ5VqpP0NzriUVYAtFKt4BT2fyN6AuaExU4N6hwPhfQ9I0ya65xP6RRxN397Zucp2fbN/FanOZdtLBsXosg6rK+LOa3d28PsVd/G4cknSk7tJksc1kWQUA80Iy7okaf9cLZ9EmVEQVvA1zbhkpwYuPGNxVShynUGa7l4QZ5atel3f67BTl/cuNxsc3q9xAKUimcZQjRWr9JUq07Mk6j4rBw5dPVcr6pC7UlrtFmlb+iTu2Dyt+5F3PsTBQyL83HPvabZ3pA2+F2D0kCU3DCiUAm2Di6eZmmnq4mS3l+w6UPLMwG0E+blmZlBvlEqlkKech6FHUTe8WrlCWd1VmQFX3SZbm1vUd4QPOTaiqinfleoUUTzI7PO1dEQtTdmnZRyWN9fJ44V6g/ibguPT2m7tiba06dNoyDi0O22qWjYgy2KySF2LtsO3vucDAHz4Oz7MZz4uVcwdLI+8VWIHH3zwPtJ+/ElmOHFcsuuK4RhLS6JYeKnl3kWp9r5xaZunn5CyEJWxMmM1mZuea6hOyBqdmBzn5LyWApmKiCKhqdVu5lmGe8HO1gbPPCWFUx9852N4ulakREXfRTlQVu1w6AaDwFiDyauvZ5nNM2+7duAWHC7Ou0sQhlwJCIIgd28VCgWqWspkamqG6dl9eq2Dzfa+Z5RLZUpVWQer19okibyr3uwxPS39mcSG5oqsxWtLbVZXRDFK0ih371dqDn/4Qz8MwIGDh1jXOLL6ziVeeE6qan/+s5+lbKRtqysREzPy/HKhTJKIwH5tdRlHefbUvKWgylkaeUxMSv8fOXmaS+fWbkrXyKU1wggjjDDCCCO86fGq6vAYLEXVEPYtzOH7Io2WCh5dPT+k3W1SKvdLX7u5HyuKojy6PAzDXEq11tJSi0Hg+yT901ALBWLVWj1vUJOgG7s8f0asCp1WMz8b5nYxOTFDQTOq8CscPf0IADP7jhD4oiX80J/8S/zKL/0DAM6ef565MdE2T779vdz/4KOAZD48/bxkdfm2xsxbvwuArWee4erTIslax6VZl8Ar37O5Rle6sMKMFgu798S9vPXdElw4Nl7l2D0nADhx6jTNHZF2f3p7lStnnt0zjY7jgrphrHWp1cQkPL94hH0HRLOdnT3ESxfF3PvFLz1BrSZaQmWiQTeRex23wMSEWKj270/Z2hLLwpWly0RR/6TqgEOHDgMwPTtPNxbN88CBA3kWwtTEJGNaUGp9dYv/9v/9Z21pB9cVaT1J4/xk4Fuh1WiS9aQtXtKVE3SRk8S7HbHM1XcixrTM/sSkg1aep1AdI+q7sZptqjNiDo6dEht1DXDM2rhGy533vDz823UDKnNimq/sfytBKPNdNLo8vfG61tpX+HxzRO1NVjRI3OBR1HpIpZKHRQP4mjskajHFzfJAzKTbzTVGx0KiAbeOY3JXTi+yedZjZjN6qv22O+t58ThvfJJKqV8krkummmcQ+HR7ffdKj1j73DoZQenW5/b04TqDM6SSOGVzXQap3WgypkXQ9lenSfTcLmMMJbWqNbYbuXV5YmKMogaTO5nJLXg7Wzs0G/K5Vp1iY1vmzNNffYZjpyRTaGp6mme+Kuv18sUrpIn0W+AFjKnmXKn4+EHf3N/F2FdXzsxxhk4kzwZnFZJljI2VlJbx/EyxsWqZgwfFGup5HjsN7WdjiFqijT/11HO02vKcuFPn4D5Zr/OLB4hTedDczBi+ZntFNiHUM8UqlRC3fxBaN8PNBqm1UXtvFpBGvZ4H6aa9lLZaezzfpadWt/tPneKjf+yjck3LsrYiLom52Sne9Z7HAPBDjyTtn/TukaX9Qnwhs7NikbrWeIkXnxM+WPTjPEB3beMaRXXZea6X874wLFJVy0+pWGBmVvhgJaxSqO59DCuFgK0V4eP15WssHBI3XBSnu9ySA0uOs+v7QWKPu8t6kxv+bMogS9nsCmweDnK/0fftdpt2W/p8dW0dT0MQ9i8uQrz3oOWlpXXq6sZKU4+6JnmY0CPSIO1jhTlOHhfag4tn+MgHvx2AiYOzrGv/nFk6R/GizNPwylkWlPaDYwvMHRIvyExwlHENPvfKFeykeB0qE2W6ep7l8pVLJKnwg8i0aOmZYocPh5w8Ip+bl6/y1NjN6drzKO/KILAOraZM3hfPLeE5/SytlG4/9c0N8PIDLgcbQJqm+cFrjnFyn6QxJv/ec708kt3a+q52BH0ByYFWs5+C5tI3Vl2f9nkr/Nk//6NkWjV1YrJGQZlap9Mh0+6Znj3IH/5jPw5A6FuKar4vjR3AqgvkpQtLuBOygPbNzbLvgBQh3NzYpnJZfORve/tb2HhZFujqC1/BDWXxFQ8dYU4rFV+4eoF2XQb22IkjHNx/QN/rg7pP/uhHf5Dt+taeaTTGwVgZi9npAyweFCGnVJ0mzqT9ndhQrMpmf/qhR5icFFqyzLK2JQvo2WfPEvjKSPwC99wjMT/NzW2uXpNslnc89k0cOXJY3jW/j0g3wq2tLXY0FsR3PfrW1ajby9PCP/3pjzM7I/1v8MDuzQRrkh2spkW76SYTFWn7xFgVp6zM3Otw6JiYxaOdFbZW9Zy0+f2sr8vGFxRcatNiKnWCGjaTcVteWyfTOe4UPGyq8SReSKGfERFtEveGai/k2S42d1tYm+UVntMsJdVYn4mDj92SxmJYpVoWIXF1dYUrV5a0n9K8yGE36hFo3EUaJxg1kTv4uI6Mf2riPPPP80yevec7Gfnhqs4gts5Cbu7PbERfnmq16/ka7XZTEmWm4+MTONqeNNuhl+093XdmcoxQ3QNRB5YiYYI2hZ4yuFK5CKan743zzJMkBmNlPTXrbu76XltdZ1Oz87LM0FU3+Mz8Iu/VWJ177z3BfffKXG40mpw9exaA7fpWnt7uGEOrIQpHuVTDqJCQdHuvWuAxRuISQfhZPxayVA6YmtaMMNcn1VT62dlpamMyPze367nAExQGRQVXV1dZXxN6QzdjSguaRp0OHR28Xmud8bKWKWjtkKmgWAoDEhWEOt0eRXUXxmlCsMfDiquTPq7yiOpUJY8Xc6zLUeU73/+9H2FuVtze577yVUJX+uD+tzzIgX3CN+NuRKrZhO1OSlMFrmarjVFFaKfRoKGF9TppTK8rcyGOLT1NfzbGwXF0jncbNNrSN9Y6XLgsCoRjHKqV/iFPe6CxVCDTcI2Vs+cYHxehcrPdpa4uWccZlGvBGZzr5zhOnk3oul6u9Hqem7ulfI9cOfQ8L3cLSyaXXuP7ucDjebuzvfqfu3FMoyn0Pv/cFgXnNtzL3YR2Q9acTVMadenDWrXI4UTTxrNDlJ4VxejhYIL92rYH73mQ1X0y1tHVOv4v/D8ALJ19id/UGMPJco2HNIP3xPEDcI8oHL5dY/7zvw5AUiiRTso6ODw9SWNW5pVfncSZOiy0lyaoJzLWZz9/ER64ecbryKU1wggjjDDCCCO86XGbFp5BXZ1UzZ2NRm9wGjTQDyLMEI0QVNrdVVdiYMZraU2b3aUD04ErYJdpUH8DrEmHspaGMxxuWMLiFXHi5L15AarQ93Ityw8L+ZEKCwtzzM6JFF8qVXBUm8pMSqpZSGvbZU4uiCluYX6WihYvW718iYfule+/+9veQxC+H4Dl8+f4xH/9rwBsG4/3v/9bAZidn+GJL34RgF//1X/LgTkx+zW/8ARzH5B7H3r0nSS3YckK3AKz0xKAPTd7hHZTtJPt7WuU1SqVuSVCDcB2i+MsrYjVw7GWWI8HTxsNbCpabq8Xc0jP6fnAt32Qtp4JMzs3nwecX7xwkTS30qcU1Jp3YekCPQ1gTNKM8y9LZhbGwdcjHPZNH2B1+eU90WeSNRI9A8sNY8rFoSBPDeycm3DRWFoa2xmNjo5zN84LapbGZtnaVktCrcjUpGgyrVaH9R3pDx8X35NnVsenmalKXzavPpXPX3foFOxsyFVhrc0Dp7NsUPtjLxYea0NcI+0ZrwU4/QKQO+tkuhbHxicpaJDt+soVEn2X63hEavHodWMcoycNG3LtN6WbBxoCefZTuVQgVA3z0MwcW209BTmK8PvrOE5x1PXjZBmpZr9kmSVp37wQ2DBmpsYpF4XGixc2sFqfxSXAIPRGnZQ00ezMzKex08+0MXmBzLgbsaPWmPX1DZJ+3RMvyK1Sz77wVRIj9y5dPM/TT4oba2Njg8cffxyQ4o39OdOLIlzNIEu7cW7xK/gBt3HKyy7YzPYr54OxBBqUOT5RI+i75BwXV+sghYFhRzXkCxcu57V0Jsem6WqYQK1ay3lSlkT58RyB7+bZZHG7TaMjFpNOo4GvtEyPVdnWedI1WR5WEKcWzN62iqTbo9EUy5PrBThqWd6/cIiP/ME/CcAj970ddL7YXoeihkT0og4r12QdFyplvvz00wB87nefZHVTz5laXOTht4g1zjoV1tXQvVnfJlHrnY27ZHkNPzevF2XTlEwTbBzHIe0XOTSQdJt7og9grFqhu6NB8Vs7rPbPOKxUuHhBXEjZkJU3ywb1eezwET5Z/hHPdfM6boFv8tPpgyDIvSCe5+WfgyDIMyYLhUJuiSwWCvnxFn4QMDklVvvNlVXq27u9JTdDGJaZnJP+SdIo94K0OxEXdF//Z898lvsXZV/8wEaR5V/4pwCc/+f/jHldx982NZ6vj7jk8R80+L1YLLFfM6IXSyGPf/oTQmOS8QfVlfZyNSGKZCBrFw2JWtO3uj0cTSKppj4bmnF7+vj91O578KZ03WIWm12CSu4ucpw8tbnb6ZBojI3DQNiI6eZpeY6xecqoHTpAkV0bQ0ov7uXvGVeXSqlSywulGeMMhb6bvGie4xpMv1Chub0E9YsXL+RxRKVSAT8YpAMWCjJo62sruBrf0N7ZkJKgQNELuKorbuHgYTaXxRcdBgW2N7TIXadBZeEwAFubmxh1h4WVEofuFzPehd99gRfV12oKBU7cJ5kH733/B/n4xz4JwAemF/IYhajTpKsZF8eOHLkljfMzC5Q1luLFM2fy4oGO7xOOiz987uBRSjVZHJdXNtlsysR0spR9ExIn8e53PEpZzZAvvbTE5ITcWyj5RJrue+XKFWKNsajUasxo3EySJHn8wcrKap462ev1eOIJEfAOHT5M2mfQxXHmFw7ekjaA1tYqWVc32cBnp6mxN4WMSJlg6jtcXRbG1OpEXFjRgwbZJtZNpDxXZUvjdhrdFoEWoYy7CVY3lCRqYFSYnZ6bYv8xKUvg+97ANz9cwO36hK1+5rTNdmVc3AozUweYmZL+aLei/Dyszfo6W5vi+ulETTI9sLBQLDCnc3mmWkW/5tzqFjtaedhxINNNzXMsSb8oIpBq2/bPLXJaz2mK45jVLXlXOnQOWIIl1U0zIcOoa9pac1tnaTXrDaKW9nMvwVGlJ7UemhxGuwFFPQB0a2eDtVVZf+2diKTbL/8wRrulm346OJE2TS2Ouk/itMuTTz0FwNNPP0NJM9ew5JtHISySqNvRWAg9uabb6ebnGE2MTZLt/ezQXZrd8NzwPZeqxs35XiAuXbSCbdbvz14eNzc2Pp7HFKVxnCt/c3OzxNpZSWwYH5f15zomrwgdFn3Svpsv7pLq3B4rFqjVNLbOr+elGzrN9g1i0W6MJEpywbkXR+JrBNauXmXpvCg2p4/dj69lNXyvwNw+UcbCyjgNFbg+/9ST/Nq//48APP/iedDz0A7u209JN/qg51BTN3+jXc/Twy02X1vOUFwYDIpEGkN+sDBAp79A9gDPD6gbjYNzPV56Uc47PP3IvbzznW8DILM+Tn9PsiavDJzaLD8zK0sH7UyGsiSTuJef1RUnCT3lp1G3i+3HbdnBvcY6BP5A4Omnq5erFVwtUDtWKeHdRimTQ8cDLq/JM+ubXSJVEJ0Y+vJ9q5pxdl7mS3JhmY+vSljDpSzm+30RTt7aXeRnNVbux8pVEi2nsX9qljEtNdA5dowPvCz3jne79LT9M7aHr3JoxYRsTotMEFdSZlakf65WMrY1Y5LzL/Pb/1mKzn7zX/6bN6Rr5NIaYYQRRhhhhBHe9LilnXJXYcChwoN9sXlre41rlyU7KUu7GJWgHS+g737qNOvEXZHsbNLtny5PZp28EFuSxrmlyALH75N6DPe95ZuwjtY3yRycvlrkWFL6Eq7Ji4vdroVne3szL2cf9wYWnkqlnAd6bmys5t/7XjEvtrTduMrqskimF848w9qWiKPjMwvMzom5+fDRQ3kAs+Ok9CKR0D1TZFaDyNzMyc2uK5evMT8r1o9T957ihedFe+g9+kBexzHtxoMaR3tAFEWsLJ8BYG1tk0xdVMZx6WqdA9eNcTfKSleEHkFF4IUEU2LpWlxczPuqVKrQaomWs769yfKKBPg+8eRXCPSa6akJrlyR/vF9nyeeeAKAcrmc14o4evQo3/VdktH22c99lrc8/JC0B4vHxJ7oi6NmXjMkTmDlilohKMh5V8D0pMf556X4nqnM0FBrQLTaxGhQrp207GgQJJGDrwUpk9TFU60yTRPijtSSwHQpTEtwnhtWcu3BDB2fIrWEhmtz9NX7LC9IuBeMTczlmp516ly5Ku6+1eXLtDUwsbGzgatWpsMll3cc1OKRbpoHRz546CifOSN1TM6v13PXlXEstl+qHvIimliLbUp/Ts3M4Ot5SCZpoJ4l4mxg2bUmwdfT5LvdRNbmHtHZMTiujIVvAo4dEYvWVr1FVwNul15eJ1BrTL3eItLCmXE3wVX3XC9p0NHzdTIS+sc4O+7g+IksMxQ0aUCyw/S9fojvD8bay91JIVYJjjoZevg8m71tStXSnmn0fC8/PynLstwqWC4XKakrVgJTtXifayirJjw1M8OYBnHWKjVizYx0E+iqW3NyZpJEs2g2Njepafan41iKWowv7TSZm5f15+wU2OiIZbpUCSiohWdhYS5fu71zV4j2WKYmSaGo5/812608uLvR2eHCZZmzSdbDuprBG1aYmBXL79jcHP2DSF66ckWKZAH7jxxlSuuaLc7NU9BsyLjdYXZGvjdexiV1ga+sd/IwhSzL8k3OYRAkTpbd0IW7F1THA9yyWLeNX6Gj2bOd+gqVMT1GwXji2QCM42GVeduhk48Mu4tN5m0ZCtEYrunlGJPX1urTBmIpinv9BIJufnxGu91hUwstzs1OUi7uPTB7cyNie13WnB8EeQiCWyxQ1OzlXrPH+vOyn92z0+TUo+Kad9fqzGuIw04ai0sUqHfhrNaz2z9bpaBeEPuFz3N+Qaw3Y5lDpK5GHEumVq90fJxAExfcXszGPrm+4BfYjDRJohhyv3tz//LeY3iGPlvIz9gqlgpUanpgYdzOi74FhXJePOvlzQ0uX5CCciaL8yrNshkMVaPsV0Q1hpfPiE99YmKWxYP36JudoewRm5snLUMR8bdZcDnwAwq5edXNXQ6e6+WbqO85+Vk1a1cusX1Fsjg2rl1hWzPFWrHBKqN8eekSrmbUTNSm2NmW7KRnnkqxqRZucwu4V2XjvLKxw1eeF3/11ESNtRVZNNFOh61Uhujp585w4JAITp7n4d9GFn6r2cBz5YaFhTF8PczOwSXWDou7W2xtS9bC5nabKOpXip5hSWMynnhikgcfEB/pxMRUPhZRmmK0oFTmuDzzrBSzmxyrMqepn1EU5Sbne+65h4WFfjS95cABzUQLQ+pqsu+0OkyO7W0jMVh8PezSDVyiWPp4Y2OHTl1iAkx4mMiRa7pdl8QXhh/HjfI+qgAAIABJREFUFteRBbyxE9PVDXp8+kAu3JF22VEJsLW9gVXz97WXn2ft5S8BMDMzS0/N0AYnN1uTZbviefpVmLM0IVZXwuzp77wljY6b4ejmUSiGTE4Lo+902zSa0mcZMQsTQuOJCY/mhrhJN9otQit9MrOwwO+7R9ygnzzj8cTlfqq7nBEFYHspBRV+xksBL1+VDLjZbptDmj1UbzZz+/DkxDi9fjwE5EqM6xqcPcZ+AFo9ut+HHhPjojTMLSyydEFM1ZcuXcFxZG56bpCnjcdZRqKLN8sMiRZmzFybF1w7cvggx49Jcc1nvvIs9XpL32XJbH/jcXFUCMF1ME4/1qxLqhmNxXIpj/XrxT1a64MKxbdCoRDm86Eb9fINrFIp4Wu1WXcotqoQFplR928QDorKea6hUCvr55CN5X4bLCdOCo3V5VUcpb2EJdbDYSvjPgV9V7qxTeD2K+XHTE3JWpieP8DUhLyr3egQ9fbIcMKQWBl/z8lyHupYQ0ezaSwJJugXooVEQxMIinRV85vff5D7+lla3SQvC3FgfpHxktD94oWvsrksilaSRVTVFdLuVdnaEVen6zo4fdcPFmP7n82Qe+P2SpocObafVLMhrVPG0b7Zaa1w7dKSPN8Wsbo/jU/NYp3BnOpnWjmOm2dvyd+DTKvdaezD8azk3/ezt0zgUaz4Sq+bn8nleS5NLaLZ3KnT6+79XLv1tQg/7AtUHsVFadv+sMwBV/jy2XINtyJ71fSlKzQXREE9/o5vp/qJ/wZAI97EVxf6ww+f5lvmZOxmpqcIGlrY1ViOXhYek41VmDovax2b4Wn25+bcDF5TBbD6JqnuYcuH9hNp3FQlKNC6b5SlNcIII4wwwggj/B7HqywgQX78e3lsnGMaOIbNBuXsjZMXAwzCAomatdJelBeI6rXrWNWspHjSIGiyUReLwbNP/y4VlSInpvfnAcy3bcp5BUhQW1+SjfMgyzTu5i6Hta2E7W0x+25cfIFzS0sArO8kuBoMXK1OEaqp1fECtjZF4/I8w+a2nvTsuhhHTaFugcK03Ht6osuDWrq72va4qkGoL0RtpvQU2aWzL3DtQQlmnp+ZxqZ7d4f4jptrpJYML/cKDs4sc0iohvJHaXqcXlesG0GphqdnTT399JN5QNzDD00wriXbvWKBMTWdnzhxgo997GPS/ue+mgdEzs3N5TWaOp0Oc3NSe+fo0aM0tD7PwsIC1zSwOE1gc+3mZcL7SL0wt/AUqjUKGnQalKvgqpVjJyZVU6zrFTAaVJcmSX4cQ68dM3fibdppU2ytyr3d1jKOummyOM2zn9aWV7n4gpSznyreQ6/vKjTekOtq+LR0Oygln95e0PL65jWmJ0V78f0y9YasobBQYHpOgopL5SrVQC0kdo31LTEft5st5lUDXLu6RnVC6H3PsX0EjozDi6sNNltqMjZdZsd0PobQCGSebjValLSoY7kyTbMjFpK4l+XBvZ7n5Fl9juMR30YdHj8wtDWry3VDNnQdTE37LCxKO+Okx7oeF5IkUV6OP07ifL26npdnvPTiOF8ri3Pz/MEPfw8Ab3v4Ub78JQlafvLJJ4jUhWvw6OgfvbjF1LRopFOzYzh6hlfmDHIkg2IhPxF8LzDG5lmMnlsYnCAehji5tTslLMhcDYMiba1BE7XaZHlih4er7sWoG7OtQciBCwf1tPepsqVmxKpS9VPasayzTrPLimbC/P/svWmMZFl2Hvbd+9bYMyL3zKqsrLX3TTPdPdM9w1k4HC4a0pAEipRBw/YfG7Z+GAQEG/4l/zEgG7QlEwJoQLJkgZCooUCTokh6RtRwmrN093RPb9XdU/uaS+UWGRnr2+/1j3Pejaj2TGXUSH9UeB/Q1VFRLyLeve8u557vnO+EwxABey9jrbDC1MLZx8/gKnuHnnzstCkvchxsMa6ybgttNH5SleCIawRu3r6LrJ97uTKsra0DAMpzTdg8pk6dPI0yiwfutdvoH9H91itz6O3T2rp/sId2b4v7I0PIYRNZGoNlbLjkSe4tGfNJGpRcAHB0hpr+Gc7NLyPgYX174xBhh/pVyAGuXqbwDp1aqDc5eLhRh2avYRqLCbp77NWZrIT+Se2dnG7TSt1HaRnRQmtMiWVCw2VPrWPZmGGKTWqB0UPUtVtdquHaHa5+7o1re52uVPAVl57vuU6IBZ/GxVP1Jhbv0nM5dfmPELFnt9I6iZ8tkzd6pjvEP2rQGnZ0GCJk7aPY0sg4oN7ONCwO9VBZivjz5OVNPruGUkD97CXzkDznrNjFikde58NeiltW/4HtenDxUCEmhPzGwTHa/AEIWEYtVAggMwKA4xTc+cU1fOolevhZGmNv8zYAoHe4Z9zfBwd7pmiYFIDNg7G9v4NrVy4CAD4104Jl0/fQppPf20+nsgwAWZYgNtlkDiRz+UlSwo27LDwXSPS5Xs7NLvDip0hd+eK1TcDmwo3BANGIXHdaKwx6tAA56+tYPEMCZ6MwRa7T63oWfvjn/xAAULWBv/23/gt6v9vB1VUyiv7w67+H5SXazObmV9BnN+3ptTVk1vQGjy3t++xDK392Ew9SSmHmvLR9NEo0UZTjocV1jJCl2Nyk+A/P8/H4Y08AAColD7Uq9cPa6jISVun96P0f4gqLuJ0+fdpQV9evX8cuq6v++q//GmybNqdzZ8/i5ZfJ4KhUZrCxsTlV+yqlMmLmepOjPQjB1MOMg8U1igWTaoTND9+kdnsZXDaQtIgQDGgiNU88AcHplDcvv417u3f5sz0sLT4DAGg0ZnFwjxa1SKUINWf0LD0PmeS14CayCekX+f/j4oIa+v5LjoUwG3G5VMNMgxaRUqmGiAMsojjBfImNq7vfwjZvamXfQq3CwoNZhvYeuY+94QgvzdNYOzPbxI0ureKXb9zFqQWmVYMIu1wjp9Z0sHdEC0om6iizsS+EhbpL32PZNiw2NrJMo1qZXmkZUPCYXvb9MuKQ+m1/f9cYmYNhD0lK/ZDECgkLW64uLODkCaJ8Pc839NDBwQHu3mV5g1Rhk+swHe610eKD2sriMjY5XqVabaDCY/mou4tymQ8BNReuN872smTeRsBSD1PIV5uDnW1bqJTzumZjpd1S2TPZR539Dhqcvnv29KeNIF2WRNCccTboDdA/pGe6PFuHGtChoekM0OSwjWjUR5/FSvuDEEOORzrsp7i7R8/U9wI4vCmurTZxuEPPbrfmIgqnM1xrvo+AKeUgTGDzxufARplV1K9cvIwPAyrK2j0awa/QnFt/7CzmV2lDlFKahcp2NOZnaVM7OtjHdQ53kK4262B7dxchZ2qmcQpbjhX8xzF02hg5k3WpMpXdRy0dh7m5U9hmccfr1y4hYIPnzJkmtOLYwNEIcwvUf5YNskoAqAzjdP8kHmeWTWRdaa0N7WXb9rhmluMY4V3btsfUmG3DctLx+/wMI5UhZRX5QTdA7SHmolfx0JqlMbi33QNHrUDPLuPDeVrHvxDewmeu0KHwqmchCWlNPxW6OPBp4DUOM8wd0dgceSVsz9NYnkkS9CJWtXdtY2ekjoDKQ1VaLtJXOAxhe4ibeYxMkiKM6JrDkcYBH5L2lcKV0YOfY0FpFShQoECBAgUeeRzj4QHuc/DoPHJ8Mr5YQPPRRGHsMrS0MJlcluWjNTsOUp2p0WkwiyJk7PLe2tpAxBa657umMvSdO9dx8+Y1AMBMaxFnL7xA3yLssV9n0tnzkJhptExdGccWiBRZtbd2uuiN6ET05OlV/MmfEU0T7F7HVondwYNDlCucZTY6wPYWnSQtG8jYio8O1/HES3SKG4UOTq2Si7zbj/EH/4Q8BSVbY8Cuc3vrNroNasxR+x6UJit+ry3h8Cn99JnHYVvT0yEkPpbbtuMAbxLcy8sJUFVkAMgyxwSceyUXAQedteozmJ8nb89wNMS9HQp4XV9fh8tBiCXPxisvkZfm4G/9Ov7F7/1LAKS3k+tMnDx5Em+//TYA4Otf/308/jgFpZ8+vY5zZ6g2i5Q+Tp6cTodHxzGsMp0W2p0biDia3xu0EQzJS7T+2MuozZO37GjvHpzSeGDnpwttlbB5h2iOTudHSPISDFCYaZFHZXa2haN98hJ0Ox1THgTlVdjsvhfSGpeWwIT/UWsjcgitoR7CMymlNEJjlUoNjsuZKkmCrJqf7lz4IArjaL8OVtpH1bOgeLz0el3jWQoO2qhwLa0zqy2cOkltWXdb8Bs0R6/sdJFyIHEvjOCyG9pxfCwsrAMgifyIxe6SJMIwJDo6TTTKnM0yDaga+bhMxihkobxYoNsnr2Ewik2ZA5XGWGavzs9/4ctYO0HPl+oPceVxCPzFX/5bAEB3cIjvvvZtAMA7716EyL0Pno+8YNXy8go+//lXqF12gos/Iq+g5QYIOei2VKqZMgb9wQgOeyinwaRIqus5kHlWq7BRY32nWqNsaLs4CHHmNNF5g37XUMSnTp4wAf7D7h5aNWrvqaUqfBYHtVSE3S2iGQ46I+x3aF606hVTJuPjWx3sDThA3Qtw8R3KpHzyqTNwy6xJVnJhW9MtsK5tYzjiNTHO4HKts6o/g2efoTqFX/3iL+GIy9VcvnIL73OtwTf/+deNZ6sxuwybs8qkUEiYztjZPMDsPHl7tCWx8yPyzN3bumtqRQkIo0skpDBB6JY1rl0FfCIz6iHmopA27tyhte/O3XvGuzk7fwHz3Mczpz2ceYz2vE6UIGFK0JIetOHbJrSs0nSiTEpqPD9pmprak1mamud/fxV1OeERskw2ZxTGiEbUrgunn8Rsc/osrWCYYusmebFGQYZKXrtv/gSGPEdvL5/AC3fJg1/OApR5D9hxKrjFmm5Pt0oYjIhirW5sIfrSlwEA7XsH6P2AMpCrDQEZjZMMwJmX+q8twvlLorV722X8uwu0H7w4EHidM6J3Dg6w9B6XBrIE2qsPZj5+qhgeCRhRMIgJ+lNk0Lx5SNgQeR41JDDhzHdZOIzqHLFiaaM1VmyWFiQPivrsAt74HonvffDee6jWSLV46eTahPjZRM78Q2Ll5JLZiJEpNJnSuLfbR50nVtLZw0vPEKXxh3t9vLdL96YCYLhND/z86XWsn6IU5ffffxeJpoF5e2MPr32XDCHHs/CNf0sL9+piFX6JFgN32EH8+/+KWlJtILlK6dNWdREfX6INuHdwD+/9gEWeggh/xSU34dPPvXRsGx2bEjIJYswJa0BO9Ft+hRYKccx1r1KBmqTftSCg+Jl6no8hU5DD0QhVzh6BlPDZnfnX/8Zfh83Uwmuv/SVmOM4nyzKTbbKxsYFPfYoWwjhO8Y//8e8CAP7q134RO1yA7pd/8csPbJ9fb6KxSpNhEB3i8IDc5VAxtgaUHZiihYUGGwlaQ3JKb5YmJl/jcGfDiDIm/RQWLzozi2dR5jimzvYNU7zSsx2UFGVBRPfeQJpTWkKO9TEnY3iUGksyqMwsanNP/vID20f3mWI0zGs5VVEuU1v29wcAL+i2EIYi1o7Dpg/Vm+lF9DzbQTZeZ1ONiFPy47t7kBa5pP1SA3HEGXKOhwUWhktFZDKhHMfHiNVpVWbBdVksbHEZs6BnEcUhKpXpU7a9moeQpQ6ErVHhTVwnAtGQaQAF+IKehePa+NzLL1MbbQfvvU+Zjp/97GfQaNCY/cb/+02zEL/0M5/FtZtkrL4rMoSc4dWPQ2iR8j2v4TOfpjkVJB1cvvUW96EHi2ntLANCFtSLFSXxTwsNCYfjIcqegyqnojeqNZN+HkSxiXc7d+4EVpbJ2L63vYcWZ065dgap+AkHRyixQaKTAClnVbb3d8wcTUQFEcdWjSKJSxs0Hg66EVqzLD46IyH53oaBwhLXtRoNQshsukK+nX4XNheYnS2XMeyxCOnMLM4/SWuoW6+ju8+K3TpDdZ5TkrtdXP+Y5m7rzh6eOE/ZhGE8xB4Xkl06eRoL63T9xStXMUzIoEvQh86NCmXBYaNYSgdC5BlM9n3p3vm8lFKYA940iJIhooTW8aPuIRoL1E+dToZ9Fmucn2+gVKax30/6CNh4T5VCri8i9LhmnZSSCp2CM8iMXMREirpSyHh/jaLIGDZZmpi4qUF/gA4rKi8vrsDStJ91OyPcun5l6jb292J4JbrP5oKLCh90hjc/wKd/ltar7sjHNzjr8alvfQfnWL6iZKVYeJqKKv/dG7exv0tG6W+utPDUa3SAWLCAey0ap9F8A3o553MrSB6n55vVHVR+RNf48z5aKzROf+s7H5mitD/nlhDw0AwdG6XlB9N2BaVVoECBAgUKFHjk8VN5eAQErIlo9/zPDGrMLCmYDCwhxsFikNKUnCAvCB+FbWki0JUSyMCnhMU1vPTZzwEA9ncPxkHUOo+6pzu6LwL0Iaz1/+t//k20WJBpdXUVj33lbwIADvZ2UOeAzv3ODpZPU4bUKNbwU7Kgr378LhS7ua9dfBuf+eJXAQDl+jxuXScvzdzLLn71r1HgbJrEuHaL3P0nVht4+/usV4EKxKfJyyGvXAX+CmndlG5egRvTbz1+5iT29ugE/qf/zx9i7dd/aeo22rZzX5fk7l6NcQkEYNJTp6D5L3E0RBrQaUlUxplFUZwYF7zSGkmuL6MB8OnUdS187nP07BzHRRCQVd7pHCFgQcAoinDzJnnA1tbWsc8ZGO+++w76fTrVHefhUWkIPSS35srSefT26XNJlMD3mELc3oBu0yleZREGHepXrZUJcA3bl2BXyQ39+PO/gtxHIpEhPCRqLAyGJuB56cQKVlaJbsjCI0DlY3zCVa7HHSuUGlNdSkGo6QPPw+EQm3eIAt3avI6z5ylgfG7+BKA4IynO0OD42bZ2oWvkVq4vnEV/h053QdwFuLq3UqlJLMhSge4hPR/l2fAW+D6dGfg+PecECco8d3udHnTGXtjGHDTTQ5nWSDPuN6kxGj04a2IStuOgxtGRQmu47G2IgwQ2n9J30MPSAlFXKyurWOHsrW/8+Z/DYmrpyfBZrF2gE+bymVXs3GFxtMfOodYk9/q3vvMdDDkA23LtccmJZIR9Dur+4fvfx94+JS7MLtVR5dIPWaowGLB3RWqEYe5LOx6WZRlvYcV3Ua2wh6dewS5nJWoIvPzp5/ie1wyddO7saQxY5O47330T9Rp9jw0Jh70D/X4fFZuz1Twbs3XyDu20I2SaBsdHN/ex0easp3oLayx0euZ0E4tcDzAIUyxzWYK672Bvb7o6TFbNMiVK+t0BOveoj1988lXUWZvs2o2b2OGSIHc3t/DDHxKNFo4CiAr95iDZwd0tmtNVz8XaaZqX9lwfH9+hzMgrmxdRW+a+rK+ge481vDoBFHvgdKJQ8pi61Aqaa0KlSpsSRxoAnOnP/rc3b2DI4Q71cglxTN6eSz96Hxcep4DeucVZALSvrC3P4Yi9sxu7u0hZr8vWlmFKhLBg8XPOLBhdKJlQpi9AOnEJBye7joORpHE3HMTocFZztzPEPFP3c601qD61KwiG2O9Ol/UKANVaFR6Pa1sC87M0z770y7+Bwy0KVF63dmFXybvVbLmoC2pvd2EG//ctWtMrjSq2aQrh7125gt//HJVTEi96KJdZo200A5TG7I51k0MSvn4XKYcV+FkNlz+m5KVL1zYwCmg8vlSbR5nDR7aSEC9+7d+rltaPhxYwKqv53wkTFFVJwWfdNqVTaBYKShMLkusAea4av58qpFwfyvJcKKNS6WHpBLk2F0+cgwJNiEzrsfEjYESZtBRm35kG55dcVKo0ERsnz+KtN8ktHgP4kz8gvv+FZ59CZpMB84VnF/BvuOjn3HwNvkcPbT6Yw6UP3wEAPPfSz+DOdVI2Puim+LPXaIBkaQbHo0V5c38bBx0avLOzLtxz1MbYtvDRJl1/d+MmSsyd7rV78DiGY7e9h6vM8U8D23I+oeSZc8jj56UBs/lpoSA8Vt1NYRZ0ezhAa5HeT5XGwR4X+vN8Q2M1m82xIrB2UObaW1/84pfQYxGsixc/xNmzFKvT6/UMR/3hhx/iDmfR3Lh1GadOnZqqfVoBR5w5Va7O4Ql2ndvlGaR5+ui7f4ndbTIYK40mHF5clM4QcKpv/7ADd0Sbfjhfh/R5elgCFrvIS34Dgot+nn3mKcw//jMAAGk5xmAXEON8rMkgHq2NGBmgjVE5DVzXRa9Pz/zS5Xdx+RqN0xeefwWfep7uoVKqosv1bLaPAiw88SUAQHV5GXuHtOqMrA4SjrGwpQOJ8XMe8dxKRRUDxWnRM2vIOFU4GvRNWnScJNCCFvEMHposjlctNXDAWT9B0MFwNP047XUHqDJVN1OvmgymeBRhcZZix2ZbfayvUf2yV199FQecug4nxtPPk5Fw+sJZLJ+kjfsX/5Ov4Ov/lMbG/sE+8pi15ZVZCD/f/DJYvOHFyQjffo0KGV67dQmVuTw+x0L3iNqbJIkx3jWUSZ+eBp4jUXZzeiiDw/NMWBIZb9JPPnkezzxF9LhjCwTc/37dxyEbKoNAQ7OqrGsJzHNfeR5gCRZoqzVwdERz987GATZZOfdeJ0DGYn+jYYT9e9SHF84sY2eHNs4z5/q49B4ZItVyFbVqZar2DYehWcf7hyOcPXEeAPCVz/0coj7de7t9iHubNBc3b93CiOOJ+oM+Mk33GPR24SxQYcpqtYqbW1SHq73VQ4fHVIrExI9KV6BUo/XRETYCFqmLgwTgrLgsDgE+7JEcOr2UQk5K1x6LURihxYrXr776GXz4Dq3XcRLhqScpHrFcLxv1/CxNEXKx1na7jZDXx2a1aWJysiwzhlCSxUYGII4TQ5WrNEXM1FgYRAjYGBgOhhhwjJvrlGEx5dvt9NHy6T6jZGjq702Dr/3Gc8g0xySmNnRGY3zj3hVcOEuKyk/Ji1go36b7XG1CuRSy8Pq3AwQ05XB0sI8kor7dHUS4eYLGxhPfPED5gA3juQgBi4Datocwr+Hm1wE2gN8QGd67QYfOU+dP48Y1Mqg+qNRx4mk6xGxqYLGz8sB2FZRWgQIFChQoUOCRx8NE2xkowAjZ3Y+xlby2toyVFbK8kiQwWQ17Oz1U2Wo7cbKVF9NF+6CHI9YzWFxaNsFZYZLh6o3b9DolDw7AAV+GjhFjD494CPcOgM//zb8DLhOC1z++jH1JlmY5ULDAJQfaQ/RHZF3u7+4i7rMOiAS2Nlh2f75lTviD9g5sFg5TcQ/LFRa/OzxAb5elvvtHGPa5evehwt/+e/8rAKAXBHA44yVLQlx4gqi0X/21/xy//ff/FwBAZ/8Af/Hdt6Zuo23f7+GxjNz//ZRW7ooWIoPifqYgVX4WwQgxZ9L5pTp2WNY9SVITOKuUQqORBydrU/coyzIsLZH1PTc3b0pLXLlyBXdYGvzatbcQc4bVfrv9E8bYj2lfYwGStVlgW8hC6uMs6GGYZw8FfVNjRg5GcFmW39LCnL6iKEHJpz6Ij+6hvELuabtUNaesRAkILiGysLQMx6XvyZQwmT6T0PedHPXYHaphajxNgzAIoDkQXloZOm3y5Pzg9T83da8eu/AMNrlURIJ5vPyFrwEALn/wFgYWPZO01EKUsF5JlsDjLMAsSZC5RCeNZNm4mzPbQYXFJquOgGSNIy1s7O/fBgC0D3YwGNK8qVWPUKvSvBd2DX51+gymXndo0hxqVR9hRO2t16uwNH1Pa66OlVU6+c+0qnj/IgVBnlxp4cQi3fPK/AIkB4RfuvgOKhx8eeLEMj66TJ5Xv2ThySeJ9grSEIMBZyJW57C0SN9//dYlI6gYhglG7P2zHcsEYyudoupP7+Ep+w4a1TzbzofDwoO7BwdoNul7nn/uAma4RIjSAvUW9WcWB4YifOGFp5Ak5L2JgwEcDj63pAXFfXXvXhdXr5LH9KCbYhDT+HQ9H2AvpSMllhaIrrhzZwedLgXtf+al5/HHf/An1Lcn1/AzP/cLU7Wvs9Uzdc+EcrD8FFEeVy5dw3tvExUlbIlbt2n8vvPuh/CYdq7Uq0hZ0c8TM0hj6qfLN26jnZBHKKlksJm2zXSGgH+r4pSN91wnGi5vWG7FBcJcWDYzgoS2sKG5HqEl7fuSN47D0tKaCfyPlxzcuExescEgRY/3hmEUY4894NvbG9japbX+oHtk9qhzZ8+ixnXHKNt5XFopDwfJlEbE9xkO+lS5HkAQJGZPTWNgeY4YglazZe6zd3SEIw5gz2yFUml6vagF50ucdQ3AG4c4XNu7jg6HI3zoPY01piPXbl01nu9bRwG2ujQe/8Yvfg0DzrD7R//0n+Gdb5J37gg2Yt5jOvUZuOfIo5kIC4qp6WEaYb9Pa/nbl65hj7PwvvzpT2OLS1Gk66uIl2i+LkoXw9LSA9v1U8bwfOLv96X3sWBgezBOp8uisdJy4kAN6f0bt3e5mhowHEZG3Eoe9k0cRBQnyLgjhZBmgxb/PrnoE7j7o29CJLTo7PU99DkVc//mBjRz4dIqo8sd/9Z7P4TPLunHnnoev/DVrwAA/uFv/wNUSjT59jZvocL89zvvvoUPPngdAJAEClGSR9ZnqFS4gJ7U+OHbbMCoDLNztHCrVGF+jgbwTL1s4htOnzqJmdp0LmYAsCzHiJoJIWGxCBbFWY0nGSYoQs28oLDGdV38SgkDVkWuVWdRYeG5q1ev4doNovykEHjmWeJRz527gLWTREsppTDkuAfLknC5MODdu3fxve99DwApMLeYGhkGHbzwwnPTta+6AERclNUWRuE7iwM4Ef1mtVZDzJtyEgQQHI9hOy7kKOeqLXicWeH6ZTicsWdVmsjYTa/6fZSYvputCegjSqlVqTILmYYeHxAyYRYLpZSJG8iUMllazceOr6VVqzWxtEgGWJYl6PPGNBz08eYb3wAA3LrxITJeHPvdISz/NQDAhx+8g3hAi7InHERM61Q8D15ecDOIEdocN3f2OSyfpZiy/jCCyljdt5IgZcOyN+hBcIyNFQqETLfZUkKBnsXRURu+9zBnt5dsAAAgAElEQVR0TwkO30MUxGbzQ6zg8VxMQoEqCwPeuHkd3/5LyuA8ubKE8yxjULUtvP/m9wEA/+5P/gjra2RoV2tVjFhiwS87JgtFJxaaddr0X3npyzizRvFR3//h9zDkee/6tmmL51smrkLpFPoh1KRtS2CmzmPM89AdcuFaASwukWGzsNiA7dH47A1iRDxmpC6hwxResy7hs4E9ShRcHvPDXg+b27TR7mx3MRrxfYoSylwbqVn2UKrR2K6Wq4aeO+oN8eQFOmC1t/ewd8CHm3KIK1duAwB+/pj2iVEKkY3Tw/sdGnfvvfMD3LnF9RRtG5bNqvTQEDp/toFRxfY9D8OAxlGU9uA2uHaVB2Rs5GSZhsPWj5QSiuunaVuPBfocF0mP+zhWkLyJu5aNkpvTuWoyLuNYHB4Ox4ZwoJHkqvfCxsYWbcTbu9u4zYr83W4bCR8mbdcxB8vt7XtYXhoLLbosuhnHGSI+hfd6Axx1aQwOO31IPqCUy3U02RD2nBIaVY4vyyLc26XD+WB4hN0D6sNKq47VlQfXmZpEP0wM3S2FxuYuPcfv/uAaqh9QrcS1lZO4++3vAgBKOsWQD6ubSQRvgeJf7SzCMhek9Wwb/9MViiVUUkDy3m9dvwrXobZrnWF+nvaAURDiytVrfEcSK1yQOzg8wt4eGZB7+7s4tcbG3tpp7IcPNmkKSqtAgQIFChQo8Mjjp6ul9Qnc7+EhHHYGOGI9AC0y48mx7ZJxzac6HNes1RKCPQ+94R6AcYBVnvslBFmbdP0n72JStH96bB9+jJZFLrG6vYQsoZNHvd7A42coAO2Jxy/g4o/oJP9n/2YfpUU6Mb746Wfx2GPkFl9aXsbGbQ6sOxqizq7FmZkGKqy3oy1rXL4BmcmWKpfK8PjEWJGpidD/8MoNfPgBBaeGYYaAg4d/5eUzeGZ9ekE3S471J4QQsMVYlG2S0jI1J7QeB35rGG9btVpGP6eFhMT5cxSQqJDhBrf97tYWfvgOBW+vrq7hs595FQDw9NNPo87aO67nGJ2JVqtldHjm5ubxgx+8AQAYjYbY2NiYqn3SK0FbfGL0HUjOorMcFxl7FhvzEiUW09u6dA2W4uyOchMjDkadXV7DElekT9OREQKz7KqhUrPDA1Qs+mxrfhGSTya2TMZ6OxAk1gIKas1VOgWUOc1KZFCYPojw3LlxhfnHH38Kuzvk4r9z5wYcrm1z2Okg5JIm+zub2N4hOgOZwOCI3h+EXSTsj2/Vyjg1Tyf9UFfQmKdA8mdf+QWUZ07zZ21EXKMoiA5x4+bHAIBED0y2V8mfMSfqUEk0WxRUPD/vYmFhYeo2tmbmkTFlOhpFKHP23M5OG7Yz5HtexEyJTozvXvoQB116dmfXZ7DEp+XrV9/Dm98lr9eMbxuBvj/9xp/g9gb1yUyjjpzfsJRGwyWvy4mlZcwwNVaZqaPK3uWZagXVGaaWshgWz9c4HiGOp6szBdBPltj7a/kuUs4Uq5U9UwMpiSNYzAQmCdUrBIAUIZZPkBervXsT1bxie5RhwB6B/d0O9g7y4GobSowF6RpMn9QbZTSa1EbPL6PP2kfN1gXMMFV35UdX8dnPk8bRz/3iL+HS5atTta8yU0au6amVRCZpvZhdXMLePt3L/t4hXKax5mYX0e3S74/6I0gOuJYlFyl/VlUC2HUWhxWA4nIiDixwuS8IlRrxQM+376PY4eTzDwBnmTquhGaKxBLCeLSnQbcXI9fSaR/00WNNmDQL8f03aP1qHx0YEcULjz+BGzdofewPBmbt27/XxrBL491xHJOksbtzgGA0zvwrOdRXjYUFlD3OYhQybwo8z8GAvWE7OxvoDTr8yRQj1gtyUh8xC6NOg7maDcEJFhYy+OyRe7cU4Y03iMb63ug1DLmMUBjHCKM8iN7CE1wvLrIkBHvSdtsH6HJwstIKLl+TKYUyU7ue62F3i8UbZ1p4+gnK6to77GLEa/kf//l3sLROXljPL8HiNThILNjpg3f/6Q2eSW0/Maau7rtkMn5Guib9XCMzllCSjWNCtHDHMQ5CGLeiEGLsehLmD/rN46yZh9QfbC1+DRHHZ9QOO7h9kdx1r7/5Doa8kNUaM2ZR8G3b1MO6ceUyAub+e/0AjSp1fBUuFrj+1IXzZxGy+JeV9HDArsE0jvHBLdq0Lh/2sb5IxsBLZ+cQIZ+gKWx+mNeu30CVxZ/agYW37tDgnSY5XVIxF3othTEy5Sey+a2JWi5GeVSO9YCzKIIALYhRFKLGbvHnnnseqyfJUHjrrTfR7dIG8+HF9/HxReLtn33uWZw/TyJVq6srWDlBm9Mrr7yC7W2KOxkOBtjaImPyxo3L2ON6W8ch2r8Nx6d7Se1ZaE6PFFmIiBeC0swsFpfWAQBxIDG8SRSc6o2gbFpQ1p/7HGoz9Nl719/FgGmj2gzgcEyWU51Bg4XSKkvPAay0LLSCyFWrocfp5xO1fKAnFF017jc2j8Hmxi10jmgha840MTdHFIwW4yKCS0sC3X3qy157H70OURutZh0pxzEEgQXeL9DthbjFmSFhpDDv0XN7+61vIWEKz/PLebgHmq0FrCzQhutKF23OqGnvdBEydej6dUr5Askf3Ln98dRt3G/vo8SLYBqMAM5KtF3HZK1ICfgcq7G3sw2fU46FUOgcUXs/unQRWyx21pypgW0TbO/cg50Xa8wAyQ3zvQrSXIYhDmHxQr+0OAuP45qEJTDIM7N0Bhe5IeF8om7a8cipC20JuA6nHEuNziH1//7ePlZO0HrQbNTRmKXD0872PVSr9LqzeQvte2S8JanAcJQXUbUAK1fDtlFm6rhSKWOmwbFY1TI8zixzvBIWOWbJsm0kKdGXs8trePWLlOV36txjaDGdehxiPzOHunLJxw7HKcY6wMwSzbMkGyCOue6g8uDyA/IcheVVjl3KAgyZSvXqJSQ2xwWlGRwu5KsDBZHmKsrSFOaVUppwijTNIJju04lCNKTvDJIMFTYkypUK0mT6Z5gpGxHXebt7t4M+U/VajNAL6RmunzmFCxeeMP3QYzmB9uEhHC76mmQpRhxPV6+5QExjarY8D1EeK0VnTJ9Zlk/xkgDSLELuFNg72MZBh/p5FAxh23mfCAiWrBgMhxNCvccjzaSh6G3hocKK2T/7xS/i3i4ZLVubd+ElTM9Ky9TB00rjiA9Y/+Sf/S58Ftf8q1/9Cubm6NDp+B5cnt/Xb24buk0KiT6PZc/zYDNluX3QQcwDy5IWYl7EhCVNLUbLcaGPIa0KSqtAgQIFChQo8Mjjp6S0xCd0Xe6TtQNAdbWMn0ZMuofGwcZC/+Sf13lgrbivnNf434EJa06ajB4h5Sfu58EINi6izW7F29sHkJzhU3FjfHCDrGbc3kbdo9964vy68bq8+/6HuMN6ElonWK6yEFu5hMMOnb4++t41hEwDjZTGKGCBviTFdpt+qz1KEQ7IIr519wCjNM/GEWiwUNrCwgL2OdL/jY87aDSmp7Ry6oxey/sC9Ix2ox7XSpMTna4lTMmPeDSE3+DqtXFsAvEa9RZC1oRwbQsWB8KWfAuDHp2Kv/+91/DeuxSYfWr9NM4/RrTHk08+aaoBr66u4LlnSUOn3+saj8Zx0EmAMuu0eJUaBgE9z6DfRRbQycqtNFGqkWfmsS98FddYC6N98xZOfZ5CMU88+2mMOuQhsStNxEzDKhCNAQDSLaPMdWJENgRY9ApKmM68LzNLTLjRtB6LO+pxv05z6vAcDyWX+qnXbcMN6XSUJAn292lchFEIwSVBRBbAY/rM1SlsyQGobmayCbUUSNgbo3WC3W3yeh11dyDZM9BqLsDj153D69jdI+n/NLHMyXMYD6BTLlGRhWh3aYycO/MC/FJ1itYRdg92UGXxrplKGTPzRAlU6xUT7O/BRsQlLZr1Ek4scV2+ZIhOh+ZifaaGCpcxSaWGy0J/dddDxFkuOk5Qyk/aUQybA4lHox6SgOZiyRPos1cnyVIMBnSylRJGar9aLaFanb4KdZJmGPH4jNMQGXtUyo0KSlyNXSsF1+UsI0/DAfVtGg7MPINVxiF1A1SSQrMwo10qoVJhz0W1gip7ciqeB7+ce8xsQwM4XgmVCj2jSr2BWc7Ymp1fMvXjYDtozU0XfF6q+Eh5XGtbAza1o5d2AUltnZm3kIa0Jvm2RuzzvLEAv8F126LQJKu4ZQcjpvMHoz4qHmcKllLUuH2+W0afvSiNCQ2n0WgAxXM0DTLcvUHzOxiGaDZoba2Ua4iD6QPPNzZ20euQF2Lr7gFSpsaqdQ+PPf0iAGB+cRaCPVFhkOL0OtH/aaxhsXdwfmbFJEBIKZAyDe55NjzW/YqTCCnot4bRyFBXvf4+hkNaH8NsBMUaO8IBfKYlS34Fukv9lqoI1cr0iS4KrvEcZxImrGFtdRW/+V/9BgCg3+/B4jAI33Ph8vqktMA+68RpBRPK0JytmwzhXj/AZc6+Pnu2joT3vCiMjIDrYBBCKRrvJbeEspXXDgOsBv2WtG0TLqOFRJL9h6K0PiFkfJxRQQbJxK4pMvMvRl1S319jayyCJ0wH//9NqVwc7xP/NqFB+DDJW/PqJmRMg2KUCiQWLUYvLM2gxwXubrSHqPk0SIejERoz9AP1cgVDVgMuVTy89ja57wdHR4i4WbkyMUCp2fmmKKUFl11xjXoJrRkapHGq0XRpQltSIB7RIjs8OsA8GxuNqm/Ub6eBnHhWJLJF+OQjNHE+ECbDWkOaOi1KZcZtKaVAliuG2pbJuqo3GuP9XSmzqUNr9Djb4MrlSxgxR12rVPEpVpkul8o49xjHTT39NN5///2p2ufUliA5JkDrcWyUcJqozFNfluqzENzfs8trGH6KFKD3joZoniXXs1OqQfdpASrNn4Rr0vdtk46vhQVIVioe3oUO81gd3JdybuJ5tIDmhVtnGRS/VmlmFrj6heOztKqVpqEbtm5cQZ+Fxuq1Wexsk8pX52gfZcEqpQhQyQ1PrQxNOhIxmEWBBYG8BG9iC2Q8Nj3bhsVjECI2dYPiVOGQKTMLHixW903SGIo35WG4jyAl2rbq1/D0M185tm05Tq6fhMO0YLNWRZXF7jIk0BanEFsaGtQPlbIDm2tghaMjXLlC9Gm92URjljazOEtMrbwsGsdPVGebZgMQ0kI3yN30t7EwSzEzKg1xxFmJ1VrdxGQAGVym0qA14nT6GJ44ybDfpv7xvXH9pFLJMc+l2+kaAzJM2shCNuAHHdhsQKyun8Jpjvn4+OJHqHB8zuLiIhoztE44jg3bZpV0y4XLcRL1mQbKVbrG80uoMDXt+j5slpFwvRIyphG1jBByBs5xGB6O4HDavW1LI+iYxTH6uer2KEDG83+lVYJk2uVoeASbKeXMVejsk+EZd1IInnOe6yGJaIzYjkDIB5EkkOYwmYRH0C2WnbAyo8CdWDBxW8LWSDgAqD/qAWq6WmEA0O6MDDWWpSHqrJa9PD+PWY4vizoR8r1KZR6sjNbH04vPYTRiWZORQsZUs1+yDeXUCw4QczZknIxMDF1v0EMcc8YZFFQeD2iNaW2ttRnvvpdhtkH7RJZ5qHnTFw+FGLsThNImMlYJCyWel7VGA5rvQWcZJFOHthBocrwbpMh1HxHHITI23qo1B0vzdM3lGxtwOTuzPjuLIYePpLARxbxeQpv6mlGqDLUXBxFiPnilmTLU9E9CQWkVKFCgQIECBR55PNDDo/VEIPGEuB8kJiTyxxQJaSrwZ6nY1fgaA2Hevl9JR0xkEknzL0KM5fjJ0TD+xFh3UCNXglJKmcycaXBxu4Uk5RpCSy3c2iQ34b5uozpPVuSiOEJ3QBb3wb1DzHJGxIkT66iyKNuVj68hYFd1ZaaBBQ7IqlV8+F7+uoQae2l830ONZfRt10WNA7uEGFeKF8IeW9YqhVI5xaIeirazICaq2I8rA09+h1LKVFEXatIjNBbU0wKm3ovve8aF6bg26nXqh9WVFdRrLDwYK4yG1CdyQpQviWO0uUYRdIZ51pOwLYndNp0Ct7e3UeFT6HEY9AfIbHbL1zxzGiw1F1Dh05fnlmCxjspoGCPjIOf5xz8NdtLg6LCLhOsNodREFue1t5Q5JbpOCZLFBuHVoG12hesUYsKblZdFF5nOPa7QclypHiIzwbTT4NSp08Ad/lmnhUOufr4z2ETC2REz9TnImHRaokFgtGK0ULD5pF0uuRA5DeBVzVhLM4F2j9zQKlVIjMheFZJThpKob7QzIBUg2cMnJRTXvsuSDHpEp9ArH38L3UOi2/7LX/+5Y9tYrVfh8OC0bAvdPNjfE8g4QNNLQ2h2c1erLmp8ghVaYIv1RzYP7kHy84JtG9o2SVM4Tk6HOOhzRlAQ9XHYprY7tkDIQmmNWgndmOmBig/Hyr0ACnmJCqXTHys4+ZOQZJkRlWvUq0abKgqHJuMvGIbodsi7IYWASmlOeDbQYK2e2blZlNiruv74GcxzYLNnC2im0LvtDrwZoqXm1y8AHCbg2Lbx5JDHkrNlshSmDIMev47DCNaUZVB8lJBy6ZIwCqB4HmiVoczroCtdKL7Hkl3BgKeQEg4E6L46R3tGu00qByp3mWsJy801whQSDjbOMgVb0/f3D7vo7dI6Xqt58FgIM4oU0jSveJ9iyGM8FTEk/+40mJ9dwcihZ1L1KnA01zSTDgZHdD9hmCJmYcgwTpGyF1AIDStXP7QUAGr8oDsw1w+TyIiDKhWaEg/a0vArTOVIaUoEaZ0CQpn3c1bBksLMp9lm66FU67a3D8yeUamU4DrW+DutPMhcmjQNCAHJ9yO0glIcAiBhEgVsx4Xk+5HawolVCkOw3DIiLpnR7g7glIgCi8IIQx4nUZIa7aMkTU0b1URGMXnVH9zKYyktI/6oJwweIWAmPCY2Tj0WkaII8nHWlb4vQjzfGNQkUzamIiAMj6eFGttLwjJxOwLSpM1prUwKsYZGHE3Px+6KFoRPsR1SJWiw0F+91cLqKmUePR7GJqUvTlKMWJkXUhrxwFOvvoxqLlpnO3C93BhwYOWGBN3guL25/WhZY6NRWrB4YXVcFzbHtziOY2JdpJRQDxFxL8VYR1QKcR/FZa6RchwTJSwjikeGCn06Vcq8th0J180Xj8Qozz7xxJN4401KzfQcH1FEA3l/fx8eu9TlxPjZ39vF7dtEyaysruLMOmUBNWfq+M53vjtV+wZBgHItr/eUQZbI4NKZQpSzDZaACuheet02Du/S5pgc9nFgkSXR7R7CZsoOFinqAuAaZmPDX1hsnJbOQDr0/DUyjB+uhjQp6vdrLedWuq2VMdKngeMIzHMx2+eeeRnnz1K65nDUxxFnJ43CPrp7FDt2GGrYTM9WShLIRnz/KTzOOPMq83BZMsH3GsBtEvkK0z4SXlDq9SYsTg8fDRUiplil48Hi5x+POmbe20JBmkKMEQ4OcuGw4xFECVgMGGEqUeLYmyiNDR16ruFiY+MGXxPAq9M1gyDBiGMpfNdBicUJISRCzgjKXKA7IGNm++4hFhZpIwzjEZTHsSbx0LAbp8+cwg73rUBiDHxp2TjkjCrf91B6CKrA9zyznHm2hCzTeBv1+0hyqYZ6HUM2/DvtA3gcY9NaXMDhDo1bJwuxy+tQrV5Bm6UYfN/DiOM2bl3dQGWRvmfh/HMQzpiOVrw5UZxMHkuWIRpS/1iOY2IVPVGCNaUwn18ZbylxFEKz0eI5ZZQ4nsvOgMWTlPVVrTVxL+C56KQI+WAZBgoZH1ykRQc+gApO+5xdZdkKDtdDs7SFxOKYtUhg0OGCklsd+BXeG4SNXo/6puKWYLEhn0UKSk4/FweHAyS8rqVxhoCLh8ZRikzlho2C5AOH7Un4fJ9CZpB8n6mIEIQs0hkeYDiicaqUDYtFPbVITfFY2/Yo0AlAmiZmT7Vt2xzspJSI2EiwLQt+XgOwVLovvOI4/MXFO2YPqPk2SjzXdaawOE+03XyzioUZehYSGkGcx3RW4HJ2leOOpUEOuiOTPSeExl12LlTLDiyHpTWORuhwbbVMT66eGiq3GwQM/ae1RpqN7YDjDJ6C0ipQoECBAgUKPPI43sMz6aUxnhx5P11l3lcoc2kGKTPjShYCpoKu7/uIjbtOG6+FEMJYoFppU2NLyLEeQJJoI8qn7vNeaRPMFcaRCQadBuWyY0TThF01XiYpJCR7kFzXMZahhh5TaRPUT6Yy5P4qncEEXTuubXQCHNsztaVs2zYnZ8uyTLVelWUmICtJYiTcEVEUYTgcV2vOK+tOA2vC5S6EHD86MRYeFEIYD49W4sdSZkIoWKzx4PueyYzr9Y7M6bfVauHpp6m0xPvvvYunn34aAPD6668b6x7QsPNaXXFkvAOD3hGGIw4CL5Ww0MqDRB+Mw84ApRkWj3QkbG5TAmGoCim7xqMS9voAZ+vYtjJBsKP+IeyETkp+tQqPg/M8r2T6O40juExjSR0gT7uieTIRVq/HJ5Mx9Fh7R2sAE56/Y+A4jjlx1et1lNgzo5RAVKKxn6kUSydI62hxcQ23r5EApB7uosEBtzOlVQyHdKocdm8iHdJ4DLwKLK6+7UsHmoO0+0dbSJlOcm0g42ypJImgc+2STMEyzt8UWR7IqDP2fE2HVrOFztFYp8r1Oesj00YHJAVw7S555JySY7IyhqMQda7hJqQwNaGq1QoqNaYyQwE/4+yg0jjrwbIkFD/fKBlhmwOzm40ZnM6FKKEQcPDw9vY9s2Y4loQ9fbwrSiUPDs/7KIzN63JrHi+8QMH7L376RRztETV588Y3AM7G0XYJu1ukL3T3+iYODqiNKs4wO0dt/9SLLxqv5hOf+jxOcy0+2/FNwO7kOCRnK1O3SWTmveV47NGlAHvI6RpZbtnw2ANqZVU4oJN+OtJARn220FyAw9To3Z1NJOx9tF2FjIPQG6WqybZM0hQh886y7CFK2cvRj2BxYLWaWH+rtQoqeekPX5hyDCoTaHLZAs9ykXItKmkDaTwW+jsO23c3TP9ZlmXWRLfsoMJebNuRhi6GUAhjrgAedhGyJ2cUB0g56FojNbuxihOkcS4SmJkwAqW08ZZopSB4DbUtFyqnzCwLfh5qYDvG+2hZ1kOFQcRJbPbCbpShx8HVUgCDXRp3W+0BmlzuaKbqI2Baan4mMRXhj/ojU1rHltLo2UlY0EyJu13HzKEwVSYBJk4yk50ZJanZFycjVpQaB2+naXasttmDY3gAsyhQOnMuJChMKthkyrmQGidOUlpjs1Eap4oLYTY727bNJm7blvlslinYTOXEcYrRgHn6WhURu6qvXdtAHDOvKyb4wwnFYMuyfixl85NQrlRMIT0AUHn9LymRsaGQhjEs5v5dx4XH7j3X8Y3B5jq2eU3G2DjFNKfb0jQ1bR9FIdJhat5XuTLvRPYO5YqPX07ujPlCOQ0sMWHwSDlOOcf9cTy5waP0TzJ4YMaA57mGVusPeoau8nwfT/Iie/3qVZy/QOmYt27dwuYWua4lxqnawWiEjJ8vlMKQN6qjgxiOmM4F293dNBlMrcU1zC2z+rGAyYqKwwgJLyKOsOByzIPKMhPTolWGLK97paWJIRgMhybzoVlxsDrP14e3EfNmQdQf97OCMYS0UiZLS2XK3E+WjjO2GueOz2QqlXxTY+2o20XAtcPqMy2TNbF/4BmDBCrCzDxl8SSVJsplohOsqo9Bl9K3jw7umQygUdyD1kx7aQ+CDZXhoGsybTzpjoeggHmGlnThMP2QxEOzICmtAPshaDvXManIpZKPpSVaS6IoRsqLadQfwOOU4yCKEedp9cJGl43YxkxtvHlYGVI+mIRhCItVsh3bxcEBxRe5rkC9QnEDjXoDu1yvqts7wrBH/SxsCzZvJHEwhGfT9XPNGfq9KVEr+ybTsTuK8PxzNFd+4Wu/grOPP8H3U8KoS797ONLYYMq33elgwLWCfL+EpfVVAMDa6jpWWLit0WxixJTG7PpJlJt0EEhVNqFBPxE5KQQUzx3LdmEz7ZRpAcFrlbTEePM+BqWWD7abkXZjKF6va04Ds3Pz3O4+2oqFXFfKqDAFB2FRCjSAuXoDDRZ+PTzqQSd5anmKUcQxl3ECm42yRKXwuCh1FI81zEu1KlSYt9s2YneO5SLq0+8GydBIckwDvyTh+jn1LVHiQ77jCZOppHRiYk6CMEZ/RAevwbBjqKsknQgRsCzYnKnklmGKKKfp2DhN0wSSjRDLtsYEus6Q8PXato3Qn21JEx5B100f2+qWqvB5nyu5tolhBMaZxzrLcMRSDUEwNM6IewcdI+abZdrENvqeC4fHkWNpDLmOXJKOwDYj0iwd1xvMNIV7gMZpvscEYWjakqnUCE5qrY6l7QpKq0CBAgUKFCjwyEM8jNVXoECBAgUKFCjwHyMKD0+BAgUKFChQ4JFHYfAUKFCgQIECBR55FAZPgQIFChQoUOCRR2HwFChQoECBAgUeeRQGT4ECBQoUKFDgkUdh8BQoUKBAgQIFHnkUBk+BAgUKFChQ4JFHYfAUKFCgQIECBR55FAZPgQIFChQoUOCRR2HwFChQoECBAgUeeRQGT4ECBQoUKFDgkUdh8BQoUKBAgQIFHnkUBk+BAgUKFChQ4JFHYfAUKFCgQIECBR55FAZPgQIFChQoUOCRh/2gfxy983/qJE3oL1rDsiwAQJQmkPzacRxkStH7YYhhQNeHUYowDOn9KILWGgAghIBt0896rgshyObKVAZ+Ca0zc70lJSS9RBBFiPmaLE3hux4AoF6uQaV00SgIsH/QBgD8wn/7O+K4Dvg//uB39K996VcBAEoDc7U6AEBqjSCNAAC9UQ+u49A1WYr24SEA4Gg4QLMxAwC4fP0SIr7ncyfPoDXT5PsXaLfvAQDSdIizJ54CADRqc1B8D5M3qbVCf9QHAOy2D/D6+28CAN7+6A2sr58EAMzOz+HyB5cAAP/7//gPjm3jN/7Vb+nDI/rOYRAhGMYAgIREDKoAACAASURBVDiJ4Xke34PC/OwsAKBSqSDLMrp/S0BIej0KBgjCIbVFhYj5mt4wxM5eBwBw2B0h5DEQRRnihMePHN+mbVtwfGq95zuwLHqoYRgjClMAQDCKkSR0zbe/8cED2/h3/7v/Wj/5FPVrtd5Ar9Ph349w8uQa3ftohP6Q+mBrewNwXGprs4Wf+fIXAQCzzRlIm8b16O49NNaov5Ul4PMgzDT9BwBZlgCaxnKSCdjcT9AKfAlUlkIr/myW4toHHwMAdq7fxPbmDQDA3/n7//jYZ+g6LW05yvxuo0Tj9MTcaSDzAQCxrCHjX3YtBxZozDoqQbtN46XVzHBqlfrq9uY+FK8AQmpUPXoONVtj2N4FAPSCIQb8HKLMheXTuC5VZuHYVWp7nCHIqM9j1YNGyH0yhOCW7exsH9tGwHTbf6w4fr156yvatWnOZZ0a/uVv/wAA8Naf3obvlAEA62dr+NQz5wEAM+4arvGz2O3uIIlo7nYPh9i6S+uczBQ0aJ4peEh5PV5/soL/9L//eQBAWknQ7tP1JVmGpWicD5I+wj7NaRkoRJ2ArlF1XPzONgBg6/YhBn0a28M4eGAbf/N3PtIVm+bwQk2iWXG4YxRS3kscx0UQ0/ft9hViRV9Jc4vGoBYOsoTW39HRJkYDusfltcegeO4CEkLTZ4WWZonRAtCa2ic1ILXivgF0/v0AIHi+CoU4GgEAfuu/ee7YZ/gb/9vvanAfQwg4vDdYlmX2LQBQfI3WGoIngmVZUHxNqpW5Jl9vP3m9EMK81lqb64UQE3uqxI/zXQhuPwCoTJn3/8X/8J8d28Zvvv6R5scCYUn4Fi0UQo/371KpBAjqZw2Y94UQsHmt8jzH2ArQgM74WaeZaQsASCn5t2xjE0gFCF4ShC2guDFaaFi8cEkNKEHjTekUgqfg+lzlx7bxgQZPfzA0nSqlhNI02TIALi+OKkmR8KYWxwmimH48TRU0/7iUtvmeLMugeZCmmYbkRsRxagynTClk/IC0Uuaz7aND3OuRsVGr1gG+plouo+zToj8YxBgOwgc16z7862/+EfZ29wAApXILX/ns5wEAFoB3PnoXAPDh1Y9Qr5T4fYW7m3fpfvqHmJ9dBABc+dEtJCFN0LUz6zjJm6VOQwwGtNAk8QCvvPAqAOCxC89gdeUcAGA4CGE7NCjqtRq+9xYZOX/8rT9Dt3/I/RPi5u0PAACrC7NI9fR7w85OB0NeKKXlojukRa3b7cFxaPENgwB7bTII5ubmUK/Thtqseqj7tBD7joMBD/zhqASVUD+7woIj6TstK4Zl5YPdhuCBrCb2MiEERL7wJBIqo7ZnEZBFPN60Bc9+4PA0WFg5gbnFFQBAnCaoNBoAgKoW8Ev03MIwgES+cADSLEAOrDIZeoFykW3eAQDc+Ne/h+Uv/hIA4MwrX0QU0IJrSQFb8gLnC1x7/TUAQL+zh8c//2Vqn1L0I3l7eSW2hA2vSkZCa2EeYTqaqn0AUHbnkGT0fHyvjDRhwzDooky3AycrQ/HcigDkFrWVKjhWha7v7KJ0nj47U49gC7rPmueh4VNf7W3cgxjQNY5dQ7lEY8STFXiVeerPWCKJedERFnyXnqdnldHt0watsyRfD6fG5II+DfQU82Dyuyavn/Y3Hub7j4NlS8CiuViflXj+lVUAwKVL+9AJjQ00PAyTHgDg3IoPuMsAgDTs4srGFgBg77AHLaj/FWzofNGHgrCpD5vzNYQhjzFfoNakw1mlOgOR8fPqWsg0DaCo14XNr0WocbRzBAAY9CIkajoywJECvk39UbI0ylY+jgSEnxs/Gi4bG47tIhX0/iBK0Q/5cBWFONqnuXjnw++g3qRxp9fOw+K1xEIGR1BbLaGR25uZdJHxnKs6KU40+bCqgMMuXd8NLER8WFFCwZLTD1QpJTBhkORzXWsNnRs5gHmNiUO+EMK8L4WAUuPPTiKfB/bEGiilNBb1uLW0X+brWb7ejm9i7GiYZq7k8DwPQULjNElT2PxrtrSguf/jNEGmU/O7+WFLAIgzej9KY9i8Z9i2BfC4S5PUtFFKCWnx2NAZNMbGn5PbpLGAtugelABc/t1UakQ8xmIkcFT+2cqPbVdBaRUoUKBAgQIFHnk88Ag9GI2MO8q2bUNpaTF26ydJaqxUIS2I3PWvMtg2W21i7OoTaQrHzd+XxpWX2+wAkKUSSUpWW5IpBOw56QUZXv3ZrwIAFheWEQf0/kcX38XWvU0AQL+n0G73pu6AO9dvYp9PpOvLS7i9fREAoLTCrdu3AAC7+22UfbIukyhGOKB7jpMYUlyn14FGOiKL+N7uLj748G3qNxHD5vZ6voPrN68BAObm5rF2itzW/dHQnDCEcHDvYAcAcHdjw5y4gqMY1QZ7wIYdpGp6az3OMqT5YQMKfe63rZ02hkPyzo1GQ6QZ3X+tVkOzSdTFhVPL+NxnXwQAVEsutKDT/jAYGPoySmxIiz1g1tCMGSEkBNNVaTZ2YSqloNmro2CPPXuJZVyvEhKuN52Hx7UdWHyykULDzl3MGpDIPQbjU1QUR8brUrUtVGrU1sGwj95t8t6p/hHe/MafAQDWX/4CwBSS7Uj4fBq5feMKfvDHfwwAeOIzr2Knz6eOKEQcUR9rlcH3yAUfxxGiiE9EtoOZuZWp2gcAC611tI+IYsjSAcAnmSgcosLUrqtSKJ7SkZBIpW3u2Q7JA6ojBRXR/HjuiVX09si7GfdGyIb0nUJLaIu8epbrY761AABw/Flcv7sPAChXWlDsetYqgxR0vYYN32VvopTIsmDqNuafeRg8rJfmP5RX56eFZUkIPpFChjh5nrw6z710GpYm+vX8hQW0KnTNwWYbIqQ+aUkHc1Xq5yhKcJjkNJY03nQNBYe9717Nxh7TuKuLi/AcXsM6I2iODXBiD/aA5sXhtU2sufT9Nb8BO+G5myqoKT0gtsyg+F56UWYozbIjIfK5CG1ooNmKhZA9CZZK4PO87GUDdLo3AQDZ/hXUmjSH6r6CzSf9qisQMU2XRX3U6jSPK81FxOwBmJ+xcH6F5ofj2NjZp3u4ey/BIc/XTAoopt4eGkIY37XWekzfABATXp18XGs9brvOUmi+T2CC1hHix3o6lVLm73LCYyOhjUNZTVBjdM34Vh/GwxNFIUYhzV0FDc00pWs7cJgijNPE7CvSsie8UdrQhbZtkWcHgBRjClKlyqzBtm2bdd+CMB6eVGhYWR7nIs0Y1ELAtvJ9QgF8vUojxBF54rE0/2Pb9eAdRdpmIsVJZhZ6aVnI91ulYOjMNFVIcypKABY/WNsVSP8/9t40SLLrvBI7974t18qsvaqrqrt6Q6PRjQbQIDaRoCgSBLgvojTaraA18kiyHZ4IR8z4px3jCEd4foyl8Gik0EgjjuSRFSMGQZDiThEkQIAglgbQQO9LdVfXmpVZlevb7/WP73s3syiqO/unGXV/AIVC1st337vLd8853/k4gLFdxzwYpRTSAX41NfCeZX5vuXl0Wx0AwPuf/ghUgQb+X/4/X8Sxo8cAAB955mN49kv/LwDgnQsXsd3o3LZbu1ovgWZqRiQRausXAQCuBSxM0yY+UhmFIJIAVlzGjYv0UBs7KapVfpljNrZiXlC6EXLMM4zvn0Jjq0nfFSnECb2c7XoNHZ9+b3kW0oSus9PwIW16yUXLQsj6Ca8AZIBcGACdreE3Eq/gwuKArdUN0OwQzL1Rb2KnQdfp9npImLKUmztQiuDk8+9eACQ989l9U9jkDXJtrYlWl55zebQIy6V3F8dxf7JCmoGsVGomnwBgg67pwEWseDJJGzZTbIkK4cjhNicNNUBR2WYRkUJC8iSxpYX1GgWSZy9eQsrP0rt8DTscIPu9Ng6zbqvUDeHH1Ncv//WfoTBJ1KXUBs3GlR+/jDw/g9W1NdTeeAkA6cvijHIKAvT4eXdaLZw8TDRm0XOgBxanOzVLFjE+RjRpq7WOXqevw3KZTko7HaQJ/Wy7HhKGlQUkRgpl+nzoorFCQd2Jg7MAU8GRcLFRp3G9oyVC/rwQCpOTE9THWg+OS++tFwRmgZZSIA7pobQ7HTg81hw3D2D4Pq6tr6O+tQWA1oaMKh+E7wd/pvv7p8ZIJujQBoL/yc/3Nw8JpdXAn2XBg4Ye0D4M6hCF6bvE+PgYAGBhfuGOfXQcG4q1XtJJURil64+4MTbWqO8dfwTjc0Q/2bFG68oyAGAyl0P5XlrzJhs7eO0tOmw1o2RAIqdNQDAxMY5ciQL1zlYbknUzVjNByEFOM5LYvkZBQ3i9gw/+3P0AgMOHj+Brk3Tgu1lrYtg4UdgSMT+bjnYQR/Q9XqwMFWVLgQJ/PhExtJn/Ch7TYb36Fro1OhwirKNi0di8b0ZASHpm/nYN56/RwTLvOTh4+DHq96yNmDWdUgBJyNohW2N2gtblSt5BFNHPrusgVcMdrgAAuk85IVWw7H6QY5nDntil4cGANMSMHS0NvSXQD1Y0tNGxZHMAwC7NS/Yd9HkBweuZZVn9wENr8KNi/c/wAY/vBwizQ5sUZh4opRAPrFupzoIWBzLp36tgqtF2LNiJ3e8734JEXxoQJYnRNXmpAngNTmWKWGa0rYWUARElLAiXrp9PU3gtGhv+6jqaNdLLPnTy+E/t1x6ltdf22l7ba3ttr+21n/l227DWdnOQMhMeW31KC/1TEwmMWXWeKANnQlqQNp0GbduCsPhUIwUsFjGlSdKPECGQhX9JoiD5M4kAZhcPAADmDh3Ed1/4IQDg5R+9hcuX6MT+sY99GA+efggA8MMXz2GnOTzCI+IUNgvyNus7GK9wRNnOo7VJJ67UlbCKdFIqegXkGWWaCHI4eXie7t+zsOoRUuBKiYSFg/WgASsl2LrX6WHfPImpCiUg1tmJR0Iz/ecjgWZUp1py0XaZcoo03Oz5+ynsuwhVS6U86tt0bxubNVxfIuFjrbZtBMNaSAjB2Q9CQINOXa1ehC999dt0z8W8OT3EMWCx0HrUH0F1lM5sSZQOnIS1EZ8DFhz+W601HDvHfbfNu7ZtG0lCyEUQ6F3itdu1QahWCok+BiAMHCOlhMfjcapS7Z/6LRvNGiE5ta0NVHL0GX9jB10WU37rP30B3QFcIfRpfH3g/lNYzFO/z7x5BusvvUjfpQUyklYhNSip0sCRGRKgVrwxQO8+sd2uRQlgu4Q4jo3PY7RCY8rvrKPZInHpuFdFzPMpCneQtwjid7WEzaLWUIcQcZYFIZDLE5Kw2axjtUloX+gUzHWq+TxW14lK2+kCStF76/odKD6Ze54NKWlcj1QqEJJOXN2gu1tEeYf27/7w/8I3v/lNAJTc0OXMnDRNgAE6PUtWkIrGGEDC8Awuh+r/rISGGhhHu7Jf+L0IAJkmV+QsIMcnyVRDMZIm4r4QXUsBi2lKBY33P/l+AMBf/ce/uGMfNRQEn1qFbaE8Su+0XJH47tcpSWJ5bRknHzoIADh5YBFjLHQfzeehS/S9lu3igqQsv56OzXiOUw2XUc0Rpwi1QuhiY2MNCDnJI7LRqNEYXu9FSBmAHlN5VDwS/FeLecxNEcrnXARiMdxctCyrT+uIDBcHIk0JHwBgKYXQ58y/KAKz3lAQCFlkfePadawsEcLjCIFcnsadK2L0mkSrXnz1+1i7TijXkXtPIOdk7zOB4nUk1RqaM9LSVMGy+hRSoUC/z+ctJMnw6Eeskr7wWMpdImTBVHOi9EBiiTCMiC0tg0ZrraENSkOfo3/qn5rtNSg8HqR+pZAD1JWG1sr8PoP+HMsiwfyQzfd9g7xbjmMw0jCOoaOI7x+G1nbctH9PWpseWbHVz2KTFhh8pL1AZZRpAq1pn7ODCLJLe5W0UoDXYy0dyExQb7lQfA+t2ha23yZWpnHxKhLOtsPv/uZP7dftAx7bheNwCrnXD34USJMBABqByd6yHGGyPlIk0PwwEgW4nAHieZ55MHEUAVm6W2hDMtSbJqGhybqhj2qFIPWddhOOQwP/yKFj2GGqSGsbBw8fBgAcPLiIa1eXb9etXU1rDQRMG1U1qsz3NpdTTIw+SPcpPFhdmroHR6dQLpFeKMkl8LeYq8xJeKxjGSkVzcBM6ilyFgVLk0cn0NakF0p03SwMQS8ayEqLwQwFPCtGwoO3GyawmSYLwxhhtz9x79jSFFGPaLvNjW00GtlGAqSs21GqD/xrAA4HYI4lEfJiELX6NIZlWchlAZISiAKmHzQMjQRQBg9A2iRLZlk9Eh5TKSpNzbjy8h7t7ABkakGpfpBx26b7925JCeunpHQKITAzRbSUZ1uwWFeFyig+/MlfAgBcu3kTnbfPAABe/r//EJt8j9udNhSnEh87dhxnz1K23NrqGqZnaWw++qlfRuLS59MoMtohpJF5z2Eco+LlzP2MzUwP1z/Q5qj5+WlIeByoaBWiyxq0fdUY0/uIu97a0Qj5nSDV8Dwap6MHprG4jzbQ6vgYQkHj+sab16A5LVrFMSxNv885RXR6WWDmwmGNx6g3gpipYI2on+UiNOI00/AopGp4SuvcuXN4+y16ttKyoOL+GLeqdM9aK6jmP85uEw4Me3YXceQ/bi6AIk9AKYEWXzT+iQ3RyYIrjfN38R6VUiZLFdJGoULPc+b4NGaO0EK/fSvEyutLAIDjuoopDqo9G3DZRsIKI1QyacBIHjEyLV6KgkWfad1sILdJ3zUeJ6hk9K6wYPeoP+MaUHxwmcwX0fPpkHf23CommK6fnCjgVjMLXW7fLNsyBxgK+7NNtq/N0FCIkKVjW7B5jEgVo7ZOh4/VG1cQtIhqs3IurrO2Lv/qK1jjQGjr2tsosM4vX3AhmFqK47hPV0qJKKJnE0epoYo0NCzefYMgghgyoAMoq8vke1tAFiu5KkGJZR8tlULxfLWk1ddYiSzsA6IkNFYsUBZENod0AhMwDKS6a90PhCjbmQ9VKtmlEUpYNqGUhsjW35jW8mFbGIZApr2x+oFTEsdGnqIBIw2I0/QngjCWGKQ24iQLDoWhNR3bhu1k0pYUNvigW28gXL7JzzbBKK+vpXwZCh5/l8TKEgX7yxcuIqzRmM0rjZKxLPjpbY/S2mt7ba/ttb221/baz3y7LcLjuDYczgBxPNdAUwpAxJASZVllkL2C5WSRbLgLDfD4Orl8rq9GHxBwkYdBhhTZUCw088Meegxzrq+vYnqSMkYuvHsJ++fY60ZpFEoEqc/t24dS8afn4P+0Jl2B2VHOYPGAmE8bBxcOIOnNAADeevc8gluEGqUHF3GDI9CuH8D3s6wbG3aBT+9QiJhmkBomqoUAYs4kiNBGic33OiEQcYTrFCSUT/fQ6YWI2UAr6UbYbgV8TQk7P7xvRLfdQcDZQc1WF4FP1IXjOOYkpOLYUI2O0xeWJ3HENBG960yMq7WGx3Cj63pGNEkUZZ9Syq4pZf+ajuPAY/Frkuz2Y7D5hJTP5Qeuc/sm0DfuyrkutJ2dHtWuk16hQAhcsbAfkhGerSAysKxbKCE/Q5lTE/fdj1sbROXk0whPfYg8eRbm56F4nKb1LVguIQ9Ti4fg5mjcxXGEnMunaWggg4YtgZBpUr+xbU44wzRtUWYXACgtEfD8c3IVgNEYJ5dgcpyFgF0f20xjuk4eKiVUzy4oKIf+dmntJgIQUhTChsWAUAUKM6NMvU5O4cJ18oKyRAGpZmROCVh2Bs1Lc+pTOoBm1EjpBNK6Cy/BVCHD/qUk6gggb8dciedoqhAwWlmADZFj00pLQbEoV8cagueNAAzET/faPy1nqJTruogVdT6xFCw+JUrLBvI8lnTYN3ETQMYpp1rBvgsPF8/1Mq9KymBhkb43msOBRULnjuTymOLPT2kLBZvRBymRsxlF9kq49wDRXrHQ8FN6Jmtr2xCMKCabHTjsoXVwcg7lnM3PKsbELH1DqVzAzgYh5a4SkILWhtZ2DTNlus4HTy/ipfOrQ/VP2E5/3RcaDh+pHaHRxzaAmB9CqFwknLwRt7dw4wplya7dvGRM57SwsLJKNPx64+sQisZXATFm2e9sZvEgJmZm+CYkUkY5tAaCoJ8pGjGtF0d9EW+3HUPzHMJ9Q/QRwmQYkQ8PC3rTFCIba1oZKlUqYUS5UgqTrBBHAQzmoK0Bnb0y6JNSalf2ViYrSZLEzLkkSXYZFw4aFfbhToFUD7/eADDoU5Kmht5K0j6aJCCNmHlwn4Doo/yD3kSWZSHle0tFAluzF5PWsBLKJmxvLkNw5l3OFZBrjPzEgGXTmpTLleC/e4me59YWyh4jUY6Ebd0e4bntEygXPEieYLBtaKcPcTkZTytt5BjTS+PELMQacpdbsmNS9ADJC6UrbDh8s1oqBKzyjm0HSUQDUGiJ1WuUMbS1uo6Pf+5XAQAfefp9OHz4EABgu76BYplgZdctwLFv3+nBNjpRwsI+4qqTskSpQhOouDmCv/6b/0JdHCujtkFOsufXVzE6TTx3oPsOliIVUGwkl8Q9WGwYmMIBr8OozzZQniKTu0IwiqRGWRCJbSHw+IY8G1GHF18NSNZeSC0R7NCzdUdsVGfKQ/dRKw2wSdnG1jZCNiHM560Bgytnt3s2TyApJBQHgWmawuXA1bIcCGQQcmrckjN9AjVhBr5l9blc1+2/H9u2zQSybRsOjzGl8kOnKFtSQmewuCVgqb57dwYl25aNHXawLpYrph95JSCY768WPBSm+f0c3o+dZXo/n/jIx/G5zxLt9Yd/9Ic4cYTGXXdyCt40j7s0hGpzdkEcoWOg59gscJWiDc0Bo4RArzu8QaYlJVTap3hciwKAggdEJsNvDXWXaa/INu6olozh8cbtukC+QgtHuVrEzhqNa0v3MMeUnxVZWJwnrdGttkSScnCaCrMoD8L00pJIUwrwlepn6cVhCjd3F0HdQBaKVv3gBwqIfZpbwpJQnHqSCgU3z9Sk0H2tlFImbd8WNliOtosSGPx5VwqS0pBJNqeTfuaoUv3bEcAAL4E0iIbuo207sD025st7cJkGd5VErk3j897xecyVaX7P7ssjYtPLixdvQdZpjLU7AUb5YOc6EiFrq5woZg0ZUHY841ze7STIsdlnnI9RqdIaNj4xhTylgMLfaaFYpe+tTE6hwN87NZ2gkBvuEGnZ0lAnJVthqkw/TxQEvOxwKy00evR+rq7UsblOOpxbV97A1YuvAQCaO2sYYfrXzeWRz8ayYyGMmF4ReQQ23XsnTtDutPgeXOP2TvpS3mSRZow5olgjTbK5mEDFw1F2AKCT1MwDJRQy5l3pBKnKzPpiRLwO2U7OrHm2JU1AEgjWp/EdZuNfQRvaU2u9ax0067KUuxyeB1v2GZWmkEZLKHaP8zu0RKUDFiEKWeJXoeghYo2pilRfQ6cUBAcwQkpjYq2VNplZlrQAK0v/V3B5juY7bVibtNZqfwepR3/gt9uoXSb6sl1rwHNorozPzKDAe7waKUPxZNRSQNzhELlHae21vbbX9tpe22t77We+3V60bPWN45RtIwvzLEeamkPCksjch9JIQotMUa5MpCmEhDeADkkrgzwH6oSkKcI81+GKAtiZVwEEink6dWgh8NyzZPRWq9dw/iKps6M0wL79HwcAJHGKbrc79AOo5i0ETBUJR+LB01T64fLVdxDyqbLkTODnHn0CAHB4YT86mq7/g1ffRMwngyTpi2UlIsxPEFLwvkNTaDLEkxw+jHOMizfjEiZZjOjYCnVGvSKH7gMA4gTwsvpJUYqET2uVyaJBgYZpju1ie4dgwnqj1RdUJwOiUEui26P+hmFoTiTFfB4BG1ANioDz+SKyg8fOTgtTU0TVeY67K5Ogb0LY94dw3YHP/EQtmgwdSJJkaITHtizTFymEGV+IRd8kSsVYXVoCABw9eWpAgK/xve9QZpAf+phgajRUCrP7CPFImju48MbLAID1tesocsbh4qGjxvAyd+FNUxNIJcoI9m3HgWTU62bsY4LH8mShABUN/w5dCCTI5pMNi+EG5XeQdOndFst5BB026Ww1YLN4NUkTNLdozH7mfR/F5Ay9qwvn38G5V6hfBxb248MffZSuaY/gyg3KhLl08SoUmwo6jkSqstpofUNQP+hBM00GoaETGjuePQHXHp7usQZOoGSiz7RBqqEYDRMFG2BjvUQKwGYU2bYNBi+l1bf/ibVBeOjZ9amITOoehgE0H0M1FGI2EBVSIOuu0DrTkZJPSnas19glrr5Tk8KCy6dcWzhwBaEY+ciFxyDD2GgBLlOuoVBo8In67LVleIIQufHqGMIOUUGJlUJy2YYRz0Keqc9KroCUjdhStYM211xLnTJu3qAxk1y8Bb+XvccIp04RpzO//yDWOtTHnJXg+MkTQ/WvrDtwWSg75lmYLXImZxHGbycIIxRTyhLbufoSlt4+CwBYXV5Cd5soX5nEsHMZiumiUKAxuLB/Ad2A/7bVQpdRnXPvnIXWNO5m5o8gzrTmKYABCUXKW16qNRyWXxTdHBAPzwoIrU2ZGsrSyGhbhSiicZoqRTQVKBEFXEMKQqHL+4ojAYtR8iiMYYx3tdqFxgxmbGU/R1HUZ1AsCzl+VoNrK7Q2WWPQGnEwvHdbzw+geNwVXBcHpojqn903i6vXSN7RjnpIeN9ScmAeKAVkcQAG5n+s4TZpzAbtBkIem9HmJvxbSwCAVthGvU3vNPYDBGx4qKIQYFlG+/KbWJwkOvfg/KKhF6UQuJN1220DHmFbAHfIsm2AM1VgJWRjC4KItMwevECRP+OGljFNEkIg7zGUZVmGYxa2yfQEPAVRZhogjJGykVmpVEKPA4Y3z57D5g4NliNHjuOrX6M04LXNHZx+lNyAV1ZWjEZlmCZzAutcWHN+9DD2VYmu+MaNvzcbhr/TxT2PUM2bTz71IVy8SfDbD194DSEPTNuRkFlKXNyDy6mkh/bPQTAfezNKoMqkOh978F40z7MRWHvT1DFa1W30QNexhIZbpg1Y2QHsEtNDNlBhvdAw9sfvpgAAIABJREFULY1T3FohQ6Z210fJy5v/l8GhURghW9FnZ2fNfAt8f5eUxlBglm0GWhQGhiIqlRxDgVmWBSvTnah+4TulVN8ZeSCtM1HKxCdpqigbYog2SMEBg+Zy/YK36xsrhhKypDVg2qWxXafMkG6vAyumQPX06Yfwnkd/DgDw53/8f2BrnTQEkA7e4FpnadDDsQfew88phM4COsftb762jTBii4JWgKKk5ySLRahk+IAnDmMIJ1s8FDyeT652kPIG+uCDJ7DM7uDNZhtxQvMgSRKc5A1rfGzC8O5RkGCW0+QfOPUAxibo59Cq4OUvvcDflDeZLYMFCKkQJI2XcqkM4Q0UZYyz4EHDcu5CwzM4zoSG4jVGuBJ2gZ+ba/dTyG2rr48KNZIsG8RyYbGGCrZGlNFScQIry1rRMGaDdEjT5vecdAot0d/MbBgai5J0smxU0+uhmuN4cBmOl6mLNGT6dVvDr9NmGYymiCJaky5sbODiCgWf15c3MVei4GQs7yHPvEHRs2DlaezlHGUMYufHK5gojfEXR0hHKNh+8Uod3z9D4yTo7CArEK2RIObPNL0cLl9aor8Nujh537Gh+te8daZ/uC04iLfo58txjFqDaM+N9TUkPfp55dpFdHn9DVsdQ2M6tmP0PxIp8vw+J8dGcGyCbEpa3R56rPVsdnzcuknSh5HxeXhl0qYJDUBmTr8W/IzSSvpxsEhgakAO0ywh4Q64KKcpm9Laol9pIOoX2E6iEEnIAbuU6Haov4Vi/zAktDZ6Vtd2kJoMrL4O0Ro42P2kA3NWqDuO475EwLJR5HT+qZECcnr4fTFKYjPGx6sVTFYp07icy8HlFyMcYZIVI5VC8Xi0pEQ2/QTSvu1AEiBkt/jO5go6vKYmtTp8PtDUOi10OGhMoghpjq5ZdT2MM4U7Pj6O/SM0rov2gF2E0nDvkKK5R2nttb221/baXttre+1nvt1e4WNLg/AIxwEkowp2P3qFjGFCcaUg4+xPJcxHpNUXo+q+0lxIaYRjjmXDyjGi4kl0s3oppSJ89t14653zePx9HwYALK80cO06n8z9BJcuUXR/4/p1FHLDw5NNAXhFoi422gv41le/AwC4cv0SLO5X6Af49teortKVc+9gmgWdDxxZxJV1gmArpTLYtRyTI3kcPkyQ29F770EvYBqo48NjCqSaaLwesllbfgrIjfIzbKJ6P/3t9uYatrnSerGo0VP8fOIQk3eRidaLFGpbBIU7UpjyAK7jGPjT7/WQy0TFjo0ul0yIgq6hf4QAnMzHQsdwrMw80EOBTxIjlRFjHiilhsWnzThO4TPy1uv14GZhvx4Q2SllsrQc1zFVdu/UXM9DzPV4hBAmW0BKia0aice/8o1v4amff5I+Y0kDSUshDP2kIZEwxOT3OigxHP8v/9X/iqUb9N6+/ffPYoxLmnzs05/DzRX6fejYEFn1aiH6hosqRppkp7W+Kdhd4B7URGLmE0HqTHuGAR5/jNDNgwfHcOkC0QPFogfNUMjExCQefpiQqFJpBPv2UYbOeHUM166Rn0W+VMUGm9F9//UzaHXpb3NWDir5x0JfrWGoSKqJl3mISIOiUKeH9zdxcnY/U8WBeS+y7EFyxfYkik3iiefk8Mj9J6mPlREUK3Tqs3MFvPEm+SndunULjYTmqLCsfkKDEogY2VCWhsU29zmvAMmGk3ESIVZsYqp1n7lIFHRWTDCBqRk4TCsUirCY6rBUDp0tTtTYBsY58eLWeg29iOD+axtLuF4jiL+QClQKGV0FzE8T6jw1OYKsMkI3DFFgtHWiUMKIR+trbqaIG0xRnPnmGVxdJ5TBhg2bIa0Hju3Dpz/0OABgfqaKaYfm61tvX8S1pWtD9e/tV75jEIBizjFmqZ1ugK0G0Rlh4MNmr6a020Pg04m+F0ZQdpY4YZuM2U6nBZfRvvZ2DQfmKRvLdhwc5KzdxnYLN24QelBfvYp9R+7lz7hwnX4CgeKEjaCnEKpMPCwQJcOjH3kpUeV5kLOAbaamtdIosAC8J2MEjCElKsJkkenEwAcko5JKm7XVyRfMOjFWcNFheqiTSjiZGF8KBFlGK/r1uaB1vyalhimtE4nYIEtp0EH1LjJ741ShzALgw/tmEPB4bPsONNexSuwUOQbG/NCH4lWtlCsi52Ums330NEYCv5R9QwmeQ+8u9oBOk67f3FZw8sSC2EmMeZ7r81YOE+wTlvdyJhs8E00DgNIaqbh9AsFtdxTpWFBZ+qW0YXtl/jkgJyMA2rJg2VkqXmoKxCEREFmK6YBTI8BuqeDNiQe4BZi/9WzLUGCW8LC8Tpv+6kod3/gaBSTLtzbgcfroIw+fwspN2njSOEYxn6U83blFgcSpX6CU4xu1ElbqFwAAI488iRFB1E9bA4q/q27noMeI9hjJ5THTItO34MZN9LaI21x48AF85lcom+zQ4QNo7tCiKTRw/eYSAOArzz8PwVKjJz/7q3CP0sL99sYWQsZdk1oNuTrplOSr30LYowlt5xx0/OHpkCjViDLIVqUmZXNy35yZKH4Ym114+cYN2DxZp6amEPIkCy2FSp4N4CyC5wHAcawBbQRMKrqQ/eJ1aZoaODYKQ0Npq4H0SgAoFkr878KubK7bNc/z8OMX/wEApVB+5ld+i66tNP70C/8JAFBfv4kkpsVcCtkfg1oYeNodm0C1Sptmu3Yd2+tkP3DPqcdgccbIen0bo2OU4SKhUGCthcwX4fMC3e34prir7brosDaqvt3ARFY4d1LCvguAVYuWybhxpIuYF+vFfRWcOE4BcsHp4eT9FIyNlMdRrdLCsW923mR9TE1NocD0UBQGqIwQ9O8UKlAewda3VrZhOfT7ONQG2uYKrNTfAUsJIQRUFuQIyVwQ00N34QKohcCAT10/+EljxDzep8en8d7HSE/33kd/Dh95mg5AUxOjcLMATDq4xpvfiy//AF//xrMAgFdefQN+yDooy4Xg+wyVxvz8fgDAAw88hMNc78y2BF5+8Vv0tz96GY6VUZYOepkLtBUbO4phmuflYXFtIVsVUW9TELB+q4WEU/5XNjZRaxCNVWttw+bDwfED03j4MN3n/Yf2Y/8C6SrcnISdp7nSCXroce1B1QugeR3t2Xl8+VvfBwBcu7mKXFYcFg6mSrSuf/4zH8YnH7kHAJCzfByrEg16+tg8fnStNlT//NYWejxGanFk7EuiqG9YZ1sWwh4FGHbcr82UQPU1KomGzgxPoxDdHm+4nTYZ1gKY3r+AmQUK+u49dhic8ItLl9/FViNbK4tmSPl+jK5PfxsmCiJ7n65rnH6Bn7tjHy1LocoH8rRTx2KJ5krLjzDCWiOdRvDTjNqXuI91c61aCzfabAviuQizg4vsa/SKKkLMQct2opHjdValqdEjSSlNAK4hjNGflP0sMEE3Qt/bC7HTGf6YpUV/fRLdDtZZY3NgfhE2H55zUQg7M89t7kAxj6UsCcUHCMuxjElxkkYAZ/vlLA9FPuRXJuYxxXKD/d0OJAdaXb+HKo+TUT9FkesEOraFhB2ztdBMr4NovTts/XuU1l7ba3ttr+21vbbXfubbHUTLElnxC+04EA5FZ7ZbAbhKShL5iNn0yhIJhMMQdhr0Bav9BAdICWMoBSGMilsIQPDtOF4Orst+PkrinkN0qjl9/z340ldeAQA8+OAx7OyQ8E2kPhqbFNFPjFdN9fNhmrdVRHUfoSv2oRF8cuFpAMCfvHYe9/DJp6FTvLZBdbt2Vtq4dZNO/onfMtDdSH4aiU2nkPVLNdS+R34S/3p6BhNVimS7O9t4+D1ELRw8eg9eeJ1MturdGLGm0PSdOvDSl6l2lejtYIx9Xg7f/8uYsL4IAPC3ltFrDR+tN9sdZAh8qmCypXK5HHqMPli2A81isdmyjfE8G5ztm4HPXkzbrQ5GOMsoV/AA0a/rEyuKxKM4NPSAUBaSlKLvMAx3ZW9lBl2DNIklLeRYvJ3P529TCXt3s20brQZRV81mE1/8r38LALh4/QbOXSUoPi81VtdIuH34yPF+HSUJVEZoXDu5Ahym1PzAR8IUXL1WwxiXN1lqdOExSnP9/NvYt3gUAFAqVvDudaKHolQZu3kVhGg1iT7wW21EYzQWhJB3VQNBy21jzHn08H1QLFJcPFCF0nSiLxYLePjh0wAAKW2MjRJkvLFeNyVZms0m/sMf/xUAYH5uCnNzRM8KN49zV96le1YCGlkZkBSZWnewSriAwKCnjcqgZCH7hamgjaBzmKaENiuSnfOQZHRYKvDexwnV+Zd/8Ht4/+OUTVYp5CEZgRYqhOISG5ZbwMmj5Kd18vA/w9NPPgAA+Ld/+O/x5W8QQhxLB3P7FgEADz74GJ54gtC/Eyfuw8xsVoJE4rMf/QAA4Lnnvozv/AOhiEs3loxxJeIUyhpunAL0yi3QvCnn+plWV65tYOM6jZNGszWQGSnxMNfre/Le/Tg5Swjk/GwZ1fEc91fCKzPcHzlYDTnLJdVo8Xj++rdfx/deJrRYRTFOLdI8fvT+4zi0jxCKDz5yFDk2HhRpSOJ7AGGqUeNsqDu1OGmjywLUXjcwZR2U2l3/KUNpRNyvNq6kMKLlVKcmycFPFbohfabVDZHGbwIAHtARDh6i93zo4EGUS6cAAN2giTNv0tqaaGnKWyRxiogTaYI4QpTV20oTJH62Z/zPd+yjgo+Y16auv43pSXonjVodgU3XLNgS+9hLaSxXQLhNe8PqlVvo9egeZkcKcJj+a6YhJNMzsU7hc6VyS+ZgM3QVdiPkMx8bKQxilurU0PhKK6ikv65YAxlew66nACVbZJ6hN945ixrveaONCK0VkpIEEgi47ty29mGVaO1OGtsojhFaPDJeNfemkxRpl32EIiBjEW0nDyeh5z8myshxzUCMzaIV0biLogQuLw7KsiC5orprSWxv0rxfqtfRrlFM8Iv/RL9uL5JwLFOf5NKlK/iTP/63AIBTjzyBRx6jYp2LB+YwUiaKx5IJFJi+yVkQJiVYmzQ7IVJTt0RjINUzFaZeR75UQZk5DzdOYHP66y9/+imMjrJTcaSQJjTYDx/ZDylpoOVcG/ZdpMKOzE4hYNhsSljQTXpgQX0DBabtWkGEsEaQrl/bQW+ZXB5VcxNMi0OOzqKyQJufd/QQzjTonv/oy8/j1AGCXT96+l7cYupNWg6OLVAgV+928SIXaFxvbkIpWgTTa2dwa4kdj7tP4NSJp+gZvv53CMN/XE/on2rNdhddntDSduBxPZ4oihDywpN3JRZnaFOvBDUIn55DXghYBRq8M/MHjQVBIe8iiHiSWQ78kGBOrcK+n6pQJgPrJ12FdZYZkqZQMitA55p7k1KaBe9OTQiBFsPEuVwRL/3gewCARpjA48kTRBHOXSaDs4cffhSjBc5+UwnWNykQajU7yLMz7ZxrQTDMunbtAiQH5k8fPYBjJwn2L5XLcNnoL1cs4sq75wEA5fFRjE5RsJFAwuGguDhSNP3TWt8xhXKwBVEdCzN0zdrGFcxN0M/bjVvotqhfyZEjcLMitL6PnXF2+xYu8ky7fP/7z6PNaZ+djodOj34f6RSX2eYh8D1IPtwMUOS7NTzomxDSB7OgSJtMley/h23akiaQcPM5s1g/8ejP4/c+/zsAgPc98gC0TxT3yuo5VMdpbHYa62gu0f070sPY3HEAgHJLsDmQP3XoAH5QpPGw2YswwsF1UQEBz++wUYPPmo98ZQSn7yVa54F7juPx91Cg9e//9D/g7LlzAID1uI70LnByDW0yET27gPUV6svla7fQWGO9hVamOPCD9x7Ck/cvAgAOlQQWp4jyLVcdFEbYlXykCGTPTecQBnzwWtvCV77/OgDgB2dvYR+vT6JXw3/3y2S/8aFHj/brJRZtbLPm4/L1Nbz8BmVynVlaRlwdzui02Wqi06ZrhGFKpqfcBh2A+5oTbTQqUP0hZdl9o1JppfD4gRRcB5LnZdRtImEzUagUYxMUqJ469RB6XIdrs75q6oyliULEGb+NZhc+F6n0eyGCzvDmkVUtcGiaXLFnD85hdZXWj+2NmxCK1tC5/QuYqtJaMlIawQt88Fpv7yDlvW392hIWjxMFnegEmh2ky+UxBGmmO5JIea2UWkHyISlOUiSqLwVQTF3R82bNT5oaellKuSuT9U5NWhY06yK3bi3DKrPRX05mHraIgwABU4S9tAeEtLZtt32Ue+wVLiyUOfCzpYuQXcOjIDTFh6H664yOE6OP63Z6WOnRXjiSL8BWmfWIgpdliDoOWmWSGKRT07j66vXb92voJ7DX9tpe22t7ba/ttb32/9N2e0rLkrA8iuziOME3v00n5z/+wlcwNUFR1b3HDuJTnyDh4Od+6dM4cGCSr5yix1VMuz2/H+V5LjTTYXog4tQSxu/DLTmoZNk9gQ9bUJQ3PzWKTzLE3Gz6phJsGLaNSC1ybIyUhi+7kKCHl7/6FQDAM6dP4UaTItNq2EbEvhiXltdhc2Qt129Cquz+Q0wX6bt+51NP4txF8hX40dJ1rLPA6tIPX8PcGEGeh6q/iUnO/Hnt3OuYnyeEqt1o4RTfc72Ux4pHpwS/ugC9RiLqx6eKeOIJElevTrTR3Dk7dB/9IEIvyEp+CDLFAmXZZGK3yugEHnsv0SHBlTPo1hnhGZ/FekyfmZiYRLfd5b7HcNjqe6vjo1AkWDwnQ3R7jPaInvHbcWzHnPYG66to2+77T7iu+fxg9tadmlYatQZ9505zB5MMMbt+AMn02nojwSWuuPyj136MDz/zUQA05mz2wsjncsYjKkhTxG2mTLVGd5tOkhUXCLv0ezfvwuLTsWNLY7H1za9+DbNzhOrNzc6gNEr341VHdwm05V1APIHvG5M1T9sQmSASFmobNM8mqxOYmyWKynFsrK8Tmjg1OYN2h+55ZnYCTz39+9SXEQ83GRUJE43PffYj9F1iBn/9N0T9JMqC5nmmoQ3loAes6jX6dIUQA7byup/9NEyzbA3FlHg3CfChpz4BAPj1z30e+1hUHAUprnG1+s3rb6MwQqfod86+AS+kdUJqC52U7n90fBb7Fw8DoGrZ8/Pk4VL2fUxVCcXq7mxi6QIhhLUbl+B36V1/4mMfw/wHn6Hn6bp45ucJYa2t1tCs/wUAoB0GkO5dUAWCSo8AQK/TxeoyoQO9IECpRGttwdGYKNPcOnV4Ci5b7ZemRpHnsjbFsRE4FUYLxywIi/ri9QoojDI9/s4q/uE1olnnFibx+79L63TBinD6OD0Tz4qxtkXj6vLb1/HCj98BALz21hXcWKHflyYcnHzy0FD9a+70ELFB3OD0FUL/VIRHSNk32RugX2zHQblE77ZkS+SY8ihJBZszfvPSQs7JBOOSy0gAU5OzuP8U0ZgvvbKJXpMomChOEbMnVuC30TMIT4ooHB6J/NQzzyDPqJHbbZnabo899hhK7L/WbrUN2rq6tYXlLZqjC4cXAKb5wq6PqEeMyPRoFS6XpilKgYSTJKzYQjNi2UGa9rMD5QCSKvpUoBAwyImQgDWQBfCTJShu17o7a/BA93D00GFYM0xRzSwgniCWJd7ewSjTc72VG+hG7PvV6iEFrTc97UIXeF46QDOmvqQapjagqz04LLq3cjn47OnVC0LEnMATC4UO03zKFihxbb3QBuQ47T0TuTycs7ffF29PaWkLigfCieOH8G/+t38BAPjf/8+/xKXLBBl+f+tNvPJD4lT//E+/jE9+iqDST3zmA5idIYjx7Ntv4fgJgpiP3XfcpKoKJMgKH0JFUMzLpSKCbXMhTlsjzymMiUrR4yJjcV4j4YUjEcoU1QtzQKFsct/u2CZHPLz+3EsAgN84/QCKHHRtnj2DgycotfHh2Sl89Rukq2m9+ybsOVo0IzuHU/cSvfH7v/ZZvPraqwCAi3/2RdSbbDTVDXFjkwKh//y3z+J/+d1fBwDUlpcxyxvhxvoqDnC2wacXZ/D1Oi2CHQ9QRRpoB6t5PL5AAdJZ73Fss1J+mFYs5E22BCAI6gQZWZm6LnGK5QYN2EMHT6Ftk2Zpox0jP5pRlv36WV2/hcxRKk0TKMVpvcUqOj1aSMIggJfrpy4PGmhlOi5L9s0MpRSmSJ2OA2NZcKe2Wauh2aaFQ3o5SC4gZ1mJqe01PV6Bx3z5zSuXEX7gF8zfx5y15vsBUvZVKJaLfT1BGCFXZKrNsU1aZi5fMGn3Umjcc5Q2kW9+/3msrdHz8yBwneHscrWC0ccoC0QLYdKfh2kL8wdQyvj+jW2zcF+6cBNjo3SdqYlZFAqssdIurCzDUsXIc82p+fkZLHPGRThVgpfr17VbukWHhmbgI88O35H2wLIHaAw4qAppalcBQJLh3Oi/WwqF7gJGF4DgTI8PfeTj+I3f+D0AQEEUyH0WQLvTwdJlep433nkHr79DBwIrX8LiLC3ESRKhy2Onee4GHuCNZOTASXzgFyjQzbvAaIWfVX7E1DjzWy384Luk1WlubvXreynAY1PV9z76Xpy/QDV+tvwGPHf4jUSnOdzijKdXLt7EuTcoCB+vjOIU2x2MFyy4Kc1FmXQATsedXDyAAlNaxUrJ0FiBnUMrZouIuIg1dvL97rvXsNmkefGhD5zAEw+RFmjt5jK+9u0fAACuLK1haZk240tLW9hqcjAWSbR5Iz+xv4J7j+8fqn9hkOyiq7ImRD+NWut+8EPuuP3AOWsKmrL2AEjbNZqNsVLeaEI86cDmdd92XOOWbedzOHD0fgDAhetXcIO1e81WCwEbFQZ+bKh3OeCpO0x77eoVVAv0zstxiMUjRBUuOjkTXmxtbmK7Ts81aocosIntmOeh3qAALFEW1rgQ9f3lIk7yISmGhs0iQFcKlHnt8YpFbPM6t9FsIMw0PNDmsKWSZJfNRqYLugv2HACwvvwGkhy984Ozx9FmB/dgextddpoPXQsF1nRYtoN4i2KC3nodok4H43ygEHE9SFeEiFkzmlaKSEfo3ZUKI4jY/qaVxPBZ91n0CpBMNXb8CJr3m2KlDMH7RC/2EXLQZdd7GGfJyz/V9iitvbbX9tpe22t7ba/9zLfbIjxaC2SlYG1b4Jd+hSDmBx97FC+8QMZe/+Wvn8Mbr5OI99zSJVz5I/r5z/78r/DIIwQrrq6uYn6BqKKPffTjOPXAgwCAfMFGeYRO4+MTIwamcnIKqc8qddeBw0JPN4pQZCV4L/ANBRZFlqEuXCdB7i6MB6UVo8gfz5fykCwQu/DjH6HMZkuPnT6Nwg5ngHRaiBmexOQBlMcyNCnB6BidGA9VPdRXSTy1FYTGA+Vvn30W9+wjuuo3/tkvI4u7Dx1chOtlnjYuHtxH17z2/I8Bpky+8p1v4/4HiXJqOAUk4fB9HMnn4GSnKNs2J7BGo2Eolm7Px1muadM5sB+5PFdiLpXh5uh+treayLHHkZMvIGSErZCTsPl85icK41yioLYRQhjzffVTT3jAoBmfQI/hWx1hF8R9u9bt9dDjjKqx0gS2uOp0ZaSIXkDXGM0BOX7Gm5sb6G5TVhfKkxgdJyOzI8cfw77DVEso2L6Jd58jXyWoBGBfDEto5FjwnC+NGM+hbq+HA0y73HfPMSwvE6pXb7XhZCfxTg+XzxNl8Nj9J/qeVUM0ndIJFQCOLB7FOovf98/NYW4fjbvqaBX5XGYACJTZDNKSDhZmqY/1Rg3bbPFfW2/iEGe5RIFCHjTe7YINi4XzQipIPkVjgN6SctBvR2aVNKBgrD8gpW1g62Fat53ivY8TbfQ//Q//CqUCZzc2W5CcBXburTdx8QIJhjvbHcwfpAzLWifG139AAt1ez8fcAfImyjkCL71JKNCvP/Jx3DtD/a0vX0clx0LYch7bO9RfK+9idh89q83GFmp8Sp+YnjVU8KGjR/A7//yfAwC2wx3s8GeGaQV3DufP0Br5l//u72F16dkuTo5jZpzpKgdIu9RfVxRgsw/Lles3kYaECufLx1D06OcL79Tw8mV6JrPTcyizyV0v6Jqxcd99R7DKAukvP/d9/JiprsaOQo/L+HSiFKHKSgA5sDnjqNPuYXVlOB+eQcp29zwHflqleq31ruSE7PdhGKMlaC1Iwgij7PWmPc9sWt1uD7VNuq+5no/RClEbSgAFl57B/fc/ilu3yJRWpSksvqZn2yiwXCMMo133faf21pVrKApCv8qIKbsQwL2H70GJs1urlQI2y5wcksY4wokr+WIJcpZ+rq+tYnaK0HM3jdFr0PvZ2KqbquIJJMAU3oGFU5isUO9nxzxcu0V7UqPXgwgJ+TlQHsE2oy63Eo2UaSxbWriL/AG0ezcQMarz4lubSFjWIPMjyPG6UrI9bPHz37hxCzurhGp3t7dxaILnUNCB4ppZx0sFpIyaN/wWOluMYjkjcLLahnGIDtN8m1Ij5b3HKRSg+Tm4mEW0Rut9fnIMzR3OSlzfxuQdEJ47WtkaehX9dPJDh6dw8DAFP88883489yzx5V/7++exdI1ews3lNbzIGQIAcPUSwYrf/e5bGBuhB+Z5EoUSDYrj9x3Bb/3mZwEATz/1kHHolArGgM51XLhOYn72o7B/czxRbNu6K/hOIsKDJ4mi8sMuSkzBWGGAlLO3nvvSFzE3SrByq1JGrcVZVHYN16/SxrO8soGYJ+7MvnFM1CjA8xs7sLiWS1qSePsGbaL/4+QEPF7IVlZWUGYNT7lcxjO/QLTgD8+dRwK6nxU/wN98nWi1hQdOoOAOP3ql7NfMciy3Xw/LtgcKzSmTCru6sYHKCFFphbxCyJxzvpCHztxDdWriEQvSPP+dRh0HeXKPj82g3WGXW6GQDtAbmW7HshyjxdLQhl6K4nhoDY9tSWzzJOlupZifJCq124vQbdD3N7SFB47RJjgzO4FGl8bOaEXBYc64Xr+Fm7co40n7bRQ5i0clodH5OLYDj80XhZCIeQz6CbC8TO/2vY88ijMupcXWmjuo14l+3D8zjSuXabN7483i2QBXAAAgAElEQVQ38Z777x+qfwA5eXc5W/HalSu47x6iPyZGc7jnOFOsaQwnG4MTo2jXOV09N4JtzkJqdzZQYs2JlhI5NgJTfoACLwejU6N47GEy3/v2D9+F7dL7FFaub2om+87DQlmQTPOlOu3XujLlOYdrJ+57AAvHqF+zE1NIedwVJ0YQbhPddvbMyzh/joLG6kjVXP9Hr53F2gYHLVKixc7riwtTePg4PeeTp06jWqYF8d3aBprrdCgZy8+iys+kESQos03BVqOOtRrRDyMTk1mCIhzLxhzTyx976iN47ZVXhu6jlRZx9V02FbweYoLNXCv7i8gxZZlGPZTYSX1mYtwEjdvNbRR4fZrqRKixluwfXnwX20yrhdESnjxG7+6/feYpBHzNh08fw6svEI317sUNOAWit3SnA8UFkN0c4He5gHDgI+XItbbZxJk3LgzVv8EgZ5DGEmK3jYH5vNod8GR1+NRAXb3YjmEXaWzWuj2Mc6AS1eu4eIHua+zAQZQ5c9H1PETsFF9ybeznoMLTLXQ7bPQXxYiTrLafZ9zhh2me58HJaqmlKV5/m+b62q01HF6g53pofh9mWNLhenlMTtMaUBmfNnWvop26ydTcrNVw8QKbzNqOcVXXcYCZSZp/I2mCLdYhzi0s4F52WD9/4SLSDdpfH56exutM+TaaEeQUjaNUa6R3MRsD1UbKxWZr7Q50wuaHOzsYYd2UXa7gKpvt1uvrANOOGyLEGGvxYvhobtBnDgdT2JH0zJdTgYjp8UKrhqO8po7GCUZ4Lobzo0i5mLPl5kzRVa++hU6HnmE7SQwF1u42sVCZvm2/9iitvbbX9tpe22t7ba/9zLfhihWBYUjj9R4bf425+Un8wR98HgDw25//bXznay8DAL7+999FyKrtVrsFn0/gW/UGOuwDonWKCiMbjz/yKE4/RJSNVywAfJpVSu06JWTlKhxpIcoqlct+hkwSx5B3EcblXRelfQQlX796FWt8mpJpjPWVDb7nLRRdOj0cWJhAskZ0yEZjGZffpEjzC3/3LKZmKENNVcbwi7/5mwCAzfo21jYJ6ut1YpS4LMHSzZuosMB0dW0NGxv0XRNjY5Dcx7wnEfLpS9sC5868AQC4eeUsTj89fCZazssZpM5zXaSsQh2sviulNMJmlabmlNZsbSNwKbIW1iiiNteiiWJTnbpQKJvPKxVjdZVO47OzswYi7PkNJIzeSCkgFCN4tm1E7HGSDNiia2NOdqemtYJmailJNVK+r47fw8nDTNlA4MxFOtE/dHQeeabm0iTFyjKhAe1Wy2ROFXM5THFtJteykDBkLKCMKFpajqkgrrTAa2/Q+zl+33148gkyyvvW88+j6xGkG8cxHC6d8a3vfg/3cr21Ydr1S1fwwSfpmhvLG/A4iwOODZczQ5IoxgYjOSoKELIfykZcM6VgIHwUPDaVHBtDmbMMVS9FmdHWXqeO0w8Q0nL20gY2uN6TJbWB72HFJGIGAG0bo0Kkpjg1LCiIu6iW/uT73wvFvklp6MNjz45EaERsQOa3a6iU6dT37sXrWFohFLkTpUZEH8YJHBZK6tDHwkyGOI6ZOnLTC5NorpPRYmP5KipTXKbBJr8kAPCbXfghrWEKGglTr0IrM5bvWTyCohieXl6/voWLb9E4dCGyUoWwLWGoXSkteFyiIBU2HE7gGJ2YxdQcUQXwRozYWBcdnLqPxtLxkot5RjcePLKI1jz1a+nWEt56i9DF7VaKfIWes1WIkfI67YcBUqZqUqR9eilQaGwNV2tqEL2RUu4yG8z+nxDCKJSFloYCJc5loCwCQzxJrLDdyTxbFNIy/YGTamwsE8K+dPkqquzDYwuFjXVCFRwHOHKEEmZs7WOHs6sImOXvsi3EmTJ/iNbsdNBjUXnZE5jhdaLjB/jBS7T/veFYePgUSTdOHD+BsXHaG5JUQ2uar9b0OBL2FJqcncGBg/QOkyRBo0lo5VajbrzwGuubqK/S/O5GKd4zyxnFNtF+ABBvrEKv0jNp3ahheoQ+k3oOAjF8AkGS9NE2z3IQxVziIe+hlKFw7R2kPo01KwjgZLuwbaHJn59ZmEdrld5FTgOaxcZKCaSMdKlGgqLDfnAdH8UKjX33wDR0VqIi1giZQk/aPrq8Bq/Vd2DzOmQHPtTO7Q0yb5+WLgQyct5y+mnFllUwC5yAgxbDS9/95vNYXyMI+KlnHsZZTh89efJRLOznQndT02i1soBHYXSUFtz5hTnYNkOecWv35BhQ9Jv1FsLUtnGsFDkumBdGIURueMl93i2g4BDk6fdS2oBBxm0ZRQHHQq1DL/AXP/Q42j8iCHN94110GE77qy/8Z7hMgeSm5vDgfTTo3LKH8RLd/+W33sY7nDWx9saLSDkzpNVqmYHvWg7qWwRVj7gJjh+m5/atF95Ai59/Nw9Mf/rDQ/exVC4jxxuknS+g16UNOAgCAydrrc2kb7fbqFQoMHMcgZ5P76u5VIfiRbnb7RgTr7HRSeRydP2pqUnYXKBRaRejY6TnaV1vGOpKCI2U369KlQFaLcchK2gAUqbmOndqSRyjmNVxgcQma6wcS+Ktm/Tz/pkJlDl777Vz1/EUB1MuYGoV2bZjal0qLeGxq7QtBIydotDGQVxICZf5bL8bmppcl65cwn/zGxTwrm1uwL58mZ+3jzDLUkhSvPIabdYf+a079/HIgUW8+qMf0T1beZw8Sa6yH/vUhyDZlVwkAltrSwCAc2+8DB2wuWOscN99RHPsP3AYmvn4fGUEVdY9bN5cRY5Xg167gRFJlOav/uIn8Cd//lW6Z6GQ8PvRMoUWWcAjqLgaAChlikciDZCyDm6Y5khgh4vl9toSMVOgbrGIM6+Rc/mt1XXsYw1EuR6g0qHnWQSwzUaYhVIJRw/Q5jeet3H1EmnTLr77KvYfokw6P/bNunLz8iXMcdqzW6lijHVQ6xsBuj2uBZVoBDxflRUjZrqttrGONB1+s/z2372AjRvUR0sCpRF66D2/h6WbfFCYmkCo6fetIIWn6Pq5ahkWU2Arm21EnOX36BMncXSRNjb7yiWMhKRhSzsJblymez7z7nm0OWgoj0/i5iat01uNBgJO943j1GgslII54CaJQBoPfTY2bbCu02ATQphCkwoqS4aE0ALSrBHCSCi00gg5W3hbhxhl0WUp50Lws1lbvgHN89LzXIxN0Pjdf/geVKtZYeYYN/k9d5sbJsBUQkLeBd3TDXzYXHsrURKStW+zo1XMjVLGVup38eN3eNxdu4b5OQo8Dx5cxDSbkkLaxrahWC4jzzRmHIbwWIdVqpTQ5gC23fERs6P2hfUabrzwQwDAVD6PsQr191pvCz22Kzhy+iS8KQrGtrpt6Lso5CvTPLLCVEkKaM7MkogQsxxAwILHRTxraYAuryuJY5mDQtrrASwN6aCNqMKHRVsaE0WlEkg2vPTCEOE2Pdvtdy7A8dgFX/Xr+Kk4QZHNcCe1ggpoDXCCADvF2+vp9iitvbbX9tpe22t7ba/9zLc7hu0GooxjCCdDTjwIFtO2dgI8+0U6AT77pa9gfj9Bd08vvg8PPMRiymgL+xbIr2b/QhXSnuhfP80grp6hXYSU0CxuElJCDYjgPIaki/k8bD7hpJEykZttCYMkDNMW9x9E2SJTreeeew4TE3Ti3Wm2kC8W+B5yCLna+NjMPPJ5OrGXPQuZX1XQ6qDL5nfxyi1c/jGdSD//+V/Dv/iVXwIArLz+Kt4+R55Fq+8qI5qjjBd+HtCApD7+6//+t/Grn/kgAODqjX+D189Q6YIT9yzAKw6PYimVwmab9nK5jBLD5YM0VpIkBn4OwxBXGJVwXAu20zcPdFkwWKnkTIZSkkQIuHTF8o0ORkYpog9jG1nC3NraJqamq/w8lTEJG6yxM+gYYdsOho3HgyAyJ7RUJRhlJMeGRtun0+7GRoKDXCNpbnoaLo9lDZjK5o7nYYR9j0aKefhMvQqVQGVpSFohjrOMjn7JlJznoVSk771+6yZyjDI++p734Ar78NiFPLbqRId6jod3Lpwfqn8A0Gu1DcLq5B00WDj/vR++hKtLdJ12bQe/9otkTlmuVHDhOiGsp+49iYV5QkWSqItmg06kC5VxbKzTiajX7aHA0HnRA2xFp0pbuJibodPm6mYXLmePKCGguSaUEB5clwW30odi+k/qEM88/b6h+xh2utjYINF47G9giuuXrb19Ds/+1y8BAEoO4BTohJkbrWKR6wwFkcKsR2vPE0++D5PjdG+X33gZV94hkfP3vvMlPPIo+SC1G10E7M+zfHMFgU9UwcTMJFKbTTTTFD4ju7XNmlkPIAHF65aTlwiHB3jwxb94Hp16Ru06KFZpzFQnJ7HTpPWj2b6BmQ6hAGPVCmRKiO92vY5MzXr11hqOnCAx9uMnpiHrRJvn/QAW+wttuy7eeZ3osysXljEzS+txPb6JrTa99+2Ob1BNrSxTQkUIGM8lrTMKaLi2S4IwYDbYp73VALpCmY8A4NkOZHaKV6nJbh1sSarR4nIG1WIRBV5gojhEkzPtqqPjmF8gemjf3KIxSJ1fPIkmi2yjsIE0q7moFIDhs7SUAFLeY7pJCjA6EW5vYZzXnomRMsZYGJ6TFq6sLAEA3j5/BgcP0Hu4/77TmJkh5Md2HUSMtGn069cBqTEYtF2gGWZoSR5xmz3jGk2M5enn/dVRRExZR4mHnYCeSTvsIbmLrNCiU4BkM0s3pyA9mvft1ToOz9GzPbhwAHk2Z7148wZaGQVWHUWJx4u73cOY5owzR2CC10gZBAgDer+FKDU+PL6lkTBqpzZ3kEouoaRgyholQYhSkfo1DmlorEIUYr10+73/DmnpGtk2pAEopjyk40DwZudaGh/+0JMAgHIhhwuXie558sknUB2jhSOOetCc1qtVaOooYcCt1Rp0nRXCpJxDqF0mVRltkDguLA66Qi+GxZ+3LYlCPodhW9ANoSUN2GqliinO8Pn4xz6OK5eI817b3AJTv0i0i5T50tnxMq7XOI1aCti8yUkouKw/ODg7idlpGtSLBw6gmKfNSaUxuDYfhKCNGgCm/j/23izYsuS6DluZeYZ77vzmV/VqHnruRqObIAiQIAmSQYo2J4lSWBTlsP/4YSls+dcR/vGHIxym/ekIhv2jYIQjRFoWIZGiSJHE0CQAooEG0N3ooeZXr9787jycKTP9sffJe1+zut4t/6ni7Aig77t17jmZeXLYe6+9115dR5vx3jTVUBG5Y1c2VlFh9+daowpPL67UTZLYpdRGlRrW1mgz7fV7mHKdobDRhuZ0xumoj36HDoA8G6PNsOP5c+fQ5OwtL/AQBEXdK+WUgNFg7GK39h99iBEXR/Q9C2M4XiTXrj1CCpeNZYyBxxu6ksLFTJwlpCDT76qB70jktLR4kzNWUni4z278zY0Ajx5SRsSll34M16+TG9pojZznuE0TdLoEPQTCONhL6NxBf2mSOniwtbSCy7yRPdzbheI522g24PFasVYg574utyIcdvsL9Q8g5tbintVahO++Q7QQf/XtISYxbTqvXnsBW+cpZql3eB8rK+TOTrMU77xDyk+jHriimR/duo0pZ1a8cPUK7GjM4xBjMqCxQpBja53G9nD/CH5A98ygHIylc4mMD9DAT/DjnyO47Yuffx03nru8cB/jZIQek7JJG+MB1yb7+tf+GqMuzcfm+gp2mKzN+jX4VVorly5fxPoGKXWvXL+BR/epvxfWzqHyEi20yWCMoz36bToaIGOlcW9vB8Mh9/Gkg1Qy7cDaZQSW5/L9D7C+SfEzYTWCUIURoHD9xo2F+3iyG0MySaP0BYZTGvNKPcKFiwT/fvyjD3HCcyMIIuTssj/YH2GX4dpBmuHyi1Tn696t2wh69P0VL4AMGVqIKk4xazaX0WNFYeeggyEzrxsz22uF9CANhypYC/gMXXgSfnUxSGs+bkcK4TJmKZF2dpYUcJmyFm2+943L66gyNH3cGeKoW8QW5cjzIsNL4WTEa1SNcbVF4QjL1brLLD2/tgJTKCGDHrwGtWd59RyW12mO9Dv3ZxQYVjpC1cVEFMg7jKFaiwCQ5Kkr+nnc66DORtW55WVs3aQ5kox6uMXnyu3b27h0kdbHlcuXscmFosPAc/mNQgq3J1Z9H6t1Og8+3O2Da3ajUq2hx+MzPey7eNlhLqC4woG19qmylwOpobkgtIR1hu4on+Aqx0W+9vyLGH+VyHY3BxphTHvbqqdwgeljLoQNJOs0Ps22h2ZAa6vWTSE1x6mZDDlDY2lQQcbGc034KAp3GZvD43ektYFWNAeEBbycs7fSFN70yWEQJaRVSimllFJKKaU883JGaQkDw24wq7Wj7pZIHBFbWJM4VyOt81fXfw6/AoJgrAR0zp4ZBDCyeJSd1QOBgCzK3Vu4oCprc/dZmFkJXc/3HRFiojKXIRMEPqoM0xiZu8DaRaQ/HGPUJ7fv0toSXv/C5wEAr3/hC9hjqv0/+3f/Dvfv3AcAHB51kXJ0eaNRRZNprbvDxKmPQkoXiPfVv/4WWhx1/v7tB7jGkfirK0vY2eagaCngswb9s1/6MnaZU+FP/+qvcDgg6/39D+5AclC30gaWteBFpDeYBYH7vo9V5quoVGuYctmOZmuZKtYD2L79AQxXY/f9COcukOWxvLzk+HwyYzDlcRBz9PCVyEdUpXdqLVBU+QjD0F2TaypHAQBSydMkZPyutdYLc2Pkxjq3/CCdophey/UGHo3pH+J4BM2ZNYPeAG+9RQHAP1tbxirDPdPx8FSQZcI3nY6G8GSRHQgIDqYeT8ZQDLFqnTvyyKX2EkIOoJyIFCFXKu/1us7bE/gKB53Fy4OEYYjWElmwW1sXcPQu8Y9I6aPZJCv3t//JP8HyUuFVTVBjCMZYuErSV69sYX+XvChBJYLPVdFX1jcRLnF15ANAM9GmFX1srTMHyrqHvUP6PvIr0Dn1fXVpC5evEmS9uR7h5lWyWgNvgj/+A6o59eLPf+7MPmY6xnBIXrVkeIRv/sU3AADdTt+VXjFZjEGfvSLtECv8/daVm7i4SuMg4iEm7KEMpYeA39fKUgtIyfrV42MkXF9MSIt+j77vj6ZIGVK+3F6D4Gyc4/0OdE7PXV1fn733PDuVmXSWGBhIUcx9hdGIINfRdIhr1wgCuXrtCiRP4gubF1xV7O2dB3iPSRdbq0sIeZ29e+sO+g/Ic/X5i5dweULtbGYTbDG0970f7uJ7zIW2Mx0i4CytpTUf0wLaUUAjYNhOG0guTaKqHjavP5nQrRAlJQomNMqonfF8zXt4Cs++D4sbWwRdvn5jA60Gh0qMWzjs0B50eDLF9iOGZia5y5DrjGK0OID2EoAWE/21miHSMa2t/btjtNvklayvLuHcBnknBsdXEI+p39YmUE/j4dEWRhd9EUABA1oBwyRU0zhHxrxm49Eu9pigr92oon2O2lCDciVT7t67i+1teoeT6QRCzqD9kJGDWr3mnjXpjeE3GV6GB59rN5owgubMyEpgZkShnnL77yJysLMNnwPkw1jB9uk+/eMjNy8iz4N9SP1aVwFWuezF+aMjLL1AntfVzRUMJR0CDSXBCb+oZAYNzrrq+gKGvYLGCGSFV2dlGZZrbIl+7AK808BHdo73NhgccVJNLICT+pPRnSdDWjovyFQBJZwbV0M7rFVID9bSRqkqs2wNa6VLN5ZSOTzWIic2QQDk8JylGxZ+QgFKV+RWzF6a8qAUszN6nlO6arUQacpssH6GMZNnLSK37uzg0V0asP3OAe51aUN/9TOvYm2ZXtqNl6/j3j2Kw6g1Aiyv0/fHt3u4eo6ymaB7GMYzML8ogvneD97Dw0eEr3eOjvEbv0a1fP7Fv/jn2GESwuNOz8VYVKIA/8P/9D8DAD68/QDbe+SqDqWHgkQ3DH1YvbhSNxlP4TNj89HRPtY4S6C1tIwat7PWaGPEE9ZTHirMGFpr+FB+kQGXwXDtsyRNXYbXvMITBqEjihRCuKKxvu/DFLWptIaxBfGgOpUpNo/5Lyp+EIAJlWGMhWXNc6gt9u5Qyvl0MkLAC3Wt3cAKpx5/+O738WaLFuRxf4DxmDHycYwmX3+yv+dYixv1GhQTYFWTGIKhtMl4glWOx/jCj7/plHSjM0SsCN0fDrG2TAeHH4ZYW1lZvI9hgHUmMpPerOBilmhUOD7r7W99G2mXsgObjRpWOV39wvmrTsl95/vfwdvfITf0r/7Df4jaEs1fFUSoBgXbd4iQ8dZpOsDFTXqHgbyMHqe67zzaQZMzRi6eq+Kzn6W6c+NRF9/46r+m+yjhFP9F5P79j3HvNily6aCPlIulXt3aQI0nf3caO0W4Wqvh6tWL3IYlmAGtlf3DI0y5SOFRtw+PX0agmugdsSI36GHaKyBFjYwzDrNYQ1c4jsRm6HKMwmA0ppx1AH4tgpjy1ilDt24WEWuNU8iN9TCe5NzmLs5v0rOyTCPkPS/XGj5nf168fM3Vz/IjH31mFN/eO8T771CKvR2lEDdpTFrjAXLNbRYWgxHtQzdeXsPNN+iaSjPC/pC+F5HFCtfNy0cJ8mFR6NGgsVpdqH++UC4DS1s7Kxg8f5EwkGxIry9HuHGFnrnSDhDwYR0GEepMk7C8XMXKCo3BwckQjw5JoZvEBinDfTabwnIqdK97BMEG1W6/B8Pz5YWXXsAyr792tIIjj+Z1nBkIsXggVp7lrkdKKYL/AOjcIOfv5Sy8Dxks+pypNJ6MUee9pFmNsMQw3PrSCiTP0+M7d3Cwx/PUGMciX2/W0U1oHKJGCI+z1dJ8inGfDdQAqHA8jwqEqwWXZdlTFSvOE40o4HRv7UOnTNdRrWPEfYnjBGNeBslSiGWmLFnux2hydiPSGJLPg3yi0eO9U4QKfsI1ueoeNM8HkQvEPD5mow3NBXWhhggaNFbvPRhhuUXvMZmMMOIxDNptTKtPrqNZQlqllFJKKaWUUsozL0+GtIyBZFe+lUS3AQDWYOb5MRqnq+KyhitmupSFcVowhHHlCSTErPCOnV1jjXC08ibLHdmgtcYF4XmegFQFF1AONnIhpH0qQvt3v/0h9nbJkgwChW/96Vv0/Tffge88GxNMeqSZRsKiyfDZg/EEqwwnLNciDLiUPayFZF3SZDmOuVqvEgp3b5EF+6/+73+JlMkV+8MRrl0mS/v8soaacN0uEcDniPWlQGDM2nq9GqCmFs8qSJIUOXOFpJMBTk4Y0ogirDLhmoHA4QF9PxyNnMcmimqzauLxwAUYp2nsvDG+77vyGUoq+H4Bac1q5uTzpIJCwPOKYDTj7jlPRa+Ucp6is2R7Z8dxpBDxJN87jp0FCAvHMTKeJpwFBnx85y5Wz1Gw6MRKTDnlZmO1gpeep9pYXz+8h90jyq5aznLUmCxzPBkjGpKXoG4NVtr0Dq/fvAHD/a5GEa5cIKji9t27+PKXKMD/hx9+DJPtLtQ/AOj2uhi/T3BPWKm5PnrKQ8Zt/tZfv4W4Q5b7l37yNefJOzo+wb/5yp8AAN7/4D1c4FpRQRShylZTbgyyos3VOhoZ9VHLFDdfoWygb3/7Xbzw/BUAQPbZZUj29nWP95GM6frrV2/icJs8oFobNNuzjMyzZBSPsHdMc9/LMjTZC1eRAjFblXluiuQhVKMKLnDZgIrMcBLTO+oMDjFlOCEMFUImXLPZEJLn2mg4xvERc3YoD7LI2sty6IyuGQ5G2Dui92s8hRpvgAcnHUwYimq3lyFWnqaABpy3O81n5RbuPjhEJSTrNBACggPjj447EPyuq40a1pjctLnSwCTJ3X32T6g9b+t7qDMd/3LdRxTR+Hz25ZdgGjRwL3/5Oq6/tsn338dAcDXudQ8Bw2RprHG0R56rbqfvSh2cJRJwJQw04DJsYYWrq+cJi4gDq1+4sYr1ZXqmJzPnBbZCwPOpva0GXA3FzY3QeX4eHYyQcZ2mO7dvu0Dl85ubqDAaMewc48FdyvybDPt46SWqlZeOYwh39Oin4lLyA9/tj0SiyJAWtDsjhZQuBCQzGoWrU8O4dqYw6LLHY+f4xJVTytIUhkMcwjBEdY3WUJZnUJxJWYFCDkZWMCPdlNI6SqzcWFg+PzzPd+EIi8iN6y/jpEPraTJK4HHduekox58x1KzyEGKNPC3pfhWVgPaSxopAxtBSLGuwdTovH+oe3rtPSMmNrXO4cokCuaWeQFbp/g3hY8xj1QslqgxHL1/w8fGU1uKf/2gPNwZ0z+lRF8tcHufNV1/DiCHxT5MnEw/OZVFhDo6VsI4Fk66b+w0fxKeKxhlDWhLogHOfAcgC6tIaltPOkjjDhDNGhDYIWLGREDPG4EroXqC1Bp5XTDrh4KRF5Je+cBF//Q5hp0kCnHTpuce7By710Frh7v8n/+Ev0eHCk0JZDDkLKclz5y9TAo6FNpXCLQJtDL77Q8oO+tb333XXKAtsrNCB8eJzazjp0oKQEi41VJscIadgvnC+inNYvPZLFFXhMTzTH43R6dJG32gto9HiaHfPR5bNmJZlUf/LAAlvvnmWOfZNnWcoJoQxxiknaZrCZ2XC871TRfmKGBoL61It4yR2Co/vefC92ZRcdIF+6+23XSZDmkmkRUHUNHPZY9baYk+glHGeI9Pc4M5tKqT4yis38PP/4OcBAC++/CqqdYqH6Z/k+Mof/AFdn8ZoMpFZa3kNMW9Yge9jlWMFpPJcjS0lJNpMCvbGq6/gjdeJffUHH95Cmi++yVoESFjZD70AFcWTKtdYbdJB+dLFFi6eJyXn3e99iD/Z/ksakyQrahHiwrlV1KsF3jbFpSsEpY4GAxREBx4myCeEzScxkPXoMD3fWsWQD3pVzdGLaa18+Tf/Ee6+R/Ds5o1rWLtDc/zhgwfYuro4m3RqLWJ+L6ES8NgFL+IEPY5LGec5NGcbjbqHuMPFWM+vrqHHddv29rdR4TiAdi1CxHO/FRJcBACPpgPsd3s8uGxgaNIAACAASURBVL6LpbBKImUI5OSkj2VOXa+ttDDklOBe5wDDE1LMHsocV67QIfolLnz6JBFibj+AheUNrTsc490PiQqiVatC8Rz2lYQuyB5hscwK3oUrW7j5PGUXRo0WVs6Tcn773kPU7pGBdWVzCddWuZjl+hqev0b0G+v1dYgRjc/oYIjWZTo8VCSAkNdiNcSED8uRAfLxgvvNXM0mSq7mgxjCrb8oULh5mfpx/WIbtUoRHpE5qFtbuFhMKSzCYt+PPFxaoz5VwxA7+1xo8qSHovTeeDTGCit959eWsblByt1gEuP2NkHcOh9jypQVRidPpfB4Srk9y1rrjBslpHMQaMxgPAPhagcGQehoPozADJoGnLKXCiDmweqNRy5zVBuLVHFmbNSC5P1AQTpGYiFOF2wtxmSeImARuXHzNbzMUHylUsH29n0AwM7DbQdTnsQ5lrfImLuuJ3h98woA4AU08ZALFItKFVPuy9987T/ibw/JyMubVfzkeTI0Me0jVEV8KlzhcCkVAibgHI9T7HLMYz9N8YDh6CxJ0ONzq9nvotJ+MvRaQlqllFJKKaWUUsozL2d4eDDz8HziezsXaHo6+pstajlz8woLRzRFzqFZlpYL4s81DFtf6XSKpAhu0haGPTyelPCLQj2QM6+OEM7V53k+cr14EOFv/Mpz+NxnyWXYG0+wv0ua6cFRisMeV389jnF3h6yBH3x0H4otwLYvMWTtcpSbOY1eOu+NyQ1C1ujDqoAtoD5dcdkjxlr0RtT3b/3wwOUL1Cueo+6WwuIqZ0q8+dI6Irl40LKxcBBSnmXOG9JsthAySdXaxjmn/U6GfWRMQ29gHWeOnsu0MNY66ndjZrBUkiQO0hISzjqFIM8RwNYGPyzPcxe0rOYspyRJHCniWbK9+wghP9P3PWTMhQFrUGHCLCkllti1WqtGjngw0wYPOWvpsHMCycHaSxsv4nqL4L5f+OVfx1f+6CsAgOF0jB0un9JqLWGNM4OU78Pj8h1SSGi20AUkzp8jC/Pa5UvO0pMSCLynyAwRPjRbv5M4R52rZrdrNVT5nuPBMfY5A+hXf/238fVvUCba9773bVy6QG24fm3TBaRrCwi2DKOlZXgMLys7xaqh641McbzziJpgarh86QoAoHq+igcP7gMAGisXEFbIldw9PESDKfI9A3z3awQRv/6Pf+fMLvoyRMR1qZYihUt8n6r1MNpnq08LxwFm0iE+vEXlOdLuOqoZeYFeXmlhwH3Z39tHm9+LMSmOT8hzdXw8cH0fDSbIeD62N1ahBQfITrpo7pMLvpm1sPeQ9qRs1CcYAcDO0QkePiDL87/8rX9+Zh8FhCvJYVQO6c2C9PvMyROnCbyijI8pkjsIDjke0d728OgQ+0xi2ahXEXKJkPZ54Pu3yGM9ThNEHIiehgGO2XvdWFaoCIJfW/5VBLx/T8cj55mEL6DNjChQm8X2GyXhsj0BC1V4saVFwGdCuxLg+YsMf0Sey0gyEI6fR0A6viIrzCwAOJtVUV+qBahcpPXXnxiMplyJ+/AYI4aaJ6MOrm2RJ2F1dQmp4PqOSQcxZ6gq67uyBQv1USl3/kEI5/GAFG7ftzBgahyC0vl6mecAzztptctoy411ZZMyScgAANgggC0ymHKNmM+eLB9CClofwkpo7ou1cMS7SnquVAcAt7cuIpubl9yZEUURLjBpZfDTAY4Y4djd20WfiTmfu3gDXkT766ODEfqc4eynQJ9RgdH2I1R4fe/vn+Bb36bag8Zm2OBSGhUtMGGkZ/nKJcSsoXQPOhh1KPTkvGqhxxxafjWE5bE6nnTRqj45m/BsNqn5+JliQ5Szw06AJieJheVrrDanYmlcbSwrIUyBf1qHx1ttHDTmKTk7DIR1rm2JWTqzMXquSKiBKjBMpTCZLFboDgC24ymwTJtCe1lifZMmY0V7yDjSfDww+Nt3KJPhL949RD/mCVsBapwKeeF81WVO9QcZJkxG5Qtgk2ubrKxVYVURpwSnsJncQjDhV60hKcQfVJxSsf+7JgWqbXpuPxujZxZ3T2baoMYMwvag6xaWNUDEUe21ehuXrxOstnd4hOOHBKtl6QgJp5/LTzCn6oI6QEqAFT8lC6ZQEBznIDk9owuwQJGqkue5gyCVlA4Ci+MYk8li2XbaaGRFWqY2CHlc660mCo26HgZQvICtEcgZTspTjTxl+DEP8ef/nvDp939wG7/5W/8YAHDz+hUojqM4HEwhQIf7uY0+Ngqm1LDmlNk4nqIYZGMNljgzREDgwUPaCEyS4CLH9iwigV9ByvV7tDYodEFfea7ejBdVMeGT+9/88X/ACpNoLm9u4ubLlEX12qvPIfDpPafwMJhQ39ury9Cc2eQvrUFwVt+Kl8HzaaMZ9FKMDgi6CoJl5Cd00L/9J3+MrICZtu8AnK3Y1EDNXywOCwBuXHkej+4QrGNHJ+4gSQGsX6SxmsQp6px5lHgKfWYEncYDvMY1tpbaTZywoXDcT9HhDJapjdFnmoLljSv4zCtUrDiJE7x/l8jgskChz/WWhDZIMiZxO4mRMqwWT0cIuXacziVqtfbCfYSAK6gaNgWW1um3ge/hZI/Gc9KfImelQWjpmIgtrIul8a3AI465y/Zi1EK6z+c+8zn0B2ScvfvRA4T8Hi/lwu3TYuphspfweE6QM31I1sow5DpcqUphV3i9ag1PLbbfKDF3GlhAyoJNfpa5qqyCKCAhbZEVSoKFU36EPH12FJmXWa4xndI7b7dCLLU5ezLOsL1P8/TocIxI0feD0QT7J7zXYAqPk3kzPYblsIDcSse2vojESTIL6RCzOCytDdKCbkPMavQZa5zikWgBzdlJwmZO4Ql8350HuTVgDljk+axQbZpraL7eGgsjZkpoEeellHLhCEJIl/klpXwqhefWrXuz2FwBRJwav7yyjJzn42Aauziy6iTFvS7Ru0zv7sLjunCVxGBUZLRNB3hujdZxb9BDhxX2NE/RPUd7UtRoYDShuXn43tswnBl5fHsbY95jNpbWYPo095NpjldeIwLOX/yFn0fvDLqWEtIqpZRSSimllFKeeXmyhyfXTrM2cgZFKfWJKrjzmqYotN3cWeu+58/FPltXBoL4dgp3g0VBExBVAgSFRWEsHHpjratSLATRTQOAVIBShecBDrJZRA5tjBGTV2mTQ7HXopoLrIXs0ttUeP3nyC0aPR+hw2SDgS+w2iTN9Or5JtaYI+OgN8KI3XJbqy0scb2fNMmRcn+nVkNzfa5QKlzgjBQhNQ45e6szmSJkGGOr1XSR+MNBglH6FDw804nT+qVUc54T6/h59g8OoNj9XW8uYVInl/fJYd8FzQVBMOdazlyQM9HJc2C5nAV4e54Hjy3t8Xh8irengLeM1s6zRzV2ZpbWollanlLI+H7aWCw1OLunEiJmV4jWBgUammkNy/CpVBKpKQoFWRyyFZ9mGf63/+V3AQA//mOvw7B3pT8cYcJZUav7B/jMGz8GAFB+4NqepamDWGEBj70cB8cd/MVbBPFk1mKHs/cWEZPDlc/QORAXWR8mQzIiSynPA3j8PieHj7DB3DIiCNBapeyeensZjRoFNqdGIY2L9wD47JIOmxVMJFcqz5pYZmjBV0OM+/Ss4fY2PCZu09NDXH2RiAfv/OgDgOHQyALDpyDI/PX//O/jC2/8OLV/2IUqglatRsolB4wB6poD5IVFzgHJVSmwzPBlluXIuc0/+UtwtXmUmgXdB34DS0UGmTX4BX7voyzGlL1/wvccX0xoBVQRPCyE84BBAEvtcwv3USmFgMn11i+1ce1FggqazQZ275PV+sE7dzDu0LiZXM7qTuE04Z3gOdZutqC4rtnuwT42z5PX8d3DPXz3IwrS3e30cWmTvEC1qkWL95uu6DvYNww8pAWnmgJ8fm4gDILaYqUlfCnhuZpNs3IGUjA3G4AsExgO6DkrS8YlVAgpXBKLFGLmJTUC7DhB52TszqTA81ApIH/pY43JFHWsscpJIJFvMEjJa7V/t4d1rqLeboWupIYWM8LTRSRNkk/UCyv2Ne4o/1F4fNXcWZkb4icqri+yjoXRLrPZ5jl0UR7HGDdnM2OR8fgIT0D5RUZr4LxJwByagpnHTD5FIg8AjCZTB78LAYy5XFBnMnD3yrWGV3DkaYmYz7y7hwfYvUtlYXzfh2VenX6aObQDFQ8//evESbe6uYq7PZr79faS4637j//n/4XoHEGWqQ8cdek9ZnEdYy5iaVODfSaofPfj+1Dhk2tMPnEW50k6Y0UOQpddYKBPu4YcCaF0NU9ynbv4HMqAKA4yCzmnzMwCX+wszsdo9wKlhCMktBYQrIRIJZkAChDCRxRRR6vVqmO8XUTSfIoWx0NY4bmDJE419rg9fq5RwNLV8w0sMTRSE8pFyleDGelUqx5gK+I4Fs9gwIs1kTO4ZTWqoSKL+l8CjHRhPEnR5muaoQL44GnVfFR9OpDaSgHe4hM4y7LZ2AKYcK2V8XiIokid5/sIq7RhNNtt9A9ow8hyA1m4Zo11UFCSxDOF1vfd+/L9wGG/9BuGtObcqfMZA0LMamlNJhOXmSWlXFjhEULBMrRRiSqoM+FePJ04aDTNNGqskE6TsSt8CgCG+xRUq8j4c7/fw1KbFttbb33TQalKKRwz+/Xt7R30mXRubXUdY66rBQBTVhI7vb5TJL/69W/gHmeJJHEC6S12iADE4mqLmAqhYHijMUIg5/XXGWmXygvl40e379OYhBavHFGbr9+0OMfMz5Nxiv4+xed4NkF9mRWe9SZEheG/MILmfoU1BcvKRk0rB2M1W3Vs3aQsoZ2Dh+hzHS7pKXzpV3554T5ublzA5sbiMN8npZjhcv4PgdNppI8RC+D8p3xfzNpPvqlZFKIGnoKlVwRAc4nm5+bWKpY548j3DS5cpfnmKQ+79ynW6ODRMcDGTZ7lyOeyJK9eIQqC9loLHhtVOw/3EVSpdb/4T9/Ezh7Br8NBH70WXfP+9CMsB6T8vPr6a9i4ybDahsZU0OGR5im6HcpEE1MPVc40PEtCpZyxarV1Ko+1bhtHCoPBgIyMPIdTeKRQswzbuetNDhSk61Z7qBRngJCA5n3HKhQcdc26QcAKcrMdIU3o+v5kDOYVRS3y4Pm8hpC6uKpFxPNnaenzBpqUs31Oaw1bxCzOxUFS7A87DmQ+U06EcHuf0OZUnKunuGPe7LxUfgg/oLmjPN8ZkPMyT+Sq9Wn6mDNFwoWwSCFgnP1mYXjfN9ZiXFQXSGJkfAb0dYZ7HYqxufrKi2hybcj7P3wPWpDBlIXA3YQg3KNBjl1Wcvrvf4xj/m2z1oYe0D7akFXYNSa0lRHOXaEV61dCVJfJON/rJfC9J8d9lpBWKaWUUkoppZTyzMsTTUyjtcs8MZgZSibNTtWrcnU/lAflFZ4Nz7m+zFyEvwWcdS2EpcJK/L1zu4mZep9n2czNqSQKFdeaOe4dAVTZO9FqKrSag4UHwMQ5YnavyNzMLENPOTdnEIaubb4xyPmiHAB7y3F/nCJlt99SGCBgKKU/mSBkavhaEOAooba1/SEaHJkOz0ec0D27aQyPn1URHiRHr510h6gHZBX5SmGNyZYWESlnEKSUwlHz7+/v4nn+vL51HvCpPbnOsX+P7m8MXM0yA+M8RZ4349iZTmNX7V6ImZUzD1Gd4mWy9tSccJw/hd8ap0tOLCIBZ2kFno8RQ3baaFTYE+L7HlKGQyFmJGj1ag3WMsFkniHi+lOBEA4K8XzPZZvV63Ust8ki3t4/wOEJWdAb6+tufTzYO8S//bM/BwC8/+HH8Nlyu3p5C8MBeYQaUdXV5FpEPKUcHOp5AbzC+5XPYI7U5kh4vpjMQCmad5lN8e6PiGvozTdex/EheXV6R0foMheNnV7EtE/vXIktWM4e0lYhbJEFpQMAkgkexzlqLXruUfcEzT6Ng2zV0bf7rp13dynIedEiGvNW6KfZoy7oHqeTSGdZknNOHXv6Pu7+FnNextmy/zvPmrunyyi11v2DgMDToAWt1Qh1rq3nVzwMGI6cTPrIYiaey31UW7RHnvNayDn7aDJMMWEYMdUxdh9RGZFqK8L6RbKil869ACNoj/nJL19DzD3r9gaoMrSQ5Rn6B1wyI+6jwYjuSmvJ1XrrDidUOA5A1GgjOIOyv5CaJzBx89E6Hh5AOrJaowwyW0DggfPqeJ50Y2msKXI3EPgCAUNXQVBzSINSAoazgrXNkWvqyGg8Rp/50WrVDVT5txutCANOaDnuG7SbXEpF5YBZnNdMCIGMPbjWWlQYIQDsKeioqAdJZKizxIzCY66E5+ZvkdkKADrJIP2ZB7wI3pfIZ/NaKjd/jTFurzRGz8gbrXEZfkLKxyVcf6poo10mLaSAJwtI2cwytI1Bzhmxj457OOjRXB6MhwAjLjt7+5BM8BmnMXLed3UK/P4f/CEAoFavu6D7SlB15+XN515ByASMnlIwDCNXwgpaHLZQa1QduhMEPpr1J/PwPFHhSSZ9PDqgzatSrTtXVqtWc25FQDsFJody+Bu52YtDouZwSCHkrDbTNHbO4KhSQYcHRhjtJsvy8hLqzGwcVEIHkdrczHajXMOkdMj91V/+BYZDcsH/zD99Yt/p/sZixIfZYDKBz9h/rHNXe0RGIao88EpKyIAxZCFhePJaAFGVxqcZeOgzUVfsVdwLMUY7wrtceDgeUDs7aeqYmQFgyiu6EnqoM5HjNFE4YvZYCIUdrmn0mbO7CKUUKjyJ/MCHNgU+nGE4pM1xK/BgWVnVVqC9RPENlaiKMcc4ERMypzwqOIVnHq6y1rp08nlGZfpvsRBnSnCz2USN04+jKHK/DYJgYRes8nw3L4zOXQKFUhKZLgjcQgw4pbdSiZBy+q2uGAdjaTNzPcswRJ4WrN4KARex84RCg+dCFAbocNHJaZy4eJXf+5e/j3fefZ/HAFhmiG2lWUeRi3jY68Lki2dNBJ5Cwhi59TwoL3T3F6ywG5U5N7Qx2pGOBfBw5w4pOb/3e7+PN1+m7K3PvfoSpn2CTh7dGuPyCxSHMxlMsHKZoCVbaUDEtC5tTSDkjSYZGFTWqS+bnsUhkxOurF/Eud8gcsXB4RA//OY36VkL9nNeMf7U/Vk8/t/VY675O9d9yq6/0Fkg/s6Hp5bPvHEDu8cE+Z10jhAwXNVsRRgy2ep0aKEMk3dWpIvVEIFCbZnTjGSO6hLNgc5wH0ffvw8AaLSX8VNf/iwA4OrzWziaUpxY60ILYaEkCyAdE0R1dLeLBx1ShoPuRVSaXPcoy9z6bjSbiJjK4CzxlHSjI4SA58ZbuDUaeECTqwoLIWeKqpkVqzYmd5+llG4fCfwZmZ42M0jICoEgpHFqt6roj7lIrLVO0ao2FIYF9YlJkDJOI6R1WXGLyDwNyzwJodb5aYhLzK6Z0VHIuWsEfI7vU0o5JUoIBY+ZQrXRzhDMrXYQq0YKHc/FcxV3nAsXUEpBFjDZUxIPWgtHEGwtwCGM8H0fgiHLNE3hFYSNElAFvYgn0WZGcGusc4hUogBpNiNszGImiNUT5Awv5jWKxwKAMKwgYIbtS5cv4uZNItpcWVlB4SuoRiH8YHY2izPWZglplVJKKaWUUkopz7yIpwpkKqWUUkoppZRSSvlPUEoPTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8sxLqfCUUkoppZRSSinPvJQKTymllFJKKaWU8syL96R//NrXvmaNMe5vIYT7r5SkKyml4Hl0Gyml+7747yeluMfTiLUWAKC1RtGe4jsAMMa4v40x7hlf/OIXz3zY1cuvWCmFu2fx22o1QqXiAwA8X8Lz6PM01VhaWwEAVKSH73/7OwCASTzGP/vv/1vXhn/7r/8IABDVmmgst+metRBWZ3T9JIFlfXM6HqHTOaE2GAvPCwAAUnrwVEj3CQI0QH0/7vcgogoA4DvvvHVmH7//va/ZPM8BAMPhEIPBAACQZZl7T77vw/epj0IA2lA78zyDp+j9Bn4Aj6eMMQbaagCAkrM5IISAELO54XNflFSwmtqf5TmK9mit3dhWKhWEIfVX+Z571y999gtP7OOlX/yvrLR0v4pNcOXCRQBArVHD9t4OAKATA0bSvaUALL9zAwsUc1bJx87P+e9omtFcExawc/OxmIPWWlhTXGNhcxonaAPL7xBGu7nw8C//1Znv8Llfe9mqJo1xZDTq3P5AWrTqNBciD6gGij5XJCo8d0Seo+IVbZsiqND173+Y4TvvdOmaSOKVV+n6G1fqyNEEAKikj4aXUpOFxDSj+0xSi2lG/cpyQFsawyS1mCT0/SAzSFK6/m//8Edn9vGPf/c3ba4nAIA0M2jVqD0BMiCg9ly8/hlcuPIC/SCsQSqeszaD4flosimGY5rjx9sfY3S8R/eMxyi2jZXVDdRqNA65yWAFje2o18Wwf0hjJaYYdnsAgEb7EpRXBQBoa6AVvbs47qAaLAEAfvp3/p8z+/gr/8Vv2q3zWwCADz78AL0e3f/FF1+EUvTuup0OpkkCAGgtL0Fr6tfOzg5qNWqDLwWqvAeEYejmaBzHOD7pAAAe7R1ABXTNjRvX0TnaBQAMBwO0l6jN585tot/v01gdH8PwvG00Grh46QoA4ODwGFlG/f3On3/1iX38mS9+3s6vl6LttC/M9tl5KfYgY4y7fn4ff9xvit/N33P+msd9P9+GTzuH3vr222e+w//xK9+yP3upBQBQUuKt+zzeEwvQK8SSHeHNzToAoNloQoBuGymLDm8BX30wwjCjHwj+X9G2oifzZ9Lp/gGWf2Eh3P0BSxvT7Er+fwHwvvx//P3Xz+zj//67/6ut16n9UTWC79M+7gUVZPEIAJAlCap1Ott6vR6iKKK+ryy7/U8CyDPem2s1WEudf7S9jY3NDQBAmuXo8jqo12roD4cAgDhJ4Ula31FUxcUt2tdffPVFNx+3791HmtKcCQIfN25eAwBsbK4+to+lh6eUUkoppZRSSnnm5YkeHinlYzXreQ+PEMJZ4p/UyOevWUQed93885VSp6yB+d8Vf89r/Ys9U2L2CIFCB8xzi1zTfdIsRb3OXhflIQxJk60FFTz/wkt0TR7D5+8f3L+PZos032mqMeiRtZknHoLId+08OiTLIM9yaEOvohqFyNIYAKC1RZ6SdhzHGmmDrdkogkzyhft4cnKMnL0MSZIgYevRGOO8OgAgnWdGQIqZhg45ZyWw5DpHbqgNxjNOo1dCuvsA1nl7YG3hHmEtf/b+Tlku/CwpxNwVZ4iF86JsrC/jd37tSwCAlhfjmx9S//7wOw9wnJI1FSrrngMApvgopbOCBEBmFID52SQA2ML+Mnb2r9bMxscaCMGeH23mxk8Cdm6NGL1oD+FLiZTnRaY0cvZINKoRhKL2TNMYPns8QusjzagNoZCw3B6dG2QZvf9GzeCVF8hzUm+HWGnT95FJkCmas6Gfw+b8WyEBW7xbg1yztyfTzpNjhY9c0DgrJREGi6/FRm0Z2rAXRRtsrK8CAKQnsXb5Rbpm/QpksUYnIxwc3HNtaDTJIm03PDRCGofqhatI1jcBAEdH+5iwN8MPa8j4XWcAukf7AID+4S4AGofV1Q2EG2sAAOFXEfrkcRpNYgyGY7qPDBH69YX7mOYZag26PtMahRWdpimGbNl6nuc8h9Pp1K3Xer3uLNuNzTW3njqdjvOYrqysoFarAQAuXLiAcUzeuUG/jyjg9ltgzM8a1+oI2IPbrDXQbs8s9ocPtgEAQVhBg+95lnzSy1J4fue9N9Za581SSrm9e96r88k9/HEem096+eevfdw1896S+Wse97wnyXQSozugubMSSTQljfFumsMo+j4VBp0BzbVqrQZPUn+NUFgL6blXmx4+PKb3aee8OrACsx3UQlgx9xe31wLWfS9n+5kAFGZeo+IXFtZ5QBcR5UlYFN427cZHSunenVUeKuwtXltbQ5qyJ1jn7rlCSOdxon2fPocVH54SPJ4pRgPy8Gyd20CjTnNtMBrD8B7T7fbx7rs/AAA82HkAndBeeLyzjZz3vE6ng2vXyMPz3/x3/+yx/XqiwjM/iT4p8xDSvLLxOAVpEXkSBDb/rHn35Pw1xUt40r0ee3/MFCQhhXORQyhE1QYA4MbNa3j++ecAAJVqDSrga9Icgt11k3SKmDedSrWOK9euAwCOusc42qfNdJhYpL0C3hDQDA9IL0DAm5FUEsWGa4yeQYS+jzErFc1KFc1o1t+z5OTkaG5TsW6hfFI5LDyhnlLIeXF4YQjNbsgsydz3aZYiMzTBfes7eMsT0t1HSm+mTCq/0B8I1nnM/iKFcPCZlArQiy5Q65SWqNnEjfN0iK9mQzReOw8AuHUwxDdu0SFuIOFcvWoGw0JIp+RYiFPzyDVXCIhiPgozGzRrMPNDu/+jzcrOti+YQjGwgFz8HXoSkJJ+G0gDJWmj1LmF5jbXIx+ex+8qnSDT/FylYHksozBCNaIxvnbFx8UtNlZUiipo8xI6RV6huWynGfoJPSuFgfVonlYqEfoxfS+VB8mQWZIZHl8atOIgXkSa7Sb6Q2pne6mFdpugY9law8r6Feqv0W7Ms8ExHv7oPQDAw4M+ltYIprl8eQOXLm1w3y38KhkiF649D82GwnQ0xMEhHeid430c7TLcc7KLlU16bo4KgoCVGSVgeY9Z2dzCEitR+bSPTqe/cB97gwHe+ubfAACiKMLm+jr1t9lyysza2hrqTdp7Trpd3L17FwD4cOE9Qyp4amZQFuM8GAwgeQ2tCZixIgAAIABJREFUr6/juEttG4+GaLfoIMmbLQz4MNZpBl2snTBExJByHAQOplxbW8cej8/ZYt2aP7V+PrFHF5/nzwwpBPQTzhy+EXzu3985a+xs3rnFOGeTFO0o/uueOxeKsYgIId3ajUIP60s0R+6PBgSRAxBCYZoSPKt1Dp9vn0Ghws+92vCx06N3PjUzW8haCzkDuE4ZXjOVZ66L1iLNaC9O8hwTNpKlUPB8GitfAFE4M27Pkul0AsMGmdEGisdcGyDwqO9bFy8gqFDfa9UqTPE+hMVkQgZBMp1iNCAIjBQn8Jho915q9RqWWNEWEHwGAlGlgoAh2UolQqdLYR9pGmNwSDB1fHKIhww7T5MU/ZND7sHjFZ4S0iqllFJKKaWUUp55eaKH59MCvoq/AdKOC8vkkxr3p8FhnyZnuRU/2YZCpJQOThACeBonUxTVTmv97Oau1Ko4x8GF9XoDW+cvAACG4zH+5pvfBAAc7e5Dx+SNGcZjjBkqkFIiZAtAhUAl4kBcI7G/Q5aStEBQBCf7wnlOtJYOloiTMQRIc/dsAJXTfYzwMH0KqGA8HTtrQAgBxYFgUs2sK6M1tKBnWQUo/kGgFGIOTpXCwnCgbZ7FiLOY26mcxeYrBUZP4Hn+DObxZxDnDPICGTB8jfK8GQwqF++fkAZQNJYPDk7wjQ8eAAD+3otNtALq0xevruLOLrnxd5LZ/a2Y+2xnkJYUMzfxPJRnMQ/VGvLU4LT3EXZmic33gr6bBTM/lYdHACEHd1dDiRZDrL608Nj13KgqGH4nnudDsSUmLVAY174v4Sl6QfVqBemUxmeSjGA0BwnLKnJ20+dGwedA6Cw3KAzweBK7cbE2n3nmlI+M3W3JKH4qqGDn3vswIOs0VJchfPKiNNeuwU5pbYmkB9tY5ueaAi1EqPt4dIcswOO9Q/iSPZrVNvwaWaHVikIYUl9a9Sr8JbIqG5tXsHz+mPrb2YPPlvA0SdBskdfIyNkarbfqONwlKG379p2nmqtXr13Fw+2H1IZWy0HBnU4Hfkjv9OT4GCnvK/3RAPF0Ss+t19BokJdGKoEKBy3ffO45DPrkvdRZgoxfUg6BKkNRgaeQxeRx8DwPjSYF3Z4/fx7DAa2LbreL4yMah6haRaNB12xubuD+/XsL9vDxcBIw512R0vXbWgNV7AfCOk8xlC6coTBz8E0oPFR96lPoVzCYcgKGnQKWPHkKKaSK+Z6+8zwISCh+V8q3MOzaUkpBYPG1qAIPYHhTeT42m0Wbe+gMaf4qqVHn9qdZRh5rAMpmyLgvKxWFFZ/207cPYhTO0FhPofhoVkoCDP3UwwgVbn+SZdAMHY+TFAcn9N4m8QRjhqA9IZ23JBASS1GVe/D5M/uo0xS5LdqjHcQaxxmG7L3pT8e4sHUJAPBf/9ZvY2ePzrbtnYdYWyUv6VqjhXqt8HQZTEf8294IrWWCi5WwWGKPplDKncHS0+AuIqwELih6rVnHSpvm5m46RcJjcjycQpgnH/5PVHgAnFJ45jOw5pWEeQz2cZP9cYpS8fnxEeifHp3/OJektRbSfYaDHBaR3FjMoacQfBg06hVMR+T2feuDH2A8JLfZnfvb2N2hzB9pAcOQVmo0gkqRBSQh+LOvQnfoNaIqVlu0WSfZFFIVC86DMTS2XhCgUuXFFEaYTDlrJUng8WYwFRY5Kz+LSJI6kAG+5wEMexho5DktOGQZFCtRWmSoVWjzRTpBm/sStkIwpIo8ryLhGJH+OHHZJsPxCBmvlEoYuqyksFJBwO7y0AvdQjTazOJ25l3L85j2GWLlLNNqmGt85TsfAgA+c/VnsCZoQ7x5robn12ijfLSbwPABrYRBJung8DCnUEs5y96af5a1kHyNlgKSB8SzGXLBij8AwxuotYCU9N5ySNhiQ5cCT+Ng9ZRAwJpkYC3CwuBAjorHbTYpwoD7JSXqFT4c8xxNnlNB4EEbOkChLXxB77niN5AxJGC8itvsEqNRqdBGE/keBhOOI9IZ6nzgBtY6+Kw/SZHxmshMDsjF3egmi7G8SkqOH/pIeV/x/AiGjQlYC81Kt/R9VOvUtuWVJjoTmoNCGgzGU75nBbrHRkNF4dwWbcTVRoh6nTbcxsUlF09lDz5GxvEtt+68j1FMWWz1ZhvjDn0+fPQA4z651KVWaC2tLdzHi1vnYdmAiKcpGi3a6Lf3HkKxwiPyHH1WPKxnsclZoa3lNmIeh7AeIo7pXUwnCaoMLVhpMckLZdVDltMBE0iLjOdke2kVk5Tus3fcgR7TffLMIGU4JJMeLGg8936wi0wuHFH3qfEzxd8KcNCuwQzeUlI62FAb62K1jBEQfPJdWDmHyKN37lcqOL5HSq5RKaQi6ERnEfKYx1LkmOmjHoo1J2AhLZ+m+iniBQF88PAhtqpkAF+or4ERYmT9Hr77Ec0LpSzSdVIwbq42EQbUZqsNEm5PVXloCXoPH9/6AEPL5weMCyxU0iLjkIJQeqix8ZFriymP4VhrZJwB60uLgI91bTVSftYQFkNeu4uIlNJZa9poZHxOHJ8cYa9H6+B4PMTK5jnqS72Ouw/I0PzTv/pLLC+ToVCLqlhboVi8i1tbCPn9Ztrg8IBCPZLeMQ53yAh48fU30GS4WGszy/6VcPGmUglUG7RuKtUqXr1A72IifPSOj5/cr4VHoJRSSimllFJKKeU/UTkT0vq0v+cDiYuAuTzPnbb+aZHyn/TqzAeLPQ4++yS/wuNECOHcljrPXZDXIvLGG69hPCEvShLHzl2ndQYti2A6C6upj+PRyAWUhUGAvMjqsQYBcxXAzgXlCYWEraZApdhk7oHRZADJlrkSgQuWll4IsFbbaC05D0yWJBh0KKsr8H2020sL91Eb42A+T81BNMJCFUG3eQaviO7XFvGQx2Q6QYU9PJNAwhTwk/ThhWTBrLWbqIfU5t3dRxj2yTLMsgCGbac6LKTH7lU/gBJF0OK81w6ngqtzhkrPEiOAgktJqQruHJIFsrPXx/nLZFk161NcW6fP3zjQmBb8DogByV4RzCASIWdzUAIznFSIU/Or8PYo5c+yGrSFKaws5SNg69gaQcHNKN7BU3h4pIEvi0w4Ac1zSinrssCMtshtEbAIcNIgPE/CL9aWMfDZoyUFoAXPTShn0UllUWHPj/FyxJwlhGwKwfOlVgkwYU9OnCQYx8zJoz1Y9p55FY1kutg7BIBqrQEVkFfqoHMMWyVv6HoSA35hIcfQ7NlQfoj1c2QNtpcaOHeF55GvcMyBjFJNYQ1bxdMASlDftfWhfApuF9F5iISCHU0+ROAXwbpr2N37GABw0o1xcngEADjc2YH0qb/nN69gOl3cctbTBKurZPHe236Ei1evAAAm2dTBEuvNJTTZGzqKRzhmi7rTOYbPWTFpkuOE53k2zXHjKmdXjVJ02DNdqbfRYk9tpCSG4CxPpaDZO5DrHPWC28dUkI/JS9LpdXHAXEZSCawzB8rTyHzW1SezqIQqvJL2FEJQwPl1v4mKT301ucXmOnkS1pdWsH2fgs1HydDBjDARYGjM6o0cFy/QPPJlhiymPT3LcoScHOL5CuwI48DexYPr3751D8+v0pi9cXEFHq+/m+0W/n1OAeZpKrDbYc61JMEyZpnMRWB2nOW4uEL7+NWVCN/qkFeyaSoo4gKkEIgYyjYWGCapa8e04DITEor3kkgo1HlvTY3BSHMws9WY/fJskVK4ZJVBfwjFbZhkKSxD5a2VFedp0bAO4VhaX0OtSWvr+PgYu8wx9+BgF5fXaL1+fOsWbly7AgDoHR7h//2jPwYAvPJgF7/wn/0y3b/ddh5rAYGI76/mUCVrNCqclFBrLqMaPhn5eKLCk80dOPNww/xEllK6dMMsy06REBYynw44H5X/yXRyPZeVMx/RPy+PS0WcX0xJlj6VwvPiSzeRcYT7Rx99BOnTb3vdPsRc2vD8MzKeaCbXDj6zSrr0UZrU9NsQgB/QppPnOTQDNVG1CmNmi8xazoRJNUxa9F04EsKoUke4yi5PaZBl04X7aK1xJFVKyVkMjwAEbxi+MAgZZorHAxwf0AGQJQkUb07CA4asCOUaqHN8Q6O9ioCVGd/mqPCs6o+GyFFkmXluwsLO4maUkqci97PCHa9zxBxzcJacIhSTEnFKY7lz0sfnrq5xuzJcWWEFrTLCLuP3PiwiMJGWDObmqZmbR3KWXo8ivRLwTAbN/U4QQGiGh0yGmL/XfhN2Qu/Z11Pk7pbiVIr6WUIZDgyfeZ6LmfF9C6+YLtbMMuSooQCARr0OxfNxmsUwhYu8HjryunScYnWVcHHheehymqgMLAaG3kOcJ9B8T88PYThLy+jMKaepzmBkEV8koZ8i+yVorWLE727YH0L6dKDvtfawtkUHXuRXAL5GBQr1FcpyytIpPD6s680lTNl9rzyBCsex6Nxi2iGlohFtQnDGGaQHjDi7Y3wCETHU1VpBvk39nWQjB7Gtbm1h7+ARAOBk2EONIb9F5N6t25gUxpkf4NEhufW73S4CPqiSOMatR3T/sOI7+ofcGkw4tsekQKNKSk4mUnSP6VBpr62hO6YD3sYjFIk5vc4QqkLXEzEm9aXdbiNgqGAyGiOytEZW1lZxsEeKhdE5pef8/5B5ypLTWY9FNuTpONEwpPm4FC4h4Li8ZtTEm5/5LABge/suLCvatVoNdY+gvLHuQcf0+caPxfi5v0fv5NH9Pn7qp2hedzsTpJym32q30e/SHqq8HGG0uMIzthZdhkxzayF4L7l+bhkrVRrL+/0Yx/Qa0B1PsWULglLh9r5MAy2GZL/00mW89xalXcfpLJXbkwIhCpjPINVFPKVwmV+01vn+aYKEx3YsLDoMXebWIhCLr0UhJSYx9fHDjz9GymNerdaQF06NqIIBhzLE0ylaLd4/co1KobhWIliOvYmnY3z9G18HALz39ju4cIFiZI9HCXo53fPtD+7g9Z+gey4vtTAektLteT4UG6ZWa5fhrPPMnbWelKjWn0yfUEJapZRSSimllFLKMy9P9PDkeX6Kq2AerhLOla8cdTQA5+HRWjtSouI3hThqljmNfx4amyem+iQXUNEez/NOeYGs85Dav/ObJ8nBwZ4rtVCrVfGFnyTSuvfffR/vfJfKRlQqFeelUUq5dks4xRpSSvdcrWdETWmcIGM3ZOwpxKxxt5p1TBk+a7YaqNfJskqSDBPOSAmDyEFacZxAFVwOeQbffxrvgHWQjxAzb4WwBumUgxo9iTym8T/c38PuLvMcTGNHKAUpMGWrXqgK2hPqb3NqkUzJuvaEccGX01RDcLBemqRIeBzyMIdi4jwIuMDmPE9dUG+m5wKqzxCiYi8yMSy5ogDcOuygG3OQqhG43Kbv3zgf4ughE7v5S6gyrJN7lSJJC0rM4CorPBTpAvMeRmlylyGQwGCVsyPeuLSOW5yx8GCQ4WKdszIaK3h7m0uIPCVnlcWMt0IquGyWNNezMhYmRVjlNWctsrSYOzGkLQKnUyhZeBJSpBx03aw2cH6NOIta9Qa2OYjw7mgbXuGtyiwqRaaH9BByIPTEZFDFq8oz1x5jPMinyJiUlQiGgzhXz59HVCf49+D4EJUGB7xXAwhbWHoWiMiqTGwdSZEpmOVYWSE4zBMKYZXmY5bHEOCGJmNYhv9EfOg8PEIqyBqXgmkEUJwR5OUZ1jZofOr1JsIKjcOjh3fhsJEFpFqr4ejgAAAQNBQesien0+lgi4M1YS2EVwQYt+GzZ7Q76GPCcF7oB2hyxlbr3AYS3kvGyRBNdjhFCtApWelxPMGAPRqjeIKwSu0PqhVsXqB+Cd9DwB6kqBJBa/Ke7e/uuGzUReTs8izW8dVgLmRBSgmfoZM4jaECmnc//mNvYmOFvG5WxrhwkTwDw0EGdYfG5oOd72AiKNhciRAfvcfcL9kAzz1HEGK3YzEaFDxVY0RBcX4YNNqLT1QBoMdZcWlqoZjrpr0c4NoKQTy3O32MeB866A7xwkV6rpLSJTRASArsB/DaxXW8tkRz9m/2Ru5ZmTYunEJYAyOKM9iioGIzJsWkgLokoNmPkVgDzfdXVsJ/imxCAK5fGxfOzzh2UgvDh+3G5Yu4eukyACAeT/DCjZsAgEa1hnhCc+2k38WESQJ3dnZw7wfvz+7PyEGaTVzCqkWKMUOpRmukvIcFvoZmL6PyFQpqxixNHaluReBMdOdMSGt+U57VWhKnsNkightiVjslSZJTCpL8hHIDAML3Hwtdaa1P1VSZd3kWMNvBwQEOeON4tLsLjQLzlO7l/MTnz06/63R6TgH4qZ/6IpZ4YW1ubKLK+Pe7P/ieU8ZO1Xuxs0NRCuEUvFqt5tx7tWrVwQB+GGBlne7frNdw/+5tAECvf+LShs9vrcy95Cr29yhuZzxKYXiD1kYjVEWK4dOJ0caxV1rkyHkyDscx9ie00A4Pj9A5IbdifzhCt08biRUCmuMhPL+GQc71VboxwNkjOh5hiSP0o2bDpWZaM1Ng8jyHx5lLAjP4k9ibi/R87VyVC8kcCZfgjeajgxMcTm4AAK7JCM2A+voTl+p4v08HxMdxDarQvSTlV1G7NDyeF1Z6LkUWp+LLpFO0/XyIyxFtOr/00mXcXOH6RwPgNSbBOx5O8N0dziqxYo7i+WypVAJIThU3RkOyAg5YNy8aUQSP2xZIhUo4I7MsNiBIjUJzzsz/x96bxUiWXFlix+ztvnuEx54RkWvlVnuximyymmQ3xaZaTY7UPeiehn4G0gCCIEEQ9CdoIKAB/QjCSF8S9CH1QKOZkaaFQbemF3GI6WkWtyqyiqyqrKqszKyMzIxcYnX38P3tZqYPu888kk1mev4ScX/KkfXC/S32zK7dc885AtFI35Nxb4ImMX3W6i2s1PUicefOHYwy6oGAgqJenUncR0TvYiyE2ejUqj7G1LcjhAJ7hiLyrevvY0DnqbiFl17U5+B7NkSuz1MKDhHqCdGygMTTx/yP/9u/Qq2kf+t3vnQJriyo3FWkgj6XPLiUjOdJBouoaDztQ1GvgyovQFZ14sGkxNychtIOH3bBaOERWQ6fxEdr5TLkjL1mADBOImys636YSrWBLrE/rcVFvP7KqwCAerOJH/74RwCAuVoFY4IWJmGImDYfZceHxfSzGI/aAHnflXxgvvAIi8co1fX537y/i48/uA0AcMoBXn79dQCaPfmAkvPlpSW0d0gk9eAAbomEFufmYeWzPUf1cxvO4+vEY16MxWelzKbRtX1YSt9XJRW++c1vAgBee+FV7DzUzNjPv/kl9EnoUSYMnCbOR3uHGLM7AIAwDfHiKzqJm6uXcOumvmdRCEBR8ptl5jw9z0PyDAKZSuQY0TjNRAaf+ky4zfHihh473996gJA8nrYPB/gizY9+tWaUk7nFjNp32QK+clFTvN/bu4ahLN7jqROAyxzDbnMsBSunc4hGcAmeXSiXEJNQaD+KTV+mBwVfzV4IyHJhNn9ztSoWCDpeaS6a3s1zVy6hQnCxVAKC5neXMbTWNHPq4gsXkdFG+tH9+/js448AADc/vQ7LyFowgDZkZa9iCgpCSCNhwhXDcES9abU6XJrwsywzyT4f9ZHlT14zTiCtkziJkziJkziJk/iVj6dCWscbiY9n6GaXi2MZ/bHsnlnclC0tzk15zHFcOPTZth0trERRQCdJHJtyvFLSOLX2B338zVvfBQDsHxzgkCo8n376iRFTW15dNxko8A+fegN+8uP30FrQu8Tf+OpvokNMjFI5wLe+9S0AwLmzm9gle4hOf4g6daavLC2jTCX+xvwc5uc1fBLHMZaW9K7e9zzjBOuWAlx54SoAnWmOB7opc/v+XXx2+wYAYDIZYGVFn49jBxj0SQI+n4oiypwjiWYvMSulDDNAQBrYKM8T0/AajULcu7cNAOiPQgyGxFZTzLiM51JAEntnPElxZ1fL+kdRjBI5y5/fWEMidGPoWhAYvxTHskwVRogckmAABQZmMvrpLktI+XSZeQrGpt8BxozI18P+GLf3dDXg9GYNmdKfVwKJ15f1GGzf6aNCu8SmA5TpOmqBjRrtlBmzzc4hjqdietyysdMmN+2aja9d1ju09arEckk/Q7gl+HSPv/PRgan2gTHgGUrM+j0oxMimXmB5LgxLJM9yVMsaz6j6ZaP/lOfC2KEoZcGipmLX8WBV9edknODwUD+3i6unwfKiadKBVEUFjmM8KZogc8RFNY5ZhmUo0wyCKh5RqmBbU1j7aXFm/RxufaahtCgTKBFjq1x24QWF4J6NKNEVRwbgk5v6fe0/+hR5Xf/WjRs5KnS99UYZFXpfF9gS6oVgXKkMRk2xKmqbnlzpz0HQGN+69hOEh7rqGUcSg56Gnyq1EClVnFrLa0YkbpaYm583jKM79x7ACfRvNVdWMSQBwDjNkZJWz8O9XfhUaWYixhw5yNsqxKCrz821FLyCNAALtlNoX1kGFqrVS3BJdDHPMlOhKvkeujS3VfwAAVWpszBCq6nnM3e+hQGN86eFZVmPVeR/GWxrjgHgEInCd3xYpI3zG7/5FfzW138LANDea6NO7u4lv4ohQVcb5zYwGuvPFx7dRv+GHjsP7mT4s3/RofsBpPGUMFOwsSyLGyidsSkk+eavz3CNucCYmuKTPEaVUWd4buHymq6EbFQD3O3rCszdww66XX2Pbc827DOHMWOHkSU5LpIlzvPzFfzkkT5/6bjIDIog4FIzc9Vi8KlJ391/gNZ5va7M+w4eZvqeOHlk4F/ftuHMrq2IJEtNG4QbC8wNSBCUxTj3mv6tSrmGnCqjgnOt8QZgd28HW3e2AQBf/vIXkBf6P1KY/CBNYghqhXFtD3MNDedVKhVDyMjydCoaaQHMKVoMFPJkqstlzjkODSP6l8VTIa0i4bFt+zGaucFk82nHvW3ZU+8O7sGj8rHjukZ07rgBqGVZxxIeBoeOKQUlTMb6YYaTiemxub21hR+/+y4AYDKZGOXFUrkE19I33nM5prSVp0eWTnDU0X/77f/vL/DGG5+nf/fhE8Xh/OVLOP2c9tJ6+bXXTfm+NT8Pj87ZtV2zQD988NBcl+f5WFnT5VXbcVAuuMIMhiI511rE1edfpr/dxt0tTYUdDHqoVijZyCNATgdC/gx9A0ops9BmIgenUjjyBEUrUJKlGA41G+ewN9ES0QBcx0a9pH83yhKMJgRLIUNO7LbxaASAFqdqBTbhxrZUqLk6IbQkzODMVW7ECaWEEfjTiqfFOfPZhQePK4IrZUqxoQBu3NcTx5c3FgFfL3z2eITX9LwEITiWyGPozEIVPlEfPJYbBWOZZwbSYnBNsiFFhv6ChoFqc6vYWKfeDyuGSqkvKZ3ApX6JanMOnOnSvHxGlpaCMrCqw7lhCjIGuARv2TI3/XSxDM37gWPGgUzZSKjUbkHAKfyYbGBC/SHj0QSVsr5XtVoD+Vgn5mEkAFaIf1mQ9AwFuO6nAZDGuVGtZQ7wDKAkLEvi6lXdE5CkFhqUcA6Hh4DQyaRVbcKv6mQyHB2he6DflW99aQFzTQ0jx5MhdnbbdEwDjUX9t1GSY5WggtWlDXA6OxGPIWmeY8zFzh39naL3EC+89jwAYP8ucOP6h3SNY4xosZFpbu7JLNGs1vBgWwu03b53F2ub0x6IHm0UatUmSoFe/JyGBy70c3GFD5feXdd1UaIksOw4KGR6w1EfCTGREgDDAxJODDg2T2u45e7dfXz0/vsAgC999UtYJNVlT3HTL5T5EYYEa1sMGE+mfSVPCsuyHtsk/7yfFlCwxEwnJ3xiZrm2jSXafP7WN74Bm1ookiRBhdSy2w938OiBvn8/ffd93NrSNPArl8/hsK1ZZVv7D3Gd5jKmGBx+nDlsZhjjTQf2i10Bfll4TCImGGU0mmChQvIGTGKJjGFfXJnD/e4tfYxw8PFn+pw/vvcQTkkf0/L86WaFMZRJ2mOj4mCLWLujTIAVayTPwCjRzmMGi5LcoNPGeFH3XGb5PGy6/6VcmHnWziXc0uzj1GIWbJqfmgsraLT0Br4+34I9p+eGME9wf0u3ZVy6dMmseXPL8/DIE288iTHokXq3Hxil9jAKEVGvTmAxnNvUMG+1XkPJKyQouPYrBJApBZvWEkiOccEWzrlps2CSg6kng1YnkNZJnMRJnMRJnMRJ/MrHEys8aZqaEtRxeItzbhqYbdtGra4z3FKpZKofNrce68wXv0Azx3EcSDl1zZ1CBRZqJFwEAD/8kW7g++733sJgoCGe8XhspNVHozGU1J/LtQUjwT9LLCzUzO737t1bWKKm4gsXn0OX3FkTkWJuTpd3V9dWTaN1nudmk84tyzTQnb9w3uwYhBCPVcamO4kp9JLnCj7ZAFy9+hLObp7R53NvC++992P6fB9xSDBfmiFJZ9fh0beVmfPJCp8spYymTC4koqLR3wlQrZHGR5rApzK6Si3kJF+VCIk6eRFFaYY52pnV602AGvqSUYqAhN5q1RoyXjQkZ4gLMXcBcFHs/GzTpKb/M2Oj5DEtQMUYMmJdObBxa0eXd+8PE5wrUxXCtbBAv//bF2sIqLzv8hRFXUlJYewGJBfmPgkhTNkiTxKskWib745RtvTOTQqJ+/f0zrO1sIA9cvBdLjWwGOhj9uJQV3lmjERksGkX3yhVIIgRxl3HeO0ozjAk3yXpSlhUoeRSwaVr5NwzptJhnBZ/qvWx6Lc6R11U6P3LOMcwItsFxZGR1Ylb8VAt6Z1eFOVIaScZ2DU49AwFzzGKZh+n97e3jI+Vxco4taLfg9HRPrKxbt63mguwCLLu3L8Dket/jyddhGO9k1xf28DqsoZA+uPMQLjD4RBC6Abd5qkLplrCJZATe3J0cICcXoSLF88gqOnq2eLpDdx+dA8AMBh1kdJ9iMaTKetmhui0O4hJqHDz9BksLeh3SMQRFOi3ltbgkP2LrTq4e1NXLuZKDpr0XBSzjIN1NA6NxU2cCUwKfSTbRkom9xnRAAAgAElEQVT2L3Nz82jUdaV5f/97Zh7tdrpYW9W76ziKMCTR0OFwBI8wkMPDAyyRYOrT4ni7gxDimO/c40K0Ft2zsldFiZAAmwOLLf3cFlstRCQI6zjOVNw2y0wD/oc/ex9jupeN197AGy+/CQDY/e5fIFS6ImVxmHeac/UYiedxWZpngZcTjGiuPOz3cZraFyzG4NP69/LZDfyb67pSOM4ktjpkAxL3MaIK65wfgEhpGCutCaa/B0hiEn1kFnx6YZd9BywlYcg4xUN65u2tG5gnlq8/zzFHc1UqJSbUDuJKhWw8e3N9Mglx2NVj5PxvXMT6VQ1jebZjNHZyJaYIh+tin6BRGSaYJPqcf3LjM/BIj6nzm2eR0zzhup5hTObREPWy/s7FhQYcQmhErpAVkFmeonA3SdMxEiLYSIdjFOnztFmMLH2yCOgTE54kSR4rQ0Y0eeXHOto9z8O58+cAaPPHwryLCWFK/8JiUMeYDMcToYJ1ZVmWSaIEppR1N/DhkZLiYDjEiHxulFJTuM3xDF3asn1TXp8lllfmzcDPUoWdXY0Db545bfxVNBxkVlQ0yMre8zzTd5QiPQYhTIP/nPCaSYSOJX6u65pEMMsyI5T2wouvYH3zNABgZe00/vTP/hwA0DnaA2ezswrA1LFCrjSsCNuyAIKlhBTwCD6rlmuG4ROOR2ZCr3geXL9Q1c4woq75ZrOG9RX90s83qlCkPBhOJshzPWmVUMWwp59ddWEeYUKePcfUuQFlVHotxp5BP/J4xqMMVGRzYJ/M6t6+u4vFyyVzTGEi6MoYVl54P8nH/eKM2SlDSvcpzfOp/ECWwyLFXSVjZIm+1uFwhP6QRPDmltCn8rqwHeMlQ1c76wVCKWWkEWzGoSjhkSpHTAm+splxCU1EZhTEfduZqmg7Cj5RqhMVY0D9Zb7rwiK2VzgeQlEm1BkPEROk4lkOysSFzZWEz3XCc+bsWayunwYALCxtgNMCtjfcxV9//29mv8bcQU79M41WA4qei+c5EBOdzEzaASIa+ofdNnyP5qe0AkFMmEQyBATTVOoKCSWue+0+9g/096xsXkB5RSefIkmxdV2zR3rDDBe+pHtHggUPOS08QakG29HXO9i7hTrBbdJxIJ5hsUzS1Iz3C5cuIQ91wtYfD1Fr6c3W6qkFNH09Nm598AkC6jEp2Q7qJDuQgRlocmFxES0yYny4t4OjoX4v1zZO49p17StXqdZRKul7cjwRcRzbMEo7nSP0SKFaSomFRb3J8wIP4YyJ62PtDnhceNDIKjCOCiXLFacCSYsaUxJNgiU554iJneZ5rmE0VhsNnL+gmZeu62NM79aplVM4d/kKAOBB9wg/+snb+jvtHLCLfkdlNpkKeDa89VjYIkNBBjro9hHTOmQ5FhT1CD230sL5hr7Gh70RhkQbr9gWmNBzXH8SwvXIQ9GzcNDT75kYDwxMXeYW1qkH7TdfvAxH6PH407sP0aYerqM0gU/ns9L0Icmjqmy5RqxUSAH7GaRM5qoNXDyv7+eLr75m1uajoyOjSe26Nk6fPg1Ar4UffaSFEx/95BpCn3oYV5t4eV33DyRRgn5Pj8319VMQVKQYDQ7RWtbHLCxUkAs9BjvdDpTUz07J3Ij8ZjI3dHvlCfTGRaKlYD1FB+ME0jqJkziJkziJkziJX/l4YoXn0aNHj5Uhu10N8ejSsE4pr169innyhonjGB41iA0Pu6hU9A6qsrZoqiUW42Znm6bpY9BPlTJZy5k2SIMBz125BAB47tIlHL3zDgBdCSmyziiOkZJbs4Jl5PVnCc6ZEVbzPR+7O7rZcTKZoKjXyGNfyJlldmiNRgMlakiVmTTVKtc9blEwFZg7DudxPtULOr4rYpZl9v1xmqNS0d3rV194DW/9SAshDnr7BjaYJXSWX5yDgqLmMhscEZWHR6MRPLL95VYOm57YQtNHj/oVmeUYH7FmvYwJefa4to8XTuvmy7OVChyCT0LHRpOgAnbUw+CRhhOqjm9K5CmXGE505ScXU3E9hWfTcCnumVIKdtHExgVCW4/TH9zZxbma/s2X6lNejRBT5sDPV+OKKmOeZ2YPf9wORTfd2+Z3JyTpLxnH5nOXAQBeuYoLLQ0lfOftaxgSFMI5h3iKZsTxKNk+vMLcOc3hUuk8lxmswrHd4igRZOYwBYduSsnxUXapIqG41rSHbvAuGkNlmsGhqk6jUUVOTZNhOoLrkNu4ZcGzdHVzsbWKL7zxO/p+Xn0TPjViMss/NmeEuLr+0szXeObMeSgql/uuh35PN3jntkQ81Lu4YSaR+Lqa0R8PEI10hWSu0dR2IADiJEJvqN9jFxrGAwBbAtWanquYDNHd09WewXCCn31ILMnBAMvP/xoAYHVlAcrS74dj+Th3RgurDR99ZtyvpWVj2D+a+Ro9z0UU6vu5vX0PLNPjwbOd6XsQHWGPKs3J6GjqdO9YaBJbyXZdCKp6+KU6FPlk1RdXUFrQ41wpjmpVV2kuXryI73znrwEA4SjExoWzAIDllRVIqsqPhiNTvWeMmaqOX/KQUDX3aZFmOVRR8WAWclaMBcAmOKNaLqFK1fA8jlF0stq2C4cawNu77WmF0vNRLvReEEDRd66trSKd1/NLrVnD+hWNNPynG38fvKLv5fe/9z1wSZpVnIGrQnTVgioqo0o+Q60VOFsJIIgl5DM1tRqybeMduFhx8JXnNFT4wZ2HOKJr2WiUUfc1LHkYjuDQHLMwV8F9X1dvxMBHmdbOcTKGT5UZnh3gi69cBAC05ipYJGHOH31yF+/X9Pt9bs6D39JzceSVYHn6vo36I6ytLMx8jfOry6hRG8fi0iIsmm+6wx6ERWs2U7ALIkqWokpCmPZkjOi2ZjQy9xLYac1K3LpzB+0D/U4vLfuQls4nTl2oIgiKVoYBcprPwniMlBACIROg0M3iFmzCAl3bMyw/KRmqJBr6y+KJCU8URUaUbzgcYkD4bhRHRq01zVJDDYyiCBGJ1EXtIzQJ+kE1MLTYnxcg3CGl0QcPH2JxQT+QoFxCdkx0bkKwhB8Eprfn8PDwmIfXlMaZCwXbmn2hzPMpjOHYNiYTfYMPDg6wuq7FkySbst9cZ2ISszAMUS7phxx4vlF8jOPYMNQsy54ukMeSHAaYEp2Uciqcx9RjvUw5TWr3H+yjtUhKr36OcHA48zUex88ZO/YMVMGwAsIwgiDUsdvpYH1RT6z1Wh0ZDcDRKIZF31NyOM5u6IFsKxs2jYFu5wghjYFJlmB3R0sHlColDEmd9Pb2NhaoFLqwsYKcJgnBgWZLv2SQyvTzPD2UeUCMM3CTKAnktIjvjhJsH+jx+3qrilTpCSvLssfkFo6rfU9L88wkufaxfgIGZpgJUkqENKkxr4ThhLyclI9P7+h+nndu3EMC8m9i7JkSc0sxAxfbrmsMBQELtkWGoUrBt4nyaiuownNKMTgEaWX5tDeJCWXGoGtZWJzTyXVzvol96jsSUqBMgoQlfwHnz34BAPDFN7+B9VN6I2LzEvLC20YwcKP8XML5tcuzX2PAATq3bNTDoK+ZJ7LRQGesxw4aCkfEyNx99BB12pXkaQZmFeatEoxw24wxyExn7L5XwtmLui+o4UvsPNAJ+L39IW4+IuHMyQS3bmoBu+eeOwfG9POScYwmUf4XT5/FaDwVNvTKs1PvNzc2cYcou0GlgmSi75VfqcMmSYTB4Tb8WL83rfk5Y9jbnJtHmfzrAs+ClHrsDSYZEpr/Ns6ex91HuucnjTJ847d1UvrTd9/DO+/8FABw8colvPYFzUadxCP0kx59fxMesbSklCbpHU8m8PzZrjETEja9fxazkBYAiFSo0uK7WG0iIp88IRLjmeVYLlLCK8e9sREhDQIfsAqxVAaPvMssb4KYvJYm0Qhj6kva3DiN/+q//K8BAJ5dwXff+rf6tyDA6T2wFYeiHi6F6fw7S5yeKyMe6PHi5BEy6iWFW0ZuRBQVLm1omGZrdwftvr5eKRxY0OvZ5dU5LLb0HGpJBauvWV1xbkGleq5aqVexfF6P2UdbH2HrQfEuzoHTnHt1eQWjVeoBPbcJhzY98AO8e10n8g8PHqE3nk1aAAD++nt/jX/9bS0B89/+N/8Q/+A/+QcAgI+vXcMnn2g5EsuyTHuHYzN8//vaJ4vf30OVksytmz/Gv/zn/1hfVzKGZesbffnqBUjaTCjG0B9TMWXUR7mi70lr6Qpi6lUdjQdGLd7lFlxiEQdeGQ6poXPmgOHJTLQTSOskTuIkTuIkTuIkfuXjiRUeOyghJoG7cZSiXCW7hFrVsLEyIYz3E2SM3qHemXhRiElCkujLLbgNXZmxHBsOVYd6wwHe++BnAIDBYIA9cg7OU4E0mcJDKcEiQuQmo2y326bCU6tW4LqFE3eOXM6eruepMP4tnXYHI9L8+ezWLZQLr5pmA5J2G51O25Rgz5w9i5AgCotbRmtICGmYEp7L4HmFXLqAVQicgXyfoKsShS6Fdg/Wx1gWN1UOx3EwN693d5UVD9tbs+vwQHHTpGtxC27hep+EphF9OAoRpvqHe0cT+OTZUi9X4ZNYWzdLjLu6BcALCgl7ge19Yr8ENchAH3+UTBBRA516lACisCVIEX6sG9yEzVCd0+Pqi7/+Jmr0fBWk0Xd66uUBj0NOBfsGgE1QZ9ViWGpWzDHHodqiMuP7vhnXgDKfpZKY0I5eSmksRFQ+bf4UbNqA75dsCKmf+dsf3MDbn2oNjnZqIyedKuT5s0GvzEJKTbmhFHCoBBx4FhybtDziFCMSjPRKFpzC04ppYTNA76aKAWYpwKUSf8l1Ua7re7931MP9joaEhGCouHqn+tIL/w6++ObvAQDm509BSj0GszyaEgWkgixU/BRDSE39zSdXmvX5M472Aw3lqP4IgooKjE1QpgrxKErQz/UcU/aAFvlPOS6D6+lziOMQ2UA/UyWEYX2kaYKU9GQyzzZCnruHR/jxNV1qd5jAqTu6wtO7/Q4cqnJk4z5EpsfA+bXT2N3T+iM7/SO4lSmj9GmxvrkJRvPNfqeDhKpwSa+HtWVdYSt5HCWPdul2CRbBfI7nozAdYrYDQffcKQVoNfV96IwnWFrUlenAq+L9n30KAPg//8m/xCJBXW+88TmUC22oSoCwcP5Oc+RUsUy4gl+IRioJ7jxxqZgGg6mWcM5BRTcEnm8qiCoX5iDXdhAQ3Nqam4Ok6mmaxJDUVTzs5XDdQqzWhaTqXRxlGFHTsu8mGB9StWcQokZzyre+8u8jH+jv+dmnP4akBnwLymjCcMt+zNfxafHD96/BpnJ45+AAVWqQL79Uh022NhIMQaCRgIO9fXRJ0PbcQgMjmm8uXryMZkW/GJPhAJvkaWZx4K0f6NaNrWvX8R9u6ufZizn+nz/XsOQ3vvo13NnVVdjGRhNf+c0vAgDml9fRJ2sXp1JB952fAADe+fADA0vNErduXUdM4+K7f/Nd/P4f/j4ATWT68EOtR3X37l1sbmiNq2o5QLutz2ep1cDdHf15vxOiUdVjbWFxAVeu6qrwxedOQQg9V3U6AxQDZdjr46cf6LWh1uhg7RR9f3UOFq09pVrV6DIBHIJNyU5FrvDL4ol3YL7VMuZ/5zfPwPWLF29q3CmEMC/kcDAy9Fdf2BAED0XDEUCLIBM5mK3LXXEco0aDpdVqYYFYCiJXiAkS4NbUtNRxbHz0kb7Z29vbZtFaWFh4rBeo6OCeJVzbNZ4eNpeoV/XLd7j/CLdv6XO+fPUKKkTT3rpzG9/+VDMffu/3/y5efPU1AMBoPEKFeixSwfDt73wPgFYz/jvf/BoAYK5ehcqKJhVpRJUssKn5qVTHyqsKBE/i/JkV9Hvb+njFcO8ZfJgADpu+yLVsBHbBbBljQAneQbsHRv0cYZLgsKvL3HONEjiVkIfhyCQtZZcZeE4oCylNoEPfhaRFbswkFOHPllcy4n2Vlo0qTayHR12AJtN6o2mSBoVfbEL4i4IdO5YxBllkleBwU/1QrqxXcH5Bn2OaDh6jyyaEx9vHJgTbtg10dRz2AmD6XsCm/VmcW+A0Ee/t7+OjbT3BvXf3CEdM940MHQ+Zmr6Qs14fAOQSRhzP4ZaBAZnm3QIA3CBAmuhjwixHudiUSIW0YDXYHAnBCTWvhJVa01zLgBbfXreDDpXLLdvH59/QrKUvfOl34ZSW6Z7kYIXpqkimBocSGPV1eTpPIwiHmHErm0+9xtFgiNt39LiruQqbZ07r3woz+NRn15skUOQpttAK4BKbKQxHiEnsUUgJRdBeHI5M7xMUR0zXNYA0Io2BlyMjevNEOrCGOqH62T//Z1g4pZ9deZ5B0rtbXjkPtq9hI3XYhTzz4lOvrYgbn31m+lHObG6YxdviHAs1PYn7gQ2PxPjKpfo0Mc4lcoKuRkwaRmMOjjArEssmslyf57/5znfxw+/rvr/z5y5jbU3DxQ8fPMA89WdcuXoFI1cvPDc+uQ6XIK1RNEKJNjorrQXsdzuzXaBSpicIgNlczVfKcGnT5ZR8eLSWjAcjLM7re7y8uIScxuB42Df9MDv7O1gbasPQ5eVTRlxuMOjhgDbJ9UoNg47uper1B2hTv2l/MIRD8MpKawXjSP87k7KwzYNl2cZjbZbodA7h0bXUHYbvf/8tAMCj3fuYo/6ccDRCt6/n1qrj4UsvaWHZ169cwvkNncAMhiOsLOrNhL9xCqrwpOQKf/WWZpnduLONf/rHGhJaPHMW69T2kfQP4NFatfLKS1gmNi8sD03ylMuZhaUlDQ853Ib1DMTew8MdvPyiHtdRFOHhQ70REUKY3tyrV67iC2+8AQAo+S5eeukFfQwT+Fd/9W0AwN0/+3OkRoklAL1+GPQsuK4eg/t7A9z+TG8g4skEvYF+juObW6hU9bq7dmoDzRo5GYQRFkkGRUqBwgzR9Vw0Gk/efJxAWidxEidxEidxEifxKx9PrPB8/OE1ZMQ84VLCpuy/2qyjSVb29XrNOIxLBhwRY2EuywGCAZzxGIw0CZAzMBLValRr+DXKEBljRntgrrkAi8q+nDGz847jCCk1Mb377k8MFHFck+c4i2amG2BZZuccBD5OndJl38FghO17urTt+yVcfl5LzEfhBPe3tQDZX/7FX2DjjGY7uF4Ay9VbyXv39/DhB1q6fThsY3lRV0h+59/9LVOGZgqPQza0C3UsByI75hRPUNrSYguXL2gWwv2tm1DZ7NdYXCcAWLZFruB6gxNTdSMMYzikseLaLhSVkzv9PhQvOuXtoncQQiojdiaUBugAYDQaIKDd28b50wioodMPSqYy4rguuD0VbyzEq0rVKiLaqXLFzTk/Pab3UampeziYixUqxvzaRh0Nl0QWQ6G9vQDYnEMdE9csBAaVzA3kKBmHLFx7WY6iBBcLGHjWUxJWsVu3PIxTffyY1zBmekefgwGFHpV6tqblJE0NpFItNU1FMBPZlAGpGDLaXUdJhDIxejIhIUgHRFrTilYzqCKmd7Td62NEu9ZapQpFZeJTq6dx9aIe++VSGbEq1Clzo5+ihDIuzioTCPu6GrB14z2cu/rGzNfILAsW7R4zTDCkhvqaU4ZFbtAiBRISGhPIIAhWE1mOjN5jLwjgURVZeq55V/Isw5jk7H3fwhFVMR0eYrmlK1FRJFGP9fnfuXYXETnFV8aeqQTP+S0DcVZECD/tzXyNR0dHBhLd39838HgSJ7h9W1cf1lfLWFnWO9WllVOm6pGGEQrTr1TFCOmZ1ucWsLikKyAHnQH+2T/9vwEAt25s4c03fxMA8Oqrr+JH77wFQAtU7lHrgVvykVIls1qrokQkjIQrw/4rOZ5pgH96TPWzhJSmqtMsl7FKjttBuYS79zXMWw4CbK5r2MKGjYRc37MkNiKUg14XN2/qRtmLl6+gRP6Fn3z0MbptXUntdg5Rq+jxriRDRJ5vmVB4eKCrE4fjDmyqfshMgqNo9s8RZ7MLZPIsgU1IRpqmSKhxerh9E51E37P108/h0nnN6rN8D/W6Xv/2t+/jT3/wlr4/ipv59/xz5/D7f/B39blJiS9/QbvZv3zlMsZDshypl1FXuhIp0xiLG3o94I0mOLEGmeXAKarO4GhV9TjitoXkGdbFai3Am1/UMJntunjrLX3Ot2/fxvtkS/L1r30NyyS6uLfzCAHN40e9Q6yv6ErwYqWJRzuafNDrDrG3p6GuQW+EMtnX9PpH+Oy2XlNFnmBtWf9tya8goPlgrjYHn8ZmmmX4kJCe3lHXPAvPDwyZ6h/9o//hF17XExOe5YUFtKlH5WDnIe7s6D6NlHHjfxIEPtaonLa8sYHDe7o01QhjnKrrpCjvdKFq+mQt14GySVDMdeFQKZFzjpgomj11hBr1E/jH2AGWxQ0N3LIswyADHvdpeZbI81zX4aEp6hVSFa6UPSMOuHX7Dmp0LTa3jGHo3qMdfHpdv4iXn38RIxKbe3DvHppEE6wGdTy8r+/JaPR5VEt6AErxeMJT9D2MJiME5CVyPHlL0wxNgh+udXoYD2bztgEAKPUYhFOUipM0w5igw1wwCGJI+J5ncoi99hEyUYhjlbThHYCIK5RIZVgxhjHhvdVaBRvnTgMAgkpZA9LQtFuXkljGOSVJgOv74HRMKnLzHF04z8S2M09dSiO2VXIVvnJFJ+OvrpfhMDK+tByjNpzmOWKazLltgROlXcAz/VNS5kjJhC+wOQQt7scnkIApQ9mPWQkJCW8N7RCZIvXgPIKiH5bgeJaU1WYMvk1jPxUo6vGZUFCFMqlKkdAi6NsWPEpa8jQ2C5ZtWfAL00zmoE99djF3EBVqtsMRLpPo2Ne+9HVUaCOSjTpwS/o9SJiCzPXfspxDZJScZjl8Wkg6D++hTL5Xl16b4RqR48y6Hvs29zGk3kBuJ/BrehKUvREGJEin8hw2yWCkaYoJjV8vnwqQMQZjEpomGcK8UArP0CYmWvuwg3qJGHC2wqSnvz+Ys7BDYnAHt4c4s6nPLawdYcSJHl5icNPh0y+OolarGTmNBw8fYq6hIX0LgF0sWtxDSrBULjhqVMo/GO/BoUTOtyw4pM5+6tQGYlpo//Ef/xM8fKgXmCtXr6JS0d/Z7hzAJwHXxtwcAvo8v7CAlKAUlgoctfXiGo0nyGksrS+vYn1ldabrU0wZ6Jor4FRTL4jnVteN19nu4SEEjcfVpVW0yDgyywRAC3q5UoNPxqqVahW3f/wDAMCN+7eNKGpgu3j5qk7Gh70J7j/SG9QkFRiR3Ibj+5gIYg5nETCh9gXGYRUJD3/Mg/KpwRRHSqKP7f4Qv/GqhnLOlxVimsc/9+YXsLxKSuGTEH1iSP1P//1/h89uaOaUkBwJFRT+/n/8H4ExnfB4no8/+A+0cTVjHA8oqUuHh9j59GMAgF+to3VGU9STDOCkqCwBA61DCtQKP8tcGcHZWWJjfRWHR3ocnT79HP7X/+V/BqB7akPDyO1id1cfE05G2HmoYd4ojvDeO9rzMgzHqFK/zfzCvIFqb299htUVnaQPxyPwguquBGLqw4mjFDlVAkZhjoCMjhcXV01RYGfnEXJSXZ5rWqhW6k+8rhNI6yRO4iRO4iRO4iR+5eOJFR6H26iRlHkSeJCUeSnbR0qlOKYUrn2kZdlvP3qIZTo+7/bRpN1yPhhAURNZqVpBRgwgz3UNjFXsegAgSaa6OtVqxZRZlZp2XelmaW4+i4IZAvWYW+/TIk0zuNTVyNhU6s7zPGyc0hno3e0dfHZTZ+VzzTl4lE3HaYJPr18HAGyeOwdqIkcWx8hinQV//o3nUaYMN5rECEjThHPLVAqO+890u10sEZvC8zxTsXIcB3/67e8AAG58dM1IpM8S3OLG5gOAaTYehyGGI50dM25r4T8UekF6aBx0R5B0V1w7MSXqSsk3VaNcSQiC3lbWVg3bRzcv0r1V3OjISJlPRReZgFJ0LZZl7ByYxYy41ExR6PBYHJwqUmeaAV46q8eOp8ZGdExyCyE12U4E4FPZt1mvYkCl8AlcMGJcBAiRQY9ri1lQVCXwuIBPuhJZniNW+rdutUN8XDBGeGCqOjaA432D7BmYIVJJwya0+LQ2SHwrABoeKHn6OUTRGMOhHoO2BHx6vwLbM83Y+50OJL2LGbfgUmOw5zh44SVdUl9eO2ueT5wk8G29A3c8G2kBqymGjK7R4jYYQdCWyHDvttYW+eoM13jU7iNP9PcziwFUuSq5Eja5h2e9oZHyr7hlhPS8JMsxHOvPXg5wkqSPsxxRVlT8bJAOH9I4gk3N+45fRqWpd9pxL0JtkaDdxTls3dWViK0DgRHdtzfOJujQ/NQ/TPGz2/pZf3mGa6zVagZSDHwf9You65/dPG0gettNsUINxkLZ4MSW2tw8j0NiPQblEhg1a3peCX/yJ38CAPj0+md44/NaK6nRaKBEFeski3BEOmq5kgb+G4xGGEV07f0R5olxtrK4hCE5gk/yZObKuZASFlUW11rLeOWC1mFqVD3stbXmWvvgAItNfX2ba+uYp8+5BJL0gM6Rw6MKViYkJgSf9qMJ1EjP9XW/jOahRh187kNSlcBpuMZuYHy0C9slXTMbmNaCpxY7UsJUmWcJLgUEfU9oc+yGely8+dprGO1rqG7rw+9j5zPNNqo0FyEIQv/yFz+HV57X1dPhIESFIP/f/Tv/HgSRCXI5RkKLSZrlSEb6OeRxhLll3YRcnltCREJ8jbl58IJwIYVpm5BgGNIxqeVCiXD2axQlCHqnt+7dx+Fhh84nNWt2u9vFPo3HaDLEHn3uD0f4hKpYh70uLl7UzKyvf/3rODrS8O97772PnV3NjGScm/U7jhIcZHoMKChMUj2HdbodLBAjc3P9tCG3BEGA4YT0AaMxqoQA/bJ4YsJTKQeokJlbsruNMi3KI5EX+mDgjoNTqzox2D3qYLujy8SbXgldKpevuzYE9WZE4xEyWkAj9rgJacHGYraDMZUkoyg0XsL5f/sAACAASURBVC9KCaMM7DouXKcoVaeGmcU5RxQ92UDseFgWf4wtE4UEe6QSDpVOl5fmsH1fv6zjwQgeLTx5nmFvV/97r9+DVdfHn1pZxcN7msmVhiOcPqVLm4FbxXBI0E+9OvWKYsxQBk+dOnXM4p6ZpEJKiZgm3ItXr+LGjZszX6NeHqdLpKDFPooi5IVSFmNICcfudhMkKfkqJRIBKb0eT8ykVIhjSnotjlWiVM61WiZBYmAGIpJMIS3MQ9XURcpiU0E9BQmuismJH/PYmukizTnaNKzfOL+CBtc9ZVksjSeYgMCAoDzGGJrzesJlfg0lh3oVoqmg2CRn6JH/jZ3kaFAe5tkWXEqKoBQiSrQeDBMcKIKBHA8sK9Rr8VjtnD8DS0tZHDn1VeXSRkIThMM5bJNsOCZJG4gRppM7N8J0rXKAfqgniHKzgV5UvGcRqsSounzxRZw5p8v0yqmBc4KdWWY8y+wsRkZQSJrb5DcHSAiowqfM4ti6d2/ma3S8CvJEX1enH0GQUW0jSRFUdd9OHCUID3WSvjvomoWnXOXgZL7Z2R0Y0brmQgUWMUS7wwTeHonsnXYMhVhIhoCOqaU23EUyxc3nsHNdQwj7owSkwoBxJOCX9W+Vyi4c/8mT7PHgnKNNEIW+Hr0I3bpxEykJl9bnA7QWNcyzUm2g3dXP6/TGBmoNSoTECBbBW1tb93Cf6PyvvfYanntOLzCTyQjjgpU2HiGhOdhybPT6+j5wxzJ9JHESQ5Bi9sLiAvqxXmi3Hj1Aw9CAnxwtr2mSpufPXkSVmGc7h/dx1NPvYqPawIsvvaqvtTmPKokpplEG39PJY5akZq7v9fsmQbM4N2OtG47w1oeahebanpHPKNYFQKvMZ/T+SSnN/GU5Nlyiw3POn6nvM89zqKIVw/ORUm9rWp/DfENDhcmgi1FbL9zjR59C0DlcXGkCyxpmj+PUsIpGu3fwQUc/Q4cr2KQaLsHhUa9L6ARgxIi2rWm7h+85002+EOA0Vw1SiR/e0KKnsV2GHT6Zsn08HFbCdWrX6PYGQLFh5sy0ehweHGCbTJJd18b3yORb5AJ24YnIOS5f1knvyy+/jL/8y7/S1yUEEmLzZllmEhipdC8fALz0/BU06zrpvbt1F3vEjPRcx8Cals1RJtXujbVldNvdJ17XCaR1EidxEidxEidxEr/y8cQKzw/eeQsg1lWlP0KTqjG5UMiKxjTGcemc7ha/dOk5PNjeBgAkYYg+CQ414jFEv2gKtA3rijMGTtkcZxycskhlu0acq9224TjTbPFwj0qVg6HZbZbLJUQkKHbmzBksLizOfAMYswxLh1kMjBVVBW5K/75vY2FB77h2Hx3CIVjKcTxMSOjt6OAQjtB/22rW8Ntf/6q+D0mENWrOas210CMn4yyO4VNmKqU0/mKuO2VpJUlsqlVRFOLNX/8SAODGJ9cwonLzLKGkMoJeAOBSQ6eQ0uyQM5EhpcpPOMrMDtkLHJMVcwZTdZGQyKiqtrCwiFObWmfF8QIIVWjiwLC9lJKAmPrqTC1GjlU5FKYsKaVmlB3823o2hQDkZquMAHonmzHPsMrSPIYiaXLP9yGpBL83zODSaTGpTAXuMAvQJRJHWUwwSPVYk34ZmyXdlFtnobETge0hKTyEwA3bS7DjCvbsmRrshZIoHH+SNNNW8CAdCqq0yGw0tSsBh6TnIMFh0e7XthyUqClegYMRNOr7Ac6saRfqN17/KqoNPWYVDwzsZfs+GLFokkEPQ9LLSLkDSTpPjsXRa+tSdZZL7OzNboFSCgCe63edOfMYkoBaGPcMu23QHWH/oS6ve9V5SKoaJmlg2IfcZWiRfkez1UBqvJ0YXJLdZ9wzu8rDgwHSOKfjy7h1QH5Ip0+h1tBNmVZ4gPqK3o23h2O4IXmoiRzztdmh1ywOIanSwmSOhzt6V9+oN7C6pvVZFBM4PNTzhMweokqqjY+6PSREjJhvVnBvX5/bZ9vbWDyloY7ufh+He/rf4yQ2mj/xJDLjf9QfGAFX33bBSLBxfqlk/N28RgXLuYbWe+0uQj4bi2mp0sQ8kRmqjo0wpIqNzNAg4dTLl17G5edfAQD0J2OUicjhuAkq5aE5xzjU1anDThuZKJiXU0hecEDSfDSRGSZUcbYjoESsPs4ZcvGL7GKAgurIIMxcP0sox4JFFa/1jQ28cOWqPh/LwYMjXWFYrK9igRrtAyTIyRplPBxNq+pqKkrretP2DsEsdIiUsry6Bqew0pACeUFiUcxoHOVCwDLEBYkeQdn/4v/9Nq69p4V9y5zDonlxlrBsIEv0GIwmbbgOCeBaU0h8d+cBdh5uAwC8km+ei2vZUysm18MCaQetra2h29VzRqfTgUOVuHE4QkzvhJDA5dOa+fz7v/d7eLD9GQAgi0IMx7oaeniwgwqJIA/HIyySfh+YZWyuflk8MeE5bLchRvpHKqnEAd3I2OFozOmJvtlaMIyb+VoT86/ogTwJQyTEpuj3+8jogjzPf0zgrUhy2DERN8G4odemSYKUSl+O4yCirvY0TUxJL0sTjCmRWF1ZRosgilkiS3O4XsHwksZYEzYzpTUoZRgGaZzAJlGzNJbo9sifJM+xt637FT7+wT189Yvaq+bi2TOYtHVZ/3vXb2KL/HtqcxX8zjd1J74Swky+aZYhpj6GNMmMMV04meA+0eTfe+89A0vNEkpJU9a1oODYU8+vgrHlei4K4qkQHhzql7JtYcQGGbjJT7jFDUtreXUVXmGiimPJDFMo2ERKKpPw6F6pYrJhJglQSkKRoKKQ+TNd41R4kEOSwhbLJwbGinkAC/q+DjOJia2fZy8Ewl2dRPdGE5RrxBiBBWHpiWYn9uFJ/bevzPk4bOvJ6NYRR9bSx7xUFahQD8FyvQJ/j+i1Shrz2fxYCsdAqsczRh5nyKgDyCnVwU3ymEPQ9+73eiiT31O9EoCq4kiTDC8StdzLcoQ0mWZhgrPEsHSdEl55XtNQT597Ccym/gnFp+wOzqGot2AynmDnjp6MSnM1SJpwx+MR9u/pPoYHhyPc35vdWFNkroF4RuEYmdDXlTAOJyiYZSWQLRFsMUKNIAQlMhz19TOq+gEs8lCLogyTMUGT0QBxrOeeS+vLRg7BDTxjlBn4LiKinI+P2rh8SsMJyWqAxXWdJDCPw6OxEYdjHLVnM9YEgNFwAEkqvQutOVToHeKMoTWnE4JyuYy7W5rZKXOFxopOZtxKFSkZjz7aaePHH36gr1FmUARB53luRPTCaIKI+oJGoxEmtClMkgQxLTb1ag2KmG5xmqHT0Qt2L8+wsap/d2m+BcefbbG0mcA8GZxZdgqv2Kw2myhR4nbxlZcxv6KNNWWngwp5bOVegkGdILj9I+P9NBgOzGZMMjkV+2QMFm3HJDumBi0Vcpq/LMkfU08/buQcEwtNAQaCmSUs10KNWMdrSy1wWtv2d/cRxvRuTTKs0EZXBPPgpFZeXxQmGWBgsOmcGZtSxVSWIk30OhFaAbgqCg3MQNmWlOj0dGIbJYlJYPuDPt75mYb53nnvfSyX9Pj1aiVId272a7QdnN3QrRjLrSWMad2N49iYJMdJati5UZogo2RMZvm0qCFtjMf6nqyuruJb3/qm/ndu4xOCzLI8Nf2jAPDKi9pw+PK58/jJj7Q/1+2tbQQ0Bg87PZNzxEkCIsxhEmWYxE92IDiBtE7iJE7iJE7iJE7iVz6emNa6jgt3UZcb40lidHJSmUA6JGTnOegc6V1cFEfGSbxcLiMtdEniGCMSEatWq2Zn9fMigUXjVa6UEcPKs8xkf45lG3fvxdacqfAcHOzjFO1GbA5EkyeXtY7HZBLCDwruvjzG9hJT12c2rSAsLMwD5Mja645MM9cwjfHSeQ3ttW/cwF/9H/8XAGBjxUFOvkfv3J7g+r6+h5efv4DPvfY5ABpWKTytFIPRrklEipR2D91eGx9/rNlw7Xb7MX2ip4UQORTdQ5szuIW7hVLwqVwKwaEKOE9kSEimn0HCIvjEti0UxRvP93BqQ+/Sao1GUbwBV8oMKl29mzqO/zIdiOIIqaY7MJHnpin2acH5FJphnCGlWlWYRHDp2W51U+Nh009dtMmXKklSRPsaVvCyHmRNHxPWz2Ic6CpmBgtf29RVw5fPu7jX1fDdOx8M8dMd/dyWT+VoNvW5b87XUeEaSpsIhbAQNpRTDyHGppDZLFENyrBtfW6B44MTnCiVQkq7e2nbIDkW+HYAFNo7roOcvN2yycQ8h9WFJVQc0mNZXMeZ81pKXqkAgmwUFHLTRK8ACDppP6igtajfuYmKsHOod5tbd+5gd5ugluu7uLc3uyifxRlyUWhECXDSx+oMYvBA76iXN8+jdHtbH48I0YQgUxcoF42MYAgnJIo5GUDS+fd6AkGid6ciSyEJWojSEPUyCcn1MzgkjNo92MUh7WbzagVVEkFzqhwOK6AIB8lkdpJEv983MNPrr7+BR9u6EfP+3XvYJnn9SqWClKDsOErw9o9+DAC4ePE5PLd+GgAgswxrJDa4vTOFvWzl4QzNQ++++y4OOvpZ2I6DJRKJC8PQfHaDAAnBWEe7h0hI/2e0f2S0ckqujWg0m+7X5sYqWk29ZtTqJWQEQzQrdcyt6flifm0FQU0fU81yBKQ/JFgCl6BXblkYETtpNJ6YKiZjHByFsB4M8xJsSj6RfNqczBk3opiMWwZR4FwhLyrOYM/EmKw3qvAc/bedwwf4/lDDttWgBFkgFiLHPInz2o5v2hQC1zWMWSGmzb2O4xjiipICUaF/96OfmHciE9LA74HnQGYkQijJUR7AUa+HjJ7n+oVLBjI9OtiD4MHM12i7ZQgiYVQqPipUKcqyFHGh3ZVm6PV1dXMyGZp/V7mETRCYYsCntG4ddXv4e3/4hwCA3d09XLumK5R5lmqrDwC27aC1oOfa5kILB6QL1em0caawz2AME1ovIRVcIg0kucAqMbl+6XU96X8qIWD7hZlcBkWfbeFOS1aA6ZIulUoGzkiSBH2iQR51jwxbwLZtzJGJXBAEv1AwMJdT8SEoZfpGkixB+0C/wFmaApRcrSwuoEwCW3kSwXkGck8cZyiW3ONUbyUV8oL5xbihLdq2hYjKZtxiRhzv4GAfKakuf+MP/h56O7qPIT66C4vUPYMzVbzO9Dmvby4bKCfPc3PfwiRGUng45YkxLZ1EIxwRPvy3sOinhFLC9HPkSqvtAlpEqkhQ5SRFRguAawsoSUwrbsNixWcYKYDl5SUsEzsPlm0MWx2ukyQA+u+K5AoMRVeOlNOyNNPZZHGix0w9JaSaljmfFFIx2CbhkkiIpXAwYXCX9QSxfdTF9x6RrILrQlDJe86SeOWSpoluBim6VKJtOzYeoKDOc7y6oq97lOb4aUd/7sODIFPOa0MbS1QxXiknOFXR9+DjwwkYJcielBC0iEslIZ5BelDkEg5NjlGYwKXr9QIHDg34PFZGmVspmMTm+edfQI0ovg97N+GQESOYwiNSvK3WFzEY6OSkKh1wYoMwKPP880yheLnsUhNLZ/TYub9/H9duaKGxt3/yAdoH+nsG7RjRM0AFg14Pvb5e5KqVMmoNPYlfPxigc6Tfuc0Ll7D6GUEF412kRLtltgNGUJHHFXIUPmgSVtGD5PgQNDaEYkiJETYZRcjpe2TOcfFzzwEAHu128PYNvZj5DsOFguUSCfg++b+VPLi12ReSer1umKl3797FoFB7tm0Da0dhaCQZbt28jZh6k/b3DzF4Ts8BrsURj/RYLVkBVij5aR9+jA+LBWbQMxD98soKXntVM6Nu3boFtziHBw9Q3TgNAFCsbSQ0ypzBLxUyCAr+jO1mVy9eQr1W9DhaaBNc3Gy1sERs1dp8yyTRjjX1rMvzHCklWe1eH0cDYuYlGUDPkEEaEFwpBSmmm1Icg7WNcIOabqqVEObee64Pm/42y7Kp+e0MoaQ0G0XPDzCgtW04DmGTibXMM3R6+vwtzuETHCOFMlCalAqK5gMFDkFw/jjOEVKTbJKlyMldQKQCrJBYFxkcVvSmSSNca/keCuDG9wID8aRJBGbNnphLKVHsbhUASUmUhAXL0e9lyXYR0NqfxhXEJG/AwZHmBKWOQ+w90En9H/3RH+EF8ud6++23kVDrhlYSp/tvWTggE1K/UsEbv6Zh9lOn1hGN9fdv77Wnx0thenAd28KFzXNPvK4TSOskTuIkTuIkTuIkfuXjiduvWqUCi7QwPDfG/Lze0YkECKj0KKMUkV2UHkemwRiMGeaUzJJpB7oQ6HanXPmiUmRZ1hTq4kCSksCZ7cAjfZAkTlAhYUOUfFRJtKtaq8ClXavv2nCfxZJAAmNqUmw0y2ZnoHcJfzukEsjo3LI8QyFIlA1C07T1wc59nDp9GgBw+tXXQf2WeE55yGkXN4lH2ksHMFUW4PGOe8d1EUa6u3/30X0cdacNoM/C8OF86ttkHRMgdBzHVGCkVObckiScNh4rBssuKjMCLWLAbWxuwqLGx0zpKgigxaJMaUHBfFbqcfn24+7mRhvjmO4OtxgwYwWkWqmaXR/nltG9uX1/H9llXbq/eOUy/vKObubr9I/g0U4sVjFO0f2/vNbAmbP6+BgBbnb1+bx9exdxqv/947sdfOenWl9DujVktLN651EH5wINdb12po7ffUWX7+1P9vHerX26aA5GlQclhXEYnyUUbMQEXVlcwaVBJW0YuNJj3PgPTaIYATFVllfXDWtlPOziHjUbx0cd9AbUJPruO+DUqPzC8y+b5nEIBb9oBrU5bJJuz3gDlq/vW1CJ8cnH2wCA9z/eBqP3leUKojJ7hUdZ2lIAANzANlXVWiPAiIQ811yGFfLa6e330SI9HMthkFQdSEYTw2ZxvQCKHOSDeQs+NXVbroWlM7qSU7m5g5SgLuXb6IX6by9dvYz7ewTjh0fIyPbZZhyS2GrKzuGXZtOoAXQ1oZgj8zzHaDBl7xQwdaNRh0+Nx1GUAKQRlCSZEbEUQqFe0s/C4y5G1IjOLMtUirwggEM+Q/3REB98oCEEzrk5ZjgYoHvzU31dkoPTRLGwuoq9A60xlkaTmZmvp89dQI1sKwZHXQiCGBbX19Fa1Sw02/aQFVVyqVseACCLU8QE5Q2GfQwmhSVEjKcZz0kJMKqW6Kqx/ncF9di8c7yyLAovOCWeSchVZQqDfa2lFLm2IeT45TLqDbL+8ILH0I4BrTEyz4w3mhQKGTWMK983EGueCOSFiK2AaTXgNR+yaN5OFPKELEGSDKzQylIOcjqfcLAHiz5DSEMEmiWYZT2eHFBlLEkigODuPM/MGuk6npHqsQB4otAns9DLdWX0Bz/4Hn74ox/S1zmmiV7J45U3B++9q+fp7tEA/9l//l8AAB7dv48//uP/nc4hNfAfg0JGFTC/VEKve/DE63ribJTGKUYDnZxIF2iRJftkHIHRQp+mY2TE2U2FMOVDx3HNIHVcBxXCrX3fN8JF7XYP7aM+fU9kTB9LQYBGTb/MpXoAj8rrXsUx+DeENN5MnuPCpYleMQv57EgBbNsxHljlsmc60IWQaBHdTScGhbChQrmiJ/TBoK2hNQA3r9/E517XRomnltax/Zku422pHTBGIncZh000bW5LnDmtJ9xGs2kSP18xw0S7eesTfHpTm6QNhwPT42RZ1jMlPIxPWVEczDBthBBIiMoZRREyKrUyKIi8YGlZhiruujbWSH26UqsjordSwTA8aYIh2EbC/JY8lgcBzKjccs5h29PJxiQ/z4CpN+s1YwArlYJPasO7/Ta+e0O/AFa5jiqjZJOzgtUNISx8uqNhhX46RosWF5f56BL1eK/dw19/oBe+3UGKPpXay26CwpSrPerhrWv6OuarVaw09Di9sFTHB59qlp6yAtgEJ1rMMoaks0Se5WBEuxK2Qkg9ObYwDHV4jmfWhdE4RtDUCcnu3hFS6jMRiYJkeoFOMhvNFhk3Wg5AkNC9O5+asZYmsRmzrYUFNBcKuvoIpZqeD5SIkNKkBtcBo4Vbqdiwq2aJhYUAeZ0uwC6DE9X93EUXpZp+FpP9LWwsUs9dVIXFCjgkxiQsjGcZ5smssdpswKLBmUoBENsuScZYPqMX4FKpjnFPv3Ne2cbDbQ3zLczXcWFDJ7osZXCMyrgLKD3n7e0NsTA7KRQKyvQkTno9Q9ltLszj8FAvog8P91GvkDlptY6cIC0oZUQC0zjEGUogZLmKD7c0Q3RpaQVdgr6TJEWTenvCyQQxsWbTNMPqqhYK3VxfxwOCHA729lGj46uN88ilxmh3HkwwTGZT6S1VGnApyQIbYpHgsmqrZSCbPBZIJySCyJiZxyfREG3aBHa7HfRIIDOWKX7R5udxWP9xmP8XzY+MMQOfRVFo2gUYn7KlZolxHCMb6TmAqRwWrT01KYwDQZzlKFPPVxRFJukSaY6MvJ8gJOBSEaEawKHNk+gPYLhGrm9aBFg4hZZUnhvPQAVmkiKl7On8qxgqBDnFmfbumjUUtBm4/iIYzzrfL5mNaZ7//+y9WaxkyXkm9kXEWXO/mXevurVXdfXezW52k5RIjtQSRUq0hfHIoxEEGRIsGBYEyBAwgGH4yTYMA4IBC34xBoYBv/BBMCBqSNmiKFKUhqTYzaWbvVV1dXXXXne/N/flbBF++P8TmbfJrso7Gskz7fO9dHbWuScj4sSJ+OP7/sWx6U4yYay0brIMOqHfKpVdcAYQeNW6jfYaj8co5WtttWz3PyFIugWA/+6//x/xL/75rwEAtrfu45t/82/4GmnTb7SaC/CdvOi1QCl4sKtHIWkVKFCgQIECBT7yeKBZ+/Y779iK5NVGHVFKJ4d6vTJN5S+FzffhQFjaLInHNhGRdKTNqTIcDeHzCbBUqdpkUf1hF3npJOU4WGOH2LIXgNObIIVBKvLqQQIOn9wc6cCRLLFBIZm/lBYyYywlubm1iz5b7o16w7ZZCGOruQoBK88tLjVtVNd4EuFPvvQlAMAnnv8kHnuUklGF9RBw2XLPHBvNZEyCkCvHRsMR7nK6+Vs3b+CdK5Sf4N79m6hw8sYgCO2p2/P841X3FWYq1UFC8onRUcpa1lpn1qlYKgd5BXnluDCaxqdSKqPZImo7E47NhQBjIO1xQCCbhl3ZhIqZtuofHCmQVy1TQk6rogth5wzlpZivf+2D/SkjJADJR4pDU8WfvkpRCo65CcO0dcl1rcOwdD0MOc/FG5sCKi9/gSEyPtWEBvjOFXZCFyHc3DHRTKD8/Pks4Vqf5su/+uvX4Gg6TR/GDgRTMKkeIovyMVCQDz6MHEEcJfA52m8ST/NNBIGLWoXYpMEktoPsKA9bnAOnGm4hZefq0HXw0i9RVea/+Po3EI+p7wuNBt64RsyGdIx1WNUmQa9Nc3OpuYhahcYzDBbw7McoynBr5y4uPU4Oqe/u76I7yVkaHOtI5QofiiOk3LJEGNLYTkYGymMGb7KPCb+jJRXByZOXJcqWFPDKLupVan+j5qHP+VxcITDukYS0N5zYOlOPPnEensuRoI7E/QOSUr761e+hxfLc0skQkiPafNeDAJ/kPd/Wx5sHK6urtp7QYDjALlebrjXqELlDuOfaaJ9MAw2WK5qNCppL9Fvv3djDzR2akyWvhDJHscWDFBWfGDBZE7Y8SqvRsBGug34PY3YwHY8GcJgZKVXKqHK+sUq5hC4zToF0oOZ06pXGwYDZx+rKKhrLxGDFSQrDtMX4YGjdHaTUdt0RBjC5c6xO0Bly0kKkVi2wTrsfgJhxQBDiw5N6TkvjaOQEq+c5Nm/TPAjrVQQu54gaDe263O8PIRTNC+m6SFkuVkrZeapC36oCEikE13zTo8QmmRXjkc3RJXVio9IglF1nXeVY5icxCcBrtJNJG7HlVNYwZtVcawHnGEESENN8apnObOSXkLB1u5SZBjSEgWuZZg1gwA7+Is6g2Cbwq1UsGmKFoyi20ps006i6yWSC/TaN28svfx+vc64pnaU2+aTnedZtpVar2Kg3JWETJH4YHmjwJFKj2SSKs1ap2CzB1WoNHk88BYGEF9lBHFnjIc0yOwWdWFgabFbS0nCsfwgAm3FzdXUNFaYDRartSwAxjdhypbJh40qpqU/IMaQQAIiz1L5wvcEIC1zIbqm5YDO3GpNC2w1dAkzxl8sBNjaI8tYmw+EBjc/ffudb+LtXKJS0tdhEif0GjAHGeX2m4cDq9JVKBZ0OLcqDUQ+lKj2WxZU6Ak7K1emMbRbo2SSNc8GYacJAKW12T8dxLa3rOC5cd/oscqMoyzL7wlVrVQScYDDK9IzRNbPcmKlmTo8n/5dZIX36v2L2n8T0c0Z62FzdGw37R+lswf5ikFYmVTqDw0SxEX0Y5LS7A8XP1geQ8RgkjkEi8kgJjSCsctMFRF6LzGSIerR5Gakg2UDa7Ce2gJ9rIijkFriGjjniTchj1dISWthis3GUIGCZF8bBiKUcnUQos//EZJIg4Sikl3/4Yxzs0fz6+MeehV+lRefK9Tt4932qhVOp1q0PmuNLeCX2LZDaFjVcqDSgY5qDn3rxM3juk5T5O8kieOxLE+mJraXmeBLH0ZezVEJw2O14HCHmw9D+9r4tlHnp0UswHdqIS2EIyREjrvJsCgcozx6eDFz0evT9zuYBkgFtxlICKWcsK7dO4PIlkofG/R7eu0UyaH+QYH2RDYzNCc6ep7VhvDvGgkNz4MzGMqDmP2H1DzvY396x7a9ySG1zaRHxAYc3V6p2gxmNYru4O1LYSM1UJ8j4Hb1x/46tAXj61Dk47A8hhcFgSOO/s7uLHq/fKyvLGHCm9v5waKNx1k6sc5QP0D5sI2DD/onHHofw5pN8xr0xXE4GWWo2UWafL9PpI4nyZJwxUjbYhTRw+ACpswyaD1HDaIT+mDY+PROZdSQz+wyMmFlpPmTdMJhu4koK5G47Qgjr0zQP1CQGu9PBwLHGjOuHtnCuUNPo0ySORxssawAAIABJREFUkbKU6jguBGc6104GcGi5iVKA57IsV6c1BY0A2GdUS9j6aek0wwUMPGuwbayuos4h/6NB1/rolQFbs3AezEYOK6WQZrnfkbZ7hoSwfna+78JjWTBOUjgcNhtAT9PNaG2NJc8N7fouzfSevhchTjg1RTSxKWa01pAsXY3iGIZJkzjVqJbp+zAIrK/Rh6GQtAoUKFCgQIECH3k80GwPqoG9QmQpTjTIiW21soCAnTUH4xEOmb4XjoTik7MGrANXqrWtbpplGQxTehqxtSIdx7WnFCkURpwkTmlYp0M40sbcx2lmJS2TaUtrmWwmr8sciOMYHhdQkkrZHEGe7069/qU44oibwxhjEyxpk2F1jU7OJ06exPYWJUza291EspPY63NvdNdV6HEejXbXRatJp8dza6ds7iNjMgpd4XbmzIwQU8fgeZCmBop1R6ETZDm5ISg6CwBFhvGxxfM9O4RJHFunwubCgmUl0jS1lrsxZhrVJQVU/sdiWmRXzNRKE4B1Mo4mGlFexFcKe8ITWszNgGQzCQqNIRqYfjO1TFWifeQxBY4CJDu7ClBuIvrbyMpuJP7xM3dDZHluC5FC5an7IwHNCcIEAC3zunAKDl/vpRkyvmkqQRoF6Nlm809TmMzYHCVSTBOleZ5rZSwzM/Vdz7XU9s6ki5jflbs72/j+j8kRfq/XheZTWSqmjo+TVGOUJ/QTGmWHWIi9wxT7OyST/dP/9CKckE6SRrm4doOS5sXxGPkEy4SALbo3B3zHQciVob1SSOwDAM8b2Yrkrh9gpUWsajqJMWanyf6oDydPMOc6CMssm9cbWBjTmHf3Y4iArq/WKqhw7q6yozDh02at7KLGLEezDpQ4mWQzcpCNiSXzqxWsr5LkXioLZJg/2q5/2EGFq3Qvt5Zs9FMiNNJtXieyzDowV+sLUOz4vbm/B8W1qXb3d7GxwfKMAA5zma+9b+dAplPEHLEoHQ8r7Cawt7+PHkt7zz/3PHa49tbhYRt5OtMsnkaTLa+t4jqXungY9vf2sVYhR3hPuxh36f3wXN+yE8JR8AQ9z1Gnj1qVWLS2OUSf2cT7/R2MEt5XIKc5vDBlq6ksTS51/fT2CGBawkVOaSAp1Yxjfmyl9HnQ3d0DmKlwg3BajkgqJHbPS6zco9PMyv+JUphNxgpmhZUj7H2McmFYZk+UAyf3+o3G0Ly/iplgEpjUJl6dxBnGnNsplCladY7O7I/gHCMSTSllA5CEgHU7SJLM8vnKkbZMSpppBD6rOL5j2e4syyzjNprEiPLK9ULba5CllilSoYPFFisKldAm5B0MBhjH+W9lNvoQQloned/3rYvBh+GBBk+jVrHJztYqdXzyHJV5P11ftD4Tt/sHePkmhbmK2LE6pDJAPrzV8tQLezZpXgaNDodl6kxjzJTn3v4BEk5KVA5CBPyimBQwrHMLbexG5QhlCU/liCPhzQ9DlqV2ckkprbTkLTZt+6neFBtUM3ojMFVjpASMzulyByc3SLteP9GydF02Uy8EwlgfIaWmGUAzDUsxAwYTLqAYxzFqtSrfX9hEafNgMonthE1h4HA7kzSdMUKETSrouo41hAQMXBZnXc+zNbnieFr/RGttDR7PcaAwI71ZDnHGj8gAoT9NVplbRRoGgtsgMjE//ZgkU0nTGMicKkUKM7MSapFP9xk5ThBhDgCplNZnTWqqw0PIMOGkfNokdpFKMsC146StMeMgsW0Q6YxvlBRWd59NvjgPmo0WRDgNqS3zO+EJTJ/PTCJMIQTGY46uWg5QYRlLiAyvvvk6AKCx2MIap0/wpITgxToxAmlelHE8xpMXLgIAOvsjbDdpHJ5+8mm4vLjc3ty3CQAvX7iEiA2MKEkhj2HV3b+3iQqnmqjXy4h5bBdqPqoc9RYNOhh3OK2FGVt/qjAMrSxhfIlcr8iSCDqltWT1xIqVzMplBcULpaMqEIb+dtId48Ip+q0LpxdQrvB8cEuoNKi/y80FOOxrNBoN0OnMX0vr1OlTuHePwr03Nzet4R8bbRf3tdU1ewA66Lax3+es3f0hwjxrd5xgZ5cksLMXH0F9mQynvZ0dNOvkhuD7Ae7zb7lBGRH38fbmFkZDMiwemUzQ5+itze1NNPhvu+02ag2So27cvoWrV6/O1b9+r48Kj0e5WsWQD66Li4soc0JCFXjojCa2T7mklaUaQ/Yt6o8G9qBAr89PkcbF0f/9aTAzhy6jDbI8ajTLrB/hMc6OAAA/9JHlkrKj7Ck4Hg+hOWFuajIYvr8UEo6fZ5B2kHGW9yRJILguo5ESGT9/L1YQ7JM6Cct233CMBjjZYJqlgM7TVEikbETfG/btOlR1BVLeR5MoRbM2TX/yMAgDe+A0eppTxHGcGUNIWlkwnfHzcRzXJiSc3e/9ILGHmEmcTrNhQ9mitVmaIWDfVs/z7HpQrdZsQt40Te1jdx0HPu8lnhdYefHDUEhaBQoUKFCgQIGPPMSxnF8LFChQoECBAgX+A0TB8BQoUKBAgQIFPvIoDJ4CBQoUKFCgwEcehcFToECBAgUKFPjIozB4ChQoUKBAgQIfeRQGT4ECBQoUKFDgI4/C4ClQoECBAgUKfORRGDwFChQoUKBAgY88CoOnQIECBQoUKPCRR2HwFChQoECBAgU+8igMngIFChQoUKDARx6FwVOgQIECBQoU+MijMHgKFChQoECBAh95FAZPgQIFChQoUOAjj8LgKVCgQIECBQp85FEYPAUKFChQoECBjzwKg6dAgQIFChQo8JGH86B/TJLE/PEf/zEA4Gtf+xpKpRIAQCmFP/zDPwQA/OzP/qy9XsoPt5+MMQAAIcTfr8XHgJjjx/6H/+MvjOJ2SykBMf1s/9xICPu9AEDfa3P09hqG/3ukDfnldCseB/ofwd8JGK35ngZC8H20sddrraFnPmdZBgD4n/7Lzz20j//N//ljE2d0/wxq2jakED+lbdlML1yhUfFpmpQ8hcChf/VcBcHXG61tn6NUQyn6DSklkiQFAPQjg1Gc8u9o+1tSKmhJ9x9HEbL8nkLCGLrrv/ovPvPAPtYrZfMbv/bPAQD/7J/+MwhBv//jN17Dl7/ypwCAN996CwmPWVgOIRU9z9WVk6hWFgAASaLR7/eovYMOPG86VqPRkL7vdZHFCbVdABcuPAIA+LVf/22s+XT91/63/wWj+1sAgEACKQ/yWEj0+DlEEPZ5vm30Q5/h57+watYWmwCAtcVVVMsBtcHRSJIYABDHCYT26HNicGFjja4xY+zKDgCg0SrhzFILAOCaGFFM/VIayPj8kwmJQbsPAOjsdOHwfFxdb6Beq9E4jDX2evQ8oTTOXToFAFhsreGt19+gMRu3bdt+9/e//dA+/tF//esmTugZxWmGKKWxMgCU4M9a2/cGUMgyaluaaCQxfR/DYIIIACACF0LQWE1GKcBzIMsS6PxvUw3Nj0BrgyzL56lBmvLboAEYxX9rkGr6Xihh171vf/vhffy51bI59fhZGqtTKzh5foPuY4C7798DAAzaA7zz5rsAgIVmE6cu0tiWFwK0+LfG7TYGPA9L5SVkkj4bOUA0pmfnyhIOumO6ptaASaj9B1t7UDz3Tp1ew/nHqD2xzpDy/IzjDNeu3qTfGseoVCoAgP/1//rrB/bxP/6X/61xeVp09zsYdKktjvJQqlUBAEtLVbzwIvXpYO8eXv/RFQDAvbu7qDfoXRQCuHP7DgB6JkGNnmFjaQXxhPokpUKlRO1Kk8wuvCc2NrC8cYJ+q9XE1R++DgB45+2rGKWHAIBq00Or1QAAhH6IJKb58pX//c8f+gzvdLWJJgm3U9l1Kv9vDol8rTfIeGs0cYT23j4AoHlyHYdbewCAvRu3ceapRwEAbrWEK2+8CQBYbC1iaWkRAJBpCeUG9p4WZrp2G2Om+40BRDZtQ76fPbZRfmgf/+X//GMD7o8QAiLf22f2SCFm9jNhoGXKHxWkpjXdEQYOt9V3Uxg5AAAMBhqOS/aE645R0bQOOTLFJOM1BmVEDv2tMiGEyddjc3QfZWg93Vf+6A+e/Kl9LBieAgUKFChQoMBHHg9keHZ2dvD662QdO44Dx6HLJ5MJxuPcypZIEj5dmKkVKYQ4wub8YzI7x8FoPIDkpjmOC8ehE7JSyjIVSrmWCREiZ3kACTG1s42xRreZsUANAGHtyg+Mgb3n1CqXmhgf2L/G9DOfKof9vm3bPKiXHHSH9LwSCBiRHzfkzG8I5Ea8MMYySMZkyBK6JjYpwCcGJQVcvl4Jkxv98JRAftQSQqPsMTtUkuAmwGgDP/Dp+3IZCbdge2cPwxGfzJVCZubrY280wsuv/ggA8E9+/nP49Cc/DQDItMb3XvkOAODKFYE4pj6NBkPLJCm5h/GIWIiFhSUE3K5ON8P+fpvGLEmAmVPc7FzI2Tjflege0Glt2O/bJ60N7Lg6EpAZ/4Mx+Mkzyofj8Ucv4/zGaQDAuNdDnEz4/gnihE7RygkwGdJo7h8e4NQKnQbPnmwhjUZ8jcagTydM1yTQmvqOTMLxy3T/OIHLp6/FBQ/C0G9VywEqZXomkzRCENDfGiGxt0193966g+7ggNqmE/hefiJ9OKQwUA6NnCMUct4r0xohrz3KGCTMAgkhYfhdTEyCxDAzIwKgRszJqUefhuA+Xn/j+8hGXfqtRCKT+enUvlrIMoP8yRhtcIS05jmQaQ2leA1wnAcy2x+E1gZjZgtbrQZWl5e4CQLZmNq/lW2juUgsnOMqdHo0njECrJ+mfkUTBxVm+ZTjoXNwyG0bIJnQO6RgEDMTEVZSLJ9YAQCMB0O0t+meu7v7aKzU6W+FRhjScw/9EDqjv11eruG5jz8+V/8uvvAo3vsBMTap1ihX6bReKpVQb1T4fiE8j+799OOPIB3TeLuqbO+TpSmWl6m9saMQNkLq91CjXiOmM41jtNvEGHheGa1FGssoNrj1LrFDh80BkhqxRi/9+r9AltIiNB51oBP6rKTBUV7+wRBKAirfOiXs4v1Bxt/uB4BhhhJC2H1UKg9MqCHNtL0eQmHtxEkaE6Ew6ND77VdqcJgNp3UoVwgMjJ4yLcJuLAbiGP2ahaOU3YfkDMNjpJpuY2I6bkYAAqwAIUXo0XpT9hLIfH2K91Ap0RzvRRGMpnu62QAY0PrRHYyggycBAF7jeSSg566kmdltZ8d5+nmW4fnQfj3oH7/+9a9jc3OTflApa9hoPZUtxMwD1FpD6ykNZpskxLEWhX9MlCslS0UKCGiegePxxNLZjuPC44XbcZypZKMcSDmVb5SYTpAjFCMbPMbAjg9h+nCsjAUDk9kZNZUCYfjFBPZ3t9FstebuY7NkEPGmLoxGyo9dCwnDE2Z2CkkBGG6P1AYw+S6tMEm5zVGGSkD3CZSybYPU9oVTjoLi8QmlQtWf9sv1XACA7ysotpzq7gKGvOhHiYYxc84ZAbz73nUAwCs/eBkbq+sAgB+8/DKuXyNpII5i28cs08jfi+FwiKeffg4A8Mtf+I8wmdCL+o1v/CWuv3cNABn+WZbPkekzU0qiOyAJ7J13r0DsbQMABoMBqvxj2tDGAwCuNFB2LSJTeF58/Lln4As2xhTQ61N7BpMhShV6Dkmk0elQe8KSj8YCGe8LdReHPaahVYbJkPrYm4wh2SBFphCC7m+0QJnf6VKjDMeljSgsG0hBc6EaulB0e8SJgz7fP8EYlYA+TyYG6SSeu49STWUAaQw8lgiF9OHxa5NFMWI+bKXJBELm6xCgXFqfTmw8gsaFX6R2rl+G75KR02nfwta7OwAAx1FWUhTCgG8DYwCHZV8tp9Lx7AFOSSDjzSBfL+bF4089jrBJi3jZDfHGd38MgOancuh3XUfhwgWSmYbDPjJJY3i4c4C7Hm0qk9EAzSZLMp5EHFE7O50RBK8xcTTEuTNkIDUW6xhNaByiaIBOm4zeJOvjUecMAODMuQ1EERlLWWzQalE7T59ZwhNPnZirfwEmqLNRPPIlJM/ZoOwjiWlu3ruzi7ubNAcXwip6A2qvrDQBXhcGvS4iRRtlnMYY7VDbfeFC8Hq9WKki7vFcGA5RXiKDJwg8vPU2rQfe/R00T10AANSf2cBkSP3evHMf3TbNhcZCCQtsjM0FYyBMPi9gDeFZ48IYA8PrbDpzNJZCwM2Ndzld03Waot2mA1arWkFzcZnuM4kx7JAcLTINmFw2MtbAEsZY9wL+9ekn+W9n8CjHwaykle/fWihoe6BNIVVu1Rm4LGMpTOCCxnnv/hX8+OVvAACaqocv/NLzAIBaBmg+uLx/9VW0d0nO7U4MWqfp/iebLyCR9FyEHB9Ze3MIagg3wXxgf/1J/PtphRQoUKBAgQIFCvw7xAMZnh/96Ef2VKO1xmhEVvmHsTWzMouZkUVmqaYjzsD/HsARxNQAAISEYLahFM5Q8UJaB8dMZ8jYmTJJ0qmVLYRlNI2cWsRSSssCQcipk/AHnMvyf5ASliGRAjA5lagVBNOZi806XHd+W3WtUbIn51i4GCZ0//3exDIXR9gGQZIVAOgkRspWc8mvQAs6gcXaIM5yKlrCsfKfRn7CUErCZcdfX0pI5M5u0v6cI1OEuVO08pBW6VQ5nmR2zB8GIQTGY5JdvvFXXwOGRHPHUQzPofYqKZGxA7WUApop4LW1NfxXf/AHAICXXvoFy2ju7Gwiiun0OBqN0OnQ6esIZSolekM6hX71//kKWimdxFcUoNlL0QhAynzuA66Vw8Qx+B3gwoULCFg3vKNG2D0kp+gkSxCUaPziSYISyxxZluUHNIRhiHiTxqfScJDycwiDOpTP83zG8bEaBqjwXPOkQLla4kZPkKS5w7ZBo+zy92UsNYhxbPdTxAmNla8MxqP5T5ihL+Hxu6WlC8PM0tZBD9fu0Cl32J0g5TYgy1Au0XxZai0gcIhNSEYx9m6Q0+fu5h2cOU9t80QKmYy4uxXEzGgJTOAxcxUrCSH4pJplyH38NWAdmyGEfUc1YOf1PDh17jQmPK9uXb2BK6++Q/fJMtSW6TR79pFzWFpcpX4t1sE++Hj77WsY9anvw8EEMiEZa2GjikaF2J793R6aC3wqrqY4fZKkkcxJsHmHnJAPD7ZhDDs8V8poLdL1zz3/OPb2dvk+h3g2vAwAWF6twg/nexd/6YWn0D1H0uuVK7fx5hvEtOzt3Ibj0vsxnkwwmtB83NQCpSoxM+VGE35Iz1MoCaPomVTKAXyPnlWrUkP/OklmJ3yDC2vU7612F6MDeie0swbNzzMzGmCSMUkMhiP63f5ggIMDmlOdzgH2Q3eu/gGA0NoyKgLasj1HRGozlXvygBcAcCAwOqD3YzyO0Gb2ptvroNwladExG4gjavTWnbtYrNH3RmvLbtFP5W4Txs5AY2bcKQRYdqJrjrPeuI5jlY9ZSUsLx94TAkh5HimpERqaO0h28cr3vgoAeOu1l3GwQ8z3z33yMro9ev++9Vd/g6cffwIAUA3LuLFL7N/IZAgGtAY7XgeOSzSyhAeRb7AClqGfZV5nFaYPwwMNnu3t7SNGTBxP6elZoyU3bGaNmQ+TurIss8bABw2fWaPoHwuuVDMRZJiReGZ9kISN6nGUmvle2o3TzPhkZEZD58ZemiLNDSEz610urCEkhISccQyZvkwzNpESyEQuIWkrgc2DpUYFtYrPbQMmHEVx25PY3qeJlmllI8UiAziKPntyCM1RH17JQHm0IEkhoHg3EHCstuwrd+qoIlK4HNXlSgFHzvjk5AqYAhw2rhxPQnOPA0ciitL5OmiM9am4ceN93DtF9Pv6+gn7cnqui4ijxBw1ldE+9uzH8OKLL9Bvhg5aLfIPeOrpZ3DrNm0QnncDgU/jp7PkCH2csp9DPJoALIFWBJCrdwqYylgC8Pl/RKahjzHPheNBaVqskQ1w0O1y1w2adYp+qYQuljny5N6dLYxG1F8tPbgZGS0iTdFcoA3GU2UMB+yLp1K7cDfCAMjyscqI3gYQRQkmHCEDAAH7/EgnQliltpUqLRzsswQTd1Aqz+9rFpR8KLAfhyrj3VtEi7/6+m0c9nIJQdn54jkOFMhgG6QO0j797nC4hVvbVwEAndEEG6dJHvD8FGGFItcirwVX8FweHUD3dvKRttK0MCYPzLJGPwAIKY8YPMc5wI2jPjbv04J+48pNZGwQekGI9h5tBhtnDDKeSwkUYnYwOnv6LHa27wMA9u7tYYefkQpK8Nj3prFYBthf5Py5c8ijM2/f3oSUNIeV8hFn9LweeewSLlyiMWm1AhhBxo/jCvBehqAkMOQDxcNw9/YtXGEjZxy7kLxhJalBnOZj6GHCvlQL1bo1GJNxDOWQpBYoiSU23BqtGs6cOgMAcI2Dd+/dBQAsZTEeYT+fG47CD7bJkOgnQzTYeAy9EKsnKMppebEJnZDvkucIuPwuGi0QjXPZ/uEQEMhy2R5Tn6/MzB5ipr6M0BFMLl0lMQa71IZKQ+L2e7fpGiMQGBork2TkJwSgXK0g4fs4jrIOgbTvTPeSvA165lsAU7cAndl1aB5ITyF3opNiGqUsDJBm9IxMOsSoTb5Snt5ECDJ44iTD7jb1q9eP4Cgy2JbWL6CX0jy9vj1B4tH1H3vyIlJB9xmPtzAZ0xxfrG6iRlMWh8MVGNPIewVl2NdTGGiRS9Bieij5sH7NPwQFChQoUKBAgQL/YeKBDE+73Z466ik1dVzSGoMByQb9ft9eXy6Xj1wzy/bMsjazuWVy/H/l2Kwo1IbaoBSEyr3gP+BUan6K5SiEZWaMMRC5DIQpW2KMsfl5MOPMnGWZpeWMzmyOGG2mTr/ECDHFrw00e4nG0YScieeE4xj4vsv3TJHw37pegFo5jzxRSJhm3jloQyfE/LjZLuIxUeeqP4ZfJWtdOS5yfziRKaQpnZZLtRaUzdkwG58242U/k5tICIp6oc8zUqArOIrs4eDRon4YjVvbRG0fDLoYTagffuBD83RvLS3hhU+8CAD4wi9/ESWWRQAgZCnzEy9+Cq++Sg6lr7z8MkJ2poQWlkCO4thmNTJSYcht2INBjb93tYH15xYCJT65KWhEx2Dp4mQIM6Honm53CGmoLyfWVhH6dBSv1V2c3CCH7ZUlD80FdjZuCJw4QSxHnI1RLdMpy1MKlYAdTPsDCI6acGAsS1AOXYwG7DQphJWNNLSd75lOMBlT20zmouTRPO0KjTSbjxkAAC/0IAzd//79Pq5cpZNetycByadfaYBcPvUcHHCel4PDNkJ26GwtNOHnVLgZYfceUeqhL/HJz30RAHDy2c9gp01zY//Gj3HvCvVRZhncXIJIAMFspdF6ZjkQ06Ae89NzgnwY7t27jcN9YjcqYQURSy+77R6F8QG4e3sH3R6NZyw8lPmdWyoJ6AGvt1qj2uL8LJ4LzXmHSiHgsES8dKKOG+/SGF577y7W1pnJWV6HdGnOn710Fk2O0oqTiQ1WiKII4+6Af8pHlnuoPwRv//CH+N536L2R/iKCGklz9aVzaC4Qe7q3eQt7W/SO7o8P4LGzuXJ9lOv05rhuhjFH+036h1iu0Vxulat47BFy6H76safxxOMUPXZ2dwulNyj/05X+EBlL02sLJZw9Q3O/5CvIjIM3shE8lszK1QCuewz6A1MWRRv9wZQ4Fvm6358M0eF3qK4ceAvUR7/i4841CoyIoggJR15+6pGTmEQsOdZDRH2aC6PxCC5Lfhoz+8TM735wLtrUQOYDkttDIH0JMMHuSBcR7w1p2keaUF+CNILZoujYevAmHjtFrNrVzRCK14DmiWVM9ikCa2HBIGVmxluoIy3TOOxHCiNJ6+s4SxENmTXqvY6zZ+n7WwjQHtP9E3hQ/AJKA2RMXWVG4mE+2g80eE6dOoX3338fAFCr1TDhTmut8eqrr/IApNboWVtbw4svvsidWzhi0OQbmTHmyOf8mjiOrYEUBPOHsv59IcV04ghoGKb1JTBjsClYMmx2QgnMGCczk25mPdRmRjud2eAkhA1DFErCOPnmMfV3MoBNrCbSGU3YZMiSaO4+ZlkMx3XzJkMJmsnlIMX6Ur6Ra0QDpgl7exgM2UdksA3DklaW7MIMWRoJQvQ5WsZ1XRhF32erZ9FaIppZuiUI9tyHnPrYyw9IAGnKkQczMigluzrGIpQbjwK4ev09AICnJJoLRIPW6k1cfuwMAODTn/0sfuWLvwwAuHjpIjyfN1OjoXjTOXP6FC5coOiORx55FLfeI18Lk8SADQ0VcJ08yiJB/kQGGohyilkqTPNlTZ+tkAKTY2yUSiXo9cnwHE0yXL50HgDQapUwHpIcc3alilKJEySOR1AcLdUeDNFsrXA7FxDHLFEqA4+1NxGnNvma62RWIozjMcZDeu/9wLfvZqJTuD5LQtIgX0qiKEXG9/GVA53NP0+V50Fomo+TJELEPlHCkdN0mSaD4fkySUZYbFHI8eryMt7niLytdheCDdQ4iyDytmUG77AR2089IKQFtLe/DcXJETRSGDYmpcis4SfVdLvQWlufBomf3GQehCSObLTryY0zuLdFm3p3cx+uS728c+c+qgNq26nzj6DByfVuXHkDGJKRVioFKC/RhhGNJ7h3mwybWjXAhUfP0PfJGH6VntfG2dMY8iF1dW0NJ87QfCjXAwj2c9tv97F1n2SGqBfbhHE6jhDWcjnhIf0bRABLV9KTCAMypmpLG2guclJBjOALauPmrW1sNGjtWGvWEZbI4B0kY+ywvKkqAZ5/lub7xY11vPl/fxcAYKIEig3b1lIT505yiH9cxUKd7nP5yccwikjyDX0XnkfP7fz5k8BpDmOPYkyiqVT7MBzxk8GHhUtTpCEAyDhGNqB3yJQrGGmav53DLWycpOdgUo3DAUtynQMMevScu3GGgCWb1A1QqU+fw0/6DH2wnUf+71jzVCmFhBNbJmmGjEP4HXcIBTJ4FssS3ZjkxdbiEBvrNJ5XbvdQdum9b2yECFaojydP8II4AAAgAElEQVRaDiQ/31NrC/BDlqZlDCmn0ZB5WoW9u/ex3qAEladCjUqJ2rOtQwwN70Nowc2NH50VklaBAgUKFChQoMADGZ7f+I3fwB/90R8BAHq93hHnvFdeeQUASVrlMlni3//+9/Haa68BAH77t38bq6tEZ85axB/Mz5Of6Eejkb3mH5PhgcmmTA6mERcUXTWTMHCGQZj545lP088asIn4pBHW0tYzDm4Q5kh0hz0jSIFZ97ncsVkLYfODxMLgGH6SSNMETpZHgU2TVIlMwsmlt2gE3SXq3xy8C8Of40EbOqbTSZbBOuuN46k0FoQVpJKdRwd9CE0p0iv1VZRqnC9oxmPu6HyY5raZZfyEmEZSHRez0tl4QqN58dJFvPQLXwAAfOFXvoALl4gWdz0FISwfh/yU5ngSqyskAVy6+ChGnCNj0O8gYYfSMDQwnNROycw6kifGYMTPdjATUkA5jei3UikQHaN/g34b4wkxMyvrq/BL9M4ZDGDYcVcKDYdPj4EH9EbskJ4mWCmTnLBYW8AgI+fYdNKF9KgvQWAsw+C4HryATlAHeyMkGTE5oVuC4Fwxk0GKdEB/u9gsIePIKUemcJgL96SLTM4nhQBAWArhOfRby+sxqjcoN0d73AcyZv60Rv6GlAIPn/kE5fW4fPkyvsrP/eb9TYyYAU0krMTqKhfdfTqRNneqCDmyLO3cQSBYehOYJv4UBoL1SMdVMMiTcU4TEgrkDPB8aC40YDiCrz8e4/4+MTypnMrdjeYiVrksSKPRQnufmL3Ne7soMQPtuhJVZrEODzq49R4xM81mA9InZ+97+20srZDE+cRTT2J/m5jAcRLDK9Fz2dnbwakOST7aKPT7NG6d7S4aZXoWFy6cg3Dny/v17FOP46nH6P2fZB72SL3DRIdYaHIizIV1VC/R99dMH48vElN1biFAyOyzqi4hW3oaAND2BE5fpmizwX4fd64Rg9sOe1hep/65oYLH7X3pk49DcNBFUKnhu6/Q2AQu8PTj9MOHWxJbd2kuZFmKcmVprv5Z/HRSZ/rPxgDMRPrGoM553Eb9EfY4kaATKqycPwcA8CBRHTGT3hmhfZfW32G3D82M4OknnrTuFzrL8GHO8rM54HL5XRxT0vIcBwPOSdY9PESVx/Zg7zb2NmmPf+bsOqQh5scIg2FE71DgZXjhcWZ1Vis4z8k1lWNw74AmxC/+zDPIEnpGh3t7CDxqW88IZDG1+Z0rN1EPyIZYX+sjrBB7vbywjN2EnnucOHDy5Ifmg3nufhIPNHieeuopPPccJWXb3d3FrVu3AJD/SR6x1ev14HMEy9ramvXt+dKXvoTf+Z3fAQA0m80jD+GnRXhFUWTrtfxjwmQZdJ452ZgpDWimPiRSSMCGVE9DUj84260xJKZGjgGg8yR+gNW6FMSR66fPyRwxqvIyS0JO3zF1xBh7OLQWiKNcNjK2Xk5qJPKkgpNuG+0t0k4H+/exv08a+DiJ4ORe8FGC+1v0/WAUIeQMpka6GHBiQyOvYdinF+WRJ19AWK5yR3z7rI+Om/nARjIz5scw6o4Y0vw8Xc+H79Oc+sSnPo1f/NznAQAnTq7Dsz5NGmYmYVh+m9lowmgUIWZNPU0SNOpE07uRi/3DPf5LbZubGmCQt0FIaI6mcY1BXp4rdhxEeYrpOTAcDFDiMPBaZRFQ1K9O10OlRr4c9269h8UK3dRrhBhxvzyvir1tei9940LKXBo1NnP2ZGIg+J5bOxP0hmTgSeGi0SAafRSnAC9M9cUVvHedNowkGqFR4yRr8RjDPv3tZBxBH4NE9jwXLkdlnNho4dmnaXOKJtextcOSgAZKrMKeObWGnT2SchpLNfzyL34SAPC3f/s9XLnFG8bIILaprhWWLz8LAPjYL/w8evcpdD3aGyLNE7opz6Zb0JmZJhNVwoaoi0TYOnrZTITgPCiVQvQ9Miq290fQfDJaaLUQBLSpnDx3DmWuO5UkmU2umCoHbU7M6Y4SLLCPhVAhqk3aYNxSBUbWuc0ehkO6KB3cx4R9QcJGDWWWyUb9Lq5fo+cYhiVU2a/i6tYt3OhRpM3CYgPv3SS58D974T9/YP9+9YtfsBnY0xSIYnZZSFIknLQ06jTw7vdIMr87GmLzBm2C+8kEJxeo3+c31lHjOmxBGGB3h57z9159D++/cwMA8ORzy3DZ585vVBGwP1q5sYB6lX1CohgQuVxiUGNDL/IAx9D9fc/B6lL9gf06PoTN/H0w6WGfJaqtvUO72oy2DtDj7z1IlFn73tvtwGGZfRQnSPmQ1Iwj6xsKfLiUOvWRNdB5gkSTQR1Dz/EcD+USjW0aeRAcspf0YyQdWkvuvnMV4NqDlYvLKFVpP/j48xcgAzqQVfwR6q5j+y75sLUQVFBt0bNecGPsbHJahZ37eW5FJJMxEpZHv//mPWiX1trzTydYY1eFgR5hxIuGgSwkrQIFChQoUKBAgQcyPN/97netLPV7v/d7+NM/pcrTf/7nf25TkO/v79tcPYPBAM888wwAYGtrC1/5ylcAAL/1W79l7ymlnDnpT63RNE3huvMnf/p3hUmSHMn/IzmNu5DCntwcCFsiwQjHxv27RmE284Lm02Asp2m5pUlstexYapSY5pRGIRV5vhoFg7zvLlRu4hpt5RAtBFKrkwHH0bTSxCDiRFZSzeRsUAKSc7v0etvoHNJJr9fZx/X3b9Ef+yEWW0RJDjojHHS4Fk2S4R4nv2sPIkxGXJfGGGh2+jx5+gIcdYa6YjJbquNoxJ6GzmsgGQOV5ztyXHjufHKImIl+k0pZGTBNNS5cpGrmL730C3jyKfpsZtgy+wUAA22jGpRysMDMxu7uNrodkhVqFd86PqZwjtRdyp+IFsAwj94TwuYfqSqJ0+xkezAYIYrnp3jOnb6MvX3Kb5LoQ5RYclpfu4BqhSSJd7ohrt8iuvnSQgPNvChyZrA5Ijmje+BheY3GdTCO0e7RNXfuanS75Ix47d1N5BVElpeXoFxOcNdSeOQ8rQdCG3zjLymg4XO/eAYhl8jeP9hFNubq7ZMUaTo/je4oZd8b3w9w7swZas/VXdzZznOASQh+R6slFz2WqJJBC6ceIQdHkUaYcCCFAweG51etWsfyic8CACoLL2G1SvmaDu7eQZvHNpAJTMTP1zi2zp6RAoqd1ZXQthYbpISjHriMHkG9VsPhIb0rQUmgVqP+KifAxlnqb7lZxoQdN0fdHkJmIx/92DMYcuBInI7hcN4WVS7hzOMkOZVKwbQemSOheI1xTIYNlmh7yQSDbp7TSePOe/QeX7hwFvsjYuc6gwk0+5t/+7uvozuYL0+NIxT45+G4CoGTS/IaGTuw7/UN/vob5Hh87a27SFk6ubS+CJfzCZnNTag7t6gtnSF2ucbe67sRujynVK2KgJ14WydOosrSdKtagcuyqsEAviK2z1MOWnViHlZKl7Bcpc8HnS4yzF8CJUMGk+ca+4BjcP6FlAoRO++/c+N9VFk+LVUqaI+IIUmNoXIRAEIpEeZrfRajFBLTFlPBI+qv41p3BIqC5p+l+hbUAnO0UTZ/jphK6/PAU45NVutKY4MGVhYWcIr1yKbqY/tGHsHpQQiaj5PhEIdbxMj5Th9LXE8tygCXS1FEyRCI6fPGygLOnSbJ8t133oHmYIVqxYFXoms2b/Uw6NB6GUUJHn2K7llZXkHsEBOlhYD6+9TS2tjYwBNPUDbEs2fP4vd///cBAI1GA3/yJ38CgELXc6NoMplgd3fXXv/tb38bAHDp0iV8/OMft9dc41C80WiEWo0avrq6av150jS1EsU/eKi6mEYNSSmmEwRTLT8z2tbd0QI2dFMjnma+nIESEukkj2ASCOKppJUbOUPHg5MnqjUSmc7rlCnYQGujLYWpDZBaqjixbZgHic7s5iqUQL6KSw0oXtWiQQ9jliKG4xGCUon7KHG4T8+0Wqmg3CTqt7d9iC5LV/v7A0u7Vis+7twi+nvQ3bWyFCXEmr6suQGplGPlAW00eArA8wUcZ75nbwzVHwKAcrmEMOCBNQrnL1J0x8lTJ8CRj8hmkkTqTNvoQ9d14PBDSRONUl5IMfBwggsv1qu+TVpYNQYZ3+lgaxdxHj2EDH1OFhfpaX2oc+sNrK6ScXL1rRvI5rdZsbK8jBu3KQQ06t/D6jLNr3pDIEvphX/2M5/ExiO0ie9u/QB9DgcNVQUNTk4YTWLc36K/3T6YYGuLnlu7EyJJqF/bey6SjAyGWjNA2mdjNk3xzXcpymn3IMMGh7qvLK6i2yaZodsdwuGBzlJtIy7mgeu6tvaPVB4GHLXS6/dsnSnoFA6/Q4GMsbZBG8lSReLaWxyB1evC5fdDZRGqnHTz/PoCnJQW4lvvfwfNgP2yohFSDslXhg44AGCEtlIzFRKlfnm+O5NNcrqpzIPRZIwx1xc72O9gwgnv1k4uY3Wd5phfDXD/Nhly/eEIfon6WK6W4RoOzY0mU7c4JeGVOQxf6ml0VTJBrUHr69n1k+h06Tle/+GPofnAeuHMIkp16tew3UGPvy9Xy5hwHSyoAJ4/n3GuEByVou16KgFNzzAaSXQOSV6bZMZmk5flEvr8DkX7A5vOod+fIGIfsfYkw5ivuXFzC2+/RdGTj4UltNapbpinqpDIfdNKqFfJT8r1fJRCMpCWFxdwdo38+IwxOGjvztU/gA0e62mp7FpixNQ3UULbrNVf+fKX8XM/T7XdTq+fwlVOaPoLn/0nOMOFUL0kQ8x7xp3bNwGPjLEzYc1GT8Jx0eXMzKVSaaam42yVqZ++L8RxAvcYUa+u49goM+gUOReRyQEcwcVsx9uoVlgyzQa4dZOe6c52ioiN21IpgcuGkF8K4Qf02TUuJB9EHKGxwG4CYRAg4uz1cdxBpUxr84sfW8PmbS6uu9/Ge/duAQBONS7ALdP7oc3DIyYLSatAgQIFChQo8JHHAxmePKcOQKfyPHrqN3/zN7HCsfV/9md/Zh2YFxcXMebcLEmS4OLFiwCAb37zm5b5OTw8tEyO67p4/fXXAQCf+tSnLJt04sQJ6wj9Dw6tp/LQEetQAlleP0Qi9zY2oDpC+SXWZhQCLh9Jupu3cefWTb7EYG+HHH2zfhcvfOpTAIBrt3YwiIkhWds4idU1Op2E5QYmaV7bS81UQJlW6IXOpskM50CqU+sIPY4ie09XSWiO5Om1O5hwnZnxZILlpUX797kzuYGB4+WSkwcnr10UZejxqbXeWEDAuWk6+zvoHlLEiF9vIQzzshRyejqRU4lNKcBx8yg5M42WeQi0NqhwpODq8jI6bZJg1tbW8OSTT1EfquVp/RUYdkQHtnd38ObrbwMAnnjyCdSZIn/5ez/EvXv03C5fvohAEQ19/94NfPwFei8arTV85++Idenv9wBDJxNjgGSm9IDHJ9hYKry/S23rRfFP5CN6EO7cfgMpV7s2SYzDHYpU6R7uotIgFmvt9OMwLC1N0hhXrhHD8/YP3sBpzlGyuuLiRz8i5/Sl1UsQDvVXCokw5NIYpRA7O/TcJBIsBtTORWg0VkmSe/7TZ7C2RGOe6V24eT6U1rJlBB1PIQiqc/cRmDqfp1lma/fVqlWs8LsyHozRqtL78cTlc3j0MkW5hOWSrdtUKQUIeB4NhkM8/yRF+/zcz7+I77z6PQDA9rt/hx1OijgctCFFnlvJg2JpRKjMMpcQ0krclGSUvtbIjsXw7HYO4ZTpfQrCGGGVxu3MuQ088iitl/vdjmUXW4uLUCxpJSaz8pxREiYvTSNT1JjB8xwHJW7nUr2GJjvjXn/3Fr70Z1S1ulpposzRheLsIpos7WRRDI9ZrDOnlvAa1/mK4hRhMN96LKCmBI/BtFTPTLCHhITPjqaBUhiwY/NOp48spe99GOSJytJEIcqrwQ8iJMyu3Lz6Jt4s0zVLzQBr6yf4/sq+30pOA0KEULZ6uxSuTV4HaLhy/nlqjJlJLDutka4pKRMAIEpiGJbnG6UKki2OgA0CPMZrq+i2sTtkJ96FFrwKrY+VhQbGrArEWYqYo7RSkyAmUvJI3joDgwY78SqlZvaxGebHHCdGC3B9D/USjUna24ZKuSSHu4lBh+ZFKQCCCktyZR99jjgcdVO01kii6vcPcf8+rVtr50oQvO5X3RL8PEo1EQjZYb9ereEwojGZRGN0O7SWLG+EWObgjFP9Cra4TNAoaWPB47VWT/eSD8MDDZ7ZMGGllPW9cRwHn/88RbxsbGzgq1+lQmGj0chePxqNrNS1s7ODr3/96wDIt+fECZqYrutaw6bb7eLLX/4yAOCFF17AqVOn7P3/IWUtYTLI/KXU2TSzaiYhZO79rQHJvjdIpxmGjQPB6qbWGbb2aVJ3DraguF+lSg3vcyHD7ruvI37xMfocHaK9Qw9zMjpEf5d09NNnzqGxchoAEKXAJOaihpmGX6bFS6cJFaGaE3EUI+FIoSiJEKc57SoRM5Xb77URcVSE5wfWQG232/gUG2lCCJR58fVXWqhwpIcwBnvsuX/yxDpSDq+8ff06llap0N/FZ19AmetUAcbWJjJG242fCsHlFPjxEmXlC/UnnnsRP/zhDwAA1VIdzz1HUmq9UbPRWONRH6MBGXqdg3288/ZbAIDV5VUbYfbVr/xrLC6SZHPu3FmsLXFbsss4e5ayu9663UUU8XyPYhtGL8201o4Rxi5AN/eGR+qVHWcF2t+9gzqP/XCi0Dskn5ywHMNwSoDkjkLCdP9w3EaTM/HC9HB4wMUU4wy9DmeWlinKDaKhHSlRDvON0kfap3uu1ALILv1WSWc4zwkPFy4vYtIng0qlgOREYJ3uCDEXa5OBj3ROoxUgSTMPIY9HEWKWV05vnMBKi6XXfhl1LmS5sb6M5hIZcm6pgk98htaVlROX8G++S3PgsNPFf/KrvwIAeOqZS5hwX175/vcQc5ROKKSViw2m5x/HTGtmKekiP9zEcTJNmSD0scLSlR9gyKHfXrWCUycpvPaFF59DymvJ/u6BPUeFZR9xnvrA8ZCwLOT6ZSzxxpkkQ8S8AawsLKHJBWTPrC6hze/iezc34Qd8cDEKhxwevHV/F2XeMMKwYiNW7929inhIh9dKuYZRdzhX/zR2jsxrY8dGYcIJTG/dfAMDjgL0AxftARs87QEG7P9Vch2UOLElUoW9Ln2vBWzknInHyLq0TqV7N5F0SAZMqz7yVJWxjjCK6JAR6AqgaQwyo5HOFME8jjFwtCYi4HEUEhWYpb4MRj1ceZ3W/cYoxbkx19x76y2MerRW3rtzB8vnyGAvV8qoLpM00/JOojOkOfL+3R0ojj7zXdeulf1+3yb8rdVraPLaemTNFFN1UTkOxEw06sOg3BFMRHvSzbf/GlWWljbWPPS4kHJteRnbm5xWwSRocLHfsObizg7Nl/EQ4Lqv0K0y6pwxezAcouJQe1yl4HJdvlKlhn2WAicTjR/8iMZw4f59nFmlsVpZW8apBtkWuupSVn5QLbNC0ipQoECBAgUK/P8eD2R4ZmsbfVhJiKefftoyNt/61rfw1lt0Ws5mEiPV63UrVw0GA7zzDlOlUYTPfpaiJmYpuq997WuWzv7d3/1d+7fHOfHPiyxNkGS5F7yA5IRVRjtWupIScDgPgTAplMkjH2CrhI/GY0SHJBVUnQy3WA5R6xtYYov+109fxt49OmFuvvu+PT16QmCbawJ1tzaxdpocK09ffBRbd+g+qfRx+uKTAACdRhBz1rahRuNIZFzKeUbiSQzNlOp42MOY06u7nov9fZI0jNH2JOH7nq0C73sB1lbJIdJxXZQ2ySoXQiD3cEuiMd57m6KG7m5v47lPElN0+uxZm2fCCHIcBkhdjPJS7seIKlACdr6sra3hxeep+vn7N+9geYlOTXlSPQDY2tzEt//mrwEAzz7zLBabRAcLneF9dqj/0SvfxcYGyYzjzkk06jT3n3/u49jeJnbotbeu4nBAJ+XuZIAsL/0hgFwC1fYT0B9N60pp8XD6dRZSO1DMwI17I8sser6DepXaVqlKKI8kpz2MMdml5znqjXF6lSRoR6Y4fZKTiPUPEUf0rCqVCla5OvVapQ41oHm66KWIA070V3dRbtD11YqHkOWww7tjbN2lk95h5xDLLKNok+GwM6219zAYpa2M6QAo88ltggiGWYiF1RY2Fqn958+fRvMksaG9VEE51P6n1s/j0Y+RjBWNxlhiet0JK3jpVylitLV+Fj/4u7+hcTjYxTCheTfWchr9YmJIpuCFmElqJox9D6SS1gF/HnQ2D3DjBo1VpF1snKST6mDQwY07xBDvH3TApAH8QMHnCE7pCCxziRClQiws0LMejjvY4YimwJMoc66ZXq+N165QAEGnn+DCRYquufbO+9jfI9ajvV/CcJGeY6eTIE6oX2kygcNrjGMMDtrdufrX7d+z5TiEVHBdYv5cp4R+j/r97tUriPJIviRGUKFrlONb5tpAIUlytWCMPrfL8x14ueIPYJ9llM1b17G+Q6Vg5GIpr26BJItx4hTdX4ouuofUDz1xoVh6z9IYCb+bi61TD+1jprWdC1oY3L5O0YpSKeztEuv58ssv451rtM9dNgonxsTYxGKME7xnTAZj9G9SrqPDSgN+hd6bTGYY8buulaBAE1DiWpf34GymVmWlUj1Sw9LCTJkrrfWswPVwJPdw5+afAwB2Nv8G7/F7/PJYoNul/Unpt5Fx/rXPf+5jSJaIWdzpjLDdpv62OwNUqzS/Vp99HN/lemdX3/wOTp8kyezyxdMo+dR3r9xAwk7O41RivE9r7eFggN42rfHL20uonaa+rNQ13NwNQgMPq784fzzlDIQQ1gdDa43FRaJWv/jFL1o/jddeew2nT9Ni9Oabb9prnn/+eVuHa3d312Zmfv31160Etr29bTfot99+G5cvX6YOSfmh2SX/bZEODzDkMMEwdCA406frhNAc9um5Dursx7JQLkEozqDpabi8MkVjjfUGSSBJnKCuuCBeKHD58z8DAFhMEiguBPjJsIrRgB5gksVY4mg1xxgYn5MB9jexfY8WrESUsHaKXuhhbKCcdO4+uo47TQyaCmheVJI4QsovFoUL8gIzntjxbzQadsx7/T4iXoTgULQYQD5C3T5FD+zstuFymO7qUoqMjcPu++/hrddJZvjEp38Glx6jZ7q8fhJhhRMYGgnNxliWUQbUeaCkwIh9xza37uOJS3TvQX+I0J9m7c4N5rXVdbz0EkVNlEsBHPbfWFpaxDe//hcAgLu3rmP7HvlhHWydw8WLJEVG0XvYYmPw/t4+Djq04GZJDD+XRTQQ51F9UgAzfgw2KRjMsRIrLi+chGYJaS+9i4z9GFIzRLtN7dQ6QrN5BgDgS4HdbTKW48k+Qo8jgFyBMkctlRsNHBzQHGxVPZw7SXM86k/Q5hygZtDGygotTLIuUGrQ33oQyLju1aCfIk0cHtvTECA6ezAeYhzNv8gKuMgdLnxXocH1kLoHh+hwputxMkHLowOWhoHDCc58UYL085pJPhSvN8imaRKgApR9es9e/PQXEHItrW/+1VcxOWSDPY6hdZ46YvpOJFlik4BSCoLcH0VAzK8UYNwZQXNk1jjNcO1d8sVyXAXOKYgg9G2ySj8IqWAqgCiZoNum92x9tYoq+/lAT7DcpH5129sIXXrWP7xyFW/fIMNVqgrucxHVG7fvoM6HucVWAwGnONjfamPM0ks1dFFj+WE8nkDNKQYIZ5o8VggJw5tXBgXFmaFPnFhFyFE/quLjCV4L9tt9jDtkkDhJjFGf1uXOYGAT0ClHIODCp77rIeGQ5KS6hDLX8Ct5ApmNng3QKNH6kk0iRFzk1lEZfG6P9F0MzPzrqRBTcchojW/9JflG7W1tY8DFXdvtDnoxRzc2FpH1qF+ZHMMZ09wZ3B/hNk+erLqAmLdjRxlkig8i0ofmvjsukLDMq7Wx8laWJtYAnzV4DMQ0ojjLgGNE9oqoj+4OkRci3oHI8ghqFyHvYdVSDT7/XKvZxEKN5lFsfIyZIBhFBuUaJ8KUGe7fJ2Pph69dw6279L5evb4LlUf5lgJoh77f70+guMDrguOj8v+y92axll3nmdi31trTmc+5c823BhaLLE4iKVESTcmW0pZseYpjo40YDaMTOA8B+iFAECBBgiBInvLqh35ywwHSegisuN0NWZ7UkmWKJiVRpMgiWXPdqlt153vuPeM+e1hr5eH/9zqXssQ6laidBr1/gapTt87de83rH7+vSfM7GCfYuE5Voe0LGVqMg5Bp+1AbuQxplVJKKaWUUkopH3t5qIfnJ3FgHRUhhPMGRFGET32Kwgn379/HIWMGnD17Fu+wK+v8+fM4eZJczAcHBw7AME1T3L5NWpuUEgHTy7/66qsOw+fcuXMf4lr6Wchw8z3Hu5JPlHMZwvMRsHcg7hkMBXlvLl9+EZbbfNDvOeyVeHCIwJJbtDnfgSosEgU05sn6sho4xuGe+RPHHdS3UQIhcwiF8KDZlf+9t99EJJj3SGtM+mSh6dwAZnaL5GgI0kK4sIGx1lmSOstg7BQGvkgar1QqGDBdyPr6OpYZ6yKqNbG7zxw/u3tINGn09XYdEScb5sixyxQVeQZw/jVe/eYA7/6IuNgWjp3E85/5AgDg8UuXYRgPRed2Zg+PABwqxv376/i1X/wSAKB/0MeA1+DK6RU3BrVGCzW2UqBj1NmVPDgcYu02VfrodIJkRH3a2dnF089SUuDqhWcxAbmq721voRky0/OFc8gYZn1raw8pW2hjYR1InbFTLjWLh1sjR6VTraJLj4e1AmnBZDzxEdTo8/beA0jNnFntVUiPrPsgqmPC2BZjK3D7AXmoFlZaqHK1zPG5FkKfvH1397cwKo6GShvsfERlxUe1TdbXYbcLmxfjGUFrrjyqBtjbI2/MQX+MgBMZZxGdaLcXITRqFfJELs7XsFRnDBwpUG2wJypLkebMzF6rIwinBQRZQT/HPCAAACAASURBVFEvQ0iuJoRQBZMKPL+Dp1+kcPpev4+//Zs/o/HUY4f5QphYU5oJ56mTEkIXSezmCCbLw8X6AeocQn2w3YUfFSGfAAX2qBZAjxnqrRCocvXOcDTBwTaFzR87seqqsXYPuvA4LJylFjdv0znxzVevoDJHSd21isH7zCY/Gsc4xp66PBsjZq+HH0QYDhkbxQ8QMy5M96AHz5+N37BRWYXnOAyOZi9r+I7B/Fm0l8krsnBsBZ94+ecAALdurWNvg/jTWnXfeXj+7tvfgx4U1CIGEVeKRpUAn3yZwuSf+9JXcOo0AYsKdRRZVMGCQ8m+AprTqtfiS8JapMlsITsAGE1iXhtAb28XSY9+t7+xiYj7frzRBHq8lutVvNdjsMHRAIarfw+TBHmH9kdnEqN3hzy1vjboLDO/Wb0B5dFdWK1Usb1De7rRbEIz2Gs6HEGyR1Mp5Spyc2ucV0dBuGTvWUTkApY9kQvNRTSYu280SZDJosq6hpDP6FolQztgqo65KrZ2KIG87gNPnKPEfBvfRsp0JSaZIBmR5+3eOMZgxIURlQCNGq2TUb9/hDdvgNAn4Mzdg034S3Q/faE5B08VoIv6oWkv/69CWj8uR3N7lpZooj71qU85gtFnn30WVQayG41GTpk5ys9VqVSQs/LgeZ4rad/Y2MBXv/pVAIT2PD9PORlHuY5+nJ/rUeSHb/3Agc0p5cFjgLMwihBxpVVUaWPtLsVpI2+Id96hyfzmt19HziWDz5xZwRdfpLBH6vkAZ53rYR/Lu4wK2Wlja4sOI6NzGK5amDt9Fmtd2pTXbt3H6WN0SC0qCcsx6uNnH8Mql2DO9wcYJtN8kIdJbjKHeGu1B8OftRlCM7cJrCkoZxCPErSYJ0sFPu7eYxC0OIXXZdAprbHFeQBJonHmNIUvK9XQVW91d3dx+ya57Ld2DpFxSGC310VylTZHZhW0okv0zNkLKDA9hfAcQOLDRBwpE7567Rr6rOR88ec/PwXb0nDVeFab6caQysXO79y5hztrd/n91imAg+EIki/TT778Iha5xLtS8/DKC5QrouJDfOPffA0AcKC6OH2Wwo8HeYbb9+gg+zCD2KNVhhg9QshVWguLy7ADDr2GPiyHT9NcI+QKHaEstpm5sVJrY+U4kyPKGq4/oD7OLy7i4knar6cWQqSGvv83r62hN6I9emL1AqygC7FRr2PCiN3D4cAlJ2kBRIUSkkzgBXRBK5W4PIxZRGICqwvFXCFhdN3xYIzVY+TOXllZRMjryw8DmIQRlT1gMuCy2FQi4iqOsB5herFNS8itlPAqNO8v//wvuYP1je/8ObpchZIZQBe8WsYcyTUz4DMWSkqoR6hEu93tIWeAx2q9ijZX1/RHsQO0lIF0EBTVWh0VHts7a2s4xRdbK/KxxnsryzOMmCdre7uLDc57yFUNEXPJ3VpbQ58ViDlfYb5CR388GmBzg9sfNCA4PJDoDDGHu5M8c9VTDxMC2WT+JoYbBQCC6KR1Kj2N5hydj5eevQzFkAZ5ptFZoPP9uU9cgmVk9rXrazjcoz1tAwmPz/2oFmJhhdZ1c24ODlnU2iN7TdFZAjCvW1HKrd0GFEICj1Bp99d/8U0A1ObRxiYOOQ+ysdBBwHdYDonDCc3JRqBR5Yo6lbbQ69P3AyuhWnQv5q0GMs536h/0HNSLTBP4BQBj98DlhgbBHra26S5RnodVrqptNJuYsMLu+z7qnGJy2B9CsfLzwmPLD+2jEAYVj/aHF+WY8F7M4kPkHt09w0GMFivdIq1g0C2MqgZybn+SaWg2NCfjER48IIV25cQxvPQypRXs98a4e48Mze3N++AiRmgROiP1YC/G5E1S2FWoUbV0P/VijUW+s63VDz1Uy5BWKaWUUkoppZTysZefiYenkKNJmY899pgDJyy0VQDY3993UP4vvfSSw+EZDAYYjTjZcTjEAScp+r6P1157DQC5637nd34HAHDmzJmfSdVWJQoB63P7PYefMoozjBnsqpr58NdIA333vXfxF/epnftGQaTUlyuHe/B3SXttNzponSPY8t3rt3EzY+1YaMev4ikFyVbcsPImfrBB1vVGL8Y8VzC9vLyAXsJstCdO4cFdsszz/S2HlzGLULUETbUGIBn2G3YyBTKzxiW+9XsDbG4xHHsYOPC1sNbAAYdttrtdWM6ID4IKNHu6Bv0UBwf0ncEgRmuZXI+tExfhc4iwEkUOoNKPqnjhxRcBUDVGwTmu/MCxtD+0fxDOddvt7uPttygp/udf/hzqXAEyOjxAWCer0vN9iKKq4cgSStLccRU1Wm3oQ+5HHGP3kMNDVeD5F6hqcGWpA8OVbT/6u28hqNG7Lj3/LJ77uf8EALDTO8Tm/0WWWMJJ6q7dj+CUtHbsjNDW3CKGltZgfa6OClMD7PV6GGuG7D94gK0tCl2Nxxa1Dllrq2cv4ke3qD2VmoflYzQmjXqGexsM5pVGeO8mJReePd/EE6vkvctzH8mE5nmSjlDlsW1FDQhBbTjYP8CE59bzazB2dk8kMIFkG8xXoQP+3FzfQ8Qh33OPX8LCMlnLxubYustWnwQqNfp5beEMKlFRxWhRxLGEsI7qwErPrbVKfQ6f/8Iv03eyFP/+W39O30kmsEUCs6DwUvHIKfaodNhBs0hlsYEqaB/I3EOTIfV3dnbQZk9Op1LDkL0kGhY15iKa73RwbIlZpQ92scEhZV/58Nm7Ua3XkW7Rz+uNGg72aR+vrd+H5DNjTilUC++GVo5RXcc9PPn0E/Sd+aYraNjZ7GI0njVsl38oN7ZwflkBl+htM0ByInkYVvDmGz8AAIz6MZ77BHnJT545g+0HhAPTqFdx7jytwcsvvYD33iZsL08CKyfYkxcpWObDskLDhR+RwyLmz1MRsEc2oPdId8m3v/23LvRuJqkDkH3ysbMYdune6vb6aLI3rtOew9JpSuPY3tp2oHxzc21cf0Ahyn/z+usYcGJwmqTIi3C+EBBFsrzWSJiqRWsNzfQ1udZQ33mVvq4k8oIDSwgsNsh7fpBneOEZqvL9r371cw/tY63t49QZ8lLvbUt0znAUZLKKnNemqrSBPq210Oui26O1tjPWeOc63VX3tgf44QcUIQiUhwMOmX7hV34Rba5QzPe7+MQypa2s3ZrHg/t8z01idDmikIsq5o8TDs/Tn3gMV7fI49cfT1CQvpk0dvhuQPMn9utnqvAA05yfarWKGqPf5nnu0JWzLHOgdmma4uJFKpW8c+eOq/xSSrmyaCGE+93vfve76HG89Hd/93fx9NNcpm1md5v/uOSjkUNZDaMKtC5KKiUkL7Sst4tbe0y+eNjFJKSF/NjqKsDKjDfaQ8rKTzIYoM+b1dcasas26LucpTzTsOxuHFVjSJ6KC2dO4HCLxufqndvoLNKCXb97C9s9Wiwvv/Qyrr39dzP3UckAUa1ANpbwJrRZkzTEmDfNJEmg+XQKq1VMOD8jzTN4HII0AOIiVyDPEXAoMElGyDiHRwRVrJxcBQB89p98CosrlPNTr9dQq3IegJ3yainPh2JkqsEodgSjWW6gxGxksmEokSZTgMbvvUnoxzduXcenORQyHvQx5DyWWqOJGh8EU0IioNFsYPUMAestzi9jZ5Pm8OadO7h/nzbt9evX8fmXXwEAjA66+MEbxBf3xmvfhmCF6oXPfg4Xn34BANDZ3cI8H3zrgzVHjiqMfZSiCWTpyCmYnu9hsahIabUQNjh3RfkYHNL6alQrOHmGwgPf/uAdvPkOrbWDocUa89AoZfBzL6wCAB7s3kB3RIfIf/rbn0HrVcpT2t5fx8GQwgZqWINFkT9h0WwX+y6G5lwa6WWOeDSsViEe5YQxGj5XzvhKYZXzyJIh8P5VCt88/uTI8Zp19zawfY8ujE57AUun6TxQjUW4hBgoGAcwZ6eluUaTAgQKb/hVOiBf/PkvY4dDWj/8/t8iy4o8MgPBe1RY6Sq2DID8ERTX5184j711RtvejR0xaL8/cNxR9VqICYdGsp0dVDmHo9OZwx6fMf39A2yyQpsMhvj1L1AlaFwJ8IMfEHr9RvcBDsdFJWiOgkvWwCBjJW000hhMaN5PnjuBTzxHFVOrZ47jr/7q2/TMSYowmFZffaTYBHBUk1MyWCBDHNM5eO/2bWdpvH/lKu7fpjDNxcfP4dLTlIezdOIEDnaof3NzDTzzEpFSP/vKZ9Hn/CZkEyzy/q7WKhAo+L70VNMSKQQTiU7rJQFY4cLnsCmsPZytfwDieIwsYURzQwjYAHA4GiHiu2pn2MfyaTJ6o84S3nlA98eDzW002lxiPx7jLiMw39s/wDgvSGslwPMfKOVyGXWeOwTuArEYAELPw5gNtSRNUSSHWq2RG+rXRAicv/DYzH1M8wxZwGXmfYF8SGdhRVcguRKvIQz6fR63bIKVDikwleUm/ux1gvfY2OnC98auPZeepXlcXDmLfp8MyqTfR8bwHsuLLeQZhdl3H9x3RuKlyy/ipVc+AwAYpQPHDbi39g5uJVS92llcQmwK4+PYT+xXGdIqpZRSSimllFI+9vIz9/D8pORh3/ddZVa1WnVeoH6/jywrKiIMXn/99b/3nfF47H5Xa4233yZG5P39ffz+7/8+AEqQLirFHpmGIh45gyRLey7pyRjzIY9TvU0WchquAJy9fnq5CZ+/c/vKFtIqDeeulyEakubrBwJmiYG15iNE3E4hFba67DLuD7G8Qq7tJy+dxbuMzVDxOmix18APDGyNrEGzuIpMvDpzF60VznsbhAI1xskJfemSy/JcOw9PVK0BXGU0HA0x5gRpJQLmFSNPivSm+DIeJ2mfuXAZr3zxlwAAJ1YvQTLrr68sQvampFnmuG48TyLNyOUcVmoYMSdXkubIJrO50U8cX8St+2Q155nGlRsUfvy777+BF7hqsNlsImGrCVo7igccsZQqUYjFefJmHFs+jdVTZKElWeYSHw8P+i75edw/xM49qiys1qo4/TiFA556/rNQHvV7eVHgySfJ87C+dm/q2ZIC0LO7ePZ2t9DpkOXjRyHmfAptBH4Tli3YeliD5Yqenb09nDpHVlCtFeHvvkftfPPtW8jYs3H1g7t4+y1K/psk+5g7RnNy6qTBFwWFELq9FgYMmraAyFllnurDU/Rz36sjzxjKP85QY26migbUI1RpWWQQBYifmNA6BPDU02exvkZFAxu3bqIVUH/TyQABV8vU/Bp8riTKQdgkAKBE6qbYIndWvbXCgZRJ6TmPQLtzCq+88osAgO17a1hnLCYF42gyKBxaJDPnj4TD0wwlWudoHneCPnKuhMqzHF0G92s2qlg5RlhDexs7WL9G67m61MHaFoUa9zb3oGPal4+fOYmzp8m6/vO//CtsMjR/N6aQGAAcr1YxX5xnEjjgMFamY0iuelpaWsTyEiVRVyIFk9PzD7v7mIz3Zuug9afgb0f4swCLjDF+dh9sI+RKTjPJUOVw++mzJ7FwnNd46Lkk/VarhQ4nd1crESp8jjRbc2hxxZsKQpevKo1yrpwCLYlkmtRqISBcsrmBEMls/QNw0g/R6pDX9trmLnZ5f2zf3UAtojZPtMYNDsfc8QQmHPbKckBv0liauzGydMhN0IApkq4FhC5CcnbqofSE40wTUro7MgpDGA5vpnk6ZW9XFj1N6+vk/DE8cWZ15j7m3StIBmsAgL3NNQwn5OGJZACA5q771h6kJq/5p546i2IGvKaHao3mtFbzAQ5fSngOa28ST5BxIrSnDUbsXZYAlpkuZtzdR8Aes1Mnj4EDDVi7d995HKN0iJxpdppLc2g1f3Ioq5CfucJTyI8rPsXfjTFYXV0FADx48ADf+c53AACdTgdPPEEXxpUrV5wCo5TCPsehgyBwCs3du3fxh3/4hwBIyXn++ecBPHrFli+pjBUAtMmhvIJEUE/RiYWHOS7fXQwDPABNjs5SeLao8LIQXMkDX7lnxjDIiviwkgTbzH0JeG7CTEIzX461Gp0GHdxh1XMEdyYbIWdwv7XrH0BPZkewzfPUVRzlWsDwM3WWwHAoKsu1Qyf1ggCq4E0LA3jsstXWQJhCCZHIeIMurZzAM88Toebjlz+BhRU6rDWkq2yxeQ4tCogDibx4pjHwCjTbwINgRatSFdDpbGXpx4+dwDCj39vc2sWAFbT3rt9Aj1Gi6/MLaDTpcLTGuNCMgXRhjla7jXMXKW79V3/1Lcy1aIL+2T//55hbIRfpP/nFLzpOoCQeoMIVQy1IPPkMhbFanUUMuIwWVuEFHpvbN27h+vX3i+EjpWdGGY1yzC3SOOXI4fGh06w1MEppXYgsR435ksS8wkqLxv7wCxn+9P8mQyEeGVRaFW6/we2bXAbcjvD401Q+2ukEyDndKAgbmOf1uHzsGAyX2mZJH75kxcZvYcJxnXajhahJz890jjCc3QBR0ro8DCElMk3KVSVq4cQyg+AdbuPu9WnuwtmzpJTW6m2353xPwlUK6Qk0KxVW5LAchjXwXShbqorLQYJS6DToMgtkFZLzKjxPQDh0ZQEjCqRdIAhmP0bz3thVoFbRxM0b5I6H1jAcipAigGKlYWVxET2u1NzZ2sb2XSahjDWCwjibZMh4PTeXV5BwsleCFDXeWy9euICc0wSGeerQbFOjoTgGmUxSxIw4XD+5jM9++pM8hh7e/N6VmfonBJwCDmgIFOEVi1Gf9s39e3cRMD/U4rFF6ITyztrzESr1Yk40fIbniKIIUhTI4goL87QeT5w4hnaHQzxiGqKkirvinJoaFaQgFFx96mh864jy83A5FtTQZANvU+8i4/ypSCjkjDysrIDPSl0sfMQMYpsbA1tAb8CHlfRzkcUQfBZLCwg+N7U2MN4UimV/l9cLhAMelFJBc76VzCYOBkMEPnLDVcQXLuAYn3+ziNr9W5yo0FrozmfoTdiAW1pAktAz79zZQ6fBnFZphg8YRHPi+UhYWY4qHmKG94gqDUcyPBoOHGI2lEUBjRsFPgTn60npIeAQ9yTpY3vzLo+zRr1A2x6NsHySzgCV5tD4aHiBMqRVSimllFJKKaV87OU/mIfnp4nWGovssrpx4wZucPih1Wq5ny8vL6PbJRfdeDx2ib5xHLsE5SiKsMva7h/90R+5Cq/PfOYz8P3Zkl0BIKpWHE6AkOJDVBwOdBFTDBdjDFoNev72xjoke046rSoqbJFIAWhOoFMAPDH1rxbvspMxmiFzoZzooNun9t+8dRUeJ/R5OoBh9vbJJMbeDoUlMtuAP36EJLvJEAVoiud5rsTEGu3oIYwxrmrFWAOPx9DTOQLWvpNkApsVtBoVnDhHHrlPvvxFnLtI1RXS8xFzArGvE0im6sithudNKaldVYQwEAUAkFSMlQEI5c8Kw4MsA06eOMVtl3hwnxJZ379+HTdvrwEAFo+fRBgYfo03te7E1Aas1qv4rX/6mwCAja0NtLiC5r/4/f8SwitCWvt449W/AQB8/c/+DYKALMwXP/N5tOfJC/RgYxvxuEhOTzHfpnX9zNPP4f46tc0PBSajD1dtfZS0OquI2QU3HIzQapGVm+oRpOWqKJvDZ+C+zvwS+ruUDHphNcDlJ8nr9mAtw94B7ZunL13AU0+d4n5dx7Flamd7sY0oYpqRD66jvUiWoYw0ojHNT+h30GYsFWt8RIyzFYRVjBjbqRJWETwC55u1HvKMK0ykRZKRlSj9ACvHaS6U9dBskVV58/Z9vPUBnR99DVzmKo6WEK4iadw/wNZ6EXb0ELWojzKsIYqmmEVuOWbAtffIm/HOm+/Bcqhjbr7hQEmlhPNhCCkg5OyhySAOMNimMMbueheaq956hz0MeN8EUDjP3qezF87g+k1KAB32xlhiXqLKXBV9pmF44933Ef0phTouPn4Rj18gi/eH799AUHA+5TF6Cb1XeL7L6YUUmHDlz62bd/HGG5Tw3O40cekSeaKagUI9mK1i0tgJpCNeSGGLK0aogmIP7VYd88wMXmnVkYypT52FKgKm1cmSPgacEHuwf4ABUzNIqXHmDIW96jUfnqS2CzsiHBZuQ4H5o6Tvks0ptO/cCpju/AQWs7HBA8B6EsMktMYnoXCVxlZbWA7fVEPBtWFAahVC9qgpkSHntmlpHJu8DULnQYS2sEVxg5DOI2+tdWe0JxWKQyw3whVAqGzsvBi59NBgb8nTTzz5SFWhOLyJZI96UPdTtDuUVtKYa7m5+PSLT+P8KnnE/+2f/DtYBvhcOXkKVzjFAJgetdV63VFPZUmMGkdN6o0K8kNaHM1qFUMu6s5yA58LWuJ4gPGQnnTp/FkscYK0zD3cvkXh7hNZDBH9AwAPFvLTwknGGBeKKmJ4ADCZTDBkFN8kSRzPRhiGDpxQa+0UnqPPPsrn9eDBAxfeSpIEX/ziFwHA/ftHSbMzdfNZWFfqB0zzgQQ0CvYUIQSaDBYVTzIYDrtE0nMbXSnj3OtSSlf6nGsD+IXyIxxpqRcEqDDo2GAwYpc8IE3sYpjwPKQxE1Xu3UNbFdvp4RLnmsipAKh0mpukrYFhhcQK6VbmeDxyLmTf85FylYDyfLQXKOxx4fKLeOxpCtUsHz8LzZricJS5Ba5U5ionpNXwvWI+jqLTmiO14YLawePme7MtT2sFKuz6PHf6FISmHdPv9/Da698FAKyeW8XSCrU9jKo4AnONCXPemHSMekQ//+UvfR6HXF6/dvMarlx5DwDwl3/5F5jwPOzvbkMKWgsrpzfhNxiQMKxCs2JoUgPJeSkXzl/EV77yawCAxaU5/ODN78/UP4AqyypNdutXIlhRhCJ7ONxnviQ/QJWr8RQyFEu51+sD7Nr+8ld+AW/ye+c6VZxZpSqXIHwAY2ncoihAjcu6rT5VRGFh7RBFoR1U5Coas3TiCPxCGcLmBemuj2ajM3MfLQIXlgAUMl53adJFkwlDq2ENlYhCjaexim9/lyArDq8kuPgSISebLAF4XafjEbo7lH8wqQBLfK5Uwyq8IgRiRxjHNNcmtxj3qUrLpMYRN9psWlYNmztICWEtTFpUBz1c7l3dQHeb3rV7kGLCY1Wt1LG2zeW48QSG83N2uzt4690PAACr88fQ5BDOOBk7rqZDbfD6D+k7u1t9PH6OFL+KF+CAjcKt/gFGXEm31G5h3KM2TCYxUlakJ2ubeOwCre3XX3sXW6xkPrG6jAuMlvtQEZNp+gJSgEOUEBIhA6eunj+D42dor/RGfex3SFlTyiAeUcguHsTY36Zw687mBoYTLk/Ounjve7R+G5UAlz5D89xZPY2MDScrMgeyp+wcCkRVa/MjzAFTnjQghzWzwyf0a57j6hLNJoqDM5ukSJgnS0Y+LF/WFEDjSkrkDsYg0AK6MPCE5+ItOeAAOE8fP4k2wxL86P33IJgEWQk5NcIt4FVoY9YqcyhgF3uJwQoDAR8/cwbDbDbwSAC4f7eH23fIYFo4uYgtNp5ubR2gzuCmJxYbWGcIhJH2cfw43e2dhZPodmlfJhMzJaH1fBRKpi8laiGd78vNOZxfoRytFBG+/y6FxnZ3911lKjQBnwLAS5/5NDwwUvhE4V9/9Y8BAE/rS3j6hQsf2a8ypFVKKaWUUkoppXzs5T8YDs9REEIhhAOai+PY0Uxsbm46UMJ6vY6XXiKPQbfbdd/f3Nx0ODxxHLtnSimdB6ZarToww6997WvObfbKK688tL1hJYLiqiUBC6mmOqCzVHSKI/y4KDT6RpY6JludWuRs6eX5GFIVycxTnmHpHRkfKadIIUo4i7pZCVyir5QSnioAAxVsxBVMNkHFnx0KHdJ3mDa+kA50z8J3zpUkyTBmKHStc4Ts7jcCwIStXCvw+FMEEvjCy78IhOQdiycaOQO0HWUS8CwcVYexQJ4UYFraJTZaM62c8JRy0P9CAL6aTR9XnoLH89OoRag9Rlr+1uYGbl4ny/f2zWsOHURKD80Wtb3aamDnLoU87ly/gv09sjBv3rrp2KWTicGV9ymscOPOHdSYFXh5ZQGrpwlHqhJVXJJ1WImwxEB/stN0Y7ywMIfHGHdKWwOPw2GziEGOkBOSa60akpQxWIZ7SCfkXh8fjtAfJdy2UxiwE/De/QNsbpIX6Dd/6xgqNUrwf/Vb38RBj0ILKoBj5c6zDKMheQBqFQ85e8zG46GreJJK8uIgD2gyIU+tp4B6nStn/OrMlXYAzXlh/fpKIqgUPFYp6syvI3SOZEx9adcbuHCGQnUTBKgzK3aapdAMRtZotXH2LI15f+8mFFeVRGIZlunJh5N9CGZlDr02mjUa53otwkGPvj/oa/gBe3ikQZWt9xMrJ3DsxIzeDwB7+z1sMH5Of5xDMBhn+9RptFod/s4e/A2yqO9sbSBP6b2H+33HU6aROZqPlhdiMKLJvnZnDe02eQS8PMPiPM1FEqeIx3Q+xRONkCeyMdfBLvM86XiMt7//LgDgjdfexvFlas9vfOlF1JqzpQkYswfDZ5y2mTtDBRSMpLGsNAUCBgWSqQ/LCeBx1sOEq/0yMwEUtau55OH0RUokhxpjNKa1KUWElOcZMnccXsZ6AAOqGjt04JFaT45ECSQlLoO8JcLMHpb0An9a5SmFO0+hNZBPC1c0f5zoifP45zaDYW+rRY6Co8RqDSv5LlECmsdEhhJVXvtWaTiYGWHgFWelEa5auBpN8ZJGkx7OnaVqS6MUuqPZw3b3tivwauSFC5tVDHdofX3rh+sOZLYmBTwOS4XVOrYO6Rx6ym/hiSc/AQD40dtXkSdFAZLvgBNhc0wCvi+DCl58mTB27mwc4GD/ewAodC95Le1u7WGFw6AbO/tocZpAVK1jwt7lqxt3sHTp/6cqraMihHCVVn/6p3/qfn7r1i0Xujp58iR+7/d+DwDw5ptv4hvf+AYAClGdOUOTNplMsMlgcADc7/q+7+KocRzj61//OoDZFJ77Gw/QYBA6AeE2jecpx7FljXbEa0fDczq3TllSkXBVGJ3PpgAAIABJREFUSFmmYIs8HCHgcWa68gJX+ZXr3MVUtc7gFVUfRjsOKQ24sIQQAp0G9TG1Gmp27lBMMgnBC8dXEpIRbJMJkGfFgeRBsZIGOR3bTGuH0pwboDVHFwxUHYUn32jrDjmLDwNBFrkUFDGfKk4FUqmFhSzqepV0VXIAYGfU6bTO4AdFebLEiXlyra50msjYjb+/vYk5Llm0BohYERv2urh/g9B63/vBG3jtu98GANy7dxdJwuCLCZwiIbVBzLk3lWoVl59iZNgTx1Fll6s2Go0GKd31ehWHfGlOkonjZtrePXikku1mp+nyZISnMeRAt4JEhQkou9197G5QSfLW1gQPHrDRsDVw+VAbm7ewzGBtk3SIEYdymu0KRpx3ZI1yPEb90QgTBruLJ2MErGg3Wk14vC4CBWRcZTgY7KLKL6upCkYcmlmcoY/pXh+CSzdU4Luoo6cERuyOzzODbFjko1lErHisrJxGVKP5HWZjTDLOh/EVwHkMuwc9yAat6ygdQ/ClmGUjBO5dOR57inLTPvfLX8G/+7dEKnpnYxMnT1F44POf/zwuXSSAvlMnV9Fhfr9ZZKM35SBrBhKjouKvf4izDL+R5RlGbAjGcYJalcl4bQ7DOXeVwIMnp2XyGSfIKAmsXSXQSJ1PELDhUqs1EPBZtbe/jxZDXLz8mU/i5jVS+O/evg0Uyu1ogjv3aO7efPcGPvHCxZn6l2UJhJiCtxZ7PrcpgeIBGCcpdHHW+BFSDuulmYXmHBgLHxVe76tPnMexswxNYg3aCxT+aDQjSM6DzHQMxQjWnqzCwQbkoyPVW+pIWFI5hQdCweAR8j6NRFCEsXLtzilpJQSHYIwGWhz2aubGIYgbo1w4LFfSKWMwxqGAp4IUFACQm9vobtKePqMCh/YtLRyshYGB4fWu49RVf84Jg5U2Kbzj0QTiEQin//rNuzh3kuZi7mQN587QmfrOmsbGFindh+MxcktnoT6coMpn6sVnffjMC5blUwiQLNc4ZFDPTqeJOOG58FqOf6/fW8cm821ZO0VGP+wPcJ+Ntvc/uIEnnmTS48YCVs5Q7uT65jW8/f7bH9mvMqRVSimllFJKKaV87OVnzqX1k/5urXW8Wu12G3/yJ38CgEI2xXeq1arzDNy+fdtVb50/fx6/8iu/AoAoKn7wA+Jdef/9952nZWlpCWOGUE/TFNvb2zO3OR6PnTcmCALHfq6OhMyE8KAkW55KOW9GroFEkxWkMfX8GB0gY/dHHI8g1cSNgypova1Fi8MevgwQcMKotMKBhQkhHMu5MRMIr3CjGnLbzigTEUKzdq+sgmAAvjROkDDQX5Zp532AODKXAo4OIarUoCIOY2UKaeE1ElNPjsU0lKm1RppyCFJYhxsBCGg99fCwIw25hbMGpJSYZLNZJJ4eI2LXauBbaAbbEiZDyO/c297EPIOXrRw/gTFjf9y4egNvf58AL9duXMXhAVncYaUOoYo57MNwAm0l8HHmMnkAPvHSZ7F8iryP0jdAwuCHwz6uMV7Kwf4Buswqnwugyt4nG3agotlDWnMLHYqJAkjNCAF7h/IkQ3eXvJ46N2g2yNvwne9ewdau5TZXUa3SuG5s3MPSCu3FRmPq/g4rVQhJYzgZGXjMBn2wt4UhQ/nXaiFqnIRcC2vIOJxgpYZhD4/OYwfiJqWBr2YPFdy/vulwOoScrqNca4wLFurcELAcgDCsob1E4/n0hccd3H46ylCEnZM0RZ/paDa3tqA9BlFcPodavei/xbBH8+XlGtU5qnL6wi9/EXeY6X5rex3PPkPz/p/95q+j0qG1ZMcp9CNUv1ir4LGXrBnkiILC67KNOntpnn3iEjK22K+8dwWW+feskIiK8HumUSn4oqRBxF6VRqVKLkkAWggXegs9D7tcIGK0xoj35fvvXYXPIIQLjTp8Bk/tj8cO+DGxClu7s1UUFusAIPyeIrRvrYcJV/gN+hpjTu5NUzs94/IARpO3PRkDOqe1sLhyGiqkn3tKOlqYRqcGMPhpPBlCSVqnga9domyux86TQ0fvFAjRHql+smr28/Tc2bNI2OM4yVKM+c7QuUbGYcZBGiPl80uJ3BWNaJPDFGexMRDs7bE6nVZXYVrH4UnrwmEVWChTQCk6/xQMAF1EHaTnAF7hK0TFWZzk8B7BvbF20EPEycmDgwyXL9K+//mXFvDqD8kj/uDBBkYDOkcznTn8nz//5rdxeEjnaJalrir4sN+H4rtZCI1qlfy+W70YV65T9erG9o67SyqV0HmItc6xw+CKe7tdxOw173r3AdB3KlWJtbXbH9mvf7CQVhEi+fVf/3XHpfXaa685Jef999/HH/zBHwAANjY23IX73HPP4bOf/SwAKlE/dozcV2fPnsX16zTwn/zkJ13Oz7vvvuveNYtEXgDpyqgMJOe6GGNhuHbTCwKAXW5GCAw5Fnr3/i4GnJeSwIOVRQgsc3k4xhoU4LEmS2Bi2hCeAaotanPFF1is0mpcbFcc8rMKFLhKF1p6rmpJKon8EWLO494WwgodfElmkPJYTXqbrjLHGA3N+UieL10ujed5CC0rE14F8LgcGtLF3oWaVudJTJXYPM8dN5YQFqrI59Fwh5zWBsopOUeeIyVcrfDD+tfdRiOisenlE0LOBaCg0K6TUjno93HAUAdnzp1FmlO/0yzHAQOiza2cwOPM9aKlhz5vtrXbt7B+hzZSrd7A868Q+d6xU6tID6l09t7OBrprdDnG3T1sT7h6IctheAwSk0FW6aK88MzPodaZPfdDyRSaK4MkNCo8DxMvQlhjXrBA4wHH2vf7BiGjXHdaVVQ4Z2p7/R4Gq8QXdmylg2qDlK5qvY52mxQhazxkPD5z88sIKgVPVoCgSu/yoxA2I0UiyRIkaQEtEDrohcl4hMifXanbPgRyVqIybTFOCqLSHMXjrbaOcyrPD3DmIq3NT4UtGG5z0ttFyoZIJkeQjKJ4arGFjMled9fvoSdIydm+fwWjHuXMnDx2Dkvn6TmN+WV86RdoPajhA8wpWic/+ubX3OXh+wE8rhC8/Gv/3UP7GBgxhSyQEo0FUro2Ng7RZ4DBLM+RDLkkWAOW92XoSwRcPZnmCVqdJrezioN9rjIbj2D4ApaeQsLh18gPXN5OnuVoVGht7O/uo8EKpFU56sx/+OTiGdzboDV87fo9jPqzVaIJAeiMOaHyDODcqNwAo0NSuEbdPjzmB/NsjDErpEIbVPjsTgXAKS2YbzVRjej89dMEbQa2bHU6qBfrMYwgeN8L5TvkbKkiKFbkjdUOZNRac4TnKwf07FWvly4/gTgt4Dw0ElZssjx3FcX94RDdEc1JPx5Dc+6KTXMHR6GFnaYv6AwpK0WZALIjOUKWv5PEsSMSPXo2+hqIWOvOhMC4qHS0Fjs8tgujHpquxPLhkuYCo3ERMqtD+TTO2o6RFuEzwPEgmlwjZaNk/+AAomA6VgK6CFmmCQZMPu15VI4OAEHgY41TVe48eIBBTOOjQoV5NuDSdIKAjaEzZ84gZILta9ffgxW0rpaPNbF9UAIPllJKKaWUUkop/8jlHwx4sPDkNBoNl0z81ltvORye8XiMtbU1AMBoNHIcW0opFyqKoggnTlDS7NzcnAMYPH36NDodcrlVq1U8+eSTM7ers7TiQjaAdJqpwBEcH6VcjZbWGhkn9s3P14AeeXvMJEfAidP1qOFCM5YeS59NDs3WnTIWkrlihoMeDoakBddbERrsSq4329Ds7smEhxxFWE3C6NmrX779tX+JqE6WdliJ0GQeGJPHiAxbGzp3Hi0KJRShKOlCeIEfQnD8ScM6wDVtU8cq7fl1FyIEjnCbCYOcLVWjjyQtW89ZBuTcEdPPM3p40skYg0OyRputNmpNsmTq9RYqXLXQ3d9HdI8Yz0+sHEeFxxgmg2TPU601h/lTVOFl/Crm2Ao9efE5JAzWF0C7sezubeH2e28BAO7dvY2AvXp130Mmp25rsPtbj8fodclL8O4wxbFzT83UPwAYdm/CjziMpS1CwdxuwmJumbxG2krcPyBLKajU8DxzeC02Q3jsyfv+966iUaU5PHG8ifmlwkKuol6jcGUWZ1DsHWp3OqgzOJ71K66KypgElmlVPBWixYB+mZ5C51ejyiPxha13JxizJZxb4fBhDCRgGSTQKqDwdPkhOqeIXbs2fwKaPWk3rryLjS1KfFxoLeNwmzw51SDGwgInNt+/h5zDuZvr17C3Q2vjwdW7WLhGFXmnH7uA00yT8quvPI3rVyghcu/GBiLOcvYDH/4jeJRzkyHjEMVGrCF2mTE6NRCCaTWyDBlbwpE10Hw+JXkORwEHgYTDR088/hj0VXrmwb195xGyno+Fedrr6+vrbl/WlEKHPdaxBnqM57My18IyV8J4FQ8HXL11/24XWX82DBdP+cjG9LxkOHIJvUZMK5uqzTrmuJJM5CPXxlZzDgF7lvs729jfprV84uQnEMri3DGoMuYMOda4AsvYKTcaplVLUiiHg2VyeQR0NXPtUcICenZCtKhShVGFt9Wgwr+b5jkSnzyLrXoLxy1FI3b295Ay67dNMkwiHh9hIfjsUUHgsMFyfhYAZDDI+axP8xyqOH/z3J3LnpSOmzDPc8eubg2Q89qMszHm1OweHiV89Ib0nJt3DzGKCRtnP6th5RiFkeuNBtY3KER10Os7eg6BHMorPGm+4+4zVqPI2B+Pxzg8LKrthKvW3trdwdIJev5XXvo0lhaoUKC7s4sqRykuPn4OMVfqNeciSEFn1TDZR6Wokvsp8g+OtAzAIdiGYehybwAiAQVIERowB9IHH3zgCAvb7bZTcqIowic/SVwv8/Pz2OAyzjNnzjilaBaRtbojLJQA/CIccoSElEgHi3ivQBhR+5cWm86dGWcGPueRREK5y9pauBi/hatCJLc8o+JO0pQ2LIAwCl11ivB8l/UvjUBohHsOZizZBoAPfvhNZFwK2Wy3sMTEhIvLx7DEeRxWKZfFr44Q00nPd/HwwI8QcBltJgGPXeGjwQEOD+lSOXniMQQVGh+664pNKYowNkZx5sDsPE+63BRhMuT83kT4sKIA7vposdogZTeoaDYcAGSlEqLNuRYm08jY3byxfh+LvJGMztxYdocTLDDnjTEePM4zqqsAC3U6oOXoEOvvEwjh+s2ryA9owy/kiTuUMcpgeaKTUYyMS4Yjk2PCCsBO7wa296dopA+T7Y0PEBQlp1Kh3aTDNEknqHAVj1dtwpN0SRxfbOHx86cBAFVlwLo1NrZ3Mb9M34+qK8hT2me+H0Gy678SRbAcEhr0e/B4zhutFlKGf9jb2MawR+XVQaRRrRZkgVUEdVKiJAwmj8D5dny+BmOobUIIV9E4HifoDRlFVyg88cwzAICXPvcyLnKV3PKxRdz9ESkk3/nr72Jvh9ZjJfBQgASvLM4j3qcQ5JkTKSYcljjYG2A4ovYfZCMc7NPh3r23hRbzqXn+tNLR8yJkvC/TVMKms1+WI5Mj4bW/nwNmwOEzqRAUXHZSIeJS5FE/QfH4iTGo8e9Gvof9gvdqqYNgndIE4jR3xlkkPFfRtN/dQ5+BNIWVyBjZXXgSh2xchuMxFoc0X+NujJyVT99YZPFsIR+p2gg43yaZHGI4pDWeZQNEHPo7f+kcBofU3katgvMXKMQaBhXkXLlTjdpY5PSFxVPLUEV8Kwygi1zGIIJiQkLlRw5FWQjf5QtqTI1tCnUXsCBTEMLc5Mjy2edQ+qFD2FfQEHyOe3LKBZgkKcCXeDOqI+UadS1S1EPax5mSrmILUsILCzRmbxoWzjPkhQIjpEvXsNZOya095TgarbVu3xhrYfjnYViFF8yu8AAWnH2Bm+sHyBno70u/+mVceor237Wbt3HjJoX6b95awzbfwWEItNpkFG482MHuLinOE5MjzTi0Zw1GRdi23sJ9rkSrVqv4yq/8KgDg9OlT8Plu1ufPYMLQF6P4AIdDMkAzMUTCnHuDeB/mISSwZUirlFJKKaWUUkr52Ms/uIfHWos2YwMsLi66BOannnoKL7/8MgDg6tWrTnu9f/8+DjkxtN1uO63c930cP05Jn1TNlLtnPopkWjitTwnpEtlyM61OEnZq3QkhKeENAGAQssfJn6JmQ2lzhKvJwi+qk6R0loe11mXiVysRLHs5jIVz2WtNlRYAIHUGj/tI+ASzl4YIH/ALiG6bYpch7ENfYqnBHEVBgJwZbotEYwCoVmuO9Vf6VagiA9uTSAfkVblz7R30hxQSCD2DpeNksamw6ZITAygIDvlpkRL8PwCTTxAPaX5NMkDA7ONeZQ7JjEA8QgIBW0faGFcdEccTNFrUl1qjjhonam5sbSJm66vSqGKL4feHqcXq4xRmUlbAz8gC0Yd76O1QiGRwfw37m/S5kaaYY6yeXPrwuXLOg0RSVPg1mxgqGqetYQ/KZ0+htNhN+jP1DwD2N7tIckpqrdQayJeF62/N0hwGqoqLDGy42F5FPKAEPhV6WF4mN/GFS2ewvEzWV+PcOXT3ad4areNoMk+TshLxkPAysrT/Y2Cf06RyxcfH3lYXmkOjJ04fw1KdvArD/iH6h+QFOjlDHy92AvjsBYCdVgpqY3DI3jlVqeHp58hDefZ4BeneGgDg2p338aPvv0nfj0eYZ89l4CmHHRSPJ7jLCeobm30Xwk21QW64WMH6DhdqP46RrTMoX34kJGvgLGf6k8bnKzP0MbMWCa+TTFjkHBa2wmLMeEeBtgg4bJMcHjo8sFAKjPhsGBoBy5b83Q/uwee56MNgzAdLJ8+wsc5UDXEGzWEPbYGYvTfVWtWdbYEvXXg39Gqw++zhURLVaLawnZASlQbts7Bax1xO4SqdxJiwl+iwN0DvkPbcaBxiv09eoKt3bzug1RMrx3H68csAgIkwEGOaBxVW0GLclah6DCJkoDmRowhvkUenCJ/nU44tA1c4IYSGtZx4DA3pPwLjfZ67aHuSpSjijJk27h6SUsCPGDDQk1DF+ZTlSHnsTZzC6il+WTGf2lduXcATkHzHhEHkqhi11i5dwD8SDpNSuoIZIYSrCvaldBXIs4iQxvF5HYwTnPJoThfnWnjiHO3mdi3C6gkqdHj+8hO4yvQ7Ozt34AdcrBJXoUd01nYzgQOO3MTj8ZFkZg3F4IGPX7iIM8fp+ZFUkExBpFWOjCss42QPwwmt60EywIgTzq00jlPsp8lHzrK1dkry+P9RrAvxWJdv8xu/8RvugP70pz+N06fJBb+wsID1dTqIn3zySQcMqI/krfx4u4pn1mq1Iy7MhzuwTA4HBGalhSmwqIRx6Ju+EFDu8hWwfFBmkA7USh7JP9FKTgGuQCXZxXdMAYglAGOmh0jxLmmnxQMCU70mSS364ynRZxjNFu4BaKyOjoXOC+RR7TauzvWRsvppfFjnmsg2qedIE3ajKx97Q1p01268jvGEQjuDwQbmFmgez55/AcdPUilvanzHS2SEgGSFNhnFONwjV6hMR/CGzJm05COqzwbMF1aqUK6KTiEvDqM0cwjcENKFZra7e/jRdQJnW1xexOvfJ6iDYydOw0yYY6g7wpBB+dSoh2BEG1XkE0RcojNJAY+52LxaCMXrIumPICrM2dTsYLxDykOrUXdgd5EHtPTsQGDDgUWPQ2OV2INfYxiGZITJgPbFSv0Uzp4nHqXVUz4GXUY/lkDIHGEXIoUqfw5VgsUFytkQfuQ4hybxGBkrv0LA5YvF47EDNfMDhUaHlIqoXkWP+afiCdDr0riFoUKzPjuX1t3t0YcgDQqFRymJ4j6SgxTf+ca3AADf+vqryDlUEE9SJByek8q454whXA5EnmsY3uDaCGSmyEETsGz2WCGQ2aKySMPooopGuM9GC+SsFGkxey4dANQ8gTSn54TWICwUSAXXzt6gh/k2hwU9Dy2unBKwGCXTHKciHHL/2jrqDNLXqVXR5OeIPEevR8ZEaqYAeUIKjBnAcKndwpMMKnd8uYlWgwa6tbCAYUxEouNB4i7vh4mxORSHFZRSkGJaOVUJOGReayBaoL140BsCI1LM93b7SIbUrmi5jWMMtDoQOQ45L6gNDylXBk1ECsPVkMKk8GXBbwb4xfWgE+Sa2hOFNVhZhISmJfRCGOARCGB9aCQ8fj4Mcl18Fk5ZNsYgL/gUjYbktmVIHaq379kCVw9e4DlYBa3gcnJC5U3TFzSguJ2VKPwwtyR/RSnhFBXJbQJATAHZ7Hxh7WbF3aPCC9BepBSApbkGett0N2+urePqDQppbe/sYu8BhdPHo21In0O1fhWLLYY3GE9cBVZurMv7hAGef4aQmZ9/5jlHN5mPx5C8v2SYYzwmg2+SHUCFXGUbDxAzFICVBuIh8AJlSKuUUkoppZRSSvnYi/hZeXBKKaWUUkoppZRS/mOV0sNTSimllFJKKaV87KVUeEoppZRSSimllI+9lApPKaWUUkoppZTysZdS4SmllFJKKaWUUj72Uio8pZRSSimllFLKx15KhaeUUkoppZRSSvnYS6nwlFJKKaWUUkopH3spFZ5SSimllFJKKeVjL6XCU0oppZRSSimlfOylVHhKKaWUUkoppZSPvZQKTymllFJKKaWU8rGXUuEppZRSSimllFI+9lIqPKWUUkoppZRSysdeSoWnlFJKKaWUUkr52Eup8JRSSimllFJKKR978T7qH3/39/9ba4wGAFgL+FK5fxNCuD+Lz1LKD/3c9+jxCgLWWgCAMQYW9FlbCyGl+93iO0efaa2llwPwfA/tdgcA0Gq1MBqNAADD4RB5ntF3PA9RVAEA/G//078QM4yBneE7/zHLQ/t4c/22VTx1UgFCGPosBTw1Hf8Pzamkz0pIKPvRr6D5eljrDKyl9xpr3Jxaa2FM8VmCvwJjDIyhvywvnv/IBoTViq3V6/QMY9Dv9+kZWk+boRQUrzUI4dZyGCjkJgUA5HkOa3xutoQStKasyFCvNwAAq2fO4f6DXQCA54d4/MnLAIBasw0/qtLPPR/1WtW92+PBb7ZaiKIIAKCUguKf/w//zX/90Dn8X/7lb9mM++OHAaTwuCvK9VMIAY/n2fOAiU75/QI1P6B/sAq5KfaKRBT63EcgERMAQKxH8ITPYyiRZvR95SlYy2NqJKzO6aONUWyjLDHI6bWIojo8j8b8v/9nf/LQPv6vf/yqrUqa81atilpEbQ59C4/nS1oBJeiZAoCUvHZMiqvvvwMAWFpcwKkz57ltPpSg341HXXz1q/8HAOBzn/sFPPHE8wCANDMAj5sQwi1ZIaZHQzru4a+//scAgE9+9vMw3Ib1O7dx7PgJAMBv/+qXH9rHf/G//482z6mPQsKdPgIAjrwPvCeUVG5f0r6hf7baoDibhRAIwhAA4EchwOtcSOHWmPI8d9YCFnlOcyfFdN/nmYbmPWePNMfzfYQhrdv/+fc+eq2eWj3rOhFPYtSqNQDA5cuXcfz4MWpj4Lu2T+IJhnyOj8cjZLzWKtXA7VcpPYRhldvrQetizjV4eUEp6foahuFPvD8mkxTDUQwA2O0eoDeg9zaabRx2dwAA7771vYfO4b/6i7+xrTq1R0lA59QXrQ2CgNZsrV5DPaR7qO6HMPzUOE1hQWNcUdNz01rr9lmCHLZY41ZBStrreZ6787RSqbj7D9a6S8waQPDZIKX60JjU+Yx8cqn20D6+/sN37fPPXuI2GAhbqAo5IKfntWafyWAcY29/AAB46613cOvqFQBAw2q0efwjnUAIGqurm9t44+ZtAIBpdPDUc88CAH7ty1/G4cEBAKDbPUSnMwcAuPb+B0hG9PzDwy6ybMJjkuCwR9/PrUbA5+v/+a/+9U/s40cqPBUvOLKpJDR/NtZ+6HIspFBYis/F4tUQ7tAHaJMBgOGJ//HfJZXoyElQvMIYdLtd7vSh27TGGljeHDaZwA76H9Wtf3QiPvT/9sNzVvz5Y3Mq3aUiUOxKgb8/xyRTJfbvKT4/QZ08+kzAOgUMVhx5joCUszkgo0rFbez8yAEHa3HkRHGfpZTwWQF45pnLiBNaL9euXkOesjIIAVUofb6HJx6/AAB48YVP48++8U0AwGiSuedEUQThkZLgqanSrZR0ilsQBKhWq65/jyR+BitpvafQUILe63sB4PEBJARCv8J9tO5gMnoC6xd7TQGaFU+hkBbPFxqjbEjPNxn8ou9GIk0Tar+pw0OTvmNHMB79XFuDXNNeH2cTVAO65Lyah9FoPHMXI1/BVzyGfoggoM+hZ+DxWlBCQh3R8RXfyjrPYTPqTb1WhQx4nLVAyL871hppRmPoV2rweO6U1PCULUYHlucrN5lTDifpECaj/o4O9zAa0ViNdu5iZ7jJrfnyQ/toLVjToQtb8Ls0jhiRUkzXMKb7zFqLQh2TUkAUSqCQdPOCdqLHcwchPvS7SvHvKn9qWGgDY3N+03TPWRgovmijKII8Yux+lJy9cBlxTHNeq1Twn//OPwUA/NIvfRnLywsAAN+Tbp+nSYqDQ7qw1u+tY3OLxtLzLMDnQhiFaLXp4ut0FlGttfg5PiTfIVmSIuf7pl6vo86KFt1fPDZWYDgkhWdrew9rd+8BAB5sbuEH3/vuTP0DgEAoSFZIfeU5pduXEoFPYxZICY+nQQlAFEY7LATPvwTcPAsrnFKvQh/So7WZpRp5znOIqRGXZZmbW33EsLNWwPKaBXJUivNGSuRHvvcwsdbCU6weWA3JFoEx1ilsubEY8Vxfu34DW5s97lcAKUnx6Hb3sHZvnfqlU7AuhgRAlc8qrQ1a3F9pJQqbylcKfV4b4/EAe9tbAIC93W14Pg1utRo54zyNU1RZqftpUoa0SimllFJKKaWUj718pIdHCOEMdN/3IDVryj9NUzxiUAv+H33+sWeyZiqPfOdD75VqarEYA82eHG1zGEy9EM5KtgJWHwmHYTZr5B+LeL6PnxzSgrPo5BGPylHvioQoHAUfEvpOEQfI6T+ArZeDaG//AAAgAElEQVSp5WFN8csSPyn6Rp4lnmshXBiBwlyzRRt933censKbcqShH/6T2+755D24/NTTqNdpG4wOD7C9uQcA8KQHyRZOoxXhqSfIvbu8MA+f40Zzcw1EEYUSjoYEpVJQampLyCNhW2dBW3vUiH+oxOjBsBcC0ofmsQxEBSLU3OYK4i3ql1IZ1HwxQB5Sj7wf2qbO8pSQiA3N28TkiBO23LIxqhG9q+FVoEK2YOFDb5OHRzUThD5Z2hkCjECe12q1irZHPxfKnyHgOhXPJFCFd0hNx8oIb+rBFfQfQFZxMYS5SZCwJeyHFcjinLAaAVukNkuguL+NQMDPKSSQjoeYJOSxyScxkjFZraNxDzH/vNvdw846ueA/MCnW1+4AAOKDHZxebs3eSQtM3SvAUf9rEUJSVriwlIWF20LGkrsAtMZQeN+lguI1KSScBe55wXR8dAZo9tph+jIpBYyld+ncTMdNSLf+AQE5o0dyv9tFu0Vr5Ld/+7fw27/1m/weiTylNSjhOe+8UgorS8sAgLl2B2dXVwEAe7s7GI7I8xpWAoxi8sxsbm6i3aZ+Ly4uoMnvyoIESUxhjt7hIUZ9Cn+EQYCMPR7S89zi6XQqWFl+BgAQx4+jGv7YufERkkwSSHZDyCiC4riaFygXwhWwHwrhF15DXwj47LmEsG6N/z/svVmzZcd1JvZl5p7OeOex5hEooDASJCiQEsmmBkKyJLJbLanZbrvd7XaEww/tcNgRfvOD/4D94Dfb3R3hsNUMSuq2Q22SLQ4imwRIgCigMFUVarxVdavufOY9ZqYf1tq5zwWBqlOkZEUw7nrBxa1z99lD7syV37e+b/m+7xiUTBoUvJ5leQ5dVPNp+RiKonBznhDCsSlCSCguJdHGIk7pnuRGQ/K4xkr7oddYFHnFwGjjxlSapBA8Bm/euoM33nobALCz10Fnl56RkhGGMbM7RqHwCMnpBT6GHh1nLqjhE4dPAgDaWqKpqGTg5rWbkHz87a1NbGwSqtPrdLC5SehfksSIwPNcZpEz8prnOYaDwQOv64EJT5ymFSOQ5xWUbExFc3zoRXAvrdpfE1I+nCAI3MMpBz1ACVL5GQ0Lq10xhzumtXDwFS0Y1v21xzx9obU7zi8a9iNWpI+jIsYpoQ//7SPTF3/N4Xlwg0gp4RIMISraRkqx73m5xVvQolH+XE7Ww34PN65fAwDcvX0Hgx69TGEtwrGTJwAAZx47i3qDIEZdFPuS23GmqZxqjBAwnCdIM2m6g33UlxBjdNn4z/vuhwfFk7lSHp547DEAwO3z53BVXQUA+H7NvfBRTaLVpJc2jUdIefKdas0AjmKQ8Jm/l8rbNwbLn33f33euk1J2AGAyC8mZiueHcNiwscgTfj4A7nywQ+c8YzHdoslOSABc4+YriZxrDlJrMOI6n1GeIcvpmGkyQGSJQlB+C/UWfT4wdWyP6FpqdR/DG7zJqFlE8wRhB9LAY/psVAwg/MkXkrUr7+DJZ1+k8/cVgrIgSQYQ5Y/SOhpDGOmoriQG8rxM/DzIlBY8MxxgxFTX5u0byPqUmF198xVsXnmfPi+AdERwfB4PkSeUCOXpALagZ93v93DnMo13JD30t6nmQ496COaDia8RGIPVJSWdACU21r1nApbfS6ONq+cRUlZ/a7QbP8pTsPx886xAUCMao8gLSFXSZxZ5yknv2NyshKrqgmy10Hq+72htKSXMhG9jKBWeOX8eAPD8s8+6OhNjDOp1uk9xYjDixbfVbKOsv/M8D/MLCwCA+fl5GE5O8yLDbqcDALh9+z62NugZ7u72sLzCn5+dQVaUJRdAnxOePApgZbUZLt/7IAyhuXYvihRWlhcnuj6AkgeP9/xpkSEoa2yyHJ6mny1MVQMmLIQpN/mAZ3lzJgVyroPLjKYaLQBxkSLjsZxnBQQv00IKeF6V5JTPvyiKqv4V1m0yrLVIeY1Ni9zN+5NEmmZuvja2qhcrCg1PUrJx8eI7+PrX/wwAENbqQFEm3T4MX7swBirjWkhPwXAtUGthAXMrqwCAtudht0/P663v/RBT07xm6BT9AT33Xq+DNKV3McsSaMM1PNp3+YS1D59TDyitgziIgziIgziIg/iljwciPIB1Wb41hiBBUHW2+BBFUP53XI314X8HCJYrd7ye5yFJEvf7cbh/fEdRqgvEh1GTMWjbqb0ehSd4QHwUugOwymxMTfZRn/+wyuxvG+GRyjqKZR/1IkSJnP8swuOKRC18R4EobDCs+MPv/wDvvU2V+Ddv3sAuV9bPz8/i2InDAIBbN87i+edJCXP02Gm44TZeTCwqhEdDVGiexCNRPpOE29UqBcFjsNfvuWLOxbkZ2GOkuMkLiZx3NZCZQ3XiQYqCEYPtrS0ErMw62Z6GV6oSPd/ByqYoELKCxvO8fefwKHyP5yvETAkYZPCYSuslA0exiVGBmCHd9pEGrEe7u8IKpH36OQoUfN6RJnmGbkK/j3ODlK/LLxqw+TQA4N0rGzj/a7wDlwJJTDuulla4d4vUakuPF5Dld+kcMe+cM6tQ2MkRnh9/7xs4epTQwZXZNkIwZWNTSN69W50iL2jOMKmGzuh7t7fuoXfvJgDg2lsGIdMYRb8LzYXKNzd3sbVOBZR/euVdxCM65iee+wSee45QiZ++fRHdbYLRD89NYXWGoHYvGaKuiWLxsi4WpwjR0mHhFKKThYDbaJtKnGH3CQkMSlmPFFyIT/8AiwqxcS+I1G4kWUinYjI6h7QluhhUCjtr3feNF7xCCNiSUoZxNBnwEVTxx8SxIyv47EuE0k216zCWqRZpXQF7b28bt2/fAQAsLCzh1CkSBDQaLYc2JYMeRqzKSfIU88uk8Dr32Bms3SV0bbfbA7M9MJCEfAKQIsGIi2k7ezuVKEIQygoAge87RVoQBIhHD6ZCxsMqgZxnLWkq5FoKC1Ouf4WB5vGb6cyVBfhCIucC/0KpfUXl5VgwVkOzks8YAaBEcCWsrVCd8pmQ0pU/DyrUp+NU5zO+vk4SZuy91cZA5+WaJyEZbr137z5ur9FzVEEEj8em5/nQjEYbADKnYzXgI1IsFFg9hqJF79Z9D9jqE8L6ztvvgqdOLK/MoVan/8mz2IknCp058YEQobufQoWo1WoPvK4HJjzWAvkY11ouUqb8R/oUBF+okso9tDzPq8ndk47DNFkK5SSmlSLCAkj5xC2kg9+UktWyYKxTTfjGYFij40ylEpmu6DH7CJPsx1/7R1NSH5fMjMvq99Ntf/uhlNp3ntXPoiyV+hlVVFmfMxr28M7FNwEA63fW8cHlDwAAb73xFu6uUfJzb3ML/YSVGVGAhVkayFP17+LZZ2gh+S//+X+N049RHYw2xtUEWGsraTEqdYox5udLFB/wN+OqBs2U6a2ba7h1k+Bsq7VT/UhPQPHrkRUZRqzK2dvpu+RRC+DevXU6uPLw2DmSqM+0Z1EKZYwQLhEScr9qRsrJr0/7BhlT8HmhAVZUeZ4HX1HSNdiOoROaFFr+AoqkpJwK5EzNCAlITpYKo2ByToSNBz9j+Xw6h6jgY25ZrL1L3yVsilvXadGvB48jk1xjMR9gyBCzEMCAlW6ZDmCLdOJrvHn5bbxz4ScAgKlIQSb0vXrUR8Y0U5b2kaV0I2xqYHnF29pcx9bGXQBA0L+DGo8plWcQLLHv9VN0uzSx3lpbQ5eTwNWTT+I/+9XfAAB896dv4N+/egEA8NL5x3FoYZnuZ8Pi9CpZYnh1D0LRPUQjxCCe/Bqt0G5xEhZj0ndL4x+AtnDvh7QFPEsJpCg0ZOkKYA0Svs9QAVRA56PCAAXXNFgLiKJc/DR8VhFawCn16ByqOiK3GVV+ZR1RFDCYTOHzwiefxfFjRFV4HpxNgjHG0eFpmiKL6Xm+99br6PAm6tDho6jXKblOBkPcvUOL6d2NdawcOULH//RLOH6UnskhvegUb0WWubUkqoWYmaNnde2DbfT2KDG3Rrtr9ZRym7pWq4Xu7s5E1/fhsEJUdaVWUW0VWLLN9UJyXCkGi6woaSxb1UcKDV3WQcKrZOlSVCotm8FYXvTzws1hhamoSGUlVGkpISSYYaP19BHmG9/zHeQwDi6YMRsRWIFTp88AABrNKXgo6VAFzWo1IyVEeW6FgM/jdGplGSqiej1fSrRbtK4/+cRT7hqlKrC7R5sPUiXScYoih0VJX3ruuQtp3eby4+KA0jqIgziIgziIgziIX/p4IMJjxjLioigQj1E5TkFhDBwpUZjq92NqBKMtpCgLDQUUq03CMWMkwDoKwfOVU10ZXaE1wlpYn37/eG0KjGrhmoohnTneWAb6C8SH4T895n9QxjjCU+jC+RaMm8r9bdNZwIdRnUr9IgQcyjBOaQEV2eKpENNThIDcvnUXb731BgDg0uW3MT1FSM6pU0uQiqDEfreP+/coK7/VH2Ewou967OkfYnGF6KJWq4USu5ZCOHjdVPV2j3Tf9qnKHoAM7UN4eOzcX9/C+xffBQDMT/mosWKrXa+jFEXlpgafDa266CPw6btyZZEycnL16rvwQ3rmrXYdvqLPSyldoT2UhWZjPSXUIxXXh0UDXkaoyzCRwDShHE0lEDIac297B9ISZGy3POgBmx8uJ9DsuBMGDYSsJMmFQcRoVTsIgZiep95toACN89PHTuInr9IzL4oCT59/DgCwvTkE6hkfR8HyVtJojSSmY2YaThE2ScT9Hn7wjT+nY25fx1TASjQLV6ispIVXonB55em1c+cW7t0mX5VTyy1EvJP0FBzq1ywiDNlsrj9MYbj4spskCKcIEfBrLQwS+q6NzgAZzyU138fqEo1f49UwTHkOazSwPVib+Brt2HSJMRoDxjo6J0SCkBVkjdAiYE7ZGOOUWdoY5PzsCmSwmnbFWeIjZpVqLio/Fyvy6h1RnlO+Gm0cmqvHfvb90FE12hQozGQIz+rKkkNAizx383cQhDDsezS3tOqUvkWaossFyUJ6mJohr57QDzBgtDJOC8Qj+rnf7aLNorjADxDVGK30lfNoG41Gzu/q8NEjeIdNBYs8d2irVcqhaHmeoz/oT3R95TkLv5xDDVQ53yjPsR1CATrX7jOC14Z8TGmcCVVaaBHCI0uWokKEYIVTbwlo6JTVT9o4xVliDHJGgUIjAUP3ykgFHdD3ep4HaSbHN3Seo2Q7pRfgvbcJ9dzc3MaLn36JrkVbLC1S+cLc3BLK2Tuqh2ixQbAfBq5YPtdVWUzghxCl304ONENSjj3xwoso2Bftzq3LuH37qrv2UmxR5AX8gFkipZwmu8hyJPx+f1w8MOHxPM9BRFprB3ES9/mz9M3H0UDyQzRQyZ1mQjgFgiclmkHJv2knwS2KolIRGGBlhgbyrx0/grX7BENevLeHCKyUEHikhcRijK8cg3dHwyHu3dsAAPT7fXdtge9jwHUSRVE4WST53ZULauHuz4kTJzA7O/uR3/3/VzI0nswoWbkoS1FRWuNoJ010PNFHNTz5BMk3n3riCdRYovx//KsdMDOC6XbkjCWlt4zBkCatnd0h5heIex8Md3D/PtE/7alzFe0oqmclrYXg38uxerCHxcdRjh8XxlhorrvI4hEKhtenVlfQbNArEUrApjRxeFET1mNn1eMR7mwRRH5na69SmGmNDy6/BwAY9gd4/DGi8g4fOexqhIQUTi0nhXST7yQx5TXR6VFdzfbaFlaeYVotsEhYpbWz3cVCk1Qrg26MrTWaxBe9abSW6G8bvgK4rqIWRGjUOEkvJAb3KOFJBwa6yfUHAHyPoOfpRoCZWVpt3rm9huUT9PMwS5DpakOjWa0hoZwqZpKwRmDI9EN/6zam5umchQzcIupDlsps+BKuPmO6HUGukg6/5nlOHiw1kJc1NtaHKGsg8gKKXaY3N+/hwoW3AAAX33zL1a7EcYIRj41Q5WjU6D7k1kfGVJ2vaugNnX3jJBdZydJRVQZoA4SG5pVTsxJ+xm65FpWrrO/D9+ilE0ZBlA7SSR/GUAKcaQvBc/ZWEaCb8LXLOrKclbJCOpkxROW6bIxxGzspJYT7jMCkVQKB7yPn92YoJDyuFxuYAUJOQsJ6E0uHqVZrdn7J1cdJ5TmlXTwYOrXZsZOncOgIJZtRve5qpkajIVKm0oMwxOwMjcdmo+6sC5rNBu6skZ3AuxcvuhvearVcPQ+sxR4nS5NEkSdUZAhACOXqeaB8GF2WYlRjEBIwvMOSFo66TKWB1mUto0ThaoEylIYLQgi3Po3lu9DGQpe1QLZ6PkWhYdlIUgS+M1K12uyzynj4NeawJSWnJP7dN/9fAKTMevw8rQcFAMEJtfBCmDLZ82qo1+hZNJpNJPx8y2OV55lzzaCxBvDZdDFqAH6ZCflIGdXo7GzA5/qfqB7BY3pWKoWMx4PJNUz+4Hq6A0rrIA7iIA7iIA7iIH7p46FFy2laFeQpzqogK48UPdYXCda6rJAKZUta50OtKEoayGgHeRpTmRD6nkXIuyxfKGeGZQuLMwyVzTYDfLBK6Ert/j13CuPePpOERoU4jYYj7HDx2tqN27h6heA0rbXjWqSQ6DAEO94qwFrrdpKDQQ85NxQ6c/o0PvnJTwIA2u02Zmbo/Mcps78u36CPCymqAlk11r9Fisqav7JwA/abQUoUvDvxpMazTz8LAPjxidN4/22iOvrb67CCxkm91sT0NCE8Z48tYHGBdumBTDHobfMxtTM7o74vovymquZYwD2Xv7ZwBdGadmkAfFnDoRWi7NrNBrp97uOyswdTtiqYEphfJZQuaCpEEZteCbjCQWENclYR3Lh+1flILSzMYmqGxqknq744EvKRED7l5xiyD8XezhDnFCE5fdVDpuh7R0kfA0koTSsKsLnJu9YpiSdOkLlb4AFxQr9vhg0EAau0NiR27vC1ZDlSPn/ptdBkKqLdaOPGxiUAwNxJHwHTf7qIK9O01CKwdH9qodrXU+xhsTC/AsMKrzy3KHsCGa3djt0I4/zAhKx8pJpRANUkBEakWWWaZjUkF3F2d/fQ2aXn6ysfjQY9lzMnTuO1V16lW9WaQo2Vd/3BELt79K7XpkOE/F3DNEXM/kVT9XqlopowPqo9S56m0FyVPogMAj79hgUMoxgFAM0UXqoNBD8XbQQCpvACaSCZNo1GG9ja5rYgJ87B8ufH50g7Tv+Pzd/JaIiMv9cPAmphMkF4nk+9yQCM4h7yjI5frzeQakaq+rEb+6bQzmcmG8WO3lKQMPyuzC3OozlL86YVFWKXjPro7BB9DiExN0fvRGt6Bl5Q9o4DnjhPYoJ76+u4fInG787OjpsPAi/AVqc70fUBwO21NdeDLqoFbn3ylHKoURRFbs0IfM/1fzNFwQwAkIocjYCo70ZtBrtdelYCAtaUbZMK54Hj+Z57XkWRouAxqDwfoU/HiZRHJmYAhsMuOj26V7Ozc48033he4NZUY6nPGgD0ugP0mTZK8hwiZKrOq9D5whYY5aywSODmBggBaSpvnwJ8jcJU66sUYGEhlK8g2aSxsBZCl8os4ZgnIYRDJYWoTAg/9roe9I9CVLUr1lqUzQuNGOu1JAWELavUxwlq6STP4+67SnkV9TOm1oGUTqVlBFx/l0D5CPlFbUQC56bZ4CyQ6N0c8Z9Wrrj5KN8nqXtYCFSKiO//4PuI+EZ+51vfxbvvEkXR7/eRsXlSHI+wxxLshYUFN8CFEMhYNtzrd7C6SkqC//CDH+AnPyHlyRe+8AU89xzVQKysrOyT4f9N0lvjdTv76nkgIB6mvrAavqoWnvLaDSSWDx0DAIShRVGwO+1whMGI7tXUtEDkYOywqqw3GYQoJ9AxvvrD5z3hPRmnsR50H93Ubi00TxbG5KjXaEwdPXIEnR4lDL1W20Htq0eOoc5N7DZ395xixZNw484Y6y5D+Ao7LG3u7m3j0GFWrQjlJJ3j9OkkYSOLmZO0YIRrObbY9O/kZ48jySmBmZ4NoVOu8ZDWSeZ7uwnSIf9tUyFgisoXGmFOi/72HYVkxIlQq+F6Fwlj4Nd5km33sHyOjhnNeW4iU14DgmepVFloriEIfA+t+uSUlrECnT1aeHrdNsxSaRVt3X2TsITtg5RH5QIQhT7aAX3eM6iUIaKSYFttUDbuhPAxw9f4wvOfwBtvUePRT33yRVx6l9xjh4MO1jeJYlucOgLFFEuS7DmHar/ehCw3ghOEspXEuzDajXyb5+gN6b15tz/ElKX7ECQJFM8xYRg5WN8KQPisoPV8V/+Ypwk2btJzzI3F/DxRyp3RACknEL7xSYUFno/LTacuXBKQFbmTzxugGrcPCaEC7PVoQex0ujh5kt6nAB6SESdanuckxsNBHylbkwwHffS6lPA0AoVajZvHNkI0uR7NA9zCmudFORQghMUWP6tRnGBmjsZCGISupOCLv/5FtNt0Phd++gY6TGP5no9ud/L+i5v3tuBxcVoQeBWdL6RbuH3Pr6hUURnpmrxAGNJ1Tc004LOazAw1XvkR2XyMRtWmtN4IUWPDRk9kiEL6h+mZNg4foTVmaXEB09xfrN1oImFa59U338J7F2kst1rtqh72K7/10Gv0PM9te5MkdeBFp9PHlcsEBMRJ4mohtKjWCYsCCasqpbRVPSuEqwvKi9wl3lmaubnE8xV8LmdptppQrPYSSiEv65dM5TidZZlLCBUIbHhQHFBaB3EQB3EQB3EQB/FLHw/cfqVp5rJXJSUwZpVd+isQpFRSBWJfNlcUZQFcVYAqZNXr2Gjt6K3x4uck14gZvqr5BklKPx89eRRLbFaUphnu3CDfjaHVCFSFROERVFoSAnsMo1qtsbNNtMuly5ddBhqGYVXgBuuKTaenp905+77vEJ4sT5wBku/7+OAD8q7Z2dnB7dtkfPa5z30Op0+T4VbECqC/qfhZJEH8zM8fhzUIYdHv0j35t//mz/CX//4bAIBWs4Yz7DvjKYGCe7YMhn2UKN/M7DRqbBsf1Wvo9QgdWlu7jlUuWvQ84cy06Dx/Vin2KPGgouV9RdCqpAYKdAa0G1lYPoSpOaK38jTHgHd9c8tLMDyu1+5vVX5vAm53EXgK0qF9CmCEMon7rvhTCuEAUM/3HonKLIwH2aLx9eRn5/Hej8ijBBc8HDlOO725Vh/bCY3leruFuVlWS2UDRANCdZYWDkGpBh80g0noXvVUB9MzdB9aU1OYbtPO887WTSw+SWN55kiIWoM7HCNFIbg3kvAQMMrhy9R1SobUzjtjkli/exeaTQXTJBl7XtoZ8YnxYlpb7fSUF6Dd4LmhN0DBlLKUFgUjcjt7u0j4nbbKx/MvfIru5/nziBlxOHv6BBrsBbPT3cUOzw3DbAkFn0N/OMCAewWleeFooElivNuJVNIhVEZ6zp/s5MIUPG7zkccJptqEOlsZIC3fFVsZD+YALE/IhfHR79G1z7Q9PHeWkI71nSHucwFrr5iC5cJQEUUOMdN54VQ0vue5+d5a6+7nwyIe9RyltdvpIeJC73Cv6469sbmFK1eu0HfqAvUGfWZnexsbGyQUefLcKTx+lnot6UIj5z5ZotFEWHoOtaYQjypVTll+obMMu3wcIQRmF4hin12Yx2c/9zkAhHj85JVXAACbm5vOb26S8GTkqof73dghG61GA+Ws1e0OsNcjlC4rctT4nNM4gWYE5o/+7u/g5BGi4Xq9EWoMqf3krbfd+Rw+sohjxwkhfursUZw4SojdocNLOH3mKJ2PsAiY/s1ig9cvkOr0/Qvvob9Hc1hvt1sNvAnCmKoMQmvjiskFFL773e8DIOPShSWaewJYKJ7zBp0Otu4ROh4EARr8fKMoGmuNIZHyO9fr9tDje+V7EgvzNPc0wsAhY2mSwStLErR2JpZGFDCloaaxSLOqQPqj4oEJT7MRYsQDTRuFRhS4kyoXfa01DGvrCm0r504Bx68LwLWm13lWyaKBscag1eJhhXAvxzDXaJTSuvYcshWSweVbGyhadCPTbsf1KrFj7pKThACwzVDo0sIi/uIv/oKv0YPXKOkK45KZ0WjkHqDneZW7rlKOV8zyhKXXQK1W29eU8+JFgs7HE6THHnvMHXOSeFQKbJzGGk8p9qcX+Jn/A4DRcIA//dq/BgB87Wt/glmGYFcOHXYLwChOnZGZNh4Ec8hbO3vocy+dxaUleNx/CFJS7xUAi4tHPuaM7Eeez0fFo9KBUkpIv3QqznBng+q2+onB1AxNQPcuX4diiXe/XyBo0IJ+//4eu59SoueUD7lxY0FK6ZQ4eRY7VZEEqSsAev6PotIqcoWCaZTassHTL1Nt1MaNu7hwgYzb+lsjsJocgahjZZF7Y/UF5A7db+03EYQ0NgUE0pgmmsXWNFpNWhz7mcaVG6Rssa09HD9Pf5uJ3I3ZILBV/ZLwUfCk49U0AqZdhFIYpZO7EBc6g2FjUW1z97OxBpoXXw/S9emRhYYtVR/SAlwPYQONlNVVRlrwXI2dfgflsv34U8/gy3//7wMAnnn+OZw7/wQA4MbVK87WQnmeq8+J0wxxTH8dx4lbAPLCwPcfbHa2L1SlXLJjm8JakKHVYmWkzNGcontem2ugzvOfFgIDTiaKwkDwnBprjZDHkjfVxtwsjWGdxRC8WZz3gTwjCkdrgYGlpE5ICeEqAISjPcqGmACZw5oJE4KiSKpxgQJr3HBVKh+7O/T9r732uktsZmdmnNVHnhd44slzAICTJ46h1aJzbLdaiHgDaa1FzFSz73lotdv8vbmb9/MsR8b1d9Za15es2WqhxpvLl156CdOsb//Od76NPe4FOEnsbu05ej7PU6c43fO7BAzQxbtk1hrhxg400J4iiu3qpRt4+yeUdP3ul34Hpw5RMvN6cBEzy5Skzc01MezQvBn5xxzdMz/TRI3tCka9Lm7fIQr96pU7+NHrVIpx89ZdGK6xKfRDShc+FFSrQ/ek3+9him0bfvXzX0CP79W923fBOAP63jaSuGy6O3TzhOd5zpHSJRkAACAASURBVK7F8zw0eQNcq9WIEgMwHA6R8t8GSmK4RdcSRgHA41enuVNPFloDvMGGsk75aox+qH3CAaV1EAdxEAdxEAdxEL/08cAt5txM3Vmfa1v1ATK6MgnUWjtfFyUIqgfKwjzeiUECpaGV8t3nDbQzDTLGALzzybVF2R1GQ+PoImXEZ8+eghHc0wgFhgyJwTrEm07iEXqGFEXhqCullCvKbbVabveltXa78dFo5OiqWq02ViFemd9V9Bcds6SsxlVdeZ47tGc4HOLwYUKujh496qiO8R4pv0h/Lo/LkwF+FiUzCVRGWfQldHxjIfhZXLt6A3/5nb8CAGSFwcohsnjXtupIDK2dz4QQFn5Q+pl7SDO6P8N+Al/13X0YcHHiwvwqpCwVFT9//i0+9N8HhZTS7XiMBXZ5J3Pn/hbmVwgmVl4dextsSe9FuHP9FgDq1qxU6d9h4JeogjDOY0Jb7fxh8jxDUFJdUO49GO+rNUloIZGjHI85GjP0XWfmp9Hf4/YKGxLDDdpZbfXX0Q6Y6lo8DS8o4WCLTq/sUZShVqdza0UNbN0j6vLNq1exdofM9M5+chaWrzfNR7CswBJm7NzHqD3Pl7C8CzXwScU5YYShQimyENDIMtrFyfHvKyS80tdIW8DwnCE0UqYEci9Awv4dhSwQs+9QZzhAi1WSf/DVr+LTv/pZuvZmDXVGrzfvrWN1ld7FYXfLjZO8MPvfFVv6h3loNJoTXyMUUMpQLCwEIxGn5ySCgs7h9o1NDBkBXZltwme0JdGp820JAee3UlPKIYpZMoLid9er1zFyijaNYsQ9yLINoB3xz5UKiGiMsgBXuX6GNDdPRr/agjqgA0CeGayzl1lvOHL9s9Zu3UKHVVHdTtft+s+cOYNPPEe99xbmphGyuVytFqBeZyrVGqfeFNY4dCgIAnghXdMgzpCWvZ8AbPF73NnZRZsRIc/zMMdU16defBHDZHJKq8hSaEYflSehUa6RBSyvaNZYKEZ4ZqamMLNA6GkAAY/ng837G3jrjdcBAM+dexYDpvyfOH3U9Y3MsxEaPN7v3bmJTzz3GABgdqqNtWs3AADrd27jxg0qlbi6tokb7E+XQaJ0WC104YRGk8Tubgc/+uGP6bpMjmlGeILaFMQd8lO7m2n07hC6bNIMKdOeWlh4rK4SUYjCMksEAVP2ODPGra9xPHL+OZGS6DGSHdUiBPzeN4IIBY/3PM9huYjaau1Q9qCqGPjYeGDCU+QFGizvM7pSbBlTwffLS4suYUjTbJ8zc3lBxVhZTZ4XDgLUJq84+DFTJAmqDAcA5QPnzp4CAKwsL6LYJbirl0tXexF5AoYhZt8PKmfbCSKJE6zdpMXs1KlT+Gf/9D+na7QSeV5eVyV129nZwfo6PfBGo4GglM0V2sm3e72uky4HQeAg2H6/717Qu3fvuvt2/vx53L9P11Wv113C02q1EASVHPSjmpZOEh+msfb/29hvKncBJxXd2tzG3bt0vYePHMbCItW4jEaD6lkb7WTtYRQ5ySaEcb/Ps8LxrkEUYGuLJsKV1ROOw//5qnYAYSpYU0rpZKKw1lGdVDtRqnU0NL8ajXbTUZH3bq1hhWnSmYaHTU1J2d27u7jLtGeajZDyQuwHgZu8gpqPIfdUGsZxNQY9D8orKQ8PHtM9ZMY5+TUWwgdA56bzXeQJQ9WygNemd2em6WHuCC2UZtPD3feoxm1jY4CTh4kCW5qZQ6dPvH6n38OSos1EJ0vxwa1rAIDtzQ1YhoyTfoEkpeP3TeIcfQsrEZRQtUTlGAzfbZLyInfNKCcJ3xMIOKmIlIUtjdWErBzXpIRlqlHoAgk/iyTx0JrjzwQhdkc01oRJkPB46Mcxjp8i07QXP/2Sqz2UQiDjJqTnnnwS/81/998CAP7H/+G/RzoiOsHCQnESGygBv6y/UgphY3JKy8KVzFAyxXNA3u1hmmX1izPTuM+L9F49hA3p9wYNaK6bssUIMfcUmwlr7nwCaVHwYm8B5OwmDb+GGTYBTTsjpLxgZ5lyybnRAqW9eG61Wzx0XkBP+G5GUYiglMtr7TaHvcHQ9TGbm5vHae7B1G63nYpqfn7ebZiLosD0FCVCQRC4RGzcSV9rjYLHSJpmLtEzRjtzwng0gs9zQyEFCp5/6426S1RPnz6Dbv/BtR/7Qho0uJat1WpgmpPoUZw4qq7X62OaFWHLqws4dIj7f83O4fJbpMZ65/olHD9NStfaTBubruYnwfUrJJ+HSfEP/5io1698+bedUezFH7+OLn9+c3cXd7eJLtzqDrDHYz+3EjYvadjJKTsA2N3bxJ27lFBtbW2iyfSilT4Ktm5ZSVNMcS2bNQaGa9lsLcTJZ58CALSXFxAndG+T/giDLm22wlYDU9M0J9lCY/0K1blu37gOjwdeUBTY5lyhW4vQTWm9z7MMinvZ6cK4MYsgeGiT2wNK6yAO4iAO4iAO4iB+6eOBCE+WFAiYpql5EhEX0j3+5GM4fYYURkuLSw55GAxih1roQmPAFfT9OEbGmXWWZhgx4jHoDx2KopRyOwBh4CizlcPL+NTzz9DvlYCtU9a8PsyQ8i468gxC3jkHYbSv39XDIhmN8NPXXgNARXDlbkOqin5qNisUoNls4v333wcArK6u4ld+5VcAfEgBBIOdXdqhbW9vY3mZsvtGo+HO7caNG1haIjO4paUlR4PFcexaV3Q6HVfM3Gw23W5pvAj5byKq3Tpl93PsaXHmzGkMGVVLkhH6Q0IKTF44b4w4HmGGLd49XyJh8zJP+M5wS/nSUYdxHMMxAo/m3zZ2wnYfUuX8e2x1UCFEZZBprFOg1GohArY139lZx/079EocO7aK2Rn6+fraOoqUngm0RsboY7PRRK1J47HTHzoEq9AGBd+PeqPlUCCj1f7zfAQkUujAIaa5sBBs0KcAyJQRD9RgGQKeO95EwB447/xgDXc26NwOLy5jmtuhLM7Puc1RnCVYWiQ1iPCb2NkkxDHQPtIee7P41vWzyWyKOtN5tWgalqulZZCAEWlobRyKMkk0A4kGoxyRAuIR3fPYk/B5J+8LCeUxHaOtUwE1ZxYRM93W7cdAc4nvT4qC5yHpNXDmNBXFTk9NIy+9tUaZQ5CU5+PXPv8FAMBnPvMZ/Pi7/w/9XgkIrtBUEg6MHGUJpP8o76J0HmNFliNjZPrGbh8+36vZ9hR0qfIrcnT2aPdei+qOLlZWOnVQX0sIvhYlBSQjLFmewDDtr4Ry1NjhuSa8mL73fpwiM6ycsdYprOhMq9YIekK62egCggeAEtahva1GDSePE5pRb7QwN09zSpalrvVKGAl4XtkzTSDkVkNJnCJL6R7MzMw4alEqCZ+Rn9Fw4Ir6lbRoMVULLaCcgWWBPOeSiKHGxjqNcd+vIYknU6EBwNlzp7HMZqXkEUXH/+CDaxgxujI9PY05Vhutri7gzAkqBTC9HrbfpjYmo1vX8Ud/9M8BAHudHaytEdPQ63Vx6BDRbV/8/Ev44uepd1V/bwPXrlEROFSAjPtnFcJDyjTpnY0t7HTYny6IAM1tO+TkrXoA4N792w6pu3NnzfnhzK+sQg1Z6CAAxWsVogiyHEda4CivbVNHV7GxSajX7iBGc46uq7kwi/kFKq4PjIDfobXE39lGvaDxkO/0kElGba12KH6RF44ykhAQuvy9xcMwnIc4LReuQafyfOQM+/oqwBybdq0sL7ralWGcIOfqbIxRCHKsjkVK6SBJa+B+NlY7GssY7arsa7UI9YgGfpbl6PE4bi/O4cwxNtXa24MqHZ59Cd9/BLMzY1yidXttzcnS/ajh1sdmq+V47jzPcfIkyyW1xuuvv+6OVamxLHb36DjD4RC9Hj3M+fl595mZmRn38+7u7j4aq3RjTtPUuTpfv34d0wwBnjx50iVgH25y+ouEo8wA14BuNIpx/PhxvpYR4pgG+M7ulqshkIBTcQSBhz6bPzUaNed8GagAETffkp7EaEQvYlEULgmwkwuz9kUcx/vqph4Ga9KX0X98z4Pvl9RcjGFGiVinKzAc0Lgo0gE0j2udFrD8QtZqdYS86BdFn+BV0DhtTlPSt7y8UvWTGmsECKhHenYa1vXLCdUcwJREAQPFr3EtqCPOCDLupEP0uGZq5ckWbr9Kk+C7167j+XO06B9dWsGQ4ebdtTX02DCu0Ww7KrDQCeSI1ZmtFkZ8fGMDeCXNUHRRdgLUiYIQdG6e9B7JImJhuolBj8Z7px/DqzPV6VmEpXuw57uGpKeeeQnnn6PFIKo38EN2S77w5uv4T/7oqwCAE4cXce0aSaBt8yKOnKJr933f0SS9Xt8p6WAtZmfpPfv0i5/CtQtUvwZTYMhjNssL6HKxyaoarUlCesqpq5QnIS09uzhso8OqlZofot3kmoksxpCfy84wQb1Nm7DpwINfmgEKALw4xUUOXUq4IZwbsycMbFGWElgs1mncLs16ePUC1X+kfhs13uRprWHLxMKTE4/VPMtQsAQ7ikIEUVnvWEeTa3sKYx39r7V2c18YBqjVy3VCuc2hMVVT6qmpqbFvE660wvcD2LIWSUtnpyJEC8mQqeb+yNkkZGmKDz4gCrfXi5E9QmJ++MhRlIym1jl2dtiNu1bDM8/Q5jwKIwx5kyS1RsZrgIj7UEw/nW3P4pmzBBz8y3/1J5hiFdLv/+GX8elPfwIAMNOu4+b1ywCAe5v3YbgOp92eQY/poa1+D7e47GBnbw/Ko3uuFFzz2Hqttm+OfFjcunEDS0uU1FlToLNLc2E/T3CEQYdTzz+FSyyB7ysPXtmnzmpc+953AACxNNCcRIRGIiqdpeemMcNmrsO9DnJW89ogQMRrRt2XOHGaylmu304x7NJ4EBD7areqXnD2ocrXA0rrIA7iIA7iIA7iIH7p44HpkJKSDKgAHFo5hMOrBHnbrMDWParOnp9pueLLfq/nYOJ9BnBCIC/pGKWq4lipHIsh+PsAwJMCPhcDKwDlp6JAgdF7nD22ihZTAhcvvI0h745yY6DCRygiFMJ5xYzSFLY8Bytw7hx5czQaDUfHbG5uocO70DgfYRD33fW6rvFGu/s2NTXlEJ7BoCr0FUK4jFsphfl5gvq0Mdjh/j1RGGGRi4QLA1y7QUVk1lqc4136Lx6lNzv2degtFTJT000U3AMnTjLX4TZNE1d83u920OSdmbW+o4sKHSNgtE0KH4r9SgprEHI7h1qj5ZQNZAjy6LxWv9/ftwP9qH5qP6NsKw0DlUSrye0vIgPDSEWnv+vMsIoid2MziTMHYTfqLVhGCfKsgM8721GaY2FuyX2mMpqDg90B/5GMwHIBlLepaRuo8//01Mh1FC4KOGjbz7RDKFuLS0gK2s2+/8EVLHFvr3oYQnBR6/rGFtY36Z2eWVgomxfDGokoobGZ14AtHu+hCJEKRvj8wol4jPExZNVbVPcQ+pM/z+XDR3B/i/jNU0+cx6//5m8AALK0h7/6y28CALa3t/Abn/s7AIBfffkfwnj0+f/7T7+O/+1f/p8AgK/83T/Ap7742wCAfncH0ww6//rsMVy7RWjG3bt38dwzT/PxE0fDpEmKgmmg0yeO4cgKwe5CjxydZ2zVEqfIEkSPgChDCIiywN4qBGzSOEgL3GYEqR6OsODTM1JCwvLcGe/2cJ8FE/1agDarklq1yL01gSeQl/OrzlGCi7nxK7Wg0RAJoQ9LLYPVGt2gD/opZLtCUJwpIuy+XnsPilq95hDTVruOqMaeT8LDcFSixqNK6JKl7t3ygwCK+55JIfe1NSrnypIyAmh3HzBqDCGd2aeEheF1qO578GvcwiCWiB2LIJxS7NKVqygmFxNi/f6ma03TbNYxxzTN8WMtN9ffunXLUTA33r2K+5cJZfzcSy9gytD1PvbMs6hPE4p5/rnH8cdnCR06dHgZN27Q+7q7peExKnLi7BPo8vGHo9jRzrdvXcddHheeJyBcPb1AENLYCcPwkRDl7t42JK8NyWjg+gTGewlivll26TBiRqVu9YcYFfQZqSy6fbo//dEQEReTH15cgWJF3t5whEvXaT0b9nrweYyrWojGkN6DIwXQ4H5bvicwLi8eX0dLRN9au0/k81Hx4BqeLMOhFaKNnjr/JI4foYRnNOo5583127dgS6fOwrhFP4oi9+VSWIChRM8PIDgZMLZq3JllmfvZ6Mq9OYoixFxBb/MY6zepmrvT6SMMaaFq1BUsN0/rDYeYnm0/8KLHw1iDo8wtK0+5PlxhFOJ73yc4+9vf/raDXb/0pS8hYgnrcFgttNQstZTnS6cGyLJs32ecE7UQ7qUvisJV9//v/+Jf4MJFggk9z8Mf/uEfAgBefvllLHIt0MbGpqPVyjqjny+qWhb6ufp9SVeNRn0YWzapg1OPDIcDpCk3ekxjWJ4AktRzfxuElRljuxkgLesMvBCLyzSWarWGMwz7eeFGrfW+QV/GeILz4YaNbgI3hTMjk6pAVKcJv9EIIRQb7tk+dpjeivMcTZa21utN3NskFU8Sp67fUK3WwNz8En+XcOOanHSrmdVOQr2V15hrWP5bCwMf/G5ZjKnSBIRgii2N4QlusKcC1Jv08/ZuD9vMlwusYWqKJmvh+S4J1SaHycraOoGiS/eq3mrDsN+X9g2Ua5wawGOoXQoJA/quQQzEj2A8eOLJF3CIz/n5l34Nx0+fBQCsvf82Ll0lqnFxaRXHz30GAPD1P/93OHrsOABg/c4adu/QBHrn5gfY6hJtcPnKZSzO0fM6d/oEwFLnN974KVKuEfrkCy+4hqECcH2emvUILVZb5r0MPg9QZTW80nKjiFGPJt9gibH6n/FaOaUUdvje3ukmCPnfZkIPNf7idi1Cws1tR5AwXDeVQiHnGhSjMwRl3UyzBsVjLE8S5CE733sKPa696He2EPHCfGQuwLCk5QO/MhtUyimgHhaNRh113vwU1rrNjBABQr7HrVbTva/D4bCy9oBALaoc6svPSFkZ3aZpWhl8Ko/7NNL900WlztScnA6SETJuuptnqUviPM93f7uxsYHsETKe6zfWEHIt1fLKEpYX6HqvX7uO7R0qZZiemsLpkycAAO/91Q/xzgc0pz/35Fkc4fXm0//Rb6OxSLVMv/vVr6At6f68+cqr6LESavnIccwu0Rpc5AVGHdqcD7Z2cI8d/K++/TZ6uiwfCWAtlxFEdQjJyk5duAazk0anU9VZutrcLMXuFs2Fr61twyq6dmVJ2QeQRYfHO6blhXk0SxorjDDgTeSwP3C0VC3wUe6wpuZn3PqabezgymWql01ksq/aYVwNXo6TIAgeWqd0QGkdxEEcxEEcxEEcxC99PDBt39m7j/kphul7G3j/PYLNiixFjYvhQi9w5lxiLCtXSmJ2nuDg2YUFWM7+8iwGDB0zSQtsrROMniQDjHj7KAoJnfAOYDRCjZUYRZHizl2qZO+MRrC8M9/tDWBMSUVJeDvdiW/A9va2Q6J2dytjqmRrG1//+tfdZ8bhwC99iaD2e/fuOU8epZTbeURBiGCs9UaZdY53LQeoYzpAKq1bt+i6Xn/9dXiMXPV6PXzta18DABw/ftzRSdsb93CSdw8nTpyY+FonD+HQm1E8dIhNv99Hv0/3djDoO/vwIkuRsS+MHygEvPsRMkDKfi55piEY3Vpe/gROnXicPu/7gK3MG38epdbPo1grd3rtZh2LC4Sc3bt9A3fXCf2Qq0sYcZ+pYSbRGTGEPTeLUycIXWvVagi5gE/6dVx8m3Zx7Zk5LMzTMY2GU7bV6zW02rzjsvKRVBMwxsH3OgOGXFTez2IYpgHSLIdmui1ADT4X+upMQzNlo4V0BZpbOx0on86n1WxibpYKZa0Q6A5ph2kgkbO9ezMPYfm9HGQ9LE3TtWuMnKIjzzV8xaiCkUhHk6tf6lPzWGKvmLA5i60OjZ0fvvIW3nmf3o//6jd/H7c36Bn9L//z/4Sv/C5RV0uLc6izwuvV//BX+PErPwAALB5exWNP0liLpMSzzxKNpa3FN7/5LQDAoUOreOIx8oWxVsNkTMmmI3jsUVOrh2gwOpTWfQTMG8lsAKknH39WG6cWtBLuZyEsJO+W73aHqAkaM0ErQoPVVToQmGKU5J21TbTn2VtpMYLHu+Kdez1YHhtxYrC6RIhlLVKI86qrdIPHkjACktF3W/ShPfp8piJoRkCsgFPpPCx0nkNndD8GgwGmuM1F1Kg5w8tGrV6hW7Yyfh2NRlBM8QlRIGGKr9ZowlqmzCGhfKY/vMChcVk6BFi5mOu8amVUUAsPAAiiEAUjYdoadBht2NreRvEIxfXCwPm+Dbo93L9BJp3b97fgN+k8Hzt5HGeOEop9rSbRHezwdVm89J/+PQDAkScfh2U0Lk5iXFsnGsuGAc6cpz6F7cYUdrcIrbx+/QoSnk/jeIib92nttMrDfJOfW66d4iwfxeizSjYIAuePNUk0GzUMGQUcDfoIuMN7KBV8nq+zTsetzTO1GsBUZiaoSBoAplotxGWxf6+LkCn0ZhhBMCVbCECGbMgaj1Are53o3PksBZFw4hYh5P4+hI/gT/fAUSxMjGtrXDcS+NDgCn748NkByfdU1T8E1l1cUeRoNEse2oOIqS7lyMo8PvNrnwMA9Ad9fOc73wMA3Lp6DWGLjr+wtIQ6JzOjQR81HhSdfh/rXN9SQMByBXquDcpm9vUghB5NbrIURZGToqdpCsHX8tbb7ziF1Oc//3n0+/SyXrp0yZkErqysOEWVMcb9rQSq3lJjCc94aK1dopXnuWswKoTAE088wfewwIULFwAAFy5ccMlNo9F8KFf5c8VYQVXCNVHdThfDIV17nAydGkdIu898teyfY1PtXiyVwtEwwAAtNvV7/LHzWJhfdV9puRbEwttvhPhIJ/4of2fhivlt4e7l009/Cj5D9zu7W7jP0O1ub4Aemwr+0X/8j/DpF14EANSlB8V/+61vfxuXLhFPf2h1Fe02cdVzczOYZpm+1rmrFxolGo/AaAHSIi8bYgofOdMZha5qk9IiQY1pOG8QQI7oAdVVE7KUihcpejyWjywsoM41NhrkVAoAfhhAztFi2u93UfB3Wd1A06N3ZSAMTM4THGL4UdkTTzjHdA8Fsod6n1bR72wj44VqeXkVHk+ynq8QRHTM9c117LLhXqMe4kc/+B4A4Le+9FtYZbfyq5cu4Y1XfwIA+N0/+AM0We0VCg8mpXN+9tnnsLrM0tl2G+XgV1I6l1hT5K6WqQYJxfUEkTRQ3D/QswlC2Zr4GvM0c4pPJZVbaIWVCDlp7A+HuLbH9y3rY9Gj+x+GdcyxY6+6tY0fvUoL5FNPHcPSMo0x2WihHtFJR56ELR3QPYWAE9EizSE5eRPKQ52fV6ffgwp47vTqrp+hFXZiE/SiyGHZ/dpq7Rygm80GipKiAtDgZyIFnDFrUeTocX1kkXswJc0kpevlJIRyNWsyTpFnQ/7bGJLnETI/5ITOKmiuQczyDJJpve2dDq7fJmPOUVY4tfAkkacJcp7jsixGd5to/swAZkS/P7w1g8Oz9C4+8/w5HD1G1PHTzz2Fo0dJop7kGnt3aS3Z3d2F4DW1OTOLXU42rlz6AANe82Zmp7BylDZbC1mO6SOH+Rwsbl4nF+s3fnoBt2/zJlxIt5lMsxiPMuEUaepo/3oUQJUbeF/A8nuAJEU2ItoLNkbA569goTgPGO11UJTNkyGh2D4mhKLxASA3BQouiYDJkPHCUosNmjyP7hYjVwKgVJXwWGOc7cd4t4OPiwNK6yAO4iAO4iAO4iB+6eOBCE9eGAxzyqDffO8tpCDUJbUh4pS7/NZnUGdYf297x1XRB0HgsubBzg7qBcHQh+daWDlMWerS6gKa05T53u2+7bos7+70EKlSDaIhulx0lidORWO0heWKew/KKVI6oz4G43DXQyIMQ2f0lySJ2y3fvXvXGQYeOXLEXdfu7q4rMF5ZWXZFucBY5biF64UC7PfKGa8uL5GfOI6dEd+pU6dw+hR5D2R57iiza1evYnGR4GFfin3f+7AwospsLSqTPgHhoOWxGngIWFfA2mjWXdfqPI9hGGKUYqzo1moor/TSMch4B65kCI/prcOHj+MLX/gtAMDjjz8NVF3UKlTn5zQepGuoKvjLEKL6X4sxUZQAAlV23k2wcJhQi7/zua9ACRqD3/3BNxFzwWrbeJjlQt/nnn0Gq9zVeGt7D6nPhaBzNTzxIqkszpw8i7lZeifmllpYXKHdaX+vA69Evx6xtUSz1sZOn9sceIBg2sIWFl7BvidJHYj5eSYhmtwRuyZCBAl7ZQ172N2jHekzj51CyVSkcepg6FEaU6diAEq03E5PwcfRZRqbm4kHy603oHyYrFSrCSjBna0RozBVW5aHxa33XkPYIGTp9PFjCNnwUogcpqBd+ve+/U2cfvI8AOAf/7N/gmvvUWfoy5cvY5YpOeF5ePvNNwEAz7/4aUez5ybH1auEiiwfWsH5p4g28KSs1KXScz3R6lPTrrO13svc8LSFhmYqRcg+TDo5wmOsA38hrHHF4dIKhyxFUQQGWHF7lCLz6H+m8xFqNbrPRw/P4a0rNA9d/Ok1nH/6EADg2IklCFbOaD9AbMpC5QCKi+q1TZyfS5blaDDqUQsD7JTCgpZyRagfpuIfFLVGE02mbcNa3dHz9UYTbaa3trc2kXC7nkaz6ah6owsIRgPi4dB1SA+DwLX3GcUDRHUa1+koRlT224qaECX6LCwC7hKepRkEv9PILXJeMy6+8Rausw9PEIZI88mp1/v37zukOwx9hDV+V6LIoYl7mxvYaNI5PP3skzi0QqxGvRZim40kb95ed2NzenoaA1YLv33pDXR2aT04dugwnn7hE3w/I8yV3jieh/vsGXfp0lVssnhifX3d+dlBKkhG+6TyoYLJaEkA6PW7rsh5emYalierQZ5WZQo2R8QInl8k8BjxLaxEXvbwEhZcbYLCAhnTv7kVp5zL8gAAIABJREFU8MYYhXbI7xw0pChbkxjnE5ar1M1VVgiHvBbWODGBtACKB3dLf/AdEAPU/dIUykPDZ2g77WKDpaetoEC2Sw9w9+51rM7RIJ1pNRGndDO2GilmWE20dfcO3r5ATpM7W4dwf4P7Uk0JyJAeuI57yEsX5XrNNTiMrIewqEzqyjoMWIHAY5WFkLQaTxjz8/POWO/11193ioHtrW3MsyT89OnTjme+ePGic4f2fX8fXeUmBVvNatbafTU8ZXz470oK6eixYzh7ltQpO7u77oXY2tpyTr6nTxxzDsyTRCGc8BuwtNgCAMZKZiz/P0DquRoff3FpAeV7Im2BnBUPyTB1RntSGGhN52a0qYzEgjbOP0U1E3/4x/8Fnn6GXKlrtdpYfiLxNwo0VpfqqDYhqKEqAIRCohHRgjU7P4/uiJKBQ49NYeYo9YNZmj2Buk8L8cLsAjrsUvvqzSvo5kR7jYIcz/0OyaWXZxeRjyhhf//ONRiuwWjKENK6m1w5Qk8SuYey6WSaJ4gK7pm1JxHvsr3BKIQK+ZgtH3lO3xvHA7RYbuwr4ZR5w2SEfofe3fXNbdSYgrawKEqJdBAgYnrAZimiGfrbVlDDZpfrEgoFcNIVxzkCxbV4soApJr9GPerAsGnhnavvod2mBMaXFpoX4t17m7jpkRHbH/+Dr+L3fu/LAIDvf+sbGPVLVUkfV69RL6I3XnsFv/d7lGjXfB9//mf/GgDw67/5JRw+Qs/LFtopBbM0d8Nxevkwjp+lMXDplS1kvOjmaY6CHYmNzPdJpR8axjgDSWPyyjFWSESlMVyzCcnzbrcvkCZlA9MEfpcWttn5Bhbm2U7Bl/jU+RU+DnCTje12CoUWO4EfnZpFk/s/CV9hsEcJfBoPkcQ8VwU1CF7kLKp5C1YhYKXNw2JqehqRax6cIeIEwA9C1DhRWVpW6PIGb9DruDocU+Ruo5hlGmFYJukjxAnTuZ4PwzUeRRbDZ6vwZrPpjCSDIECD1UkWApZr1kbxCO9/QGPnlZ/+BH2W5jebLWgz+SZ5dm4ax44RLdVq1TEzRfd4YXEJAb/Tb3zrG7iV0j0+emwZS0uU7F2/uYFLV4j69sMaVg9Rorp2dx0XOElfWlrC579AY/P0iZOu6aeGgeG1zfNDbGzSPfyT/+truPIeHbPINcoBrITn7FHCWgNqwmcIAGmeYcTJRkM33EY9SUfAgHt1xRki7hNYFz5Svs+FFehxjVOvSGBK+s8AJTcqhITiyTkSAtMBjeUIEgA7pguLHtP4zdk2whbXMFrjnrUxmq8ZUDaoTF4/Jg4orYM4iIM4iIM4iIP4pY8HpkOnj8w4Pxwh4CrEoQI02pRV7ezcgacoIztzsoXlVcp2PU/gxg3aLW/cXMPJX3kWADA/dQS9AZl/bb95C6+9RsWFU9MhHn+C/AmEsii93pUsYLj63sLCYxzMaA3FcGaz3sRcg7632Wi6osBJol6v4+WXXwYAPPXUU055NDU7jz/7838DAOh2uw6dGY1Grph5MBjs89VxSA6EK+QeryZXan87gY9CfDY3N50/QZqmjpL5/S9/GZ/85AsAgENLiwh/gaLlqoXEGOfzoX8PuBvt4uLiPkvyjNVbvd4QLVbFSE85q3VjFJ4+T+f58su/j898lvoSLR86URlO2kep1v2bCcm7DmkkbFYWi/bwztr3AQCpWEebC6tVOMTU9FH+yzo0G2z5kBh2WdUVKsy2CEUJwggbrHLq6hzdAe2UgiiADspnbh5JXVYUASKfUR0DBDmhj7v3hoi5T9ZcW0E16fh5YZH36Dy1FVjmPlmN6x9glND42ur0EXAB4vvXrqLB53/00GHEZWf7uTmAlRXDfoz2Io0L5UVIM/ouk1mosim39OGVXc5zgbq/NPE1wg8dfbp+4z3nZXX1ynVYVplJ6WF3hxCMH73yOr70W78DAPjjr/4j7DHEv7G9g3cv/q/0me9+B2++9rsAgN95+Texu0UIybe++Q187otfpPM0gDJVn56ECyjbjWmceILohPWrl6FiUsV4Eih4Z5sLH0k2OR0CbSFM6V8knNDBWO22n37kO3NCAYVhTC/XfeNjsUX35H6hEHAvojNHmvCYgr6zvo1ej3sVpgb3t+g57sUSAfuzCBgUjFal/T5yRh2bh04gOsQeZhauUFVYIC8m81MKwwhhVBqMStRKhMcPXM8sIYCZOULvsjyB7bDP0OycM3jd29l1pp6eH7i50gqD4YDmXymqeX5ru+/avNSiGpKY/Wp6A2xv0bt4fe0u7jD1M3v4OJq79O6OOnuP1ALlqafOY5H9c6QSSBklvfHee6VQCXUlsMb0qcCvY3eXEd/L1wEu3fDCGt55j5DIXr+HZ557HgBw/snzmC3bCxnjCAsrAMH8UNyLUeMWEvWw7uaSKIogRHXfFNPyXhjCr5VNCx8eYRC4tXB3Z8etGb4RiEZM5/lN1HnO0EUGk3HfRAsEpWo6B1yLd0hYnihqUqLG51wTEh4rTYu8QMDKr+mZFlTAdOuxOYwYoMp14dZVUvnS75UN4atqrfqoeGDC8/lPfd7RN9po50icFQZ97u8SxwUWuRFcvWZhwcmJsWhIeiGzfoQzh2nCnZ2OIPgFSyKLRo0hN6+OGYbdhUhcfYi1tlIACYL16Hyku1Cdp1jfoSr1YqNwHPwkYa11N6808wOAqNHE6z99g36OIsTcn2YwGOCf/NN/DAD/H3tvFixZcp6HfZl5ttrrrr2v0zODGSwEBisBAgZBKUKiZZumFTLtcNiW9OjwE72El/CLHPYDrRfLjmA4ZDFC9BKmCYOSHFxMkQQhAMQyBGaA2bpneu+737q1V50tM/3w/ydP3YvuvtUQn5rnf5ipe/rUqcw8ufz/9/0L/upf+YUy2aBSEHLBh6eIvjhxqD0uRF0I4SK//p+vfc1NtCAI8KFXKaPy3/7b/yFanNBLAM8W0nzi94/TWOVfxyOk6PPqyqrb7MjPiK4bY12E2r/+b/4SPsdFVH/05ttIOaz3Sz//i9jgg1bnGZQq+/sXKcs/rrzRsM+R9hTAodyzeILe5B7dWXsIcARCHsdoRnQQBHXfJfpb31zF3owOwcRmjjLotpvY2qMxa0ofDV5mNrXIuAbTs8aVSSg0A1of06MAGa/+3v4e0hEXLFxvIOcCl8lsDj/j6AU/QMSU8trKGnZYYZjHMWrNsiZbUdQ3SRIXldhoNjBkpQ4qhzdjKqepICynl4gH8Hw6QLutDmqGxuFodACrlu+l11iByNkvKOnjwXtU1PftN25DsdEjpHBpEna2dzAe0j50/fym8786d+GaO/yk8LC/R+8xzYBGg97jt7/5Ldy+TRGoly9fKTNgC4uYx0GJCJtXaf29+pkv4/b3fg8AYKcp/KCcy4UCvIwYa2GYNsdCjSihVJloT5c1gVRLwa9x2oF5iB6vRWsEIjYut/M5dm/zOzI+jMeHpRAwnHbgUAeY9mkPazdCdJnq8hrr8GpMZTY60EybehDwOGrM5Lp0HzhFNASMpO9Zz8KyYgjlQXnUjzCsYcRzKk40kqx8dsAFQ9fOnXfRs+12G/Uazd88zzHlYrB5FiNm6ng2m2HA0Ux3evcwHRNdNRmPHX02Ho9heNW1mh3UeGpOtXFh7MvI3t4u7nECXKUkZlw3sd8/QpdrfX3h1Zdx7iIXx/RruH+fXDfiFNjhjObwNC5w9YJPf/gVXLxAUVe1MEJa1IcCMOU+xtMYO1zw9Oa7t/DoAT3z6KDnkqdqbSF4P1NSusisPMuRi+XnaeD5CJgemk+nLk1Jp7GKLiux7Xobda6HNZqOMbpzDwAQ5hoZR/7lwoPmc9EqD4YVkgzAvNgapOCMnEBiBK5wUtozL7yAMWjO+usR8ojPfmucEe57HpIiuWku4VWUViWVVFJJJZVU8pddnqoOfea1zzt0hZLCFbllcud4ZxdLXAuLInW+tQI/9yn6/Mv/6hRKFTCucRFVRlp89pOfA0CWWKPFzTEZDFNp1tqybADIK7uQgrpKk/RY3ZVnQRAWa37N53McMiz+/q33nXPvb/7jf4yYHbimkzG2HhKa9Md/9EdO0/R83zmhKikdCmCMce3XWju6Kk1T9znLMvR6BLv2ej38xj/6X+l+Y/DhD1Mkybe++U1cvkS0yuWL59FoFE7ap/fVGuscxwTkAsJzvEZOgf3YBQ/mwWjootIODnqQbL2dPXsGf+fv/l0AwC/98q9AsNP4Rz/2Rbz11lsAgD/9xp/ik68RTHvt+otu/gDl85+MdTxDIrAnDMEiCCblQm03CFiOZPFChZDRg2aSYsNwDpYMkFOyGEW2BakouVhzo4aM84ys5znWGAHd6e0hWqPrG2ELF5lOMgnQmjDlUQ+RFRWdn5XWm8+QDTmyZr+BrcM7AIBpMoAwHNWgLCzD/EmeoM79bagWEkYN1zZXsXtEc7zX68HmZOlnmpxGAUp4GbOTaK83QlznyDzPIt8lNKnzYgNCcfkJ4Yq3I54b+Jw/xw9DDLjEwzIyjTU6/F2J3CU422j7mPWKCJAMLU4O+sqVsxAxWftmHkMx0rLe6UAyDfe5L3wJr32WSlHcvLuN7T2iNB7cfR/vvEXBEx96+RpypjXn6Rwxo7nxPEaTLecXP/2vQDBC8d6b38O0R7T8fP8+pvHyljOFDpaRmsWcNKA9EwCElG7vEaBcZwAQBWWS1zzX8HlvNqgj1YTq6FQ7VF54kmsQEc2+2SFHW+kpxPxd5QcuZ42nyn3LGuuc/KWUS5dBya1C2OCcQJEB+3ZjZ78PIQhpUcI6ZKtWb6HdZurk6Ag+h9ysrK4j4j2u1uwgYnR7Pp+jKM+mPOVKmuSpQXGcKRlizujsm2++DcVnUj0KoHmO5/EMlqtyW2uRZj9Zf+9J8t6P3gQKGlMKCI+ev7axBsXv6u07d/HFz9HZdvv+I+xzYA88HzV2cr5x/QouX6J3suh0PZ3McXhI58Ebb76BO1xDMY0zzJhqHvaHmLLz8DyeLeSAs/Dd+/SRFwl/M13mz1lC4unUMR/tehOGaaao3gZCjkpcPwPDgT3xoI/9PcprVNcSll0iMhPAFChvEEGyU3yWZWWNQSmQ8tyfBjkUJyEcJGPEls7dy34dNT5rAynd+ReGkYvgSyaJG8MnyVMVnjzPXGi5EMItQt8rebJjRUJRHsBSSoApw/WNrru+SKlICFy/ygmErHHKFeyTjrvjVwtaRy+EogkBp2AsK0XbPM9zC7HdbODf/RWqY7Wzs+2itKJarazlYlFGYyGHdVSacJFiUsrHjs9iXS3f910x0P/8xRddyKanPKxxaG7ke4hCly3vmZQ6axcqOAnjlB8phdvgSBHiNiuJwyEd9r/zT38P7968BwDQqUJRXuflD93AuYsUtv/d1/8Qljnbq5dfxqXz1OaH997Bb/7m/wwA+Gt//ZfwydeI9hLy8QmiFoLLF6789DCkENRH+lzOUyEEAn7qCgTUFvVPvb2K6zNaSJntAkzN6bmF5qifHXkPmHJUwCDBOY7qqs9GaAR0mKrwFtantOFOE41Bne5Z/fRryLpFbRvAs8tHhmRjDyKhQ21wuIe9I4K2PdlEs04RZPAMZMibuG9gNW0uoacgfDrEN85tovGIFPbe8MhtgTmsKzQ5nI5hOcxczhKXGFJIH/Mt9gNZtZhOiTaoK8+Np7TWZaH1bAMZR8IsIzYHUNTzQuao/2YkcG6Vk3QmOZo1ev586z383v/xvwAAbly9iot8eLx8voMXLtIc1PEQdXZ3++a3v4U7t97h62PYhJSlmk8hswDgtxuu5tvWox1MhkwDNeu49HHyR6ttXMY73/l9AMD+3gOMOTHnMuILSQWUQWNeTnjrKF+44Gwwf10qQh5v6EpaR0dLBeR5Wc8wL0KCtUZhTAhV1nSDMQiCIlmbKqnmwHfJ76Qsi3fC2IXksk+XqFZHp0vzNDfAnbukGB71B2hxEjkhNGpF8eAgQr1ZhPULR0kYIzHn6LSwpqF8avtsHjvKv1GrIeMzIKzVcZ7poW67jd4erY/JcIB2h9ZHUO+4ArC5Mai3iI5Roxhpsvw8zdMEAU+YlZUVrF/mQsGtOi1sAL29A/yT3//n1J61Lq5xqpEvfeXLLrGsTjLM2E1k0J/ggBMYvv/uLbz++usA6Owp3mEU1eDx2WstXKFrLMwpCOHqninPhyeKigg+0mcg0fM0g8/JPmv1BtbZbUUHIe5vESV39+YuLkzICK81mhAXaRz293ZdWLqq+S6ZaJzO3fjA5K7obiCEO8Nr3S4EU4EjaXHrFvlBNTZrWBdMwyoF3y9q/WkEXEcz6tSc8vMkqSitSiqppJJKKqnkuZenIjxyobrzk5Ac4LgDbfF58VpB3Zz8nhAAstJzf5HmWKQjHvd8vqv4cOx3f1qnWM/zcIHzIhTWwsk2n3QWXkSunvS7jxsTKeVjry/T9mftnzWlNUhOpKXjbDHmRG+R/jscjfBrv/b3AQC/8Y9+Cxl75SsBGMYEjE3wz37v/6TvzgdYYcfH79faqHP+lHtbD/Fwm9CEOE3x8kuUMK7dKVP5H2vnT/z9U2YiZCH24PEIT8iIVCfROPwBle94/1YfKwyVesqgprhmD0KkMVnxBwfvQ7NTq8wMlCKLYkUBocfohxigy3WsbJohX+Hf1SlmTMF4IsQzlLbB7EBCeuTouXt4Gxnnq9nYbEOMOKGcTBEGZP36ykOtRddbGwnYkER/J0XIFeFHB3uYH5AlnCNxUTmJTmA002TxDDk3tNlawXzO+Zb2xjAeW9orNYQMQyvfQ50dE5PMoB4+PWpiUbJZjDikMZdaOuoiVMB6i3NxdX3U6jSewWwL8TZ9fjC4j95drmLfbuLjV+jz4fbbeONP/ykA4L0fvIHp/n0AwNmVFlaa9FvIjUsIKUMPG+ur3AaLR4+IOnz44B58nyzMlfVzeOWLFB1WW1vHn/3+/7V0H401ZZSkkDBuKYtj9PLiXHVOzrbcIZUnXXCGFQJCFpXFNRRv64ExJX0tUaLRBs4hWUlZBlsIijoCCIUFuxVonUOe4gxaSBTV0GgQkrN/WNKZV69cRcSozmw2cY7hQihHwYSRcVGgs/EUNXa0Hw0mZe4iLSjzJoDpNEHMDsyQFk12wN+6fwu72/Te1rshNrs0dzoNg5gTPc5TjalkB/BsXlaGX0L+jb/1NzHtEQLearUgoyLzHQULAEC91UHI9Gy73cL1q9cAAGfXz2L7HlE/W9tb2OZakltbj9znyWCMjFGsKChz4OjcYFrsPVKi2DGNAaQo0WLHeIjclb6RC3TlMpJnObwGPXO128WF83Qubh3su6R/WRa7MhnXr93Agw/IkfuPb3+ACb+XZruFq1wSyVMhoojmRhh6GHICxt3tR26OrzUbuPYC3b/X20eNKc5ISkRB4ZhtMOcafcYIBEx1KStcPrsnydNraaFcYEKIY5+fRU4qSmURsPIlLe791poToculIiTkwhccNyYc7Lss1/y49i0mCXxSFNRJxeZJytjJ75yURdrt5PNOG9/F7y6TAdUY4zayn2gbyv4Wzfy/f/u38T/+g/8JAKBji4jrM41mY7zwAiU4+7kv/iy+/wOCbNP+HrZ4oRtPQnAW6FqnC8MKc7vTcf5O9DuPi2I7oeIUf/yUQV12QRE+prDb0tdslhtkHIHlbaxD8YJMZ33MM+qThkWDD8GNKxcQW/a98nKYMXHtt2+/jwlHU6QywoWXSbkLO01IVhLjSEJzIi3lBc9EvYY+sDcg36j+6CGiM9TmF14+h/17tPlGHUCq4vBQaHVo8ZtggofvcvZjYXD+Kh3cKYY44tDc9loDCdcLmw4TNIrNJc8h67zpnAWQFXRrhoAVj3pdOUU41YkLRa75Ept2+VDYfBojOkOweJ5P4Vkaq5V20xUX9G0CyYXBIjtHJ6QxDMUMgx2iBO7e7EPNiF48V2vjwQ+/DgCYPHiAy22aD+cunsH8gOiWm69/Bx2mPfxOF1bQGPpS4Cr7zbWbDRwdEe1xNJhgHnPy0c551NsbS/dRL2yq9if2RRZrj0Hvzk1AwPlqeIFXKjPWlkqLkpDFt61FbgrfRgMDXbaBn+OHvjsshRDwWbGxsLBFdI0US5seaZJjzvMoS3OsMiVvtHXKDCzVFAOAsc5QrMUknyPm+eUHkTPS4mQONaP2xnHsssxLa8F5B9FsNrC3fQ8AcO/ebWdk1xotNNdo7Ub1GkLWMMVkDtVnGkt5bjyWkcsvvAD/BicDzHK37uN4hiaHab/w8stosuKXzmNXJ+3WO+/jzR9SgsHtvV0M2HVgMct/oAJ4XCBVa42MlTEB5Sh6z/PKcGyp3V5CvrbcNm2RpJwE1GhXNHgZkVLCZ9rz0uXLLmpzeHiIgH+roRSGTB3uCw+HHGkspUKNDZfAC/Di9RsAqBCqzyH51ua4w9mtDwDni7V17wG+HhNd7IUKZzly29MaozGnI5Ae8qKe2kS5WogCFtEpFQgqSquSSiqppJJKKnnu5akIj87zMjeElM4iOUlvPU6eRu+UCI9Z/IdF/73FJzlvbisEDAoY97iLa4EIGWufObHdMpTSaXTVMijNk3LynESAHvfMZdvzODELERdGCPf5mHO1UJgy77Gzs4MvfennAAC/8OVfQMQUxRtvvI6P/Qw5Vwe+xM23e/wDCQIuO5LpGBcvEvx5ZvMyLl1+GQDwS7/07zuImtq/RLv5PT5DKpdjcvI3ynG2sOwEmYQGGx8mh8JXPv05JJwk8Bvf+kPcPSKINoePD1/5NADgk5/7JMCRHmE2x9EHZEH9+IeP0BuRxeh3zkK1CSFpdVvIC4Nb+uAUMshMBuEv37G9wRZiThznRwKdNiESs5kFB8ih1jXwAq5t07CQnHdjNssxZ2e+tfMWzRWOVJENXLhKFvjRcII7t6j9Riu0g6LidY4Wl4upbVgITp6xdqaO3JWQsPAl9TfXc0jOyROJGnwsj/DIXENyHa6gIdHkOlw1tIGY2hNPtMuZk+YaKSNmvifhqSKZZIqAP9d8QM3IMtyMgPAyjVsUpdh757t0/6gHnx0fvZUNRG1CBOI4RRhxNEi9CRFSX1SWYOcWoW3vfu+PMDvYXrqPdiHgQC4mKz1B9RfXjTEOtRZSwHcUhXLrYxGZFrBAwYAZi8KmFbbcR5VAmfwQAoqdRwVKjFWgTIoohXLlGU6Tw8MeIk5wl2YaoqBJkxQzpkOzJHYO71pnDn3OstT1IzQChlF7XyloRjmUlC45YTyfocUe6YHnYTCgQAHfl6hzVJfOcmhJ73CcRy7PUD81GKdFwIzn6owtI7/7B3/o8u1cvXgJF89T8Mb169fc+4mTxEXz7tx/hN4+oY+j/gB7O4SEKN9z9cI8L3JO4tMkKyOTzUJpIuW5wJ50OnHXszwBOLBACs9Fwwoo6MKVIQfssiXvAZw5e8a1LUkTbO/QHLew8Aun+zjG97/9bQDAW7UmNP9ukiXOQT7LUnz7m98EAIR+SBXcQYlfk5T22jBQGHOpqgePdnDAARkf/9hHsNamWptJksAw4u55gau67knPIaZpnkInT6cmTyFmH0/xLCbrO3bQL37zCfSOoSJYAABls4V4BLHAXCm46IIFPwwrBKw4Bvbyb5U0Dz3/p6fcnnbtWa4/zrfnafcsXjtN4XlWSjEzxiXckgKQsjgYKMEYQApkoZD8J//pr8JnCDYUoXtHGqmryfXVr30VoxFPLpODkUcI5WHISb/8sIl/7W/8CgDg8uVXoDl2mfr4k+004jjFposN75l6W4oQ4lhyx0KkVAgC+jusA4OYNqP3dt7BaEQUz82Dm9g7fMD3tHF/l2rV2B+ZwrUBWTzFYJ/4eOvP4dVpw/IbwCFTXRNYVyBXaQ+igJuNhpbLJzu7ef9tXPsIKSc3Xl1HrOk5k8nERUJ1hULQKPzaxoinvKGLOtrnOXvwGYMORzwFjS4mY9pE+pMJzl8imuyoN0J9gwtHQqLGWdVbDYFGEfHSzpGnRVhvjk6LvlvLJEJWSGq+DzSWL1g4jecY8UG4WqtBFNEmAvBBc1OaDDmnDohqTZcgd57ErtZVnmXlYZAkSLnWVbdRh5hzyJZNoTmSLu7vY8y+HenDDyCYek1SjbSIfhISHictVAoYsi9QdvABbPJ0v4FFEcBCBKdye6E1tuB6KbniQrb4ItTW8zynGFmQDxB/2X2XHlNUJy23VAN7rCZTQeFoAH4ROSpkqUSJEv43ovzuaZJlOXrs3zKZJWi2OAJLWld0cjQcYMjZ6pVSLup1ca+czYewlt5PLQoRzzgisBa5dCQKAFghvXf3FiYDOijX2gFGbNAMZkNMOAko0UGsXI3nMCNaoxI5vOAZaml1V3CefVc+9pGP4cYlShg4nYzwDtfJeu/9m/jgXfo8641c5NxiluDQCzFlAyuJYwi+PkkSpEWUk1JlNLIu/SwX6XDPly6lgVICUpSpUvygoMB8+N7T6Z5FaTQbGDGN9aO3fuQis4OwTL9iTI7DQ6KOw3Di0ghoqxf8iIDtHXrv0go3p5QiPzQAaLebzjcpMwmU5GLIoYLmrOezWYqgTteDwIfnMY0lJAyPVZLOTq2yUFFalVRSSSWVVFLJcy+nmF+Pp2CEEI91uBQLTqJkKSx4/D/mqcZIh8Ys0mTHEiRpAlrpHglVVEm1GmDnUQEDyziAeIaaKH8Rcho69NNEXf1Fl17ItXWWsCfgKkNLAWcZSmFLh7jAd1bizMwdYCZgELKld/XaFaxucCTMTg+KsR8pBVptclo9f+E8OitFTo4UwIKT+uJr4ucbax16QgknC6+85ft6cugW0bVFB2/2w8WKB+zdJ+oq7j1CxpyTSkc4xw6c9UDBPyJL5nAygi1ga2QwCVlB6w2FiK2gRKXINVmkqe1gxtnX/Fy4aCBIjfwZHCXbKwZ+RPM98lowhssfeImrECx9g3nGVnGoIbhitFAaq2eZfB60AAAgAElEQVTJygrXLCTXOmoGEUKuvaWCDUyn1M7mgUVnjcsKxBZ1rsC+tllHDnY6VNYhf77QiPgeX4SoGYL7WkENmVg++sWrB0i4Hg+CLqQidEBkY8hi/voBJXgBBSiMuUSBJ6xLnGhyjZDfRRREaDA0H9VCpBw5gzyFX3A/2RySKRMvHSOfMCJgLCw71+Z5jtk+JzrNc6SMqkVe6qo1LyPHEHFjSsTmRJBGsc9ZJR26IkAO9CTmeCmYAtSx1uXSEYBz7rTWlHSVVO4pOsugixwuUi207wT1tuSWFCcJ6mzde8pzTrm5zpCxA+1w0HdRWrnWx06ZwkFXL9B0SgqsdmkudLsdBIwIrXZbePSA8rS8/t0/wVqH3m2nHqEZUZ/On1mBxw60hJbQQHmhwpSdZgdxjOQZ6i9++YtfRsL0Sjab4Tv/gmidvd1dvHuLqrE/2tl2jtmB8B1iE2epcwaeTmcup5AQcEklEytcjh1h8gWHZGAx2KNA+IyUbj/Nde7qBGY2h+QXF2j9TPXCLLRjAqzVUIyopGniEltaaxxKAxjkTC/TTCupUeMc5xf1AyAr6LnezG3cvg/UGjQ+UhloDlwIlAeIoqxUjoAT4OZZhoSR5twmEPLpfXyqwrOYJPBkVNGxMHC+Lq1wJ5ml3vLn48n3is5ZocqBESX+aoXn+EYlBKTgSYHYcc/SaFhbRiC4rKALnGclJAKLG1nJ5UspHERKsXMFRF4qn0pY2CI1ATwUL+nqtSv4+GsfAgD80f9322WhFZ5BUKMD9dK1K2hwsjEIOP62+LuQYg6YhczP1i6v+B2fWk+mAR0vbi0iVpA7QkCMhwCAPJ0CnDVVIYVlOsarK0Cx34vRQEYbdwAB8CIXJneBHmMdY9pnzjtsQdRI6ZvGMeoc0ykkhfYvK1dudDDJ6JANzxrUPDoAlElgc2qPF2QQXGzP9wS8Om9MXgKfo5lylWOa0BhHchVKcURVQyIHPf9Ccw0ZK1SNtTZEwc2bGcBr0WbCZSH2VO6iJwUkfA7nlyJ8JmXASAsUxo7yMeXkbmaeICpCszMNB0znGhlviNJXLjle4AfkywAgCmsLURzCzUHPD+Cxgj+fjsrQ7zxGzjB6nKaIeTM1sDBM1WXJ3CUHTfMcif5J4++JfYQ9lo7ALvjhiGOFiOnfpVhIXwFbKh4WsPy7UggIzqisrCoLkhrtlCVjtTtElacgFvzZHN1itPPP8IRybbB4PAX9OLn1wS1sbPB6yo2rwSSlQqPJtKQEFLd3HscuWZzWGtMJh5mLMuw6CHzUueZiltfQXaG5P5we4sfvUr218XSAZsSFLBsBvCbd7yuFjLP8z3VW0mpihpz93bzAWyratZAPbr6Pva27AIBkPMXuNmUuT9MMc87Ib4xxiWgHZo6UlSsIgYzPLaPnbh/UWiPlhJcQAaQqIlrNwthnrpD2Yi3GPF+Ib11w71ikCJWSp2YhXpQsS+DzXtXptNxz+v0JclZo/cBDh7NGG2MXnFNK6tCYxTQMpa+aVMIlS/Q8iYDTV3RWm9jkqLogBCRncw/CAJoNlHk8cWvdWuXOJ6UEylY8XipKq5JKKqmkkkoqee5FVGhIJZVUUkkllVTyvEuF8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9VApPJZVUUkkllVTy3Eul8FRSSSWVVFJJJc+9eE/7x7sHcyv4sxACAvTXYHCAr//JHwMAPvmZz+LS5SsAAGvsse9bvl+IY5ch5IkLACCAxavHnyX4eeU1IQSs+9Me/y7//8pK9JgfOi7z+dxqrd0zpSx1QCHEsf//RJOFeOy/LV6jdlKLrLU/ce/T5OT9i38Xn6Po9D7+s9/87+ygPwQAPHqwBauL79aQ5BkAwPMj7OweAAB6vT6azQZ3wKLuhwCAy5cu48GjhwCAg8MDBGFEz6lH+PmvfAEAMBkNsLe9S23UApNZCgAYTWZYWevSbykBz6NxPrO5gflsAgDwlQSEAgDs7R/A8+nzf/bf/8ZT+/jjGaybLwIQ2gAAlGchJE3x+Pvfx8F3fhcAkKQTzFJqV6p8xIr657e7eNCbAgDC7mX0Z/Szc+uh0e0AAJrNJmoBPXM2PEBv7wE9Z3yI9pzG78aFC3jx+osAgFanBegcACAnI8gWPcd+6ksYtVcBAF+o4dR3+JX/6G/YKKzRb6U5Gj614fz5qzgY96idsymQ0bjGJkajSeN9qbOKwTa9tyMY1BqbAIB2VEM+PQIADAZzCEXvs95qwPDvzuZTeDIAAGyuncf+Dr3bwfDArWOtNZI0AQDkeYo0SbjvZwF+F3/22189tY8bH+taxe9cedINioUFJLdISFjelUyaQ3BLfd9HzvNaKAPl0XN0biFk8UwPoliLMG4OKunBpJr7ksOAPltrkcb0WSrp9j8vkK490gME2413vn54ah9/9b/+e9b3fWpzELn9xvc8eB69U9ozjGtPwnPVUwqNRsP1t9hm8jyDMdweISF4C9voPcDlOKbnqBA3A5o//WbXvRdtjPuuEMq1Ic9zaEvzVkAh5Tb8t//lrz61j//gD+/bdLBPbbFAsHkOANBo+ogzmmsKFpPdbwAArq7uwA9u0j3+HKGcAQCGwyO8+d4eAOD9QyCe0jvMsgkS0Hp9/+4MH7l6DQDwH/ziv43OvAUA+MHXv4eaT4Nw98HbOPdqHQDwkc97eDDbBgC89SCDSGj9aQvUu7RW/t7f+YNT3+Fr/94b1pjc/V0ckubEfcbyuWIEREbvXIoZTDH2eQDD79na8j1YYwHez6zRsPwerM3dmWe0hc3p+dAGhs8wbXPAFL+bA9wGGCDRtM8evfcfn9pHAMcPH03nRJZZwA+4L66ZyIVd+IZ1Z7VFeZ3OrKJfi49fONdgcfKnAZqDbsIv/PPi/dICBYbTjILH9rFCeCqppJJKKqmkkudenorwSGGdVmWtdRCMkBIrKysAgHg+LxWvk0jOMUSmvG7LG05oa8UHC7nwBSvYcsPJhywiHssorT8pJ9GYxc9P+zf6zccjMIWmfvI5i894EtrzNFTnSb97muzsHCBgq3JjY82NbZZm6G8PAAC1hgefkZwzZ89DsvU7mYwQRGT5j4ZDTMZjAIDn+VCK7plOJpjN5txGicmULIl61MDBAVl7u/tHeMjo0PkLZ9BpkaV67eplnDtLiMMHt27isEdIVJLm8NnaP00SDTcVFhG13OQwhqe4F8CyZRIIH70eoSIzbbE9IlSnsXEG2wf0+w9/eBNzTW1Mc4taQH01QsDmhGCMD+5Dj6l/600Pn/7oRwEAm+cvwGOLUUsLMOJh4hmaZ8/QM6MA6TO8xsgLUPPJUh32DgFFVp9ZD5HN6d0qGyKMqI9Ce0imZJV1Vxq4vEmI0wfjEVYvv0z3SImDLWpEsxMiZ2tzMh04lCDLxphw+5WXoT9j6z1S8DyaF82gjqMeIQDWWgS1kO/3MR4Olu6jsKK0/IR0n7XRsBm1zeQa0PwuMpSIbN1CFggJcmfYwpTPsSIv16awAM8vbS2UR2tCqdJST7MMQUjXpSrxZWs1RGFpZ/InEOynidYaskCctHbXjTHIGW0VCxujMbpEpYxFgUZ7vucaarSFKcZNWXgzms+1/T1IRi/DZg1nE7o+831M4fNvASVUbqB1gSaYhTWF0yFIFqk1kim983k8xJkztA52927hcPAOtd1McWP1xwAAP97C4JCQn7SRIee5fHvH4OYe/eok05hOaGxWVhuIExqDeuTh8x//WQDA9ZXr+Nr/9r8DAG5+/3vo1mkuyMDiyCNk60G7iR2P+jeaGbRD+ryxuonxNF2yh4D0pZuDANzgSBzfm6Ut9y/PY1TdB5KcPqdCwFieyxYQ/D6tsUBezFMBUzAcVsCYRbaDz8WFF2SMgRXldwXfL6QA7E+PbyRzQgqHkxSPeiNus4XmSWhUeT4ZY9zZL6Uuj+lFEMiIhfVUjpkRBsfOdf6/goJkfEZILKCbJeoFa1Djc+61Vz/02H48VeGxVriGE3xdDrBKaACSOHYbihALqJMVTlGxNDr0+fhNkAWkpzO3EXi+hzznwYMA+B6BBQUMCwrYIh+2OKhLiLXWbZqLdNZJWVRiihe0eLgufv8kLeagymdUVIrvP+7ak2i2x8lsMsP1D78CABgN+ni0tQUASLIc85gW+mTWgxQ0HdY3Nt3B2ayHCHkSTaczXLh8kZ4zniDhgzAIAwx6tGnlWYzNjTN8vY6dfdr8zpzxcXhE90zGMQKPnn/+3EWkKcHYe/t7iGPahFbXNrC+trJU/zwFpIww69zAL07r3HeQq840tu/cp/uzEQzTUoeDOYYxvZ/Xv/k6RMRKjgjgB3T96LCHozkdFt1WDTol5W4+7KHTYDosrMPwxoqwgbSYLloj4EZIJZEwrZAIheipq++4tJotBD617eL5GpDS+9/oXoXwCMrvD+7DYyXUKgnBNET/0SGunaF3sptNMTy8BwCIlcU8J8UvUxIDVmazZIZ6nZQZFSrEU4bLhUStQ5Tc4eE+fK+kewqIP880/JAOuY21CzCz5fsIA9iMlVVkKPcbwNJ5B5uXCzyo+XT4ALDQC0qLB8M0gOdL5HFBzUhYpqsgAaf7GA2rWLHxLHEcIOW92MOMNQsUunTKhpICOnu2dW0W4HxPKW4bYAtqXSrXd/oftc33FHym6qw2kHxP3aSONs1UDSamQU8HPcQ8J4X0sBbQOs6HR7hdp/c4FQHA705KCcFrRyoFj+lgs7BHniZpmiDne48muwgGNBf2dm9jNib6dzU6RHOT5l0eHyKMqF396Qy3PmADaRJBdWn9y/EY04T2kbouqTyT5njpwnUAwGy/hztvfB8AsF6X0BmNQSAaaJsmAODBD45w15IxNloJsPoirRtfeajzulxGhCcXxkMsHD322NlQiNVAxHOqEQCS56mGREHcGmOcMmtN6aJhjYFwSpF0nIwVi3CCQeEloqxjtABjIdx0l8cUsGeVlH/tzfdv4WDGSjGkW3N+WFKy1ljwNgQlrBsLKbxS6RKeG0NrFowJ4R0HTgql21pYQ/uZEBbF8Os8h+VnCmUwZwr3SVJRWpVUUkkllVRSyXMvT7UxDWypv9rys1QS8ZhgrfFo4BAMchQsrbJCpCwRCSUkDEO3aTyGBX2+d/c2Rgx/r565gKtXr/MzG4QKnXimtcJBsaWLFMhp9RmQFCml06xPojhPc1Yu/v+4exaf8yQ5+b1lEJtF5+dnQYvOnDmD7UePAADbW1uw7BgcRA0kDI34fugcIq0x8FiFDn0f0xlZ/s1WA2tr5Oh3AWedI+N8PkOrSRbSfKYxGNH96/U6XnqZ3uPR0aDUyrWGZBNga3sLFy+cBQBcu3oNtxmF2Vhfx5XLF5broAVyh6KR5QEAUIDH5s7B4BH2j4hSE5MR1Mo6AGA41xjN6buzeYJsSqjVuUuXIT26vpsMoDO2LnKDBoFTiKXFnMcv0oCs0XJKkwnMlNqQJDMM98hRct7fx40XX+ExLimJZSSqt5xzbM2X6A/Jgt3Ze4TZhBCnUTzHYLTP9ysYRq4ezUO8ynTe2TTBO0NyBs0bAWqMYqXJDMqntWgAJJrGIR4kiKfUr3nDR8rIbiBqEJauJ1MDm9PzfeUjYmoUyRQyXR7i8WvKUVdpmkOS4c/IA+8fnuc2Ar9pISTTXolx84s+sLUMA1nscla7PcOkFsxMIohKhCrLjXN0V34AMFJktC3pNmsgFT/UWMilCR+mHBiuynMPQUDjZq2F4g4oVe5J1hqH/EgZuj0wyFNsxLTOWtkMmvfUifKwN6UxH0/GqAtCJm2u4dcJ0VgPPMzY4fVuo4uc+2ItrX3XHs93bdYL9NvTpNluwYS0bmf7b+Dhgx8BAAbDHQQpIbzrqweIFM0jv95AktJZMhgrbPXpOQejKWyPxj5OMtQbhPYcHY4QRbTX1FUbXZ/2o/7du2jVaPw8IZEwAqrSObyMnnO5ewGT4SEAIJ3O0d+lsRn3tgCvvVT/AMDzVUE6HHfLsIsIT3lZCImAz7koADTTTEoLmALOsLKI1yBUp3ikgfMVMdYi1QV/JmFQOjO780MItyaEthAF1GLgkKJlZfGM0bx/7E5HSCVR61YAgSgdhot1IJSEx/NaWjhUR8kQktdWlhnEMS3A2SzFZELI2zTWyPPyd1ttmrOdVg3NRp37aJAbGk8L4RCeyXgIzzwd4XmqwqOkcS8HFo7XhxCotQkm1DpDxotNquN8dgGzSWvgqQKHzHF4uMffjTEdUWTLfN4Ho7u4c+stiIw28Rdf+TgE89AQ4likluOxjtFYFs/CHOV5jsUoLQe/LWyyz0IfnZQn+QE97bmLvkDLKE+nyVtvvYN2gzYJ3w8x44nW39tzbeh2u6gxnTOZTLG6SlB0vRFifZ02A4pqobb5gY/xiDawtdUVt8j6o4GDNnUeoxbRu1tfa+HiefLVMdog4YPz6HAPnQ5N5MOjIzRZ6Xrh2hXkxYl0iuQGSIvILKGQMnwcG4sa9+/gsI+bO9TehrRYrZECU2+tIBLUlosXz2J7m5STydGe2/B9k0AUUUI6QZJxZJu02ODIs+5KC81G0e8JBge0ifcf3MPRg7vU7zxFd5ee37ieQof+Uv0DgIP9fczndJAppTDjTSGxMQxD1e1zTdiMfJD8wOKIliiEqSFk5S2aBTgb0Bg/0iliHrfpeA6pqD21oOE22ajRQJujw9a6a9jdGvGYCMQzao+Fh/mIaZQ4xdijNsT9Acz8GXwjohLx9j1F+DwA5AKyoJwUENSYBvIBkxU0kIbh9261gWFtUljhKFkYC13Q77aMFDF56QNjYKGiwpAy7hAKVQBdRHItrEltLKRY/iCxAAzTT4t7j6fkseeUe490vklSAiusQHqHWzgaUsRco7uJNX53rXyOwNLeOQgkhkxT2lyjzms3iFZwRtM9dpjggBWhSdiGFQVFaI/1c9k90Kt5FFEDYDIfwIxpzQViCy9dor3g0tkjTBNSzJUKkbFPzuDIw6OdYowlLE+dmc4BkXA7fKQTev4nXv4Ubpy9AgC4dX8b6ytE0w0HU9zr0zi16sD0Hhk6V+wVNNtk6ERmiNGAFeegDuEvv88qXx4zVtzILCo8EC522AoLnxWDVmSRJcY9RxZ0lTFO+bFacMQRXZeF5g8Jk7BRYiQsjzPZ/qz4Ww1R+PBIC7EQ+SXMM3DoJ2TG7gsyiNzeIFH62ppcAwWlZa1TCIWsQXD7+/0JhgOiMsfjiVNyZrMpclbAkwROgTHaIC8iXKVBt0v71oWLm+jw506rBcVKVG7HiFTw1H5UlFYllVRSSSWVVPLcy1NVvkBaaBcZVGr5vvIwZc0xzC0ytniDIDjutMWfa5EPwRDzfq+HNCGrQ0qNRw+JwhBKYMzUwgvnNvGII3rOXbiI1Q3K5WAgFzToBZEno7SW1+OklMfa/KSIqtPy7Zx8pvvuIi144ruLFJVxkRjm2HOf5Aj9LCIgsbG+AQA4Ourh6IgdAJsdrK2TM6unfMznpMUPBn2cO3eGf0uizlFatSjAYEDW+2A0QJ0t/3NnzqE3ICz6/IUrLifEZDyGZBM59D3n4BsEHowlq/KoP8TBPll7/f4Aly9eBgCMhgPE88lS/dOAo+mMKB37TG4xHRNsvXtvBzucY+eVl66jsUqo1eE0RYvRyqgRYechoTHZJIbfoOs1qWEZGq5HCj7DuwOT4vJlouOiMIDHFrQCUOSTkYGHLR7v3miOc/s091+y6pmQyNlk5Kwg4fvocj6feW/uHImtn6G9Ru+khRwXJFlHK7nEtTW652iY4CNr1+g5UYatHlGdjVRAM0IyHs5Qr1Pfp5MhkpjQgDzTONondNbmM0dNK+HBY2szTRPAkEUX6xlMVuYrOU3SOAZ0uf4MA3yeVY4CFcrCsOlvUwB5sRaEQ3iM0W5slRIun5PJ88K3F0HkuVw6RluItFhnwkVgWWNg+fm5NZCyRH9NQd0bUULZS4gARcdROzNHpWHRMl2IiJVSImDH0DPpBFcymsNfv/0+hgHnPmoKzDJCSc82Ojhbo8/1zbPoM8I6Hk8RKs7V05DO+bk7ilGbUBu2jUCvRu9dipLm01pD6+UQkMFkGwlb7of334POae5/5Wdr+MQrNH/T+RRSUrumU4H+iObLwdAgsRzhFwQo4LVz3VU0u0z9ZRpXVijK8Je/+DfRUfTMVqeOCxwBGag+anVaB+2LZ1Djvh4Yiwkjy52LL+DSlfM0TtFZSLUcmgxQHiaRc6QdjAuqsYuUkVhAeLwMPlPfgT5AXRENNw78hYAWCcP0uznmKpEDosx74zMdanPAFnSuFM5RWVgBzSidzmXhog8BCcl5tp5ZhMCjhxToMh1NsLpJe16oBEJGwXNtXZShMQaSmaFBf4p33/kAALCzfYCU0S0hLRRHAnueV5671i8jtLVx6bd0Buw8JLRw+9EuVlcJ4el2O7h+/QUAgN+M4KunI8pP9+GxC0e1sChwPE8J580PCeffoEQTeuEQD7hDNQ/Y7zNPO+ihGbH/xu4hHu4TLLt+9gzev09KzoW1BoYDWtjv3ryNz3Y5QZQMS/8cIUq1ZgHSE66tzy6LigRBidJdfxw1dRoldfIea8wCr3v8eYXPDJQ69fnkB7B8H7sra3jjxxQSOpmMcI0nyKXLlzEe0XuJk9QlYmvUa+j3aXJtbKxiPp+79jfbdHDWGg1kvHn0e4doNWmjqkcG20wdzaczFyFz7uxZNDjyx/OAkJMWrq2t4u5deu++9LDKkRk619jd2Vuqf3EC7O9w0sTdQ9Qi2vBXNzoY3PwBAOCDH30LFtSPg/4eLGjODmYZWitrACiBYrtGC7gRRTCccG88HsFnyuDKuU1schj97Xv30GSqMPIDFwo9Hk3Q5X5ceOlF3HpISkXUSoGAxml+eAjh04aL+ukKuk6Beq2gkTUGh/TeNjrnIELeENM5Whz++olWA582vMHNIuQTjlrRBtGM1vF8PsH2FimbNp4jZcpmOBghCFjZTHLn15GlMZDTuOm4jKIyViPkfok8RsQRcLBwivwyomP3SEhhIQuOW1ooDg83UiDN2a8mhVMyhScdBaOEQs5hvQZwifuisIG1FVJ0B/Me0iJyVDqvL9gciDlZZhD6bivJcw0/5LB3a2H4ALNGlHT9ErJoAOV5jpz74ikFU/jweAqRoOuteIIzmtqzZoE7B0QJ3Jz18JXPfZ7un47wnTcozLsd1PHyKh38uTTQl+hwerC1hw9mZJR8LrgKyX3P7QyKx6eb9zALaM5oVXNpCnSeO6P2NEkmjzDZoj19fOttrK/RwXR240WkHN042mpBsFLkyxqylPcOv45Pf/RnaJykRD6nNq6vNbG2QgZSS9XwyRdfAwC8ev4q4r3b1I/5DCGPa9Sto3uVqCuxuYqAlb6ap5Ad0Xz3OhF6fabVVlu4fHFjqf4BQOB57h0KsRB2bY6v45LSkpAucioG61/wfeUiBSnxYGG0lVSqFGU4YV2lSPidJKlA4VYlRBklL4xwvicW0oW6w0iof4korfvsW/n/fvWf4OOvfQIAkM8niDkqqrW6gU9+8pPUL6Ww/Yio+298400c8V61snIWtYj2MD8AfE6emi1QuyZPkelC0TalEmh91Oq0doXMcbBP+/10PMf7t8hI/fyXP4XO2eZT+1FRWpVUUkkllVRSyXMvp+ThAcqoK+soKingnEtTbZByQivP68IrtFoDhIwYzOIU2wcEbY5GA0CQpnZwNETAlmGeaaft/vE3fwjFlsbOYIKPfvRVAIAJfNcec0JXU6JIjy5KFKj+DCMBHMvJc5LeelLiwccmBjxBY7nnKImSxxAuKoNyHPE9wKnozSINt4zMZhOEnAxuffMqQk4Ac+fuLWimSc6dvYAZRygZY+CzA5rR2nncj8YjdAt6wKSIOTdGlqSYMHWU2znq7PxsmhKHB2RVnhPrCPk5nhIImBbaO+yhx2jS2sYZZDwJegc9WLmcRfLmd9/Ad/+UUtXfffc9rK2StfbaJ15Be0hp6zE5RMB5SCbDPiaMeNTqK5jNCEla21xFnfvn2Ry1NiE/e70euh2yMM+srWM2JUv16rUXHCoi4CFkiu/w8AB375LV0Ww14TVpIr545QLCgKyXdPcBgg4hl1g9faJ2m+uulENztYk+R+JsbJ5HkyPkpr37+BSjW68Me+iE1Lax9dBnJ84sT5Dv7gAAdue76Pfos8w10YEAPCGQci4XkVoEDFt70jp0RcJDEWVgtYVl6zGKGpCFA+UJevY08WXg6CEpDJznpvShJSEMZzav41M/8wsAKIHkH/zBb1Hf04GLePKk53IEaWtQVzQfv/jKp3CDczvtz4YYMwo0HPXx1oN3aazGE2oHgDzNobj9gRdAuTUtSwrVE86xchlJ4gRhGPJT4PKTGWORM1Le0gmucAKVDWVd8jiVacwYVZ2lGgkHHySDIVpdeu8qCPH6PqEeXljHpS5RxAMJ/PARRSjV6g/xapf24PHRETxGL0MvR21KlHXPCxwdmWe5+63TZCWaYushRWa1hkfY5Az//rABoQl52vneNo5uEwJQU0PkjMBYuQK/wfPLAzTTRuOHY3grdP3V117EtRVCRkU+hs5pPKYHh0gmRBfPWh72OQpsNttDR9NedrbbhFxhCslP0Gd6VmoPF05BBhalLi10AWLK4j+AWER4rEWxpxsh4PHe04w6gGFqP5GlK4Mt87UZKWD5nUvrwWf041xdYxpw6Z2RojWCIi8Nrzlt6awGuYD0qskAACAASURBVCM4v/PFiLClpIwEEgBCPg9uv/cO3vzBdwEAaTzFz3/pywCAMPCRMxozGij8/tf+DAAwjg/RbNLYCtuHznkfijXmccEcCORZ4ZwMF/07GPTdOQEpXYmYRjNCwTYNeimiiPbRf/FH38eVv/VXn9qrU922i/1KCuE2XGslQp6k2Sx2CeikgKsBs5AvEP1hH7MxLbb+3g4OHtFhMJpPELYpymUeZ5hzp4+OBogiGrzmbBW72wQ9nru+6gZVLShgwEKU1kKirmXkpA+PS4Z0om7Vk6KlHqcUKeUd+642RUIpOD8AbSwS9plBnpWJz3yFsKhVshAp9i8j+3tbeOEFCg9vtppo8QQcT8Z4802CwqeTBF5RU8oPkKZ0wMznCUxW8qJFwsAsTzHo06b18MF7OOrRO2q262i36VBpNM9jHvMCPTzCSoeumzTBgy1SRHYPD6A54WGj2UWfKbaj3hGOOFHhafK1f/gPIXJaPE2bYbbHkQB3ppj2iD+eDPsOAvYDDx4f4tPRGE1u13Q8cUrZZDREqkb8CwIR+zHdu/8Aa2eJJrBSOfj16HAfkxkpgNeuXYFiuPbOvbs44qSMF69dwdUbNK6+TWHnRcj2EgpPdxWHR9SvaTJFwhn9Ptj/AOfnRDPe0Dk2uJaWtF1kRe2yYBOTKVN+04e4ssHK2/wQd6bU/lmaQbAC4wWBi8SA8qA4KVstiJAr5ywAeIWCL5DOaC7bNEPGm5GGdRF7y4iQAppDbYWULrOq8jWUojH6xS//O/jKF0jhsSaGx+354298DWleGF4h4oRpmqCJv/IJysb7yvkNBExlfvxDN+DXOIlib99Ftnz7nR84U8oYUYafK+kYC50bp+xJA5RE9emSpgkiVniEkM7fLdQZVgzN4csw2KjTPZ6QLkzX5Bl83j9eunwFOSfDzCCxskbKRKR8DMdMP4UBWhuktK/qEGuc0Xg6HWKQ0G/tjfpYY8W+pQJErPDIsI6U0w5MxmNHa58mW/d+iHREFPXVbgtX2Jdm60++iXeOOIv6/ggdTjbYqAuc5Sixe/d3cW/7z2lspAUs7zUqxLBBc/kKfPTOsp/PpTpGPVJabr/xI4zHtP70+XNQK3yPzWB4jljfYtqne8aJRsS+TlEjxDxZPkqrK4aIJde1U75Lg7GYVJi9tQAARgAB++H4UYSAFbnQCPdda6xLkkqZswvfsQBhRmurbscAr0XPL88eKQVldAdFM7mIRi3dngdpYZ7hXMSxlDRA/4gM19lk5Axm36/jv/mv/gvqrafwww8oseTt9w+xv0VzczjfQmeFzhuz1kHEhneeGEw4w73vRws+uAYjPgPG47HL5h9EPvyQ/QQTgaIeXRg2YNnv73BnhPGwSjxYSSWVVFJJJZX8JZdTKK0yp40WC4n/LJwjmBlPMePyBLleQEasdQEU9+/cxxvf/VMAwL07b2AwJEvVaIOLL5ED2jz2MBiM+Ks5JWYDIGWKH//obQDA5pnzaHPV6iTXTl99UnXyZ5XFvDeLdNUi8nMSdSlQr8D3XRRNHKcuqkGbzEWJ5GmG4ZCsnOFRH/vs+f7w4UPc2SbH1jhN8LnPfA4A8Mv/1i8/sa3P0kergfmUNN/QDzEXZK31Dnq4eOEStS0XePSIq5ybGeYzun9jcw2mTpZQq9XBcFIkTdPoDUlDF56HM2fISkzTGXY50d5qHqHVIkh9Ostw7xFZY0e9PSQpO7u1VzDlxHlSA6EsoN8G1Npy6EDSu4+Ix7g/7EGzY+1sTSLbJ8rGCuFQlygQCNlxXsAgYPpjPh+j7pXjurtL49FeXXNWh0nm+PwX6P28/+ABGux8bSLPVej2whAXLpNFmtkyj0Y8yzAekJV9/lwKmy+fo8YiRX9I3816KXy2shqyhlVNFvJHz1/H5U1K+vbKJz+LmJOs9fpT3Fhlqy/6Ac5eJkrgosqhHtAcbITCRe7k2UIiM09hNiY0ycxSxJOCGssQMArRWulg0icL0DflONs8d5Fcy4jwF4qiC0pSCgDW5NjcpHn66gsvwjCVOpkO8aFrVwEAr7/RxA7T5r7vIWOq8frFC7i0SntGlkzgcW6f0fAIHbYS09kUKwFZoVaX0LSUcDXlIARskRfICBhGXSQEpFnebsyz1Dkq1wMPHc6Hc11nWOeYmlABhbep1SXVdRgP8Sgj2qbd8CEZXayHAbqclK0/mcP6NCejMEDMNPVbb/0Y+/s0f2r12FFp0+kczbDFzzGoZbQu6/MxssYaj4N0iQ1PkweP3oPi8g3GavhsU/duPsJ0SG0/v7GBsEaIR62hoMKiMvwIzYjriQmqlQaA6sZwte7tH30HP6zTHnrjY9dw6ztvAgDef+NHCCKav7FZcfWqAl9B8R6da40Oo897D/axMyDUU2AVjdrya/Gc3UJfEso7lCvIC4RHlCUhyDehRHj8ghYOQyimwAIPLu8ROfgX7iAWeZEbzgTwea9PZgPYGgcO+W1IWeTYkc5JX+Qoy0koAaWLPDmlE/VyIo7hlvtcE9FYg06b6NDZfOLcMqRSLljxsLeLZpto5FrnMuq8T2RpjBoj5UrYhet5mdtHAt0OO7HXOg5ZjGqRi3wVAlhbo7k5n2eQjP5aO3O14J4kTz9R7AJYu1AbC7CALkI6tYv0yfUipmdhOUlSZjRe+sQXAQBnr30cI06GNZ2MXAK6ay+sotmihZekqRuAVquObosG+OH9B/D2aKFceuG649SFhavdoa05VqvmNMmyzCk5x2kp9dhQ8JPKzmhAfbl3/75LpBQGdTRahTe6xPYWKTN7RwPcev8WAOD1b38Hl1+iAmfRagvv3bkDALj91tv41je/BQC4/sJ1vPYaKYTG6DIyDk+v+3VShFXwOAxUZ8Ct+/Rbg+EANZ68o8kMKUeeKOUBvMk2Wl23Qe8fDTBhr/xGq4GzVz7K/X0RnqUDb+vhj1GP6fNLL22iUacD+PBQ44N75FswnU5w4RxtGIHvY8bRUw8fPMSOIgWl1W46Guk0yWYHGDM9lKUZarUikWEfIqY5mOQWCWemDa2Hdoeg4dwAueaEflK7Zd6s11BboWiscxcv44gXvNQzjA5JoTPzITI+IIQx6K5Q+oRWq40Rh+nnWqPBtK2Eh4QLOybzMQK9vDIwGO7BMuWrEwvF9ZvaWuCz514CAHz2xs/inW1SYP78/W185tUb9LvqCF1eK2trX8Ttt8nHwgsi2JzDSkUOy1mFk1mMGityvrWwXBg2gXARI54sfVe0MYianKU7ydzcVNbA6uXXopTWKRKQBpILtmprEIWcTbW/AzGjg/vN936Iu3doPSFJUGO/v1q9i49/mCJJzvk+7t8hCn2tFeGAI0a8wMOZ86Qg3bu3h15Mzwy9AFlahtcWvgXWZPDYf0JCuBpeRluIZ/CNWO2uoM1L9yxSnOMw4w1Vd/6PxmhYjopKhcKBovH/ID1CzJRcR2t3mLVbTRctmKQxzqzTfJtNp0i4KGan0cS+oP3pyFjETGk1xjESNjhi34PP6Qg2sthlwU+iCLPJcv50mZ1DcVmqzBOY8N4xTSzqvI83V+pQTLvU6g0c7NGaHx4NERV0PuAoNetrFEXZ5gcPMLlPbXx/NMT+7XvUD8/DkCnB4XwEj9euFMJRRakWiDz2nwraSLhtD7YO0WzcWKp/ANCd3ULGe1PqryFmukqJzLlZHEuPK5VTcqTnu6LIvhYL+QutKyRqtXauD8aW9HLDb8E26Iw87EuYwj1Cw6ERUnnQupxHuqhJKbRLVLisFEl+tTHY3aP9L0lSF7EnhVxwAcGxyDXBYWmXzl9ztcN8T2EyofU3jxPkvM4GR3MkRUJFq1H451hr0ajTvpKlHmo1mj9BGKIWkeKaZxPkpuxvq1VFaVVSSSWVVFJJJX/J5ZQ8PLasY4WFyulCQLHzaru76hyORsMRVjjPhc4tRiOyKLormxjPODlh1MDqGbLujTGYsWe90SnVrgHgRQY+WwCr3RWEnGek1WwgSznFeJ47x+k0y8EZ5il1+zMwWp7nPTbx4NOkcKQ67PXx1d/5XQDAzTt3XYkNm2b4Ga5Ovrmxit/6nd8GALz4mZ/Dw0OyKt94601MOSX2Rz/7WXzsZwkB666u45//zlcBAL/+67+Ov/9r/wMAoN5sOErxWR2ZW6sr8Bny3jns4d4uaeuNZhMeyMIXQYSrV8gq6na7OGD4e78/wrtvUQRLksc4f5WohZfOnsf6BaKr2i2FekDIRWctwHREDsnnNz30Dgk2HvVzV2bihetXcHaD8mSkSeJKONRabXS7XKqh3Swd4E+R2aAPWJoXngEi8LxI5pgzBTPt7aHOEUwCdYz6NDcTACnP3zCo4UyLLQo5RcKOgDeuXMRslSyHu/ffw5hrhWXzCR6NGe3xNxGOqA3v/PkP0D8gq/Xe/hFmIGvwwvnzWFslC204mSN6BkrrYK+HlRZRUf1kBMWJN9aaXbTYCqqvruNah9p52HuIuM+Q/XTgIjpkbmFnTCkf7cNnx8FJPoXxihIrEhOupbXabBe+ych05uiqXBuXn0fb/5+9d42RLLvvw37n3PetZ1d1V7+ne2bnsTOz3Ae55HLJpURpRdmRIwuxjACOYihIggABhMBABAfIZydAHCCIYsXRByWOAzuSATuQKCiWLZkRRZqSyNXucndnd3bn1TPT7+56V933OScfzv+e6iWpmRp/JPp8Ggyqq+4999zz+P9eEiGp2IanvVkgsuuAly/mPE0ooKATI5Mo6JTIXeDkVFdJP/z+W7i8oftBTIdYJ8L5lbV1EycRtDbx6ud+AgCw8/538M4jTVyvucDugX52YbOJ1NYVATtcQn9fV4FsbkOUuJrCGcM9ZuB9xaQ5wit1BpaYo3VYgQ0iZi8ojgZVClzLAqPxzqRCQaqoeMFDn0irkyTDIj3f0IOZI5FEKGhOagQuJgQ1W1DIKAcvn4zA6Hus0ANf1O9fwQaYpPod8SYcLuWg1WUOK6NqpOVjOCf53K16cEsO/modaU9XQONsCp+qhrzCEZIJqVcUOOnpaxQ5YFFVT6USKieI2JFm7XFVggXyZAqsAHxFV5CXam3cOdak2anlwqJqnM0tbTIJgPvcwE8FV1juaKizubCGysL8pnxetAswPffxumNS5T0Zg5eUCGZBkNpPcQ5GkJPNYGAgx3aBMmPLliYjLMlyZImen0JuwSu9wfIQku4l9BkyqoYWOUz1X0k+UxNagLDK+2WmgjtPU1Cm+pRkOY5oHldQmIxL4+BZbqRl20YdvX1xDTt3NHHd9wN8/MltAECr1TKUDlUAkipReQ6kaVnVkWa9l1Iiz6k65Dog8RaKPMOgv0u/yxER6vDyZ180MNlf1p4qS59lVwnjEHrnkzsYTvTL4PoVk0mzs/MQjbpe6ONpjC4xuwupwKj0rzDL55JCoKCyvsqFCdUDZzjp6kn55OgIdSqFLnaWsNTSE9y4PwSnSVbZNooyI+eJt/vDjXP+Q6GhwA/zgs5CXeVE/+ff/Qvc3tcLWxGEZsLd+eQjLB9rqZzNgZ0DDTO0BifoEqekGgR4eOsD3Z+3PsD2de0emsYTZAQn/c7v/A5e/dKXAQD/xX/yy//O3KRpmoLRpmJhsYPGot7YuI6LCrHmB70u4ql+pt39Q9y5o2Gvw6MuRsT/2di+AO7o2cz16nBs/YJaXMB39eK0vOTjkEqVj3Y+BOcXqRN9LC2VkE8VMcEkg/7ASCdv3riORp2+EzPDu6c1maewiXvj2DYUbTwHgxEs4lU16g2z4eosLaJCeP/j7jEkLTSuB4wJcmrXG5gMKNBuMsHGhS19XUxiMtL9sXtwgGpN98ckiTHtaciu5ihsb+gFxQ0CDHOCjRTDwSFlCy32cfH5J+e+nG2+04CkQETf9mCRRDNcaWEX+j07dsbYfE5f5/IwBGhiyiUQx6R8OD3E5LGGgewowVcuafVedzTAUV9zrDKbQZHJXpQmsGgOUDaHLA3R+EzpJgGDKYeNGvLS9rUQZ4h/T29KzRSOUuSz8S44JmP9LCa9fcTUbcuug+aKHlNBWIUX6s3y8uWXwAje4OkJNjvEz5ESL3/uBQBApX0BHxA38Ktf/RIeHt3RPzXdNUaCmVDG+dnxHDNOlJJnDh/8mSadznSEBvFXvDCEU3IaLJR5pxBCIaHZPXIBEeuFaqkWYn1TjyuLWyhto5ksYJPyq98bgKsy6w2wGZku2gyrHT13gjO4tIg2r1+CQ2MpORmhQddgSY4mzUMrDnBszbepE7JA2KBDy4UlyPEuXaPCqEcbqDWG9U2tKsuPj1BQbmLKBJySE8IKoyriAmZToVSBJNNjoRpsgnO9aVla7iAN9WdO2QQh8eZc34VbZtwxYaTNtYUQjKwX/FCitTz/u+hkE/AG9X1gwaH3ozbtozLWc73yFzCoXwEAFLAACrX0LSB1SpWWAw96E7oYJAjJgDTyGCRBpsyRCGizGWRtjAnaG2VAPyY+peWgyEqjTYHyThbbFUT0mb2DCeQzcM3UmWJHnGd4TLQMKQqzXk7HYxMAWvN9w5XavLCMlz6n9wHD7hRbW5v0rQyrRGWIxsnMHZpZhnOn1CxYmnM+U2MFHrKSmzmNjHR9MhnjpZe1bc2bb34FjvvksOJzSOu8nbfzdt7O23k7bz/27YkVHpsrU+FhjOH2R7oisff4MeoLpRW3MiefbneIx6T6sBg3JeA8L6BKsqbtGcZ/HI8hiADFuGXIf0d7R8aUKAwCJETa63a7ptDWbrZM8nGlXgczJVf5TCeuH1Rj/Shy8lmCcJ4X6A00LJWA4fkbeid7enqEiBjl2xubuHxZxzcwJTA91mqZ3/r1f2BglbofoDzS2UxhSjvoeqOOr/3MzwIAmtUKHv6rfw0AOHjlZay+9JK55meBtUYHh0gWdMVpdW0d73+gT7aTyRQrG3rHfXCwiyqVVEejyBCw4yKHT5lSh8cnOCFvHCUZLKmrBpvrHmouqXTsQ6ytkkGe7wOgJOYIxlIdUiIiomSeFEjoJPnRh7fQIs+G5aUWDve1Suq1n3/y/VkcCKki4Vg2WGkKJ4AK9XfVyiEoff3gaN9EP0jFDEE7ibsYkeIQiiOj08vhwQHqbT3e3aCG3dv6WZ32RmhTxcvPJbIJla2XFrF3oK/d8qq4cVlXXRLBME0pFsHx4VbmNztzBXCyr0v2ruOZCJfvp1M8CvRz2xn18DyNu5/8/BdxmWDV+OQY4mPttzQ82cVxT4/HJJUICepaW1zCFy7oMn3YqEOQQGEcpYakOEojPJzqZ35v0MOAlCRFoSCo3xzbMuV7ZlnI+fxldMZn1RLLtWZKJcmw1tSVnE69iXjcp+ufnqm0KAiCZ7njgpGaiYsUCw39jD64e4rNtu7zxXoTFSKb9genKChNvigKM5dIxUxVm3N7ZsSnBBxSbzHFniktveG6AJ1aXdf9VHwGyoytJENG3jFxFiGN9b3UPI7Duxp6m4witEkZeeXlawjJeJBbKcDpJJxIpBTt0qhX4IT6t6IsMcpRcAlOXj0LFy4gv6PHLc8lGFVtW0jRYfNBk5YC6gElWS9y2Bf1A5oOEux/sgMAeHz/ERo1PWabroOFFT03deEag0NPSTBWGqE6QGlCalkYk4IUgwEuUGXcYUA00NeeTHO0HP39MZ/l6dmujTJ13fM8HJGadPioi7W163PdHwBACdRsmifYEILIz5Xhx9hMdZVXOmtQTM8xqQohCSZ1LRjlWqXIsWCToWZYQBQa1bClB58IuhkARdEigeLmexYrtjEbjJMSGAMKwERseEiQUSCd4wjkbL6KOVCuf1TpLHJco3VuZXUVdz7SMUX9kxOMRhqiCqpV5ESEZw7whde1oGX3/hFOaP0bDEaIIj1/VKoV2ESLKXI5m7NlYeIkziquk3SInNAgbkk0CYJ87fUXcf0zWvzDuILjPvldfCqHpywCMQaEZCLFLRuMSs+MKVQC/eOh7xrnXm4xo/qJJlMTU88g4Ug9AAUSE0J6fHRg8ONpFBkzr/GkQETwRyWOkVMpSwhgqdWi35rCJzdbxq1nIvH8IG/nbKBn2TjnOCCJ8q0PPoZHiohqowaPuDEsnqBP13b9hc/g+hWtnLn74C6iiX5Bq8zC5z77MgBgc3UdHQrovLC1hUXakHQ6y8YQK0pi3Pn1XwcAfOt/+p/xV//X/wUAUK/UfiT09pc1wQtEqd7A/OE3/gAnp3oAbmxuYv9IY61RPMVSm0Ltotg46irOkdJAzvPYKAz6R49xuqCfdd21IWI9ES93Ijg0GVQqHpTUg3r7QgegCSBPFfZPy42xgyapmI67R6jRczw5GeHwaPDUewMAriTSmDYthQAjRZrlVRDwspyt4Hl6oYnSHDtkThgGPuoecWCYxCMyUDw66Rmpe6/X1WVpABOh8JByXMAdOMTx8IVAlOnPfHTnCNWGnrAurXfglZwDz8e1Da0GqV+8Cr86fxmdQ6IgV1kphRnjiRLYm+oF8aB3ituf6I3NixcvgV17kfrBQZHQgSOdIqN7cYMGHAoU9JhCgxZxJ8+QkXFfo1HXQV4AVCzw5W09uRxKhTsEgX7z3bdxRFyRwndRTpSeZcMuF/Q5GuMMpZBEKQlZ8h4cGze29PtUdS30TvWzE1mO/ql+L22bQQxpAz4doL2ooY6FzjqSPrmMLym899Y7+tqeB7ZberP/3lt/hu5Ib2JDK8CENsaSMdh2KesVUGZus2Z5RYrBIvhkniah4NNEbzMLgjbAignjbu7aNnhTd4RwMgPt3L+7gzHxIjef28SUeFYfvXsL1bp+jkUhce82bYw9F8vr+t1aajp4sK/L/VmSoUGqutB3kNHh8rHimIz12H6jvgonIRjJzrA25wHLZgwTkp87mcCVyxrOOB5Ocbyn4fzJcISHpbrq6kXwmp53jndiyFTfR4vbcBxS7hQChSr7yYKgUNPhoA9Ga8w4jXCvR5BsK0Tg07tVJBAE96giByfzOnguCuLWZVmOZPoMjuCOBTXco/t9Hx2u38sguYvTnh5HTU9hNdXv4sRaR2wRFMkk3NLewJEIeElMieCVSuM8h8iJx+L6yGmOsZIY0iGzWiVhk2GrBWFc6YUITKbfaDBGSirMsOJDUPDsvK3MphtNp/jSG2/o/ysKPLir4d/A88yYBWMoyIC4UgkArsfU5aurWN+gdWUSYdDT72j3pIeIqBKWA03qAWDZyhxibMc2Jp1e2ES9qQ/P1WoFdQpMrtdryATtJ6R4qpv0OaR13s7beTtv5+28nbcf+/bECo+QCopgF844AjKge+d738Zrr/8UAODC9nXI8jP2LPU7iRNkVIIaRwUySurtnh6hTfBAlmUYkTHWO29/H89f16fHPC8gS0Ies8BLUl2aICPDujTLDBy2uroCh8i3FuPPZLBUnElq/UFIyyrt4zk33hyPH+8ZA6RqvYFaVe8611pLuNDRJ8alVhPDWJ/E3vrGN3CFqisbCwv4qX//rwEAtq9/BiGpFsAYTk70yWr/4AilBKRWayB8VSfQRkcnGJIter1ag6HQz3GrL7zyqjmpVvtd1Nuz3XHJuHeqIWpEwFWM4ZN7+pQokgSuq6+nWeVot/VJ5eJGG6Gtn13v6A4yIidmY47hkHbrfAnkD4XxcITRRI8B1wsgaEe/uLSEXlffV5Ep0OEavdMThHNCPkUam0oCYxyKToAijxEXdE9SoUH9GriOIYYPxxEK8rRx6hXk9EpkcQqnzIqKY7Ta5BvUWEKqvgUAWG42EJJF/n53H11SIvqVEDee09BS2KhgMNanmjp3DFHPczyEz2CL4VVCqBIT5BYsqvC4roVxmXPEbVTJV2nRDjD+UJeeR8ND8/6lk8hEmjiNFiRVw4a9QzDyKVpZXQWXBIv0DrDU0tWA0XgXUunqymZjGVe2tvX39A/x57v6+e+mGXJ6XxkHlJi/jC6lAiuhIslMtdi2XUil3/tJv4eCqk+cc0RUWRr0HJTTWTydwl7X1dO1y9cx2NUqrZ+98QLa39eQw4Nbu/AC/e7ydoCkR9/pMDh0SrQdy3iL2LZl1FtZWhjyK7MY5DP4KXm2a07FDBIW9Q+HBAgyy3mBoSqzqxTWLmnyq+dU4RBUt7zZRkwn6lvffR8P7+vqxjBV8Ki6kSYp1nf1HHPj5SvYWNT/f28vgipVeO0V9Mjw9XDvIUZULRzaNayQykhwGw0+33MsRIEBqRjBgJyqaM56HS4ZyrmTBBHNj4Mowt0TfUJ/5/EAIcHqyy5QJfLqggs4NF/4jo2I5ut8PMXjj/XzHI4HGEakvNyooU9EaFHk4CQbzKIMjqXvaSoT5FL3Tb8X4/RwvugMAChkjlASlJPuos115azb3cGHDx8CAC45Fi6T+V6F2Tggtr/DuSE5F0yioDkmggVG61m310X3RFfMl557HgV93vEUcpRRMBkypftKWhyKyOmwI5P/5jkFVEpk4NyFkPNXlKWSSOl6kiwDp7mnElYgixlMHcW0Hh8colIpDQAFJPT/Z6IwOY6uX0W7reen7e1VQ2uI4tRU6IUsjAdRGIaoUCXSD214ARk2uq726gOQZKdQJRSsFKR4crX1qU7L5YIqpDIbj43NbTRaeuFLRIwKQTB5lmNCTOo0y8xFDacpVE4vjO2joBJwrlIjI3vjK1/BCYW5jUZ9M9HwMwGSnHNExKyfTsYG3mKWhZBgJo9bz5QZIs8EHNq2/SlH5bP/rpEp4oWtCyYbq9lYmJkBMhj8+c7ODr7xT/5PAMDqX7yNv+nqbn40GGLvu+8CAOqdTRzTJur999/HKcn+4iTG8rLeEL7xxhuo39CqEvdqjOlUv9Bnn8s8bbXTwTe+8Q0AuhzYIviMASgc4l4EfOaaCQFGbsy+n8NxyE3ac1Cvk9RS9dDramjMwiHiUL+UewWDR2Fu7aUt9Ib0edRh+zNeQqnkGUwGYBQwyGxg94Bw9fEIbYIsn9asH7ITcd5SuAAAIABJREFUKIP0chTlguK5xkgt9BzE9ILlTILThv24f2J4I0wBjBQ6geuhTsqT569cx/t/8T0AwO6dD3BEk+w4zSFIHVOvh0YyPB2OUHqCRxnMBqNeX0CdAnjnaYPpGC5Bx4zbYHQgmBYJLNp0SYtB0WThMMu4TBfjPSQj/awm44mRPx8/foAXXvo8AGB56yV89J4em2mSzMwDh1NIUpgEgYuM1HCBZyOmZ7XJgYXn9WHle4+P8B5BF5mQsNxngHuUgkXwA7csk6WFXELY+t6bi21k97XtwTTOYZOVxaB7hGpFjxclC0h67vX2ssn+8YMQb3Q0T6mz/RC9vl7ov3vrO5hSeR2Mw6L3VTE5U5lZM/hYFcrAKtyxjEp1nubZtpnTuAIcA40pCJoPuk4Em2TbvaN91Hw9H7z48vOIRkfUJzE8MtFbf24dE1K5hFGMCo2r8ShC91QvzB+/ex8tUmnZEhiSdH1xOoYk07eGy1CEBI0xwKH7LZSeV+dpcZ4iIFnxiAkcu+TCv+igQe7j/OEJluhaUkvh+4/12MxaDUS0sTkdjOERpNkKLFRpDlocFKhJOqQ5HBxkVAplJOGn/T5CUmQGrgNOwbYyUyaMMi4ycOL9xUmKaPJkdc/Z5noeCJWEEl2Tdab8Cl57QUN4zGXICK708iNUaXMN6YMzUtHZHiRteITtwaFxJ5Gj1aR52R0jJXVmXkxRa5JSM50d1DmAQujx6yhhlKkyHoDTHObmLuT8dDrkucAhcW/u3L1vMuWElIbXNhmN8d/9939Pf3/g47/+u/+Nvq8wBKP5z2MSllXKzJnh6nBmwbKWqB9cs45qd/WziWT0zrECQpZUidCYC+d5DtC1KTCI9Mmw3Tmkdd7O23k7b+ftvJ23H/v2ZNKyPHPCYQIeKV5e/8rPGDvnarUKm8pdgR8gpjKYnaRmd7a6BASu3t1PJmPsU1r6oHdiTuB5nuNg7zF9ZgKL8mAcx4VVkvn8wBCbo0mEIRH4kiRBlSpF69vbeAand3ie96loibMwVqlQ6/UHGNBvXbt+zXgDDAcDU9Xh3Aan3SsbjtGi02NjYxPDZa0waaxsINzY1tc/jUxFpd6oob24cOYa9P/HSYyg3OzmEl3yJsrzzFzDPKWeZDpEu6nhoe3ti6jXKVsoz5Gk+t+VIIRHENu9e/eRkhmZ7dhYpCTmXneMjz/SZL3jpo1aSMnfDOZ6trYu4tIlrSbz/QYGA8rmCZsocbjxhKFFFRMpZ6m8zXrNjAewdfj+k02kzjZT4TnjH+F5vjEvZGBwHNt8dqlFXiFpaj5TCB8JPZMomYLJkkTqoVbX/bfQbuGnv/ZXAABvhw6iUZ/uaYyC2ILXr99Am4zdhv0+LF//7crlG+isa1+i2kJ7ltM0R5OcwSdTxCTO4FL5OImnsEt4pRCIyZgzLhL4sT7djw8fY0DVnjTLsd7RPkyWOMLwsa6W+PISrlzXyoqD/X0MKRrjjS99AVbp5VJxEVNUh7QqCDcoliQaIKRT5WW3gmNHX+ejZAyXvLLmaY5nQRVlhpQw/jC2AzB675efewnDviYq9x8+Rk7RNNVaBS5VkwoRQ4hSNeaC+3qMT7MUBUVdLHU62NnbAQB88vFHYHT6Lbgyz8W2uTEVzLMURV56nTAD1TGbw36G52hxy6i6mFQz4zZuIaWveRgN4Q6pmgeJODqli/NQqel7HJ2OwOi8uriyAFAWmMwzWORBNBpMcEDVv95e70xchYPK6hL1m2++p8YDyFw/d5YwOF5pnGeDzRl6HyURbFJppVxgP9VjcBr3oEjpVWlW4FK0y/LmOi4SUXk46GHtOX1dvUcHOLqvr2U3KhCQanAkbMSPKCU+HuNkQ4+LL6wuYZVMbwecG8UvA0dA65ZMFWyqBlR8GzEp2GpND4rPD2k5nospGQN6tgOP1j/WqmF1YwMAEA+nyMlU12ERajVSalq+MfJUqoBN1R6HF+gQdLxgd+Cm+n6P8jEcjyIV+lM0qAJ9oVVDnyD0wXCMONPqWZnnsGmcem6CCfnwZAVDls5fiez2Bnj3+1rNO0oLhAQtcT4zToziCLfe11lml65egqL5z7MbkBRpwWRk2BfaFJggOZUhL0oDQ8vEF4mkMAUeUQiTjSUKzN4bwGSNxXEMSUoHyRiee468pra2fuR9PXEYWxZM2UyBg1NpKggqyGhi7R8fGhz96PAIdykram//Mfp9/RCGwz4m9PDjJEbg6cG+urqKgCS1jCn0e136TAKrzDzhtpFuuq5rFmXXC+C4pdlW1xTBljqLhnsBtJ90ez/UfpDDU5ob7e8fmADIQigcHuiy8qDXwzTSG4N6rYGCJhSv3cDLf+uXAACH3T5yeiHCShUWLeJJHMMjBvr62hoqpE5yXddcg5TKPPAky9Dr6sljNJqav63Vng6LFPkEl5/TL2IYeqiQ6Zj0LFTIrCvLBO7d2QEA3Hr/E1SrekOwtrWKlWW94Xn44AgJlc4XOxU0asSbUjZaC3qgbW+tY2VJL6ie7aDq0IQ3HsML9KRc9TpnOh1G9ux5rnGrtmwbrjcfHMIty2y4OOdmk84sG7ZdhtAy4+LscwmHNpXVxTr2iH+iwNCo0UKjEu38C725fvhIY/OLl67hwrY268smPTy+rxULF4MAF69pJZEfVHF4oNVeoQpw6Zo2xtq8/gKmJabOXaQl9WOOfd3a5grSMRk63tuFooUMtmVK6jJTEPRenvYeIyTYLhuOYJMEJPA4cuITPH/jMxj19HU2W220yBhy5/4DrHX0hm1pexWTvoaubOZicV1PJA8fHaBCGwnb8nC6q/thpbGJNz/7BQDA7739Zzjujp5+c9Qsx0JG48uRDA6ZrwmmcNrVG+1Yfh6Rq6GrgXqENslQtZsu8Y5GAwM5KSWRkpJnGiXm+09Pe3j71lsAgJPTQzB6R7nroDxEcDAkxKtxMMvWK1hhQoMZ2DNBWuyMgZ9S0my2lbIQkRRdBhz7+xriXggEgjU9JpNphEqVnK5zgZxsMKoLVdhr5JycZuBC97ljOxgP9OZArnUAclouotxkb7UqFUhaFPcPTtCjz4swNKo0x3Ugs/lk6TVlG3gl5UBxov+d3zqEu6v7sud72NnVc/3C9lUsXtbX3jlOsbqt55H2ZoDLX9LPJD5NsP9YcwqXVhZx+lBz/m5/8w7e71HO1LLAhWN938teHQW5jzuLbbgo+ScB3JDoFExhoaX78vlXquDu/HiPHXgIiKPiqgQ2beSOxhIq0mPTZRWE0Pc4TRJ0mrTxCBgOpvScWQqX6f7mKkOTDmTuAsPogNzQxwEaNT1vVV0FOyWncD+AQ/CczA+gMv0eIxujQu9Ew+c4IDuYKRzIZ7BPKIpiFtwZ1oyLsizEzEqBMdy4qQ9JX33zZ9A91b/1z377n2Lv8ZD6wTWKYlEUhgvkV11kNO+3Wi1zyO+fDGbZYZUKIlpfGTg6S3odeu+99xCQYtxiHCmNzShN8Hf+zn+sr+1zP/q+ziGt83beztt5O2/n7bz92LcnVnj+21/5ZQg64cDyEVb1Cf345AQHR7rM2u92kZRl9Cgx6iptfzIjA9dJPbKw0DQkwuGwh163TCNmSEl1kKSxgbFsyzEndotzc7Li3JlVYwB88r721zi48yES2hX+g9/4jbk64WxsxFnyawkh/f7v/z5u3NAwjeMFmJIpn8hnJkknJyf4zne+AwDY3N7A9iUNXYSWi5SIVI5rGTt+z/NMGrgmq1HJdjQyv3twcGDUW0dHx7h0USt/trefM5WL6zeenvJbrVTQ69OO21Mmu0rmBQSRzO/de4CPPtFQ4+Ub1/Haa3qL3GwGKIiJ/8WXXjGJ9o7DEZO3i81t1Cr6+Q4HAxw81qfxauijWdefdxcaiJPSDnyKBo0H27bBqVztWBxVSgOWUpjd/dMa59z0R57npl8ZJ8t+AMx2MC4o86ZRQaNC1vqWQNHU13I0GCOkqsJiewFk/wQlBd75tlZmrW9dwTJVvBaWVhFTFbCz0sHimibETqcFVi/qKtbW1gbWNnTlBDbHIKYKQyKQzC9gguPYGJOKSuY5ZE5EXM/FaDg7TSVUNnr7o4/QWtPVmHqzhWmhT78LrQyWr69tEucog4+6R/vYoepsu+6jRlXAdJKh3dbXP0lS7JbVsKKAoJOVZXtlsgQs10KVxtd6fQGT4enc96hyaeIVAAVmHl6OwVBXi3ce38F7jzQMl6Qp1ta18dzS6qpRv0iZIY712KwEFTOvxEkEJXS/HXSPsEep914YmMwsTYCnig1jpgJjwzUeQY4tjdWXEArPgqFzzg1LQAlhAGklJQRFC1jCxWhPVzGy0xTrSzo7TFkcSb+sCCj0jvU8Mer14S/oKonj2ChIyTo6GaLZ0mN7/coKTk/0dzayAlXKhjs8PEZMSs3JsA+FMsJBoaBqayEl8jlz7TzFwZ3SUC5H957u46WxgyGpij55eIJLF3T1vRtwTIkIv1Fbg0VEYpsHRt1Tr9WRO3ouaK4sod7W4/fg7iEYXW/4yos42N8BACQ7h2gvaXVYuF0zp3rbc8Co+iGKDB5VHqqNCqDmxOwARIWCogE/HPVRKyvdroWTIz33vXzzBUQEk01GEh1Lv6OeYGgQ41nyFEWk4dnR+BQ+mR9urjbwoEuke9eGQ33icm2CCgC1jQAbRDWwRwUkzcVuk2Ohqq/NSzLkJATmUiH05s+14wwmtzIRCozWudXOoqnGwOaIaL757CtfwGCk1/K337qF6Vi/LJ996TXznbZl4eBQX/+NmzfRI0QnSVNIeimWl7fQ75dq3grai5Qf2BuhVtf363gNrK5pcnh7oWUq9LfvfgKLB0+8ryc+5ePTLjyUoWcM0UDf9DhJ0aOcrNFobLA71/URhrQgei66XT1JhWHFwEPHxyewqXRnWRwOTY5hEKJOPInpQR9SEHudZ4YVDgWzsAExJJWt0zSGT5LqN978Mjqd1Sfe9Nn2aT+ts6VphoQggZ2dXXievq+Lzz1nIJg0TaHKDc/xIUYTvagc7R1ggRb0JMlxeqL7odVqGoXG0fHQQH7Hx8dGpTUejzGmCShJErPoj8dj7O3pyeO1L37JqMbm2fCsLC8bSI5ZDhYJcmKcYULXUGxluHJZf9diZwk2mWNxXiClTaZtMdiyVAO4iMiwLFUKWUycH9tFSEqPwXBgFozA9zClz1gWx4ggTlEU5vlG0RRLi3oidF3H5LTM08pn4jiu+U3PcsxYY4xjTJh9IqcYR/o3r3Tq2NjWG8nFIoVHk/VyawmHJ/oa7+6f4uWXtWFkLfQRU5nY8nw0aWKtNBfgEwxYb9WwsKDvo173SxEB4iRBv5TshjU486tE0T3poUfPyglcFKTfDypVlE5jnstRwvTv7x7hy89pKG3RtVCQeKHd8VAKUgb9Y8T0TPJRFz4pK+qL62gu6nsJq8twKd/MDsYQe/q9Dy0bJ2TGOU0y5KUpX5aC0cRqFQUa7vw8LFUIA2OBSwi7NB60sETv9GB8gqOe5vpZwsdBRNyh9kVcu6g3nMWZ8eXYgYH8ppMpBMF5D3bvY0yur47jgrImtcEdQRRJLIzaS1rK8H9C1zMby7gQgJrfX0AqBVn2lVJQBMUWssAw18/C9Rg6BFk7IoA7JI5ZMkEiIrpHAZfmkt5xD+xUH8Jc38GEFoxCCFy6qWFWKwyRli7iHEhpQ9jrjrC/rxee1dUaWsS/EScF8kCPh0kaIZsTtau2m3DpkMPjAt2uHiMdaaFHaszFSgVrV3To57gVIqQNQ8ViRn0jlYJL9AW74cInLphddaEi3R9XX7yEk9vETWuEWLimFYf8j96FPKJxXUjYfrlm2KDMXRQMyI0/sTV3UDEAJJmPAX18LH3YfT3W/EqICT2f93bvYpXsPyynhmPigAIx3Ip+bnv7D7Gz8x4AbWb4mc/rA0qtsYTkZERXzCAc/d5bS3WwoV7nnn/+CjqUIzc53cVSofsqWAqxuaTf3enthwaSjSwO4c0/TpWUKD00omiAU8qMrNgc165pReZ7H76PCammK/Wqsad57Quv4eFDDbF1NhzD+VFKoULKW8VOQUJvpKlClThCru9gZUOvT+XBFQCOuvvobOr++bn11+HSe+NYFi5dLdf+q1jbfPJ8cw5pnbfzdt7O23k7b+ftx749scLj11cgKGUZKkadytzMcXAv0xUJ3/eMwmg0jk36byWsICJTwc7qqjnVTKMIMXmXxHFsFDppmiAn63w/cJET0VCIDOS1BM6ZOZVJIYyiqrPcweVtXeL63d/6vxGS7fTrn//SUzsgNcxRgHNpCFaccwzJIr0a1gxJW4gcLpUYvcAxhnfj8QCrK7rkNhgMcPvjT+g6lYnG2N17hIND8pkZDEzJ2HWcT3kBua4++ruuazw1XNdFQXDh/v4+Op3lp95b2aLxFA6VGdwgQE7fE3ghFOWxLHdahkzue7apVkVZbE65dz752JDMr169imq1hJ8kSpulIAwN7GjbFuifGE8muP9QEw/jJEWV7isIQ6Pyy/PclNxs24HnzXfqYowZaJFzjgWCqJiaxZKkaWpgiBwMIzqFOq6HnMj4tUoVVVLUVZbWETr65MumCqymx9Q4iY33CywbTSqvLy2vwKfP+GEIi3xD0iJHRmqKvaNT1Jb0sSa2baTGlO/p5w7f9bFFyoM7n9wxVvvM4Vgmk714GBkfnpgJHJKJXLvRxIQ8rkQWw7f0KUjEE5Nr5zhAu67/f3W1jcSisbC2jtGALPunKVbXNPn9eOcBPDp1b1+/ifGxhkNHowFeelnb0B8Oeug+uPPUeyublMrkrQmuYJUWOI4NRvb9R90xJEFOIstx656Gt1648TICUv5NsgRTqmDsPHwbR8f6nesPTiGprz++/wEKMt/zrBCFRf4/DCixKyUlypJAmgtDjGecG1NECIXiGaoDIsuh3PJ7LIO55izD8VBXZjImsFnT47C50EA7IPFFkSEnaHIyHcLLCJ6JgYgqr20LqBAU5IeB8dJJJxN4pPA5OB1g77E+gXd7UyTUD7UFD+ShhyKxMKHk6VgVyPP54JDq5io4zV9yIlCsakhi+nAf1Ut67K9FC0BHrxORr7TMEwB3HANpcgV4VG0Cs+HTZ5THwOgQf+NzV3FEawzGfYRXdD9ZV9aR9vQak0mJ8vEIUZgafgFmsteKTOn0+TmbHdbAUv23X3jxOUz6ep7g1TaOKdn+3Q9vIU41YpEO+lhq63vZ3l4DIzJzPYxx9Zp+nzqdVSh6F/d2D426ilemUEJXyT5z86dRp/UpqIcIS1VXwwUfU/VxHENRdfPet/8cU0e/E4uvvgrpz19SZozBJ5XecDLG//PPfgsA8LuWhb/9n/+nAIBWu42Tnt4H/Ob/8Rt4882fAwC88tmruHZNz1WxOgKjcaepByR0ADdrbaezhbVVPd4ZV/ijP/ojAMAff/N7+Bu/+DcAAF998wU8f3PLXFv5tzZnsAiFkkzBZmUl7Ue3J254hse7aDWorKQs9EpnxMkEC5Td0mjUUCj98CdRYWLex8UUOZXTTk96aBBcVa1UjDtxURQYkwttWAmNXPoXfuGv4x9SblRRCCMnBoDX39AOzxcvXcaFS9sAgBvXb8Ilh848TeE+g5x5OJgYJZqUcqZKUwonhJEvtBaMWopbymxCiqL4lEKjNE8qigKHVO7f3NzCkDJ+3nnnL4yirdVaNLwmz/MMli+EMNcQRbMQz/F4DNrHIYoiI+Obp8VRhOFUT16hkGBOKTflyGjRnY7GGBR6wvVsGy69HMPx2GSqCAD3d/SmJUoK87xWVtewsqahHdu2TF8B0kAmluPgErkPR0mCGvHBpJQG7qxUKmiT2ivPckwm82W/KKXM5tfzXPP7Kovgk5lXJoCEHHp930cZZ3Pci3Dc1c/EYjkqNb0Q3LwBbF/Q1/vyFzYR1PVkyhwHNqnHbNdDhbhLrl+H59Pm1LNBSC3yXKJLTtLNamgy304nGQZ8ft6A7/qYkPGkZBIVypXhvo3Fhr62pBYjoHdFjSf4+M5HAICtz3wOLhmfHR3twCXOSatqIyJOiyokmEVOv0rCburFqX75AvKPKaxzb4yU7Chq7RZS2hicnpygQpu9aBTjeF9vMFYX2ljuH899jyKVRsXBbWYczfO4wON9vaGyGINFCxWzmXHX7Q2PMaWQzeEkwgcUcPj/ffuPMSZ5PoM0ELpAPrMFYBKMNjCCS+S0e69UPURTMs5LFHziLiRFamBY37UwjbL571FK8z7BcT/FGazSe8mVj2agN9I8zyAK4mR4dXieHj+OU4eflBlCdZwMKfQzzeAQFGQpjmhAGWd2gICMKxdaNfQHGiZJlY3A1t+Z5QWOHxEfjGewZKlYBcScG4KeEvBoW6E8G40rGmYcHh2idlFvzA8fPsYq4aq5lFAWvU8Cxkw28Hxj85BkKTjtWrjrGBpCZb2JjTYZDAqJcoe8uNLBsENKPgbkZdioKpCTOSi4BYaSayQgn8HKZCpjZMSbSz8aGC2wXWPoVPR70GyvIDrU700tCNEi24BlPzAu/K+/9CIWN/QiLgtgMiR3aCGx9aI2nI2TIar0ncEwQiuiieuTPZx8vAMAcP/iForbWh7++P4jHE/0unUYZ1j40lf15x3LcGbmacfHx6iR9cXvff13cf+ePsCDcdx6X2eEba5voEZ2J2kxRZLq+634luFOjk7HBi70fR8JEReb1UUjM+eMG7uA3UcP8Jv/2z8EAIzHE4yIz/r3/oe/j5jmv0II894EnmvGxjSNAPFkGsQ5pHXeztt5O2/n7bydtx/79sQj5v7BLpxAE5Qe7dxFq6F3fKETGgZ3NfBgB2Qixxz0icBlcQuLBA+4joUTgnKm0ykse5aJUZaJR3mGAZHtfu/rvwdJVY7QD2DTZ45PTvHqF3W5/G/97V9GTNWPJMuMN4DFuSESz9MOj06QpSVcJczpS0mJbk+fguI4RkrKh+PDA6Mgi+LY7FLjJMaU0qOTOEGfytNrG5vIKNfFsmaJ3c1GAy1ibVncgk9QUb1WN2StP/nWN3Hnzh3TVyEpmPzAmyslvWz9wdCQZW0vNIqUNMlxSmq7k8N9xOX1JzEaVE4KKxV4BOGFYYAWGeqNohjdsT6lBY021ileRBQp+gN9+nG4BUZk6VRkWCTIr+O6SEn5BSFxSGTsPM0NUTlLU/hkGPa0ZtkWOPVHnqfIyDSxVa+afprGUyw0qUTGGGL6/XEiMClPgEwgpFPWoP+n2H1MioIXXkRzkWIuigwFQSqWE0CY3CXfwHGc8zPqGwGbKgPtdgOnZKwXKw7xDM/QcRwck7ePbftIqarQqjeRU1mfwUJA1/NyZwkXHf1b/YPbWFnQFbjFpUX0TzTpt7PcRGHpE5pSCnsPdRUltep46bU39T22WnDJpFEUEWKqFEqLm+pHnmRYv/qq/szxAI93db+98urncBjNl3ivr4FB0lHbltyYAUIppGXVwCrg0rRl+RJ2od/749NTHB3rKsfxYIB333sbAHB0/AhOQMR1aSMlu3/LAkyZr0pqKwCQbKbqEYXxa8ogMKVxIiHhEWzDJAPHnIxewJiZAgA4N9XWwGFopHoOKBIbIVVjpmmKKfWhqAQmPdpiHnyaR1frPtqBHttFHhuVVpwmYKVBoicQl0ZvEFhdpkpqwdH0dZUyUBztFaqwMBcZVUeFkJB8vrEapxJJpueRmleFtUCwy+VrWKKK6W4QIHmkx8iFyibuTen+IEy8Qi6ymaGmLUoeuUYNqLrmBS58qkIwxTEl9dMrL9zEzgmZU8ZHYFSFZwrwqfrFLI6cKr6KS0gxf5Wu0VlGRFXhP/7nv42b9LeLngc31O9TjdtGjaUqLViXtWoX1QD9roaIbfiwJVXXktxQN6IsgU3+aCELIQ80QnB/53uQpNLzc2BIWXm9b/wh8kKvVUGao0aV2hPGMaa5cPRwB93T+Ss8f/AHf4B3yFTw29/6FlptPQe0Wm18dOsDAMDNF19GbGgoFipVPTYvXVhF77Rcb67AI+FCIQo4pUItt4xR70JtAS7XY/Ct77yHNsG5n3thG2+/o9/j77/1ITrrGv5zHccgH81GAyB4K84L1J+Sv/jEDU+lWkNEJeMrV66iRaZs3e4APqmH0kTAr+iX4YWbN3CfBrIoClQIspkMevjgSGN9Sp2J9mTKLEj8TK3p+PAALXLNDD3bZIAkqcB3/vTPAACdrQsm36W50MD6hi6djodD08HztP39A+N2qqWYhfl3CakUhTATnBQSK8tk8qWkyWbpnvZwQtkjnU4Hd3f0RmU8HaF0GB4NRwauyrMCIWHUjUYTAW0Y6vU6GsRFuHrlCN/77p/TNUjcuHFT32+ziTSd/wV98OgAbeKOhNWqmXKjeIpP7upgRZGl5hpOB2OMItrQVitYWVk03+UQdOjXfIwpf8gJQvRos5pMhwZechwHpDiFZdvwqa9EIZDThsNiDMu0ibIYR0Ybnsl0YpRoT2u5EGDUx5alUKGQ27SQSBJ6IX3fGMeNJ1OzUUnSKWLi+Ugp4dCLNyoSvPOOnpju3fsIL76kVVpf/umfRZMM+lzfQaWhP+9UfHhkoWqBg6syh8uC39FFb9t1kJKqiFkc4fyIFqajMQpyObaDEDWCEy0BcziI4wxypCfH1ZvPoyL0+E2TDElCUIhXQbVOCqygAjvQGznLdmERbydsbYGH+plIZYN7+rdSKZAn+vuV5YCRpUHVc8GoJH3p8nVcuanVMnfu3cX+wfwbHikV4BGHzgGkKiEnBxn1W9hw9coFzavhZKi4132Ie4/uAwBykWIQ6ck9qIc6mBNAljMwXuYVMTDK5uEK5iCCQoGRrXBguUhJDedblgkQVopD0MZVCGHmgPnuURqlplQwqiQnCNCq6j4/GJ1iPNH9lkwnSIiPJLMqZEh2Do4NlDwupRBYem7mtg8VnJnPyGwwUxlSGj+pEsil/p4YySiCAAAgAElEQVRWYwFVcrXn3IJqkmUFY0iIU5IkKZJ8vvlGphyS+iwpEuTkkP38q5/Hl25oifLvf+dfo8/0b7585VVkD/TC/d7Oh2gs6XeesRR+UAYCWyZsGLkDh7akPM7RLa1J6lX4FAa6unkN3TFtZsb7s7BWxYxZHyxAUd9IFMbIdZ7WaKxh6fMacux+6w8R3dPQMR8BFtPrHAcHp3GUCMtwDKcrq1jZ1GuVY1cwIpl5kWawaQOgLAVJyIxdOJicEuTfqqDoULFglCOkhbE3GYJTZpmCMNmAvu2gS3yeo/v3nskgMwh89Ht6PbtwYcMoop+79Bze+b7e8LSbC7j7SFMcslwYU0/OFTo05zUXlsx64LqO+TfkzLBTWzXofz9+eAebq/o9WKh7qNFh5Wh/B1evaxVxkiTYuqAPcOPRBAnBoGtrHbO5/cvaOaR13s7beTtv5+28nbcf+/bEM+bP/XtfQwu6krM/iHDY0ycNxpUhFw6jHKNU71KnqTDJqEUmMBjoU8q03/9UXtWnzW9m/+bWTN1TEp7zPEO1rishK2urcKm0eu/DW2BU0uWyQKtDaoBpjK0Legf94uVLT+2A0WhkGN9nYSLGmFFLLS0t4uhI3+PXv/51bG3r8uSFrYs4PtY7+t7pCdrtRbp+hgEZrn344fvIqFoyGSdGkXTv3gM8eqQNk1zXM6c+x3EMKToMQ7z66hcBABsbG/ji61p1lsQ5imJ+2G5tcwMeMe5dx0G9VuaiMHzhtc/TtY0NzLN+YcOcPE9PT1Fv6irA2tqaVpZA57dsbc3MA0s/HyESY2ckRWbIaI5lo3+kKyZSzvLsC6mM0k1ybiDOMAyNtfnTmpTSmBda3DKniGg6NUaPQRAgIsjO4tyQIyEKuDTuCgCTERmEeR5CqhQVRYF33tHGlhkq+OJP/DQA4FJ9Ac0FfSINq55BSJRUZ1R3M3hLKK0q0P0ByPmFIai4PlRZYbAL1Gu677mtEBCRVRYDtKuUiM0qUJTMHuUFjnspfY+HINB5RZZtoVQkZVkBh6IiHh0O0PuuLiW/vvQmOJFmZS5MBbSQEpJq8DzPMDnQJ8lgIUK4oD1WKqGHlWdQEyrFzHhRKEzKvGVbkOShlMWFUemkhYBFBjq9SQ+3H2lipe9ZkJxO7xxGIarh6lKyw+HQ36aigEOVHwaOjCpmBXIoOhMKlUJQBU8KQMgywVrBdeZ/kEIoY/GvODOKM2bZCInYKvI9DPKySqPVdPqHCyhJOV++Z/xNHIvPqhgWgyrlbVwZxZRVCLjUDxUwlHqlepBDkMlOhtx8v8pyWFSltJgFS853No7GKUCVoXF/CpdI+oMgQWtBVxYrtQbuEJl9mOX40gs6iuS927dxQunu9ToHaLxLKGSpngs6YR03N7RBX3x6jP4Wmdc1KnjeI/NF5mGfxBICM28fl9vg9DzzPAensc8BU42Zp4l0gl5GYoxrV/C9PQ0F78UJLjM932wIYIGes6ss45lU8VwIqrR54wQ+jcEkStBu66pIAYlTqrynsUCzovvNHk3RHxPZfDhFOiHiNAckPZ+IM4zKIe4GqFGcTxq42COYb572S//RL+EX/+YvAgD+0T/63/GdP/02AI2msJKE7Dp4/rKmvIziCHlKVIkoBSc8mnMboMqVyFPkCVW4uTIGhgrc+KhNJnuokyCqXlfodPTL3qgzuE6puB2b6J7NzS34IVEVLAX5FDXhE59yEV5ANtRl4i+/cgH//N9oOOngdGpytSQ4POKc9Ho9Y84l8xwu5ZkUWWIMA4UQpiQNKCNhBmMGclAKJgBSKEDRwGwvtmBRiZQrG1cva5dVJnN8/Xf+BQBg3B/gj2jh/g//2s898eb1bymz4dGXUeZYSbP4WpaFAyo9Pnz4EFKVfBFgf187a56eHOMyqZC4JdDr6g3P8dEJHCrfykKaydd2YMqrlWrVbJaWFhfRooHfarUMlybwAyOrTpIMeAbewLWrG+h3SYFlSVTI3M22HLgk4XYgUPHK3Clu3Gm31m8iJoPBeDoyPzvp9aGIKxD4PmKalBvNOjJZZhfFqNEYSKdTnJ7qPqk26nCphMwYw4igsUq1CkVhkEUhzIbzaY1bHK49W3RGBOtwcAQ1DdNkWWZ+U0oJkHyUM5hcoTwvkNB953lhTB83NjbM5uvdt/4tjg71RvUnv/YmFkka2qxdPJOTxEpYGYwB5HuHQaEwplC9XCqUcVjztMBx0SR141G3j2isJ0EWcByd6Em/wQO89ILm0rRqK2gR/FhIifhUT5TjuA+iscBxAU6qFS+sImjqcdeRITKSaSOZYnig7zeJpshoAIyFLO3U4bDMqF+S4SHu7erJOmMOIGe2D09r3ObGwNBx7E8dgAqHvocBZhAybfsAAEIx3HukFx474BAlXGVxYwzoMAP3QylpeDsM3GxE07xASoctK58thNzlYLSQK6lQlIcki0Oo+Q8fUgiIMltIzRRbhRBQNP9xKAxO9eGAea55z7iQAC2orpSGSyhdxxxALcs2c7PigKINnoKA4jN+YhniKJUDRQGWkBYkXVsBZQ5VspBzwyFMCUyILziaTlAhiDoKThAleg7qxyPsEG/vm9/+Nn7xZ3UYb81ycaekPsgK6h5ZVzCBDVrU3njpNawu6gPtn4y/ibStN1QqEXhpWf//6eAEH/T0vKyKDAX1azUIjOItF4Aky4E4LyAI+p6n/fa/+Md4785tABqGFzTH3WYKO5SV9zxXWKO+X+AecjLuc999FyLXY81lDgKyEMiKwlgdZFmClKDjNMthuXr9mEQxpmR6muUxEgowzSsCOXG1IjWzCOkXCWJ6J3izgR3i6M3TSjd5AKiEVdQrlPu43MISHfJ+5qfeQHtRw/tRkiEIiI/mz1THlm2budOxZ9sNxmfGgkHgm/F18dIVPNzZAQAc90bokHv9L//yf4YqWYkoBfzLf/n/AgA+c/0mqmR2nInMcDn/snYOaZ2383beztt5O2/n7ce+PbHC8/xnPotb39ZlsCK0sUB5LYwfY3tLl60LyXH/vk6SHg5PZwZOeQFGu1GllGF593o9s5tjjM8i37ky6BbnGhYCgFpjwZzETo6OUVApeTCJMCHi7htvvIFf+a9+FQDw4OPv4sMP/u3cHWBZ1qeIyj+q2lOr1XD9urbpv3L1ijHfE4XChQ3NHJ9MJsiJ2Pfh7e/Dc/Rn2o0aGnUNCVWCEEtE0F3sLKO9pKGFRr0+Mxj0vBmxCzP1SFEU4Gegt7PX+bQ2HY/gU7Wk3+1hNNAnA98LwOkkXxSpyTBRgDGEzNPElO/H4wl88jhyXRfVCu3QfR8JkduPDk+MR8l0OkXskf+PHxivFiEUFFXJXNczpmaj0QRFebrm1twZRWeztBSUgU+DMDDPMM9z43skigKCIL7xeAyHE9znu+ZkYjuOqXKdnJwasna96sFR5P2y/xB9yobZurBVutZBqVn/MSgT97AX5+gRkqaYjfAZKjy941O4VFHhYNoUDxqgiUkxuRCEiAsyuYy7KGw97qp+iLUtfVLKxDLGBD/2+4eYRvqZB4KhZunnI3mGJt3v6PFtHN3XJMU4HiCme9yLCjBLn659pfSRGUAup4iIeJwwhgfH47nvUVnMjHc/sAFe1ua13wYAZHkOi8jMFudG9ZSlBZJUl/hD5sMiszNYDDZVeHJLQNLx17VtE5cglEJepqtDwkxhuYLNSye82VxlcwUTHgaFZ3gVdYWHIDNxxt8mz3NYVFFutZbRJwHEeHAKq0y5tqSJiMkVMxUwITxTZXI9D3Y59mx7VgHLhKmm50ohLdOvpURRjiWhDAFegUHQPJ3nuYEcntbCwMK4r79j0O8DVHloXLFw65N3AQDvfPR97FJlvNg5wQvk4YU0wfGurmylRQuMYJqNRg1LK5qyUMQpfvff/Cv9PXsfISYlojMtcNzXffb+8QH2B7rq6UkgJVg7zlOElFcmlTLvayo5hqNnGKeBh+1rOrLj0YMdRBmRk4Mm7lF+1mkRo0qQb1OOjcFt/OEIPtdzvW85UNaM6iGK0mxXmAqiBDNmmYUESgUPVwIFqbEiW6AgY8ZCWUaZlzGOmOgUPJ9CqvlUr8Cn18LVlTUc7ut9AFMSFRK3vP7aawiouoJnSGJ/UvvqT30Nv/ZrvwYAqCkLV69qFKfd7nxqXfy5v/rzALTvWnmdLnefins82WnZchDbeuK7/XAfX/0r/4H+/8Yq3n5Lq4eGwwF2HuzoH/cduKVJoJQmSNTzXNQb+iE7jmUghzwvjCmRkgo2PbR2u4kLxGRPcml4MgBHRtDJ6fE+3qcS83QyxVe++hUAwCuvf82UbudpnPMf2GD8sAkh5xY2NjbNZ8qyL2fMfOZsW99Yx0985WcAAIEXIKQoe8d1zcJs2/an4LNykS6KwmzAGOPGzPAsvKPUbFGfp0nBDFRTqdRRIXn7ZDxBr695Vu12E6trehMbRVMjDz84PEJIyhAhGUrqECskRuMyFNWDTVCjijOzMKwurxkulue5aDb1pnc8HpvNRJFL2FSCt7gDuCXMwOa+R25ZM8NIpgwUKeWZDaxS5jchBbxynFZD09+WbWOxVAe6NvJc39ODwwFO+rrk3agFuEE8maXOJjzKz5pKwBWlSktvSvT1YGZ1wG2oUl/LSrBhvjbsjgwHKaiHKJwSbsjRXiAX6EmMtx5rxcgdz4KXUSBf2MQLF64AABbby+isa4WJ13DxeFdD1ruHJxg90Bsh32/gJ7/8ZQDA0d17iKd6U5QXOSJSm0wmBa5e1arBB/sPcOuehrGq7QWEq/r7h+MY+3PysABAigKKNieKKbOxkVKgFGwJpSBo0rehUHKQJIqZkRmU2RByboMRhMsEA6NNdCGU2STInEGR6oorZsrinsVRZicLLsCschPLYVEulPgB89F57rHckEAxk5WqhDSbq7BWQ2eVDlIPP0FUjluPg+ekbhTScCCyIodP49/NczjlRZ8xbBVZbigDBQckzbuymFlxCCWRFyV3MjcHuDTLjNrxaS2XGSyfIKRmFR7xm467+zgZ6Xk8SsewiNYwKmK8+4k2shtGY6OWsm0XI7JbuJdE6Pb13/5B9BbG5QFluQKb4KHC8/ENCpXtjifgOW0YLBdj6o5hGqFevn4QAPW3EAw5n1+l9Sv/5a9g6znND/3tf/JP8X/95j/W3xlnqJKRpycco7qSQsF39byyvH0FCpSTZnmo0SEMgFmHiiI3nCUFBpsc8Bm3kZfyeZEh7em5e/ejj5AT7Dll2gIEAAS3UaVwYGnXkbv/bpuSL37xNfyPf19//50/+TP86q/+XX39jm/4UWDyR3JhwZg5RP5lh3TGmPmbN954A7/39a8DAA6PjvALf/3nzWfO/r3/I8yFP2X5gB99WD6HtM7beTtv5+28nbfz9mPfnljhSaZDpGQ0Ns1TfO+ttwAAg+EIuxTJfvPKFizaeX1894FJWG02G5iYHKOZOsnzXHQ6ZFtfbxgljMW5IT1VKxV88vE9AMA4jky0hJKAoBNOMh5iQCeTe0KYJGCRC1y/+frcHZDlGYoz5VrjySNn+0WlJKKodEFjRlXELfYpw8NSabWyvGYIxpAKtjMro5amf0IIs2PVv0nZILb1qZ1yWeKXUs6qYQrPFC2xtrZh8rCKQpjvrNUrJr/s1q0PtYkTdMRDeS+dpY6p3nDLwnRSwpTSwFKnp30TCdFoNM31h2Fo/i2EmEFNQWA8doQQhtR2tqqW5/n85opCmPK0xbkxLJtFXACe78+UU44zU2hYM4VAluVGseVbEiFV4649twWXVE61xTZee1OTLNeufQZ79P/7b9023hObnTaaZMIlmcKU1CZpbmGmT2PPVAWexClGZK3uVusoQ6eGxz34dDrlro+ETtRplkKM9bUdjyOc0thxj+9jkUiQa7U6XMrHW9pexirT72K70QHL9Okx6/UAUl+IVCIts7dCH7mv7yXyXTwkUz5XDdEh86+9x7vIxPykZSmlqYCmWYHALRVSs9Ob7ztIWZmiziGpmhFUbeRF+e4KlAFKtssh6LTPwSHo1J0VAoLqKw7zIP5/9t7s2bLkOu/7Ze7xzPeeO9bYUzUbQGMgGiRF0KRkURApkzJDtmQ5qHDIQ4RfHP4DFKE368GPfnOE7Qi/2aExZIuWFBI10BRJAwJAdKPRAHrururqGu505rPHTD/k2nlOAY2qWyLpCHfs9QCcvrXPPjv3zp251vet9S1JNq2sRetmDkQegSlN6QVTXcsLmdeYpygfAMIALetBXebUUrWiw4hKqMkIzXhXWiOcj3n/4gP5LTz9FFD6jtE5lkZQP6kqIplvCuXfC7TGNm07Ik21liq22oCI/Rmzeb55Vfj+gWVZbFCmJ9jD8zOvyTQ+3iUXquj9s7vsHznq6nB/ByUoTVUZzoUG0qOUZ8euArY3GrIUNH+eL5nKPaPfQSdufoVJxPSeo8DiXo/3pdWG1RBIcneU9qkFTVrOp1gpaOnEEau1IFh59VRVWmQ1+1I59bWf/zP8/t/+LffnBx9yRca+YyIaAknZkFHfMRY3nv8yU9tU2g1JOpt+hI2oZG0qstLRs6tsTSHzOu32CQViV1nGPHbI6+mHJxSFFKWUNVVDgYWaSjUoKVSXTBH4Ubtx4yZ/42/8TQBefe1V/ov/6r+WgQWPiK029jgkZ9u2j2s+j8dj/ru/9bcAlyZy69Yt/+/b39+wL/qpRHgf+5T/4T/435icuhyFv/Srv8AP3/0AgPfevcez0rDwz/3SV/k//9nv+h/f33Mv6vl06jfNwXDoN0fY5OrUdbXZ7KqCybk000xSPpYS5l6v60soTb2hckxtMLKY2rqgKNzLsVyeUH/tVwD48ue/9MQb0O93PW8d6MCfPwxDv/DVtfG0VBwnPkfFLcOiAGs3D+3RB678ebahOwfRGX/+BoK3WA+R50WxUQPdeuBFUfCOlC1exqzZCG6l6SZnqaoq+tLT6trVDWWX5zlpGsr9GfrqoyAIPF20XueMx26Dd73AZAOoKg/N1vWmjDkIAn/9dV17ekkp5Y8xxhAJddft9z6RLvwki3Toy9IjHRA1TmgY+fkVhqHPvTLGeqFLpZSvFlBa+2tJBn3fDDbaucLzkXPoegfHTKRE+iIreOmmc97PTidksoAWeY6SRpxLCzNZ4CqrfBVjZWvW0vyR9MljjPtdIitwdqBZTd3CXc4tZe3GmA4CskQc/zwjkEW8P9rlVJy/er3gvftS3bHIGImA4WevX6ES5exrg132pKls30QspVptvl7zjvRguhtrPkql+qk3YnDVVWucn044EZXxZbH2eSmXMa00VmimMqv9IqqNgqYiido3xCxDSygOqtUbB8BiMQ3yHyhP0yizBXuHlqShUgko5Z0tihojdNXSFu63gYhNtV2gDYUEQFVpvANzGZvOL8gWkitXF+A3vy6JOKJplBKJczVMh3RjN29PpjPWiXtvYhWh5Z4kVYdus24FgW8UrAy+mawKA58Sp6MAWzb3REEpFbSmJi8a0cDCi5tWZcWquJzDk1WVFwGNtSZq1DXjgEIyB9IopC/B7VwZ1L70hVMhnaavVqBJpEdjGe1AowtZx6hKlO7nOUXTV61UFKI+ntmNbIrCiSgCmDAgb1IW8gLkPhmFfy8vY1GS8MMfuiqtV7/zKh1ZW5Nun4EoCfex6EZskIDe2O2Lq06XtTjdYZIyqxqnsiRCyvCrkkKEJ8ui8I5KWBoCkdMIrGEhKSDnBwPOQhElXRXkMq4sCijjpnrPoKKncs03DTrDkN/8a/8ZgP9/kH3rE0657YB8Uk7s445TSnHt2jX/+ZMCe2PMlmDx05FULaXVWmuttdZaa6196k09TbVPa6211lprrbXW2v8frUV4WmuttdZaa621T721Dk9rrbXWWmuttfapt9bhaa211lprrbXWPvXWOjyttdZaa6211tqn3lqHp7XWWmuttdZa+9Rb6/C01lprrbXWWmufemsdntZaa6211lpr7VNvrcPTWmuttdZaa6196q11eFprrbXWWmuttU+9tQ5Pa6211lprrbX2qbfW4WmttdZaa6211j711jo8rbXWWmuttdbap95ah6e11lprrbXWWvvUW+vwtNZaa6211lprn3prHZ7WWmuttdZaa+1Tb63D01prrbXWWmutfeotfNw//v3fe8+CBUBrhVIKAKU2n0ERqB//rlIKq5ojFFr9+EHWgrXu/Mb/kvzb1kFyyCPHW2s33zXWf8NaK/8Nv/lnb33ClT1qf/N//YfW1rWMUdPPKgCuZxNud3oAXH3rQ5YYAE6/+FliGUvU7/Lq7/0rAD77+S8x3j8AYLpYMep1AYizGavYnQcdMJ0u3XXqgLTTASAvDKpy1xAEMD39EIDs5DZJ4HzSsCr54HQFwO2TC8raXef/81t/54lj/MW/8qv24GAfgLquODs/ASCJY3q9AQDrVc56vQZgPp9ycHjo70kcxwD0eh2U+Mh5UTKdzNwPWIjiyH20NUnqjqey7PWHADxz/Qp3Tj4CYLKc+2e6WCwoihIAYwz7++46lbZUck9+63/5R48d4/GL17enztbc3MwXcPPQ/T8YOcQoaI7WW2cxW7MxsD/6882/KZR2/2bNZj7+2OFPsPtvf/TEb/zP/8N/by3umfe7McOum1+dToe6dnOzKjdX1u10KIsCAI0ijhM3LlNilbuvRZH7e0JRs1q6+TUcDhgMdwDIK0Oe5/JbXfLSXYMKLFWdud8NoZRfDoKAfOnmUZll5Jn77l//b/7mE8f4L//xv7XGGH+eUAcAxGFAb+CWqr39Pp2Om1/KQhi5v4dh5MdSlhWzmXvPsnWFlQdS5JW/V0EQbNYzY/36pLUmCOR3o5Bga11pjrdAZY2/bq3dO3H15WtPHOPPvXzNyunRgYXmPEpRythXReaPT6PYX09VVQz6ffcP8v4DpGlKM+WVhkeXWnkuaLfIytibc65XKwp5RnEcEYbuPV6uVlTyrhtrqeVd/P3XHjx2jP/kxV+2KnXr2sPFKRehm1PXwz57hTt3eT7F5u760yThXuLe/zvPDLmauWM6D+YU2QKAnJKzyP1s58oxA+WeeTpb0O3Is0URxu53i7NzalmbRkGfncjds6kynOPGUWvNReXmaRAGVPsjAP7b7/3eE5/hKq/tdO6eUVaAaR6hVTSricVi5dlur0HbZjZTCLV1XI3dLErWn9KtmXZzfrb2xWbPs7bemgCaQLsf6SSa3VEKwN4ovcwKZbPKPZfFesmHdz8G4Gx2n3c++gYAZZXR6bh1JQ3HvPJTPw/ASzc/SxjG/kRl6c7z2pvv8dHJBQBJHPLZ564BMF2e8IMPvw/AKl+wnLnnvphd+P2p1x3S6brfCkOLDt3cPD09pS7cfLix/xLjoTvnL331C584xhbhaa211lprrbXWPvX2WITHRR+N56h8pLSN8Cil8I7qljeqUWzH1mYr7LXeNX30p5r/tIot73Vz0KOe7FZEbc0nIj+XscXpPfYfnAIwSRIGF3fd31HEB1cA6J++yVsXEwAuuorTjx4CUO2MuHjvthuhTTjqvwPAnema8dhFyMUHb/D5r/4yAEZp/vHf/QcApOMx/9Ff+kvunBdTWLqIJOgN6Aiqc7AzYHbyLgD33jvjg/vnALz+gzcoiq3w4AnW63XI88zfnyRy3rc1hkCi0zzLmM/dNYShoird8f3+AGwlxyz9/c/WBUaizE6nx3DoPPEw0v63snLNajEHQFcHDAQpunP3gkouf2+8Ry5IRJKkaIk8g0DRSYNLj/GPYkqmi7YWu8F7NlGWC7/88c3Hbtqh13Xo3en5KdvIzx+3DYcjglDmeJV7NGY6mVIK6tLtDFDKPc+H9x+wWrhIaWdnxyMYk8kFkUTLlSCbAKVVBKFbDj44eejP00lSoshF3VlZMhe0Z3dv6K+HSLM5E5QSGeZ5znQ6u/QYlVIeeQjDkEgQntFOj+GOuwYd5hQyNwMdOXgJCAKDlTGGkWZ37KJ6azRZ5q5ncr4iywr/W9u/26A0Wmv/efspqh9BqD3a85TrTRRpoEGUjY/YgzAE4/4eq2gz9axE7UAQaFDuxTG2IhZUNUkjfw1KGT+htdKbv1srCASEoXbnAuKoj+07tLCqq60pnFLJu17XhlJfboxpZahWDjkZrCtqQRPXB3Ahr3MQK4JCzldX2NKN6eZSY4x7Vqcqp+64a0wKOFCCGCxqHuDOX/Vh4ABklnVNHbh5cZAFjM/dd8sipwgd8rPYiZjLc+sVcDBz15CEMe/qDWL2JCsLw2Il6EdmsLXMl+09zlrM1p60+fsWS7G1hFvrd0VqjP8ubB6JMZtN0q1USv6+mSMqqFG4G11XigZNHPZD0kS2+9HlxtmgeovFgvsP7gGwKi+8H2DrmOXcDUJ1AuLQ7Xl1rf3aoLbeosV6hZb/joOQWjyHi9kpOpJLi8cszxw6O51NyHP3vs4XUwYDN09HgyGjgfutoND0Y/eu73T7DuZ+jD3W4Qm02tBJbDs5DjptPvt3RKlHVolmkVU/tgE0sJzyu4fSoBoIEDCfuGlYVLM7saGxfuyoy68/fOnD21z7w28D8FujHv967Rwb1Rvwa9euA/DaqMfd/VsAnJ2UfO/r3wEgDzPiym3oy9OPOancg3p7tuJgdxeANJ9x49YLAJQEvPXm+wA8/8qItz9w1NX9D9+hOLsDwNXegOs3jgAYf+ZlPj5zUOJb908ZiFNxeHSFk5PzS49RabOZpFZ5GDIMFI27GkWavV33JnR7qXeE+oM+kdAGWb6mLMT5UZY0dbO020lpaMG8yplM3LXN5ktS485zZTQkQzYbT4xBWZRE8laqLch2nWVgLw9A+tmi1GM2oGYB2v7i1py1+CsLVOA3fWyFZQuelmvc3zkkSdxCfH5x7qDoPyGbZuc0G2WgLeulc2ZWqxVaHIN6fkav5xwwBcxLNx+Tupwk5agAACAASURBVMPJuXPq017KSotDUhQEgXuGJk68AxuEIcul+66uc9LEzZeqNhh5VsViRV254w01Rt7dMIy901hrRak6lx6jUZtNX6ma0cjd2yQuCJupUFeUlXO6rMp9IBVVsdvsAcIYFTj43pjQr0NJN0GmL3VtUQL3K42/ZqsVyNyv2WxOSm9oeWvt1maleRoHNwg2FJgKFFrmWNrpMJd7rmpLKM6nMpaG5tNaeScn7aX+GOckytym9lSKW6/FyfFbjRwv/xGgUZG7hsho/25EceA/l1VFWVxujLP1mqxxf6uKRK43m+VcZFMAOjok7rp5ZKuajlBgh2cFD5RzZrpZTSrb0zIsSeV+R1bxbuCe/92+5Vjo8/7DgurCOddV1GMRuvPvpB0Wtaw7i5o9GdSOjpnLNcdZzo2Tyzs8da1YZ+4881Xt175HczI2Dg92K/jfSrl4JMi3m/2ssptnvn1iY83W4rVBBYzxU5bhToJW7p7P5xmVd4Rgr7r8+rTKchC6vtPtEMcyH5OQceC8zNl0RW3cvQ0ji1XucxyH/jqttYQSMI33xkymDlB4cO8+xrg1bF3PWEpwZsqA+cQ9mTSKfDDaTWKGHXF44l06xs2ZF45ukUTuc0xIbbdDrx+3ltJqrbXWWmuttdY+9fZYhEf9WLT8ZMhebX/agt+2z5mtXCSzmE0ZHxz7M6vGK9z+KT45UXn77z/6+SchP59k5WRG78EHAETvrfleLJBnFPHPckcbnI+vMnrp5wD44O1vkxdnADx/7YDJhYNR63LOWpKzonzOUXdPxtslvP8AgHlW8tVbLwJw0EtYvf4aAIPFgqUk2RVqAqm7/rPjK9yfu2hmGcPejovev/Dln+F3/83/fekxWltTSGhrrSLP3G/tjLrEsfutfj+hKx50FIes125cZZnT67loOQhSymiT4N1AnlpDUTrvfrmcsV67+1YaixU6IdARq4X73cFg5KOcQAdovUWPeqTbMJ83Mdgl7BOS4n/8RnziRz9pDZZQIu7D/StMJi4izarVown78oXD8aFHfhSPopt/3GDPWbVB9HSgiIeSJJ52KCTCtEaxCNxzrqoK1XfR71TVmF2HDi5Di2ng5n4Hg2DJWhMYFxWvztfovoOM++MdP3Zdl9jazcfVsqSWKEvrmK5Qe2EYu3ASKGtLHDw+4nrErELJBEhihVZuDq6XOZmbUuyOdynWsh7EIYlAP7dv36UWquvoygGDkXv/wkCjhUqtrWK9FvSmMnik2ZoNmKiUT1hXsKHrjcHq7fhw89kjgZewNI2xDQKiNiH+crnwif+9sLNFN9ZEkkjsnoOgfFFIHDf074b6NVZh5LtlWfp3tDsYkAnVVNcl/b4ggVZhfTJzyAY10P5zNc/oScLok+zNekElh3bjCC1Iy0oZPrLu9+NOykHo1ppkmnHcJFCHilAehEpiYu1OtErgTKiuC3PKYiBUm7ZMJ+6c12cdMqGo7nQWaHkPfirqEMn96K9rYkE5cl34d9cUBVeCy40PoK6hbM5TWJ8Ir7Y4KmPMFpKst0Fkf7+3am1+ZC8zG4RniwJzdKb73Ov3GwCG1apgOHDPczgImE5k/a0MhdBbpQmon2JNejhdUFp3z29/9A53PnrLXUL/HCQR3VCg5J1YLRVvvecSjw93jxh1N7xZwwrMphNOT9xemAQxyjr3Y9DdYdRxtNS9D+/wzJ57dwf9GySS/BwHgfcPqDW1UF1luWKdObqNqMPRzVuPHdfjc3i2TdnNpvJIldYmB2KbHfixuha52DCKOLnv6JtXv/kH/Mpv/CYAaaeHaeBsa/3G9zh+fJtHbz4/CgU+2X7/4wekffdwwiRlPHRw3cP3P+S1h44G+OJLX6aUBW4+PeHqgVuAbl5NmZ2764u6AbrjzjMMAq69+BkAsmnF6cRtEkVec102noHJOdxxnxmlDMfuc3FywrtSjVW99jqhVCHoOGG5dmMb7nQIw8vnt3TTAau6qcCa0zydLC/pSxa8rRX52l0nxpCt3DXkZd7sX0RRuIFjsawln2PQDTACG+d5SafrJm+nH2LmUgkRhTx44DZtkwT0Bx1/TqU3G8xCclOMqdGfVP73J2CeO1eWVDbHn/3SK5xIbte3fvBtn5cSRSF7u+6FvHp0lclMKFClt870x3/dywqMLKx1bT3EXJYG25ScETHou+dZ65ooEqpLxahINq+6JJV8CK1i1it5bsWCkcz95XrNroxx1L/uc3jquqYs3TPfGWmqslmUUzpS0VhWmd9wgyCikPysy5gyBi05H6He5BC8/vrrDIeOIv7G1/+Qf/7bvwPA1WvX+Iu/8TUA3nn3bV5/9bsA/JXf+BrPS2Cxf3SFQJyiDppMApoq2+S0aK0/sbLPKuU3FdgEfz+az/M0liaWPHdzSSuFlny60lQ+qSONQopm89SaOBRaSkGvJ85PopGvoq31m0eNpmxSA8qaVLmNXIOvYgqDmiRpvPxwQ5mR+nfR2oy6ahwhTbeTXmp8b6clqVBk8V6fOnHXu+pFnKfOiU4JiIy7ruffvEBPnaP6YCdgWrn5suqE7Oy6dWRvtMf5ygVLi3qBkqDLTqaElThUQc19yfl5T+UEtQuqxyalKzt9VpY+L2wVa/aM0Ll1zSK6/L5RG6iEqq8qMN6T2Artbb2prkJ5z7muNn83KPR2MN9sr1Z52tytt021nPGpJL1OQk9SEx4Wp4SyVq5XJRcTqW4rAppJ4nyly3s8H965zXTpAr7bt98lX7rgU5UXRB2pdCsLpGCOXmcHFbjfOjk9Z3jTrUNaaz+n6rIkkPt/fHzMC8+4iqr7t3/AUCqWO7sHZELtFmWJkcB7lRXk2SYPta4b6huUcg5Vb/+YzhPmaUtptdZaa6211lprn3p7AqVlPXzj0t8kIvrRqpXmeNsc6f5vQwNoysxF+tPZBXfe+wEAP3z9W1y5dhOAvYMj4sR5eWm3RyBQVtrtg96gGU3617az6qiuhlp4OjahfP45vn7LVWOdn52yu3RepNlf0BHtmuV5wdo47Zp69pBf/Q//IgCVepfvf/9tuQc1yUgqQ/QuH5VSYXB8TK2dd/zBB/dIRUfj1vUb/PSv/hl3/sk5p++6aqzifcMPbzuILppoOplEM5Xlu991FFigFNX68pFzqGL6XXc99z6+y0AieU2ElehktcgoJPI0vZhEdFuW66WnlvqDPmkqFR0VXp9lNOxSSmR2djbh+g2X7L1eLelIdJqVBafnkow27BOEkuwWhixXLpKoyoJAIr+ok1CbyycS/lGsiaysVhQNVLoq+IWvOF2JaTHj4/v3/PFJ7KKI0WDHg55aqacJoGC7pPESVs2tUA4QWEMh71NZliiB4NKkS1C6qDUOU18hF3ZCulKJU6qEWLnr73SG7A9S+W7AZOaOj28esjs+9ueJBPUKwwRw81eHG3qlrFbUxiFzd+7e4+z0PgBRGLKYL2QE//ETx6gNCJiEMplHh65eu8ruyCXy/4vf/n2++Qd/CMCv/LkefUEqXvnyF5kLlL+zMyYTWnWxmBClbk4lcZ9O4t6DtcInxSu1FV1vo9dblTNK/dGQHT9GZYkFedNaowSpTUxEKbRwpCMCSYaP44BUigbSSPskeaOiTVWQMV6zSIUVyPOy3RQtS3xFSUJXfrcgCBo0PdjMQrsh8YIwZHrh5li/1yNNL4fw6E7MtQY5uXbMu5LIWlwdMjhwKF3vwRK7LGRMc5ozLyLFbePWlKoTojxtW5NZd9TRwZjp2mm53L0/x0ri9qoHdByq0J8H2LWbd5nWXsvsrl4zkvtdB4peU7WEIeTyiLnBUjcURFUTNHpwSvvKowBLr+uueVVYyqyhdWb0R+46TaBQZUNl1EixFxrtqSJjlRcNq9DY2q3RRZEz7Mj1m4w8c9eflZZ1LkUDaEKhApVRT4VuvPH6d7CBG0tZ5syXLo0jjKckkuxvqgoE5e30Moaiuba7s4uWAoKiyMlknzgc7zGdCU2dLTi955ie6fu3mcm4AoxPibDbFVFYInn/giDAyjO11mKakVlNnj9+z3hiDo/eesd9rvl2ernaqsLaWhCKYs3FqePr7n90m7lU7jz4+A6333d84Nn9O/yr/+vvAHDl+rMcXrkBQKfXZbTjIPXx8TWGYyfo1+mMMGWz0VuQbHSFpTZNZcLTLUxff/U1hpKTo1VBLTkKD85WPCP6TIvknAcPHHVRLyes5KYuiopKfms9WRB0pKQ2ucqkFKE0qzk7d981ZsVyISJbD2p+9w9/B4AosGTiVMRdRX/PjWWwc0S1cA8/m76FrdxL3O12uX6zf+kxnl+c0es5Z/Lo6MCXfseh9p7jcj6j23XHjHeHnE3colLkOXGz+IYRVmiVIsv9Aq3DkKBZZIG5bHLr1QIkL2G9Lliv3X0r9XZpsfbOrbIabWSBLg3BZRlX9cnU54/loHm+dfPyW+sWA/fPwUb8bb3kaMdB8Leu3mAtzsNitSaU67p79w7LU5k7QUAti1do1SPigxsO3m5ekR9NVHuCxflGLC4IFaFQMyqOKKXGPwljQoF64yCgIxUs2XJBs5Ht7OxiJTciCULSxrGdrciW7nquPXcLJb9VlwWrlXuelZlSKef4pZ2AqnZz82JywVryws7OP+TBfVd9mIaRlzq4jBlboURcMdRuAwE4OjxiJs6MrQtefuk5AD7zwnU+8/wzAOR1xX/51/9TGcsFoeS3KKCUBVdbTSwlrHGkKBtKzuitSlLLJiXHepLCWnyuWRP+/btYFEX+ORpj/HwwVUFf3r9ev+fXsE4ao8Txr4o1q7kLDlRtqXOhoizEQlmGiaEjQVXUHVIp2UhM3VS0u7kq8yGJUqxpqALjxxvogEqq8Pb39jyF8CQ7VAkHQjMlF7ASinIxrNFLtwcM768oL9z6cpYvUUM3T5eRZSkSC3GgSJoq0JHm7sTRy9UypCvr0Us3r7CYuXmhsLyQjgF43oYYmXdFVvF67ebvSZDTSNGqSrGSYOw4UgzM5bM7UDUgtCSlzztTQeArs3ppzE4jPhtUnAkdU9elp8CMKdENk6asp6yruiKOhIpUAaWketQoX3J+frEkllrubm+HXK6hLDN/DNY8WiH9FBFZns2Zr92a1+n0MJJ/ZezSV0KZ0uXiAKhiBYU7Zr1ccSYVn/P5wjswRVmB5OXNlufYmTj465XbiwCUIQo21d3N/TRa+ftjtuZibWpqWWyHnb4P/n6StZRWa6211lprrbX2qbcnuLVbEemWp2i3EoMVirpqavETX6GxXi6YT51Hn63nJJJgdXT1GqEkMU1P77O766Lol17+IqM9B6PrICRJHBwYJ52NboVS5EJ/GK1JfSb4VoKY3b7mJ9v0zlvsHkqipwooRDRP6Yq7Dxw0X88qDl7+0wCcxF3+3t/7ewBEsUIL7Fdbw9m582SPrg8ZSvRQLWZ89LG7D3VdoiSaOj+ZkJ05mmy1nhPlbow3dke8/7GD+g6vdTl88XkAvnLzJt84n8loC/Ls8t66CgxF5X53sNOnlmoyW9aentnbG5NIVNztRlS1JKGWBYnosJjaMBekY73MWMxdctmDhw8pJNrM1jl3Z66FxM7uAKyLQqqqRsvcODs7ZzwWiqUyiA4ecZwQSBZcVpQE9nIws0I9Ugn4kw/88Ymh2FQHahSVRL7rbEkuyEa+WPr2KZ049fRBGAXsyfyNTiNUofw5N1TIT6h0fEqAoB+oTSWRsfSDhp5QrCVhfLlY0Om5iKtiRSlJvyZQ3Lnj5lT+/of0Ra3t+PiAN990YpmlgZ/5U47COz9/h6lE40W19MKGWb6mDoTm6MeE2p3/7GxBthbovC5Qov9jbUjI5alXAuvfJ1MbMp/wnFOX7t36jV//Gv3/xFHKRb7krkjeDwYddsdSlVZVG7pVj/z8raqaOG4g+JBcKny0jT3Kh623EDn8nHEta5B7/qj2ztMID263tHDncd8dj4YkQr1FYehFIAO9NZcCTSJinJ0gI9YiqDc9Z29PKprWFUYSy/PZBUgy7sF4QCF0/Wy1oBI60obaz5kgtARSrTS5WPg2FkEQXLoYZD2dMR046mpw75wj+c3go4eUu27OhsMBR1J1lwYxD2J3LafVGiU0UxKHhIIk7Az6aKEip6uCa3vunXt+2OOHH7q1pp6sSQWdj7MVkaBM9+OQN0Wo8NxkdEWXrh8npEIRr/KCctMJ4RJWoQWJ3BmkvrJzsS6w8q4EQCkJt7Ys6adCUY06XiTQ2ppIdLCK2mAEqTXGUlhBz3Xkq8Cs0lhZBPLaMBGEJE4C1oVQgbX1+7OtLZHsu4+2g3qyfekLL/Ovf9e1TTKV9Una5doQSMHEMB3Qk/U6KDVnt90aU5woEqnaNGzo4rQbMBq6ObBen1BkjvmItaJqCjJU5bX2NK6QBFy6QSMsamrr0VZTKRrAZ29vn/5o57HjeqzDY7f6WCn1I5pH8hrWdcX5Q7fo7Owfk0i1Rpp2uHrDbdbXn7nlK3dW8wvefP2b7rvGcHzV5XscXrnK4TV3fH+462+Atcrnclisd36CIPAb0no5pztqysD103HttuBEJub1qze4EMi4rEqswHXDbszVA7e4nH9/6uk5Uxs6ffdi7Y/H1MY5Tp2wRyX9hCZlhpHFdKC6RAI9f3R+yqxRUK3WRNZNzEUXwko2zpNznum6PKLPml0+9/mXAXjvuOCinl56iL1+FyP30NiSRjlZKcVclHDTOObgwE2W5WpCV/jnw2CPxXIDVZqmlxKwI7lApjI8uOfUp2dnEyJZAGZ1jZaSdn1cc7jnjp/emXjRujxbkwm/fePGVd97qa4K9P9HAKR3lpSloX4mk1PmCwe7h2HAocgnLNeFX6SyIudzzz0LwOdY8Qff/ro7z59AdVl3HFDJ7SgL7ZVvkzjyAno2LNBSspvXGQupzIvSLvtDN49+8PpbfPf3XwXg2Wee4+zCOd1f+IVbnGWvA/Dw9kM6oXtff/rlr/h37vXvf4/3brtcs7QbkiRu7kc6IWoqemrYid2itixzQn15qqC2pa/oWK8XrES+opumXhQz2hsThQ21p8kLqSbMcxZCY2hTMxVKNsAQyCKoOymVBBxJJyWYNQuo8YuspfIbhtIK9QlOtzHWixxuK+de1rZVnQNZuOMo8AKSURT5CkWnnCz99AiJAz8JqIWSC5Rmd1d6GnUj8sytwbZOqa2839mE7Fw2UVvxyld+GoDvvTVlLarBo93Ui9ZNJ2uOpZ+e67F1uec4szkdWV9Mp0c3d997LlesAnddH4cW21QV5Rn3RQiz7oeM+46W6sZdRiK0uj/e5Vg8pPfuzVBSeRbYFcc9d+9PC820kUwwOR2R2Hi/XLCM3T3bZ0TPSl/AGkZzd51JWTPRm/5lTzKlFEm4eVZN5VEJ5KYJmAoqyQe0tkZJLpOuV9ja3eN+f0BJcx8qtDgzYRT6FI26qqjrjQPe5A4pLNOFOJMZ1HLPbb2pGouCcNM/UOHzgi5j165e4Uj2g3sPHvpAR9sCJT3RgtrCTPJu9TVfZTiZf8y6EbqNLVpy0IJeSHfgnunR7iFTLXuYqgglGK7juPHRidIOCPBBYagFRNBBQJN5FqYxaPdMR3sHRPHj196W0mqttdZaa6211j719gSEx2zlJlusJEMpZcmlVn65mNIXOXvXUUe8yzQl3vIuG2g4jDvcvOWQimd+6ouPRDtRU4Fgqkc6pG/SCTf6I0pHQNNDKCWbO3gsiEK6g/Glb0BpFRdnztO0tUWAB5Jkx1NyN0JDOPkAgDiebTQGTla8dOS0BJ47OGD/hc+5v2cVxdRFJOvKEDU9QEYjcsms/0MVkQuXc352j6upi6jD0T5/fscdf+PBkvyOQ06i2YSXn3dRuolqetcuVzUBMJ1PsBIB9Ptd4qYCoLQUWdNR25Jn7pmaOvfPK9Ah04m7t1Vl6AhUORoOCSR6X2ZLBom75rmd05FkulTH1KLzsp5d8MIzrtLmw3vvg9AhQYivAkq7EYuF0H+2oJsMLj3GP5L5CN14ifbp7IK5oH1VUbIzdHMqTUqURF/9Xoe56FOMBzt0Qhd5Fvbx/Vz+Xaw7jmm6F4fEpIKiGGMJpSJwrzvwkaEpQmKZa3m5ZCWU0OEzI6qFQ1VPH664/oxDVSujeXDfoSKHo0M+/7x7R3/+y1/1iMeto2f4+//E9YJ7cHGfounYrS1B0zHaWEy5Gf9lk10BtLYkQmkYNDN5/+IoJNxxNEkURlSe24t8WwJjA4/whCrESFK8qnsEgsbESYKReYcpfVLsYl5im4xeW290oYz2rR/Yaq3zSB8/ni5qDIPAv1tRGPr5FkcBcdRQSwF13SCpiqLpWn0xYSkFAfVqTSh6SmmiCO9Iz7oI5hfumGIOh3sSXYeGUOZlojSndx0VtDgrsZIaMBx2WQmNOOjveNogDMNLpwlcv36N4Ur6nkUJ9aG7xtXZhODErS9Bprgv7UHW3ZpKRA1Hwx79rjt+b7TLcCAVgQQkoVQMrRfcfejeS72niES/RTNgKTJii52Ee7lDJE6tAVmnQhtTSxHFTqk5qKUYwyqmQgNexhShp+eL9ZpAhCFrNKWg+QEhRubpndvvsZy7nov7oz5J4Na17mjIonlvFKRSvFFrRW1K/2sbMcjNvlgb65OHtd0Un4RKk0ipozHG64fVJnqqdzHE8PwLrjjgfPYQXbn1I42h07RkWUZw6pDvda2IxlLEcDKnrByaf/PqHo3kU7bIyYVRWJxqxkeCIN4MPZKaxxGpCKAmGHJheg6fu8JcRGyLzHgW4Xw+48o1dw1J2mfxBLHaS+CUDa+oPBVycfbQ97bvdzvEsvgqk3tYy/XecmewWxUpcdrhoHtzc3rfr8hiGljOusUPHi0IM+oR5pxInJ8w8BWmmKpmKtVh8OITR1dWBUq8nJMH972g33A08KW/SRjSFzGnX84ifvrwKgDjW89x+JmX3DUo5cXXqtkCUztHJTw/p5ZcAU4fkIsg1leiBNV3i/hZ2CeS/Jx3zs45FEprnC15p9tUy6z49ncdnXCeddh/CqdOKQeTgss78QJzF0si4bF7nZhMxjtfzYkiaQzaHdKRRSXPa5/vUuU5deNw6pgXRF7g1uGzpFKFsn+0R5W5CViuZjxz0923s9ktmtY8URoTCLw9u5iQCPw86O2guRyx/pMohUtTDb74xvrJts7W5CLve7y3z8EN1w+t2x/w5htO4O7egztkcm+UUgx6buN4MDvxlMS2KObTCSY8alfGR0yFws2qHCVlxXVVuzIdwCjrc+hUHVNK5VQQ2E2znVDRl9yMchWihErNLko+J4HI55990edvTC9mDASGPtg54JVbnwfg91+ds7TSJLbOoaFMs4Iyl9whHbMSAcvLWCeN6fclp0Ev2dlx87QucmZCUU3Lyuc0BElEKNUd3V5CR+BvU9V0O+I8BIZI6BitNKEEGXWFp7GUcorM4Bp6NkrIjrkXp87i9QscjdXk4cRPRaGHW+k/YbBp2BpGoT9Psc78+6q1kio7WEwWRJITN+5regN3zcOdLtOpKLJP10QixDYcwZWDhl6OCfd/yp3n4oTvveHSEE7Pa/qHbrxHBzsUhdtUjq6MsVVDfVvfbPRJ1imlDxMwzC2hyB7cMTlHmRtTxwS8H7q1xg4CrkjfwWEnoSu5Op044uzCObzr5QWl9OFKVM0H91zF1sqmNAzGhYmJZVO+djRCSTVstk44GLr3Muj2mC+kym1Sk4saM6Z+KurVVJBLzlo2XWLlWa1URNn4FDokFHpwlVUU4oAd7hzwUdNwmoDR9WfdtenAO9dlVW7yZO0mB7CuK19hq4KNKj1mo7YdRSGJrOlFkW9RYNs5KU82W9d0E7efxXHETPYGVUI3dX+P6LO+59aAj08+4vkvOHmX8c4VOokLbo+fu8I8cutQogu0ODNVVTE+du93wQWxNHg9P5+xe+QcmA9f+xYfvf8eAF/7q3+VD0Wu5eM7Jzx73VV0v/HWW/SlkahWAacnbp34SXrLLaXVWmuttdZaa6196u3xlBabiLe2lsWFoBZa02t6sSiFqiV5SlUg3VMJEt+J+5G6Fat8Epbeyhw34D3QR+Il9ejnSBKXjFJO4xuXaJiIl10FIYG6PDxp1ostyXiopO/H4rziKyLF/uunC1556H5rHF2BvtP+CK68QDmRTPnFGrtwUVNQZgSSsBaVBlWJXlBhMIVAj4sFDQZ7rbDkAtft5hPWgpx81IFi6jzWUwvfqN0Yr0UHBOHle78U+ZqOdI8OtPZubnfUJV84xKmqMmKB+K0KvZjTYrWiJzRWpC2F0F4UFT1BtDphQiQVXtpYXwW220s4uuk8/Ycf32UgkP2f/bmf5ZvfdyjJLM84F42Vfq9LKq00VssFvd7w0mP8o1iT2GfZVKP0R0OOJFH57Tff4ctfctHL/tERv/dP/wkAx8e7nEhriSqvGQrt8vHsxMuYPRpTqR/7y2WtXtZ0g0YwMGbV0I/g6eU6iIlEyr/KKpDXoDfogiRan5dnTCZOO2gweJ5KtJT6wDVB/rom52jPRVBFmEDU0EaFR7GGnRGNJFZWZWSiM2KKklJ0quqqoCwvT+/10sSjwvPlylOdg87A92qrtaYjqE4cBr47/GA4oNcRQc0g4fbd78o9ySkbLY91SWQaKjihqNyzC4OaSPRqIp1tdFWURYWNLH7TX8qJ9TVsXk0PG12+I3wYBI80IGk6sAdKsRZ6dL2Y0us5hG1nd0CayNozjujJb43TmkqS0lezGaFQAoGtGAzcfXvmRh8lPcG/+S1LLUjgMzev8tVfcojld19/i0De48ViynDPIcdJmkB1eTG+xvL7ExKJ1qO84mztovtZ17IYiMaVWbMWdOVwOGIg1FWotW8bMVtOuHjovttJNYhQaTdR3Dlza6KejJkJgvzO8pSrIuj40kvP8Pw1t1bO3p9zR8RMP8hrrh66eX2NBZP7UoUbLbx77gAAIABJREFUBIT28giPNbWvDFoZRbmS+a4stbz5RoERnleHCiP3stNJWK3dPtGxuyylnU9eBtRCOda28OgjaI+qG2O84J6yCpE4IgwDogbBNZCLiJ81ikAoNn15NguA+bxASemaWlmKc6lu1ENu3nwFgHJeEMr7cXR4hZ3DZwH49u98nW7inunPP/trZIcibhp36QgCnWjNupELOtV0pNprOVmQXBeqsbR0VpncBTz7YnVJV+b47v6AuOPWtiQJSeXzT7InPuXGGdBabxR6TeVzQjQa1bSIT2K0CDIVbDbkRxFfSyQb3+T0hFLK6faPr1NvZet4YTjwzfy0gkgeeOk6lPjz5005oNI+K/xSZmvf2q02lrFAg38tHPDrMnFu3HtAeMVRV4sXX6CS44MfvEkivaLCYk3oBexqT7FpLFoWJlUUlIJ5FhqMbBLrIGClpWrJZkyFKlgta/LSfffjOCUUSujoZtfRFJe0tJd4Wmq5XlPJsxt0O6ylyiUNIv9yhGHIzo7b2E4envhZEscdyrWU2+eG6cJB7RfVhJ1RQz8UPLjnFpLv/eAH3Hrupow94zmByF/68udIhbe/yFeci1M3X8x59jk3RqM0i/XlKyf+aNZwr5vGoIP+iB3p3/TK5z7PvtCPR8N9fublLwFQ2iUfSC7E8f4xHzdOyB9/kRYPz8/YkbLeQWdIINUmy+UFFG4xClONafJ8EkNsRAyyVkiaAVGgKQt3ndFwExjc/eiCN9QPAdCfeZbevqt6TIYHVBKgpP0d9q6451OjvJCdyhUitExVKYrcHV/kpS9pv5QFEfOGvlkZUrnoMElAqB+lFHFDAylFRxyeOO0SCqWlg5CDQ+esTs5PPB0WBhWhULVJJ/DBh6ouMIU0Zw01SdiTgQW+PBhjfT8k1xupcQYM1jxFbkQYejE118NLxObKlXe6rK6oV+6a8yBj0JH39bBHJXRRhwpqdw2LycpTMgd7EUEoG0xPUctGq6OAb73qFO6/8qf+Ar/0y65K6+j6TU5EBPD2Rx8zkvfYoomSjSL0ZenhF6IRa3FOV7rk+2tXBXh7kVEeiHPaiXlONsTD4SZPb13VrCvnwJhs6aUO+t2Bb3wZBoZ+p6lUq0lFXXm5mLAUpyUHDiRXZ3dt6IkgaBxYIqkIMyiGQg/GVmOSy+dEao0X5qzCaKMIbzZ7ncV6pyjPLN959X0A3nrjDf7Cr7hG1Deeu8GHJ9I3serhZ5HS+A4HKvCUtdWFl4AJgtjTWwZLUTcCmXZDXVlNJHlelYGn8Xkenkyopez9SnKV/bHbD7qdAYNTtzbMzufe0UqTjL3r7phyZ8adh45++sp6Qa92a2dpLbVQlnE/pifq3VVd0RHpiK/ceIWx9La8H4QMUymB7yd84acdJRsMVuwfu/0sOXiWnV3pDVgbVqvHC522lFZrrbXWWmuttfaptydUaeGDX4UhaJIClxeEPoNfY3WTFKgIBc2ow67HYDTWiwaBxQge3OsPoE7ktyrfumJbRk4pHmlvEUVN4qD2UtNaaQ/NKxTVUyRn1bX1QlBRJ+HP//QvAfCbb/+Q43Op0hlfYy16Qckyp3fhoPBotUQQPUxQUUuyYKBjDyHqxRQrCV8zbVjJvSosrGVg76YlWjzTzmrBRaNLoQImgmh90Onx4mcdsrAuP2D4FCjC/sGI+cxdw/37D7h6VbLjd/rsHzpv3VSVr67phrFP+tzZGVIIRVHka3/Pp2dL5ueiz5Mv6Umvpl63z2LhotDz6QUPHzr65GjYZSw9ZNarNQfHjupK93cYH7vWIXmW+QTZujbMZk0fpj9Z28yWjf+vCH2+6mduvcT+Nff8R6Mxf+5P//sAvPnu67xx+wMAjo6v8PZM9Jn+BK7x+PgaWlC9JOxA2bxnETevuErBrLZMRbsmiFL6yY9TLXqsPOR9++4dL0KY5QUPzty83n94yujEReYjExB1JCo2lb+GIHBaOQB5nm0J01lySVpeLWqfYHwZmy8zqqYNRDAkjGU9CGOUasTawPq+UZqmFVFeGSTfnaJeE8WiBxatWM6kzUBQkghaEoQBPWkFMz2dcn7uIvC9nSFxV5J1ww5VvWkJ0PSLq6sa29DUURfF48XOtk0HAeGWkGogC4gtc/rSCb0wEAdN9/MlSShJyP2E/hVXqXn+8GPqtbu3L3/xGvMLh4wcXumSitjcZDZHSUXQr//lL/GLf9GhXl/50ucYjl3U/cUvXuVf/KvfdvdhmnF4NfT3uUHSmoTYy9g9vaQeuXHkeU0qtGQnMx5BHoQJ+2O37mg0mYi9FmVFWblnparMZ0cUWQZakK044srRjoyvoj92a9nLu9cYCMIadRISqfCcdU7Rolf0XG+P7104OulhueKLgXToRnPyFEyzsZZc9rCsLrEC5QRGe3S3MpXXcQvjPqN9R6XZcsYsFyTSBmjpHYYJKQShstpVpoHb+5rikICIQHqKUQcooYGMrnzrB7YqCI1R1PLscms2/b8uYZ24oli6wRwGzxLuCp1UV8zuunUusBFWqEmVWc7uuLV+9/iYci2Vz3nErnJ7w2R+TlfuiV0UviXED996m5MPXEHOV3/tFynPXerMelCxvubm+3fe+xYnsr6+9trvcGXkKqIfnJzx+Zc+C8DnX/pFvvcD19vy3/va1z5xXE9UWt7eDjyJFIS+KiNUtS/Ls+TeaUmDkpXd9Ffa7M/K5/boQHlKS5t4SxjJPlL50Hwy1qIF6gu1phYoWSvoiKBfaepNydYlbP8wJZFJcXh4zJf/8q8BMPuf7nH1wj1ANbxKX/JMwuUEJQJXIQYli6+2lnUkwlF1STCTXlTFkoU85FkUY2Q0y8WC1wP3osfLipGo5U50TSaO0DIOuNsojI5GvPKCqzr77g/e4pDLQ7BH+2NiLQ5VFDMUtcvxzoCulPUGQeDLre2W2FW/1/W0RJ4ZLgK3yZ19cIHcci6WC5aSf9DrZr7yrtMbkDbUm4LFcpN3srfnFlxWM/ojyREKAt8LpSxrL3fwtNbMQYPynLoG/KVoME31IZawaXJrLZVQDKouOd5x+QxHRze5ecOVaN6+fZexcNXTt99hVYjg284RWe4E/UL0NrbtzdqaTRevp8vnKYuKUFRwCQNPbWiDV3dNdYTsgcRR6MoXAasURt6VqD8gkfy7H77xEVo21t3dPSbSv2eRFSybZ2XuEXUkR6ge8+DBXQCKckUti3WSRL78tcwrLypZFtVTKUov1jm2bFRWI7rdJr8voBBnXOvAL5RWBd65NChWTR4RBUruSTftU8pY1vkFQdg4TiHDgcD06XWCwI1lNrvPSgKUbtr311/XBUboLQvUZaMgviB+CqBca+0FBoMgoCtVmKvZAi07fExOIu/QulyTSP5VN03pyjvR+8xN3v3+hwCojmJPhEJvXE+xsqzP5hFKuTn8M1/9JQ6fdVTK/GzC/MKtB9/6xpv83b/9OwAcXulz6yU34LJek0TSdyyOL13SvEgt3b4ItlrL55Bq0m7OTIouj0Zjn6O0mM1otB2XWeb7s6Xa0jCF6ywjCCRtIrAkksMVUDKR4HN87TmOReQ06ZSku26jTG6co9+SUujpwlNCaRSRSr6SKkpKCdQvZXajZlxXFarh27YqioMgwkhgsVickeVuDipb8up33wCgF1j6u85hm2cXKLnfloCqEZXEYK37bmhCTNV01w3dPowkgIizZIxB6UZSRIESrtkasE+RaxZajCidzs/mRBIcVFnJ/KzJuezR8Ha6iJnddqN/rvsLvPyMexaDvE9SunFd7/V86T0dTSB5nw/fu8MPvvMdAK5evU6xcFXWvRshb7/rlOBf/Tff5tldR6cfnEVUH7hKveOkz9n7bk/6+vJN3nr/zmPH1VJarbXWWmuttdbap96eCuHxScJxipF28YoYKxVD2kRoqaIKbE4iks+VxSMzFidoCC4INrkIZiUJWqpQ7BaXZrf+V+uta3Bxlhxfex4h1JrqKSS0f+4XrxFJxNDvHrC/L7Lf3Q4MHOxKbUimDmYL6swLeAVYAhnXeRLzu899BoAX79zluvQJmemQuUTCRVbweyLB/61qwc/K5yONp67mRrEQD/1+P+E7gnhWpOTSjXb/MCUMH5+Nvm3DtMvouvOykzjx6FwUBV4y3ljrdMlx/UkQZKTIKyqJirrdiIltOnNrr/qdBFA3qFpdo+Sc3U7MrWecVz6IQ65J0vV4/4Bi6SiTeb7A6iYpfSNcmUYB0c6/o/DgVhnMRlBuowullCJgg8xpf4jGyNxJun20VOkVtWIlCdqvvfYdXvziF9x9ijp8/mVXsRCnXWYTB+MOuj2KYhMxbhI+fxTuuDz8MZ3MCLRD5tIgbvIYCVC+B4+1FbX0LrJRQDyQfmhmg7qoKGYkdEZWfogV5CRaZ1wIhZhX1qOti+k5SKWECuD83D03S0UiFWGlwd/zKIoY77mJsburiaLLz1N3iRK1KkUlSE5e1L6zeScJUHWDwhmvV6NMyWomKGMvpRTdk0Djqw+zcoWRnnKYHIQGiLo9rr3g9IWmJyNuv+OSe2eTOwy77j7UxqAkoo6ilErogXVRUNvLV0zGcegR0CgMPdrdSSJ2RHTPBBmxcOIdA6Oxox3Hu4dMJZH/4MqYnSM33vl0zq1n3LuS9GAilaPjw2e4+ewvANDv3eL+R268y/mcf/0vHY31D//OP6Un9+ell57zejtFZb0QYhzHl662ey5PmIlIoO11GO87FCU8/YihnHs8GDKR96nKMuKk6Z+XUwl6nnYS335ilheEgsB1QkMt872fxJwtHHqTnzxg9+qRXEXJXHa2/q0rMJH/yCyHK/dOdLGcS5+3olq6xPhLWp4XrKZy708uyOSdq4qK+w8d8pCXBrl9XJze48FHDnkYDxPWQtVNzqbsidbU+vQ2K2k5scwK7t521NvnX3qBqnJ7z3J6z6eGFMYy2nMo1myRUYt2W10bInkndnbGIHvqgH2qg2a9OXjyGMuSQsTShqMeWuD8u+cXdLvumjtph+XErQemjDmMXfUy9ZBaqn/XH6y5c+IQm+44oSO5GGE3ZCD6S9FKUy/d/IrPh3x836HI99ZTcu3uZ2W7sHSI7PTD96lFoDYIVqSpO8/37v2QIHk8EvlYh0dht7LFlc91CYIQ1Si9VhlCGWNVSNBsXtTeyXHV7VuLu2wAgdZEjaqprfxvuX/3JRH41dQagqYs3bjFrDmmWRzBPlUvo91x6mmMsJhw7euvAbDXO8JINYCmphLKSZfGX6dV1sOZD29d4fw/+CoAb3zjDbLSiUstippUerZ8d53zPwrNcKYhkuaOISVrKcdUScQd2ei/mcG7Dx18uFs95BvfdM3cvvCVLqa+vFM3SDuUkuMUUtGRB6aV2vRsKYpNsZIx3hHqpImHb0MdsRI122w15WDkJuCNK/s8PJ34e6ID7X/rcN8d8+KzzzKUlzuKY9SsGTs+YyvSmkog0jDQhPHlN8tHbavaT55VsKWUq9BogYBDE9KRBqomCsmlOWpWh+xecRVmo/0DZkLZhZ2A73zP9YI7Pzvjsy86iatv/OHXSYXSTPbH3L3rXlpjzNP1dvsJZqipK7eITFcJPXHGYgy5cWMp803uR14blDihyhgCedWrvGYogmLaaN8stZhfMJcNoNtLvaL53dt3XFNgQKURE6FC1sWaQqQX6iIkkIqXqB9z5ZrbeHpp3yupX8osKHEGLK7ZJ0ClNpWUgdqQgljrS3bzbO3F3bpJSCJzpy7Wfj4mceopaGuMp/m0rf3fd8eHrMWR+MF3P2Z2IU7RVuVnt9cjaBrqGsN8dv/SQ4zj0PvjYah8WXq11Zw0STpo4xyCNA7IZeOZLixLqbo6VEMODp1UwjLULETRvDfapXvsaJJrh68w6LsgbLbIuH3nTQDOz09543uOfr3+TMyXvnhDxgWB5Iv0OwOfu2OMuXSV1tliyZkEY8mNq5y4bYLpecGNntugAxRrn46gWa3dPS7K0lc8GWKMzIVplhOHEvmFlkjW9zRO6Eme18MHd9AicpgOOkzW7l3ZvTqk+hmp6HlnznN3ZQ9TFe/PpXnzcs7h7pOdgMZWiyXn990mfnbnxKtTWx1QSA7ax/ce0BOaMQ1Cn7tyZTBieu4qmL7+B/8Wm7uN++rxmNv33eb+9g/fJJIqwGE9RuPWVsoTRmN3nfdPz/n4LUdpllVGXbr54prcuon0kJAgdPfc3nqRm/tNGsRPPXGMH979mD7uu19+5WXeestRS/dX5/zsl78CgMkrVnc/ACCvciIJIq9c3+fue+4+TE6WhEIF192IQp57ebfmfuUCxIs7cyYX7vhv//aHvHf+FgDnwX3CZ6Sjw3rKe+L4RSvrxTVRlqPM3ZNBb5/O8PGOa0tptdZaa6211lprn3p7PMKj2ETFjyQRKy+2pcrMCw+quEMgGjKBjkhUI8gUexrLfd+Ztcr1lgGsKX8kimhQlA0lYGGjYaGsEx8EtDJIgCnVXk+BDOjYa2HsVZqr7zmvMzzL0E1y9W5CeOI+R2Xto7LYQiDQdjUacuVZB+m9//0f0hN9Hp3nTAWN+ceRZiIJelFdcSLwXlWHrCSR+HYU882F84I/PFlxeOwQkoP9mONj91u9TuQ74l7GUqXoSLWE0WDlu1lREshYOjr2PXsgILCNBHhNJInEXSIGgrANU8tLL7jqoLw2rL7lkLG6NpRCFeRLy73bTqcmpSIVyH6dX2AFIu3WyifOhmGAkSo8U9eop+j98qg13JVF0UR0Ci3TXREQGTdHPvvsy/znf+2vA9DfHfG//6P/w11X2OFAEJ7d3R2+/W9dJ/RvfuebXEjLhv5wzInIrBerFZ//jIum3/7oHY9sPG0n7Z9kYRgQC2qxWk2JmoIAbbhz4VDAUZQwkoTkoK6pJZ6xBtZChVgM+6LnkyYhE6moy0xJ2XWR2GLykMlDhzJW6zXF0j3P2+UHnE9cRPrsi89Si/6PLUMWubuGMsi9xlKRlyzWj+9ts20/ioRVTWO7eNOCQWntErJxAnCNIKG19VaCcU0QblXcNd3GoxAdbNaGJhFXVyU63FSZDSRZ/fjGS5yfuKjywf3bvloq/H/b+7JfSa7zvt9Zau3ldt99meGQMxxuomTRpLWQtiRblgEnAfJkB0EeEyBIHpPXPOcheQ2c/AVBgAAGHCQGAtmWYcmORIlaOdw5nDt3Zu7cpe/tvbaz5OF8darHUGaasl9C9CcIbPT0re6qOnXOd77vt3AOQTtVJpp2/TIhA4H6hwZB4C10oBNo2glXGkhJN0uzAr1NVzErTIwReRHN8xhXn3FaOuXmBR6Qi/3DS4un6fNrm/uIU1ftaTGJu3ddhef87Bg7u+4cO60+4pjamkFjQTOdlb6y2263l25pnRRzHF7UPZsAZ+duhx4rjZQqy9PpFKBqqGZASRUSZZRfJ7QxyIgdOphn6JAgaVzpGosPaIUt8h0sqynO7ru2UdLZg9Tkw7XbxgMSIdy/jPDM1MEU7p4/wFruvqsvUwSfYj7NFAM9cjibAicP3Rw3HN5HTJU/EQiogggYnKPdIiLKfAhLjMN5PsKscNWb7f3ruPGyI6WMBw9xduSqhoP7H4Fp98ydXU6xtu4YSTJaw/yc2jpRDM2pPVcUHgSulfIMtWkRo7LLr4v3js/Rp0rag/IE37v1FgDX0r77nTvu+NMcZ5+4Slc/PsAze669by8qSDr3sq0wWHfXp7/XQTF281BlBHrG3YtJkUFIV/3vhk9ht+fG+G7nAAevu3H33Z/e8pAO3QfaCVXPYoGydNWtnc4e1vrtx57XE1taHvew+A/W+onD6ACGQBAcFpZaBVwwRNSHzk0jHrh4JAMLGdZMLgXtBZMWxAr/dg7k2xJNcAZvdOfmoeVbCMZqz/oI1BbyiRvJyXSElMqEycMJmGfFWM8CkkpBE/Vnb3SBOZlmnmcTJOfuplVguE0L+ofdBHubRGGVHPrElTDPuhE+bLkH9+cnExyP3PfeeG4TX/26w7301hMEpCRqlPVeTcvEmgxRkUdOXlWQ1LMPBPMMEKs0avlYywQ44YsCyyHJGFQgQG/NDaj0xWfx0stOjPHkZIAW9eGr0nqV4VlWYnjmzvEi1F7IbK3XQp/otYD17TOtDWSdGFuB8FP42zwStT8bM03SagMEJIZpK47f/dq3AAD/5l/9W1zZcHTdk9MT/Ot/+s8BAJ1OD91a6ZkLrG+6sunVp6+hojLu7vYOrl11Se40n+Ct94jy+vDUl5UXvbTcf3+1BEhKiTB0v18XY5zTdX0wzPCj9933fvPVl7B54H5z2Okgp69SE9VQVVEhbZMH01rkaexFZVESs+n4wT2EfiwYjOZuorl9+A42n3H98v7NG+BBzSQJkRCDTAiOEdHAJ8UUI8I1LROL9GfGGHgtz6C1v6WcB56dyaxBVVILNOD++nDOmy743/qO+l5wzn3LTPDSMzutBSQxF3evPodO18kRzKY5srFbUI22CJT7rjCSC4KpT44wCB/5TaLGBbU7qCZuAeNBChO639bqtrG24RKYt289QLvnXj94MEdB1N/N3hratBDm+RSjifuGq0GINjHRzk4e4uPbri1x+/bHiOLaayzwHmRcLIrFWgj+6VtaE5S4oA1w8PAcM8Lk9Po9KEoMS1uhnJNAbVFCeaPU0mOatLaYU5J1OslhCzIkDiIo4d7vGiAiWZM0Fnj/jExTzwuofZewH90bIqRN2qQPnFyQuOMZR0GtXSkZWLA89T7TEpek3vzxhcLbP3dU6MuH73iMmFEZpKjhHaaBBUjp2ypRxPHRfecV9Z0f/hjbO+7eHt0+Q0Uq/PHaOjbX3BqQHgB98rurhhZbqXsuL6Yas5lbt6Z6gnr9M8x6BrJKt1DJ5eUTXnr+iwjoWZnpKU7JRSA3Gd76/pvu/YsL78X44jZHVbozO3lQYWxcIvftn/1X3Bo6BtYLr30Zn7v5CgCgZYYYzNy531P3ERLrOA1ixAUxMoM+YlqH5tMLvPhVt2Z0OiEu75DgodqEpFbp5s6WH0v/r1i1tFaxilWsYhWrWMVnPp5c4aHEni+2tFjDtNJMgpPegAwMWA00lUBtthMgQG6ZP6ZvV1nrmQ+o5r5yYmEAu7Br8h5bDHX2Krhrz7gfYSHpOEwIzMvl87hKlQhjB/67iF/EH00cMPjmXoRrp26X9bnxDNcIoNkxvNmxWyBP3Pd27j9A7z//FwDAMx/f9pWoMYD36JpU7Q6ef/Y6AGBrawvv/tlfAgB+ogzePXK7u2Fe4sUvuIrDV37zKaxRUs448603oyy0Xn5X+fT2nterMLBoE9jYWOsz9LIo/HWulPKl2SBs9JGUAaK6apAXuEI2A0mUeJnwqcr8uc+NQki7nJeeexb9dXcym1f20N12JfWirFCo+rw0uh5sWvnf9umjHmvMjyNhY3zxBQe2+8Yb38DvvPFNAMCVrQPMLt1O+eTuEcY0ZteiNqZD144JNrp4+prT4dEweGboWlecBd4ROQoTDAYjuq4NEPvvKwTnKEigreIcPHU7WDkHQtK2MFr7NlAaBCiogmGMQUZVGmUKL0P/uc8/i+svuPc/+vEH0JnbJf7i/TvIqTwkYoshfe8Ht+/gN2+6azjOx+C0XwoDhYyYKkJJhARyTpIEaZoufY5SSl8ZY4yBe+8c5cc+RwVDrag4TpweCf1tGNSO0RxWuR2yVhqq1voS3LdmuKzQ6tYecdJ5zMG1Uoyqjx8gn9NzPJ54vR0GgyipqyLMa0ctE4wzX3ZyVSwiRrAQIVUUi2yGhFpLu089haMjspmogC1iyBRM4ZwqGg/unTvNFZBWDwE3i/kUxzMnqPjO27dwfHxM56gQJ206x9j7kVWawVA/JG2l4AvntSzbLm6neJoToD5MQe4daLVS5HQfzIL9QalKr+EUSoPAV+ptY+5dGkxJYymMJFrEZgpjiSpyz6tRCjOq9k0nCqdDEj+1EXqkZTZmBVK4iuZGN8TRxD2v96oRtip3vf9giXM01kLVTEEusPfUFwAAV596wdu2FNkU9VJ4eX6C0zNXITHceKZVbhM8uHSvz6ZAf0CtwOgptLfc8/2A72Hvuqvevfpr1yHpXHpW4AaNx9FQYXDixsjR0RHmVLWdZwUM2Yz0NjcQhMsz0b74yquwxM4dDk/xB//kDwEAf/o//xQlPX8mCNCqhWt7Bj8/+g4AIE0PcDJ2Ldbvv/tXaO24sfbO2++hNXPH/MPXTnG0/RsAgI/O1wC4ecjKKUryf1MQ+NnPXMtsclohUW5d5LM2QqrWr/evIiIvOCMEivLvwNIyuinW8qBJIjiDLytrCCiPaSlhqKHBLIelxSbiFUrCHLgJzUsJOslWALzUnkKsjV1gdS3S4q2nTXJmPRnLMnhfEa2Vx/ksE8ZaGCq7XvIx3k9I9fNzN3C05ha2P3//Q7xEvcpvjTM8nxOtVMRgV12JXw4vcO3bfw4ASLTCffr9Q8lxO3Y3p5V2sLNDyqAvPI+3/voHAIC3Pz70/l9ffG0fv/EGsSbatllUwtgLABpbPpoQPiFiLr0vUVmW4FQy7HY6Hhdi09SXsMu88BOxDCQUfa+FRbi1VV847O64AagrhU6HRK2sxRG16kbjEf7xP/w6AOBLX3kVKbXtumtrvgWZFRUmxDAJRADQQzYrxpCfIql7NBqxQ00z7uc//xr+/b/7jwCAg80tGBK4y2YZDu85Rt37dz9E5SejCv2OS9CS5Hn0yUduf+caOKm4Hp+e4PTcTTTtzjq2dxym6ePj202S/vfA0AIAZYUXF9NcgmyyECcB1gm3k2VzcCpbM2tgaio6Y74lMZ+XKKlMvL7VwuauS/bbVYkffP8dAMCgLFERLfbZF/exdcNhmd597whrm268W8tgWZ0IG8+uqbLKq8TCGK+0+ysFq4XVDEDsIaMaZpaUohmnMvA0eWZLjwsTQvi2Xbfb9fifsqzFEkw9AAAgAElEQVQQ06IVcHjaPuCkCgCAQyEg3E6SRAhJMbbVaXvDQmU1LFs+MTfGeOFBKaVP6hgMAjJmVQaYkInxnfsTTMjTaGN7CyCvwojB++OZOEZG5sOTYYH7h+7e3bx+FdnYvT47vocBSQrs722j3XaLUDtNG6FWaxYSMLGQyDEotRyGZ1cnmNC9OjYFNkhUtBPHqCiRzMsSqmbraA1lCEPELKKa/aaAhLCPbyS7/nk6vLzAsFZ+bwOsltIAQ07tsPvHp0hJ8tj0d3FBeK6jeYGYTun6eoqdmUsGJnyOj8rlsWZ2Qc04TmJs7jsj1rKsYOlc4oD7FWxte4bdWn5FNNcxDtfh5VeMRkhJ9Ey5TScAHGcW3/6Rw/O8+cEZjCG8LAz6fTdeNnvr6CQ0Nrt9bG671hgTFobm/e31FjY2axjBk8NY5j30ur0+fvTjtwEA3/6z72Ce1/5yHAGlEBsbMbqhY6Ye6SP89e0fAwC2ru/guZdcG25WVXhw6M7lj//mHuYkPJijh2HlZG6Gd/4YNnCJfDs9wOEnrg0bJRvYTZ268vb2MxBPEVaHc1jmdxDAE9rLq5bWKlaxilWsYhWr+MzHkys8noEQ+JYTGFtgXVnP2LJmgoDV2hYWVtYeW9rzpjJtvTdWYzLhhOzq/tkjuGOnVOg+XyvEwX008MBd6RlbxnI8KctbDCYAYx0TQ6tz3LzhMug0P0S/60qJoxvP4d2nHXjx8HiOb73rMtnXoaEyEhUcTnFJzr2H3OCjtqsI/EgwnBFbLQyY9xZ65ulnPLg2TARe/ZLbRb/4hU1I8iexhtebXFRVgZIQ9wzCg+CWiZPRBc4GrmUWiYbtU2RzzOe+Z+nZEmDwomN2wbk+YhKWdvKMM8/AuRgNwKh11V5rY41K11/+xpfwW7/nvMlKVfhyLy9DgEDUp+cD74Tc6/UxnbhjjodDhEuLKzbua8w1Yv3rmrLwza//Hg62XAUmUBYVGWXNZ2Pcvu/K/m++92OE1II5vDjGDsm+99fWvFBhpQBBJfsgbiHp0H2IA0Sp23WUlfL31poGgf+rQ5aBQgcYE0Pno9vvIkpd+2kyznD/rjuX7d5VVFQBCMocCZWzqzBGSsBUIRguZq6UX1QZphnZHPTWcJ67Z/crrz+H4bG7DxUzmM3IOy4JIVJ3T7gNPVPQqgCsZo2FyovKzUbn6JO42DKxCIy1FtCqrpLBUc0ABIZDEPNOFxUYVUiKogLT7jdUpoAi1lgrDtw9gKt01e3ZbqvtiRFKl2CeHaT972BWIyU9oi98/mWMh64lFEUakHU7L0KWL79vdN9Zn6f1UAHOhP9tnd4GcvKFOj2foE997TSJUeuTCcb9b+aMoUvjtiXbCKSr5FycfIJex2munJ6dISW/u43NDX/uQghYqvBwwb2gIqAbOAPnvrL+pNiuAjwQ5NsXa1ylFlxggGnl5gUmmK9WK6WgPWiZe+sBowwSwiy8zre80Oq7iHCb5p3jbA5DopjB9hrOWgSyzoHs2F0DfTGAfMZVzOeW4QG1z2Ug8PsgcLpZx4/D5at0Fg3DrygKTKn9qxnzrX0NA0XVZSW6kCmxmnnZrHM8Ql1zUJWC0k1FTdT+lJLD0IJ5OtRgjNhnqHAxcmPkEzFtiB9Kw9C4EIKjTTYfN6/1sb3mvutzN54MXs4qBVF3KS5H+BsCKldag9O9eP6l5xDTWB5dXGL/wFWLH/ICJU3de7u7SHuuEtXiFreIbPE/fsrQ5U5v5+DZXUyou3NejdAS7hzvf/ILjEn3bX1rC3tUjT44uIqqBjNnI19pZixAIB9/Hx9vHmp0429lbcP2XWg4OWPQ2qY+WKCcKwhaNBnnkAu9+UUpXFtz6Bj8A8yYaPA8j9LD/CsG49Mlo5VXIVxshi0TQdD01IO4QkATelWN8N6t7wIAxCjAOglTPVy/ir/8klPazdI2Lh+4B2vQ6+OCsEwPiwnu0rkcDkfeaG5HWmxuukWUsxhzwlW89PIevvCq64UKiaY/rCwsCVBxzrxxZ1kWUNXyS+fh2UMcHbvS9v7Gtm8nFQ/nEJT88CBYKDMrz5iJoqjBb2nthQrBGCJiieS2xM6Ba29lmUJry53Lr7/+Gi4L9xmdz72427DIYCjhGU2HYJS4TtgMEScmVcKhl4VGBK0FjJkF47UBogERbrC90cd84tpP3aTlfZF+8cHP8Bc/critW/fe8diorc0D9LsuER4VBZ5+6mkATlAso4RuML/Aw1PX6pxlMxzeu+MuTdiCIN+aRzpajDXCd9Z+qnbXB+//BJVyiUeRT9BqUevKGIQkWtnv9yCDmj3ZCH/GMsAOqbLmZY6CjEerqoSeE76Fw7PohLTgNHHklcEWCUbGbQkryaQ35CiIrq4qgbJyCYYxBgEjddfeGro02S0XjRo2FwKcEd6GGXAad/Nsgla9OKkY9fqslfKt9YfnD3Bx7u7d8zevI6bWT1mWsNRuiZKFMcOMp4c7nI/7DLfaC6P2ez2/eEznA0wyNxEHVkKEy3sUgVlw0byujZQZF34TWRmLhHAJnW7Lt9um2dzjtSSTCIIau2UgCXLAJYNRLiGYjxVOjt09Oj45wc0XHX4wimOvtm6sbTavjHk2nPNk4vQZvfRYzXoSpwQViZNGkdqYCnmNw4kjlKr+fgNeJ7PgiGkt0YahTW0agxBB5b7/17COm7Eb+4eywE9yl4TOJxU4zWVDwTEi/F17NMSsTXPZznVcUrJ/L+K4E5PMwHiEzU/R69BKNZtD6zBjABAIDkbjJZ/ntXA9lIEvHHDLffJe6QJ1wiNlBFkne1UJTRg0ZQQ0XftKWz/eOWfg3D1nknPMZrV5tvReWgELMM3cH0ynBnn+eAbTYgxHQ4R0nNFo5r3sirJETBCNr33rt/HRBy5peef7P8A9QaxjWQIkhtrqrOHgqisWpHEbh+TFt3FXo6TiSJlpcFWrejNowmiNpw8wozGzHe6g03f3PYoTmHruyQtMZm6DNZ5MPb7vG7/1yi89r1VLaxWrWMUqVrGKVXzm4wkVHgVG2jKLlRnr/tG9D+u2hwC0lV5IUBkFUfsYgSORdfUgQEngNQbjGyYWAoLaDJwH8OkxmuzYwnpQnWAatmb3GI3aEMkYi0+DE2XcNudigYJ2EiwNUe259y/KKU7J4mF6fB96z1V74v0d/M2lq5wMJiOouftMURYYkZ5PZTgSAutWymKD9Fx+9NZPUZJexfXnr6E2kWUQAF0HowFd1ddBN8DQUvly/zJxOc2REXp9OJ5AEOMsn0699kqUpLBUJRNhgDb5MJVl6UXccl35ihsTHIoE+EIE2CLPrMkk9+3FrJwjJ+aSqwS697UZ+QpenmfQdK/jco6YKjyBCLAs9jyJ1xaqegyMqhyWcYQ0BH926x0YEnT8ymtfxuXItfj+5M/+FH/xw+8BAJQsYKisNJ0aHHJXJfj5e7d9xcsa4ythpS6gqKrHGPMMo0g27RIHUq3HOPMlH2OWv38AYMox4th9b9hP0ab2WT6ZY6NPTDTB/HUIw5Dau0A3baMQ5CGlNfapWrne7eFs5MCCmSzRapP0PGusFqwIsb7jKnatXur9jXggEJCQZGhDtEg6P8vmEMYdJ5ESmV4O7OrPs9bY4YAlzzpj5wC5ZY8m5yipVZckCWpVGyEYQqpQ/eDNH6JNAOb9zXWUJTHIohCdjms7Z7MJQnom2t1W0wbgAmFIlQ3ViBZaU3t9AWEYIKYKXlUAnC/PfrHWei8oHgpw1lTQa1sVzpuWtdGNTpUQAormAwtd8z08CNpdNwvO3L0oCo37R65de7DXRxzU9iIlQgKTa2s8AcUdq9kD2wXg/bJu6UetAlPSvelUzO/ihWR+7phnma/2AAZhTXphHEH9odJ4ltgHfI4rxPzbGxfo1G29VoUetTGvDSVyaud+HOe4Q8KmGzbAcOSqAZ124UHO3TTA8ZQA4FGJ8FM0mxnj/p4EYQBN1fa8KFFRZQa6EaSMAuu7CMZY6IVnv66cWWU9i00w21j+6Aa6wIXxFcqssAB5VSY2BqdjSiE9+aQqDBRVWxlPIMSyEAHg5PIjf19i1kFJujppm6NN1cf33v4pTi5cVSdMOY577rc+PD5DkblqehoJHN254z4TJKinIUiJlO4pl5FnhIU8hNKuYmOYaYhMWgOkfRXIACZ271+5+oyfd7N8cVz98nh8w8vCo/NP73yMlJD9WzvbxJygG+aR8sKzIxhrbiyzJQK6+a0oREVtA2s1mKipniEkPRxKOOEp4NESlFmgtAvOfG+TCeEFh5Q2YOxTMEOsQVPR5eCCLrDS6HTdcfqvdTAnxzf98Rh3PibBpJ9/gLtkWGi0RT1vFBaYUStqfWvDm+ONRxN8/KFjBL31wzdx7aZrFexeSSHrhYRz8Ki+hgwFJSdVVcES8yCKIpiweRCeFMcnQz+RVXmJkBbLzd195HR8VRkYWi7DNIagyeb+8REMDbrezpZfCAGGGoxlrIUk3xheGu+nZlQJTQ9oGIeeDJLluTMxhSt5NomN9fRXa4EZJZBPCl6FPtFmnMNSOdVw7h/+v/juD/HWm7cAAL/48BOcnbtW1E/ffw88IOVhG6HddS2YNOkhpwVRc+ExOQbaM+faIiTlXFea9xiUUEPU91OIR6jWliYwYy2kXLZnB+SzGcLALdYhF4gowVhrd5DPXWI2n8+QZW4yYiH5owEQMkCe1WaaDJtdVxo+v7xAQhsazixELZTGDXKi56MUSDru+vQ2+tCoDYEjyMDd8zCUUOT91ApbPuFBqT37cJlQSkOTZ53SFqIi8c75CQLaME0vZ8gDN6Y2d41X0g6kQEV/e3ZxCU5U64eHR2j33Ov1/gZahK2DKmEKd3xVCIAWAw7W4K8gYPwmQKC4JCbJZIyyxr1UMWS8fMLDWdAoxxsGU3sVovFAcsm1Gz+q0m4TBMdE49TOY7qZm6WUPjm0AHLy3rp3f4wuYUeurG/ifEiGnYbD1M8x400ybxcX4l+NYTjQ42Y9EAysbslDoEWtxeF43PiY8UZtXwgBQXOoNQJjWmNGk4HD/QHoiQ5qQGhZzLBLa8kzIkHPuPucV1OcEM5nZAFF7MZqXnhMpNEZLInJbpoYaav2mXpyMM5R0W8bFzNMiQIPw/x8w7lARRtUVE17UArpPdOqqkIY1vdBNVaSXKDue8YLcgDaVJDUrlcqh6bNRJErtAijZ6H9WjjPCrRYPRdH0NXjk4HFuHX/B0goqb+2vYu9m+74m9dewXxEzMWsRHvNfeb2uI3L0F2HKcYoCIOmdYU2bfhPTgYoiOFlmcAG+YJVRnmPzCQNMSYc5+bWJvb3XTvs6pWnUbvoad20WI1tCi5p2kKSPF4GY9XSWsUqVrGKVaxiFZ/5eLzwIGc4OXY+GN/99v/GHsnof/6Lv45u3+02o6gBDlYGmJFGQhoyr4ejbMOsCIRGQNlcWTbtJIjAe9WUVjc2E8yTtGCtgTF1VacBUS/uTIxZAOEtEY+ARy3zQECtDUJJLtG6REIl9evPbyC77kTzhoMM20ckEHV3hPlM14dBi9caBk0Zeji4wF9++38BAPafjvHKV5xeQhhZhJ7RJlBXj63VYLwuCftEFkHAfQVsmbh77xQRc79/89mn8fLLLwMAOq0W5gRaLfLCt1sqpZ03EQBmNMZj15baSnseAKrswu6dC1xeut1jNix8KbebJrDUarRgHuwrIcAU7Zxl4KtPYSCRkJBjUeQw0XLVgX/xz/4lkqRmIQmIWnNIqabyow1iureSM7xAu683vvU7qGVjQsthdM2okr7dqkSj/2Qt/DGRawiqBkRx5EHl2ipfAZVCNK0KwGtHMcY9eHyZKI32bIRQBuDUessLhcuJqzysj85xOXLnWKYZJFUtIpOiIL+Zbqfly77Dy0u/G49F5BmWacihtduhTSclipmrhMTtFAVVFRJVQCgC+GuFpEPl5iDw3WieWviLu0Tkee4rFdpUEIUjBJjZBUYz9/5smGNzx+0MAxnUXAUYY6Boxx6FKU5PXan9YLOLTfKji6REGlGFJ6qQZe4zRTWHhKt6CiE88LE08JpFVnHMacM+uJyBOsEQYYAXX7yx9Dlaw8B586zXVRrBm4qKex7qvajwc55SthnPbFHPDE0VUTKEsZufju9e4OoG7erLU3Bqt4SyA2NqUceoqWg9UuF5tLW1rJfWVMDr+uhANM+/rTzzMw0ClMTY0tAAr1m4QELMpkwB51TF3k074KWr9p5EJSRVh66IGGFQM3QUDqybA54KA8SFu8aDssJg7ioGszhBu/aZGhVo0zhdEx1Mi+XXDNimRcUhUNH8bjR8O1RyeDIPIKAJxqG09vMd49JrE0VRI36Zl5WvAtlSeTf5IBB+nkvilr/nqlKe6QprPaA6iiMEYW2zY8GXZNoBwBRzzNwUgNndnyJYJ0+0KEa3dGveU3kLnbG7p53WFaRr5PWnK8xnBAe5PMfGtiPqyCBATs9oWZY4P6d2WCT9NclnwBp1kp59/gW8/sYbAIArB0974cTZbOarklo3rErO+RMtUB6P4WEGx0euffPRu7/AhIwDR+dn+Obv/z5dgMSX6S00pgVdVF0hIb8WLgMomgUjZhDRrF9Y4ydHLblnXUXCeAr2ItbBWAtdi69ZLAh4cd/uEQKw1fKDl3PhFyohWLOwwXpBLK2V77UHrECHHrLelRAHO+4mH1wNMbykNkBo0SMhvlaQ4uE9WjBaFXb23ID93Cs76Pbc3wpwP9gB5nytUJfuGnXXZsA2Pd5lYj7NEFBPe393D4oGxf2HJ2hReytutdFKXUl4ns1R0aJ4/alnvIyANQwhCYNVRvsWVdzuIGRubEwGU3Bqjdy8cs17fs2zHFOikE4mE1Q04cVCeKVXIZsFoNteA6+9rJ4QV/cOPDOBwQktAoAwDSbEWngqMYeBrIln0qL0g9C1R91xeHPtrX7E58njGaRAjZqxVQVJC5ZAk0Rz9wfu88b4BUtKjuIJ/ebFsAwojZv4pDLgRAOfzmbo9tw9jBKBisZsbqxnbxnNwcmUdTA6w4QS86wsYOjcQ6mxte6u93p3AwcHhANRBpLGXRJFUBN3/M5O1wuLGnAI2hyAcShLJX4Y7+G2TJRliZIYZJxbGFJ+ng4uAcJqKFUgiOpytvGczEBKjKduUj47vUSHFtF2p4U5sQmndyYQpIy9ubUPlbjfWZUV7MKCXk+aRZnjkqQA7h8+wDkxTKweYXvdTfr97RvY3j9Y+hzdiKgTFeH9lqxVHhdiF5hTjHG/+Ekp/Gturd+UcB74zwshMKSWw/kgx1ZIyr9ygCpz7wfprm/FZpUBGG3sFnBoQSg81oj+camzG7I2ShovyjKfDMSqArMzOo9GUqRSymP7EgakJKDIeYAd2lTfKBTOEnecT7IhngpJdM5oTAjv2OYcnJIBYzO8FDo5hEgKfI+S/eHsEnuEP9mdF4hoLbFRgqNqttT5AQ7bClUzaYEWHRNcIFxoQdWJh9bab/4FX1DqXxAEVUp5FJHWjZRFUVV+zo1C2cwrCzgixhhUWVP7G382hxciHBy0b9suE4EAJrSpytQZWh1KRNkQUHQf+0+hoGdoe7OFLtx1SNa+gCv7jhF4OrjA4V2XQ8xnJc4HDvMahO7/ABCKRnE84ECHhFSDMMQZ0dgZAo9/DaPokfm4CftIov7LYtXSWsUqVrGKVaxiFZ/5eHyFRxufMQWBxNmJ0zwoinyBTcGa9oeFZ3FkCohUDViVyBQxdFQJWbvyMutFwUrNoQjEGaBEXQp/pERlrd8tW8m9y7k2BoyO6UCMn6KlBe39N6Tk3q1bL7BrwJrKT8ClP3qhK1+y3diJ0O0TiDMSXvadK4Zu113ma6aPpOXS2iBinvXBBXybgXMJzurMnXtfH2MYwrDJ6D9FdRJSG+yTNs7+3p4XhptcjhC33C6KBRIp2SfwIMCkZomUpQfOBTJqKiBlAY0aWC7BSCRMlQppi7xuRICg1pYQAggJGJhwFIKk1jn3ehtCSvzi1rsAgN2tTay1lwQSssK/NNaiovK0LTV6dE4aFpPM7UwsYwijukIyxWDoGAXKNEpPnHPv5RVo80jZ1NuYMOsrkMYY72PlZBCbcrO3OjEW3Y77Pb1ev2nnLhGTyQQxtfvSboSMdG+sKdHruusXJBKCtPN5AA+a1EZ512QNC0EMptAkqMjdORbAwYFrsQ7OxhgTGH9nf8+3lI0uMHlAjKfrWzBx3XsNwQlJysBgadetrAWTyxMItNELu+IS3cRdqxIXaLXc8/Tsi9cQkZ/QdDpGl6qDNgpw6x03dvrrffyD33al8HZQICvdLrGspjg7uePON9lA0nXPRF4OUdLzVxU5Kqr4TmYTTEc0NuYTbHbceNzqSezvumsebvdQzchzrddZ4iwb0T3GOAS1hR00gJisVenB+xzMz8FGwxeHOBPNfQE8KHY6zXBy4qqtN26+gFbo2DWaj8AjArkqIEZTEW2k1qxvR6uyACONNAt4HaQnxRwBKpoLClVAUYtSCAVN5IdAcqRR3UYTXpQ2DFPMQ/f9s6mCKEl7iVuccKr8RgkE/a5paLFr3H3YLi1GVOEJwgQ9ap08y1uwqVsbPgkKXKFzfTZtIz1180HKK1yY5Ss8rSTEBt3rvS2LSd1uzTNfDS3KwntpQQqAdL+ybPKIL1ldIdYLOnfg0n9GCubtUKTg0FQBt8Ygn9f+YrG3OoGFr37MszkqghFoHXsm4jKRyBIFVQfTNPHWOlM7QnZBApI9i4eFywmyCqhG7prE8Q6ee94JXj5VapxfumfoYnCBdSIQaFWgZvmYSvsui5QSbQKQcxjM6dmaJAla3Q5dHunPhXOnYQTU0Je/Q0vr8mKAVodYK50u7t45BAC8+sbXUNDENJtO0SEzSmsMOH2hhkVe9xIlQ8BrkSwgrEvkYeB9OZRWqOjntJAjpKdwrk1ThrLW07FLZpqSLmO+vAeuvRrwMqEqBa3qns2CSZ7VPgmJ4xDK0wTLxda5x0noBYS+lM1kpKyBICxKYDQq7Ur2kY1RX35jjBcX08x6jJO1thF+1NqXm4FHqahPihQGZuYWyLIoMaN+eBhHiGnB0BY+EWp32tgmdofJc5QZPVhB4rFVPIoxJY8iC+HF/kbjMQLymno4HELVbBYZY54R/qOzgVS6vm5e5Cgi9xsuh5c4IdbYbHCO9XI548n/9Ef/4RElWEMMo51uD2+89iX3ne0WhnQNODi6pIh6eO8Qb3/0PgBAMeZLxleuHGA6du2MhIcNg0YKbGy4hVJBeyXQ0WjsMTm9Vhsduq5g8K0ri8afqNNpY5NKtMA/euI5hmGIiJI0DY2KmBitJIIELda2REleO0ZZgNo3rbCLnJ6zuNNGRFTVuKy8om9R5lhbowURBXqe9Vh549nOWoiqtsmqykY5olQYEx6mt9ZDQs/QpMjxadj3YcShNXldVRazab0R6SFO6/cVVG0AyhjWaBK89/AcP/zJzwAAb3z9q4jX3LUaX1yi13afCUqNw7uOJTkcW7z8yhcBANPZCHrssIqxyTAho7JxYZDS8/3SjWcA8vtpJWME1Iq6HNzG2aEbV68c7D/xHK3RzWaRwW+2OI88u0bI0C+EZaGcOCqAUutGmDEKPMNLV8on4ffvDfxcGKUp5pRORMEWQDg+bizKWn4DHKaWVljQAjeV9sa41hjvX/akSAOLrG73wCCiDWEsGFI6j1AatGhO7ESyVhzAzHB8nLmxliDFJrHN8lDhFxcuiXsBHewSCzdWAn1KijvS4C5hlB7YMRK6xjdFghuKNoqzMcJaB1NwdOj4KdfY+qUtkl8eUcjR65BHVT9EFBCL1bb85qZmigJufq+q2suw2cQ5dl3T0lJevbkE57SGMQbOCXslBBA0G6yAcLFClJAB88cJKEFKAuGLC2uphOTLP4zqcoY15taDzWgbihiN/bCNqzsOy9uKtpAXlKSPLjAdEGTh8gxH2iUqnbVNdEkwcG9nF6AxPp2NkRG2Kp+NoVTTnk1j17JstbtISQg4jAwUzW3zgkPTHG+qEkHg5tooShEEj7+Pq5bWKlaxilWsYhWr+MzHYys8b37vr/DjN/8PAODw9odIE5d5jS4u8NMfOm+NV1//Taz1HEDMLLSSNDjmtANk07kXTROCQ1Cm1okiaAJGFZX1zCMhBSICBufKevdiAwZbCw/KwPsnKcUReNCe9Nocy8R0ohdAgcyDbBn9zx1TeD0ccAZmarEoeE0IxiSUbTRWfHvD8gU/MoU4qnVPOBQx2lggvGs8A/dtEsYYZC3vzvmCQBhbADk/OUyZIRBuJ2QtMCSdA26ArKzFt2IPjtvYWEebWnIC8C7UKuAeJMolR1m4HcDZ4ASDoduZlaigqUL1cDoBJwdoqxUKGh9bcYp4zVVJOkz4HelsWqB71QFAi2yMIVvuPn7+lee8c/v2zjZuk9haKiT2r7n3B8MLJHR+raSNbOSArOlGjC/2HWutVAq33rlFn7+PM2IRlGVTMQyDEPHAHUfrwgOYXSvG3bczIX2rJcsyrw3R7vQhaMd1++gDXylaJriQmBIotxu2oMifLQjgy9YJ197fDJlCHLnnNQ01EmoPal14kc6000JNJFEVUFFF9ukX9nCD2gO3PzpDRdWh7d01JFfd/RTc4OSeq3jYCpjTbm3w4NQzucJ2DM6WB0pu9PrIadwVRQlF7JQ0DsGsex0nLWjlXk9nFWrj5u/+9VuYk6eRYAGmE2Iflgxx5SoCs5HCBbXlt3ctxqc0l5RTzO9/6H7/xUP0dpz30tWNTUTUZpcokYPaHgwwVCXThcJ6d3kXav1IlZb7eWIyncAYqsIlgdf/mU6mzgoCQLfTQUXXdp6Vfj4IZICchE4HgyGeJXf7LJt7cULBQ9h6umcLmlGwfgwv6u5wwf38Z5R5pLr8uIhFBTBickJA0jhNJUNLumOEsmoq1DL0q9DIVLxy1hQAAATZSURBVJhQBeBclRiQ7lGaWGgigTwcZXg5cevN5hS4y1zl4YE0GLTcs1UGEnfJ/y1HD9ukJ1NUAS6JJ5AHFkP6CVaV2BPL60WlSYj1HsEyrEE/I3JOEHqGn9baV2wWdWP4goijkNJ/3iw4sNdisPX7Xk5Ua78WllUJKdx14DL0jDCtGhaYlAIRVX62N2L028tboDy3fRNdslKJRAJBrcaL+QiKqlTzQQfFkdPJScpN2BFZmkxnKKgFeXl4D/ae+9s4kB5i0O6kaJNH3P7+HgJqSyllPFPWMu4zijyvEOdujEswxDSvGBb6Np/ic2j1+HXxsXf53p3bOPzYeWUMLy8wFW5w/cl//2/4yutfAwB8+bd+u6Es2gaTw8BQ0U3OuUTManYVgy4yel2C29qM0HpEfyWMb0sZ3QwEYy0q6gMrYSB40+dWVJpXOvhUDCatFx9+7r9XBqEXVjManrEQhCECoj1XRnkYRlZkqOqEB9KbmMVhDFMbOgqOoFa+Uk1ik6vSs2gC3hhhwnrGJiQTYMQyEkJ4lellojLGY3WEEAhIpGqeZxhdOAG+JInRIgPCWTlFRGJqlao8FV0r48UneSD9ZF3ZEnO4wdi70sec+tWT0QVELYJVll49tjIZstwlS2HURkUP/eDyFKcDx4QxpkAcLzcJXQ4vYEh0rp0GkJRg3j78BB1ioVkFx+0H0EkY0g23cLP1BDm18g4P7+KMJtkizxqafqX9a55nwKReGAxSav3lReUZWMYalFM3xo1WMFSenlcD33rIixKCvneZOL+8QJ8mfRsqMCptp2kL/Z7D3kRJjKJWaxUCjFqIFQZIaKKZz4b+OiTRJkJqzfS6EW4+75JD3o4QE2bmuat70GQqWqk55mN3XggCcCpVp50OWpSQjCdjlHPqx8cR2tHyk2y31UaHkkNrrVfgVlUBQ6JpVhdOVRGAkBoPHro5aXP7GvYPHD08lAnmmfsNg0GOGe28uszg115yyUySWIj8CADAZhqnH7uWVpln2OpSIjGdwErCZ+ASQbvGmnXAKanvBRGUWB6nxBhbENe0vv0AWI+94KJRl48i6cXpwkj61oW1GqaeO5nA0V2XyO1ubWCNVNKNVURfd0lxnbTYhcV1MRYpvlLIhQ2lWjrh4cx68VkY65MyyRUSWS98FvVSppmCpmu8o0Jo+u33RYxhzbyVHC8xN367dgZD+gDtZA2H1j1Dl/NL9Nbc4vvi9p6fl/m5Qo26jFiAhHqySdTBYJ1wk0WFvlk+MV9rR3j6wI39jW6Msqw3Zo9S+Y1n2jXXmnPRYEMtayRXFhJPpZR/XxvtEx5mrd8Ag8GvtRbMCxXCLiau1rdD1zoBttaXgwgAwFdf/A20qZ107/Autrdc+/3BcIQHx+6ZszpEwlzSZSUDW6MEtdXCnBKP8bRESYk8h8XFcEzvj9Gm5+kyStAlMdR+bwOtNWpBx7HHsM7nc2Q0p2ajGSKCUIQyRJS456/VDiHjx883q5bWKlaxilWsYhWr+MwHe5JQzypWsYpVrGIVq1jF/++xqvCsYhWrWMUqVrGKz3ysEp5VrGIVq1jFKlbxmY9VwrOKVaxiFatYxSo+87FKeFaxilWsYhWrWMVnPlYJzypWsYpVrGIVq/jMxyrhWcUqVrGKVaxiFZ/5+L/ZdjEs+trKTAAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"QaPttVcXrApU","executionInfo":{"status":"ok","timestamp":1611251027257,"user_tz":-60,"elapsed":1067,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"095f731b-9676-475d-b030-324e42d81e2c"},"source":["# Split the data into train, val, and test sets. In addition we will\n","# create a small development set as a subset of the training data;\n","# we can use this for development so our code runs faster.\n","num_training = 49000\n","num_validation = 1000\n","num_test = 1000\n","num_dev = 500\n","\n","# Our validation set will be num_validation points from the original\n","# training set.\n","mask = range(num_training, num_training + num_validation)\n","X_val = X_train[mask]\n","y_val = y_train[mask]\n","\n","# Our training set will be the first num_train points from the original\n","# training set.\n","mask = range(num_training)\n","X_train = X_train[mask]\n","y_train = y_train[mask]\n","\n","# We will also make a development set, which is a small subset of\n","# the training set.\n","mask = np.random.choice(num_training, num_dev, replace=False)\n","X_dev = X_train[mask]\n","y_dev = y_train[mask]\n","\n","# We use the first num_test points of the original test set as our\n","# test set.\n","mask = range(num_test)\n","X_test = X_test[mask]\n","y_test = y_test[mask]\n","\n","print('Train data shape: ', X_train.shape)\n","print('Train labels shape: ', y_train.shape)\n","print('Validation data shape: ', X_val.shape)\n","print('Validation labels shape: ', y_val.shape)\n","print('Test data shape: ', X_test.shape)\n","print('Test labels shape: ', y_test.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Train data shape: (49000, 32, 32, 3)\n","Train labels shape: (49000,)\n","Validation data shape: (1000, 32, 32, 3)\n","Validation labels shape: (1000,)\n","Test data shape: (1000, 32, 32, 3)\n","Test labels shape: (1000,)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"sPsNEa-CrApU","executionInfo":{"status":"ok","timestamp":1611251035090,"user_tz":-60,"elapsed":964,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"67ba492d-e197-455b-aed0-f6bdaaebca09"},"source":["# Preprocessing: reshape the image data into rows\n","X_train = np.reshape(X_train, (X_train.shape[0], -1))\n","X_val = np.reshape(X_val, (X_val.shape[0], -1))\n","X_test = np.reshape(X_test, (X_test.shape[0], -1))\n","X_dev = np.reshape(X_dev, (X_dev.shape[0], -1))\n","\n","# As a sanity check, print out the shapes of the data\n","print('Training data shape: ', X_train.shape)\n","print('Validation data shape: ', X_val.shape)\n","print('Test data shape: ', X_test.shape)\n","print('dev data shape: ', X_dev.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Training data shape: (49000, 3072)\n","Validation data shape: (1000, 3072)\n","Test data shape: (1000, 3072)\n","dev data shape: (500, 3072)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/","height":315},"id":"wInjX_0grApU","executionInfo":{"status":"ok","timestamp":1611251069270,"user_tz":-60,"elapsed":2214,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"6e0f806d-051c-43db-d794-04111f303b3e"},"source":["# Preprocessing: subtract the mean image\n","# first: compute the image mean based on the training data\n","mean_image = np.mean(X_train, axis=0)\n","print(mean_image[:10]) # print a few of the elements\n","plt.figure(figsize=(4,4))\n","plt.imshow(mean_image.reshape((32,32,3)).astype('uint8')) # visualize the mean image\n","plt.show()\n","\n","# second: subtract the mean image from train and test data\n","X_train -= mean_image\n","X_val -= mean_image\n","X_test -= mean_image\n","X_dev -= mean_image\n","\n","# third: append the bias dimension of ones (i.e. bias trick) so that our SVM\n","# only has to worry about optimizing a single weight matrix W.\n","X_train = np.hstack([X_train, np.ones((X_train.shape[0], 1))])\n","X_val = np.hstack([X_val, np.ones((X_val.shape[0], 1))])\n","X_test = np.hstack([X_test, np.ones((X_test.shape[0], 1))])\n","X_dev = np.hstack([X_dev, np.ones((X_dev.shape[0], 1))])\n","\n","print(X_train.shape, X_val.shape, X_test.shape, X_dev.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["[130.64189796 135.98173469 132.47391837 130.05569388 135.34804082\n"," 131.75402041 130.96055102 136.14328571 132.47636735 131.48467347]\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["(49000, 3073) (1000, 3073) (1000, 3073) (500, 3073)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Gq_Y0R_2rApV"},"source":["## SVM Classifier\n","\n","Your code for this section will all be written inside `cs231n/classifiers/linear_svm.py`. \n","\n","As you can see, we have prefilled the function `svm_loss_naive` which uses for loops to evaluate the multiclass SVM loss function. "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"S-_CZtBxrApW","executionInfo":{"status":"ok","timestamp":1611251111283,"user_tz":-60,"elapsed":965,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"97a41624-7cbe-42d3-a9c2-e429651a5a70"},"source":["# Evaluate the naive implementation of the loss we provided for you:\n","from cs231n.classifiers.linear_svm import svm_loss_naive\n","import time\n","\n","# generate a random SVM weight matrix of small numbers\n","W = np.random.randn(3073, 10) * 0.0001 \n","\n","loss, grad = svm_loss_naive(W, X_dev, y_dev, 0.000005)\n","print('loss: %f' % (loss, ))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["loss: 8.554036\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"UphFvsMIrApW"},"source":["The `grad` returned from the function above is right now all zero. Derive and implement the gradient for the SVM cost function and implement it inline inside the function `svm_loss_naive`. You will find it helpful to interleave your new code inside the existing function.\n","\n","To check that you have correctly implemented the gradient correctly, you can numerically estimate the gradient of the loss function and compare the numeric estimate to the gradient that you computed. We have provided code that does this for you:"]},{"cell_type":"code","metadata":{"id":"cVocVjzprApW","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611253271043,"user_tz":-60,"elapsed":3888,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"dfd27ce9-1787-4c24-842b-51f11993181c"},"source":["# Once you've implemented the gradient, recompute it with the code below\n","# and gradient check it with the function we provided for you\n","\n","# Compute the loss and its gradient at W.\n","loss, grad = svm_loss_naive(W, X_dev, y_dev, 0.0)\n","\n","# Numerically compute the gradient along several randomly chosen dimensions, and\n","# compare them with your analytically computed gradient. The numbers should match\n","# almost exactly along all dimensions.\n","from cs231n.gradient_check import grad_check_sparse\n","f = lambda w: svm_loss_naive(w, X_dev, y_dev, 0.0)[0]\n","grad_numerical = grad_check_sparse(f, W, grad)\n","\n","# do the gradient check once again with regularization turned on\n","# you didn't forget the regularization gradient did you?\n","loss, grad = svm_loss_naive(W, X_dev, y_dev, 5e1)\n","f = lambda w: svm_loss_naive(w, X_dev, y_dev, 5e1)[0]\n","grad_numerical = grad_check_sparse(f, W, grad)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["numerical: 1.735943 analytic: 1.735943, relative error: 2.546403e-11\n","numerical: 1.969912 analytic: 1.969912, relative error: 6.957576e-11\n","numerical: -19.355156 analytic: -19.368472, relative error: 3.438549e-04\n","numerical: 1.630683 analytic: 1.617796, relative error: 3.967039e-03\n","numerical: -31.188028 analytic: -31.188028, relative error: 2.284121e-12\n","numerical: 28.790454 analytic: 28.790454, relative error: 2.898519e-12\n","numerical: 7.179887 analytic: 7.179887, relative error: 3.229984e-11\n","numerical: 5.550338 analytic: 5.594092, relative error: 3.926088e-03\n","numerical: -3.377969 analytic: -3.404995, relative error: 3.984486e-03\n","numerical: 23.760184 analytic: 23.760184, relative error: 7.204207e-12\n","numerical: 14.762578 analytic: 14.762578, relative error: 1.433315e-11\n","numerical: -8.207555 analytic: -8.207555, relative error: 3.930879e-11\n","numerical: 5.744252 analytic: 5.744252, relative error: 4.948586e-11\n","numerical: 0.968367 analytic: 0.968367, relative error: 7.908199e-11\n","numerical: 6.322339 analytic: 6.322339, relative error: 2.243296e-12\n","numerical: 1.218070 analytic: 1.221719, relative error: 1.495664e-03\n","numerical: 0.783677 analytic: 0.783677, relative error: 3.093583e-10\n","numerical: 15.111420 analytic: 15.111420, relative error: 4.839265e-12\n","numerical: 28.604320 analytic: 28.603861, relative error: 8.026854e-06\n","numerical: -12.510152 analytic: -12.510152, relative error: 6.623274e-13\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"KbH9kF2jrApX"},"source":["**Inline Question 1**\n","\n","It is possible that once in a while a dimension in the gradcheck will not match exactly. What could such a discrepancy be caused by? Is it a reason for concern? What is a simple example in one dimension where a gradient check could fail? How would change the margin affect of the frequency of this happening? *Hint: the SVM loss function is not strictly speaking differentiable*\n","\n","$\\color{blue}{\\textit Your Answer:}$\n","- Such a discrepancy can be caused by the fact that the given loss formula is not differentiable at some point. So, the analogical derivate of the loss formula is approximated at that point. And that causes the gap between the numerical gradient and the analogical one (in that dimension).\n","\n","- No, it is not a reason to concern, since this value (in which, the loss function is not differentiable) is an exception, i.e., occurs rarely in practice.\n","\n","- An example in which a gradient check could fail:\n","\n","Well, I'll explain this regarding my comprehension (which could be wrong).\n","\n","As known, $f(x) = \\max(0, x)$ is not differentiable at $(x = 0)$. See the explanation [here](https://math.stackexchange.com/a/1329266).\n","\n","For the SVM loss (for a signle datapoint x):\n","$L = \\sum_{j\\neq y} \\left[ \\max(0, w_j^Tx - w_{y}^Tx + \\Delta) \\right]$, with $\\Delta = 1$\n","\n","That formula is not differentiable when:\n","$w_j^Tx - w_{y}^Tx + \\Delta = 0$\n","\n","A simple example could be: $w=[-2, -1]$ (The are only two classes), $x=[1]$ and $y=1$ (The correct class is 1).\n","\n","**Proof:**\n","\n","We have: $w \\cdot x = [-2, -1]$, by substituting the result in the loss formula part which causes that it will be not differentiable:\n","$w_j^Tx - w_{y_i}^Tx + \\Delta = 0 \\Longleftrightarrow -2 - (-1) + 1 = 0$\n","\n","**Q.E.D.**\n"]},{"cell_type":"code","metadata":{"id":"vectorized_time_1","scrolled":true,"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611253961142,"user_tz":-60,"elapsed":719,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"daac6149-99db-4c2f-f551-2107650c8062"},"source":["# Next implement the function svm_loss_vectorized; for now only compute the loss;\n","# we will implement the gradient in a moment.\n","tic = time.time()\n","loss_naive, grad_naive = svm_loss_naive(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('Naive loss: %e computed in %fs' % (loss_naive, toc - tic))\n","\n","from cs231n.classifiers.linear_svm import svm_loss_vectorized\n","tic = time.time()\n","loss_vectorized, _ = svm_loss_vectorized(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('Vectorized loss: %e computed in %fs' % (loss_vectorized, toc - tic))\n","\n","# The losses should match but your vectorized implementation should be much faster.\n","print('difference: %f' % (loss_naive - loss_vectorized))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Naive loss: 8.554036e+00 computed in 0.108015s\n","Vectorized loss: 8.554036e+00 computed in 0.010636s\n","difference: 0.000000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"vectorized_time_2","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611253975715,"user_tz":-60,"elapsed":738,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9edd783c-14c8-4a9d-963a-bb1412316268"},"source":["# Complete the implementation of svm_loss_vectorized, and compute the gradient\n","# of the loss function in a vectorized way.\n","\n","# The naive implementation and the vectorized implementation should match, but\n","# the vectorized version should still be much faster.\n","tic = time.time()\n","_, grad_naive = svm_loss_naive(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('Naive loss and gradient: computed in %fs' % (toc - tic))\n","\n","tic = time.time()\n","_, grad_vectorized = svm_loss_vectorized(W, X_dev, y_dev, 0.000005)\n","toc = time.time()\n","print('Vectorized loss and gradient: computed in %fs' % (toc - tic))\n","\n","# The loss is a single number, so it is easy to compare the values computed\n","# by the two implementations. The gradient on the other hand is a matrix, so\n","# we use the Frobenius norm to compare them.\n","difference = np.linalg.norm(grad_naive - grad_vectorized, ord='fro')\n","print('difference: %f' % difference)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Naive loss and gradient: computed in 0.082311s\n","Vectorized loss and gradient: computed in 0.010278s\n","difference: 0.000000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"k3fqv7UFrApY"},"source":["### Stochastic Gradient Descent\n","\n","We now have vectorized and efficient expressions for the loss, the gradient and our gradient matches the numerical gradient. We are therefore ready to do SGD to minimize the loss. Your code for this part will be written inside `cs231n/classifiers/linear_classifier.py`."]},{"cell_type":"code","metadata":{"id":"sgd","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611254017083,"user_tz":-60,"elapsed":7820,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"bc097e2b-dbb5-4815-ef70-070423dd7923"},"source":["# In the file linear_classifier.py, implement SGD in the function\n","# LinearClassifier.train() and then run it with the code below.\n","from cs231n.classifiers import LinearSVM\n","svm = LinearSVM()\n","tic = time.time()\n","loss_hist = svm.train(X_train, y_train, learning_rate=1e-7, reg=2.5e4,\n"," num_iters=1500, verbose=True)\n","toc = time.time()\n","print('That took %fs' % (toc - tic))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["iteration 0 / 1500: loss 790.962547\n","iteration 100 / 1500: loss 287.988371\n","iteration 200 / 1500: loss 108.396316\n","iteration 300 / 1500: loss 43.115256\n","iteration 400 / 1500: loss 19.422012\n","iteration 500 / 1500: loss 10.192382\n","iteration 600 / 1500: loss 7.556665\n","iteration 700 / 1500: loss 6.094012\n","iteration 800 / 1500: loss 5.343716\n","iteration 900 / 1500: loss 5.457795\n","iteration 1000 / 1500: loss 5.168294\n","iteration 1100 / 1500: loss 5.935574\n","iteration 1200 / 1500: loss 5.168808\n","iteration 1300 / 1500: loss 5.192995\n","iteration 1400 / 1500: loss 4.960080\n","That took 6.312145s\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"sJ8ImuGsrApY","colab":{"base_uri":"https://localhost:8080/","height":496},"executionInfo":{"status":"ok","timestamp":1611254036556,"user_tz":-60,"elapsed":711,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"dccdf610-9af3-4560-b43c-118c14df7af1"},"source":["# A useful debugging strategy is to plot the loss as a function of\n","# iteration number:\n","plt.plot(loss_hist)\n","plt.xlabel('Iteration number')\n","plt.ylabel('Loss value')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAmQAAAHgCAYAAAAL2HHvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxld33f/9fn3itd7btmlWbxvuGNYQsEgg0ESIIhIZQ80uKkbp02pEBIm0L7a1N+7a+/0KaloQvUYYlJCcuPQOwQNmN2gg1jY7yNl/HY49lHs0ka7dL9/v64Z8zYjD2aGd050tXr+XjooXO+5+jqo+Nr6T3f7/d8T6SUkCRJUn4KeRcgSZK03BnIJEmScmYgkyRJypmBTJIkKWcGMkmSpJwZyCRJknJWyruAM9HX15c2bNiQdxmSJEkndddddx1IKfWf6NiSDmQbNmxg8+bNeZchSZJ0UhGx/dmOOWQpSZKUMwOZJElSzgxkkiRJOTOQSZIk5cxAJkmSlDMDmSRJUs4MZJIkSTkzkEmSJOXMQCZJkpSzmgayiPj9iHggIu6PiE9FRFNEbIyIOyNia0R8JiIas3PL2f7W7PiGWtYmSZK0WNQskEXEWuAdwKaU0mVAEXgr8H7gAyml84DDwA3Zl9wAHM7aP5CdJ0mSVPdqPWRZApojogS0AHuAa4DPZcdvBt6YbV+X7ZMdvzYiosb1SZIk5a5mgSyltAv4E+BJqkFsGLgLOJJSms1O2wmszbbXAjuyr53Nzu+tVX2SJEmLRS2HLLup9nptBNYArcBrF+B1b4yIzRGxeWho6ExfTpIkKXe1HLJ8FfB4SmkopTQDfB54KdCVDWECDAC7su1dwCBAdrwTOPjMF00p3ZRS2pRS2tTf31/D8iVJks6OWgayJ4EXR0RLNhfsWuBB4JvAm7NzrgduybZvzfbJjn8jpZRqWJ8kSdKiUMs5ZHdSnZx/N3Bf9r1uAv4l8O6I2Ep1jthHsy/5KNCbtb8beE+tapuvSiVxeGya2blK3qVIkqQ6Fku5E2rTpk1p8+bNNXv9v713D2//y7v56rtezoWr2mv2fSRJUv2LiLtSSptOdMyV+p9Db1sjAAePTuVciSRJqmcGsufQlwWyA2PTOVciSZLqmYHsOfS0lgF7yCRJUm0ZyJ5DV3MDhYCDR+0hkyRJtWMgew6FQtDTWuagQ5aSJKmGDGQn0dfW6JClJEmqKQPZSfS0NtpDJkmSaspAdhK9bWUO2EMmSZJqyEB2Er2tjRxyUr8kSaohA9lJ9LY2Mjo1y9TsXN6lSJKkOmUgO4netupaZIecRyZJkmrEQHYSP318koFMkiTVhoHsJJ56fJIT+yVJUo0YyE7i2OOTHLKUJEm1YiA7CYcsJUlSrRnITqK9XKKxWODAmEOWkiSpNgxkJxER9La5FpkkSaodA9k8+PgkSZJUSwayeehtK/uAcUmSVDMGsnnoa23kgEOWkiSpRgxk87C6q4m9I5PMzlXyLkWSJNUhA9k8rO1qYa6S2DfqsKUkSVp4BrJ5WN3ZBMDe4cmcK5EkSfXIQDYP7U0lAI5OzeZciSRJqkcGsnloLVcD2ZiBTJIk1YCBbB7ayvaQSZKk2jGQzYM9ZJIkqZYMZPPQWi4CBjJJklQbBrJ5KJeKNBSDo1NzeZciSZLqkIFsnnpaG318kiRJqgkD2TwNdLew4/B43mVIkqQ6ZCCbp4HuZnYensi7DEmSVIcMZPO0sqOJ/aNTpJTyLkWSJNUZA9k89bU1Mj1bcS0ySZK04Axk89TXVgbgwNHpnCuRJEn1xkA2T71PBTLvtJQkSQvLQDZPfW2NABwYNZBJkqSFZSCbp357yCRJUo0YyOapp7WRCBhyDpkkSVpgBrJ5KhULdLe4Wr8kSVp4BrJT0Nva6JClJElacAayU9DXVnbZC0mStOBqFsgi4sKIuOe4j5GIeFdE9ETEbRHxaPa5Ozs/IuKDEbE1Iu6NiKtrVdvp6msv20MmSZIWXM0CWUrp4ZTSlSmlK4HnA+PAF4D3ALenlM4Hbs/2AV4HnJ993Ah8qFa1na6+tkaXvZAkSQvubA1ZXgs8llLaDlwH3Jy13wy8Mdu+DvhEqroD6IqI1WepvnnpayszNj3HxPRc3qVIkqQ6crYC2VuBT2XbK1NKe7LtvcDKbHstsOO4r9mZtT1NRNwYEZsjYvPQ0FCt6j2hpxaHddhSkiQtoJoHsohoBN4A/H/PPJZSSkA6lddLKd2UUtqUUtrU39+/QFXOT5+Lw0qSpBo4Gz1krwPuTinty/b3HRuKzD7vz9p3AYPHfd1A1rZo+IBxSZJUC2cjkP0GPx2uBLgVuD7bvh645bj2t2V3W74YGD5uaHNR6Gu3h0ySJC28Ui1fPCJagVcDv3Nc8x8Dn42IG4DtwFuy9i8Brwe2Ur0j87drWdvp6G31AeOSJGnh1TSQpZTGgN5ntB2ketflM89NwNtrWc+Zamoo0l4u2UMmSZIWlCv1n6L+dlfrlyRJC8tAdor62ssM2UMmSZIWkIHsFPW3lZ1DJkmSFpSB7BT1t5cZMpBJkqQFZCA7Rf3tZUanZpmc8fFJkiRpYRjITtGxxyfZSyZJkhaKgewU9WeLwzqxX5IkLRQD2Snqb2sC7CGTJEkLx0B2ivp9fJIkSVpgBrJT1OscMkmStMAMZKeooVigu6XBQCZJkhaMgew0rGhvYr+BTJIkLRAD2WlY0VE2kEmSpAVjIDsNK9qbGBqZzLsMSZJUJwxkp2Ggu5m9I5NMTLtavyRJOnMGstNw8eoOKgke3jeadymSJKkOGMhOw7qeFgD2HJnIuRJJklQPDGSnobu1AYDD4zM5VyJJkuqBgew0dLdUF4c9PD6dcyWSJKkeGMhOQ1NDkaaGAkcMZJIkaQEYyE5TT0sjB8cMZJIk6cwZyE5Tf0eTj0+SJEkLwkB2mla2l9nn4rCSJGkBGMhO06rOJvaN2EMmSZLOnIHsNK3saGJ4YobJGVfrlyRJZ8ZAdppWtJcB2G8vmSRJOkMGstO0sqMJgL3OI5MkSWfIQHaaVnUayCRJ0sIwkJ2mYz1k+4YNZJIk6cwYyE5TR1OJ5oaiPWSSJOmMGchOU0SwurPJQCZJks6YgewMrOxoYq9DlpIk6QwZyM7Aqk4DmSRJOnMGsjOwqrOJ/aOTVCop71IkSdISZiA7A6s6mpiZSxwan867FEmStIQZyM7AU4vDOmwpSZLOgIHsDKzOFofdYyCTJElnwEB2Bla7Wr8kSVoABrIz0NtWplQI9g5P5F2KJElawgxkZ6BYCFa0lx2ylCRJZ8RAdoZci0ySJJ2pmgayiOiKiM9FxEMRsSUiXhIRPRFxW0Q8mn3uzs6NiPhgRGyNiHsj4upa1rZQVnc2G8gkSdIZqXUP2Z8CX0kpXQRcAWwB3gPcnlI6H7g92wd4HXB+9nEj8KEa17YgVnU2sWd4kpRcHFaSJJ2emgWyiOgEXg58FCClNJ1SOgJcB9ycnXYz8MZs+zrgE6nqDqArIlbXqr6FsrqziYmZOYYnZvIuRZIkLVG17CHbCAwBH4+IH0fERyKiFViZUtqTnbMXWJltrwV2HPf1O7O2RW1NVzMAu454p6UkSTo9tQxkJeBq4EMppauAMX46PAlAqo7zndJYX0TcGBGbI2Lz0NDQghV7uo4Fsj1HnEcmSZJOTy0D2U5gZ0rpzmz/c1QD2r5jQ5HZ5/3Z8V3A4HFfP5C1PU1K6aaU0qaU0qb+/v6aFT9fa7LFYXe7FpkkSTpNNQtkKaW9wI6IuDBruhZ4ELgVuD5rux64Jdu+FXhbdrfli4Hh44Y2F62+tjINxWC3PWSSJOk0lWr8+v8M+GRENALbgN+mGgI/GxE3ANuBt2Tnfgl4PbAVGM/OXfQKhWB1ZzO7nUMmSZJOU00DWUrpHmDTCQ5de4JzE/D2WtZTK6s7m9jjkKUkSTpNrtS/ANZ2NTtkKUmSTpuBbAGs7mpi78gkcxUXh5UkSafOQLYA1nQ1M1dJ7B+1l0ySJJ06A9kCWNNZXYvMYUtJknQ6DGQLwNX6JUnSmTCQLYC13cd6yAxkkiTp1BnIFkBbuURXSwM7D4/nXYokSVqCDGQLZG1XMzsP20MmSZJOnYFsgQx0N7PLQCZJkk6DgWyBrO1qYefhCaoPHJAkSZo/A9kCGehuZmJmjsPjM3mXIkmSlhgD2QI5dqelE/slSdKpMpAtkIGnApnzyCRJ0qkxkC2QY6v17xl2tX5JknRqDGQLpKulgXKpwN5he8gkSdKpMZAtkIhgTVezPWSSJOmUGcgW0KqOJvYayCRJ0ikykC2g1Z1N9pBJkqRTZiBbQKs6m9g3MslcxcVhJUnS/BnIFtA5/W3MVhKPDR3NuxRJkrSEGMgW0JWDXQD8ZMeRnCuRJElLiYFsAQ32VNci233EeWSSJGn+DGQLqFwq0tfWyN4R1yKTJEnzZyBbYKu801KSJJ0iA9kCW93ZzB6HLCVJ0ikwkC2w6lpkDllKkqT5M5AtsFWdTYxMzjI2NZt3KZIkaYkwkC2wNZ3VOy2dRyZJkubLQLbAVnU2AThsKUmS5s1AtsCO9ZDtPmIgkyRJ82MgW2Cru5ooBOw8bCCTJEnzYyBbYA3FAqs7m9lxaDzvUiRJ0hJhIKuBwZ5mdthDJkmS5slAVgOD3S32kEmSpHkzkNXAYE8L+0enmJyZy7sUSZK0BBjIamBdTwsAOw/bSyZJkk7OQFYDgz3VpS92HHIemSRJOjkDWQ0Mdld7yJ50HpkkSZoHA1kN9LeXKZcKTuyXJEnzYiCrgYhgsKeFHc4hkyRJ82Agq5F1PS3OIZMkSfNS00AWEU9ExH0RcU9EbM7aeiLitoh4NPvcnbVHRHwwIrZGxL0RcXUta6u1we7qav0ppbxLkSRJi9zZ6CF7ZUrpypTSpmz/PcDtKaXzgduzfYDXAednHzcCHzoLtdXMYE8Lo1OzDE/M5F2KJEla5PIYsrwOuDnbvhl443Htn0hVdwBdEbE6h/oWxGC2FpnDlpIk6WRqHcgS8LWIuCsibszaVqaU9mTbe4GV2fZaYMdxX7sza1uSXPpCkiTNV6nGr/+ylNKuiFgB3BYRDx1/MKWUIuKUJlllwe5GgHXr1i1cpQtsfW8LEbB1/9G8S5EkSYtcTXvIUkq7ss/7gS8ALwT2HRuKzD7vz07fBQwe9+UDWdszX/OmlNKmlNKm/v7+WpZ/RlrLJTb2tXL/7uG8S5EkSYtczQJZRLRGRPuxbeA1wP3ArcD12WnXA7dk27cCb8vutnwxMHzc0OaStLG3lV2HnUMmSZKeWy2HLFcCX4iIY9/nL1NKX4mIHwGfjYgbgO3AW7LzvwS8HtgKjAO/XcPazoq+tjL37bKHTJIkPbeaBbKU0jbgihO0HwSuPUF7At5eq3ry0NvWyMGxaSqVRKEQeZcjSZIWKVfqr6G+tjJzlcTh8em8S5EkSYuYgayG1vW49IUkSTo5A1kNbexvBeDxA2M5VyJJkhYzA1kNDXa3UCyEgUySJD0nA1kNNZYKDHY3s81AJkmSnoOBrMY29rXy+JCBTJIkPTsDWY1t7Gvj8QNjVFf1kCRJ+lkGshrb2NfCxMwc+0am8i5FkiQtUgayGtvY1wbAtgM+ZFySJJ2YgazGXPpCkiSdjIGsxlZ3NFEuFZzYL0mSnpWBrMYKhWBjXytPHDSQSZKkEzOQnQUbelsdspQkSc/KQHYWrO9tYcfhCSoVl76QJEk/y0B2FqzrbWF6tsLekcm8S5EkSYuQgewsWN9TvdNy+8HxnCuRJEmLkYHsLFjf2wLAk4ecRyZJkn6WgewsWN3ZRKkQ9pBJkqQTMpCdBaVigbXdzWw/ZCCTJEk/y0B2lqzraeFJe8gkSdIJGMjOkvW9LWx3cVhJknQCBrKzZH1PKyOTsxwZn867FEmStMicNJBFxMqI+GhEfDnbvyQibqh9afXlnOwh41v3H825EkmStNjMp4fsz4GvAmuy/UeAd9WqoHp18eoOAB7cM5JzJZIkabGZTyDrSyl9FqgApJRmgbmaVlWHVnc20VYu8Zg9ZJIk6RnmE8jGIqIXSAAR8WJguKZV1aGIYENfC497p6UkSXqG0jzOeTdwK3BuRHwf6AfeXNOq6tSG3lbu3WmWlSRJT3fSQJZSujsiXgFcCATwcEpppuaV1aGNfa186b49TM9WaCx5g6skSao6aSCLiLc9o+nqiCCl9Ika1VS3NvS2Uknw5KFxzlvRlnc5kiRpkZjPkOULjttuAq4F7gYMZKfo/JXVELZ1/6iBTJIkPWU+Q5b/7Pj9iOgCPl2ziurYeSvaiICH9x7ltZflXY0kSVosTmci0xiwcaELWQ5aGkus62nhkf2jeZciSZIWkfnMIfsbsiUvqAa4S4DP1rKoenb+inYe2WsgkyRJPzWfOWR/ctz2LLA9pbSzRvXUvQtXtfGth/d7p6UkSXrKfOaQfftsFLJcXLCyndlK4vEDY1y4qj3vciRJ0iLwrIEsIkb56VDl0w4BKaXUUbOq6tgFK6sh7OF9owYySZIEPEcgSymZFmrgnP5WioWoziO7Iu9qJEnSYjCfOWQARMQKquuQAZBSerImFdW5cqnIxr5WHt7nxH5JklR10lnlEfGGiHgUeBz4NvAE8OUa11XXLljZxqMGMkmSlJnPbX7/Hngx8EhKaSPVlfrvqGlVdW59bys7D08wO1fJuxRJkrQIzCeQzaSUDgKFiCiklL4JbKpxXXVtfU8Ls5XEnuHJvEuRJEmLwHwC2ZGIaAO+A3wyIv6U6mr98xIRxYj4cUR8MdvfGBF3RsTWiPhMRDRm7eVsf2t2fMOp/zhLw7reFqD6kHFJkqT5BLLrgHHg94GvAI8Bv3IK3+OdwJbj9t8PfCCldB5wGLgha78BOJy1fyA7ry6t720FYPtBA5kkSZpfIPsdYHVKaTaldHNK6YPZEOZJRcQA8EvAR7L9AK4BPpedcjPwxmz7umyf7Pi12fl1Z1VHE80NRe7bdSTvUiRJ0iIwn0DWDnwtIr4bEb8XEStP4fX/G/CHwLHZ673AkZTSbLa/E1ibba8FdgBkx4ez8+tOsRBcc9EKvv3wUN6lSJKkReCkgSyl9L6U0qXA24HVwLcj4usn+7qI+GVgf0rprjMv82mve2NEbI6IzUNDSzfQnNvfyt6RSe+0lCRJ8+ohO2Y/sBc4CKyYx/kvBd4QEU8An6Y6VPmnQFdEHFuQdgDYlW3vAgYBsuOd2fd6mpTSTSmlTSmlTf39/adQ/uKypquZSoJ9o1N5lyJJknI2n4VhfzcivgXcTnUI8R+nlC4/2dellN6bUhpIKW0A3gp8I6X0m8A3gTdnp10P3JJt35rtkx3/RkrpRM/SrAuDPdU7LR8fmvcNq5IkqU7N59FJg8C7Ukr3LND3/JfApyPiPwA/Bj6atX8U+IuI2Aocohri6tZF2YPFH9o7wsvO78u5GkmSlKeTBrKU0nvP9JuklL4FfCvb3ga88ATnTAK/fqbfa6nobSvT315myx4foSRJ0nJ3KnPItMAuXt3Blj0jeZchSZJyZiDL0cWr29m6/ygz3mkpSdKyNp9J/a0RUci2L4iIN0REQ+1Lq38Xr+pgeq7CNif2S5K0rM2nh+w7QFNErAW+BvwD4M9rWdRycfHqDgCHLSVJWubmE8gipTQO/Crwv1JKvw5cWtuylodz+ltpLBbYstdAJknScjavQBYRLwF+E/jbrK1Yu5KWj4ZigfNWtHmnpSRJy9x8Atm7gPcCX0gpPRAR51Bd3FUL4OLVHTzkkKUkScvafJ5l+e2U0htSSu/PJvcfSCm94yzUtixcvLqd/aNTHDzqI5QkSVqu5nOX5V9GREdEtAL3Aw9GxL+ofWnLw7GJ/Q/tddhSkqTlaj5DlpeklEaANwJfBjZSvdNSC+DYI5S801KSpOVrPoGsIVt37I3ArSmlGaBuH/p9tvW2lelrK/PovqN5lyJJknIyn0D2v4EngFbgOxGxHrA7ZwGt721h+yEXh5Ukabmaz6T+D6aU1qaUXp+qtgOvPAu1LRvrelrYfnA87zIkSVJO5jOpvzMi/mtEbM4+/gvV3jItkItXt7NneJID3mkpSdKyNJ8hy48Bo8Bbso8R4OO1LGq5uWpdNwD3PHkk50okSVIe5hPIzk0p/VFKaVv28T7gnFoXtpxctqaTYiH48Y7DeZciSZJyMJ9ANhERLzu2ExEvBSZqV9Ly09xY5Lx+H6EkSdJyVZrHOf8E+EREdGb7h4Hra1fS8nTR6nZ+9PihvMuQJEk5mM9dlj9JKV0BXA5cnlK6Crim5pUtMxeuamf38CTDEzN5lyJJks6y+QxZApBSGslW7Ad4d43qWbaOrdj/yD6HLSVJWm7mHcieIRa0CnHhKp9pKUnScnW6gcxHJy2wNZ1NdDSVeHD3cN6lSJKks+xZJ/VHxCgnDl4BNNesomUqInjhxh7+7rGDeZciSZLOsmcNZCml9rNZiKoLxH59y35GJ2dob2rIuxxJknSWnO6QpWrg/BVtgBP7JUlabgxki8imDT00FIOvPrAv71IkSdJZZCBbRHpaG7lqsJvNT7hArCRJy4mBbJF53kAnD+weYXaukncpkiTpLDGQLTLPW9vJ1GyFR/cfzbsUSZJ0lhjIFpnnDVQfGXrfLtcjkyRpuTCQLTIbe1tpK5e4b6eBTJKk5cJAtsgUCsGlazrsIZMkaRkxkC1Clw908uCeEWac2C9J0rJgIFuELlvbyfRsxQViJUlaJgxki9DlA10A3O+wpSRJy4KBbBFa39NCe7nEvU7slyRpWTCQLUKFQnDZ2k57yCRJWiYMZIvU5QOdbNkzyvSsE/slSap3BrJF6orBLqbnKmzZM5J3KZIkqcYMZIvU89ZWV+w3kEmSVP8MZIvU2q5myqUCW32mpSRJdc9AtkgVCsGFq9q901KSpGWgZoEsIpoi4ocR8ZOIeCAi3pe1b4yIOyNia0R8JiIas/Zytr81O76hVrUtFS87r4+7nzzM6ORM3qVIkqQaqmUP2RRwTUrpCuBK4LUR8WLg/cAHUkrnAYeBG7LzbwAOZ+0fyM5b1l5+QT+zlcSd2w7lXYokSaqhmgWyVHVsAlRD9pGAa4DPZe03A2/Mtq/L9smOXxsRUav6loLLB6oT+x90Yr8kSXWtpnPIIqIYEfcA+4HbgMeAIyml2eyUncDabHstsAMgOz4M9J7gNW+MiM0RsXloaKiW5eeupbHE+t4WHtjtPDJJkupZTQNZSmkupXQlMAC8ELhoAV7zppTSppTSpv7+/jOucbH7uXP7+N6jB5iancu7FEmSVCNn5S7LlNIR4JvAS4CuiChlhwaAXdn2LmAQIDveCRw8G/UtZq++ZAVj03Pc4TwySZLqVi3vsuyPiK5suxl4NbCFajB7c3ba9cAt2fat2T7Z8W+klFKt6lsqXrixOmp7744jOVciSZJqpXTyU07bauDmiChSDX6fTSl9MSIeBD4dEf8B+DHw0ez8jwJ/ERFbgUPAW2tY25LRVi6xobfFif2SJNWxmgWylNK9wFUnaN9GdT7ZM9sngV+vVT1L2cWrO3yEkiRJdcyV+peAS9d08MTBcQ6NTeddiiRJqgED2RLwCxeuAOD2LftyrkSSJNWCgWwJuHRNB2s6m/jGQ/vzLkWSJNWAgWwJiAiuXt/NfbtcIFaSpHpkIFsiLl7dwc7DE4z4oHFJkuqOgWyJuHh1OwAP7RnNuRJJkrTQDGRLxGVrO4mAbz3sPDJJkuqNgWyJWNHexM+d28u3H6nvB6pLkrQcGciWkOet7eKRfaM+aFySpDpjIFtCXrChm5m5xA8eW/bPXJckqa4YyJaQl57XR0MxuGPbobxLkSRJC8hAtoQ0NRS5fKCLL923h9m5St7lSJKkBWIgW2L+3gsGefLQOFuHjuZdiiRJWiAGsiXmysEuALbsGcm5EkmStFAMZEvMOX2tNJYKPLjbQCZJUr0wkC0xpWKBi1a1+1xLSZLqiIFsCfq5c/vY/MRhhsd9rqUkSfXAQLYEvebSlcxWEt96xMcoSZJUDwxkS9CVA120l0vcsc0FYiVJqgcGsiWoUAhedE4vf3X3Lg4encq7HEmSdIYMZEvU77ziHKZnK9z5uKv2S5K01BnIlqgrBrpoaijwQwOZJElLnoFsiWosFbh6XbeBTJKkOmAgW8JeuLGHLXtHGJl0+QtJkpYyA9kS9sINPaQEdz1xOO9SJEnSGTCQLWFXreumsVjg+1sP5F2KJEk6AwayJay5sciLzunhGw+7QKwkSUuZgWyJu+aiFWwbGmP7wbG8S5EkSafJQLbEXXPRCgC+8ZC9ZJIkLVUGsiVufW8r5/S38tUH9uZdiiRJOk0Gsjrwlk2D3LHtEA/sHs67FEmSdBoMZHXg164eIAJu3+KwpSRJS5GBrA70t5e5YqDLeWSSJC1RBrI6ce1FK/jJziMMjU7lXYokSTpFBrI68cqLVpASfMs1ySRJWnIMZHXi0jUdrOwoO2wpSdISZCCrExHBNRet5DuPDDE9W8m7HEmSdAoMZHXk2otWMDY9xw8fP5R3KZIk6RQYyOrIS8/ro1wq8PUt+/IuRZIknQIDWR1pbizy8+f3cduD+0gp5V2OJEmaJwNZnXnNpavYdWSCB3aP5F2KJEmap5oFsogYjIhvRsSDEfFARLwza++JiNsi4tHsc3fWHhHxwYjYGhH3RsTVtaqtnr3q4pUUC8Hf3rcn71IkSdI81bKHbBb4g5TSJcCLgbdHxCXAe4DbU0rnA7dn+wCvA87PPm4EPlTD2upWT2sjP3duL1+6b4/DlpIkLRE1C2QppT0ppbuz7VFgC7AWuA64OTvtZuCN2fZ1wCdS1R1AV0SsrlV99eyXnrea7QfHuX+Xw5aSJC0FZ2UOWURsAK4C7gRWppSOjaftBVZm22uBHcd92c6sTafotZetorFY4K/v2ZV3KZIkaR5qHsgiog34K+BdKaWnddmk6pjaKY2rRcSNEbE5IjYPDQ0tYKX1o6ulkVde1M8t9+xmds5FYiVJWuxqGsgiooFqGPtkSunzWfO+Y0OR2edjz/rZBQwe9+UDWdvTpJRuSiltSilt6u/vr13xS9ybrlrLgaNTfG/rgbxLkX70oLoAAB+6SURBVCRJJ1HLuywD+CiwJaX0X487dCtwfbZ9PXDLce1vy+62fDEwfNzQpk7RKy9aQWdzA3/9Y4ctJUla7Eo1fO2XAv8AuC8i7sna/hXwx8BnI+IGYDvwluzYl4DXA1uBceC3a1hb3SuXivzS5av5wt27GJuapbVcy//UkiTpTNTsr3RK6XtAPMvha09wfgLeXqt6lqM3XbWWv7zzSb5y/15+7fkDeZcjSZKehSv117FN67sZ7GnmCw5bSpK0qBnI6lhE8KYr1/L9xw6wb2Qy73IkSdKzMJDVuTdetZaU4BbXJJMkadEykNW5c/rbuGKwi8/fbSCTJGmxMpAtA7961Voe2jvKlj0+SkmSpMXIQLYM/PLlqykVwjXJJElapAxky0BvW5lXXNDPX9+zi7nKKT2pSpIknQUGsmXiTVevZd/IFLc9uDfvUiRJ0jMYyJaJX7x0Fet7W/iLO7bnXYokSXoGA9ky0VAs8IuXruLObYcYm5rNuxxJknQcA9kycu1FK5itJP74yw/lXYokSTqOgWwZedE5vbz6kpV84ce7GJ+2l0ySpMXCQLbM/OOfP4ejU7P87b178i5FkiRlDGTLzAs2dHNOXyuf+dGOvEuRJEkZA9kyExH8vRcMsnn7YbbuH827HEmShIFsWfrVqwcoFYL/c8eTeZciSZIwkC1L/e1l3nTVWj5553b2jUzmXY4kScuegWyZ+r1rziMl+K9feyTvUiRJWvYMZMvU+t5WXve81Xx9yz6mZufyLkeSpGXNQLaM/epVazk4Ns3//va2vEuRJGlZM5AtY6+8aAWvuWQlf/adbUzO2EsmSVJeDGTL3G+8cB2jU7N8/u5deZciSdKyZSBb5l5ybi8belv4H994lLlKyrscSZKWJQPZMtfUUOQPXnMhu4cn+bvHDuRdjiRJy5KBTLz6kpV0NjfwwdsfZWzKh45LknS2GchEU0ORf/PLl/CjJw7z8e8/nnc5kiQtOwYyAfDm5w9w9bouPv2jHa5LJknSWWYg01P+6S+cx87DE3z3EeeSSZJ0NhnI9JRfuLCfrpYG/vgrD9lLJknSWWQg01MaigV+75XnsXX/UW69Z3fe5UiStGwYyPQ0N7xsIxesbOPPvruN2blK3uVIkrQsGMj0NBHBP3nFuTyy7ygf+tZjeZcjSdKyYCDTz/jVqwd45YX9/PdvbGXn4fG8y5Ekqe4ZyHRC73vDZcxUKnzoW4+Rko9UkiSplgxkOqF1vS38/Ret55N3PsntW/bnXY4kSXXNQKZn9Ue/cgkr2st8+kc78i5FkqS6ZiDTsyoVC7z5+QN8fcs+PvLdbXmXI0lS3TKQ6Tn989dcyMsv6Od/fesxKhXnkkmSVAsGMj2nQiF445VrODQ2zX/+2sN5lyNJUl0ykOmk3nDFGq67cg0f+tZjfPfRobzLkSSp7hjIdFKlYoH/503P45z+Vv7olgdcwV+SpAVWs0AWER+LiP0Rcf9xbT0RcVtEPJp97s7aIyI+GBFbI+LeiLi6VnXp9LSVS7z3dRez7cAYf/K1R/IuR5KkulLLHrI/B177jLb3ALenlM4Hbs/2AV4HnJ993Ah8qIZ16TS96uIVvOaSlXz424+x+YlDeZcjSVLdqFkgSyl9B3jmX+3rgJuz7ZuBNx7X/olUdQfQFRGra1WbTk9E8B/edBkAb/7wDzgyPp1zRZIk1YezPYdsZUppT7a9F1iZba8Fjl99dGfWpkVmRXsT77j2fAD+6NYHcq5GkqT6kNuk/lR9QOIpL2wVETdGxOaI2Dw05B1/efj9V53P+SvauOWe3Xzl/r15lyNJ0pJ3tgPZvmNDkdnnYw9J3AUMHnfeQNb2M1JKN6WUNqWUNvX399e0WJ1YRPDR61/Ams4m/u0t9zt0KUnSGTrbgexW4Pps+3rgluPa35bdbfliYPi4oU0tQut6W3jfdZexf3SKd3/2J1Q7PCVJ0umo5bIXnwJ+AFwYETsj4gbgj4FXR8SjwKuyfYAvAduArcCfAb9bq7q0cF59yUre87qL+MZD+/ncXTvzLkeSpCWrVKsXTin9xrMcuvYE5ybg7bWqRbXzD1+6ka8/uI//66/vp6O5gV+8dFXeJUmStOS4Ur/OSGOpwP/8zavZ2NfKH3z2J9y57WDeJUmStOQYyHTGVnY08Se/fgXlUoH3fv4+Jmfm8i5JkqQlxUCmBXHZ2k7e/2uX8/jBMX7r4z80lEmSdAoMZFowr7pkJX/y5iu4Y9sh3vc3D+ZdjiRJS0bNJvVrefq15w/wyL5R/vd3ttFQDP7v6y7LuyRJkhY9A5kW3B++9iKOjM/wiR9s52Xn9fEa77yUJOk5OWSpBVcsBP/uDZdy+UAnN/7FXfz59x/PuyRJkhY1A5lqormxyCf/0Yvoby/z7/7mQb750P6Tf5EkScuUgUw1097UwP+54UV0tzTw23/+I26554SPJ5UkadkzkKmmLlzVzpff+XIaSwXe+el7+PzdPmJJkqRnMpCp5lZ1NvGjf/0qnr++m/f81X32lEmS9AwGMp0Vnc0NfOz6F3Dlui7e+el7+LgT/SVJeoqBTGdNZ0sDf/7bL2BdTwvv+5sH+aNb7md2rpJ3WZIk5c5AprOqpbHEJ//Ri+htbeTmH2znXZ+5J++SJEnKnYFMZ91gTwt/+46f51euWMMX793Db9x0B4fGpvMuS5Kk3BjIlItVnU38p1+7nN/9hXO58/GD/MZNd7Blz0jeZUmSlAsDmXLT3FjkD197EX/61qs4cHSKN/yP7/E/v7mVuUrKuzRJks4qA5ly9ytXrOG2d7+Cay5awX/+6sOc+6++xL6RybzLkiTprDGQaVHoaW3kw3//+bzmkpUAvOg/3s62oaM5VyVJ0tlhINOiERHc9LZN/M4rzgHgmv/ybf7NX9/P5MxczpVJklRbpbwLkJ7pva+7mMvXdvGVB/byF3ds53tbD/DPX3Mhr7tsFYVC5F2eJEkLLlJauhOoN23alDZv3px3Gaqhbz68n3d+6seMTM5SKgSfuvHFvGBDT95lSZJ0yiLirpTSphMdc8hSi9orL1zBV971cl59yUpmK4lf//AP+KNb7mdi2mFMSVL9MJBp0VvT1cyfvW0Tf/VPf45z+lu5+Qfb+eX//l2+9fB+hsdn8i5PkqQzZiDTkvH89d18+Z0/zzuuPZ8nD43zWx//ES/8j1/nc3ftZCkPvUuS5BwyLUmHx6b55J3b+fj3n+Dg2DSXrung1Zes5O2vPI+Gov/OkCQtPs81h8xApiVtdq7CTd/dxn/6ysNPtf3OK87hHdecT2vZm4glSYuHgUx1b/eRCT7xg+187HuPMz1Xoa+tzLtedT6vuWQlKzqa8i5PkiQDmZaPQ2PT3LvzCP/6C/ez68gETQ0FXnnhCq4Y7OJtL1lPS6O9ZpKkfBjItOxMzc7xFz/Yzi337OahvSPMzCW6Whr4g9dcyJuvHqC5sZh3iZKkZcZApmVtcmaOf//FB/nag/sYGp0CYNP6bn7lijX82vMHaG0sEuETACRJtWUgk4CUEt9+ZIivPrCXT/1wx9OOve8Nl/KqS1ayor3Mk4fGObe/LacqJUn1ykAmPcNcJfF3jx3gr+7ayV/fs/tnjv/uL5zLW1+wjsGeZnvPJEkLwkAmPYfZuQp3P3mEW+7ZxSfvfPJnjr/4nB7e9pINvGBDD/3t5RwqlCTVAwOZNE+VSuLA2BRb9x3lX3zuXnYdmXja8YHuZl52Xh8b+1q5al0363paWNlRthdNknRSzxXIXANAOk6hEKxob2JFexPff881pJSYmJljy55RvnzfHu7bNcynf/T0+Wf97WV+9aq1rOlqpqulgXP727h0TYchTZI0b/aQSado5+Fx7tx2iC17RvjI9x4/4TmrO5v4uXP7OG9FG6s6y6zraWGgu4WVLlIrScuWQ5ZSDaWU2D86xYO7R0gk/v0Xt3BgdIrZSrV37ZhCwNruZgoRrOpoYraSuPbiFZzT18ZV67pobyoxM5foaCrZuyZJdcghS6mGIoKVHU1P9X5dc9FKoBrUtu4/ypGJGR7eO8qOQ+N89YG9HBqbZt/IJJMzFe7afvhnXq+ntZG2cokrBrvoaWmgo7mBwe4WelobedE5PTSWCjQWC0zNVmhqcIFbSaoH9pBJOZirJB7YPcyuwxMcnZrlyUPjHBqbZnhihi17RnhsaGzer3Xx6g6et7aD5oYi33/sINddsYa+9jID3c20lUscnZrl8oEuCgHNDUUKEVRSolQs1PAnlCQ9k0OW0hIzMT1Hc2ORSiXx5KFxth8aZ2Rihkf2jTJXqfa8bd5+mPNWtPHDxw+d0mu3l0uMTs0CcE5/K53NDZQKwdjUHBv7W9k7PMmqjibWdjfT2dzAyMQM7U0lJmbm6GsrE8Dz1/cwU6kwOTNHY7FAZ3MDe0cmOTQ2zaqOJjZt6CGA6bkKKUFTw0/D3zOHY6dnK0RAgwFRUp1zyFJaYo49a7NQCDb0tbKhr/VZz61UEqNTszQWC+w6MsH49CxTsxX2jUxyeHyGxmLw6L6jdDQ3cGR8hicPjXH/rhFGJmfobW0E4K7th6kkGJ6Y+ZmlPhZCuVRgeq5CX1uZqwa7eGD3COWGAtuO6wlsLBW4eFU7D+4ZoamhSGOxQH97mYf2jvKy8/rYuv8oVw520VIu0tXcyPDEDI2lAt0tDbQ1lZiaqfDY0FFaG0sM9jQ/FRLHpuaYqyQuWt3OwaPTbN1/lELAys4m1nQ2MzNX4dwVbewdnuTRfdVjh8anefXFK9m6/yi3P7SfkYkZXrChh5ec28uTh8ZpaijQ0dTA+PQcqzubeOLgOI2lAivay5QKQWu5xLcfGWKgu5nulkaOTs0yMT3H6q4mpmYqHBqbJpE4OjnLVeu7eXxojMvWdtJaLvL4gTEOHp1msKeZwe4WRqdmeeLAGGPTc+wfmaSjqYH2phKXrulkcnaOAEYnZ3ni4Bi9bWUai0FzY4nxqVlmKolKJXFufxtDRycBODA6zarOJi5c1c7fPXaA5oZiNWgHDI1O01ou0tRQZPeRCV6woQeALXtGmJypcHBsilKhwEB3My2NRe7YdpCNfW20loscHp/m/BXtjE7OUioGh8amuWR1B7uOTNBWLnFkfIbJmTmOTMzQ19bIXCVRLhWZS4nL13ZydGqWI+MzjE3P0tfWyB3bDvHIvlHedNVaGooFhidm6G8v8+DuEQ6OTTM5M0dzQ5HetkZ6W8t0tTTQ1FA97+DRam9zd0sjD+8bpbFYoLu1kdHJGZ6/vpuZuQojE9X/T1oai8xWKgAMdrcwlxItDSUe2TfKw/tGecm5vew4NE5fW5m2conRyVlmKhWGRqbobm3kolXtjEzOcGR8hunZCs2NRe7fNUxvWyMT0xUuXNXG3duP0FgqcMVgF5Mzc5RLBeYqiZUdTUzNVuhoLvHovqM0NRQYmZhleq7CkwfH6WppoFQM+trKlEtFBrqbGZ+e42Pff5yXn99Pa/b/whMHx7hgZTsRMD49R1dzA0ezf3Q1lgrsGZ6kt7WRw+PTT/2eqH7vObpaGlnT2cyPnzxMRPW91N3SyOTsHBeubGdkcrb6ulNzrOlqYmRylpm5ChesbGf/yCRDR6foayszOjnLXCUxNjVLJSXW97bS29rI1qGjVCqJDX2tDE9U3wNHp2bpaytTLARPHhxnRUeZJw6Ms763hdlKoqEYHBmfoaFYoKmhwPj0HPfuPMJgdwtb9ozQ1dJIX3uZtV1NPDY0xqVrOjg8Vn3tYjEY7G5meGKGzuZG+tvKzFQqNDcUKRaCmbkK335kiMZigZ7WRpoailRSoqmhyPkr2nKdv7uoesgi4rXAnwJF4CMppT9+rvPtIZMWRkqJmblEY/aHYmx6luHsF+KuIxPZnLU5mhqKzMxVeOLgGF+5fy9dzY1cc/EK7tlxhDu2HeTl5/ez49A4LeUiOw5N0N9eZmJmjoZCMDVb4eDRaR4/OEa5VKBUCJ44OP60OvraGjlwdBqAVR1NJBL7RqaeOl4I6G0rc2hs+qlfsGNTs8xWqr/H1nQ2sT+7oUKSTsW7X30B77j2/Jp+jyUxZBkRReAR4NXATuBHwG+klB58tq8xkElL27HfPxHBXCVRLAQjk9V/6a5or94kMTU7R6UCh8enqz1QWW9JuVSgqaHI1OwcE9NzNBQLtJZL7B+dfKq3YsehcV5+QT8JuG/nME8crP5rurVcorWxOkAwOTPHT3YeoZISF6/uoCfrVRmfniOl6vcf6G5heGKa0clZBnuqy5fsG5lkdLI6/290coYNva3sGZ6ko6nEEwfHnupB29hXHRYemZyhpbFEAJ0tDRwamyaAiZk5elob+fC3H+OKgS4uH+hkRUcTOw6Ns3d4ku6WRkrFaq9bU0OR1sYiP3ziEMPjM5SKQVdzteenoVhgsKeFv3vsAJet7WR2LjEyOcPLL6iG5KNTsxQi2HFonMGeFu7deYSXntdHECQSU1kPWFu5gYjqsHljqcD+kUke3X+UntZGXv+81ew4NM6tP9nNizb2UizAlYPdT/U8PLB7BICh0Sm6WxooFoNdh6u9Mef2t/GTnUe4el03s5UK41NztJZL3LHtICvay/S1l5mZq1AuFdh9ZJKmhiJXreviO48M0d7UwJquJoZGpygVgmKxwMr2MvfvGmZ4YoaXntfH6OQsB45O8ci+o4xPz3LNRSvYPzrFht5Wvrd1iJRgbHqOy9Z0MNjTQm9rtReup62RqZk5KqnaY9VQLDAyMUMCupob2Lz9MHOVxEB3M48fGKOntZGWxhIdzSUmpqt3Uc9VEhesbGfbgTGGJ2YoBLz8gn6ePDhOIrG6s5nvPjpEd0sj5/a3cduWfWzZM8JFqzp40cYeDo5N09JYZHq2Up1CUAxu+s42XrSxh/W9rTQUg7/84Q7WdDZx8eoOWhqL7B+dYlVHExNZj1tEsH9kkoGeFooRPH7gKF0t1Z/t4tUdHJ2aZejoFJ3NDewbmeLo5CwrOspUUuLI+AyFCO7YdpC3bBqkWIDHD4yzobeFYiG4Y9sh2ptKrOlq4v5dI+w+MsFFq9vZ0Nv61D+K+trKHJmYYV1PCwFsPzTO/pEpLh/opLO5gYf2jjIxPctAdwut5RLDEzOMT89yeLz6j6uLVnXw8L5R7ts5zJXruljfU+2tvHfnMOf0tdLcWGRyZo49w5NP3fi06/AEW/aOcOmaTvYMT3DVYDf97WV2Hp6gXCowW6lw4Gi1V3DbgTE6mksUI5hLiavXdbP94BilQoHWcpHJmQov3NjDxas7avo7b6kEspcA/y6l9IvZ/nsBUkr/77N9jYFMkiQtFc8VyBbTLNq1wPFLoO/M2p4mIm6MiM0RsXloaOisFSdJklQriymQzUtK6aaU0qaU0qb+/v68y5EkSTpjiymQ7QIGj9sfyNokSZLq2mIKZD8Czo+IjRHRCLwVuDXnmiRJkmpu0axDllKajYjfA75KddmLj6WUHsi5LEmSpJpbNIEMIKX0JeBLedchSZJ0Ni2mIUtJkqRlyUAmSZKUMwOZJElSzgxkkiRJOTOQSZIk5cxAJkmSlDMDmSRJUs4MZJIkSTkzkEmSJOXMQCZJkpQzA5kkSVLODGSSJEk5i5RS3jWctogYArbX+Nv0AQdq/D2WEq/H03k9fspr8XRej6fzejyd1+OnltO1WJ9S6j/RgSUdyM6GiNicUtqUdx2Lhdfj6bweP+W1eDqvx9N5PZ7O6/FTXosqhywlSZJyZiCTJEnKmYHs5G7Ku4BFxuvxdF6Pn/JaPJ3X4+m8Hk/n9fgprwXOIZMkScqdPWSSJEk5M5A9h4h4bUQ8HBFbI+I9eddTaxExGBHfjIgHI+KBiHhn1t4TEbdFxKPZ5+6sPSLig9n1uTcirs73J6iNiChGxI8j4ovZ/saIuDP7uT8TEY1Zeznb35od35Bn3bUQEV0R8bmIeCgitkTES5br+yMifj/7/+T+iPhURDQtp/dGRHwsIvZHxP3HtZ3yeyEirs/OfzQirs/jZ1kIz3I9/nP2/8q9EfGFiOg67th7s+vxcET84nHtdfF350TX47hjfxARKSL6sv26f3/MS0rJjxN8AEXgMeAcoBH4CXBJ3nXV+GdeDVydbbcDjwCXAP8JeE/W/h7g/dn264EvAwG8GLgz75+hRtfl3cBfAl/M9j8LvDXb/jDwT7Pt3wU+nG2/FfhM3rXX4FrcDPyjbLsR6FqO7w9gLfA40Hzce+K3ltN7A3g5cDVw/3Ftp/ReAHqAbdnn7my7O++fbQGvx2uAUrb9/uOuxyXZ35QysDH7W1Osp787J7oeWfsg8FWqa4j2LZf3x3w+7CF7di8EtqaUtqWUpoFPA9flXFNNpZT2pJTuzrZHgS1U//BcR/UPMdnnN2bb1wGfSFV3AF0Rsfosl11TETEA/BLwkWw/gGuAz2WnPPN6HLtOnwOuzc6vCxHRSfWX7EcBUkrTKaUjLN/3RwlojogS0ALsYRm9N1JK3wEOPaP5VN8LvwjcllI6lFI6DNwGvLb21S+8E12PlNLXUkqz2e4dwEC2fR3w6ZTSVErpcWAr1b85dfN351neHwAfAP4QOH4Ce92/P+bDQPbs1gI7jtvfmbUtC9mQylXAncDKlNKe7NBeYGW2vRyu0X+j+sujku33AkeO+yV7/M/81PXIjg9n59eLjcAQ8PFsCPcjEdHKMnx/pJR2AX8CPEk1iA0Dd7F83xvHnOp7oW7fIyfwD6n2AsEyvR4RcR2wK6X0k2ccWpbX45kMZPoZEdEG/BXwrpTSyPHHUrUfeVncmhsRvwzsTyndlXcti0SJ6hDEh1JKVwFjVIelnrJc3h/Z3KjrqIbUNUArdfwv99OxXN4L8xER/xqYBT6Zdy15iYgW4F8B/zbvWhYrA9mz20V1rPuYgaytrkVEA9Uw9smU0uez5n3Hhpqyz/uz9nq/Ri8F3hART1AdOrgG+FOq3eml7Jzjf+anrkd2vBM4eDYLrrGdwM6U0p3Z/ueoBrTl+P54FfB4SmkopTQDfJ7q+2W5vjeOOdX3Qj2/RwCIiN8Cfhn4zSykwvK8HudS/QfMT7LfqQPw/7d3ryFWFnEcx78/rcwkJCnphdImWFFSdlG0NIRSSkIqBCOjK3ShC0QXNAMJemFEQVBRQZCV+KK8tBSoaVlm1KrLuqt5Ja0khKiwi6Tr+u/FzGGfPa6X1V2fdff3gcOeZ57nmWfO7Ow5/31m5gz1ks6nd9bHIRyQHd4aYHieNXUGaSBubcll6lJ5TMu7wKaIeLWwqxaozG65B/ikkH53niEzBthT6K445UXEzIgYEhE1pN//FxExHfgSmJoPq66PSj1Nzcf3mDsEEbEb+EXSxTnpBuAHemf7+BkYI+ms/HdTqYte2TYKOtoWlgKTJJ2T7zpOymk9gqSbSEMepkTE3sKuWuCOPPv2QmA4UEcP/tyJiKaIGBwRNfk9dRdpEtluemn7OETZswq684M082MradbLrLLLcxJe7zhSF0Mj0JAfk0ljXVYA24DlwKB8vIA3cv00AdeU/Rq6sG4m0DrLchjpzXM78BHQL6efmbe35/3Dyi53F9TDSGBtbiOLSTOfemX7AF4ANgMbgA9IM+Z6TdsA5pPGzzWTPlwfOJ62QBpbtT0/7iv7dXVyfWwnjYGqvJ++VTh+Vq6PLcDNhfQe8bnTXn1U7d9J6yzLHt8+juXhb+o3MzMzK5m7LM3MzMxK5oDMzMzMrGQOyMzMzMxK5oDMzMzMrGQOyMzMzMxK5oDMzE4qSf/knzWS7uzkvJ+r2v62M/PvbJLulfR62eUws/I5IDOzstQAHQrICt+CfzhtArKIuLaDZTqlSOpbdhnMrHM4IDOzsswBxktqkPSkpL6SXpa0RlKjpIcAJE2QtEpSLenb8JG0WNI6SRslPZjT5gD9c37zclrlbpxy3hskNUmaVsh7paSPJW2WNC9/834b+ZiXJNVJ2ippfE5vc4dL0qeSJlSuna+5UdJySaNzPj9KmlLIfmhO3yZpdiGvu/L1GiS9XQm+cr6vSFoPjO2sX4aZleto/22amXWVGcDTEXELQA6s9kTEKEn9gNWSluVjrwJGRMSOvH1/RPwhqT+wRtKCiJgh6bGIGNnOtW4nrTJwBXBuPufrvO9K4DLgV2A1aU3Kb9rJ47SIGC1pMjCbtJ7lkQwgLZH0jKRFwIvAROBSYC6tS+KMBkYAe3O5PiMt3D4NuC4imiW9CUwH3s/5fh8RTx3l+mZ2CnFAZmbdxSTgckmVtSAHktb42w/UFYIxgCck3ZafD83HHWmx7nHA/IhoIS2A/RUwCvgr570LQFIDqSu1vYBsYf65Lh9zNPuBJfl5E7AvB1dNVed/HhG/5+svzGU9AFxNCtAA+tO6UHcLsOAYrm9mpxAHZGbWXQh4PCLaLB6cuwD/rdq+ERgbEXslrSStFXm89hWet3D498V97RxzgLZDP4rlaI7WtekOVs6PiINVY+Gq168LUl3MjYiZ7ZTjvxxYmlkP4jFkZlaWv4GzC9tLgUcknQ4g6SJJA9o5byDwZw7GLgHGFPY1V86vsgqYlsepnQdcT1rk+0TtBEZK6iNpKKn7saMmShqUu19vJXWbrgCmShoMkPdf0AnlNbNuynfIzKwsjUBLHpz+HvAaqSuvPg+s/40UoFRbAjwsaROwBfiusO8doFFSfURML6QvIg2AX0+6A/VsROzOAd2JWA3sIE022ATUH0cedaQuyCHAhxGxFkDS88AySX2AZuBR4KcTLK+ZdVNqvaNuZmZmZmVwl6WZmZlZyRyQmZmZmZXMAZmZmZlZyRyQmZmZmZXMAZmZmZlZyRyQmZmZmZXMAZmZmZlZyRyQmZmZmZXsfyZ5FbFbtWLrAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"validate","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611254044573,"user_tz":-60,"elapsed":2517,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"afa2703b-b830-400b-b8cd-959bdb4a4b2a"},"source":["# Write the LinearSVM.predict function and evaluate the performance on both the\n","# training and validation set\n","y_train_pred = svm.predict(X_train)\n","print('training accuracy: %f' % (np.mean(y_train == y_train_pred), ))\n","y_val_pred = svm.predict(X_val)\n","print('validation accuracy: %f' % (np.mean(y_val == y_val_pred), ))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["training accuracy: 0.366449\n","validation accuracy: 0.388000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"tuning","tags":["code"],"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611254160584,"user_tz":-60,"elapsed":26400,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e03bc687-69f0-4261-eef8-023d30dddf27"},"source":["# Use the validation set to tune hyperparameters (regularization strength and\n","# learning rate). You should experiment with different ranges for the learning\n","# rates and regularization strengths; if you are careful you should be able to\n","# get a classification accuracy of about 0.39 on the validation set.\n","\n","# Note: you may see runtime/overflow warnings during hyper-parameter search. \n","# This may be caused by extreme values, and is not a bug.\n","\n","# results is dictionary mapping tuples of the form\n","# (learning_rate, regularization_strength) to tuples of the form\n","# (training_accuracy, validation_accuracy). The accuracy is simply the fraction\n","# of data points that are correctly classified.\n","results = {}\n","best_val = -1 # The highest validation accuracy that we have seen so far.\n","best_svm = None # The LinearSVM object that achieved the highest validation rate.\n","\n","################################################################################\n","# TODO: #\n","# Write code that chooses the best hyperparameters by tuning on the validation #\n","# set. For each combination of hyperparameters, train a linear SVM on the #\n","# training set, compute its accuracy on the training and validation sets, and #\n","# store these numbers in the results dictionary. In addition, store the best #\n","# validation accuracy in best_val and the LinearSVM object that achieves this #\n","# accuracy in best_svm. #\n","# #\n","# Hint: You should use a small value for num_iters as you develop your #\n","# validation code so that the SVMs don't take much time to train; once you are #\n","# confident that your validation code works, you should rerun the validation #\n","# code with a larger value for num_iters. #\n","################################################################################\n","\n","# Provided as a reference. You may or may not want to change these hyperparameters\n","learning_rates = [1e-7] # Modified\n","regularization_strengths = [7.5e3, 5e3, 2.5e3] # Modified\n","\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","for lr in learning_rates:\n"," for rs in regularization_strengths:\n"," svm = LinearSVM()\n"," loss_hist = svm.train(X_train, y_train, learning_rate=lr, reg=rs,\n"," num_iters=2000, verbose=False)\n","\n"," y_train_pred = svm.predict(X_train)\n"," training_accuracy = np.mean(y_train == y_train_pred)\n","\n"," y_val_pred = svm.predict(X_val)\n"," validation_accuracy = np.mean(y_val == y_val_pred)\n","\n"," results[(lr, rs)] = (training_accuracy, validation_accuracy)\n","\n"," if validation_accuracy > best_val:\n"," best_val = validation_accuracy\n"," best_svm = svm\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"," \n","# Print out results.\n","for lr, reg in sorted(results):\n"," train_accuracy, val_accuracy = results[(lr, reg)]\n"," print('lr %e reg %e train accuracy: %f val accuracy: %f' % (\n"," lr, reg, train_accuracy, val_accuracy))\n"," \n","print('best validation accuracy achieved during cross-validation: %f' % best_val)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["lr 1.000000e-07 reg 2.500000e+03 train accuracy: 0.362571 val accuracy: 0.377000\n","lr 1.000000e-07 reg 5.000000e+03 train accuracy: 0.382959 val accuracy: 0.382000\n","lr 1.000000e-07 reg 7.500000e+03 train accuracy: 0.386612 val accuracy: 0.393000\n","best validation accuracy achieved during cross-validation: 0.393000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"Rk0tzzKJrApZ","colab":{"base_uri":"https://localhost:8080/","height":590},"executionInfo":{"status":"ok","timestamp":1611254201506,"user_tz":-60,"elapsed":1863,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f905110a-2197-44f7-8f9d-cfaea66706db"},"source":["# Visualize the cross-validation results\n","import math\n","import pdb\n","\n","# pdb.set_trace()\n","\n","x_scatter = [math.log10(x[0]) for x in results]\n","y_scatter = [math.log10(x[1]) for x in results]\n","\n","# plot training accuracy\n","marker_size = 100\n","colors = [results[x][0] for x in results]\n","plt.subplot(2, 1, 1)\n","plt.tight_layout(pad=3)\n","plt.scatter(x_scatter, y_scatter, marker_size, c=colors, cmap=plt.cm.coolwarm)\n","plt.colorbar()\n","plt.xlabel('log learning rate')\n","plt.ylabel('log regularization strength')\n","plt.title('CIFAR-10 training accuracy')\n","\n","# plot validation accuracy\n","colors = [results[x][1] for x in results] # default size of markers is 20\n","plt.subplot(2, 1, 2)\n","plt.scatter(x_scatter, y_scatter, marker_size, c=colors, cmap=plt.cm.coolwarm)\n","plt.colorbar()\n","plt.xlabel('log learning rate')\n","plt.ylabel('log regularization strength')\n","plt.title('CIFAR-10 validation accuracy')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"test","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611254241689,"user_tz":-60,"elapsed":1131,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c7316be2-9b39-4d41-a647-cbc54cfaa5d4"},"source":["# Evaluate the best svm on test set\n","y_test_pred = best_svm.predict(X_test)\n","test_accuracy = np.mean(y_test == y_test_pred)\n","print('linear SVM on raw pixels final test set accuracy: %f' % test_accuracy)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["linear SVM on raw pixels final test set accuracy: 0.372000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"igUC5XgirApZ","colab":{"base_uri":"https://localhost:8080/","height":380},"executionInfo":{"status":"ok","timestamp":1611254252865,"user_tz":-60,"elapsed":3529,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"58078a2d-7cd2-4717-cf48-87aa64c605b7"},"source":["# Visualize the learned weights for each class.\n","# Depending on your choice of learning rate and regularization strength, these may\n","# or may not be nice to look at.\n","w = best_svm.W[:-1,:] # strip out the bias\n","w = w.reshape(32, 32, 3, 10)\n","w_min, w_max = np.min(w), np.max(w)\n","classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n","for i in range(10):\n"," plt.subplot(2, 5, i + 1)\n"," \n"," # Rescale the weights to be between 0 and 255\n"," wimg = 255.0 * (w[:, :, :, i].squeeze() - w_min) / (w_max - w_min)\n"," plt.imshow(wimg.astype('uint8'))\n"," plt.axis('off')\n"," plt.title(classes[i])"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAjwAAAFrCAYAAADVbFNIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9d3Rk13Xmuy+qCkAVgEIhZ6CQczfQOXeT3WQzU0zKkiVLlqWR5bE9Mx55PO89j+0Zv/GMZ6yxZ8lBtjwSFRgk5mbsyI7oBtCNnHMOhVCIhULV+6Pb93fAR7YCS6IIn28tLu4Gqu49YZ99L77v7H2MYDAoGhoaGhoaGhqbGWEfdAM0NDQ0NDQ0NH7R0C88GhoaGhoaGpse+oVHQ0NDQ0NDY9NDv/BoaGhoaGhobHroFx4NDQ0NDQ2NTQ/9wqOhoaGhoaGx6fGhfeExDOOIYRhDH3Q7NDQ0gGEYfYZhHHuXnx80DKM9FNfS0ND4+WEYxj8ZhvGnH3Q7Pgh8aF94NDQ0PjwIBoNvB4PB4g+6HRq/POgXVo1fNegXHo1NA8MwrB90GzR+duh509D4cOPDsoZ/5V94bv2V8AeGYbQYhjFjGMa3DcOIfJfPfd0wjG7DMLy3PvuI8rvPGYZx3jCM/37rGr2GYdyr/D7WMIx/MAxj1DCMYcMw/tQwDMsvq48aN2EYRpZhGD82DGPSMIxpwzD+2jCMfMMwTt3695RhGN8zDMOlfKfPMIx/bxhGg4gsflgW3ibHzneu13dK0O82b4ZhfMYwjP5bc/2HH2D7Nd6Bn3VtGobxXRHJFpGXDMNYMAzj9z/YHvzLhWEY1YZh1N16Nj4lIpHK7x4wDOO6YRizhmFcNAxji/K7dMMwfnRrznsNw/ht5Xd/ZBjGs4ZhPGkYxryIfO6X2qmfE7/yLzy38CkROS4i+SJSJCL/8V0+0y0iB0UkVkT+k4g8aRhGmvL73SLSLiKJIvLnIvIPhmEYt373TyLiF5ECEakWkbtF5Ish74XGe+LWC+bLItIvIm4RyRCRH4qIISJ/JiLpIlIqIlki8kfv+PonROR+EXEFg0H/L6fFGrfBT7NeRZR5u/W5b4rIZ+TmXCeISOYvvKUaPxE/z9oMBoOfEZEBEXkwGAxGB4PBP/+lN1xDDMMIF5HnReS7IhIvIs+IyGO3flctIv8oIr8pN9fb34rIi4ZhRBiGESYiL4nIDbk530dF5HcMwziuXP5hEXlWbq7f7/1SOvR+EQwGf6X/E5E+Efmy8u/75ObLzRERGbrN966LyMO37M+JSJfyO4eIBEUkVURSRGRVROzK7z8hIqc/6L7/S/pPRPaKyKSIWH/C5z4iIvXv8I9f/6Dbr//bMB8/cb2+c95E5P8WkR8q/44SEZ+IHPug+/Qv/b/3uTb1/H2wc3dIREZExFB+dlFE/lRu/oHxJ+/4fLuIHJabBMHAO373ByLy7Vv2H4nIuQ+6fz/rfx8W+n9Qsfvl5l8UG2AYxmdF5Pfk5l8gIiLRcpPN+WeM/bMRDAaXbpE70XLzrdcmIqMQPhL2jntq/OKRJSL9wXcwNIZhpIjIN+QmexcjN+dm5h3f1XP1q4WfuF7f5XPp6r+DweCiYRjTv4C2afzseD9rU+ODRbqIDAdvvaXcQv+t/+eIyK8ZhvE15Xfht76zLiLphmHMKr+ziMjbyr8/dHH3wyJpZSl2ttx8YzVhGEaOiPy9iPyWiCQEg0GXiDTJTcr1J2FQbjI8icFg0HXrP2cwGCwPTdM1fkoMikj2u+zB+S9yk42rDAaDThH5tPz/5zUoGr9KuO16VaDO26j6PcMwHHKTZtf44PHzrk29Lj94jIpIhrJ9Q+TmmhS5Oa//WXnuuYLBoCMYDP7g1u963/G7mGAweJ9ynQ/d/H5YXni+ahhGpmEY8SLyhyLy1Dt+HyU3B39SRMQwjM+LSMVPc+FgMDgqIm+IyF8YhuE0DCPs1ma8w6FrvsZPgRq5uTj/X8Mwom5tdN0vN/9yXBCROcMwMkTk332QjdT4qfCT1uu74VkRecAwjAO39h38sXx44tNmx8+7NsdFJO+X21SNd+CS3Nyf+tuGYdgMw3hURHbd+t3fi8iXDcPYbdxElGEY9xuGESM359x7K7HAbhiGxTCMCsMwdn5A/QgJPiwB5fty86WkR27uB9hQNCkYDLaIyF/IzckdF5FKEbnwM1z/s3KTymuRm5TssyKSdttvaIQUwWBwXUQelJsbxwdEZEhEPiY3N6BvE5E5EXlFRH78QbVR46fGbdfruyEYDDaLyFdvfXdUbq5DXVj0VwDvY23+mYj8x1sZQP/2l9dijX9GMBj0icijcnMfq0duztuPb/3umoj8hoj8tdxcb123PvfPc/6AiFSJSK+ITInIt+RmUtCHFsZGae9XD4Zh9InIF4PB4FsfdFs0NDQ0NDQ0Ppz4sDA8GhoaGhoaGho/N/QLj4aGhoaGhsamx6+8pKWhoaGhoaGh8X6hGR4NDQ0NDQ2NTY/bFh58+r9dN+mfU1PUGIqbmDDtQBKfb86IMe14J/bHa0dNe3CUL/hKHabd2Ocx7fw72ky7Yb3AtJOn1037sOeKafeFU4F+OpG6V2Hn+a6IiHudsh7TvmdNe/jX9pl2jneHadfHzpl21upl044dyTHtgYEO086LrjTtOXuDaVfHBLhX+aOmfeXigmn7x+n/jixqPf3uH37xp6kl9FPhhaefNufz+mvt5s8Ls+ymfWOENkUeDDftvIEU056X86btHvqYaXdX/B/TPjB5yLRfcy6ZdlXJDdPu6Ocg5aIT9aY9fnwb15+ZN+2amO4N/XHOUO4lN6zGtM+mJZt2fkeuacemTpn22kKqaV/zMd5563GmnRgXZdrta9TAK1fK6I1PmPUspX++0LRLovCd8aVx0/7DP/vvIZnPv/3Lz5hzOb3GnN3xiT2mXXOyz7RjJviMa4xM4e4MxtQxxrhtOdJl2t9pZN3cMcP8WQxKVX0zhpp0Rem7TDt65CKNzsGHKj2sfRGR8Ol+0z6fk2Ha+bGTpr3qwS8Kw2tNu7kZP0iKI04ZycxB0RR/23XFcP3BJuJUahJst6f3NdPOdd9p2gnR+MED/+67IVubf/S1XzdvXtnD2Lyexv3cQeLL+XHG5d4tNCPTYL1MZHhNO6uNuLPuOWXa1yuovlHYyxgF5ljjeXsZR+s4zv9NWTHtg+8YidZxxjWvkPWVPjJg2jPJ1aYdOU386/Sypg5mFZn2wCAxK3PnXaYdrPGZ9qHsXtP+VpB+Rl7AJyOOckyiL/lF0/7s54dDMp+Pfe3r5lw+kthq/vztmCrTdjXSl2Ak6y7Twrg5CojLvRE8+ybjuc6XbJdM+8UGxsp+w2baw18gNs53bjXt+0dJgow6kG3afcsb6336qpn/jjf5uW0Lz/LSczx3b0wz38t3suYzTxLjfffwbHH+0wHTTt/aZ9onrPhKxSxJ09GJxKaWOWKZZ/1Hpv3iHw+861xqhkdDQ0NDQ0Nj00O/8GhoaGhoaGhsetxW0up+C7rMcQeyUcsaVNbvppsnzcvOi1BQP7gPaeB/uKDRvuLm83W9LaadWQLl3jwPdbsnh6r0TivfvZL8mGknT0GnzfYjST2e1LihPxezoYEzVrabtnUIem19bdi0t3ZCzc0uw5BFFUE7Jj1w0LRbr95h2sVtyHizWVDoqZ1QmeHVqcrnueb641C0ocScD8qvzL/XtJtSe0zbmsu4rIYhxXiSkIPS6pF65nYjWSy6KG7dokg6/ohi055pQX5wB7ivvxpZ0eHCF3yT10w7PRwpUUSkcRnfWAuHkt3Zs2zag+t8JzIT2tw9sWbawZUI025Ngqb3r9DWAz7+NugYxxeMfuSe1RL6PDaFPLIcwZiGCi1LLtPetuI07es/RtKYrKQNo134oLUUH3S+Tl+W78DvTrSyfnPLkOoC7dDs1/sYn0dSkJJSC5tNO3EUSbHlGlLCSuLGup69dq4bY2UN2qag6eMTucdQDTEobRUKPqEDaezUHOPS6ULejuUj4r5fkWvm803btxc7eI1x6ZnHN0MJVzQy1smPEEfLT7lNO8pAGv6cHynyVDsyU8pO/KIsnHnrX2UtTziQRCKeP2PaXmVKEjOJ2Q0xdaad9jTr6SMPvGLa/iH1NBGR/Yo/RBYQI2tnWQtVW/7KtC+fftC0c49wj+krbJ/IqNxi2oGZ5027dTvy+UI77d47FG/a3fvxvRtji6a9vPy4hBpxVubjcpA587QRc2YK6cvdy9GmPZBGTBuO4LlUtcazb9Z1wrT/6iz+WJFHTL9cjrTnqONIyYpZnrnT1fh113n8PeM+1o2IyOW/wzddy8hJ/ky2JHTFPm3aRdNIZTuGWNcv5PLMnvk+PrWU3WTaLYnEqaJZZXtFMbJcxRx+HdmpfHfrTy4CrRkeDQ0NDQ0NjU0P/cKjoaGhoaGhselxW0kr9WCJaYdFQPW7RqDdXkiH0k87hl1+kSwlw0AOm5pit/lsMrLPgQKo+MR2JIbVS0gVPSNIEmu5ZGkYKWSLLHmg6988xA55EZGVeujeiDZox5cPc+/7/MhMg538vFjJWIqPhnLtPE02Q3IKVLw9r9O0J5aRB/ojoXqPXqL/vRayJbIUOUFgDd83Fp/hur33MMZFdVDO8UfpZ3sc0kT3VbJ/hl3Qqx9VMjtqsqBOwy3QtwnGN0y7a5XMjO2rZJF070A+9L7NPGUUM9b+K1CZIiK2TO4x5XzbtEdjoLIjIqE8MxWZabAJScR7jEyNnPP0bcINLTySgCwXGCTboPfT9CGx81OmnWZDZgncYBxDha2VrKMZh9u0p2qQCQviWRe9h8lYCRuC+l48hOxr60He2bZMdsVgIrR0XzFyQOw2ZNjYUfymPgnJpMT9smmvphAHvItcX0TEpWSnzHhYm75Bsk06A7QjP5G1OZtMlsvZFeJFgp35s/Yjw8aVIG8MDSPVthTy+UfakMa9v3vStKNO/YH8IpB0GcmtMMNt2q/a8et7nPhsriCJdB/GZ5ebiZGTs/hgnME8B5LJbLkxRubb1juJRz2pjMVwE8cnlRZxzcEg8tHsnBKzRMRTQGaqtQXpJK0Aaa27+ddMuzqLeV4bxocvRuEXDwTwi+th+PCOedralsYzaCGIfDPrZ3xzl1k7Vkvotw9UZFw37b55/DHlEZ6J4cNPmPZgC5m+nrcY3ycOE68WnMTEtVq2TqxYOHEpqveMad+fjlT9113EzY89gK+80KHIYRayL5frkZFFRFxb+N30IHOQF852hoQbPE+aqliPncVIkpXDV+nDQWS8wBgxtHWQ+BLsKTXtxmrm9UI4Gdb7qj5n2umNxIT3gmZ4NDQ0NDQ0NDY99AuPhoaGhoaGxqbHbSWtUQcyw2KAzJeo9FXT7oyEKg33QBXLPcgKjpNQ5TdW+YzdAbV4vZ/MrEgvP7dkQndFDVE8an7vGdOe64LGTfKe47ve/Rv6k1WARHclnUyI7TYySUZHoVzD9jE8a320u2kcSa+4lM8MDZAFdspx1LR3xkLHecbZhb5yEPmtrx8adDYW6vpjQp/fLyLjGNeVMe7hT/mhaXe0HzftjDSo5cRCxqveV2ba15ahSEsn8YUkN/LFyqXPmHbEcWSooWeRE2bzsQcXuO98P34XW0wmgYhIrpKdY7uCnPY3h/G9TyQhIV6Yf8i0C3ZC587MMP9hOVC2CXVQs71ZSJelScgJ6degYAMjSKjTO7nmpWWyHn5DQgNjBcmlpYtCnQ/uhKJvbsC/8hV5q2OeeVqbUa6zi3Ev7oQ2nyh+3bRjfchKCc3M2bQTOTfxVeSJPhv+Xh2BPHnNzVoREcn9MX972b9AEcNiF1L6dWEdveKhn4X3Uaiu+AzXiQ3jOlVK8csLFuj3mBeR1spzWcunk+lD+nnGaHUYWULkLgkVrtpJHXtinTErPPSIabdG9Jm2ZQqp9lj9btN+aQk5MTUBqSTDj8SUlcE1lx76S9NenSJjKfwQcoUxwlhczSL2r8bjC4W/vbE/lueIL4EEpKXgKSSqFCWxa1Zp37KStbS1mpi1fP2saSeUI6HVrOEXUU3El95lii0edV8w7R4na3N14B4JNV6dpO873MjZMS8Ty7qrGIdACp9fTiP+vBbD8zfLRzxV3EMi5/Dlaw7GLf4a6+ZoAetuaI7svmpFFp5aZR0EZ1/d0J+WeW64fyfPvu7Ld5t2bzjX2peInPajLtptH2N9ZaYQu8fKkdA+dxn/+ptcnn3bV/6XaddNKAUcp3n+jMQRo98LmuHR0NDQ0NDQ2PTQLzwaGhoaGhoamx63lbQi26C5VtPJTLF8Ai6y7Ao0XYqdDKfmTijrA1uhuKyNZPsEwqEZRweVXds7oOLXz7lNe6GaYlPWQejU8nToze/f9Wk+cw+Uu4iI7RLnb229oWRt3A3dPfYi9HisAV2YUk6mQl4YFG/DGQrj5XyVlKrUP4OaXHyQwk1l5ym41BcO/Rq1wOczGsh4CSWe9p8x7cogO+Croync1bLOGN1QsiKsbyMP2CqRE1LSkBwb+6BpiyYoBnk1iKQzfoGMgYYM/GL3IWhKzzi78JfLoSxXpjYej5KQh++NLkO7ftHC/dbqoXDjszkPzdIKzet+iIJVvU9SWCvmINefdZGldbqd+cnMRz5LTMBvbW/8wLRdCUi6Ir8voUDkFqj+7PNQ+s8mIl2VRb5h2ldrWcu7EyjyuBykj8Xz+OOb4U+ZtqMGujptgPkbTGLdHUr8qmkPpJ4x7ZUzjNvYJ/H94dfI8BERCa9Glo46xXWfL6WIWeUMdPqjyppt/a9H6EMW0tpThnKemQ2fXa6nP+6HkKiiRznTJycCqTLHw71mvbQnlMg+gqyx5CPWTE1z77xXiWdns5FiFreT/fKon0yr9RF8xOH+uGkbL1JQNnwd2Wu2BBnLdZ01lG1DzndYiH3WEfwuqRXZU0RkpJdCglmVxHZZRRpf7CHTqiMcueou5ak0/Caf77kfSdvVrmR+DbCWE7IYi/Xih037zQHWxe41YtO5CLLgRA5LKHC8im0R9l7ibN42xrHAg9Q1c4bnTN0efLYqjTnwNiMLThQSl5smeA5uuZ9YGe0iLg+tkjE8moBdf4Zn4L2P0rbYV7imiEhWCs+vlYkvmPb8+o9N+7N/wHdqn2crwOOlyHKtXmKHV9mdkDlIvL/oRm49vsg6fVPJ3M0rQJJc2sP5jb5o3i3eC5rh0dDQ0NDQ0Nj00C88GhoaGhoaGpset5W0wio4v2LIg6QVexqaNT+Ks1HWbdDA+1Kg9UZayMDq/iISUOlZ6C6HIm9FKAWH1hK5TuQRCmatXSQr57lVqNuDM8gKDU8rh+aISIKhHFWfAEXWdg5q1psE7TayTOGnsDTo+PlJaODr0Xx+VxP065SHd8my68qZJflQlvkjUPdru9nN7p9GegklDjgpgjUXR1ufjIeCdMfANRZ8B1nSc9+dpt2SwVkuMWehRcOdZMH1TCANxeaTMeD04Uc5XjIzBp/Gp0pnyIK6MYdEcfAGO/tFRAbCoW0jt9G3S5MUpdzyMBk2SS3IcjOxzEl3P/3cepix6LuIHNYdQfZAZhRzfvQGBf1eeQEK2vpZaHbjIhJFqDDewByklDNn+W6kvVONzEfSLijxG6NI0gvZyISPR1Cc7XIr6zGwlfW7wjBIXgbSXs0W5ObUaT7kiEc+u/EXrOXcY2TPiYis76St8jbrcYeDOZ7oZf4n6xS5cef3TbszHBlj/3OswcYdxIicOGQPh/tfmbavmyy7608ROxI+htSRsutb8ovA1kVi3qif+GIfop/RO5Ey7rfiv68OKDF4Fz6+HiR7b2Kea6YcYt3JMsUyA34ks74A68AxqmRQZSEHOXzIIHWHNhaSHFikWF1AaNP+7UiX3U3Ig6WVFED0xREvbPVu055rJKakOPDVtS3IKfZO5BdP0Uum7Y9ijbR3E1+ykr8joUbBD4nldZ8kG/T8CNslSjPIcAo8xHqx+/C7Jg99SYlifCcKkK6yEpmP/jG3aVcHeRZHLRCvjGjiw64HWQeNM8TlaBdzJCJS5CT2T8jfmnaxkv114jkkQ4uHtV2oFLn0RfC6sTjG8zfG8jHTbrORrTzQyjM3Zw9zFutiXIpaOJ/LVcgz5L2gGR4NDQ0NDQ2NTQ/9wqOhoaGhoaGx6XFbSWsiDLp76yhUmGs3NNVMM/LLm0rW0efnoLW8aRTGeuS7XOfNRHZVx5ecMe3CTDINVr/HO5n3BFRhQxBaqyAAZToagbRRlA0VLyISPQWFurIAdZiWQvZHtMG1GufIHArzQa2voeKITylyN5rMOVGFjyBdzQ4yzOsu+vZKLrJS4ShtsEdubHeo4F5ld3viWJppR7YgNVwqIwtjRTn3xohjbrfWMPZzx8hwGnsDCn0qANVqm4Gun0tDlihJhmYODJGpsKzMbc552nwR5l5EROK66cN6KTv6/WucDXb9AtkQcXXQ4L2fgEb+zXboe38EGSWWIq7/QCbzPNsBNd2gUOV99/D5ODeZMNv6kdhE/kRCga4e/NEfr4zX4I9Me0cicsiJFYp7ZQ3j4+mT+NqPC8iUGXuYtbn7R8x9bDIS3uIi2X3hryLPOor5fLcgN6UdPWLahR2KrCIil5bIHilJUyTgHmTC5RLiyMKPod0DBUjPa+vIUhlHkBJzhTlbmGcsHDFK9qkipT5YhcwZvsBcdk7Qh1DiWiKSY4ZSBC5rCtl/bg2ZMdWJ//a9+TumfbHsFdPOdyEbhJ9E4qi7A3+PrlOKolJPVB7oPGPaTy0Qg3uyiaFJNRR2tfYxByIi82tsORjyca3XlIxQ5yg+7N6BfDzeSvtcx5GE7j6Jnw+Wsx4nr76p/Jx4lDlDrI1ZZ6vDxQziQNYoRVFDhe5q5i+5lrW/loRPNYwzf4cczH3WMrFyIZkzwqaL8f34fuJy1hwFbi9EMZ4rQmHKRZasjBwhztrtXHNuFB/3rSsPOBHxxLPWdr/B3PxtF+dkWXdy731OsnXnlczC2RHkqgfymae3FDX0qJ1M53YL10xRJewqni0nj/Pz0jZ9lpaGhoaGhoaGhn7h0dDQ0NDQ0Nj8uK2ktbOOc5Wa0qBEs69zFk9HCfT1IxNQ0RetZDYM+qGZs+fJlqiORFb6QSZSQv4FqOXpw9B3likozaRM6D5JgvqKOEXmgLEEPSYiUrv/GdNOvKJQ8AYFx/K6uVbvLLJcezKFwXzjUOVfn2Fn+MtDFN9Ks1eYdr0fqs2Ygb/LCSLvpDqhMuMGoXFDicQS6OuB62RCpP4bsm3ilWGd3cIBOWG9SCVLqxSTq3xGoRSXkOUW4pjPYDZ08pCV3fyr3cgMY3nw6Z1DZGYdTeY6Niv3EhEZH+Tf8YtQpyl3oH0lnMVnAtlkbThrkGtr4umPqxeadlbxt5RJCjJ2BvGFYhtteDgcmr0jQH/W8siqCBU+euijpn16QDnDLpW+9IxDIW/z0h5rClR/fy7jFvAjN8fF0mabgz5ec37RtIsakGQd6dDySaeQjNIVmj0xnfhw+gi2iMgdV8i0cSyyRvpjWYO2Hu5RmKwUMLVRuCwsl3V0wYLv2H34VHIuGWFDNqQ0X/j3TLsgnzXRMQb9HihgDYUS+YtIDS1RtHvbItlVVyNpR30nBROrD3OGUEoc7V7wEuMyqvGR6AGyc+J2IF9Yuikc+/1Jzp0rTkKe36acZzV1DLktfHpjsbpMg3tcnGULxPoqc2jfTRxtVQrSHklEcu1oIzOrJwJ/K6hDiq2uJFtoth855eQ6vlfhYXvC3jD6OZqjFgUNDdbjWTuLBv16bpx5+q1R/NriYQ68X0NuC2vHJ6J8PEPT55ELL9mQm44mMgdRN+4z7YVdSJt219OmvWwlXpWc41l8PY2tGSIi6058qmsrc7Yjg2zP1AiecYFtyF79duagoJlimbNR+O/sIs/KZ4XrZH6SNqw9i68VpsHTOPoZu8Z04vJ7QTM8GhoaGhoaGpse+oVHQ0NDQ0NDY9PjtpLW6BYkgEkXu/CfVHfk10FxJRwgw2d+Auo3KgZJo/lBqHXfAnRcmZCB0Goh2yW+AZpuOo+MsKUwaLOhPgorVcQgB41Mc9aHiEjKBWjNpViKeCUP0b6uaqiznHNQe/ZeqNgEhSp9tpTPOL1Q/95W3iXny5Fxdg1RkOtGG5kqk2kq9c8u9FBiZpL58VchxXX2IS/MpyI5Zp4ng8Xn47uBRCTNqQyyaAYj7zDtLj+F8Q5cRWaYraTPr3igIMMN5K1jvl2mPawUKpwIKtKNiCynQf3PZ0FTh6/gJ0lKxoE/E4kz2qpQxGP0x5EOBZ2cSiZFSwDqe2IV/3TDpstcDtd0Lyqy0Vjoz0azLdGe3B1u03bWnDTtE7UUc2sbQZLLOIRknDeJbBe+G0kr/rtICfVFrNOSfPzmr5RsjP88CxVfuw3pZc7GHFvXkI/yT3BfEZE5F6FoaRo5pDCW+BLVw1y2FyKxxh1gzpxP4xMpBxmjyguMxUIusswb6fhv1n3IADdOKMUTt+J3wSvK+Xx3ScjgNVg7RRPMVV8ldP+BYfTmZg+yX6UbeXZ9gPG2rSEx92STIRR2A9mg10v/D6cS18eqOVcrIowYPPMK51+NGMhtxc0bZVvvYbJll3OJqXFNyCi9DjIwCxeQeOqWlSJ4y2yNKFIUi6jLrKmeXGLwqJUssu2VSEI9rzCfKVH4c6//Jxer+1lhWWLtj3bgjx/ZTbB4qgqf+mSkcrDUEr7/VjFbHsqV8xWvpzC25V7lmXudzKzRRD4TqZyXF2FD8k6b4Lnp+4Ryr6aNYzJ5iUzXiD2sx/koJYu5m60tZ7rxu6op7h0zzTaKvkIyxArD8Ou1YSXzax3fXIyiTcOdPFtro3kPCOtTnpuPy7tCMzwaGhoaGhoamx76hUdDQ0NDQ0Nj0+O2ktbUHLSpLRbKKiwCWSJ2LzTzfBe7wctdSBSt9dCyUoR8dCgM2rTT9sem3ZfMd+uVTAtXEnRoxtQDXNOPhDHphBLrmd5Y3KxKyYQYzCD7a8hDu3O6odEiy6HIhkbdpu0tQfZxTkJBpsUiSw3PQTPvNyg+ZV2meKIjwPtmYQmy0nqjQnGGENeCtPvwOFTg5CwUbJgDesnaeNIAACAASURBVDhhmHG1WpGM1mxIOt0FihQxy9gnDpKZcSYW+SJC+HmuC446wULhsXNZtHPUAfVZFclYi4isnibzZtUFvRpzgz7EFUNle5UCXJYjUPzTgtQ119dj2mGFZCbO1zKfdyUiCThiuP5gB9LloU76FuZ5S0KNK61Qxa4bnHnXkARlXXicNif3sabCw92m3bnMHFdcRm4+70caSN/5iGn3L0N9f3mAtTmRiwRmn/6haae0/wZ2Av7xTFA5lEtE7h3B/xuDZKH4hjkLbWovUtT4DGvk+Hn8sTeZuZmpc5v26IPf4Ls1ZPisfgMpbqkEKeXQHmRYqUeK6//oRlk1VIgKR07ypDFvEz7649zO2qkXpIyZUeT5AiXpqGQ7Mt5qA7KEdUHJytzCnPxZHRLTXX3MsycM6Wq+kraVK1lgEXs2Pko6EpjDinMUJHVsRWpJGycuKMtFLIn8o3cROW3bIvG/P4ftCr62j5v20BauHz3GGh+eog8Sy3qvWNoorYYC1w4xFnmZShHNBmL/gTDW11Quz8HeKeZgj484uDDxedM+uu0p0/YNkvkUv8hzbNCNfGT1MBfPThEzi0eQnmyxrGXJ3pi5lrHAfETHbjXtrGYk7ZfyeYZULHK/jGiu5R/nedq2hqyYNkzW5JIivU7MuU37yCzX7L2bteIaIvPtsCLXvRc0w6OhoaGhoaGx6aFfeDQ0NDQ0NDQ2PW4raaUr9e9+ow267Id5b5i2PYxUhdVosgv656CiDyVDd1/0Qwn3xUPTNU7+wLQNYcd/Ti5UVuQQmV+9M1C9FQ5ksjqlkFZRGPcVEWkvoQ87rkJTz0VBFffkQql1d0L9bjlIZst8M9rIaDhnmaz2QBEGlKSFWYPrX1hDQihWsguuW6GQK3LJ9hG5W0KFqDaoyTgnElLu3W7T7l55wbQni46Ydl8L45LchhxoraJ9TqZfxuLI+InNwZEiY8hU6B+mkFhAOa9l+DLyS8JjZBIkPUOBSBGR6Ey+4+lBflpT5JjF/0oRvLAvcebOUK/btMv910y71Ya/JbYxiSWuJ7jXFgpMzrwEJW7PQzY4ewfUceYw1wwVmobw/5UyZNi7J8hm6HIiQzqtnC92VqCibeXIAefHnjTtlEzkOec5xnk8gmsOZ1PELLGf9f5YCYXjlss5S6uxDYl8ewXzKiKSNEGWTlw88+FrgZovSqJvc6vM96uRzHdWBFLtyjzZH4MjnzBtfxb+WODtM+2KWej63j7W6doM0oL9AutdcK33DWcmoTihn8KZU2usu7Ue7LtSKfqWY0NKvxGvLEIv431onfGq30tciyb5VB7MQZaorSU+lN3PnPsXkQ1qR7lXoIPtAiIi2RPIDr5ltjQ0+TmzyZnKz/3KeYjNYcjTh5dOm/b16I+Y9j05xBHvHDL04I/4Gz75Dtbm3ruPmLZ1hXbblpD9QoWdV+n7XDf+uGONdRoxoUhOyvz52rBH3WzJsFcxH8stzEdY4YumPeVGDotXsqbWHayPR1Z4RlXYeZ52BZC0wqM2FgXtaOZ+maPKdS1u0/589Kum3bLMdVdiiFP9uY+adl4TZ75F3Mc8xc8wdgvNPB8uFXOdsih8LWEHbT1XQ/HEz8m7QzM8GhoaGhoaGpse+oVHQ0NDQ0NDY9PjtpKWRLOz/ccWaKfxs/tNOyMaas5dCj3YPkYWyYlsaLr7V6Au57I5T6PNAaW2p5Xd+Gkj0O/TKdBa4av/aNpTSiGm8Gio+JjEjdlOmU6o6fPVUHO7rkAPR16hP2lOpWjSODJLqUFhtcYkMjsWr5EtsSuCjKKB07RjWxkUZ3QnEkj8JNkIDTtCJ2OpcIZTlK7VC20edRW6eyoLGrw4hh32rmXksOk9SD3eKShIfxFZCPtWkOWaupnPbjuF2wrWlCJWYYzvciXnRJWdR06Z/RiUu4hI6zCSZdUMxQqtI8hpUzspaFntQEYJW2ZuFw7Sjpxr0LE7JqH+Sy3M8+zQnaadEgedftHCvWIuI6322DZSxKHAnhLG3WKFKl+3IJ8Nu6CvLbFQ4vtqkRLmp2m/V5i/vmSkG184EsCWe8gO6rnMeq9eIIPq5CBSbZ8XCXu/hYwgywiZOyIipwaQxBJ7+Dss5n5i0IlWJOkt2WTv1TST/ZGQhlzl2tln2itDyFWdSnypuhM/bXyTrCO3kq2ZcRdZYLODSuHBEGLxIvEoOUBcjLKQzRYXjZ+eHSOOLiy+ZtrzC8jnV44z9oOjxLUyg3Vdsk7s+yMf/cwtxC9aTxNf763ifLbzB4h3y2EbpSF3DLL3so95ty8gLR4soA81J5TtAA8xt5JJhmvKRdb/c8r8fLYcKaNgL/2M3Eom78hbfaadPsMYefL5bqiwlkUBwIgq5u/qEv3ddp7ngBGunHWVw1aLlFU+Mx5LNlLtVmTFfdPEsZUF/OOGlTEvi2LOLLPE9zClUG5wlWfRQuLGM6liH+TZ39GFBrp/Brn63/hY83+cgh/VJLCWUzys+aGrypmX7cp5dqn8/EAu/W8tI9bbrvH+kViBFB4/h/T2XtAMj4aGhoaGhsamh37h0dDQ0NDQ0Nj0uK2k1Zv4mGkXOKATjWh2T3t7ocLa+tk9bfNQ3Ouj80hR52ag3dZ83P7jC8hEI0tIAP5HoLLmvwHV2/8ElGbxEBT19CtQ2iuKJCUiMjCAFFOZhL1wGDklo1WRXOy0acBK1k1bJhRkUhA5SKbIouh6FErXXsvueXsjkkCXi7E4HA6N6Jk7o7T6mIQKvkNfMe3GGqjJkt20OzjxSdPuv/ScaRckU6Bt9jLZL/YIpMis3ciPnY1KRth25sTeTf9TPMgVtmKo9V3N0MDT5ZzD09K8sVjdnh7SZLL7OQ8rKhrqODqRNi0FkVZlXskSep5iatu24OdTfVDTjlyo1uZYrt8QrmRS1HDOUGtmnWlXK+fdhAp5I5y99Go58sPWYrIfikc4Y6p+kbFaeYxsp9IppM2rHUomxPi3TduZidwUcQ1fmY3g76WF3H2m7Z8gPqTN4Qdtc4xh1ALrQ0Qkxw5l35mJnFZyhrWZmYQfdQ4igTyQx3rsClPkvWbafc8M98teZs7GnuVe9mx8KGIfdHpLDYXREhKZ11BiqAjJMaEFuTImWTmvKJUClkcakDXqtxKnvEr23nI3azb1GBLHiAvZ/ztK8bidVtbaTAqy7fABxr2xCdk2+fVfN+3Hkzae/3fReNm0m2me3LHK596IIAa3pCFrHFTOyMtqYOznDxGDky8jYT+TzXo85KGI32I7sTw7gGTYFMP8R3nxnVChxUmhzm1jSEj+OrKJHfeQlTvfR3u67iIbOK5NeRYZyErWBUXaX+QZEjdLXH7ChqTuOYUfnLGyfh0P8fmpM8jWSzn/akN/Hv9H4u7zqTzj2+3Mwdd6iaEj66w1Iwm/CyayliMrkN69ychSQWXrxFOzPPsdfuTTfH+fab/ezTN+Ryn+8V7QDI+GhoaGhobGpod+4dHQ0NDQ0NDY9LitpDUbxw55/6vQrJ/cAsV1ZRD5Ke1T/DzzbaivU8oZS+HFUKhlF8iCWU+AKl6thtKcnOb6UV+F3j00BG1+IRrJIPUjfD782kaKa4dSlGxtCCrMGCFTo9dHIcWxVGi6smHo+IVoZDzPKp9ZvY97bR/7tGlH5lP4qWkR2rgojvb0L0IzF0ZwzVCiIPCHph3mOm7asZNQy8mt/9q0G5LJluhTzrHZewQ6fbqVOYytIfuj9RgUdVPLEdN+ZBgadeYevjtQC2W5I4WsAqOVYmM7sqGlRUTC70LKGb6KNGOfh4L35iJT+GKgS7cdYj4djchAiz2Mxa5jULY9GRQbjO1AEsrwkuVx4QmynHzP0ofaIJTygxIaPJeGBPSwcrZdh6EUrdvOfZPPIXVE1bIuWkYpBOcoQlaMWURKuBCEij5aw3iGxSMftShZPUtrzOuchcwn4wgFO5N/i6xEERHvp7jf+SEoblcZ1P/E3WTQNX4XX5iMom/3RZOBsy5ICE9WID0n1uFrylE/MljMvNqDZPrN7kP+DbxGFlAokezj3v27WCPLrRRAfHL1sGl/LRV5P6uZWDa7lfHuXugz7czrSDfBZeJReSnjuNaXp9jE+6oo5tNTeq9pD4YTj9ezKDwnItJ9TsnGOog003yaa9UG6Gf+cSTatWuKdGklzhdP8+w4Gc64ZIzeMO26MCSzfA/PoNpkMnRL53nsebYg8YQKB4TM0h/1s74eP0CxxJdHiKc7s4j9q+34bNUwz5mXEu437aRuRbLPQNLyxhATxrsUuTBAXMpyE9O7vovsmFyJxLT0w40Fe9/I5Hm0ZqHdccPIZsFk5nhPxRnT/rads75cF9hSYLNRXLTYRYbX2xOcYXe8Ctl6YZr+1Cpnav5eAecI/uXQb8tPgmZ4NDQ0NDQ0NDY99AuPhoaGhoaGxqbHbSWtu2ahOBuroaNaLBQQsh2EaptqgcaPEIrchceQabQygfw07vqWaa9P/BfTnrOQseAfg3JNqESGiJ6j+JBzjs+MBqAEU7dtfJ+zrfE5i99t2mN3ksFS/Hdk5owVKEWTVvn8RRg1cY7z3YP17HTvyYdmdUVCoWdYkYO6LexmzxygiNNpO7LEY0K2xPvFmiI/bTuE/Gg/ByXeUAq96umDQh5ZgF70ZkOjpgyRPTBTgpyYeBY5JacPyXDoKEXMVt9kPu5S5rk7HmllWyUF7V7uV/QHEQlGuk07fRqpZXs6VHZrJlRtyjUmbnGda/nnkDEDLn7uW8OHl8+SaedfRsYKpkP3Wp9DrnRH/aZpZ/o4nyxUyIxnbTb14kfrYbQt6TLzZClTCrtZkYxj0pASFlJZO90RjNVMDpJW/VwZ1w9D9lj9HvOXuMbPi51kzVy/gRxUeO/GIpK1bcjn+ZX44Iif+9nPIks8msJnLuRCd78yBa0fNwnNXnyEe49b8OuWKuSdvW+x7vozkRPiVvj8csrGYqahwvRJQvGFaqSPuO1ISPcnUcx07tusr6E05MFgC9fJzEOymClDNpgS5n+2Hb9Y20ZmbeBt4n225Zxpr9Yyt8nlSJQD+UpQFJEdOcTCpy8QI9LvQipMWXJzjxeIlytVZCpZU7lf0whruXyd+RwNEMucc18y7Y5dyF7OLtbp3Dxn8k20Mc+hwpkJxvpOCzGxfZDY545gTLveRv6P3IU8Pd9DetvOGeZ4u5XPn28hXuUZfHfQjUT82OvEn6E4YsX8DHJx8TnWU/6ujdmwTUpxw/wM5LT5gROmPTnGM34hn/nL9nJ+oTULP3Bkc7+5czyXsrYhH08N4FOrCRQzvDsG+feKE4lujyKZixyRd4NmeDQ0NDQ0NDQ2PfQLj4aGhoaGhsamx20lrdPLUKg5s+x+bwlAp2ZnQxu67FBN3SnKWSGz0KNpHnZ2u+3QtVeSf2za6RPQ9XWL0F3T1ezYzw5XdqcbZCbk9EODDScoRQFFJPpZJLHtqWTstHdAaydsIfPkcCf3mMlQstGUM0hs0fQt4kGyC9bTob6Dr7Brv2CJe1mnOPtjKBzJJFI55yqUiMqlyNq3FYr3E8PQw/ZZdvRbuxnX1Eehlu+9wlgMJEKLrpQjRTVM4VqVMYxX4nnuVZfFePV9hSySPZehY/35faa9ew5pUESkeZRsI5sbutgyATXfW092VZWNrJC9VyhKV7eDz6QoGTwNSuaMTaHWIzwHTVs5GkwOHVLO0LnK+D6bQQFAchbeH6pxKWnPRtJp6Mev/Vtog9PD3KRuYdwuteCP1R1krBwMIns4nFxzbR3ZbmLwWdOOqWLMVxRZ8KUpaPYIGzFhPQilLSJSMIRM3uFxm3YULiiDDazfqQOcH1VxkZhyo4I1NZeItJk3xFoOn1FiUDIZenFbofJnlqDfC4XPDwfwg1Bi/xFiVUIP8zDsQ06LfYoY3J1CP7vqkHOTK1h3xW34hWcLsdPZxziOu8l8y4tE0oxTsnYmp4iJxgpz640gZuX2bSzIOHSZQpR787luSxh/Y9/7CpN7tpI1//AiY1zfRSbYQgPtiN7BAliMYewWSnlmVbcRU1pG2XoQPEjMdr5NO0OFnCvIeQv5XD8mimzlqSHG93AJa2p5EcmvuZQz7/wTrDXXDuRg3/fY2jH1MdZ14Vlia3smMW10AB+ypLOuT+Ww7aC4laxHEZHcamVNTSLXBfbhU6lKMcDwWp4PRgL+WL7Ke4OEEXdOWdjmktyOH1Q+itw4cMpt2hPJzHdUDf5xdkkpLPt78q7QDI+GhoaGhobGpod+4dHQ0NDQ0NDY9LitpBW7Dq279Dz0ZezDUFlr18io6tkKHVXlg658sxfZI2wXWQHGMnKVa145GysaatkbzXXKr0KnXc3pM+3jTegKl7azi3z1DNStiMiMA1q/r5isAI8NerF4GwWRXoyDLsu5gUS15GIn+dY5zrcZaEUGSOylb7P5UJD161D/U5l8JqZPOYsmQqWHd0uoMK0UNMyMJROkoYrsOrePeYgNIzsnW8mc6i2Ccl5JYIxtb0Cp5ieRXTbSpJyfFs3YpcQeMu2wb3Kv8Wrew4ufYf6LyvFHEZGxYajNiJQfmvZABP5zaC90rKsLqrntLgqCRSjF8fKyKeg2NUEGojuFfnZYuI69mzHtWKQPg3uRVhO7N/phKNA4QvaaY5BCfbG7kM+i0/CvDAvZW28tI9FEO/G75HDaWR9FxsPedrJF2pQsj7hI/P0tQT6wTWFXBlj7yUIMaTOIAyIixnHWWuEU8/xGGr5ZGvmwaS/W42t9u5ASSxXprnsXseBSP3ZhDNc3hAKcljlkkuIpfGjcw8/jFQk7lLjYhHwxKhRTC+tCVm0IIE1kOZHrHF/Hf8u+h4x1shoZ53Fvn2lfiiajzrlG5pv/PFsJzrlZg5k7WBOzQ5TOzO3B73yTG2X41cNkozr+G36VdZhr1e7g3gE/ssaFVMbbPYNfTFbiz/W93DslFtloezjXObHO53cGkFYdHmJQ80EynkQOSihwJR45KWMrUu0WEo3EZueZcKWO9RibjbRUfhqp63o16+jl71EQ9SFUYnHV08caJ7GobBsxcGlE6fsF5MyHkpn72ZiNhQe7Bh6nP0lcd6yZzDF3KZlZ146z1nJqeZa9lcJ2hr0dnGUYE/OGaQ+Fs37H3+D6M7HMtydMOQvNioTZvw1/Enlc3g2a4dHQ0NDQ0NDY9NAvPBoaGhoaGhqbHvqFR0NDQ0NDQ2PT47Z7eCxjVDm1/SZ7W5Zd7OGId5FoG1+jHMKY/VXT3j+EjnepAu0+LIy9HaUWUuG8S+wZkFn05vO56KFFN9D3+g6xNyC8hxTohByqvIqIpA6SFtjZi0YfexLdu3k3eucRF5+/HIkAW9WN7ruSQHrzuJ+0u3RFB40ZTTHt4UL2f+RNsd9i1YpeK6u/mPfQeA8prhV17GGpUyprFk/xGf8oY9/4GmNRMUR/Sv49InLtgdOmnaScyed2MbeLEYyRvZU9ODVetNtJLxU8myoY95oe9jOIiHy9iP1jTt9e024bYk/D0DAp5zGvsbdE0tF7RxSfNBxo5Z429r1cyaD8QnqQysxZhaRXzqUoVT+vkyq8VtEhoUZbLns+LFb2Sx3w15v2eCsHeg5tQaP/1EXm7Mm9zH16kL0HF55if9Xb8eypmKxkv4z7DGvFkskcV2cwzvkDzN98OvvGEluxRUScA3zfsYf9KWXL7OFoyqaswPZEZb3IF03rYiGfeUzZijC0QltjI4lHi2Ps5/HFsK9irZq9WYn9lDzoEPaFhBLTSoXs0QT6fH85a2owir0qTzupYLvnRXzWamHesmfZr/F2kLVWNMmcOHbwCLgezb6trYusx8hZqobH72LfljHLXo3lWdaiiEheNv5Z+2liyt2pHID60vfZz7O9jBhsW+G5c2GFuZpR9nnmF7E/yV5PHH0+gb18Xxxnb6YnDR/u6OOZNTzH+IYK4Z/jGVT9BnHghoc9qK64baZdLDzXVl/hWTabTpu3P8dnSrbymYRs5qBrHb+ZqSXm+Bd5Vj7ezLO1ZAdxr62XFHXbCL4oIlJ04K9N295G2vxcBaUlyjNZOzNtrMGyBd4VPCvsT7pQxBzEJbCvNTMP34zqZ/9eRgo/T15gzXrqiBv7Wt6m0UfkXaEZHg0NDQ0NDY1ND/3Co6GhoaGhobHpcVtJa6EUGn95DvordRpqbs2CNPDGDqj1qAC0WN7HSUuMmYTKs1mhh/0xUH8Xkzm00TXD4YbWGSjKtSrovrEXFQqukkMIRxKhd0VE+n1Q/PZxKN4DW6Dpa66T1jiTWmrauwbQaNZTkWXeSiNd7t4eUvMilriOZzfXSRqDZ08Yog+nJqCKU7dAU4YSnmhSCu3boJnDrbSvzQmVnZOAPGJEQh32L5FeuH5aSZXNQlZa7SUte8JCGuHYNmjN1HHSIpPzGcekvdxrrAEKteiR+zb0p++bT5p2d6Hy7r5KyYEt04xx3aNQ3xmOM6adOQRVvnWddNrRXJZH9VX6GUiGsj13mjFN387PBye2mvYTkVDKoUL2VWUus7m+ZyfrMU4Z9/1Kdd36TKrlrixR0qH9BtLI2K+zTku/C50e1YJUPWOhJEO4IjcsncZ/2+ykvbsnoLfdPtovIpJ8kPlrJOxIYIXvRFUhLXVeR7asiOFwxAeHKI3RFIafOlxKmrkFySw3Dpl0rRQpbqSWiuNhyrqxNTOvoUTZDOslPB77hRO0O0NpR4KbeBHYjqzuT6ZcwdgbyAYl+czP6jJzUtuHv1TlUdl2yUa1XLlBTB3PJMZtWVDid8bGv529T50x7V1uxtvTqBwge5eyzgeRHANO/NYbRWzav0bsmFinfZl7WHdTHWyTeNuKXDVZqkgiNYzp7nGllHeIsOU1fGcgHfk/K+KCaQcHSS23eZFoLh/A349dQmYaue/XTbusnb73xzGXc+coF/PZciTGFkXOfUXYdlIQ+IxpRw3gW/kPbzwIdmUVOfzFYtoUP8Z3uq1fNu17lLId15W5DCskxm+Z5zl4ZgT5+IEAUnVzIrJopodnvNdPfInZTlweuYqk917QDI+GhoaGhobGpod+4dHQ0NDQ0NDY9LitpJV9ip3zi8egMnNq2JHdFQ89uOqiUmXQBn3VM8SO+o9kQXFNdkN91cZCUwWtXGf1IDRdlhcpzWiGKgwbpRtRe9ghv/QC9JuIyNZjZBo17oBa/dEY1G9qKTR904tQpUkPQuutjkP9f2UKOrkmjowgq4sMp8gRqko2ZyHRrS2xkz6zACq2vR9aPpRIj1Om28ZY5swj+4zEnjdtywS78L2HyOwpWGIcUwuYzzoblHhmG3Rn1E6kq+laMmq2p7OrflzJCpk+z+fXBqFsO6N/tKE/KXnM755MsjlccdDUXXNkAET10u5Z5VBGXyW+MFpM5ojlJLLOSjGS0NN+5IEvVCAhvB38gmmXltDuk3mM0eclNIiNpe+TkVT/jW5m7PqLobJvBJEfwmzIuUfHoNDfsOOzmRfJcJw1yN6qK4cST7YwZxkzZC4+tER/W6xUZk7I5L4X3nGw78oIUuJMNZlvtjU+d7CNGFGTi8Tcn33AtJ3bqdpa8TJrrTeFdoSPIgeNh1PlNnmZ7LvaMXxtXz5rM0epcC3ykIQKT1uh7AvOs45c9xNrA3O0r6yH2Ly6ggQRGCDWRgdZy34bh0yulbM2tzTyN2/KCLGs9hIy/+4/IGsqbQSZ+x/muNeuyCMb+uO3M4dxSpbQ4CjbCtzLD5j2TDJxO3jmH03bvosYlBZOFmTsLGv2UjfxeF8az4ueJOJobjtrdmKE7QYFKRuzBUOBIS9zVmRlnubCmL80L7J7e5C4tMfP+Nwop79GkDU1EKTNK2OMW95efPmUkhm8bYBx6I9D2usVJMI4RY5v8SmHfIrI9je5R06GchB4CtL4pJPDv//OwvqKs7BVxbHEM6Q1hXj06HeQlU/+a7LB175DPFrM5Z3AnUAcGPQRH7Iq8bn3gmZ4NDQ0NDQ0NDY99AuPhoaGhoaGxqbHbSUtTwb0mqMGen+sAnrNPwptHjFMMbvyPGjDYCpU25lwJDBxQDMmxkOtnxxBPvvyAvRdVwESWOA6NG73V5RCZ6eh1q0p7P4WEekYaDftwVkkjUOXKFYVe5T+ND+BNOL+FhTva4cfNe3v5pFp4K5AurJcute0x9zPmvbOfsZ0oROaOSGJ61etQeuJ3CWhQoIXCv7FIBR/slJgMeJlDgHsSGRcl88j9YwnkDmxdJpsgE4bEoevjIy9iVU+k9KhFMS6j+yNqRraEOaHovYfITuwaGkj1WoZgmpNDCeD7+U0Mk92e/iMEcB/JpahZnN6PmLaT2YjjW1XDpjtKoGC/fQYfyesXkMyy1cOvc1Ow/fyA49IqNFQSqZGrg15p+kS8kFeDmskLoK+Nw0jUbRtV6SUYQqarUTwc4+deY1tZ2yzRpmnrlTo6tdXkJg8DjJQqmeID3n239jQn5llMq1ixogLFkUOXdjBmv3SGtLFS9fx05ULv2batT7aemcJ8ai+i6yjpCbo/p50JKCSAD6e7kV6rXtIKV4ZQiQGkEALd0DZz40RU/4ujNj25WIle6sWX/Yfo325S8gp0w7s5Vrid0Q28cu/gHSZ9R+I2a3NSGDRVUiPXwrj8WGdUmOWyNQqfrjezFqYPEoGU7GPn9/no2/fexD/XHgGn/QcQPqwNDFGe2y09cY6188e4/rDqTxfwrbit91TSoVUuVtCgZy9rM3K54khl/YRixqUDMqP+sj8q42h/UdcSDStShFF2wEymaaeRNJJ+RL3jWpkC0ZCLvF3gKRMkW5kojUb7Vm4ViEqPFuUCp5LjLVYlaKik8hby/PI/4eK6fPpbLJ49zXgs3MPcv37Bvn5jW1IyatefDNtGCl1IY7impUB5XTW94BmeDQ0NDQ0NDQ2PfQLj4aGhoaGhsamx20lLVmABl06zo7p1BoysFwznI1SVA01FWHFbm+A0VEOHwAAIABJREFU1kuspFCQtw/KLiIIBXfn0t+YduMKGVTj3VDUQTuZRfsboIMni9ymnbm6UdI6H8Hu8fg+aER/Frvqe4ahyqO89HM+lqJ3d6cgy/Q2QPcOzyLFhe+BBn/wMlLMiXLa5MijD9nRUPe1bzHuoURaYZ9pu6agDhtb2Uk/Xg0tWJ3KuC4psoFzlcKQ60vQogXhyliMXDXtlALkjuATjGmXC5lhYg3JqK0FmSivSDl/qYBrioi0XYTmtPsYP1muMc2Bgt8y7bCzyAO2ROany0pmz31vIiGOfAw5reQsss5ACpk6llgk0JU7qJhXOHvctDszaSek7vtDchM+m2pn7GK3IDl0lSEh+Z9CDsrezd85WcOMW8ACPf6CFzn3ISe0tGMaOaB/B22I6yUO2JPIcOpdhZYOtJBZE2X5Xxv6s1SGnFBwiDZdUtj0gjrWTv9jUOtBL9cdz6PYXKEfefb6DWJQUQwFDKOOcK/FKWh55x3IAydOkfHy6EusWaHL7xvxdtbRyiLybsw9jPHXu+jz0A3iZasgcVi7ybbJ6ebcpNks1l1KJj7im2LsWgWZ7CtvkMFzJY3+hw8rWU2NjEV+JDKmiMhUNjHSGqEUUl0jvoSPEC+eylaK3fUgWbicfabtHacP4XZ8eDqca66tM0Y5dyFXxT5HLFuJIPMraoF7hQqORmJlx37amT+M1JNZMGza5+doc8wADj/rRd5KLaLvdZOMdXIJY5vrwX+TkrnOP2QjESYOEetFGP+kKOZ4pHTj2X+RdbQv7WifaV9o5ec7j/N9VySvFc9cJ/OvtJuz2pIS8aOeEeZgJJr3jOV5Yo0zijhyZZU+RKcT6+sakaePyrtDMzwaGhoaGhoamx76hUdDQ0NDQ0Nj0+O2ktZEjHLG0AXoy8EyzqhKXSKzYSHqiGn3RkMnLhUgH1WXPmXai2ufMm2nFwq1qzTftHPnKXQVm4wklZIKBVoShPYdOI1M4nxHTanYHuSHwmroP0cH1Nm4QK8te9i5np9IIbbkN5FGIjnqSQaLoP4TOqHNZyugLy2LyAa5A32m/Wov383+GBJQKHHdCl1oz2F+Sk78P6ZdkHTdtK1nlGJUj0Mdpj+DXDN4nM8k9kKPj/XyLl0hSJfTU8xP559Q/DDxo8hHaelkjrSeQcbcU7BR6qsoYz7X5piIuRHud/c8dmMAqrk5jO9aPFC+I3lQwcYYBeDcSuFFeZoshtWt9PnQAn67mEMGWvyEkpkYIvQGkf1sQeQqfx/rIt4F1Z+fTHpG2ASfP2Ug1UXFkr20x0B6nlhGGlmyMJ4Dq8ii9lgkgxIPbRu6Bxp/69+TueO1bpQS4iwULps4C2XvqlCyPZdZ/9O1ZO8kZ5PB4lOyxSxZ+NF2O2cXOf4BaWw0k+ydmGSygFK+gTQWvwvtajSb7K1QwlghRqyOIYGeqcf+3Boy48QesqLiv88YtZUhyV+uZp6/PsTYd6cSU1O7kSWWFUm2ZurTpp0YIMbP1FHwMmUvGafzr2708YJsZKPGJCSIdWULwPQhRd76Ee2OCCgF5/azvizzzPNCAZ/xzCox/y3kvYCfz59Q5JHS/fj2YifyzaeFQn/vC0k8NxJTkSeXx8iMDbQQy2JsrKPJCKShsXmeFYsoWnIsgxgd7KSQa9sksSvOysNvf8dfmPaFONbBdiVzb8LH+j34T8pDTUTmS1nDAzPM/317yf5abWNd2AuIEa5C1qldObZsZIa1VmjgE9Y1nhueY4xL2GXOIVsN8kyYSaUP8+2sofeCZng0NDQ0NDQ0Nj30C4+GhoaGhobGpsdtJa2IdAr1DQ+RCZIRyx7oUaXY3APJUF8jr0Mnlu+HNgx/Cbp6ogAKNbOLAmXulT7TXinfY9qBi9CSixVcs7ETOs2xAxmuKBKZRESkPANKsdeGDOabgYJfW8d2V5Btcr2dQnorRewYj13ifnMGmT/VDyKHDDxLJkhyOJRgRCx0XGU69w179U0aTU28942Fa2TCBGMoRNda8vemnWpD3vHfDZ0eflGRIBQ6PXrwc6Y9P4bsl2mQj3Ry7Hl+vhvJxfBSNGq2BYnJug4VfzCTcRzcCvUpIlL0FFk4b9vJwjkmyIntQ0hLM4Vca+sVJNTOIujVzBl2+g+lQO36J/luVDp+JOv0p2aZzwedZE88PA/9HipYIykM2DuP1JNXwbxucTI+k2XIOzc6kACO10C/v5qAxLB+hHFLfh6qPKrgnGnfG8CXG1eZvyEHGU6ltcSQ/lKkMVGKXYqIzFwlI6XqIOPrH+Mes/EU51xX6PGMdWLN9WGk2nttxJSEYWJBwzZkrIgZvtsxgtRl5OETx/3KWLdD44s8KqGCP0PRLJRzBbetVpn2/05FGjrYwnhFZyv9iUSWOdZCEc26SSQto4b41VRFHCz3ENdta0igwwv8vNSBnOKdJibYH0PaFhGZOIscEwwn/iU8oozlK/hYdCax0BZJW50LtK+uhu8eqOScNH8+PpaVzJwPudm2UOBAxhp7Hf+MjkVKCxWsQ6yFjla2PxTbyTK9lkF8LLI/Z9pRE4zDbAx+UJBOZt3Ic8TNkp18tz4cOezOKdbXJYNxrmxGJlo++JJpB7oeN23juJJVJyLraay7+CJizVwrz+aeDOYmcI34XVDIVgh7F7454iKORPuU7MNiYo1tgLHICe4zbc9/YA1e+R3k2V0lGzMF3w2a4dHQ0NDQ0NDY9NAvPBoaGhoaGhqbHreVtJwr7PQezYGmS6t/3bSDPiiyzh6yYNazyDpqTkdK8cyws7/CBsXdkvuWaUcbD5t2cju7x7sroZwHRtmpXZWP3JBYxJlfN05srAyWlcF5Pesj0LTTSdCahakU1Yta51rxucgANjcU8sQ8FPrhPqS1lu/SvmI3dGqvQRZB+xxySGoEEl25l7EOJY4cgGpsXubsmpF5pWDiW0iX9gmoTZdSGHJhEarRGkdxO8OPDDBY/m0+s0wGR2EJfesag+r2pyJjbHsbOv1ZC1Li0YvquTcizffjY7NN0PT98RS7Otn7d6adNYdcZdv3FdPODEdOiK5ip/9MA1SwLKGhRAXJHFmsxxdaqvnuxwdZC23h+C3E7PvDpJe+lyVAX88vfd60u2deNu3l8SOmnZTDGuwvY747LIzvl5eRuiwlFM5cbEPmrN+N38TNk40xPwXlvEspCjjqh4pPCyqF5kTEs4/CnoHB/2PaCYLkFMxkDS6c4Ky6nvz/bdqZaaz5Vz0Kta7IRNfCySLJj+L6jnj8d7QXij+6CSl1MIKxCyUC6/hIV47btBN7uF9JMVKt1crZdvMVSJcJNcyhLxwf3GrHx+vvR2JdV86k8ivxaAD3kjsU+WE64QnT7m3jOeC00GYREZdS0DHyJAXnYp5DmjlXhAx9aIyYEoEaJtWrXCfvGNsHeifwq/xLzPlENv2MO0Nmcb+T7L3S+5HfJqY2+mEokDSP9DihnH92tQAZbvsA2wLsUYyJEcXz1JWgPDeE5+OXfh8p8VvdxOWcZ3m29LvZIlFZhZztVLaRSPeDplm7jCxYsMh1RETWE7nHqot44UlqM+3c3WTlrYThy9YVtkiUpiIrO2OZ1wtWZMg7ncSRuTDaOneZOY7/AT77yWLeUcYjfnJ2s2Z4NDQ0NDQ0NDY99AuPhoaGhoaGxqbHbSWtGDsUcsspqOypfCiv7IPQjCMGFHfAAbXqeZad/SVZ0MO2IPSYfwEKfc7Pzvz8XijdVQeU4D1eKNCzOVB2Vh/yyWjuiQ39KS2HvhzuoQ/JzQxDnHJezVQZcsXYHLRuZiO702ezofvXg1B8iXZlt30y9GvpSTIEXr8DmnLrDuSw7/yIbDd6/P7R1wG1fD0Zuc43QMG5KAeU6kAalLCrh6J60xVkzswoVPZyP3M+O4J8VJWHvFdXi+yT5US66voOvvZiBH6UVgx135e4sejb0lXktBwn9O/JXvxtVzrSZVcYYx+RrhQY/J/0ubUM6Wp8C+2LG0Te6lFkydVypI+7PFDl3kRo5y2ZSgZOiJAfC21sn2EdxSeSFZHbjgSyHIXsm5CFpPOsb79p25aQnPpiOdupNALJbF05Fyzhep9pF0wwr8NOxirKyfhPlbCuey9vpJ+zulhrN+4+YtoH5sjMXF+537Q7lLOa9lg5/2x1nlgwYOGao7O0KdPJNWOdxB1bExKYw4bcElhAhi3ar2g9IcTMHBk2aRHEo1iB4o9VziS0FpIRmNvMfLZF0efhJPxifZjMp4kryL93KomsI48oWaNtyF6dFjLCphxIMaVJjEuCfWNR0Ode5vt3HGWuOw1kw0fqjpn2UByxKWOCzN9TcaypGEUat9iY5w4h4/KJDrdp/3gfWVrHb9AGez1/57+w8bjFkGA4HYkmowwRu62LONgbh9yc66N4YN80ElhcjlJQcQ0J958uKT74pnJ+XyYxd7iAZ4snVjmrqoGiqdv78Y97jjDHvfXIvCIi3hTil7sJf3TuQ4qLbiAT1zJCLHZnIrHbLN8x7W0L+GnAQpxduoPx8n+b+146xrikP4kvh+XjwEPRagblu0MzPBoaGhoaGhqbHvqFR0NDQ0NDQ2PT47aS1kAPUsdnsynq0+CFQm4eppjSrvY+066BdZJyN1ReYgK7tq1TvG9tV6SRMzuU4lE5UL3WTiir0SxukLtIcaeZ16E3v1LINUVE2nqQip4WaPrfLaPgWqQT2j2+mesuxCFdSRBKPGWOc2bW3J/g80qqwfwCn5nM5Lvxi2QTtSuF7ZrSN1KKocLCXvpzJJmzSV4ahir2hCMhOU8dMe06pWhj+BCyxi47MlF4GBl1KwnQrrZ46FLrPLLBS36oz4NfYLxcK4oUoZyNtrD/7Ib+VLmgeV+fRk57Yh9y1cIFKM+sNApf1Tnoz8yd9H9/CvMzsUL2S1oWxbfCOsgc89vJyIhq5Zo9975q2oeXGReRQxIKpM6QVSHZtGe9G6p/KBVJa8CDjGHr4/PJBYxp1GXk6ZwGxm3Mhd+sdyEjrmcyr/1jSA9uH2tQ+sjwiChnHD5fgpQkIlKvZB1FXiKr05LDz5c8SNQ7A8q5ZdHoEtMJrNNtE/jElV7mdS4f6t8R7DPtYAE/v/gMfh1biGS0MEGff1tCh5UEJLe5OebWe5R1lN+E/6YO42utVuJifwCpK36+z7SfSiJ+P7DwA9M+m40ku2uEwqnzM0qmaCSSQ4lanNFBnH7mLHFaRKT6Ttp0qRG/ur+Yz3XXKcUJq4nBPTHIYeUp+O0FF3Hxob/i3sFPIkm/HIa05lXOWTrbjT8XxiClfa5VXZuhQa6V5533MjKxcx1JPtXCOYL9UTxnC3YSH6PGkG1ftSAZb29jPOMeRaLq6cJPpZF5SvDz8xtebKci39c1Io0NrnD2pYjIehfbH7aX8v3RNLanhPU9YNot+9gK0TfA2ZmHfMSRv3iY63z67ylaOHeeZ2XPYaS4Pa/Qn+FoCvPGK0e45Xkoivhe0AyPhoaGhoaGxqaHfuHR0NDQ0NDQ2PS4raSV7Kd4UZMNSinzIWhmdys76vtLoFkfWkIOqE+A7u7vgu7qskFj2r3sok/rgWa0GFDL1jgytnw5UJpJCoXYb4fu+9shhe8SkeQCKM7POpDEFp//nmmvFTzG/XI5S8szQ//dNdD0WQ9ATV5rINMgeytjkXCZ+wYq2IXuvQaVWe6j3f6CX0wmSOU0GRIvdFD4aWsSNPOVOqXQ2zH6cPgS9Kf/AAXNUvvcpv3n4Yzpg7Gc6eSvpz+95WQGHOhCeprNwBWvNSFpfeYBJMaTlxWdVERmbWTOlRUyD1feVgquxXG/y37knk+24TONAYpXzUfSpsIB6OiRY4yRYwF6OSmLdrem08+PVFJUc/4FznuRhyQkuHCZ9bXzHtajPZI1NdZKNtl6BVKULwi17qqBNl7qRfKdDiBj+LJYa7lbyd6KHEImirDiH2dtzN+VJLJ6Dl2Grj8TgSwqIhLtgB7PLyPLzuhHMhwwjpj2cAFFRPuzP2XaW/qRHuM6kc0ezkPGaLQ/bdqjDjIoi19HSimtQtJJMsgQeXsdKS2USAwjLhYomVbjJ/C75WzWb88kc+LNQNYomKEo22QRbc1NZu3M1zAWx5RikHW9ZN0kFDOfQZ8iKy/RnqK+Z0z7gS3KWXsiMuDHT7IUyXwpAZ/piyHWbBsiw9WTrhT8VLYSpHvZPjF5P9f0TpK9Z7Mhpxbk7DLt1ZQ+2jCLVJQTx1oOVU5sVwAp1d0Op9BVwPMrRileW7bCOIzMsdXi+iJredcg66Xcwjo9M8I106KJRasu7jsUSxyIsCnn673NNgpHOpJnXpQ6JiL1s7TJU8t1I7Zx3fJM5i9tmbVT5+b53W3FX+59iuLCc79F1vPCM8SLziWKAMdEIqstrdOHH7bj1x89zry+FzTDo6GhoaGhobHpoV94NDQ0NDQ0NDY9bitphU0juXQox7Ovv9ln2pZ8ZJyCJGj8Mds3TTu/Bzqq1AtV7lAK+40UILFEjEOJxYdfNO2UamjTrgUlC+oK1HVRMdTf/dEbM0HGa/lOX4lSVPH/glL7+l8joXxrK/crDSDviA0a3JiAsnPEIstNjfWZdvdWaNztXqWIWzTSS/0SbUho/8kFlH4enFrg/TbHgX2pDxp8tZIzS1w3/qdpOyIZryZFDpq3kxXyn2KRInrnob77i8iQ8J+vM21vOlkxIxegqLO24pY1/ey8dwfI8BMRuZrHXGVcZ+f+nQfJfnvRynk/OR1Vpt2YhywZzEfqWlwmK8QbhySw4y0kzZlyJI7mUfpZVckaSaqh6FnzTtZFqFClSH35Y0r7l8giGrmfn993Vimwl4/Pju9AJnAnMybDYX2mvZSErJSunGMztAVq3TfHd2MCyDM2J5JEUiRZGoVdtF9E5NIav5uKoLDluuOIaTuWkb12x/Hz8w5kLOsYn1nJYb2PTiOThAfx5d0zUOIdFqT3wiRk9XWl6ORnlHaGElmRZMs1KAX51srxqUqlQFvAoE15Hayd61HEv6J4xiXhIvMWKGY9XjYYi8Rp1k2qHwl0ZIL43Z6OVN2TwZzL/8fee8fHeZ13vs9B72XQ+wBEIUAC7EXsItWbJVlSLDt2HNspTpysk02cvXuTG29u9sYpdzc319ls7MhxHNlykSzZKpZIiaQoVrGBBEB0YNB7bzOYwbz7B+D3+yIr0UkESdbo+X4+/vjRcDDzvqe9Z36/85wzvjqzR1yMYTFpWGW9MX9tx0mu37XjvlE2wIw5hjV8ZobMsYc6GbPq13N2U2Qa3zXtJfMz2kM/3dCOdVeXwnlgr6WzmePHZG2IHKbvDx3EltrWznPDz9Avne2839/IGFdQQttsOkAm2vwCn5PA7cp0J+UWf4X3Z1QQp+fSDpYaWUbRdIA+XvUy2Z0iIkfuJosq7LzDJnyV7ztuMT5mz/L+Yjcb+fqjsB7DUrG3B4bIGmwMYwnC55qw1vqr2cD0UgJj+pYf0B/DuhjL3g5VeBRFURRFCXl0wqMoiqIoSshzU0vrtUJW/1d3Iy8tZbCqPCwGybWr0ZGN48jscEexat2Tw2dmOs56GRbk2ssupLyas9gB4YZsl75SR7ZIIZsY+WaxQC6kY5+IiKQ3Ixe6ppBBNx9lQ6/jRWzIJ+OOM3dmsDq8Bdg4PT6k3+hFPn8mnZXkYY4zPi46rLGyDMorMw0ZcOb8u5OlFeclA2mshIyUuKvYbH4LufvVXM4ee3jSbccVS7yeEoXkfHozdkrxC3xObCJy9e6t1M/0Es1vbIz63+pFQg8PsCFWWIVDBxYRbyrWWrIXG+RiPVJtSc49dtwex/0vLWDFTtSSoZDxW8i5aTG0+TmLNtzlQ/r//SEyFY6JY5O8NiT3Qod1u2Yk0o7ar9PWkqORdddd+4wdd1Rivbl82DUvP40t8fEjWAB3DmFD/NMQ5enagO0T5sEOyfRgsXSWkO2S2kU7s/Yge5/eyOsiIpFJjAVxbbSFvQfpC8/3YXu3O7K3fB232HGwC6k8LI0+21TsGIMiHBlYmZRjntCuXVHYfnVlXFvnUWyi+2XtiJzHUPFGYEFUDpN5EtWPhZh9xFF+jo1QK2uxENrOcZ+DFdh7SY2MnUWljKn+3die/c+R9Zhfhe0TN8/Yl+/Immy7c3VGbEkm7xsMMv75rj5kxwXz2CvXo6gH3y7GjqwB2pInj/47PkyGUW7RXXYck853RY1iFV32YsXMenkujL+C5SRfkTXBm8EYUmSxiaTJoG3OXGLTVAmSaTXs5rmZlk6bLWlhrHM9TPbS7GucO3jDz/i7pZqMvqVFbGX/Cb5rIp8M6188Tvm8fphnkYhIXCd1W+mnz09tJfv4WDeZruPJjIOls1zTuI8xoiwcC9e08Z6CQizps8ksr8ie47vu8LPUoOIx2uyxItrs26EKj6IoiqIoIY9OeBRFURRFCXluamntmCBLqasQC+DWXGTTum42HErvY7Oq+Bhkvaig245fLUWOS3vKkcGxHvl5exbZPuHFvL6whCybegxZcnMcFsN4Kp/fOPYbq+7Hugdp1jqGDJqRjXXhmUa+ns1G1g8mIPfXtiKzV3aQaZS9ntXjwxO/Z8eHX+Jvm5ORBCsOkEVzbhQJPQ0lc03pXkJ2jLuBdZdfhZQfvIo1tDEeSfHuHKy7V5uo56gprrt0GHurNxapOGEPlln7lWI7PjRJxkfiJqTZyK4eO/5hL8bBl2JXS61dc1gc3jvJcotIdWRJLGK/prSz4d4mQxurQ82VmFnaeVIysvPZBb6rKpuNKut7f9OOy5ppX6153MPUefrLrp3Yde+EyV7svVtzsIBON9Olk6afteOoa9gYS/uos4crycQcmaV8ehyZJkU5NMgxH7+Rgnn0x8VNZI6UTNLeF4doc6lz2GFDHUjXIiJJkfSLVh9/8/o/YAeml7IpmZzF9phJRO7PfZSxYK6X686rQ/reHEV5vdqBLZM8wHvikrGPhhPJvrRqKK+1ZCACq+FztzPmfecs9xCTgrXw8gjt+hPXGWs993Bvd3ipw+fP8J7CfM4r6ovAzt/WRn3W7sRiiu3H0kzM6rbj0WysYN/Maru5vovNHednWfYQ4SaLbPYK1kfWGHZnVRV9ZHo9Y21DLd8Rlsw40jvpOIupiz6YsxdbzXeNrMCpVNpw2AOOMxLXiMlSbOX8Liz13ACvWy42SFzw0neK12ExehuwodMdmz+G/QRbcGbRY8eHAvxtSRcb6F7Jo8yDjrPmtsUxPrT5GYuLO7AaRUS6crEVmxfftOP2fmyzxFvp2x+t57q/N0H9ucaYK0RYPGcbwni2pI5zjl6YjzbYPUG9JntZRtCwl7aSexFr9+1QhUdRFEVRlJBHJzyKoiiKooQ8N7W0ShIdK97LsT0a+5HXRs4ikXmPkC3limG1eUIDMpg3Fdk8rBS5urGG7J0NdcimnVOs4N6W8kk79k+yIWFtPFLe6xPImB/P//9X3c/cDWTd4SCr/DuiyPgIi8fquvdNjx239yH37rkDKbDZsUp+aR6ZORCBbNxyGJto8U2k67OvIad3CpkZmzYi764lUQFkS08kGWWbLiNZjsciO65Pplwvh2FjzX0MCfbVsUN2fKgZm6hilyMbq552cSCV+hmNupPvdWQChTnsvYcefdGO+3M+tep+bmv9Bp/Vx7Xm+dmN64V+JPuNxS/YcV357XZc/yRWgasAOTfTkJGzbRTr0h3/iB3fqMZmWewik6AiBjuh5zNrn3WX0kcGTncvcv3WVKxEXx5l2llAe68bxK65rZ6Nu9bnY8O9lki7PtGOjfMQyRWSdZDh42ILbX+sk789cPhpO/7eP2MR5lV5Vt1P8yJ1Xnw739d1nte9tV+046oCLNn0W9nosGwU+b55Gpn9yiDt8Z5IymKrH/m9/gBlYQ3zt9GDjGXeIrJM15Lw58m6enGP4/VCrjvpGPV8MI9+NPwYv1sTDBl4L51lo7eSQyfteLEVDzdrjLZ53nEW3GATZVG4lzHr4hWWORQ2snwgKmG1VZvrp98N+en/8XNk2AR38FkTR2lYnY2O7J/NtNUjjmTHkTpHBuXnuNaUxcftuCL9J3b8VBZ9Ye8Y7fxS7dr3zYx5rLcxi7YTXs5zoNWRfZeUTzlsdmxG+2I0WV2JUYxRbfFYOuGPYJdfP0kW1GwW2a0THZR/aiTj27DwPEyYwCK8cCsWk4iIdGL1RmU5+nkPz6mNz9IGf2Lx/izHdcf5H+P7kjmnMqaf50BR0qt2PBrHZoNxDusufpYymvujHxLfin34dqjCoyiKoihKyKMTHkVRFEVRQh5jWe/CpmiKoiiKoig/R6jCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEXoC0XxAAAgAElEQVRRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiKEvLohEdRFEVRlJBHJzyKoiiKooQ8OuFRFEVRFCXk0QmPoiiKoighj054FEVRFEUJeXTCoyiKoihKyKMTHkVRFEVRQh6d8CiKoiiK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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"NHk3CsHkrApa"},"source":["**Inline question 2**\n","\n","Describe what your visualized SVM weights look like, and offer a brief explanation for why they look they way that they do.\n","\n","$\\color{blue}{\\textit Your Answer:}$ The visualized SVM weights look like a group of quasi-random, non-heterogeneous, pixels. However, we can still identify certain objects, such as the car, the horse or the ship (which forms a bluish image, representing the sea). This is due to the optimization process, which attempts to form a “generalized image” that represents all the training samples of each class, by constantly updating the original weights. \n"]},{"cell_type":"markdown","metadata":{"id":"g1QbM8DfrApa"},"source":["---\n","# IMPORTANT\n","\n","This is the end of this question. Please do the following:\n","\n","1. Click `File -> Save` to make sure the latest checkpoint of this notebook is saved to your Drive.\n","2. Execute the cell below to download the modified `.py` files back to your drive."]},{"cell_type":"code","metadata":{"id":"8a5_dOrzrApa"},"source":["import os\n","\n","FOLDER_TO_SAVE = os.path.join('drive/My Drive/', FOLDERNAME)\n","FILES_TO_SAVE = ['cs231n/classifiers/linear_svm.py', 'cs231n/classifiers/linear_classifier.py']\n","\n","for files in FILES_TO_SAVE:\n"," with open(os.path.join(FOLDER_TO_SAVE, '/'.join(files.split('/')[1:])), 'w') as f:\n"," f.write(''.join(open(files).readlines()))"],"execution_count":null,"outputs":[]}]} ================================================ FILE: cs231n/assignment1/two_layer_net.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"two_layer_net.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gkXcwXmjZ3X0","executionInfo":{"status":"ok","timestamp":1611325527724,"user_tz":-60,"elapsed":25419,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"11e371ea-0ab8-40aa-8df3-bea8175f6e83"},"source":["from google.colab import drive\n","\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# 'cs231n' folder containing the '.py', 'classifiers' and 'datasets'\n","# folders.\n","# e.g. 'cs231n/assignments/assignment1/cs231n/'\n","FOLDERNAME = 'cs231n/assignments/assignment1/cs231n/'\n","\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","%cd drive/My\\ Drive\n","%cp -r $FOLDERNAME ../../\n","%cd ../../\n","%cd cs231n/datasets/\n","!bash get_datasets.sh\n","%cd ../../"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive\n","/content\n","/content/cs231n/datasets\n","--2021-01-22 14:25:20-- http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n","Resolving www.cs.toronto.edu (www.cs.toronto.edu)... 128.100.3.30\n","Connecting to www.cs.toronto.edu (www.cs.toronto.edu)|128.100.3.30|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 170498071 (163M) [application/x-gzip]\n","Saving to: ‘cifar-10-python.tar.gz’\n","\n","cifar-10-python.tar 100%[===================>] 162.60M 94.7MB/s in 1.7s \n","\n","2021-01-22 14:25:22 (94.7 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]\n","\n","cifar-10-batches-py/\n","cifar-10-batches-py/data_batch_4\n","cifar-10-batches-py/readme.html\n","cifar-10-batches-py/test_batch\n","cifar-10-batches-py/data_batch_3\n","cifar-10-batches-py/batches.meta\n","cifar-10-batches-py/data_batch_2\n","cifar-10-batches-py/data_batch_5\n","cifar-10-batches-py/data_batch_1\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"NcS6as27Z3X4"},"source":["# Implementing a Neural Network\n","In this exercise we will develop a neural network with fully-connected layers to perform classification, and test it out on the CIFAR-10 dataset."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"nqMKao9MZ3X5"},"source":["# A bit of setup\n","\n","import numpy as np\n","import matplotlib.pyplot as plt\n","\n","from cs231n.classifiers.neural_net import TwoLayerNet\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"5yx-wfAHZ3X6"},"source":["We will use the class `TwoLayerNet` in the file `cs231n/classifiers/neural_net.py` to represent instances of our network. The network parameters are stored in the instance variable `self.params` where keys are string parameter names and values are numpy arrays. Below, we initialize toy data and a toy model that we will use to develop your implementation."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"G4QhdBfjZ3X6"},"source":["# Create a small net and some toy data to check your implementations.\n","# Note that we set the random seed for repeatable experiments.\n","\n","input_size = 4\n","hidden_size = 10\n","num_classes = 3\n","num_inputs = 5\n","\n","def init_toy_model():\n"," np.random.seed(0)\n"," return TwoLayerNet(input_size, hidden_size, num_classes, std=1e-1)\n","\n","def init_toy_data():\n"," np.random.seed(1)\n"," X = 10 * np.random.randn(num_inputs, input_size)\n"," y = np.array([0, 1, 2, 2, 1])\n"," return X, y\n","\n","net = init_toy_model()\n","X, y = init_toy_data()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"alqQ0eurZ3X7"},"source":["# Forward pass: compute scores\n","Open the file `cs231n/classifiers/neural_net.py` and look at the method `TwoLayerNet.loss`. This function is very similar to the loss functions you have written for the SVM and Softmax exercises: It takes the data and weights and computes the class scores, the loss, and the gradients on the parameters. \n","\n","Implement the first part of the forward pass which uses the weights and biases to compute the scores for all inputs."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pC3c2k7oZ3X7","executionInfo":{"status":"ok","timestamp":1611325550881,"user_tz":-60,"elapsed":1314,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"992adbe9-134e-4648-b8ac-ddd1d4d9e10c"},"source":["scores = net.loss(X)\n","print('Your scores:')\n","print(scores)\n","print()\n","print('correct scores:')\n","correct_scores = np.asarray([\n"," [-0.81233741, -1.27654624, -0.70335995],\n"," [-0.17129677, -1.18803311, -0.47310444],\n"," [-0.51590475, -1.01354314, -0.8504215 ],\n"," [-0.15419291, -0.48629638, -0.52901952],\n"," [-0.00618733, -0.12435261, -0.15226949]])\n","print(correct_scores)\n","print()\n","\n","# The difference should be very small. We get < 1e-7\n","print('Difference between your scores and correct scores:')\n","print(np.sum(np.abs(scores - correct_scores)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Your scores:\n","[[-0.81233741 -1.27654624 -0.70335995]\n"," [-0.17129677 -1.18803311 -0.47310444]\n"," [-0.51590475 -1.01354314 -0.8504215 ]\n"," [-0.15419291 -0.48629638 -0.52901952]\n"," [-0.00618733 -0.12435261 -0.15226949]]\n","\n","correct scores:\n","[[-0.81233741 -1.27654624 -0.70335995]\n"," [-0.17129677 -1.18803311 -0.47310444]\n"," [-0.51590475 -1.01354314 -0.8504215 ]\n"," [-0.15419291 -0.48629638 -0.52901952]\n"," [-0.00618733 -0.12435261 -0.15226949]]\n","\n","Difference between your scores and correct scores:\n","3.6802720745909845e-08\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"-MI-cibjZ3X8"},"source":["# Forward pass: compute loss\n","In the same function, implement the second part that computes the data and regularization loss."]},{"cell_type":"code","metadata":{"id":"QBdUwhy8Z3X8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325555772,"user_tz":-60,"elapsed":1066,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"25162b63-8088-42bd-81e4-0a4ffa9478d0"},"source":["loss, _ = net.loss(X, y, reg=0.05)\n","correct_loss = 1.30378789133\n","\n","# should be very small, we get < 1e-12\n","print('Difference between your loss and correct loss:')\n","print(np.sum(np.abs(loss - correct_loss)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Difference between your loss and correct loss:\n","1.7985612998927536e-13\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"suSqxN43Z3X8"},"source":["# Backward pass\n","Implement the rest of the function. This will compute the gradient of the loss with respect to the variables `W1`, `b1`, `W2`, and `b2`. Now that you (hopefully!) have a correctly implemented forward pass, you can debug your backward pass using a numeric gradient check:"]},{"cell_type":"code","metadata":{"id":"8aYI0X4pZ3X9","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325560049,"user_tz":-60,"elapsed":965,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"ad3b5b0a-1340-432a-cc77-7dfa6e7e0a1a"},"source":["from cs231n.gradient_check import eval_numerical_gradient\n","\n","# Use numeric gradient checking to check your implementation of the backward pass.\n","# If your implementation is correct, the difference between the numeric and\n","# analytic gradients should be less than 1e-8 for each of W1, W2, b1, and b2.\n","\n","loss, grads = net.loss(X, y, reg=0.05)\n","\n","# these should all be less than 1e-8 or so\n","for param_name in grads:\n"," f = lambda W: net.loss(X, y, reg=0.05)[0]\n"," param_grad_num = eval_numerical_gradient(f, net.params[param_name], verbose=False)\n"," print('%s max relative error: %e' % (param_name, rel_error(param_grad_num, grads[param_name])))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["W2 max relative error: 3.440708e-09\n","b2 max relative error: 4.447646e-11\n","W1 max relative error: 3.561318e-09\n","b1 max relative error: 2.738421e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"wCrkSwt8Z3X9"},"source":["# Train the network\n","To train the network we will use stochastic gradient descent (SGD), similar to the SVM and Softmax classifiers. Look at the function `TwoLayerNet.train` and fill in the missing sections to implement the training procedure. This should be very similar to the training procedure you used for the SVM and Softmax classifiers. You will also have to implement `TwoLayerNet.predict`, as the training process periodically performs prediction to keep track of accuracy over time while the network trains.\n","\n","Once you have implemented the method, run the code below to train a two-layer network on toy data. You should achieve a training loss less than 0.02."]},{"cell_type":"code","metadata":{"id":"final_training_loss","colab":{"base_uri":"https://localhost:8080/","height":530},"executionInfo":{"status":"ok","timestamp":1611325567271,"user_tz":-60,"elapsed":2708,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9eddb164-e8d7-49f7-b097-2bb40293ed7d"},"source":["net = init_toy_model()\n","stats = net.train(X, y, X, y,\n"," learning_rate=1e-1, reg=5e-6,\n"," num_iters=100, verbose=False)\n","\n","print('Final training loss: ', stats['loss_history'][-1])\n","\n","# plot the loss history\n","plt.plot(stats['loss_history'])\n","plt.xlabel('iteration')\n","plt.ylabel('training loss')\n","plt.title('Training Loss history')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Final training loss: 0.017149607938732048\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"gy6SHA-8Z3X-"},"source":["# Load the data\n","Now that you have implemented a two-layer network that passes gradient checks and works on toy data, it's time to load up our favorite CIFAR-10 data so we can use it to train a classifier on a real dataset."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"RrYgFDy6Z3X-","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325583954,"user_tz":-60,"elapsed":3025,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5feec94c-9d85-40d8-81c0-4d78944cfc9b"},"source":["from cs231n.data_utils import load_CIFAR10\n","\n","def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=1000):\n"," \"\"\"\n"," Load the CIFAR-10 dataset from disk and perform preprocessing to prepare\n"," it for the two-layer neural net classifier. These are the same steps as\n"," we used for the SVM, but condensed to a single function. \n"," \"\"\"\n"," # Load the raw CIFAR-10 data\n"," cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n"," \n"," # Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n"," try:\n"," del X_train, y_train\n"," del X_test, y_test\n"," print('Clear previously loaded data.')\n"," except:\n"," pass\n","\n"," X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n"," \n"," # Subsample the data\n"," mask = list(range(num_training, num_training + num_validation))\n"," X_val = X_train[mask]\n"," y_val = y_train[mask]\n"," mask = list(range(num_training))\n"," X_train = X_train[mask]\n"," y_train = y_train[mask]\n"," mask = list(range(num_test))\n"," X_test = X_test[mask]\n"," y_test = y_test[mask]\n","\n"," # Normalize the data: subtract the mean image\n"," mean_image = np.mean(X_train, axis=0)\n"," X_train -= mean_image\n"," X_val -= mean_image\n"," X_test -= mean_image\n","\n"," # Reshape data to rows\n"," X_train = X_train.reshape(num_training, -1)\n"," X_val = X_val.reshape(num_validation, -1)\n"," X_test = X_test.reshape(num_test, -1)\n","\n"," return X_train, y_train, X_val, y_val, X_test, y_test\n","\n","\n","# Invoke the above function to get our data.\n","X_train, y_train, X_val, y_val, X_test, y_test = get_CIFAR10_data()\n","print('Train data shape: ', X_train.shape)\n","print('Train labels shape: ', y_train.shape)\n","print('Validation data shape: ', X_val.shape)\n","print('Validation labels shape: ', y_val.shape)\n","print('Test data shape: ', X_test.shape)\n","print('Test labels shape: ', y_test.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Train data shape: (49000, 3072)\n","Train labels shape: (49000,)\n","Validation data shape: (1000, 3072)\n","Validation labels shape: (1000,)\n","Test data shape: (1000, 3072)\n","Test labels shape: (1000,)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"QtoT8pEmZ3YB"},"source":["# Train a network\n","To train our network we will use SGD. In addition, we will adjust the learning rate with an exponential learning rate schedule as optimization proceeds; after each epoch, we will reduce the learning rate by multiplying it by a decay rate."]},{"cell_type":"code","metadata":{"tags":["code"],"id":"uhoWtkfwZ3YB","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325604525,"user_tz":-60,"elapsed":12228,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"25908672-478e-4438-8322-90685046fa39"},"source":["input_size = 32 * 32 * 3\n","hidden_size = 50\n","num_classes = 10\n","net = TwoLayerNet(input_size, hidden_size, num_classes)\n","\n","# Train the network\n","stats = net.train(X_train, y_train, X_val, y_val,\n"," num_iters=1000, batch_size=200,\n"," learning_rate=1e-4, learning_rate_decay=0.95,\n"," reg=0.25, verbose=True)\n","\n","# Predict on the validation set\n","val_acc = (net.predict(X_val) == y_val).mean()\n","print('Validation accuracy: ', val_acc)\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["iteration 0 / 1000: loss 2.302954\n","iteration 100 / 1000: loss 2.302550\n","iteration 200 / 1000: loss 2.297648\n","iteration 300 / 1000: loss 2.259602\n","iteration 400 / 1000: loss 2.204170\n","iteration 500 / 1000: loss 2.118565\n","iteration 600 / 1000: loss 2.051535\n","iteration 700 / 1000: loss 1.988466\n","iteration 800 / 1000: loss 2.006591\n","iteration 900 / 1000: loss 1.951473\n","Validation accuracy: 0.287\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"53zpvtfkZ3YC"},"source":["# Debug the training\n","With the default parameters we provided above, you should get a validation accuracy of about 0.29 on the validation set. This isn't very good.\n","\n","One strategy for getting insight into what's wrong is to plot the loss function and the accuracies on the training and validation sets during optimization.\n","\n","Another strategy is to visualize the weights that were learned in the first layer of the network. In most neural networks trained on visual data, the first layer weights typically show some visible structure when visualized."]},{"cell_type":"code","metadata":{"id":"MF3sJHJEZ3YC","colab":{"base_uri":"https://localhost:8080/","height":513},"executionInfo":{"status":"ok","timestamp":1611325610988,"user_tz":-60,"elapsed":1112,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"17b3475d-32bc-4fdf-b7b9-23f974fa6fd2"},"source":["# Plot the loss function and train / validation accuracies\n","plt.subplot(2, 1, 1)\n","plt.plot(stats['loss_history'])\n","plt.title('Loss history')\n","plt.xlabel('Iteration')\n","plt.ylabel('Loss')\n","\n","plt.subplot(2, 1, 2)\n","plt.plot(stats['train_acc_history'], label='train')\n","plt.plot(stats['val_acc_history'], label='val')\n","plt.title('Classification accuracy history')\n","plt.xlabel('Epoch')\n","plt.ylabel('Classification accuracy')\n","plt.legend()\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"uyIV2GoxZ3YD","colab":{"base_uri":"https://localhost:8080/","height":465},"executionInfo":{"status":"ok","timestamp":1611325615378,"user_tz":-60,"elapsed":1158,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2123be79-1c55-4438-9cb0-671b1331b4c7"},"source":["from cs231n.vis_utils import visualize_grid\n","\n","# Visualize the weights of the network\n","\n","def show_net_weights(net):\n"," W1 = net.params['W1']\n"," W1 = W1.reshape(32, 32, 3, -1).transpose(3, 0, 1, 2)\n"," plt.imshow(visualize_grid(W1, padding=3).astype('uint8'))\n"," plt.gca().axis('off')\n"," plt.show()\n","\n","show_net_weights(net)"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"GtaS0NDiZ3YD"},"source":["# Tune your hyperparameters\n","\n","**What's wrong?**. Looking at the visualizations above, we see that the loss is decreasing more or less linearly, which seems to suggest that the learning rate may be too low. Moreover, there is no gap between the training and validation accuracy, suggesting that the model we used has low capacity, and that we should increase its size. On the other hand, with a very large model we would expect to see more overfitting, which would manifest itself as a very large gap between the training and validation accuracy.\n","\n","**Tuning**. Tuning the hyperparameters and developing intuition for how they affect the final performance is a large part of using Neural Networks, so we want you to get a lot of practice. Below, you should experiment with different values of the various hyperparameters, including hidden layer size, learning rate, numer of training epochs, and regularization strength. You might also consider tuning the learning rate decay, but you should be able to get good performance using the default value.\n","\n","**Approximate results**. You should be aim to achieve a classification accuracy of greater than 48% on the validation set. Our best network gets over 52% on the validation set.\n","\n","**Experiment**: You goal in this exercise is to get as good of a result on CIFAR-10 as you can (52% could serve as a reference), with a fully-connected Neural Network. Feel free implement your own techniques (e.g. PCA to reduce dimensionality, or adding dropout, or adding features to the solver, etc.)."]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"DZsXAspcZ3YE"},"source":["**Explain your hyperparameter tuning process below.**\n","\n","$\\color{blue}{\\textit Your Answer:}$\n","\n","My hyperparameters tuning process is quite simple, it follows the following process:\n","1. Define a values interval for each hyperparameter.\n","2. Nest loops over hyperparameters values.\n","3. Analyze the accuracies/losses for each combination.\n","4. Refine values interval for each hyperparameter.\n","5. go to (2).\n","\n","The hyperparameters final refined values intervals are shown (in comments) in the cell below."]},{"cell_type":"code","metadata":{"tags":["code"],"id":"FmqnznMfZ3YE","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325663734,"user_tz":-60,"elapsed":34947,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"1dde9342-b6ed-4522-e773-70f99525c3f1"},"source":["best_net = None # store the best model into this \n","\n","#################################################################################\n","# TODO: Tune hyperparameters using the validation set. Store your best trained #\n","# model in best_net. #\n","# #\n","# To help debug your network, it may help to use visualizations similar to the #\n","# ones we used above; these visualizations will have significant qualitative #\n","# differences from the ones we saw above for the poorly tuned network. #\n","# #\n","# Tweaking hyperparameters by hand can be fun, but you might find it useful to #\n","# write code to sweep through possible combinations of hyperparameters #\n","# automatically like we did on the previous exercises. #\n","#################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","best_val_acc = 0.0\n","\n","input_size = 32 * 32 * 3\n","num_classes = 10\n","\n","hidden_size = 75\n","reg = 0.2\n","learning_rate = 1e-3\n","num_iters = 2100\n","learning_rate_decay = 0.95\n","batch_size = 200\n","# for hidden_size in range(50, 200, 25).\n","# for learning_rate in [1e-6, 1e-5, 1e-4, 1e-3].\n","# for reg in [0.1, 0.2, 0.3, 0.4, 0.5].\n","# for num_iters in [1000, 1500, 2000].\n","# ----------\n","# for learning_rate in [1e-3, 8.5e-2, 5e-2, 2.5e-2, 1e-2].\n","# for num_iters in range(2000, 2600, 100).\n","# ----------\n","# for num_iters in range(2000, 2600, 100).\n","# ----------\n","# for learning_rate_decay in np.arange(1.0, 0.55, -0.05).\n","# ----------\n","# for batch_size in range(100, 1050, 100).\n","\n","net = TwoLayerNet(input_size, hidden_size, num_classes)\n","\n","stats = net.train(X_train, y_train, X_val, y_val,\n"," num_iters=num_iters, batch_size=batch_size,\n"," learning_rate=learning_rate, learning_rate_decay=learning_rate_decay,\n"," reg=reg, verbose=True)\n","\n","best_net = net\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["iteration 0 / 2100: loss 2.303018\n","iteration 100 / 2100: loss 1.919498\n","iteration 200 / 2100: loss 1.852490\n","iteration 300 / 2100: loss 1.689437\n","iteration 400 / 2100: loss 1.660773\n","iteration 500 / 2100: loss 1.597493\n","iteration 600 / 2100: loss 1.506832\n","iteration 700 / 2100: loss 1.478608\n","iteration 800 / 2100: loss 1.492058\n","iteration 900 / 2100: loss 1.518190\n","iteration 1000 / 2100: loss 1.430617\n","iteration 1100 / 2100: loss 1.403876\n","iteration 1200 / 2100: loss 1.570900\n","iteration 1300 / 2100: loss 1.399899\n","iteration 1400 / 2100: loss 1.442258\n","iteration 1500 / 2100: loss 1.473165\n","iteration 1600 / 2100: loss 1.319686\n","iteration 1700 / 2100: loss 1.308916\n","iteration 1800 / 2100: loss 1.426552\n","iteration 1900 / 2100: loss 1.546598\n","iteration 2000 / 2100: loss 1.468294\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"val_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325668238,"user_tz":-60,"elapsed":916,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5acacdec-74c7-477b-8817-b087267ab44d"},"source":["# Print your validation accuracy: this should be above 48%\n","val_acc = (best_net.predict(X_val) == y_val).mean()\n","print('Validation accuracy: ', val_acc)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Validation accuracy: 0.5\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"JXpaleldZ3YF","colab":{"base_uri":"https://localhost:8080/","height":465},"executionInfo":{"status":"ok","timestamp":1611325673968,"user_tz":-60,"elapsed":1084,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2a1c5b1f-dad5-4526-9961-d37498e08bf6"},"source":["# Visualize the weights of the best network\n","show_net_weights(best_net)"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAcEAAAHBCAYAAAARuwDoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9SaylWbaY9f19d/pzbn9vNBmRkZnV2fXK3bMBGyGBxIQZTGAGYoAYwRQGTMwALIQQQkIgYTG0EBMmSBYDLPmBXTxXVVZWZkZGZETc/p6++fuOwVoRfvXivpx6UHeN7tU55//3avbaq99G27Y8wAM8wAM8wAP8IYL5L3oBD/AAD/AAD/AA/6Lg4RB8gAd4gAd4gD9YeDgEH+ABHuABHuAPFh4OwQd4gAd4gAf4g4WHQ/ABHuABHuAB/mDh4RB8gAd4gAd4gD9YsH/ow3/4J/9B2wvGALx5teLrr+4AyIqY4eCY7Vr+XyxXfP753wBgXVvk+YymI60XHVz2vK58lixo8zVmXsvvEvjjP/5XGBx4AHzz7pb/77cvAQjSnE/2XToHpwAcPZtwNHYAuPj6hsX1BaMzF4BHJ11qPwXgx8//59/D4X/7r/4PRnYBgJsalHmON+gAYA08slbWEmcFo1GH+XwGQLkxePbpUwD8pubV2xmOI3g0yZzaKRn0QgC224TtRmjRG4Xs71usV1sAjMIituR9/ePH5KVPtdsI8dMFy20CwCxOOD0a8a//R//OR3z4u//pX+Xnf/xX2LSWrHVTUhfCOss1ODw6wzGFNi/PL2mMAIB8MSNNEr69vAHg+eNjAnsBwNC1iU2PsDDku1VM6AZsc6GVH+3h+2IjFVWK7VgUym/XDvEMeV+ZbtmsG8ziGoBJp+Tf/i9+9Xvr/x//3r8HwPHBY+6uLgBIqoqSlmpb67c8hoOJ0MV0yGgJfR+Ay8sbXr96A8DRXoejfZ+OLeuOYxdv1MV2ZT35bEFcVfJZaXJ0EBF5Il/T1YqdkBs/LogmARjCi1Xl4lXCs4uL3/Jf/i8vfw+H//g//AcALBfXLGZTuiPhvRt5OI7wpTuekGcLVguRoWwX07GFhq3jYdqQpWsAqqYkCnrEhtLbi1hl8ned11RZiVXKb/c6HWhLABpcVkmBE8j+Ch0HQ9Al3aaYOJwd7QHw3/79/+T3cPjlf/f/cHn+StaTxdi+PDNwPLZVgduN5Jl2y+X598KLNuFk/wmTg75wyeryy69eA9A/OcF2PJxKiGqaAZvZkuv5LQCnjw9x+sKnqnbIC5tkJe/Mipq8FhyqfIttgdcIv4ui5Od/5QsAfv7v/+3fw+G/+e//LSb9E6FF7bLOGpZzke/dDlbXc+GLbfP49OfcrTJZWxjxnlBFvmDc77HKZN27Mod1zW4na3vy2QvaMgbgZnZLnjWEiK7pRC2Y8pzBvsfJwYjlpbzzenrNYCJyMejaLONb/vP/7P/iz8P//r/+A/I4Z7qQ3wWhQVYILRrbojsYYnnCi83djM1WdJsf2NRGzXqRCy9Cl97QI3REvnfJjjhuhL51iQO4nqybtsFy5O9u4IMXUhby3SbLcVRHtkVFUdWoauP5p33+9r/x7/7e+v/ef/0/AHB1MYVaZN90ILBd5juhm1WnGLn83Z2MWSxu8CPRg6NOQBjIfj0/v6LT3cOLVGelGzqWTai64Hazo0p3srY2Y5PV9D05k6hqcuVpUrd0ooC17j3DtCASJNJtw9//n/6u8REjFH7wELy5cZm58hKj/2PapyKk3qYmCsc0lRB1dr7l4vUUgONnP2N/eMxVKso2NRKC0REAcWuwvYoZ+ILEKOizSzsk17qYYsShJYde/6Ck60K5EYa3KVx8J3/fXSzpBWOMjTDuq/VrusODe3Ewm5gqEUVrNQ3z+TWeI5vocrrB8AWHujF4t1oCKoxVzOJbUfoDw2FZ1Rz6x4J/N+Hd7Dv+5KUo0EVmsE7lHZOhwxfVAVTCuHxT0PdFKW0Cl/UmptZ1t8mGPJWNt0pLiqa4F4dN7PLr377FMc/k/cGQ6Ure/fLdG8b7W8Z9Wdvru5TWE+HulT5tYfH6SnizKjZ0LHlfG6d0+jaHZ58In3bnnH/zlrtKlIbr7TjtC5863QLDqklWQn/fyOkORgAYqzXJJqPJhN/rvY9lrT8U/pu9CT4i7GVaEzQ2eSDrKQ2XYiCKdrHYsFrveBocApBh4oxEVMOjLmbHIVc+Gc6A/uEBZiv0zvKQ/Z7IUFFvccsdZS3KbtDtUzeCn4GL6/nUjmzGiel82FxBswZ+/xAscxFSq7kldBb4Vk94kTsktRoEpUObJhi5KK2wY+C5gm+n71DWFcPJAADb91jnBc1GeOX0TPb6smk3i4x5HdPV/33XACdSvgwwdylGIPSwa4v1YgVAzIaO7VKU98vRN29/x931OQCRbcFKDtnwpMPrdc6JL2tzLYcLNQ6tMsW1tuRLUdh5avL97K18r51jVS1OV56TNTbzVUy+ExnY7Ib4jhpZ6zmr1ZKOI4owz1qWhciwWTT4lothCE/b2KD/9v4gVWo+YlsMBYd+l6xZ43blEBh6LnUhPNzM18w2Db63D0C3d8pGdZLj9wn2J6xmwtNqvsDyI/YjkWmaDmYrBtHnR4fskoJeX/TEwLeYb+TQffrijDje0YTC/8ePxxyoDLfmBsMMgY8PwSQzWG52JMqmFIugKzjd7LakjUffVsfBTolDPWhch8YocYeihwcdl8nhHqYlvCpuPdam7NHtaovR2IxCwT8IavLdUvhkNYyGIXX2nm9z2kpoXxY74jQh0IPVrL2PmWAID8cTn7qR8yHPS3IMvIHQIrB7bG6uhBZlzqAzxrDkHcliTaPyGxoN5WLG7kYOTNyS0gtp1LC0q5bA1486EeZyQ2jJntkmGVFX94jjYhombS08LCqoI6Fpsb79GIc/Aw/h0Ad4gAd4gAf4g4Uf9AQt64B1Lpa6NXRpO2JlFcU16xbsnljq4UnyIQRX2xZlbtLeiZmTNTZrdX2r3KX09hk++wyA1Szn5bdTvnn5OwAOeg6+KxZX37SZfPopsbrU358v2Wzk7/I8ZdLZYqgXEZMxmG7uxeHVq5f0XDnrh5ZJ3u4wEWvt8m7N1Vo8CCtyaY2CQq1429mRxvK+nmcTnY6oTtU6iXfMrTsuKnG9V+6QuXpYX1/E3LglPUu8jx4hpGI5e6s78rLmSC3uZLGiRjwTxw5J1tf34nBVw/rtmsOxeFThaICbCi/GBxFRNGThiLmUez7DnnzWNRxKs+EkFItoff2OVa3hEb+lNU8xYgk7LMuSWzNnrvFCv+1+sNr7ew5JXXG7uwRgFJpEpvDbYojlgF+Kxb9Ta/PPwvVWLLd1uyUphBdl0cdvXSxfZCNNC7YL+SzZWVQ4mBpGdwcZQx1sVDUtBT69jvCwXBu8vUs52xfPzBobNIZ4TcvzJWmcEGio3HBa6kpEPq9NrGpCGMm6bWpurt/JO+6xfnNHrO3Gagk6JobyNzV9GrNVHDJSwB8K3YyeCRpyq+0K2+xSGkIL2wzwXIfSlfenVUmtTnRBiW2bdDuCR38wIDffT3byMG0PX+lv1Ak7DbHe3N0y8UZ0g/sjP+fbt2x24tHVnocZiDz3vAOsjsdFJfI+9EdsbKFTZNksqzWpL/9nxRb3WEODw4zN7YZCv7suTTgc8nTvmdCx9Yhz2V/20KJKK97cSji2E/oUqluOx/sEwz7JKtHnWown7r04+MExaay88GyyeswulX2YriuqSuSArknaOLityJBtR8Qb+V4bulSrlMuZ0O1ulXN6cEDPkX15eTtnfS0h3x8/OaS1axz16I3xAZiy7pezirdXazyV/dPBkLqV7zVtQ6G4/3m4SXI225RdLDrSDlwmPfndcNKlcRxi3acLw6TxNALnOTSFSa2hy00NXlHQNCJTbRBRZ0qnrk1b2exq1ZGLEqOQv0f9Pm1pUibCb6eFxhCZX9Y2eeXSov9nzUfrP7+WlIbvdDBEhNjMlkzzHbYtvxv3I9AoQIGDbdV01LtLLTBb8SD7vQHJdkNeyB71rArHbLFKiW60RclyK+uMmg5WJ6JpRE9cXN9hbIUWTtSnH/VwIw2pZy6+euhRP7qXD+/hBw/BL798Q6oEZnUFlQhUmxoYfoGXa2za7uHbqoQKiyZP2LM1tBGG+JoDjFMHsxsQa/x7M7/hu+9ek2mMexOH1K0gn7b7vPrNS65mSoz+kIODkX625OXrJb7IDRMPlsOPmQXwj375az49k5BAv2PShA7LbyTUNVu15J6QYHm9w7Ydwn0JXT55/JTkVr53nS1okxXGRpjvtTZO0GH4XNbjuSF3NxJm8syYdbIgUya/TBbMLgWHzc0NB+NTPjv9FIAynhJpfsGOemSLxb04lInDdL2jKpQ27pSsFWHLSig2l0Q9CZU+/nSPxbXQ8930GqffMFFh2D8643z2nTwja1kypzJFwDqHp9TBiv5YDtDQaDk6FoGqyw3ZrqSx5Tmm5bBeCE+31zX9bg+3J/nTbv8J8PXvrT8w3z/HwtAcYJbn5H5IZIqA1lX8weBq2pi2zliZohSdMMXaibAn2yWHhy8IA5HF1d0Ns3SHpXnX0WRMvhZNML2dM50vGJyIoPSDiOVGwlxR6xB4HmUrtJp0umzXsrba+lgBN7ZsYLdvE9QhtPKdxihobZE9a+ASWQOaRhVPHRNrmJatyWhs4BiyTxwnwDPBUUNjVu5gJ/vCamKCKMTU51heSlNqmC0a0MbXaPoQy2zYJWpINQFBt0Mw2v9o/ULjgsoWeSvdFhV93l78msRyMRt5R226WIdCXyctCI+7FLkYmZVhUBtCs8pt2f/JGWM16hZpgTM8wHYFxzzO2N29D83uwE2IuvJS36sIVCnuDUIs08Ybaci3qMiN+43azdJkq0qxnu5wgzE4miNyC/KN7CGjhiTNcPsa/l7fkmk41LIMyqqHpzlvO2ix+wG7XA7Jy/lrPA254daYdkGM5givz7mZCU87oyNqZ8J8pWHWusCp9BAY9qlJ7sXBcAJqz6HWVIhpmaSJGI9B0MezGyxH6HR6HLFJBQe7gV2d0FWnwjZN4rLCVT4GtonbaGi0KcjzHflWZSOp8F3B6Xa6IIgysq3g4VYNvobbN9uWQWeMpTn21vh4L8RrWat72KfR8Os0XnK7WTDqajgychh3xEmqLYP19QWlhm373QjTE1lfZDGWb0GlOUGrxHR8Ck0nlW3xwQCN7JbJsIf6QgT9HoGvBysxrV2RFCpvbUWL4LR7bxn8BfAQDn2AB3iAB3iAP1j4QU/Qq0IGrpymtttn08qZualSjJXJ0UiLI/wdoS0eVFqG1G6A29HCAacgnmtIpAjZG3WoE7HyIr/h+WDAwVOxQKO+xfZWrKdt1WDUJ7iFWFZ3t2s+/UKKPx6PAn71j36JE4sllbopm2l5Lw4vr645eixrq22L9cbklYZBaGquLsTKWJY5T5+dMerKO2LLYF3KZ6lZkCULhrngZOY56WLL0fMfKRU90juxiI4eHxJmJuuFhNZuljV36uHsHAOzWpO/k/CvXWWEjnrMyyks1/fi8Oj4x8SdLcFACnrMvT3SlRYsVTt2Wc30XJK/jn3DxVuxaOu2orPpMHQleTzs7FPHgkOyuOHJ0302C7XqDnJ6QcCuEat2L3T47NETALKNh1nOGGmG2m4jkpngdDW7pCq7mGOhsWtVH60/U+u043mstUjFNGpK02BtiGdm9wwiLTCJ1xWbXcp3b8VrrTYxQ1OsWLdqSHZbeh2tOiy3lJsZN5dKb8/C6QqOi+UU0+pit1pJa9fYvvxuu4oJzZasknfOL6bEc5FLN/zYNkw1TG5VCb7vYZiCU9vWdDsSUr5cr4iNhH0tfrFqF9MVT69OEjbzDGcgHpZl2kSBw0orJNN5Rb0TGTIMm45r0GihiF37GGulUwNWvCMK1KNubTz1ipuRg9Hv4zn9j9YPsEwSnp6JfDu+zfla5CSvK9zAZaWFKuv5DAKhQd4YuIXBUL3LoV3gFmK1Z1XBMlujBbAMjg6Z3e5IXdnvL04/p++LPFRZyd7kOXEqnsUqXzJ7KwUmcVvjWi0Lxb/ON9TX1r04tJXLyH2q71/RHU3YploZ3Gw5PBT+Wk6P3Tymfe+JGyajiXw2GU6oPIvpWnh6etKj19/gahXm00HKgaYUjk9ciqqGSNazW1q076txi5wg7NFE8o7zqyvcWovShgfUdngvDpskobJ7+CONrDk1m7ZQOq1x84a4kWK2IDIxtDI1aR2muwq6Go4OutiOT6MRubTOadRj9/KEjuUQHYtsemWNUco+cEKLyraYDCVNUm5ySpXDbtlS4jBbvC/u+tgTTBYii4NuRdwI7qZVcjYc0GrEJMkhVG8vzQtK0yTVVInfsRkPBfd0m1EaJm5HC4G2BU3oMdUQv+MFDI/Vo6QgLmpSDdW6B8d4ulfL5QVFa9DpCM3LtKTUylH3ntqePws/eAgeOgNcQ74y6p/wD38jZdPn313z/OkzGo03j7pjrjXMlcw3DDsWj549AiAoNnwzld81VcvZ+Bk2IrTXuzX9ic1pTwjnmVDsidIgekTWG2B15f/l/CXTlebvjIKzR2ckS20vOP8Oqx/ci8PA75HEIhjb1CU2wHCEcJYV0de2A99vefL8kGQjOYtX3yyISzlY+gcDgsGA4WMJOd69fc3F8hYjk4rUNBhgR/q3mRH2QuKtCFhS39Dbl8Pj5OQT7FVM+k7w2MRLzD1R2K5Zsd3O78Xh8npJb3+P4Z68w/DG3KWyzr1Bl1Mv4FevvxRaXC5xWzFcxr0TmniBHwgN7bqkXMpmK8qWR08OSUsxZB5/8oKjyZx/+qtfy+dk2BNRpuOuS2JZdE1tmVh5vNnK+xqjpjQKDK26NOl8tP4PpeCDQ4K+HBBROObdNMX+cJgkjA9F2F88HvK7r16xyGRzh6MIu9DDs0mguWG9ExoGUcMor9ktpRJtLxjTRKLAlrZJ2sYYGnJMGoNeT96/rGE0HpO2orR+dfE9Pa2Ic92PD/Ke5uQMs8byTCJfvrtZJowiWVvQ6bDMbSo1zhzXwi/l3b1xhyx3sUqRBWPgsa4q4lx+mxkhnif7YnE3o+562Fo2vkoLikaUkrmxGHZMbK3izWObw2ORtdXlAssqafz8o/UDRD0LdyzPdLwO+yNZW9xkdIcjzBs5FBnBaCT4Je+2XM2WtJ0XAFjdHm5PdELVbKinM1JL9xN9YmNHlohC+272mmwmeeQsWzMwx+xiwbc0PHJDeH+dbGjSFaWmScy6xig+5gFAkli4GpYf9I+5mMXMLyRNsHfQxdHYYOi2pH6LYajOcGpcbUc5fWRyfnmFlcv+Hg+OSHZ3xHN5jlskTDQHWGUVReXiaQVq0PPZ0zDu7WLBpowpDcEpjGy22i6yzErOHr24F4c4XvLo6XMsNV4s1/mQ6jjat7HqJauthq2bjFLD9DdpSy/qMBqLHuj1B4yDgGylbV0FtFo1fRTa5GVOo7rOrExSzblajottGXhqvDjDiOlUZGa8d0KyXlBqtXuRvW9h+ucw0srwXjcg1HCp15aYpsViJ/tpV5ikqi+atgSnxtPcXDDskPvyvZvrW2zH52Qse7+1Ky4XS7aqp0YHRzRrzZuvl9QsMbXGwelOSDeyD0rD57NPjqkWQrdVUVNl2qYX3G+MvIcfPATLPGa1lFO/dTx6tTxs5IZkm4yd9nIY1h6Xl5JIbq2KsnboT7+RF8QZ01jj5F2Lx2cT1ufibSTxhvXdJes38t3j/T12G2VaL2X44+e0thxgvUGfq5UQJtqLeLo/Ym3JZ8W2ZfL0/haJMsy4upWNiBPghhM2peYJmgVnWqTT2ffI6jsqS94RehsSLbBgdMyfvvuSd0tRRJ1yw9XVJZeah5oVLqYe7CdBjnt4guMIrXpWF0utGs8o6Lo95lpSvlzesryTA2J/3Kf07rd+veCMJurw5UzwdVLINckdOg5pvmWt8f3j0yOsRg5W3+yzrc7xtfViYruc+/K+dPqWl28HRGqR+VnI1dWUtJI1nH3ymFqV8HdxjN/rU2gif1HCbarlzllOZW4w1DNxk483TbIW/qfFgBT13ouc0Hepaz1YlwsKhE7ZfoTfGnT1YH1yOqFI1YO7uSUIDELNS02zFDO/YqT5s/1+H+dA+NIkQ/7fb77Bz4UXB51T5gtJKBQFzDcxXijPHfYGBOqx+tb2IxwO98UTyiuTJE3R1xGENpYWSoz8GoyWi63QpqaHrWZoUrY0tkOiOXZjuaHJa1ZLeWdOhamHsGFP8A0PXwtOkqbFfF9w0OsQVSl3d3LoO4ZHpW0WGCVtlpMu79/W23zLV2+EblE0oHciyuR6OeUq3WKqVd0PTHpjUW5u4dMut8y1UCHdQGnKPhjsFYQjh6KWZ97UU6zOAM8R+bu8eUeojkTeRHx3O6fQopY0v2GkvXCrdcoiW1Pq3us4DbVzv1HbbEvWGq3YFgGzRUGhhSlm28HW/lXTTun0cwItfKqNBN8RBXkbv+WuXjM4lc+OTw2285al9glmUcnOFk/MLV2S3GOnRVtrp89aex3XuyVxZdFTL6ZzcIqle2SdG/zs8Mm9OFS1x3IXSx0/0HENAktoGK8qQi8ldLR1ap2RvC9myxr6YYBtqiGbbIjzKdlWDsGm7ZLE8vf5rMQIPKyeHFh7gUml+G/jJY4TMbsUGfLDHnkle2Z1e0NtlLiNeG1V/nGELexaiseSQSh82pKx2zbYXTnMBq6H5QhObhAQtzG0wpudZVNUQvuVP6Q36OE9krYmf5EQZDZtLetxLIcmy3TdCXgBQ90XHbvGi0TWmtoidEPuUokulLsUQ/uMPTV8/yJ4yAk+wAM8wAM8wB8s/KAnuNd7TlBI2G13Pef5c5ni4DQBv3uzItGIxf5qwUpzFo9enLBev+GXvxHv62h8Sm2phxNlfP/2ElOnnYz7XagHrLUM9+V8yTYWK7NrZjjxhH6o3phVMUGek6UrrlKL4kqsnqA/pqnuP8+nicltLVbNX/rxJ5SNjeuoK/72FtrfAnDa9ripV9xMxVM6OD3AaXQizO01jmFivK9kdD3GEwfTFGslcmLcSqzTg7CLubll+pXkqDZXW/b3pbVhM9/QGZic7IvX2txeY+rkDyewmJj3u+1usMc6DVhvxHKrr78n19aKps0YdANGHckXetuSvVO1/nou5uRT0pXgf/HmK4xM+PLkuI9tpWymYuGXdcrlAhwNb6yzmN9cSHWsW8YYeOwdS2N94dv0tcoyMzPsYEj1PkfHx95srtZxVDsUmldeb3Oydczu9o28v5pTvZZndIdjwjqh1xU+jVybrJB1xbsd+25EJzL1fRuiIXSG4inN11Nm3wlPfeeAvcGYQ1fWdBiEaG8vt6uMMotJtWHYG41Ap+dskvQjHGxts7mZJZA1TBdSDTzsFvRdsWLz3ZTBqMdaWxuutxk9X0v2Oz7kFYv5neI4oBsFuBqqz+uUWHMmUX+P4dEER73dcnONb2uFayck8h0szVFmRclarX/HCLFqC7/rf7R+gNlyRutI7rZ/2GWRCQ/LqGa7WoAnnmG23VLdKs+8gE/+yjO2Wg2bZFMSzbH2Og3jcU2gdQNV2aGouhi6L/rDpyxuRN5u5wnbZczeQGT/brrjIpZw5OHgjGy3pncs4ffAqijb+F4cgtBjp1GPxdVbRnuf0TsR+ptNS6NTdmb5jk7gsrcvvH97cU2m1Z/YDobv8eiR7Le8mVOZG3p78tzT0zGW5s/mmyV50KN0tSK2WOOZ2jhPy2EvwAqF3l3Lx9P9M+z2OL+4v9o7Kw1efX/FYCT4FmRElrx7VSwJI/A6GmWKU+JCPM1Bb4xhO9TK+838HMOtsbTqsrVSIq2ENP2G1u99cHPKPMbW0GjPctk/OGAZyp5Zpy09rfCdr9Y0QUhSarWm/XFOcL0RHVlVO4zqfcKtxfQNtplObGl7xDp1xx9F3OYJnobNt2XAVqfVbIJj8CLeqRc+vdtimiH9sU71cm3sWtsncpNdGX+IJg0ocXTPZmnKqrlmcacefOuyN9B2Ff/+0Pp7+MFDsLE9jh6L4tvsFhS5IHGwd8S3l5BpEvjN3Yb1dxIOPe3V+Oz47DP5nWHazBJpLXhzPmd+d83ZnihsvweH7gCtBqYhw1mI0DaWxZsv/4S/+jf+JQA+f/ECU4tIfvmrL2mznLzSfqF1TV7fnwd5M0s4OpJQ1lW6wWptvL6GAIcdXr2RdX/7Zkbn0Od2rlMUkh5tR4XG2+Pmu1vGfyS/C4Iu7+IVw6G4993AJ7+THr+byxs6sUV8o/2GaUZkyfeKzpDS73Ck44vsF5/hd0T4WlLIS/jyy49wONzrsl7dkWrxS7qdEj4SZeK3LZEbsdVWh3yXENoiJM8ePWIdD/hKN/QV51xrWNE3K4rcZn0lStlLwRrsUWmO6s3lmr1AlKLbQGKZbG9FSU+vdsSmbPC65+D1HVpbi2b2Dz9a/0DptNte0xhalt4G9AcRnZ3m1qZgHclvvaBDU3vQiJIuViu2iYQ5ivUt3/7paz757CfybD/DbX1iHT83Xc6Yav5scObRCxrmiYRZu26Go+Xl7Txlk6SYuvmXq4Jai2+s1UcoMNaQyubcIMljBlqaPQm6GKp4Tc9j2Oni6gi70GpB8ycWQzZmjrknzzE6IWbHZi/Q0PUmZ7nSaTodj3VhEmlP4aB7gKlFWrtthdvkFFo0kzcVBqJAnSIj6I6IrPuNqWWS4BxqIVhUs060JcUxSIySV7+Ugq3+mcfzUNp47K2POQpY6Dgs03VYvR9Tlnh8V8R4WznoDibPqSyXlea207rk5q387bgdnE7DVml1lVhsNKx4dOQSDIdkuSirrt+yW38ckgawgwgv0xRCZGBR0NHc4vndNbv3/WV+xn53wQtroPxraDS8brs5Tqek9OT/5fSCsoypNG2w17XJc9mjTpVgOxGl7q/XN3d8cij1Dt3BgDQuqG3RPftHB2gLH9nOZjP9uGcWoC0zLLa4rbbEOB6RTi6qc4N8k9FoOsVzux/K/rN8S9uMSFOhzfz1K+yzAwaa0qjzhLOJpKjCzoC7qmauY8TiJsUP1FipAypaLPaXkqgAACAASURBVC0iSTZXVJre2D86YAUstJixsj8+IipNJ7WtTTAQHWEMwc5itjeCcx4XNIHwMytMFkWDdqSwWiwx1XDYtRYdv+X1SsOYeU3H6WFrDj4wK+7UiPe7EUNMegNtpTEayoX8zu9YhE5A39e8clsz0hTN27t39/LhPTyEQx/gAR7gAR7gDxZ+0BO8XcREWhV1ePAjtrZY6l3L5+c/n/C9WhnXt18THIrl9Ovp9/z0i89ptcR6sbyi7otl7jgNvT4cPJHvXt2t6HgWkYZ6DgYRK7WGf/Onl8SJze2dVkm1twwnspbT6Bi7b/An138CwOuv7zg4G96LQ2c/5PDJYwBMs6Aqamq1bqy9fX7+VErGZ7uE1jFwNCFu+mOGx+JtmEcD9mKHnXrVkemR70oiLZzZJgNcnVrxuNclcEKajTzn8eNj6lpwCtqGnz/eJ7+SUNrRyZjhk5/KWtqKq9ev7sVhU+d0gpLDE1ffd8z4RCog03LL1fyKzUos1ct3v8OT6Cv+fMzV3ZZQ5xCGh094cqgtIMWc/HZGquGOXrjPNKlptOow6Hs8evxHwtNf/5YZW8Y6peTLr75h1JG/50lOUlwy1JDYT5Sev79+sc7im3P8VqzPs7/8R5y9+IQ3v5Tv7LKMkUYI8Bx2y4S6Ek/h9d1MKlmA3njE0O3z0x9LCGy3eMef/vIbptdiHadri7ijHroDmzpll4hHdWoavF0JXwojx6gGdLVi7cifMLvWkFR2T3OtFnuEnQ5uvaXjCx5tkZAuxVK1QoMkDknVK+11Tsh08DW+zf7wCF/L3ZdFLIMh1AwdjnxqDbffxCXrNsHRgRON6TCLZW0HY488azC0ktJqW1z10pyoR9Q16Xbv39ZZm9MdCn+y2iXRRmfTsMha8DXyMTo5ognke98vF+y+LxnuC28MMjaJrKUOGmhDivUbAC42C8oyoZ5JxKLb32el3p7ppHRji10intpyNWcvEr7sBTsif8ymlO96rEjuadIGuFutOdGZtoPwmLvEorMn/O6XBtfqeZpsSfsl315IuPnksY+vVdNBUGENWnJbS/0HFnDIm+/Fq7DHDbmuO7RNur7P+a3osNJoMXUwM1VLOUt5n+0pNnNu7gS/6W1Lv3v/0IJNEjMYBLgaFRlMDhjpLM2N47HZzjFNnZYU+ZyNxZvN84aSHj6yF8yTF4xOBgzUM4qvX9PqZ9s4ZXO3xLN1BmxkU2rR0KYosOKKuzuJApXrlEKrpOvIwur4HwZcB92Pi0oOtTq4Pxkx0Fmpb7cbWsdnqNXuSV1Q68CBwiwpm4yuNuR3e/6HIeS0CZ0gItS0gW25bHcZtU6z8Q2XrtKm40ZQrrC1LaMsU4L3RWmeR2hAqBNjlnGDFvHSbO+f3PMefvAQnC1zPB2y6/khnVMtb98b0etPiWNR5pfpkmkmwnZ3/Y6jszOaqSB5efc9J5+I0K68hMXiHF8rgzZezMqCgyNVfpnL+/37+I9fsLyrWGtoySpGlEsNAW3XnEQWjob2yvklDO53av/O3/oZx7a+vzY4Xy4IdMD0iC0HOm7rr/7iX2OVZiz6knfrHewTncjhGQxMXvnw9RvBcTKaED77HCORgyC0uzx7LIfwYb9lu4MAUYw/OXvORuPd22LO3/r8OcVE3rlzBpSWCHu5jNmY9+Mwnyf0j/cYvZDv/vb1NbtYFNjKKuk7fcq+hPyawKGJRIG8TBfUyS1NK2s7CPfw9/UGj+uWYH/A1Z2s89vFJa/nSyanItQ3q5LipYSKX333msCwOOqJcm8duJ5KiNuKfEK7R6B5N8v4uDq0rgXfdWl+uP0hTQx++9U3nO9u9TsN5kye2XS61GZLrVbHMPLYP34/QuyIRycNifYA9fsWnz/9hCeHQo/Fest698+rEweTEaSitL767StWqWyuo+dfQAqNpjQOnx1hIYpucXFf+EQORr/Z0unXNLoRL99NsbUK7eDgEKsoQatqAz9gvRJFY5cN5miPwJdch989ol8uabba02fXHGby91lRME/WnIwF56gF53uRPavJqaqUIhU5zWa31KZ8Vq9W2KMAs/6YBwAYFmeaOzVcn5mOULveFhTLljKQzxxC7t6JXMwvZlRRgW+oUnZycm1Vur1KCeyC/YkcmJe3kL9dUS+Fj4+ehXz/SnTE1c0tk3DCLtPB8mXOsyOx1la7HXVv8EHxOolJsrs/HHp1vgLtQS4OHYwwoG2Epwf7Hc5vZa9dL64xhwGzud7mst9nT1CgtJb4ro810MMkqymTLVYkeyj1XDLl4VH3iJ7Xx5kIL4oBnL/WcGwYYfkRubYTJKuczVSesZwZOH9Bv2bhhFhBwP5Y9mVVW1xpaBrLo2xsylLkezLo0Atl4d9/9RbqDa6eugeOibXdfkgV9MyMQsceWs2Wcnb1YQh73ni0kfDX743YNCWW5rn3Hh2x3ghftnWGWTegFe3ru49lyW40/79r2CxEl5amR2KaZDsNR5s79tXgHh3ts60qDiaSj24cg0KNoc1qweympG/qCL/RIa4Z8T6tnWVbDtUAi1yb65sFSakTezDwtP0hi1OyFXR0bF3bNOx0Wo5p3191/wGfH/rwZy++YPVWlFSyyqhaUQ5WvKJ7esBffy5ITr/6JRsdbfPjz47Ybd5h6ZOjfQ9noIvILL6bXeLqWC9/fEgar8nVCriapxx48vfk5JjUdGhXIgAm0Qfr7PblBq/n03PF0hp3b4mC+4sBPj96iqvx5V3a8mhQ8+JADvNn/RPsQATVHj0icEy+boXBncMfcfhMiL9YvSKaPOP1d9/KuqsRWTVhrH1dB12P45E885OjY/rWmC8Nya88GXTIRzr2p+3y7JMjbrUx1ohr1np1UePlHxpI/zx4vTHbrCDRxPKj8YBY+4reLSrGZyXDjfy2+7NPMfQ5bXHJttoQ6gik/rjH+zqj/WcBw/EA/6XQtOo43G3XbFfvCzUKVlrsE9sQmhY6nYvUSDE0J+aMLZKtSc+VXESz/+Sj9R+dPAdguYvxdCL+4maK1c0462ubzScxvuZIbrdv8fuHvPiF0H8wbIg8bQ+poLbm3H4judMgWbJ/9JjnL6SBej5dUJjC0/yffc1VPqc1JYIxCmtaNTTGQZd2MpTBiYATTtju5NAPeh/j0Am1XcGvqfIlbimef5HcMFcFFvUzOg50RpJPKzwTM9OCnmbD+vzXlCPJJx0YZ4RRTa7DAg4GXfbUUzltTWLXxta5gG6TE6pnUM2umb9+TX0t/ZwDp8TUGwC2dOk4NoF1/6a/nk55eSFyWYQh51vZh01jcdgds9ZOi3hxzfU7UfQvv7ngF1/8ZcyxHLqrZMnqWnhxlW04Gk74J2/l0OsPT6kth+/eyG/b4IJ93V9vkyk7t6TSuY+2mTLXYanZZkWxmdHXQo1qe0W6uycxCxyMT1hdq+GUG3TH4KgHefR0n7/5878MwPeXDcFZH2ckB+Rq/s+wtLXAJsOc32I073NWCad7ewSV6JCbRczQk/28TdYUVcDjz0SGy75PsZX3R21Ilm65nMtzzg57lNrqgN1SN/d7s06/R2VbbFTxt/GaUHtJvMakMWq+OBbdFgYBV1M55Mw6x7Qcyp0ObggtmizBQ945X03Z14Nm4DvEHRNP23ZD2yHTCEnQj6ipSbQdqrZb/J4OXGhrNlnGqpJ3tNnHODg6ps6sHWLtxZvVMUYLbiVr6XghXTUcJ77BoQFPxmrw2wY3tfAlGA25vN1Q6KFfBgHHewc0WpuwSTdss47SYp8gOqPS3s/tcoPzvuVqHVMWMWPtPyzKFkudAc+/nw/v4SEn+AAP8AAP8AB/sPDDt0gkGyrN+y2WKyIdRPz9uwz79oyjQzmhnzx7xEg9uLAbM42XrFyxFp98+oL+kVh4B5MjBn90wutf/mMABtsd3c4xv3splZUDQibHYh1O5ymBMabUePB6m7AXilV5Oj7l5du3xGoBJ+2QPL8/9BA8Oiafi2XqNTtCAj49lnzSp72a2BbrO48zTpw+nS+eAGD2BqwqCQnNlgva2OaTE/F8Hx2dsg1Mxp5ONej1CSydmB5XBL7D0UDosVy8JtdJ5wc/PSPo+Bg6tYPmhp3eMtBUNdb+6H4c+l126R2bO6nCs9o7ilI8iEUccFqa5NrgvSgLBpp32jY1cVXS6jovLqfsq+fz7FGPcW+fH/9CaGGfl7y++ifEOv0ijWoCncxw8MKh75isL8Qivd5VnGhVWEZKZzJgeCah46PJ44/Wv4rFqje9iJE2nRs1jM4m1LWsbfpyzs4UWbMxMMKUubqeJQGBytBXV28pt+c8Vg/ydm7hmPuUmdB/mQYU7xu71yl3cUt8qNPkB0NqvePsd7crxo+eUuiFnZvzOa2jg9ZPex/hsNHG5jjwiBcrvJnQot3NePmNTET65s07Tj69o/eJrPv00ec0WhK3iwPuthdc32kefe+SsWcw6Yt8G+0OY6sVcmXKs599wVpDxbvVNbGOkPPSDWF6zngiXsujwYjtVp5xXhh0hj3Cwd5H6we5PnBZ6USP9Y7FSkJeg36XOs4/NJ3/6ru3jEORi6cH+9hpzLe//gqAeV2CKbQ/OH7O8f4+d6/FE6wHQ5487dNXC/z1l79iEIisP37+I2b5mnwpOdlHJ13qSKz4dzuTbLGka8j/e3sBDO/fC55VUpp6o8V6zeHEwm60Wf884fMX8rvR6BllJyfWvF/j+Gx0CPbe/og83VJqyK+0Kr69ucRMdXoUYxIdqhCXBmcnB9ws1fsLPuf5pyLjxW2DlQzpj7R53RvSaK4rzWKS8v7olOV0yL2GpXqwI9PhRNMyRpJSpSZ3G9E9n43GPDoUz+uo2yUuatY6Kevi4oLCnPPFE4mY3N41hKV6iYZLYfUwG62GThoalbXcdZheT5mfC08HkyeMDmS6zWZ2x6JuiU4kVH20/+ij9U+1WjPwSta50HeWxQSWQUdbJCZPT+lrBMrLYvYnA/KV0HCVZRR6qcLR8WNODk5pdEh4VVbY6RX++3aO8YiNer7lJqUXjqhc0T2zxe/oaASy8ioy06TRsYReXNCiN+u0H7c8/Vn4wUPw11/9kvN/KiGik9GQQ0vK8uvxAVlu81r7+4aPfsTzibzo2/VLztMVnl67NLd91tp3dXdzg9W3GH0qU1ryb6ecfvIMKxQhOg4OPri3xXyJ3WRsF3r7debjav/Vzozp9PdodRKNZSxodvdPCj/46Smrr2SdfX/AISb/8k9k/Jm/veN8prd5Z1Akd3zyPk+Rzyl1gkhUB+yaLZ9r8U2/O+Cnpx1MHeV1Nb3BfF+W3iRUYUNXp2EMBgM4EBzcgceyrDF00nq+XWDsCQvuri45Obtfed3FG7LdjCsVovOLbwiPhNmJ4eAOh5w9ko356tUbbq80XJSVTPaOyPTCymFoctCTDXPqjmkWLaFeoWLdFUw3JvRlM56fX/FsKAI+GnXYfX/HXItTKqPG00N/PBjgBAaNqyX899zikyeiXEKnT1tp7nQyxvEiXt3KpvluWpBX769M2XFSxFxo+8Yf/fUvsE3NA82mPP7iKeFGQ3Lbd9z+0+84PZHNmhQOs0YvVrVjJs8OGJ2KvJ1/sybRz6L9R1RWwO2tHDx3s4IXe0LDpPl4huut5qiSpMGkS6G5z17P4+CJHJ5fXe5IX73jqSXviLcVuYZivMMzsq3Jbinvc6qa8KDDUifK1Mu3BLEeSr0uy5dfcTUX49BpNqBtB5vLG4ztClfbR4z+Iww92AaOy9jrkdv390WZQZdK+/3cKOBI+/me7PW4vbii1jF1Tutgai4+6k6olys2Gjrb+H1cLXrrWBFV06M3ELqFnQGbIsNzRL5rc8iukX3w6fMn+LMp8Vjk/cWPjtip4svsHbXRkOdi5G3rjOYvGHU1fzdleSu4e56FG1iE2l+42KTc7YSGwwOb0rpjmQrdCjtiqbnD1aamySFWw3E87tMxI86/lfzlX//pC271xtuqHWHgkOoFvGXUp9zK2orEYXzylEUq+81qPGiEpoFdw/L+WyRar4tjJNRqxBt2/WEeaWO0tIGPjtHFSjYMtcXq+uoN4/Eew4le67S1iLoTnEKLSOqMRmct32y3LDc+jvZkm23O5FTWbTset9M5tfampU1MXeuNEk2KUazp6W06/uhjY2SpBT05NWkldOqbKZPuiEbnehpVTrmT50/zkroNqHRsXbVaUrVyQL35/oKz0xM0Uk2yXpDGiw9TcYb+AF/7MnfZiqCJyNW4sCyXUts1Qj+kslIqrRWwTYsqEd7PFw+X6j7AAzzAAzzAA9wLP+gJFmlBqw3ybR1wfqchzic/4qr2mF1KaOPnn+2T9eV09scn/ORxj8xSC3/5BkfdWe+soHQavs8kXFWsL7n6Vcnh8Y8B+MnZAYVOcl8ulphpykqH8RZJxvn/LWHU9fVbTganHy5SvVlsMbnf+g0fBUx6Old01TJKa/q1vL9ntez3Ncw2veabb77GKP8SAHXqE+hFtfXVO1aXt9QjDR2OSrxmQZPpUGO/h6WJ7b3Q4IVj4n0h03XyXYTninXaTiasK4dSC3Uaf0Cp4YqNkfJ4/OxeHA4mT9k1CdeltFAEwx5dbbKn9pntKoKZeCb7w0MuLzXsME+Z+D4dnWb/6ZNPCLVZedsEPAn3MLV6eOpV/K2zR/zjK/FUwrZPR8v7j2yP+d4JzTvBsYpKRmNZ9/HkgCJfUen0+uX243vgDGStbh0x6GnZ+CDk6nrH7bXQsEoDam3lKOM1eAaWluzvH/boa/i1DDzOr5bsqZfueh517THX4cd29xSzJ56J708IIpOLO3lHk/scnUnYZ/LZJ3TDAT2dwZphU2hZfm5+HA7dH0oIcOtsGe07NO/E+k6++4affaLVze4dielwPJR1x3ZGrZfRYjcU25gXpxJSd92Iym450UrhSVFhN2LhdwKbKl/gbmV/Ne2OoQ4rDUcRFTn1QsK6d1ff0Gr1bWdyTB5f8P3s/rs1Lc9C534TZ1sGOj1me5tjZC1PI+HN5PkZK523uppV2N4Rz061SCnO+ForIC96Hvu5Rb3SoQZmgzvosdSaltYNGWgF5Gdnj/mjF8dkesHx8NE+6/cXOP/uewKjxGnkVpbf/OmXmMb9o/83O5McnaASdojLiOPoieBkpayrSyV3TpK0VDps+8XnR7gb4e83N+eEoxFOV/bhcDyhvIlpHcErjhs8vYlkLzxlvdhh6v2Z2dUleSL6JFs42PtrVjp4PGgqQr2VZHYzx+7dX5BxcPKEqFjR7vSmCLfh6kIibmGW0jYpuQ5KmNkZjnpsu3iKM5xwp+9blQarpGGiQx5OJ4cU+ve2cKk9j0w9syiyCXvvK0VzDj95SmCLPrs9f8vtjYTbg7BHN4yIS63E9z7eCy8vJfz/+ePHRHoppef26VgGrXrwg06PzJI9cn65JDYCTvckQtLWwYcpYds2Zr2IcXVG6etXb6itNY+OJSK3TGN8V2QmL7bkmUumQ73teoWlkcOnn37KOq/YXenQ/bZH4+mw+PLqXj68hx88BH989IiDXzwBoOO7JHopo51b9LpweSEC99tXMV9oqHQezOg8GxFqL97YvmFX6LUY7ZqqqPn2K6lsWywLxvt9DvXiy1fpt1ilhE/CvTH1qke60jBnZvDyuzfy/mSJvah56omyi0KL0ci5F4eqhp4OkY3XW4r1DedzPZSuvqbXCrFvz99RLzKSrjC4YsBcYxJXX/2GXpPSaB9XkBakVoyhfTfPTh5hvy+HvfuO0L6lToThi/mGtpGD4fb1NU7nCYUOyk53LY320OWZQxbff5DnuBSW++F6m1FnxPhYGNxLNiRvt7xZCR6dwGE31So4b0S28NiGOox276e0G73xIHR5fvwpnk6g97yQTrdDT2MD369rLA1jh9s7TkbH/FqrequBRaOVwrtlQhj6HGs/6X2De7p6zVJot0TKpuXNJbXjMNCK18CPeDWTMW1YFdebFb/4qVRZjg/2+eqfyUW9FzOTbu+QwZFev+Xu08tz1ksd1ms6TPXm69zucXB8ijXXdo4AvLH8zg0LQndL2X0/qNgg0hvZ2/bjmzCqmYbg2pim2WCaOnln3OVQR8X1vxiSGwGeXlGzSA2CA8FhalosyiuiQifg11uuZ3dcJ1K5anYcxtoiMFvO8Uzo6HDi6XLDbC18G+cJ46FPHcrvgrIGQ2/TLm2qNP5w0/yfh37/AFevdjo77tNmmofKKvx+h+faEoRdMN/oJca9AXXTIdebMbbZjk8OJPRctx2CBh7p8HozsnH6IV9rKPXxYMLPtC8hqq5IZndYmuvb3PUxNLdoJZcUtoWh5fyT408o4r/gILdcTnWd/bBDluzYag9lFNncrEUOrl/d0Rs6tDo1pG93eLwvSr/uuMTNjEQnXuVmxHwX03s/3tCAXKfwFMmGgRvRGeiNG5cR6Vx/l/rcfnODtuJRLJMPlbmOYeI09+/n1uuQrG6ItJFtenPJvlYfh/makd9gad6zXK/47VyqtLvdMesk4598JRW+4fgxTdMjq4Tfk9BiqXleY9DDC3v4mnfcG0W4WkU6vbqmylJqNexMNyC+kXDvMqnJexNcPRp29+Q3tlM5VIInZx/6gr0wJJ1P2U11epFpsVJ9ZtsuY8/F177BZbZjoNNrPNNks779oHeeP3vCbDHFdcWAKNZLqve3zps9zMKmozfWR76NqVOGotzFNboy3gpw2x5qe5N9//EUrj8LP3gIDh8fUsRirYTOPobeflxdbzkZd7jV0U1/8o/+T76/FuH+xb/5N5ndJUwNjc3ve5g6Ed7vu1TX7yhyidVGj/f5V//O32Go+bRtXJPlguBB06FwRtzZ4pn8dOLw7EiU6dO9n2Nkd/SPRfH+teOfYNj39xVVec3vptLaMP3qHe7VLWttfLancxL1fJpNycHhkOVWcLxN1yRqRXq9kL929BO+vJDPstrkycGIlXpcl+dvOdWGVs9suZ5ds7Qkv+B6LvFWGHO33dAb/PMJ+XGSkWmzZ7WuOT+//yql5dWSHBNHb+04iBrStQhicf0lncEep1rEku4iBr6MrDs73id/O2On9zeubrf85P9n772dbFvTNK/f0muvvbYWqTOPPveWuN3VYqo7ehhi8MFCWBAxzoCFBwEODhGAA38AGBhYOBMTgQHjTMBMzECL6VJ96957zj0i9dZy7aUFxvfm6arKrDsGFlH5WZmxM/dan37F8z6P5A4HmUl9scCQgnSvcknma6L5R/Vuk3ccy7w823vCbDUlkTq+2c0VL0QDMszmxMYhsXCuOrcf771/KblTw9aZXYs3W7M5ffaMrKVOkK+cLsctRU4wqEKi4oqtXC7/8l/8hP/rn/8FAMMf/wkvfvBHtES3cPU2Jo886nKBXM0uEeMQ5+gpWrtL84ma79X1hhs5JJPLEYnvcC45ycbeKzw5FK5+en6vD3e5PLtYUJkrXLHOG70+Hak7bVUOnndIIHnPYb/B0x+q/HNi93ndr/FOvNLzi3eYqwWXUgrw0w9jnvdVH/aPu1imyeFAfY9RFQRjlR+1tYJKq1GTi2bYO8HzlQc3X6csNgXkd2ruv94a7QGJGEFaw6E/VPN74B/zpNNDFwq3bLLhWNQXvppOCUxo99Reaw2OqLXUZfJXf3FFMh3RPVDlA6vZjK++fU82Uu966EBwq4yl+XRL6GYM99Xzk1nF7VKNc5rG1EwdTTxw1+6yDCYP9mHQGtIVvcaO3SCkohZL8XarJBN9oA/nt4y2O/6tv688/22g8252VzNYY+gNWa7Vge1kbapkQb2nzrAfvHjGeykNm93E+OY+mdQa7xyHawFJ9RpDmmZFLuCMjp2g5eqz168PMZOHL/I4ztjNpmS2MvB9y8CV93Y1jboRsj9QYxwHGfFcjdlwuEcQlmSx8rCGZydUpstGxnjnmpi6nEPdE+LtAkuUOSzDJBMQWs+t2I7GnIthtVkvcISwRKsNiewumZTkJLP7a6kq5YLcbFjJ5dkeNDgeeKwlz5zkGvNL9f2OnmA3YR2JhRxEuML1bFQGu9WKqqu+8+DVFzhJzmYuHKDhEp273KlHkaVEhkgkdWocD54AcNztM10lLKR8oigLAokORcXDPLR37TEn+Nge22N7bI/td7Z9pycYrq755UdFTfbZwZ+S3LFb+AaLv3lLdqM8rD/d6/M3H9XP6WWb4rTJ05cqXGO1IzRhZojG35I7Ft//QhW0dp6eEVUps4/KQnMjnWKuLIlvfvmevvaMWKza84sAT0INJwcOJ73vcbVU4VhNKzjbe5ii6PzDT9HE4js0NUw75O0vVWht93GMLRaJjU7zuEEp8N9VZVB6ApnvuExXUxIpis6SDedFSiRhAW31kbCpLKnTVsJPgg/EvrJWvKxDs6PGwmvs0fB3bBJloXhGA8tX4YRa4LBKH84hVFGA7VRkpfrOmzAklhBJ2zeJRtd8KWKSVt7DyZTHrHf76I6FvVPTbBYllVAlWUXJ+y9nNERD7nIbEMQbvv/qC/Vuzj6miMU23B7j7YhA2FaavQGNmrI4L2/esHub4B8LG0X9vkc+EsSemzs0DlTozK81yDcBpYhiulZBSyiadnGMUfpk+h3lk4v7VJQxjg6ZrKaUqWgyxhFRmqHL2KSGCoED7K5uMIwGueTaOv0ekYhEF3nBpkwYCmLu8MkedqWs37Fx3/o1NQmH7Uq8uochoVPXd0gFgl1qdYLMwGqq8GRZazMWtY2w0pmON2wF4buOQlKz5ErIkCfFluWl6tMr3WHQ0mnsq/XXPTikJWOhRzEWHqGgHkujwfuRsG+Md0zjhNvk4ULzIoy4vVTh/qd6gWsJo0YWU8UrDj5T+3LSLXEkVzzcxQw7LlVyRzXYot5QHurNzZRiUmCJEHWjdNg3EhJU5OHV8JhcPJzy9ADqNXoiYq27Xc58yS1ezTGaxxwL+frPdwEt7+H0hue6PxXiOQAAIABJREFUWEIwUPMcmmaHritsLosLEtHc/LxzyKi6wBBmpfFmhSYo9IPOPt0W1AMVBchXdRL3Oc9E/No1Bp9C04YdEt4mzMbqe1uNM0op5flweYFvHnImpU1nbY0371RuLykqLOPh4zUPAxbzKX5D1tCex05KG6wkotlxyAWPsMtyfEknGIZNmsZYgrxveC7XkylBrMaxwCKX88yPV2haQlMozpKaRylEEZXjUXX3KSXV1KzXCVMR0U13JOaA2LkjKbmfE7SFLSncTEhXapyyck2lDyg2gub3GjzvqvdO12vWy4BEnlGUGfYdijPLaYY7vFIK9423GEXMaV09/2D4mtGtisJsw5J1WpAJ61B/v8uffF9FIVpOjY/aipW8j+17jM7V+bxbPRwZuWvfeQl6rZJKQp5x9ZH6QMXMz69HbLYmhriZv/fiNW2pxbp+/zPq7mcspETm9YnP5K7eK8i4enPOTOjPTM7ZRiuakt/IwyO++qkIPU5SDp7WaInSvGksqK7VAZ6GTbbOjpmEiJbhFYdPfvRgH4LJjOen6vufLUwWl79gLIvmyfEJtqgf1Osa19MFN2OVIH5xdoohgJJnn3+Py7dXbHbK9T84fYrdM3EcocvSwTLVxhh0Ta61JZUcflZbo0J9z+V5gtH+Hoawq6x2EcnqIwDbqMQ4+eLBPuxCqLSILFQH6DZYs7PV2DdqLcx2HTtRB+blMuOlgBFWhUEclmwFmDT7sGbQV3PhFDmHms92pA7Ti+kFuwL2XnwGwKadEguLw/u3S27Xc16eqvnvH/ZxBYYf6BeETsliLrRe+X2evsMjdbj6bRgcidpENsFzCm4iCdUul3wUCrd2q0Zvv4fZVuGkmqbTXak8VFRZ6FHJqiZchw2dyM3ZzdVCN4w6cxH2vZ5O0KcFmqE2cmvP5ckPFFdr29dB29ERRWt9v856qtZle3Cfh/ZOdXwXpOi6wU4o+77ebWkL2OPsyRmG12dRKYMgqxxWF2o8vr44ZxLtcIUP9HoUMs9KDk/U8+svj3EEMBav55S6+ynsVKYemTwjWs3ptTqsJVz05dWIzUx9ZpcOut6ipj1cn+YaNs8/V+CT54MmtlwmThRjOCma7ItanhJKCPv0oMagaxKJ8ri31+djJIAO/SPuGXzv+8qQS+pHvBzNWRQqPPf6MxdPqBbdA4eEBvO/UYbrm2++5OiZCvnZvRqFBbbUsHa8Ln7rvhoJQE5OEEkIv7lm4DbIxTibLMbMpaymc1ijV/P58BMlq+UMXfw9Na+D0oHJhHYuXK03W6xdRdNTa2p+fYlWSVhxafKzvxyRzIRl6kUfodfF8UpsI2T/SLEV1cwEqaxgPFvw6vA+jy7AJoxxuj0MV/KOekBN5JCs1h71QZeRAEVC26d9ICHGJGSZ7nAbov6Q7lgnAWZDwugHLSpRjMm8Dnpic7ivLpP5ak3NFuAZNg1Lo967o/erM1+ofTjPDSy/xRvh0W317tf9ZpLC2Wt32R+qzzt6RN1oYe8LNqDIaYg0XGkZ2NdLPGGT6TsedQEeJZaGZ+R0W8oBOBr0GEdrslT97cBr0v9MPePiYoOxCDg6Uefn82EDW8pMgnBDuIrYihGkmym51GCnuwfqtn6lfecluNZMUldZHd/OZ+wPRWrkwOO43uFccmLvv3lL/7nKfQxf/RkXWcT5hbowBvsd1nIh+FbCk+4RgSi9b99ck5YLhtLJWG/w7JU6hI8+b9HIPRwp4NWqgOeuWlT9hsFqNuPyUlmgmlHQsR/2oorUoFaqQ+H95Aoj8/BPJfc0eE5NkEbPTptMPtyyEZXmq23ImS2gicsl4/maUHSt4lZF56DPfKWs6tTJsaSo3zrYp2tlBJ7ajCcHr/n6K2Udvr2B8mCId0fBldt8vRZKJH8feFgOqu6YBGh4hupHll4wGKpx+dH3nxFOS1aCirLLGpaAbTD7uEd7HIoMUNdv0zREzXt6QWE4uI7y7tvdQ+JiRcNXfT40UyqhH9tmBkdPh0iJGV9P3hGEapxah0fMRwlT2UTt6v6Cq+0J+CjZYm2lNqsJtr2iaqnf3/3kZ1yP1eHaqn9OXnTQhPj6ZrtiJoi4cqvz2fM/4t1HGTe9pF2aVDO1ad/MJ1zv1OJvWS7DXKfbV1bm05MjvjdUB0ZYLpnlMS3RvlksrvAykUBq3s8SVJla604RsptlrMQaDjZL8qfK4j32DtgVFd+8F8+sSjh9rnJSxtCkluoEI3VBON0hzTT7xCsblQWuoIpOew2M/oBC9l4QLmkI/2tnr0kF6F2F1rQrnVolpNFmg1pVY3bzMCDj5PBznoru4+HQJwqu5BOTctjjw0y9W8uvISyAnH/4lqtfzHn6RKGd02WGbqlDuVE3CbycsCleE2sOnxgMqicA9IdN9LVgCsYWL77/kl/4al/EwwaOUIx5rTq50yS/WzpmTvxbDq6qppMJ6Xtl1NmlIXVBeTZbPtmF6Ad+nGNaOw4EuOHFFrnwXHJVklo2NZQH972uxzTc0hIS9t18TiQG4Nsvt8wvSjwpwl4tNzhCRhFvp9T3XSyRZFovd5Cp59fdJrXuwzSI83mEV5lUttS7FQWm0Am22l1W0ZwP5wr8UnOaLHfqe5bXt5hem/6+oNTLkk7dZC3e7jZxPmk7Dvp9Zrdr1qFIngUzcslrd46eMRgOyCV5/u3VR1ryro67x5t5SCbcnlvrfoRtJ/M/iSzWhepDXpRohYUl9cKOUdDxJTdeVmiNmK8nCifx4XaOcaX2z6vPj1l3bWK5zJjNaEZjUgR8VAPEGVneXOEbcNZQ+2Ly8YKrN6pPfmNIWNUwTLmEq4QsUeOShtMH5+GuPeYEH9tje2yP7bH9zrbv9AS3scZGhCaTLOe5qB2fuHUWuw0TyS90B006f0d5cLbV5ePkPUdCyJp9SPGFCPjp6R9R6jqxSGpkZkgWVzQEjj26veD3Xv0d9bxlwPf7TRry/G/XCadnKpRTbKZEE51clAu2o2vC8cMqzrfvPuAKVNm9nWJlOYZ4VEmZY2bKg1m8n+K3m/zxH/89AH463XB7JwD6bkbp79PfUxbghw9vGH37MzwJC70xI8ZzFcp79f2/y1c/+Rvq+8oK+quf/ILdRoVrup2nNM0ajsB4R+MloeRIfMem236YJWO1DMnMNSciOlsEa3RBfA5PXxG5Cb54Jk/6DcJCPbtw9/DdIYO+CHQuZozGgszVGzhujbcXyhvYknDy6iX+kZq37iZDFKAokpKq6bLYSlnE9ZzQkbpI/wn7dkLsiwr63T/9SmscKGu852ToSxVuHp1/g7ffoC30cqf7QyKxVFfv/gXbSYtlXUoVooJSyI3D9ze8u/xLrm/UfLdaNQK7YnHxUfX/5Us6Io9kZiHWZgOiKhGHKT//5V8BsClzKtslFoYPU89wbBXNSLnPnJ8HanybDQ2cBkupcYvzFCRseb3cEqcaK1GL73Za7IR+y3FyhsMheiICoWZIrptMJRIx1Cz2hTq/5Zg0ml1sIVevawZN6ZNr1RjNLwgFIaclMZZ/x+pRMN+sCe8UCX6jDWo+rYaat163S+II1V+e07Rdlony0raTG9oSJj47e8qqfUBbkMmr5Y6GyEj98KTJVZlwV9G351foyQrTF7Smf0AwU/31DIvNdEYWqc/+9LMfYcj0WvunXM1S/tVHFY7tNXvgPOxFNbot1lsJfy5HvBg2cAz1BlEck8TKm2vaPqtNwvRKPJN5Rluo97RBg36rjiGE7T2jyYGX4Loi5RTd8M25hKZXIQedQxoiAvv6cEBL1uXPv/mWMEn5f34mZOZ2g7XQ8G1XG9bBw/u5dzikZTU4EqyEHVxi5yrSEWQpZVmyE/aeolzQFjTs1XTL2bMj6nUh3g5nBKMrpoL4bdZcUk2NTRVMaPoVvqnW/uLyHZOtOgfnmk1VGGSVGu8gTzg6VSHdev2AajxCorNEyf2oQumq82WJx62g+ffrNnUS6qL0vg0r9LZQyC2nnNQyXj5RKY1g/Yaa7JmOZuA6BjMRvrazCC8L2N6VTpUJlq083563xCvWuELy3zD6WC0VhQlinV24IRPausK0cCQfvd97eB7u2ndegqNgSSDFl7bl4Qh3p9X1SOKUL/5Yqb4nZszhkSr0vgknFLuK27kKH33z9Yo/+mMVugk1B7uqqFVqQ/XrGWkRghT3/rjpkX9QF6sZwx/+6A/5+udffnrRpaEGqtsyMI59ziw1qFPfpLW/92Af8tstla8WtBYGHDR1UhlEI7MhVu+ZVSHNeovhoTpQPtciLmYSX69Bc89jPFYh3qZu4K4WDNtqw5l9l4tQhYSiEj57/cNPIQrLq1EJtU9wE3P75TVnP1DvffSszUJi2GG8YHT78GQlVAyHQ7aFCv9mXpckUs8bvU8pdwV6pBZ7brXJRGtutFyT5FuMb9Xvh8sxLzwVmhy0dLq+QSIHSOW0qNr7fBB5rNvzMQOR3QmSBW++fM9CV/0tdNAkPDerKvb7z7lefgRgs7kPR95IHZebhLhySJSFztXHDzh1UbRutNGEV3R1PWE5usLyJeRX04nOVd8nX85ZZucI9SCbMKXc93A6UhgbRfxwX63TXeWTNRrUDtV4Z5VBKrD1NIrpnJzw7FAZb/tHL3gnAC1du77XB1+AML7jULgJO2HXP3rykoOTJ2pcspy8KmjJBUJVstmqMoDb1Yyz1waDmtSR+S5Vs8WRgAXW2zX6Vq3vVqUTbiOyrdrEm5rOKFB/t1uHrLY7hm31jFbXxJR6t9vFkjjK2WweNgjD1a+U4NQLylRKBKyM9XxEtFYG0dnpPq6s2TwJ+cHxPvvHcoAtF2wlVBhk8NT02G/J5WEWaH6TncDtjcLk+ak6F+p+m1lcx5LTdXO1oN1W+8vOp5wdHXAzuwtHFqx4uLxgsxwTFGpc1lHEfsPAFqkE1/R4dngm77bDGz4hEiP65uaCTHK178wJxwdNqlB9j+aZuHYLV8AoySrFFYmzz5+ecjNK0YTSzgkTikx957OzAz4GCdO1WvO2e0i3LuUD0ZyqeNgYmc835PWAQwHGdHoetUhqPcuAOAg56kvI04yoRBnhT/6NL2g1+kh1DqvRht97vscfCzbBNODiRp11ZVnRbHhUkm7ZbqYUYljYrsV6FVBIqYXrGAzr6qJNuw3aw5KaGHm+hB5/tdUbyiBbBFtikVWKgpjb7YIoFmBMvUdf6jktU8f1WpRylzz97AtajhguBcTrFWWqjKV6rUOt3cFI1LtptDiSulTXqNOzNWq27O/cYRqoc/ar83fcLkZUDbX21kVFXoij0O8/OA937TEc+tge22N7bI/td7Z9pyf4rNPhq1yhNVu+g/dMFWEnjSZp1iCOlMVZehVTodnx+y5ncYP5lwpEEozWzI+Ud1XFOvvdBq274vj3H0mmYzJJZtZOdgwtKa3oDvnrv/ma//Of/HNAEaTuBE4+ejPis86AIFLP2GUJ7ecPU469et6jDJRFMBqf461KUrG+k5sZtUKK+j87YlMuuF2rv61cB9NWFt/ScGm3dKpYWOaNiqP+AV8cKe/THgyJDOUlTichxTqg3Rfr1G6zEnHHnbGg0RlQCYvDbnqDbyjLJQjXfAgfVkBuntapdx08W4Us7OYKqcCg39/jzcV7srVY43bMTDzY66u3NAceZaW8xk5hUnTVe013IeuPc5bCIFI0DC7fv2ejK09QK3ViYXJ3cNnZGqYUwrZ8F00S4uM45/3iPfOpWgt1gav/akvEGt9up/REbDivtkzGF5zuKatu39fZEyJk7JfcXF4QFmrc7NzBiiXMobdY73IcITLYLOYsnZS6UEJdX13THKj1tP/Z79Ns9NG9OyUHyGP1f0mrgd62cAWavZyXWHXl3fb690NAC0GucljHM00sYURqtTsYghj6cDlmttUZnp1KfyMsIcg+aNWpGxlnz9T6jvUOudNgK2ja+V+PMQUZkjbbUMA8UGOqxQ5VeUcM3MLrDCjvlO4dDVsAXMYywtFzqt9SHOw3PLRKynqygo0AYdZhwbAHniCOa1FEId7WarUljTcgFHqT9ZpUCJSv5re0zTp10Qut6jZmbY/VpfJGrKxBKujy/b2SbbQkvSsZ2S447alxMvKc1cU1vUKtnXfh7Sd1gt9ser7CzNV4u55BaJjsLEHxNAoqKXGCHWajwWFHrdPrb9+wuBYhZt9kpRd4Qgq+3EUklcZ7EQD+8MufshRvb//gJb5hspaz5ssvL9AFhDf87JSoTJmPJUKVL/GFgN4e2Aye3FdgAFiUO7LVGO1ERT7CMuNmrkLRXpUQTD7wfCjoVM1ldK08+CLNqR1BJgA1zfLR/C5+R/ZcskOTAnzN1Pl4vcQ31Xv3zl5jNdT+Kh2LwrBp1FUo0e81WW/VmXizvOX8JmZRiMitc98jfyLAnMXFitsbFeko3JQ4WJBJhObz7/dZCxGEpcUkrkEshOnG4T6BAGFGoxl6FDEQL9UoK0yrxr4oxBt1n0LCvfHNhE2jz0jYxm/mE66Xao+s4pSkNmB6l6YIdvj1O3Tqg9PwqX3nJdjYxvzBUPgUHYvR8o5pfMjVQmczUhvj+MmQfKU6tZ6tycYzXojUja3D5Vs1weGpSd/rUAprxtPGgOkqYBHIpl3F0FCDf/j0CV+/WzMbCeOBExCEbXlpmxiNQjZmrE/5RuoZf7N1T8+4vVB0XLpbJ68l6Jq66J6enGKUavBHtx9Iq4hbWWG+5pNWarO3jr5gHiSMRFHbMAqqlsY3a9VnO87YycW23W1xDZ3DpurHarMglxDQ6aHH2UGNyUiF2769GbP3/ScAzKYX7Oz7+TSAPEz5+vId3WdqutrDFk25bHapTV73SYXiLE0zFqJm3hj4/N0fvyYT9YdqVeAP1bzMZxFZolOKGkFlGPitAYsLdTBurQV7LVVOcNg/wfRNbu/CdV2Xm4ks/tsd8ykM2irvZ9wdSL/S7g5Cr9OiLnI5vZ7NTRNe7ak+l+MbYgll2K0n1PZ9Jt+ocSqiireXKmeSLHM0mvSkdCbcODitOkapDr+jg+ccNtVnVbBkabtsl+qZRZhgS4lCs9vD0BpMxECZLSYUwp2ZaPdzgrbkz4JVjFFr4cv6Xi63rASBl2l1Uiv+hEorTI26KJ8M91qUWYUhtWN+u800KbBjNTfDw0MqEbk10CjCLalIcNUaJmmi3jsrIxqtBp9AuKaBJZu8bplszZyTMwnH/vLX+5AMenz5rcrJJnrAn75QOVDLinH0HdOPat1kixvKSh2Yq2mMtspZCWr6ep1RSZ2gYXksVxNcoTjb1upsohnn79TacOM+x0I31jBfUUQ5fRl/vaGzEr7MTRTxZQhRXa2hr9/ekrXuryOA8dWIvY76O9+3uR1PCaRG1MxT7jRtXbNPuArJE1EZMOqcDNS4HHSHTK4u6HXVfDdsm/E351iSI1tMxgQ79X/PD56y3CYYYnT43QGSqmU0y9nqNpqmjPyo8EmF07bW6xJmD9PXmQdd8l3ETLhqX569oiNlDnZyy9zYEkg4utlq4yNrfb2j02hzs1SXYmj6JG6HkSCj421AKuo1URBQblNCYVtp9sG/U4Rw9jDWt3iS56zcLh9EKHlV89gaNay2Gn/df8ColZKrMtxyKcovWcPAI2YnZ810fIW3VpfgKo/IBjUakku1+jXq+0/UqwQVyWZHRzicXd8gSnNsUc5Y7WIurtWavf04g+yCTASPR0FBLPJYqa6TOntMF8LnbITMztV6Ntr/H0okdCfmTJKKX43P+fO/Ul+q1S94efD7nH6mDoJoPWV8JdB3y0GrDhjW1ODP04yLjer8JjCYTgJ6AmjpunUCvY8vi7gZGmhyALm7igPvkD/9sz8D4MP5T2hJstTrHhFkFQMhqO1qFcVd8c5vtCDXyAXE4R6eML3+hlenypKpnT7DL9TzPsxvSNLik4dh6xXjpVrE32t6uJ2KSorONbuNaW2ZSvz92ekB3/9MyfW8Psup4pRYrPquBmfHaiF1HYenz44JdbVTa5sNlcCU/WaNo4NDfvpAH37x879ivnqDO1Hv9vf+5I8/FSTX7BLXqaEJrD8PEnaR0FFtbd7+tMIQSLfd26djq7E2uj4Nw8URjsJ1MCNISzZyKbidBFfUpV3DJ0hillKfdTtJ2AhXZ3O/w6C0aLWfAPDx4x3s/m/b1VhZ2J+9fMJOEuBtdw/ij3z7M+VB93o2+VZtyjUWRR6iCeBjGUy4zVV/A9+m75TM5gpC3h16HA1d/I7KH/otj9uZupTSZYg9M1lLYX29ZtF/InpzgxPco2ekllrDb9+u+fbjRzW/5n1l9lzyGbplUWY2NeEHvU3GSPoCq2uz79poYlg4Gp/ywbeXGkEY0S/V7wfOK6xKY7pS7xqMJuwW6nDzDQ+j5uBKkr/rGqRCzfXx2/cY6Qaro3K70yUYYji6ZcZ4NsPZPbwXxtuQRJTdnWXMc/FuD7oRlxeX1CVCsomnnw7z85spC13n53OVW6oNe5z+UKR09JL1bs22La7JLqbnHnByoOZiezEnDdU6CTcbOt0+iRCWU0TMJAd4PV8R2T5zySdPggSr83CmJkx2uOLtVBbMRh85X0+kH/v8wYsnqn+6RRyuiDPlGRweexwciJSQrrHJmlhrdfAm6w27eEND8r6N3inNntSdOkox3rbVeM+2JbZEechWuGmGLWfdWivQpTatZZc03PvGFMBkvmCv7TEXt6lymtRqKve2DeZ89vqPCHZCIFJvsdgqnIRt17ger1gImXrZ1tCoWEj9XWPQwhFQV2UaZLbL5Y3873zJpqGMh0ZL5eJGogofFxHzjZBt1C3Q7U/E2xT3PcHvf66M43njhq28S5LOCIqQWKyzdZQxFs7kyqqYBA6apy6vtt7lcE8VudedHpN6m3AmoKxkxzYJOBCO2av5jJUAXLb9LulqzVZI+pvdU1whWl9uc2LbIvfU742mRyn52e7JwyCru/aYE3xsj+2xPbbH9jvbvtMTNN0Wq1xZqrlZ0hWX1bHqGM6aeK2s+jhJqdXVZ6tsg57H2HK/OoZNryHMF9OUt9fv2HaV5TjPdKyyoG0J3L7R4KitQjRts8tGg46wn9RbP6IQlOHNecRu9J7amfLoXM2h5j2sRG07Pl2h41otPmI4Fk9eKXYZx2nw4ZufALDuNWm0Bp/oe8pCoyOA09t0TLfawkAEeCN4N5tx0JIykEaTtZDT2q5Oo7lHV2jFPrybYovcSO45BI6F7Ur8uwWBEFiHqYPH/dADwNYOSTyD58cixqvrrCbKa9CyLd3BAWNR9IhjaHdU6Eav1bEPbRCC4Xq7RiZ5phxYrWOuJcw1qBU49RJvIPmOTpN+T2jLwnPy5Tk1R3miumYRibdkVQ2a7Q6YyquwuC8kOpJ1ol1cMKzUHO6qBdZOJ61Un3zNYxqrsEdxO6LW1dAEwu7Um7z8wx8DYBp19todfvrP/qn6v1qbTqeFLyE6MtDEu51PbjC9Gjgq9zHsH7J/rPLax599jjHc51bqaN2h/omd3jXuh6WrXPXL7tXxD9tUYiF3Oj53eHKvbrHOUupN9S7T1Q5bxIc1vcT0m/QHKgQ3GDaYBStcyb35pvXJJPU7Fmmm40uZke4U+GKQN2slvab+KXzUdF0cS3KCPjhWSV48XCxv9vdpeupvN+/+Ff/sX/61GotuiWvoRBOFlF4sZ/RPXsvLVCxNl1RX85TbHj8/lzC1V8esCrJIjZcZFIyKFZdSrmRWAZ7Qvd281wl/pqOL/NigaXIsGIO9Vy/YFDpXM4nY+HUq7eGjyfV9ZuIJ1KwE19PwmrLerYpCKO8aDRfXbePUhBHoqCRHvdflfMR8nWFu1Vpcb6YY2ppLIXxOtYiesKkku5TjXhe3psZ7vg0ZCvNMy2kzmk0JxbvXixzbV3ukoUG7eZ95CCDSCtzOAb199YzzqyUdKW3IjB43ecJkpebwQANLvKKwWlKZOpXQK+qGQUVOKmeI5rYpBKla6AbU29SfKPTzajPhRkoknN0FZZqRS76wc3LAszOF5My9IfGiZDZSnmijft+L+tEP/wCA5fCAv3inIjKbIMLTLCpNjeEirNCEhLu0SraLnFD214tWl9GtepfbeUhKk0K8vdvVB5INzLOd/F6QSkRE02yup0t+8Y06szq9hJZgAcKoZFsvmEpEsNbp4PdVTrZ39PDdcNe+8xIsyhLfVwvs6Z7JkfdEdT7SSLUtTkPKJ8Yb0rF66WVaMFpOSRK1oTrPz3j5hWJo8cKM+VWFIxx2R4ctzJs1wU6U0G9srpbqexIvY7pYk5tqoe73HVJHdWY7ntM42ecuAXCyf4rnHD/Yh6o0CTfqPa+uLinTiDdvVN5rcLDHz94ooEBprmiZDdyaWphxmqLLYeKVGXanxQ9P1QUdVC2S9y6rqQqHGuGGq0j9/HyvTexkJGthaohD3o1UKOkiy8lyi9u7mrPhHhs5+PqGQWvv5ME+uH5Gc3jA2RPJhXgV0UJdELfzmHXyliJQk2+uClpn6qA9ffaEH3zv93j7tcqJfvXTr8jaEg48abIdX5NLIll7cYRexMzWKnQZbOfYmpqXr3/xFWG8+kS5lbf3qMscXl5cczF5Q7utLvA7qrVfbd98VN+5i1IMYYsftnVOXj7lufAiFvmGPVEq+PnyL7GtHbOF2txmzeWL31f1o+NgBkFA45myUDx0ZkFKaqqD2Xf36Ykkz377kMkqodcUSPtxg1ZDHYqm0SWcw0KkX8qkoCkG0PYBJWqrVGvNtTfk2Yyt6F56nTaZKGaXVs6w0ccWBpV5qmFJLqnrugTo2FJ3VcRrotmMTFRLfM+n9kRdPC4561WILoCiVqPD+kqNYX9/n2GnT024NatCYxaqPaNnOUESsFzO7r0/wGij0Zc8VJwUfPygLACtqPODz59xO1UXVuRD1Veh6cHJIVmiY+WiQr5esZAyF9cr2N87ItPUnhmt55iR+BTVAAAgAElEQVR1jYXk/U6GXRz5eTGb8PFyzOxa7YW9XpM/21NzkVkl3452xE21/u1mnUn8MN+jU/fQkHKVTpOh22cRiXFqlVS2Gt/lckQ6XXMklIlhVHAzU/MauhmfvTqjJUbn5blJEEBD6vGyeAuS99IPfa7nJV5b/V5v1nDlouv0XIIsYFipsXGNFpulesbpwRFR9nA4dB3EVObfGu6z1eSTgkW97TCZTwk9tZ9XtklRCP9n3aFuumS6mu84i8gyndxQe3g1n7FZSaql38SwLbS7tEzrDCeT0PR4juOYNKQs4tnLU1LRaLxaReQ6uKJ5ulzeAY1+ZQ5EEzQaz0iF3q2qLFbrOZXweo42FbloK5alz2Y04X2gfn8zDql9qS7PYauNP2jREe5l/D3SVOObmVrDi9WaplzEpl5R6jatvvp9E20JpMxnE+yw9w/wZe93u30MyY+enD19cB7u2mM49LE9tsf22B7b72z7Tk9w/7hPu69u01l1zeVO3c6GltPqDwmF1cBrJFyNRGixPKAKTZqmshbiecHbnyigxo+eDLCqBjVREH/aeM7U/8iHc2VlvdvsWJsqkXtS1igNE7nYycOA1UoEYTWXmq+RZMrDGwwGimPugfbxfAqC4qzvvYLlio246fWs4uylssDiwmFppoQC433zN1/hiolwst/lpX74Cd2UhTE1x+BioUAds2jMUKzIYD3h7dsP1HKFrtPcJodPFVDAIWeeTLmYSgHrLqAQtOCm1mV6fR9UAjDwTbAypoGyMhu9BqmoYDdPa8zev6ES0dOjzj4tCQn5ScDu5hv0jWj9xTt2U0G/uhnV+oLnL9S75c6G6SaiLorxw1jDEovf95vsHRwyaCnvK9RNQk24Dj2dhpPR9cXDsDLe/8b7d7ribRZjrEKNoVazqRo2hahPF6tLwkC9Z1DErK93WFLIT5iyRq29dsNjuZxgCthpl6VskxkWqh97+ybzTIrezRrPT5qkArZKjQ2LpXq7j7Mr4maPiTC2bNIml9fKm5zc3vekPAk/WpVGlW0pRc9wM11h9dVcJ2lJvhuhCUtHme5oiedtWAXHnk0kihNWtsZMAyiVN2Y5TVoifpztNA6GDeqifmEaGc0D9T2BZRGOYxIBCmmWhS6sHUVS4dU60HmYg/bP//rnnNTUnH7P62HVFShoXWnMMoeWEKTHgUkhBcZpzeHmek66UZEO10ipyVx7TkndqVjLWpjVEnwn5/ClGg/fMlhdqahLrWny+vePab1Qnv9uOuNDICH8wuPbdYSeqD7eJvanUqXfbK+eHwreEbxWRsgOLVF90nKN5Vpt2gOzS5puiRZqX2qGQe2uHGkdEiUbBjKmpV1Dc7sMhJWHYMdOkJ2h4bHIckzxTArNQutKWshrk23m6IJDKo0Y01JrLy5tqvzhYvkoWLGcjFnvSSnP0R5bQbqXrkfib9kKGUOWV5hyTFeWxzKKMCQVYdYMSgvMtvLaoyQh8IRQ2kxpeD5SWYSdR9RFab3u7lFzLCxRjV+HG1ZS2H+1MZgEJTsh3Fju7pfbdPoKxLNZ7fHsSK2Z8jJmlZbkoqdY92q4IrS9rsA9OCGs1F77cnqNeaPm6fBgSCtoYKH+z+/2me9iIvEw47SilJKI68UKw/JxhWw70dd4wrnq9j1iQyeU0haz3uZQ1OkH/YcjbHftOy/B2eaWSOpFVknIrqYO7/5Rj17nGRcT1alvfz5RaD/g9elL3G6Lrlye72ZT/lzCj/Ei4IsXfbaG6sSfX45pm230w+8DYJ3mtCVOfbteY5gehuTzbL/DgaM6+Pz5MY1axbvzbwB4v1vQGD0sSLtIS7yGOlw6Vocgf8c2lZDnKKUv6NCwgrhIiYWB/zI3QORU7E6P//t6REOEY3eFwzYzsIXGjLQgESq2ONmyDQPqA7XADl4fYUpIrKZbLOc7TEEEGlodXXIfZWlyeXufqUR954QiLXh+qGohzaRiK7B8t9RoGgVVVya/WnJ4oMbswNdxjYhnQ/X8173npEKuHWyXTFsWNQl7ZIbG5z94xY8EXZVcvqGK1SWvHZkUTh1d8lthldCWHHC736W53ySVyzzd3V9S+0M1/r1Gi35XrYvCz9C6CQs5bObhOaOZuhCcnku2TBB7hL1OjaWgDOthSVQ6VLLxjdDFrAxCybv2D1/jZqL4sFmwKSs2d4w9V+95+Vwu4cYQr1PHFAWGOEm5WamfNw8Qmfu+iIxWIev1mlLQc1q5wthJGDFbsdEKOoIOrYUGwa0wIHk1aidHNKS0JV6HaFmCLpdploeUhRpfQ8spC427Url1EJDVlcG3itYEQUJbcs6YIYHUaEbhliopcI3WvfcH2JQFF0Jg3rV1EtmHFzuL7c2KE7kDmt19AikVWt4uWIU5kcxvs6mx31GWqet6TCjx5Pd2OmAZRWjCGLOLYs5eqTXrdrv43SbujbqwJpMlfbloV5qJb88xLBXur28tzODhoylMp8g5R2AU5P2Q1p6wrWwMTF2NYamb0BwQ6ur8SpOMUkqeNuOQN8sFN5fqXbxGHa/RYZdITV3bo9VT51n3cI9WuOPmXBmoy/mKlYQVzTCBvORQGIpsp8bVjRrfy4u3n0Lov9mMOqyyNetc/W22iT4dxFa8JtxcEe7UnPYtn1ZdjWduWlQ1H82VfVjETLdbdDEWnVqbrQifl6XFcDAgFum0LEyZi/mQZhX5LmZf6pwpNFbiUCSeh1aZBEJCv9rdr9f0XTXezWabmhDwu1adwmiT6eqzmtOktLvyHSmlpn0qHQp2GktxBH5+PWbQ93Aljz84HhIG609UfEWcYsuZtdUL2q0u/bo6zxpF+EnE2LRqZLrF7U7C2LpNp64ua8/4bnTod16C49mUTaQ2ePfpMS1NDX6WFbx9P2G0UgP0y/GKA4m/fu/FE1493ycN1YXRzms8O1SXyYfxW97N2phN9aLzmxvsrKAl/G9GLWcu3tWLo9f4XgOrpQbZqZs0pY7u6LDNfLOgv6cmcTGaEoUPW47N4QEtVw3pSdvlTTxhKlatriVEjhTztmtsb24Yi1U53qzREjXYT0qXn/3sl/T3hX6n0WO8TNkbqve2Ughv73TxwGp5LEVDb/P119S8O7qiPQpKUgGH6IaOJuOmGTbd4GEJnH6rxc38ipuJyEwtPAyBYm8XC9pOnUxTB5Hfcqg0Nb5mvaQM1+wk8Vi3XSyByM8n1zScBjsBBxQatKoMU0gP9E4doxSu0ihmk6XQksL68Y6pzO94PKUMc/ri7fbb98E9BapfQW7iDtScVemC0XjO9Vxd/JvJDNMQ9IeRMF6PSWR9xVubmQAFvHqd3S6gupNlaZi4nkMov3+cf0QXJv91uiMnJblTHegecSEF+D1MbNNnJ8oNuygjk1rL7h0i6lfaUgp2IzunWQPrTrWkctnF6uDRyai7JpoUz/sHHVxTXValZhEnBtlOneB5WZLtoFaJUVCWpLF6t8U6wM4q9kTFw/c7WAIu6zQSVu6OXPJgZZkiHA5YlUYQpRi/RVHl8OQMu7jzoMdYA3Xp5FpCapeEogDQ8SzmociUrbbEusdSSlv6TZOdKJ23/BpZsKScq8+i0iSJDK5KNY/DpovbUOCEy4tr9CXUxIOPXA9dgE+zRUkV1alJ2McyW/ip/2Af5rcjXE80IM+esNUzCkSvNMlI5OIJzJ0ac/GaHMuiKZe+sdow9HvspOAvKTXySieWmsLbKOVzieyki5Cb6Q0NWUNPnr/AF3DTbBVR4lMXtYTp+ApD+m5UGVn+cF6z1mhTa3XZyfsURk5TSpeWsxtIdrTE2y70mN3dBVWWlEUFsVAdZiVpYbKeK2/Nq+2I5G8Np+Li4oo0UHvI1jTSQI1Fphl47RZL2ZdmaZFVcvaUDlGaYIgh0x7U+E0NBimXJisttqK8EmgeaW2ILWVrZQWTO5mjvCTK80/6ionnfXp2HK5YbcpPZ+R6HZKm2ic1+SI06AgBgdWwmVVgeeJUeMNPoKA8Lxh2+3ip6n+328YRuSbtX1Mt/5gTfGyP7bE9tsf2O9u+0xPsWkPWl8r7CP2I+pGyHLebLWVSY7FWVrzXarMr1a27DHLyXchmpjy6m/GOntzcztEhX/3kp/QOlIX72dPXLMYzFh8UC3tz0AEhdbXOSlJDI9sKNH0F20qYZ4Y2dqGTTEWEdZsjyOt7zXE0dAlvJbpBd/+AlSGE2rqOJ0KTdkvnaa9PvlCxf3u+we+q994WCYOTY/YFvVl4DXRviyWecfton0IEWYcDH7euc3EpxNzUOTp9AsCLp0+4mkwIStWncKWxlALdbGdQ2A9Pxx/96DVfvfd4L4KhFjHGTkK1Xp/SrdMXBpPjkxYdR/2saw55mqOZysJ9P13hSP5m//Qpf+fHL7gV9eVFFNCtW9REIaB20Gd0qfJnZrwgpGJ0rkIY09sZtITserojzTKaQixw8QBLxmqnbK0ir7gei2UabbGiLdut6lOx3NF0JL6fFliNAaloSX59efVJ+fp5u4neaOGK6KnZL+jmoKWqj1tMrPqdt+NRWCau0ENlbo+Pojw9rwqsaoOl36HJNI5FpXo8uY8OLUXbMNisMDoN2qJSXho2hggzu5ZDYRtQSWF9oSM854RFAqMVuoTbT0/69Hp9skqhmuPdglyU3rvNDsl4jSPhZ1NP8MWK3oYFtTImlJAraUlX1tC2NDGqlmK2fqANBz0K8QxenQzxNbUvZucXWEWI25FsW8OkJyTFbg438zHWUnWk/eSQYUvNU9uuU3p1rkd3c67R9fr4DdGgKxxWsp6WiUte6QyEmu7waQtfPLr5T8+Jwx3tjoLp11KLdPWwBtygfUp4R9kS+Vi6RZWqzd9s2Ezl/HB0m6SwKSSd41UmuaA17VoLz26hiRjvxeVbvKMBHcl5r+ZLLj+oM6JeT1gHFcMnap78fptCwqrxJiZYWthCcL2ZVNgSkejaPYpq9WAfev09TFdnK2rymu8yEU87SUuIs095r2aziycE4avxhLTIaYmorm226LkOXSGK1rUK21D9jfOSqsgwe2qfRKlOsFbry9cdjGabTArNo7RkJ5GFXWmQFjr9O3rFyf2D9epCnbuT2xmJIGwbvTO8TowrnnCa5symam+Xfp06xd/m5lcZpuivOnody6wxWQsFZpRjGBotSWH5TouJMD55bYv9TpfMUl5qq31MQ85MTdfIsgpf9DIbjS6lMPl49YcFmu/ad16CB4NjZsIgYhsGpqFirP6wTSutUwhUudONcQv1oBKbLEoZiOhn40Cn46oOxasBrBdsZCPWc43+0TEfhbmgMF1e/54SIQ2MBMINTk1dUid+A1+gwtpsx9P9LonUFE61ObQeZgqPsxmOTJRWtnFb+6QT1adOo/FJFuQXk2/x9kwyqTd78sXvkQuT/S5c0O61GOfCZlNl9PZbfPULlZM8X94yEAUEQzfZTlZ8JTRfewd9iom6PCKtxu31Dd+M1Wd5WcOyVPI2SQvK3wKpPnj5kubTP+DpROUlPl5NWC1UzkAvM7q9fQ6Fk7KMLSpbzVNU7CjSEeNbqQ0sdXxhUfCaJiEVXYGp960Sv60RCQdpHGxoSk40p8ntNKIQUMfB4SHPv6dqLX/0OuRmuQSpc3r38X5YerZVoVNDG/D2w0f1brsxRRqQC5w/XFxh2SLOus2J1msSKV8IgjWplF6cB79EK6JPAsNOSyNaxvht1Wd9VrATHsTSKDHrNepN9b/5VUEpsl7tesKaCw6HyrAbHJ2wEVj8u4vze30Ipe9allNVsN1JLjVZEQsrk+caGFZBdVfXFBoYYoAVNYtkPaeyBCxgJqS1AZZ5J2eUYcjhGq7WkETk8q67RcA6U+O0Hq1I9DWZhBK7jRaahNXyXUq227GaPswdalp1XFut767XodyqdVnmNoWjsZFQ2mq2okjVoWw0fDqdfUxH9qxn40jt7mab4Go6+/vqsPn6m3NGoyVOR4BQRoc8lvD7aIHh1JmO1d7LUgtLasPer0vejnaMSpHSymvcXt+vNwVwrT6m5LHTHZSVRiBq6npuMxUez8Lc4Fh9jFLN2/rmgqEI41aGi2mHbO54TKs6i0VF6UmdYvOM82tVkhJubvjse6/QW1KeFeaIvcVx/wzdy4lidWEfHZ5hofazmRfk5W+xzLWKsihIhLt0G0SsN2rfFFFCvs24nas9a1UjukJ3ZpgGaZQwEfpCz3bJ8xBbePNa7TaFlChEUUZW5qSi8rALE0qROar5bYL3V5/KfErDp3TUnHr1fax6l91WnTWz9f28Zikpk9VsBRLe1rUaVqEx7Kl9qZUZ1V2JWVpSWQZRod6t3ejw4ukTADrtBmWcMRWFkxJItiF1V+ZUt0FCs/vDFi2vgy1qH/V6i7YIhltWjfkiQGxFjMrDEDF1rfpuKaXHcOhje2yP7bE9tt/ZplVV9ds/1LTf/uFje2yP7bE9tsf2/4NWVZ8o5++1R0/wsT22x/bYHtvvbHu8BB/bY3tsj+2x/c62x0vwsT22x/bYHtvvbPtOdOh/8A//O84GCu0032zwXYX2OT1uE6cp21D9vg63JELbZXg+tuPiCGKpymNyKVCezbZUWUXDVanGllNnFoNlC8lwzaFjKcRUvd4grQp2oTChkFEXVNj19TvGN0uKWKG9tuy4uVIKBH/55v/4tT78o38yIhERytV2RxDGVELJg28ykGJ8vdwxvfqGkVCX1Wp9SlH9rhyXSjOpCZO8aUAS5xwcqkLgxS79xKxQpDlOnpIKAfAySzEFkZfoOYYNz/alCH2bMREdrVa/S2uwx3/+n/yb9+bhB58fcnzyhKcnCqa9Wa9oCgvL+/ECR8/pi3JEt1/HEJh2pRVkRYzvn8iY+hg1UZO2LNLtOatbEcrtvcA1bfZFgLJMIz58kOLx3j6plvLNVJW9xGlAy1HIq8m7K+zKZcFdQa/OP/7f/tGvvf8/+Pf/V/X8jstsKYhETaPhFlhd9T66O6AQZpfabkupp2Cp9RWuCjZjQY81DCzWtAVqv0whN2rcijbdcr7EuxOutVx6VkbdV2O1tiymYzWn/a5Pw7UoRCG+bdXZ66mfj3oO//C//Ld/rQ//0X/23wJwc/merGjQuCM8bjbZCSF6ma45ftLirK+g/q5vc9RS77lLt+ipRl6TYmZazCY3eEK+nW0StK5CuOYkZFlJy1d7IYka2IKWq5INaaETCVp2Md8wWyp0YmzY6FYLUxgy/pf/+j/8tT78V//p3+fZqVIVaLU7fPhG/d8mXBLhEAiZt6dXDDpPAJivEqKyBO7IIHSGPfWemQFRkhJuFRrVxGXv7DWZIB3XZUoQqbWomw5aErMJ1DOePj9i0BHo/3JGul3j1lR/i2xNZaj5/C/+m//91/rw4+f/AF8U0meTJfvdJvvH6oyKooClaCnqpknD0z49z/Hb6CJM7NgubddkKefCNo4w0oLTYzVvfqNNUtXkewyI1jQEuUwZEwjFWFFs8LSM9VQQznnFZifiy2FCUcX808t/zG+2/+F//HcZ9g5p2aok4+L2hk0gJAqmy4fb9wg5Fp9//mOWopqBrmG7JpoIeGu6Rm5U5EKckeU6uhShP332GZs8YymqElezFaXAWutVQZFnHP9APX/g2UxnqpyjKjMatQLXudNsjPmP/53/+dfe/9/77/8nAK4vbihFtcHTTPQ0YyFi2wQ5dl2h8tMsp9lssbenzkvNaWNbaj2brk+aR+ShiBFbOVmwYnKtzhpbr+PcCfvutkq/Us6JuuOQyRmtJTqGa2C01drw2nvohprvr798e28OfrX9a7hDDzBEMbQWzahJh62Nho5GLgQfXveItCETUeR0O20cU10YM2IakpM87GWk2RZbHlsWkK12bDZqoe7iFk5LfanTsEmiDFsogppunbZM9srK6TUsdiIk69Ijl8Hgza/3IVhdkwgH5i5O0cnZCrtMEmR4sYIi/7/svVeXJNl1pfmZlm6u3UOnqsoSAAES7OEa9qyZXv1/+z/My3TPanSTBEgUSmWlCu1amJsW83BPJNDIQL3MI/M+RSyPcLOrj9hn78XsCq3eMx6I/EdZYkr/mmaHOxgwPFIH2ma2JmkSHFeNTVhDLDQKXsdjoDskwrRjJjq2XPpa4NMCprBatHWCkNng+A1p9jFFEcD/9Z/+M1/+6pe0qbqw1rMZ5kAt9tI1GEZddE/BgAO/gyeb1DAKNtkS11SLaNjpP5RhMh7plI7D6p3UUO629HpjAqnz2bYF0VR9Z6PZHNKEF0/VYYMPuRgntungaSZeqi7MzfZjWLgn/IX6ZkdQPrB07LG9Y/KNcIc6Gq3UBe53cyYvBvQ7quzFNWO6kVrcx9Mejtt+4Hjt3GtsnQpHV4dU6Do4jhrUgWXi6TGVGGufnwwZ9lSfhuGIotKI71Wta7q5ojtQz+vrHwuJerIPgyAkLmvMkRrjs8ijHAurUTvCG2pEhvos0Cu6jnr2YT4jSVt2Irvj6RZ2WWA4avytjo4hagSVCVq1pt2o3zvDmq6o3m/jnFF/yi4X/kjXIHtQlMg31ImN/lfgbLrRJ92pD6vaYSNMGlXdo6HF1oQlJd0RSx2kH4S0rU0skP0dJRO52NPNgfliiy4KE43pUF+tKEWNw7UM7FzKDkyLgj0iKkGvH/JArdmmFkfDMwqhEbvfLj7wAv9lO754Sliov2uNJU6xoi8Ub12nz+ihnCBoqaqcjvB8WmZEIzWynuMx9kOefqGMw7dvrnCygnDQlfF36ImaTJM16KbHqKvG6rDOqKRm1TVdLK1lJ8wwVlGhHdR8R34XMxzC5cd9aOgSH8CSPRtbHbwHnV7NIbAzbhfKGO/ebBlP1brshF12SUImyjrdbkhW52zXmcyjiaOr/t4tDrSWRWCp8+y0Z2OZIhSc7ajqhpdHSsoqLlJcIRka+DplvWUt5SNN8rFA80FKieqyYLVSRnyLTWjDS6Fi8zSNVgKNi+0B29TpdtXv3U4PQ4TUi7pFd138YzHiOxEeFSvh8bWanLWwLL1/15BnexwR224p0XfqzLCcBrsbYnfURjU9E0s6NRg8Lmn10D6FQz+1T+1T+9Q+tX+37Wc9QSobo1Del29uabbKOkjbBssJMB1lOe6bGFuIajU9ZJk2nAkPYLPdcL1UrnZVN1iWjieEu3bHod/16c6U9VTEKZ4UQY8HHvfLCnGouN1dU0uo1PFdwlbjQTpCDyIO+eOWY3IoSCRctLpbEYYeloTAzKahbFX/Wr2lLQx00cBKq4SOkCZbdkKj6cTS/6JOsDsaraNMWbsB21bPj2yNo1GXA+rdvE1MKi6z14Fa8zFLsT1S0IU9vWe6aO7jfIn7MsY2GvyOWNWtgTFVVuu+3tNWJUfnyqo1Nci2DwwLNpo5pRKS8MWh4U54U7+b3TIwC1rjoVh7Ti8Ysxb2jVjTsYQr9H574Mf5e8ZiZYZ4uMK0Y3VdbMvg18Kn+N9/+5caElAL63y9vyYvlFWXlQbj0w79QPUjsV3KRI1L4el0xwNSCWdYqYZQQLLblXQNi0q8j85oSlrM8SNlHXa1HlMpbA6bHbZlsnaVt2W7Lr4QM5yevOBwqPjpm+/U+2zXHzxAy/yYdb7IlRduOyWj6BRNvicJGiJXjZnjmnTqAlO86TbfQVetA99a4nldhp6aw9U8paMV2BJuKPc5hanYe6qkYn24xxPtv6mnsZc1k6db/E6f1UrCqFbD0UA9o52vuAtj7MPjaPAoOGa9UlEQI9+gofZh65rYuUYoUZC6cShlfLFMBsGQ+5kKTzl6h1i80Os4Rw969CLlqdzfrdjEKYsb5cW86PvYvnhUhoWhWYQSRp/f7olF4mDSuiRVS1qqvVjXBm35OP+p5kaEuuhM0lCs17TC9WoFJn1hoaldi+6wx0HW0GZWYkkIzjA9DmWKJsXU9mBAXdXkQmY/6nmkEsY1Gp/uYMDFhTCvnHT57rViFFqsbvCagkDWfjlPqBw1vo4T0ZscP9qHnn9KnqcfyDh8v0cqup7xtsQzPUYD9by8rsiFC7frOCzf34EwBPVPPPL5Fk04Mk8Gp2zW6vm3dxve3bzlq3OVbuhYAR0RMzcipfNYpWpNXd/ucR8YkQ41UGDIWFTFx/OwFsHdRu8SioqDeUixmoKzY9Vnn4adaBEOzyf0vAhPCC280EWv1LOjqIut6xgSEstyCLwuE/1B3HyPJ15xsqiocwep1afQLYyO2uuWVpFoEEsayqp2H8QfYn6+0u9nL8GoP2bcEWLV9oBliJSSUZFoJUEjigOlTSaLrwKyxZalxLGXixmJhDFrbA51yVjCc73aYNgxmOdy0+kWA5EC0bItDgd2wnqfHlZcy+ESmCGGf4Try+/+FMN5nDFm0rFJhOSVoUNWZFQSknM9E8NS7xJOx2T7lIOEM9qiYC+b0gtS2j4kchDprUtTlGgLFZZwvJC+qFt3OiGupxEK4W7oD1gfZIGtt+zjzQeC5rzJMCTX0AlsyuJxwt0iidkfVpx+rnKCKWsWuSglNDl18idaL0Y+A2G+mM1j4qrkRzmUWs8nkwtR0x0KzfhwKHWHfVZ2SxmLpMmoh2aJnMtqS1a3GHIpvrq7Yuipdz3rDknTJQdhO1nsbz96/yBUrCxJm5CLNEtjGhSNiStj6lUthi3K7prFdrPCFCLo/X6G1sj6KlPSpEck8kVmvWPz/vYDE8y0O6HXUYf5YXZJXSxoJd+w1XSu36icpNVE1LbLO2EY6QY+iTAL7euPN34pSvK27mEFB6xCLmEOIOwxDgHeyEcTImx/MsK0hOx5EGCiMSuF5T9dM9snXEiYt85SdnOlOLFCp20gktCOk2nYwq4yHk+x+iOyVO3Fq02M05E8esdkYOik2uPMQ+lSY3YvNITBHWFXsTrp9oBaS6grIWUvUpKVMhxLepxc+ES+Wif7pmYpEW8jjEg1jVYU1LWmYfX2Lbmu/iApDUjVempcC60NKS3A2J0AACAASURBVCqRwYk1zFadH6t9Sl1kaHIpBJ0BrR0/2ofciDCE0qvTuaEtCwrJyea5RaevLo8KKEvnwz7cNws0YRJKNQMtCj8w9OSNTm1GmEJirZsWpggaF3qCbdTIXYptt9iW6t9+vSD1GppCVNHTAztZC57eENXRo33YbmrS/YE0l5Bf5xQdybO2O8p2RyNsXNvVggrVX8vp4tsaOzFUV6uYZdaQaWqMu2aNEah5Wr2fUZUHilIMGx3QZezbluWiICjUGe0TkCTKsFjubrGoGI7VnFbtx1fETsjkDbuLVqn1XdY5aZuzWYvD49isDmpexqZB322wbDVOncilLwb1eDKiq9XsJWX1fp/StiWIUkdT7Gn2kq90SgyrIRJnaJ4kH/KFRZOznc0pXdXfCucDA5ThPGhSPN5+njbt9JReoi4ho8iwxburqi2H1YZUODCXyz1IItWfjqmTip9marPbdYkuL7Y3YbGMqRfqIHoT10SOyXMBmPS8gqaW52UaZr5lKLQ/tlEh9HYUdYvm5XiGWhx+NwRJqv9lm1++IhA9qothxCHdkQmdT1nsqEXjKklKNvGBVpLnVlvTNuqzqtYoVlu0jtqkYf8Ms0xIRbdum+6x5KKdBjXNNsOO1Fh1R2d44mG82swZBRqhq/7WGw4wxUoJfSj0x6VXVtcr7N8YXN6oMb262TPP1AI2nQ4XF0/QZIz9wKEv07rXGxbJmu5AeTZub8o8UwtqMOzQ7vfkkjj/MUkp8Hn2QoEDHEdHF9o014z4xfOn2D01xu/ma17P1SFptwG+a7DP1GVyOMw+ev+lgIbyNKczEXo316SodQyhI7uf3RMLhViZbXFdCFx1oG1zi1K4FW3TR++bBIIVMPKEZr3DNdT3HD33GUo+OndLyqXOXGiXnKzCl/zKpOsRFw5D8X787imabHy3c/ZRH0Yyn6VRURY1I0kS9gMLXfQxB2GH7iQgk/52DR1dAGMhNU2d4ckF9dlkhHvSogmIpxta/PHfRBZmm2F6XWjU/8b7PblEEyp9gLFfsJCcaFVq9Gx18PWHDvkqxXjcicLUPc4j1bfcqnE8ZYwZVsQqu/oABGuM5kGogNlqTrvtEXYeqNliUqHmyrUGIpd1rdZCUaywrIbjEzXGz84mlGKZ56XBodHR5VLKKhiI3lzo+9x+/xajFbkst0vzV6iunh+f0IqHYRg9elOTE3ne/XrB/UEtDKvuMDK6WLokc3ctd0u1Nj23xTGfY4syx7a8ZbW/o1yrfr02NV6KtmJ5WBPVsJJoQlpkrK4E/JGvaAqNu42ai7QM0CWXaAcTjN7jnqDT2Ay9Lg8CSrbZYx2rC8IpMwwMOj3Jz4YOC5E1ul/O6HfAydU6WdzccmgLwrHq4zK/xxcRoq7bcvzklH/41eeqj3HJXgCBydZiu8k4yJ69eHJG/4Uyxt58u8WsSpyO8iCr/OML5FiAUa/nW+7eqrE48xO6x31iMaQGPY+zI1HZ0XWOT7q4ApB09JRpX31v5B7omwGWXMKzdku6WxKKPmxZxfiu+mzkttRmwVLUdHTPoNrKmXR7z81myfhCGXaG16dJ1HwG9uMO0kP7lBP81D61T+1T+9T+3baf9QT1qv6A4sH1GLrq1j0kFd4hxpHygnf7W3ZLFSc/VNdkaYYrXtvRF5+he6JnF0PWVuRy97auRdP1sQSa7lgNi2vlqax3MVlbc+qrm30wsjik6l1uYw3ftj/oinW7Q3zt8a4s797iDpVZ4dpgaAWGWNWpYYCE4OoCGi9nJd5tVWcfQqVed0h6WNFI/tD2arxBSD9SuYBke+DuWsGt767fYJQxXQnZuFlMLZpxbpYS+BHjkXrvQ2EQi+dU1SWO/3js2nVO6bZDtgtluWmpxfOTXwKwzTUq/YiVoKSKZMk8E4X2VEMzQn79H/53AL5/d0cieZjfPPmK7XrJq4PK4S2ykg4BuiApu3XF5VsV2jzEJSfPX3B7oxCCdtQjCJSVm+xafN9kK7BTvfsxY3uaKMtt6Fhowg4/GoSkt9f88ktlLb48gptCPftu1nJ7syGTdXIc9aCj1kH/+AQjsGCnrMpRt8PnnQlmI4z96ZpYtBy12qHQSpD8znyX8sXnzwCYRi7fXs754jMVhdA7Ps/Hygu++PIXH8+BCJfaDrR4VK0w91cRo1BZ7b4zQd/tqFZqLHZFzDR8yFEVXK+ucXy1Z559fspxaDK/V6Hq5XyLLuFwpwGvgVg82NUmphX0rdO12d3EXC2UN2QGAf5acpCGQcfzSNL1R+8P4Nghtq7GZto/5uqgxuXu+opKS6lQ62YwDchEo2+R5Fj1GkRIddDzSURsebVKGE+OsXxh7jdabEy6EmZ07YxCynX63TPqTU3SSsSmOXAvIbB9q9O6Bk0i6OCswO89Lgw8Dhsa0ZbsnRzRD2DYVZ5Ca23QBWW42DW8ev0TT0VQOk8uiSy1f7/6u99gDI64jtU8tY3GbrejEbWV0qxZ68pjf3rRx2kadplaw3ezBYVEx6Zd2BcZhkBeP39yQSWyIf3Rc47FK/nL5uoObd7wRJCUb7cZm1v1nWFkUBcaXUEcb8uaxJSIFAlWFOBIGcTm7XfkRUM/EO+n3WJZai2GfsPQ8ihjNad1ptPz1d7M44Lj4x5LUdGYJTFjKWcYDoaQJ2gPqSfvY2RljUQosoTkQb2lrdBcnZkIU3fCip6pxsKpU3quiyaYCnNzh6Gpn6uNxb7t4Is79mXX4DbZUadqP3c7PoFEZmx3gVEk6LX63r1lk0m43XJbwpGDJdgM29boSEmb4/w89OVnPz0sU2wROk2LmsBQA2WNXjIIjjhoInexOWBIh82hy6TRP8TQx90RP0r+6t3hwO0mZXKhckTnw2c4YUYsbnlj2LS21HStl5iaw/RU/R5NbSKRofHWGVnrUbdqgmLDJxeF4b9sw1AjL9Rk75dQuRWZ9Kl78oytSAC1Vk5wPiRZypBUEbZAvRsvZDodoTtS42U26F5DLQzq/qSPJnU+795+h5OlbG2BmFs2Y1ct4u7QxjIATUJb+Y5CwlqNbbF/vAt8+eSM+fyKQVf1v+2P0TvqErrabXn9zYzpiVrg5nGXcq82bByXOJ0T/vUbZaB8v9gxOFEb5roK2MT3aH2l/K3XB35MU97KAdpvEqKOKFo7Ovf3d6wlvHA8OMX2JdRzswd9gyYhB6v/cXChq6nwSec4ZC75suUq4XTcY+CodaMdezSSbEpXGovoCM1WizhOKgzJez3vdMiyBF3ki/xggt0sKCtReYg1HDGIbEvn9d2MvRzEdaLz3f/4FoDb/ozr+YHrh3V6dE6nUWtt0v9Y3NiVXJ4f9WCXs9yqNW06EZ6EZnstrNM9jQgVd8c6voCnDDOitAe8vRI5sNSheT5kt1Gfb+7XeHKAGZ5BbUPgiOqB3XyojTs+fc66LjiI2nY4GOJKeUg38rnZ31PHj6sXGJrBbi/7Wd/x0606IJO8pRP5WI4CGaRay8FSl0f3wqNya9aGqJYM+2iFutijQUz3OKGUmsVWt3AHLbVIBP20nrEVAM/pkYkzPqeSfFJSaGiSq8n3OrrtfwBjWJaNZTwuMG1nFV6k5qnwejT7LXMJY/pWBytS6ySpC96/ufsA3Dh+OkXT1Tlw/NVz7uuG660yAOP2wOhZn9AQ2afNDZkcA9PPjtndX3L3o1KMWdwfMEUI2wtagqbPheSuR+cn7LdSkhH0/2qOPylLiiKhulPvPVvm1Kj31CuLoDPGeABMVRX9M/UySRMTM6dtpM5p0GEa6Tx/ptbG/d0dh4XUZLgm2zSmulEGS7GHwVDtg+PpGfM4w5Taz2TTcL9TczgNOjie+0EOzAs+nodMhMc/O47oyBlcb5ZsZymDSJR+yoZMwD6ulmMnoImA9fkw4EL+rtpsORxitAcZNcfG7hu8u1T7Ld7fYffUfeEBTguRr84TzdQJRZIpsXTGUYFnqbVRNgauSN01PJ4qe2ifwqGf2qf2qX1qn9q/2/aznuDrqzmTSHkDncYjFhSnU+sYvv9Bu+ps2KGUsodK04i3O8aBsojaes/9awVDXyU1GhqFeGJls0E/lGhiSWmWzrJQ1sI+K5hYBnmuLILk4PNUQAx0W3atRVKqZyRaRtM8ftuHkUvoqD4YvT7LdE4iQJnQcYjFKytth3AcEkiB5eX7Ob54t2OtIK8rAlN0EYuE69stmqBlw+E5jYB0Tr/+JWZ8xUIAH7ZRP8hhMR318W2HoCcFnT4EXfVzNOyx2j5eLK+3G+bzkrOpCgucnJ+yEeTgbV2QN9CLpLTkqUPWV17Z/PsN90nKm81b9Z7nn7MToOxvf/wD5eUlT86VkOzRs3NWm2sySWznpsG6Uc+o/RGUJffvFXqxXi85PlPP0w87Ok7N6Zmy1hb3q4/e35VSGgqLUICL+92MdZnzh0LN28A3aETks4gbhvboQ7lGVtX0xCJ9+8OPfH4yIBqp8T7s7knja4xaeWYnz04xHUGO7huOxscMd8rjiU767AT6X+kap1afREKCjTP6oNMWbj4OJwbHytPWix1JesBp1KSGukspKQO32xAaNrqUKNiajibArpvFPYdliaGrd3u13rH7oUUTLbzIf0q7Vc/VLNAdh1KX8grXYDo+le90cOKE8wdoulajp/I8tuhxSb59XMzV6Z2QiEj17Wz5AUDjeDaGH6E5UvYBDKfCljR2mM0uWW0V+KU6lGiyn56dWSyLGbEguKe9Cf1hl9sr9T3LzRxDkMpLN+fUK2lF2FWjpiNWexXq7HYNjhTI2yOPxfbjdQSwXFfEcxXpcFhhbu7RTDVvg+MjDvdqDKf9DuVFh6D7wEbRgBSnr5sDq2rP8Ew9Pwlyto1BVSufwPY9wqFKddxYNe+vf2C1VACQ0OwiEW3GT5/SD56wupdQQGuSy77Mm4qaxxFK3ekJ83cZV4La9jsTokDKzdKWMm1xJJTW6+l45+o7v/v+irfrH+gPVRg17Lp8/uXRB2RlUSVYop1pRzbZfcxqo8amalysQu2DbtNDT2JIpHTIMKFVEYk9NQU5YU/tt8UjorqNRItsL8R31Noz+hOaosKyxaMzGjypaxq4Iw7LHZEuQtTxmqWUcYVmw3qRU+tSttYxOexTinsFntTMjNffvAUg9rv0/d4HgOQ63uJ01LiNxyMO1QYvUHdEkWbs5F0iKa7/a+1nL8HSi2ikji1vci6v1CB2khjNtGmk5qlftJStWrSN1nDAZJfLAZa2hIMHtN0aI77/E/NJvUMrW/JYBmscosVqQQ0GE54+e4YIBaPnJclG4shtg645nAzVIr4qLIro8Rq7LK64OFELuu1Y7DEJ5GDarpcYAn13PJ2q1TAe2Dd6I7pSq9PRCvbrBbowvRyqmF3Vomlq0+z2KQMR4w3dEUao8YUc0j4mvqG+U/da6rLGkclxqpoWyTPWBtvNx+UFAJkBJ8cDuk8E/m03xKk6lM67Glau8f79bwEwe+fYkr9KbI9D61CLeOebq/d89psvADDSmsvVHZr093g0YrFb0LXVIVXbFnspp3DymrA0QMpHvvvuj/gi0PnM73A6HNCVkK9TfKwIPpbYfLa/pSshCq0uYb3n/kaN6Tqo6QkCs9MJ8PyYtdgEnnXEPFbfX6YVrrvjqSyMw36G2TMITBWe3ZsRreQznDajfz5l8U79b641eH21Zq/vV+haw/MXyghovBMyyZe5xsfbIpMwYhxn2C7UjfqbLM+pZV3s4oQ2q6kc9bz3NzuOpMSoqn3qqsR+YPPpO9zOF7S12idh/wI9FHHpoqEoDmCo8c5WBrNS0LjugTab8ewBydrvMluo8NjN5TVaZWHsHy+RcDQPr6f6b7UZmsTfLa9Lq9esqwfEaaVqHIGx3SGKCvoC18vqA6uVomX6tmxI8u0HFLVpT4n6v6IdiIjxoaCUi6DotfwUv+VkqkJZp9YFpVzIZuMQtUc0kmvz/Ij1X+kDeoet1LrqyZKwXhHoKtw/q9aMXgoS2il5ebSne6LW9wIb91h9ZgwNzFyFsgEG/Ywyqci2Auk/Hf5JNDm+pfUOnHwlIuGDp7iSN3/y/JekyyWFnCHFds1EcsDtZMDZxctHu5DUGqbv4AkSvmwPWJLq2e1ylrslY8FJhJqBLyU+UZPiBhqNIQxYiysu391xI6xHbV0zkPKgcXBOE5YcYmWoa4S0rsq/39y9oh/0CaU8xzEjqlowBa3J7mZPKSUMj+l8e1Kuk5cFPcmH9ztdtH3JeKjG7fiki/ZApZkZvLu+YSRMN+22JJT0xZcvX1LnG7Jc3WzJwWM+v6NaSv5QN8gEOarVNXle8MBg5zR7nEatr9NoRKwFXM6FDSzX8SSkPzp6HKX70H7+EmwqHJGvD+oKz5QC0n3OplnQc5WF0lYV+e4tAO5Rj0nviH/7g7owD5ZHbAn89tUNeXXPVCzt49Mj1vuCIpdaMWfIkUD9P3vylKwqOBuqxfekKTik6qI1c4tsdUMuVvyicYjb3qN9WB82vL1UFtfws3NazWKX/olbs3rgcao17t/dUojlGg7G9ITLUdvOMaIBpni3RZKhRx5trQ6GvExpdXXppQ3ohYGxVX2qHZNMSg2s7QHfrAkFAJIXB9KD2tCOnhPPPy4vAJgOPE6PT+hM1Ka6K1KqVGp1OiFTE5bCrRnf5+yk1i8rAxzDJhQg0CLXWMml41hDDPdrklgtFH09JNqOmNoypm/uPqg9d/WQ67srTgaqH0dnp/SE4u0ktPGzHfmNUEntP/ZmL4WswLPm9OSC6IcGbQyvfnirnm/VHF+oQ8rpe/iDAG+pNsbVzRW5WMoXw2MOeszhoCzFxd0PBO4R7x7qjG5/4MlEcoJODXXFdz8pK/7066/wBXqfWhm79QJ/rbzmSDPBEC9FqKb+vAmVJF07Yn2zRD+oTVzoS4a+upD0puby6h7PEGX7LGUn1GCDyZRVWnMVqwOr53fRAx1dohnf/vgDQSGEC70OlVVwJAraSVMTZuqzXlDjODadVq2bAjDFGAuCIUVuYrmPF8vfru4phd6vH3iUltTL9n1SrWAmXsNis8QXT1PLStyujSYHD07O0ZnU9y3eENolfVd5Jvv8wFX5FvrK8o7MHov36j2X6R2mPqKw1fjv2xixr5n4Fp1Ti9kbdWDP7u5I0sczNeuspC/F+YfDHfvNPa2m1peuhyR7tZ7vb9d0ehv6wiFXJQbf/F5dls/+4z/QBkN+/8+/B8Dzt+S2yVzoG7PUYSP0cp1iQ18rscXIXtQ5XV09Y7XK0dYH/I0ax/jdik2gfo6iI6zo8T7cLWKCEkKJWOzLmo6UTY36JUXZcL9WY2H3QnaxmvtONyJNXDJbnYPRcUGev+fkqZzRwQhzL96sW2GaMBBe5u19xb3U2xntAG/gUVZyYYUegRyDumtzWDfcCnfnB7f3z5orZSC3b29oJTcfaCbHQ5djwdGYxYFKnI3NZoGb3bMVwN6SlH4mNXy2R+AGbIT79zbdcXd5hyuYikKzWUtNrqcVhMU9pRgPgeUxHqgLzgx8XGxmtboEd0VC2FfRKT/6RJv2qX1qn9qn9ql9ao+2n/UEk2RPFUpheXVHP1Q3sFXk2E6L0SjLMS72xAKVTQ4Z7y/fsskeiIN9LsU7aGqDgTeErUDvgVHnCHuqPMqp12LqEm+2jih3W/ZSIH6va/jyDMe1MNOS3Vzi3VZEbR8e7UORpNzfqFxWZjdUQYelWJlh4OOHktuyG07bKaUwqNRBj0BYSMzOEL1MaSVfefy0R5ZZ7HZSIL6MaSRQPTieErZDbm+VV+f3O1SSr2yTgsDMyVJlrTRNTCW0dHmp4RqPh4DKdMMhHnN9qaz4hV6QN+rnmx+vOCwLxp6C/rNO+OYPyvOd/M1/QidkL/mc6FBTCjHucDLhPP8cY636dOYH3N/YaPK9g8QllnzAyWmH0jnnb4VAfOznkKo+fXE6oq7n/Dj/o7zt7uM5QM2hV+6Z9tR3zg4Zf3x/S5Irq3Z6PCWpZQ77NoOpx/b3Kuzm5RXPp8oSHwxcTs58askZnUxrjo5snomrcjqp8PrCEFNmrOKK3teq9CG1C1ohRzgZedhFw2yrUH95fIUjFGd3+oPb86fmiTJDR6s4ZCs6vsCvDYOqUO5eudxRpTrzwwOtVEJHLPH1pqBxNEIpQp5nGy7GxyRCPzf/5g/sRH1hfHZBdVjTVGotuq4Okk857DK6XYtSvL9u64GgeEtsDGtK6XwckgY4JC1lIlEJLyKUBK3btUn3c1aH9wBsqoRASl2u9peEGhiCSHQ7MdGx5CD7HcrdEst7iBCVvDt8T7+nQswn52fMEvV/dhQxcM+5eS8sSwedoeQE06KlYxfYUlqx2x4wmsfRoZWmYYsX7Lg5jtdiSojdD3RsIYlujYZ5WvH+UikIvJnnBGMp39lsuHm3I33AH1QxxfoGSxC4pVHS66kxtdqGsojQIjVvXmGye6f29t1+BZcrBnsp8Up0livlwRXBMedf/+bRPuSJS7IwOeoLqrfrETwU2Vslm3XCStZ30Vp8e6lyoF2vwu/U6MLWNHlisdrrIOUsg4nGQUKOV/stVu+cUKJwVd1iS7lZa064uQEENa8ZB4YPHp0BhuWw3IknWn7sJxlC4jAc9zgkaj/7VsuzI5eupH7KIqOs1dmGnqE3OputWt9Bx+F7CeG/+W/f8A//+LdshdLuu+sZjmvhiipOmhls5D0xTSynId6o7x0OO3iBepfr+/eEoy84EgL1xjGZvFCpn6j3cdnWn7efvQRt20YTpgitaLmQWhJL03g9PxBLIj0uQ3IJwaRJxrvG+MCzObu8phC3//T4mP7EYCBsG/t4T7uZcXrytRq4PCaVAbbqPYNixf61kkhqsooLqb0bjI9JjYi5gDgwHPbZ43Dk4+OuouEBkmJP23M/0JYNR6dEEsP/9uYV5xcTauGy9P0+urDFz1ZzLLNLjurTZHRKGbeYuoQeGpubpYT8fJvOs5dUO4Hsh32yjeQwqoo8TbjbqYVaNhWasNc0RYmmP34JVmVC0LRc/6Dgzz9uYiYis+Nut4TWCH1+kL8tMK7UtOZWyecvj+iLrNVpvmC1lsR5U/Ny0KMrfIJHjYG+t9jO1Zj+zbPnPD1V/WvskrvdNZNW5VatuGA2Vxdb2g0xtGssTfX3gVrvz5s2UhfGbptzK4ChNF+gaRVTyeFgmfg9FeYaT08YXXTonkjocrtkvVWX7EGb07fG2I46iFb5NS/G5/xmot7tiy8sBl+rso/vlgtev53z5d+qsSr3CfdvfgIgfvuagdOw19V4zPcZvVJdlvvy43CiLQbYcr9n0NQMAvWdWZxw2Cijw8mO0YoRqYTpWSXsJQSUddcsqoZUQq5et4dfWUSR1FIdn9F0Vci31x2jHXa0Ur7T7wy5l7KLJI1hbXL6VIV6im0DrZpDsyhI0x0Gj/PoPjn/jBtRBWi0GtuS0pH4gD8Z8qWk1f/p+3+mlrDS8RkcihW1pd7F8mt0YU4ad3MujYJEV/sibhI0p0djqc9v41v6x6pPgdOntWxiqXkzDIt9LsoMmw3HXYdU6t80qyb8K1RXvXGIlqvzw6htBoMRhagoLLYZ15oyeN26hz21WYkyxTeHOceifjG/esV8HWNKqkdzMvQoB0+F2MtlxpOX6iKfHSrSosIRtiRjnbPeq4v197+/wrnd8EwozzT3BeuV5O8uVixf3zzah+enL3l9G1M+pIFy80PpyPBswmdf5MSZWt9Ne+DpQD07zWYUxZbgWPaaZ2G3CZeSRnGTBt2RnGSr4YcBhZwvveMRtoQ215lP7pZo9YPixJ7bRK3TF6fnrHaQZQLqsT8G97RSEmPoHTpCCzicDKmxWMfqrGv2FbEw29RJSV3BRvJ+uumApYyKQ5Wxzgx2mprT7viCIo3ZWWpstLbCl/X0zQ/f8eJsjG6r8c4qi3whTkTu0ncMJlJP3GxDLF2tJ/MRVZg/b5/CoZ/ap/apfWqf2r/b9rOe4MaoMMR6GIVPCPoSSrO7/PTbt9y8V4ADazglEdWEqkqYhC3GQJgE7u+wBbZ7cn7O2anHQFeW9utXM67jK7Z3wg13fk61Us9Ivv0fmOkSZ/XAdzfDNpR1Nj05Z9Y0BHLTu2GXonnccixbE7+rLIddusdsQ/rCgrC6P/DTaxWaXczfE4U9NCFPbhqHVoo9X337nroK8MdSiFnl7Fd7ShET1ZqGSqzxuwzy2Z5WUxbSZpdSC5Ky57hYdkQlYVwwaCQkY4+69AePM8aY9ZZ8fkd+ENb70qSrKU8gbALcQ5dGOPSywuZSSKqzb96RV9oHJpJfhBMa4djc3W6p5iv6hrKD/MjF//4NrXB0Oo3HxeeKlSavNLbbG9K5+l/Tr9GEyv319Rzqe9yhmqeo83HFfyKgpYMVUAi348tel7+PQl6vleX8+rClMVQIZNyvGfgNv/obZS2ulumHRP2bN39kqIe8fPZA2H5gNv+Gw0yV4Wxqh189UcnyRkvIkntiKVmo7ja8/vH/BaBdbHh5/o84C4kgRB5D4U2d9L/6eBKEyT+ebyHOhJEYgibAriQ0GusEBpx1lXebGLc0QrCQ77fobY0hYczJqUGSHOgKaOqJ1bASoMrtd9+y+PZ7nk8V7+Pzi8/op6q/S9Nm2Ak4DtSa3lQ6taDnNoeYd29ekwqpxV82x7YwtQfWpx1+qN4tsyvibY4u3o7lZIwj5XmeX/T5aTnnVtCiQbfH2ZGI3zYVTn9EJmAMdx9geZ/x9pV4zbf3fP1SefdVm5LMFh/Ins0mwBRk3zByybE/6P3ppo9tP340ZYeWgSNApPaIYdSw09W7/XHzisVezfXw9AQv6DAU73rsmxyEN3c+22PZDhdf/1qNS2QycSf8+P3vAPhp/hr/WO2185e/Yn57zypW3taF0WMkHuV3q3/mrLF5dqGiEHeZTc9T52V/2CNePF6qYmjgBxHpRhiYc7vrCQAAIABJREFUzBhLADybpU0QBExF9/LLzwd0TlSf3lwe+G59yedHKuQ3meqMqiHRsZrvKjNwaiF8GB5xc5WxWKqz4Nn5ObuNICd3HlWtETjqb53Wxhio8d4cLHapTSKsLGb2MQl4KCQWybbANSUa5hnEhUZHCA/OpgNWgi7/7psN27SkFa9RrzQmE9WHQeiycUziRDxtP2W1LakkhXYx7TERpP3ddoQenFGJ8g2eSyPnfpWW3F9dMRUkaF832awkAlf/fLH8z16CRqGxFRqcp4OGUjp8MBvOzyNqS7melh3wr+JOO01BvLklFQRkcNTidIStvHuJ4ffQBIZvam8Y+0tCgQdbaxNuvgEg1lxc06YzUZ8djybYmtqY20PKfpNiSf2Z0XWJqo/zOABWp4MttY6R4/P27ZxGEIpxDu+/V+GToNdwvyjRxdXXdjuWMxXaezNPyWrQpAYuaEq29+8ZCwXYrimIhUD7xcshRlgTzwQdux3Ql7qqtm3I4h2V1FvWaYkmF204yXF5/PD6/O9P2F8nhJHKHx2vHAZClNusGjq1RU8o3Co7osrUvKz3Cca8pjHV4jvuh2x3gly8m+F5Ok9O1IbevbtkmjWcPFE0YpO+iyllLvNNwd+ffkEqdUabZIsnVHT6aExaLbncSG5N//gSvBQ1+TK5wZU8cqoZTDsW56dCkn2fEYzUcpx6BubiHfEP/zcAztGYXz8Vaq59hp7NuHyjkH55VvG7mUYvVCFud/iU+Z1iAkmTBV0jBWHk/5+vf+BK5vQZLZHdfhD+DGiYysbMHpGP0WUOK9emumsRO47PP3uGlqo+aFaPo8LHF3Dpel9RocawW2v4+B/q3/a7HSfDCUeBOmTK/R1BrD7TqgryFFcTQdOdzUFI5y/GPY6HfQScSrwr2GdSurOYsbtf0YaP15veLN9yvVKhW88r2UgYUzvrsMtqWtmzX/7qbxg8URfyOp1xl2fwgASPItJafXa33eN6AV1h5DiUFtEg5HUjOVEjIvSEtmxX01YFU0OklZqanrAF6W2LaboED8jR1YoqfZxMPm1qdht1YfheTdY2ICHWKLLoDaXs4WmfHzYr+l+qS6mzCciFBeWi38VuMxioiy2L+jz5P/8Da1vCusn+gyr5m3dvmC3m/G8nQt3leQyE/PlvvjjlN3XLk6nab93iiF+f/Q0AvenfcrV+HKX79uqG2fU1A08ZL0XZkntq0cRVhpWlfPUb9T0vnmjclioNkncdLqYvCEZSrsKcebbHkjGNgojNO7UwTs8H6BOPVMrK9NpGE3YqozwQtV0CYWmJBmN2UpJQ4uB0J1iapJrij9U8ng3VRRN1LXZz9bl+sEj2a2Q54/QcshtRHXI6DCcdIgmBmtuYJn3IR3coDYdc8BBtDes8xX5Qm9N1DFH3mJ4MiMuG2UatjZe9gFEoMfzQp6obUnGiyn2D+aCK/kjJ05+3n/00CDx2a2WBx4HH7EpdZqU9wzctzgLRp0LnfqgmfLc+MPY1NgIM6Rkav3yqRuaPN9/RefKUl2P1u+M2zDUN/aG2bPsG5055l4Pxc7qdZxi+WD12hSV5rx+vrti0I5a12tA1MGseh8FGpz1sseKzrOJ+fmAuydyo02c8Ut9f6BU3mz2p5IOKOOHtW3XQbgsX3B6l6Lvp5Z7DVf5BTsiNfFIpetbfLNHsiP1BbehXt0vGllindombxOiS3wk6LZol0ivLA5H3uPRK7K4h6vPtv6rD3Ume4ZriMb+5YTLtYIfqf9++WeMIoOJlp8/11S07S222g7nm6VR5O+Phl/z4T/+Nu0Tov/w+z0/62MKJmbxZUorV/m6f8eawpO2rfoxPO/QFzBTZIXO9R95Rl9A48oDf/S/v/8XnyoMfGSFPLOGnzG4I2i0vBJhU7z06Aik/Ha0JtztsW2ootTU3r1Qe5ouLDv/91SXGTuVbvv7yCcYh59CKdlnYQ4vfqv/TW45Di2Gj+uH95nO8v1MAop9+919ZH35AkwOkHzzj+katvZSPSyTuFuq9SV2i0Rm28MqWZp9aFEzcViOk5OqNKoPY5ilHE3Vg9ic9ZvcbkkwdDGdln27eUkiBft0UaAILb4oKvxuQSM3s4tX3OKIUEcU5zf2SXKIZRWJhiRLJtDNiO4D4r+SWk7SitlV/F6VGI/3UNIfr7MBU6n7PfjkladR4LuMVfj/ClX5UZGwfpME0HQeLrfCa3l/NqHWf0UR5f8+fvcQRS313c4uVtxxLzuYQJzRyeS/uF0w9g1FPXYqXb7+lpz1u1A78PlpXnS3jzuf07AxdDEI3HFOK1mC3X7A39A9KHE+fHxFfqrOsE2o8O474n6+Uwe35xzTGEdNIjaNxMUGTCM3dzSXum0t6I7W/ztyS94J38GoD24x491ouqcDH9tX8Xq9/S9I+zh2aVRmJrmFqD/JrDrbIlM13e0K3wRGV+62eMRPgT3g2QXc7rCXPaTaGMvLFg97d7Li9Umdpz5vSOfsVf+ep/Ph6EbOpxDNKdwS5TSG1kPN5xvsbddb13CnD3oTVDwqU1vU/nof7a3V+aZ5HKJyyRVrg2yFIqdLN6zsawT6MTAd7f6AdqvVtjh1MuXoarSLLl0R9dUFuM5Po6RGOId6b61AKx+lmsSTNGvaNusy3K41KvHvn6AVGYbASrEKbwfOvleFSGT+f9fuUE/zUPrVP7VP71P7dtp/1BO/ev6bsq9v7p3VJvVIWT9tbYVY1c2Gyd49O0IQFptzO0bIae68si+fn5/xC6titeM/TKuOlodzpr798zuqpzfygrKf17T3bRHJ7iz1Xm1v8rljHgc1QdPG6zoDB0QX3kpN7lVrUi8cRQEXWsBehx+tVwv5QsRBIc9FkvPxMWQu7zYyb+xizq6zh9abgzeWfmEZMv/oAS7cMi2D6ko28d99wSKV4Pba6lGFInqhn3G2XdMfK4g6cDml5wBZI+9ZMMKR8Imk0bEHu/WWLXJdD0yMKlHd5Nv41/lxZg+vdW9KeS5iI3tu24mKqnpfbJsmqpj9SXsOz0OdUWFnsFsZjm0ux6sZPLjh+eQxX/1XN4/KWu1jNodUY+EXB6oFNbHjBdqYs1yWQDSbYpyp/+PxFBvyX/+X9WyF7jvoOhigFLObvOHl6xNFEzdt/bHOavlpDZ/qY//n7/4dIINbGBu7+u8rlRX/7NUGy4rBWa/G2TelNBsRi8dezH+kuVL6s233GuqqYzVQ/NruGv/+VsowD/deU6x2nhsqtLvc2S1HCqJuPkcaR5EGs0YCx5jIVEuVa10CMZa2sWGR3uIHkgHt9XAnXJEXM1G0IRuqzSccgsDJupUjYtXw2kvM18j1h1Gfkq43THQ5BQoV1o3E9q1lI+mHnOaSteoEiztGdITT3H70/wHAwIo7VGrO0lvtahVgPt3uMiUUhCNhvX80oxCvdWjVRZ0BHhEwbR6cV2sPOwaFzNiEpRZh4FGBbJkcD2cM6+JXkqI4vmN0uSISAoa9P+XEpHtR2j7ZvORe2f8exaf4KIf7y1bfoEgUITnt03QpD0gsnE5N7IZ/Yz17T0nL9r+r34xdnTITA2dglBEMdYyd0jn/4I/+2viK9VPP/8skFhqbW09mzLk1gUs9UH//pX/8Hy29VH86cLml0QSEEBBguuuzn++srGvfxMo/B6AgNl0BEq1t7z1Li20bgcL9+y/oPUgL03GEpxN8jP8IydQJP7afAHZIUMa6kSW7fvEMX2rZd1dBxGmqJCti1w/RclQrM9yXLZUohEbLr2/fkMjaVUzDSawJhK7L4OKSbSSmTHVc0QuLgjCMqq2YnLERO4HL6QqVWkk3MZrfl9kdVgnP6rMPoyVMAfri+wTdtQpn7ui1w6eCI7mactuzmai4aPaIT9gn6wtBTrUjWKiowDTxWW51Uwqx22pAkKpKyTx4PSz+0n70ET498QhEoLbQcJIY/X25x9YQkl7DA3sFJ1Ys9ffZ3eIMewyMVdnvR0/nsTA32V1+fk7sd8o0axJPTKb94csYf36gJ/13yWzrP1WHaFDW7XY4lMN5y/JRUmDkSbYBTu9wJW75uOuybx5nzIyvkRnIUgeegWzu6Er7SgpLrXF1kO03j+j7GF3LNsD/FlfBMfDmHMiWVQ3lw7uC5JpczqfezQgz9AWTQo6m6uEIY2gsmVJWaxMwxGQ9fsLxRoYblMqErDDU5sK0+Li8A+OXf/iP/Mp/jaGqx391vGOUqjHvy7NfMdjXxv6nQcLcXkhnqPd/Nd9SGzqmvwi5PwiEboapalTEro+JgSahQq1jO3/FUwpP+ZIzlSo0oNaY5YGKr8T/+8iv+Za4O0Ksf3/G+fs//8Z/VZ55wLv5529yrQzl1DqxqtWifffWEfj/i5XPV/+kkwB2o8NFq19K6fU5OVIi1t9vwdqI29022BTK6UtpS1Bm3swWT52LMLPasrtT4BuEJteOjSW5g1PU5VLJJun2GR7/gNFLgiLebmP5MzdOrdx+LcHZNNd49zyBsTJJM/e1JZ0gltDBlqxPvcrxSHZKpBvlCjf3xaY9A11ntxJCqY+xpH1PCPtm+Id2qzXoUTiiNP4n1zpKCRlRutV2Or2tsVyK02hzoHKmLRm8t9OTArnxcld02TGwRtbVDg9lS/ewQcnYyJNeUlfPT6z/CVL3n0csnbJIF9z8Je9Co4UTC1p7dYVQMyOSs96cNgTNiLYxFs/kcW8qI+lqIGxxR50KbZ2sMBLQy31ek6ZpKcqCTUxczfRzM8HLisRcuyLOxT2AM+N1/U2mCcwI0MUA03aJnaEyfKVksvR8yHag1FNdXFNsFkVxYi7zg5m5LWKl3HVgOuaQkS1q+evkVazmI31YHzBdqjX918QvsnYtmq3Og1nxWkn8aHl9geI/Xp4WWyUIzoFXvOr/doDvqTJx+1aXF4vUrtYZXTcTFr5VRd3kbo29Kjp+LsVC6aLmNW6izZtDt4wun2Gg6oU4zEmFmyfMQXchirYlPeX+gKyVveTHkIAoxYVPg2hkvv1SOilV+DNbruWrvWXisdkLnlzcsNzP0Qv39yy9+jS3plEO7xbGB5qE8xmUlZURJkqL3A7aVGovb2xVOoNONJD9f56wllxm2NnVagIR/Ld2klVSAa+n4kUlfDIJstSWO1RmlB/8/uENHpk8aqANkv96TjJXV7HgGnjEjztVD2rSkI4e5eTxC64w5GaoY79CvcaSA9eWvLjjkGrM7ZcmN+iP8bojxwG/X3xF21CQOIot6sWZdqN/9wTMKWVSH3YZik/LjUjj09IK3N8mjfXBqnVD4C5M8ZeSaaKjJ+Jcf/40mUN8fDZ8TNkNKsRoKp6IRWiEdCAMLzXuwzAPSzQpPaNU8L6QRIm6zCfjXf/uRo47wYPoO2UJdAknY5z4uMWVhhVbAUDQZBw7oxuO1jp5rsCu3zC7V97TVlgbl0RiLjLZw+FrkqdJlyXfvVP6sMV3C7oTXr1SO6ur6Gw4CYliUW/LNPZ2ROvCnJ3u+u3rPOylsz6/e4kkCPLY6dE5tFWgH3v3w2w/e1Z3v0No1UjpGN/z4Avkg2XJ/x9FTNS6jL4aUrkbRVZ9Fzgk3Qqb9hx/+wCLNSFeSa9ovuRIyguv7ewx7z7OuFH0PI4rdnrdCsaZVJcFCGVVuUnF6fMSJgCUutwWHVm2IqshZzwqyG3WAXqcJrakiDffpxzm1/kjNU3K3xdwUGJp6nuX2mHSVxVvrCcb7V/i2WieuXn1AqBXXLXG1wpMcWVG4vFpv8UZqn9SagSkI6z4Rmm/RF1L0u9uEWOpgs7slpdZ+8P6GL56zEf1E09LROjrm/nEPpD0kpHu1FmzdxxVtP9PpYVYRazEIB+NT9sKj6tQmXmOyE+CXr+sYYnAas5TtZkM4VHP6dBSyWeoYQvN13u3x4x/V5Xk/v+Os95JCeFbnmw21HD+R69PXK3bi3TZNwqD/OA3ixdkRca0Ouh/f/o7IrymGX6qxGXUJBJ3sRAZHVkr0tfrsD7M5rUi/1UaX+fo9L75QxeyR4fA2Lpkeqfmfpw15oQzn5euf8F4+4Ve//s8A5MYl/7KXKETmcShMMsmRJrsd21qdSUNvyqF5/WgfkiRhM/sJvav6sd/uGPQkYjBraZKGgVB9lYc9+k6MHL2itFsyUbLPw5Tsdo22Ef7M8de4QuLw/vLAbrnhZCQo4tma99+pvT3pfYUVGGy26uKNwi5joYXzyzWaeSAQkpSu8zFIzJJ89GQ0ZSvAmaRtmPT6nMkd4dMwu36r3rtN0esMV8QJ7ApcqV88GU8Znz0hEbQ190uaPCeS/HQvCsjfqjXbNyziKiU9qLN++nRE2VUGyT4vaZwQTaSV9EpDVPko6wc0/uPtU07wU/vUPrVP7VP7d9t+1hP84/ff03+ibtpBZ/gBVRmaIdOzE570VRigLcEQqijSiGVT0EgYJKVHIh7O799o1OUev1JhrzIas01tumJZfP75AEf+zwp1xtdXrJdCmxZHH4igN21Am/9/7L3Jj215tt/12X1/+nMiTkTcNpt6VfXqNW4wtmk9xhOEBH+AQTBjwBALPGFgJISEBBMmSIyQGNHICCxZDDCW7We/96qysjJv3nvjRn/i9PvsvmPwW3Hfq7qRyYARqlijvBkRe+9fv35rre/32zJ+JfmdTENz1e3q//qNNlxcvsEXKMVwNCec2fzyvWINGaQWRSEehx2yq0I6IcnWNZjIM3/2l3+H05/8Lplgl5pyTQ+d8VQ9d3u/4fatVG6ORtxcveUg9ElWdSAS2p+3/+wNnqsxn6l3jno9XsmN+bhvsb7/lHIM4MP1OT0/4g/+BcGvpQMW76SEfWdh6C1aqL5t1JloyO0ClzRvmZ6om8pB83j7Rnmx0aDHz376GZ0tTD9Vwb5JOJpJCXvvNcNj5dUZtuqXf/THQo02jkCYhG4urmn6Hd98p+bGT1afevCNVA8eqj2HVD3/Vx90uibl/bHy6r48GvDma5UzeHuzIwkjru9UNV+32nJdqdtc4LhkdGwKNRf+yo9/TJobDM6UV5/vc3RR946LkO19y51APb75dsfnJ0IYzgG7jskFvjGa/pRVqsbbemxZyP/a5Smb9ZahpKzu9DGxrUJlI68BL8QTSIrbtdSeGvv3H36JPZ7y4qeKHenicsmH2wNlqm6tw6MQXTBWiV4SYqGbIrkVujSSM8rDPs1BY7UTguH7giuBfURscX/nFM9/PAeSNTtqyZlpQcVQFCUWZczFt7dsKvWc8csxwi7Hh2/uMf0UVxhynkXPCGzx/rcZ+9s1ei5hv82K784PHM9ViDnUjvCkknJ7XdKYHbWwpJAntKLEMRt7cHXL7lr1lVd4uKPpo234+//r/05bCY2WE2O88HHH6gb38sefY4Zq7It8j86SZKvmSWj3+Oqd+pZkF9Nr4U4gX2tNw+0GbFfqb1fLLbqw0NQ3Njfdnr6h/tbx5vjhA1NVj4yYneTTstqAQLCtrU4/+DQ1AICe42o1jdC/Rf2ONBPy8K9i8uqe2WdSfVzZLM5VqkOfBHStiztQ/XZYa5ipy+Wt0FAmEZ6nvu3DecV48hN2t2refPvHN+yFn7/vteh6hyn7m2HpTF21LvLLey7f3eDKPjwbvfzk83cioadtXSqhZXO6mmfDIZ6ozm9vb9jJdwVDl21a4oqKRdN2bK9Ue2fHPX40cHizEaWI+xW2WVDfi6IKFnWibnLRkY+p+xQb1ab1bkN/qiJP27stebqmrdX+0uQJZ1P1vux7xI0f7AcPwRPf4Ei42KKjKa3wQg78EKN39BEDdfv+irtvVHl5GWT8wb/019kK7qSJCxJZlPHXK3TTwNiq0chuGgzTYjRWiyjkmPt7FWPeb3LqdsS8pyb4N8s7ainDj4YDuiqm3avNZq11GOnjCgyOZdK5shDCHrljMyhUiOCvnUUfFSxcY8bhoGMKpjA3XUAAneNj+lFDKwUtlv2CKs3IYzWQ6+KOSKRPNG3Ps5nD7bdq4k59h8BUO+auPTCdz/jsMzU4PcOg56mfrXcrbq4ep1la7EySaEYt4Tq/esl2p0JHN1dvGUUBD6iqcVAzbx7Ate+J72r+gkwG66efkUiYYfJiztTreP9LgTNYOuPJnNNQOSR5sWMp+m6jscvF3R2/EP2zz179BSKBS7zoNmyajELi9I8F4uZS/j1xjwiFpq3LCy6W5xwk99O1Hd/eKoq8f/jdHe3RS74UULLtm/zkWCloGE3CbXrF5TvhhPxgE73+CdPwJQBtHZPKR9hRyMXX70mEAmpmHxGIBFPnGoyOT0m+upH2ginUb4fmUy27WymCQq8YHM9Yvhdaq13Kj4/U86vGB/uMVkajK25Ipdip0ExM1yLO1BxKOo+8LcjkMLevFwiDGqvehIs4ZSoQhtYM+NCo93fAgY7UVqdUcnVHJ2Fqa+ijNztszXtkFKDSNG4kBOaXO+wj1b9+BGEUkG9UO66/XZILTm/42sLrBlSaUKzdGxRyOM/8z2nZc9ipjbda7cje3PLugxpvQ6vZLcXhG09I1g2h8KyS5AQC+Keq2C9X+K1az+F0zKj/uDSaUyzxZF4MjqcETobui2pINaXIBJJRWfz8m+/YS3Hbi7/0h9gCTzk/f8NB06jFeTA8myrV+HqpnLw2r3gunK6vjTO2jcObUjlor09fMG7U+7MqIzp9xmj2Wo3bt+fsMiluMkeY3eMEHg0526aguxb8tG3Qk4KWIOpzvdjz/lvRb2xKXv+hOkxDL0SnwhZygrw08eoJp5IaiFcNBzmgqrucVRmzu5O8XOUxeqb2jxYdTc8RNkWmgYbZqfHdru9J1zsc6eNR/1O40KFTh0pkNkwFymGVGZHrsbtSucyuKui56hm7fYxhdJyI5qjelmStcj5NveXdV5ccJAUxNiwirSV+eyffmhMKDMLIetjOAFMwnK43oBVMr9U4BPj0BVJnOx6exEPz7PFCsQd7Coc+2ZM92ZM92W+t/fBN8NmcvlDWECTQKE8t3VWsso5WKoG0uCM5qDDYfDhkfxvTCsDz+CdffExsdpfXBGbL+l55YIfvFvRPJ+yl3D8vQpYCNYhGDk3T4s7UO0fFhAsBsnc4TMYDald5wNfffM3q8DhzfmO3aMJsXjoGuBqTY/Wtx5aFI4Kvrjni7XeXzKfKk3OOj6kkRGCYJmVcQCVAzMalo2GdKm/mWEtJJbRkuB5+ZTE8qBvGETVDR910NWvAoU14IeGMI9chlVBp1iRY/uPDoQ2m/PE392yFgeLFZMjakdD0yx7Zfc5K+ub8/S1DW4UPZp8NaYOM766Uhztqjj6Gmw933zF1O6ytFO30fM6/W+HMVJWl04+IG9W/l3/0c5JijycUYLvdkheizLCMzxkPZzSReq7hfHoLGUrx0XAQ4osg6P3mmmxb0Z89wDkialH+Lrs9L8c+hWj/+eM+o4HyOG//+c+xaoNG1NTPNzC8q0n3/0yNxfiIROaptr1ht7mmrNQcttwD//RPlGcc9WqmvQmZaJ7dxu9ICiEYjj8NxYXSb+3xM/w8QteV5z7tPWMrZdq2VtOfvcIO1BxuLjPcSnnfz0YvKWy4y4TA/OQ1p21Koqv+8Oot+3t1A70qEqxewP1avdPUCt5dqrkX9G2yRUEkN6VdHlO7yjP/7PkMfzpgfOZ/8v0Auu0gQQIu93s+FxrAnuZAUzN7KFSxfTZym22zjmZR4hzkD32XRKo4Q6/PWTDDkYKaIjEZtA5XdwLC3i04e/4HAHR5SUjBmQhhL8ocN1Dvu357CVXF0UyU5puK7PA4XOj42GcwEZjP0Ia65PxKRSh28YZU1D7GL0bcL6EvxTD3//yCs6Gam97LL3n/5oAnBVTPX56SHEqClXqnHXroe7Weo8GMaXRMJJWl1S4j8kSUe9myLPOPqgp5U+NKaPz67ldo8eOAf8c1MbWWO9FvHB0NOesJFVm2Y1+mRKKwwTjC6yRUeZ0R9Bp0U81TvTHQsBmMhHGrzXAlWmY3OXepy/YgFa+jMxypHD0bDNB8h6sLNW69kc+NaK6mVUo0iqgk9VSkn6rzaO5DWqggFOGEsm7Y6AabB+KG/pDAF1apw4r9fkNXyLMsD4QiMU1rdmmCJzfv/mSCsdkylOfe3e8Zyl2tF/horkclEQM3itjKeWFZqjq6L7R1RmWgG2os6u5xBqUH+8FD0J1GaBKjicuCdKMWoqUZnEw9TGFwsWYR3lZtHG/uFszqNc9/LBVbsc3iVi38VaphZTmVsKsk+xVRk3L8Um0Uye7AuVR89kud28M91o3KH97kJQzVBh3MZ6yynK3QTO0OG4r6cSml3WGBJ1RevtOjbVoGMuG8no0nVXYvjiY8iwIGYzUYpQmLWLU3qRravOLPGMEW9PwxPVFHCM0a0X2kMzpoDoSCN2zyFFtyD04AgxpqUYLe+B6WqB8HvsfueyjuBqMRkXXA6EuJd3xFkQlzfBRxWK7ZS3VmZe64z1VYVdvv8ccvSEMJkeh7biTMNTd7uOMJ0V7F1PVezG1aoh2LYGiW00nYI6dh+PyUvVRgJuUNt/fCljMwCE5GFJbq/1T/VIRzs5JS5a7kfqXaXtk1L37vZ4xmKmSSHFZ4AzUP/upfCWijIaGE3barS1rhkK03O56FE178FfV3WmhyX2Rsd+rnQVNynaiDfb3JSSloY9UfhmUR9gSScfJ7/P7v/y73SxWGyT4UdAKPcW4+3YCPha+x2Lr4tkfSqdCObWq8kc2sPR4xDQpsGafG+IK9lHfXpsfKatnJd2ZNBbM5W9nsF3cl8U7106oz6DlTOqnk3d7veP9BjZtX3mAHffpCsxVne+bCM1n6ES9Ojvny959/8v0AetMRSdVhcagI5Rknkylxes+rHyvpmbhqKULVhtJtWS8uuV6ocbu9yD/yRd5c3FK/nNE8MM8YLieDLygkTeJZEZqEu++/uyYKXWqpjH4+PyGXA8P1dJgeo8uBVRciaG5/AAAgAElEQVQNm6Z6tA3hbEojm+uuLoh0EyNUe8T8bMLVnXKG033OpDfmcKv6dK7lHEnloJXpGPoRs1cqjNnUBjYJwZlqx1df/YLPJsrJ08qCt2/fcdKp0O2010NvJVfb1USRx7FQDX7zFRSS/26XN1gPtF2/YWW8xtAaBHZMb+ByKpR9i4uCZz/7EYdO2JKOz3AG6n1vv/klV3cVCPPL0Szi6lqjTdXP09ZgeqS+Mxr4pMuaV3KJKCqD5IPaM8rcxCxqvnyh1ltuaZiu+pjB2XPMoiYVUHBlfZpfdgWvXLcZZflQQd+yzzY4D1XUuo2k2NkXOprlEYuAtF5VNMK3u00L0rKlFqHcvgPz8Yz4VtUurBKTULC2Y8cnSRM2S8kROjYIFtNubJK8Zivcx1FbfVTQqL4Hc/pgP3gIXn94z3SqOOyM4QxPZHA+n88Z9fusYrWA802JM5GycFcj6XLeXaiByuN3fHGkFldqjLjcxRykg43RkPnLY16+UJPxV998w15Kwe+uluyrCk/yLa1h4Arlk75vSHBImwfuuzFp+ngZbFtrvJiqhW+OHLKyRbcl/m5ZWDLZzHRHFDhgimehZ2iSDE/2CdPhGcv3Kg93cfke031HKBvKpD+mLzyitgvf/XKBI/g70+2jS84mT3fUmkUgXk9lmjgCRg3almTzONZxPp8wiC7ZCZjbshrGZwIgXd3y7HXLUHhVf7F4Q7+vfrZqdlizOaWpxmYy/4LX13Lz2CS44yP+6k8VSbNp7rD/z/8DXwi2d3dvuF4q79A6GuP1+hg9wRs+G3AQovFFAoPIxhI+xdT/lP/0T88VKPmzcMyZ0E8d1jv0ZYcpt/k/+eNfMZmo3Mff+It/k3/yzXfkwmWppybbG7WZvZx/SWq6NKE6FEzDYHe3pBHP8hf7itYSTN/nc8w8+6i9qO8rPpuqTeLI7bM8vyFvRG9tH7NdqN/rVp/yVp5IEVTcJAqEOxRnqco5+VJtgnrP5D5PuL6WIqHnfbQfvwTgdrPj/arifKs26ZN5yCQI6ImXe723PkopVaXF1TonktxHHjesRYstub+nP+xoe6od/vMjtJ6aF+FzizYs+T66YN9oCQRf2RkDrEDK4gcT9A40wWppZofhqL7//NWUWzNjLQf9YZWhCU6vMzW+fbOjeuDbtRvstuQuVvPvxY8mHA4in5M2rPKaQiAjL386ZNR/wJtVTF2XunzgejTwvwcisV5eYohi+OmXv8vU03FC1aeVWX1cs03eMIh8aimo2tzUJBvlNHttwe88/zGW4Gd3dckm2+AJ5dez45ppqJz6OoO79ZJMrtD2j0559ULtZ97YZOhOGQYCGThqWQjVnb3McZ3HD8GpZ3IfuJhCahEMxxgTdYPrtVB3SzxXtd+buYxOJY988Lj5Rcu7c9WOqtbxjT7CTkbaeB+LpBxq9nnBeKbW99CIsAQn+PbdNeVqy0/FyTQGJpu1Wl9nTh80ODhS7HX8KdbxgQ7NcT0eQgtt1ZDt9pgie+T5Hsu1+s48OTBxbEyJEhVJhfWQgzykHE3G6LraP1bbFXECiWDAnaMpPalLIXDYr7bYwhV7POyxkUjO/TLB9F1S0b00DTgSKsn4gfLwe+wpJ/hkT/ZkT/Zkv7X2gzdB3x6wuVYeYB6WaOLVJesd+AZDoVLSKSiFFPqQlJRFxUAId8e6zXvJg2zMPtvQpfGVB9p+WNE6x9xIDmddjVjH6soe2Ed89qKPPlNhiX2y+0gyW1QxRb2kFb6qYNhjkDwOEC62Be+/Vc880X2effGcQsQd03xJJbmPbdPi2AG5UEdtDjGZJlVI+OTVHq1THsUs6Bj2fXZCF5UfMiwBeq+qCj1L6MtN0O9b3KxV3+wPGybjE9qehJranKZWHk+5S3G1x0NAyyQiweU8kbyQafOl5HP26ZawF+AU6h2zSYehCwtNmvD19dd0QxUuynST3aXyzl47fS7Se959p8Jcnp7zD775ljxVUA/TqClS5VVP6fOnFx/wXigvbxAMuBfmmQ6T5/MB3y1UdfBy/ylpQThQNzzD7lNLFenJ53OSXU4Zq2dazpS9EAon/pRmmNBI6Paz53P+l3/y3wGwOESMvjzmQvJA2foeJ5rT6TKHigpXJFzyuxJnPKCWMIyWX5HdKE/9Mt7TvThlKiXWZlswEKKGyU/n/L3/8dfbkGTqBmMZMB6abG+Ux127LgMhTcjTmn7U43an+jStB8xPVZRj315y1PeIJSQX2AGaXmE7qo1h38S0RJJnn6NbEa2Iku7ijOnLlwCMToeUTc70MzX+w9M+hnzb8OQE9I64flzCJ7lLCUXyqz+fUgok43y5JLu5w9uqfw9OTggeiJHXGewcfnImsloafP1BVUo6Rp9OO1DJDUvHIM33DESh/cjtcSSK5ZOf2BSLmt1K9duv/uQtx0Lj5TQDer0Zh5367mW8ZBc/zp5km0PKTLUhKy3+0dt37LcqdGaP+7idupVZyTVff/2ORoi4o/6AVtao359zc5sRPsgH6TppMyQUuNTU8nAe8m5tilcdiEohjDf6aAjRfatzv1iR79Xtw001xlKi7x3PKb8nskOc8syxKZ+puZd2Dd9eidLKeo1mlJw8VzdDyxhwWKo5UuYWf/jjP2BdqD3qbnNNvzekEYhGfLegqkVR5LDCC3r0RXVer2vMvvpurdEp9g2/+EpVck5Oh7iSxnDsPvtsSVWrv8vST29RTa7WUG84Ra9Vn37z3SVWaNMfq37yXJ2ufhDwrpgOpyQSadjGMc9O1PuOzT6TgUcjtID7dM9uc8+psEU1vQFzUfC431zzfrMhkNDtvu5oPNWH7lin77ukcsN0gxBXxNPNm8fn0oP94CFoeR26sCHsKo1SEpuXN79Asz3mZ8JJ6fZ5kP8qtre8Pb9mdP+g4ryl1NQG+Zf+wr/C6fEpd1Jqv+Cef/7NOc2371WDCwtLaNqioU/k6ayEZT/JKv7o4k8BCLqEl0evGMgtuUjij7iW37RluntgJ8K8CvGcjlwmxu1qwUgKOqivCTWHnsTfNc2kiOWA0g98iC8IhPHg5cmQqtAwJZ+Y7e9pfPWcNGsYBC6BLtgUw2IyVn2htOMsDslDMlcDYTgvzJrR6PEQkKmNsPB5/pnabC9/9YbohSgoWzrdrubNGykp7nYMTPV74YvX3H2348RRG9HmcM8WyQ/mFXff3LE8qDEd9G1u7ZadLuX9eU4gUi9vLt7w+vd+yulIbVq2VeMIf+FqdWC7X/CjHyln5UvJBf95yyq1wJ0mYpuJduTRiLvVBfGdSCSNPMpULZrLr2+J78/pB2qhNKZBLPRit9sNv5u2WIb0lWNjmToL4ZHt45LLuOy2K+xWZ7NT8+3ij/6IhWi9jMdTXD3gbCrsJ1lJl6j3Z/HtJ21YCucliY6p16z2wog/fEYnLB1+FGC6fXzJhQxP5xzLRrcI+6wWWyJhwE9uU9bpHQMJUWWaxk7Cimlr0ZsEaIngsSqPqRRzOUzBXPH8uYT0ez00oeyr24Zyv2L7PTjBvN1zKjI8tVVwnqlc6SHz0dKK8VzN07as0aXAoSx8DNdHhF+42aX0XLW50MYc9hXDQMJ6fkjofcH8SB3meecSDtV3nvZ9PhR3hLr0x36DJqkP259ywEBkNwl8j654HDNr6yb9gXpG1uZcLa6426hDeWrOeT5R7/PTmhedxk4wYun1B5y52kzNXkidWXz+WuFu91nLu/M7zq/+qeqbJGYbyCGQd1hmgCdyb1py4PI7hTO+3dUsFgsGpvrwL8bPPtYUTCKf/uhxZZuiTOn1LbZCVfb+9horUr97bA959dkJptCvaXiUwqfcP/odXj4bcL5QRXd6OMIqcuKVkoOzTJPJQ3FZv89segwPKiluQCpR/toq6b04YitMVkZXYQtF333R4PgBvUhtriafUvCNApEOczxEDpPJ2RlNXhGGgjPWPQqZ27ptY9se+1t1GFVlwsWVWgdlsWUdl5ie5M5bl37/DCQVsE87Tp2HVFMffB/vWHQJB0eA2usGAxvf1YiXai4cchNzpy4Nufc4VOXBnsKhT/ZkT/ZkT/Zbaz94E1xefcdwrkDKUy9i08kpPwzR2pafChOJqzv86r3ynuu65fTLM66v1b+zYsLpUFSKuw3j/oAml6vvuqXoCryxutXsNiVhqLzIky/mDMjYrESdIk/xDOXKVG1La6T0bOVpLJPiz6m1/7rZus1IKpayasXX57cMj5RbW2sVu1x5IE2mkZgh9YOM1WD2UQW8yGvS7QH3SJLEQR/TMfiR8H4ulzo7UUI2u4RAK2hjYdOxD1S5an/TNnR6R92p53bdhLu9CF3mLqv0ceLjbFFwEh2xvFceoOnUpHIrdwKDOqkJXyqez/uiYiEA7GnPY/DcYXGjwnOLuw2bgwo5+f0pqzBiK4VAelqxPFyDlOxPQ4NOwqH6oM+rv3xGP5Lb2PKG/Vq1T3c80iZHe1AZKD8tBljeqBDr6rM5r3rqFnH1YUfc2kykOOLk5YTL6yvp7x2nx684ldDh6uKC8URpEv5sMOHseM7Xl6oven2fLG+IEOjD/Dn7Ut3uLpcFz82Qo1BA2c8/QygSmZ2+YnB6SthXY3ocZSR7ddvTjE+ryX4hVYdmfaDOUgq5GQzaPun2vRqLrkc7srCFB/KiqEn3kgqoNb5d3HD1Tt0iqrqhzTLeNaofzdL8yJ/47uYC9+4dvZ4aU93zKYVHdEDHdP6C+amQWAx6uIa6GY1HNoumZhE/zpBRdAmOFGlV+YZG5r4fRqRWRyqFULZrcejUzcCqTxlOjmgkPLbdbTmIQrl/qFmtamxf/eylMWQ4MLCNB2hHh7ZS/WbYHlpaETjKK3/+fA5StLLepyziWxwhex74AZiP++fJ4QO+FCn1/Tmjl6ekQmA96Hn8i7/3hwAM6UiSPd+eCzHHIWOxkptP4/PTn7zmWaT2mkV7oJ6YtHM137/9+mvModrbItNjMosIhfPUCnTWUuFrNi3jIMSQtdjrNTwL1fy/X26o7U95dAFyrcGgJi/X0k8Vx3NV7NMkO262FxxJ9KjsTDRRZI/cgDTZsTmobykOKe2q4O25utFHYYfuy1zXDe53GbNAvtU0MSuBR+0Top7J7JWa+21ncS1pgjjeMIlcesIQ5ASPCH1L1mb57gMjKdB6MZ+zyxICEScwzR7dUDQD7y64/rBgJTyjRaNTSPTCjsZUlk4UicZs1aBnKXku3KVuRHqp9qh4V1IkGr4wz+jOgOYgEYu4Id/liPQgelNTyjxcrP6/MMacTZi8UAfffRkTV6KiMB5yWHdsdsJQfthxJZRft8mBweiM6UtFD3U8mBN06jWmZbK6ueZ+LWXMiYEbBThCTF2sUgJRuw6mA5ptSiAVVv4Qngsxcbk/kFU1u7V6rmfaWO7joYeyNSnl0EmyPSYlmTD5tybsSsF0lS7jwOdCIBruFuJYdfCuamk6D3IV9mgw6JKYQ6YmcZ3FlEshgh5F+M2BVHinDpuYjRxujtmnsgzcoeDRkhhLGA8MzaQqH8cVreOKcDTC2SrHokgKzt+qa//Q8ah3GpKCpD8fMhZpc92L0O0999eqv4fPQrpcYu2OhRdZNEIYHug2L55/QSj4w9djj54cBoPhGM1tyQthsTA3RKdqcZxMTpicvUQfqQ273/9USPRX3ynx0t/58UsSCfltsgOfv/59fJF5mk1dxpKfqw4ZcdJ+ZJNp9IjXU5Vb07WMt7cX3L1TB6vVuaCHDE5eqpf5NRvZ+Ppuzlk/4CAh9ec/+4KRqGSM+1N6tsfVtTpMb27OefONOgTq5acE2qUQeL+/X6NVNU2g1sWaK9KFGgs77/PWOqcTeZnRaEp3rvpX7wxaq2Eg/VaVDbusIrsU7Gvo0Aq9mz/1eDYb0ImIc9Q/5vS52pTrbMuLM5/xXB20oeUwk5CjqWu0gUd1/3hOMI0P6JIvDcYdM6mSvlws0GyNTCSktouMaqUcAmNz4P76mq4UZqVeyFRiYHqlcXbyOVql3nccDOmSinWi5ul4OuNenICyORCn+Udi7MDvsZXN3DAdTNsgEVrGea9Pkz1eWRn2fGT54B5ZsLawhBYxb11uxeHs+iO6akwq5O3B8StAnOHaJ0sCVrIv/NOfX7GOGzpDoFp2RX4r6Y2uJDFK/uLvqHC/nuwJ5JmGnhH1e2TCEjMZzNBdQ36WU3+PU6ubNWlZEAk71R8en5AKrCT1WyzHZLVWc/j8wzn+UB00WlUTx2t6z1VY9/MXJzSDhoOELJfbGzSh7OuSnNvlOf1XSkT6q8sbcslZ5RhEPZdwKLjv2qAne89w5BNvL5gdqUO57T4dh56kQtZJQSbrot1tiPOMTFIKgV+TSSqt1/nkhxRLpKNyXaep1N85nkdSHrh4qw7yz+Yj3MBhfSvjVjWkuVqj+7phn4WkpTow+61P1zzUqWxozIZSvlevNFaSYza+J1X2YD94CNqNyVqSvus4pxWQouH16Q86ru+kHFXTwBIvo3IoS4OxozbipLFAEqJ56ROvlrQCILENg21WUlyozVUzbJJW/ezi6+/oqj2tLlRluQtSOHLYl+xW5cfYcOg6+NrjKhKVZpNnot5uhXiWTi3FGxUFhmCO6qZlcbUlFeC+42eUjeT8qppOt7gUULR+f0Nga2SiVxW6Hjthdtdzj8zIsUV/TqPGdtRGHw0jDKujleKE2GgxJV7d1S3NIyrOAH/v7/9v/I1/+a8RSjnyqWUw99TCW2/XRMExgStFQ9ucTOLpN/fvMTEpe+rb9nlMLhOxzRtaK+RGZJ2OJj36oyFHQo5Qaw223NBL02SxuGAqhACTScRAKIkqx6a2LGopUvrqm0+p317Kjb3Zv6fqq3ny4sVzxs9mzCaCtxsVpLE6hK5uP3D1Yc2ZcELWdUkq1El0DbQFw5na+NrdAdNssQO54fae8bM/EAkmLcSst7RSfDINA+pWiBOalA/JHkPAxNkhppHNROt9umh2O1EK2Gm0dcvdlSrGmJxMMKXUvMg0YtbshLt0kMVMhChgcDzF7QX4Mt5GC6tv3rKTsZpEYI5Un746cxkNI2LxYINJj8GRek5bDrDCBmSx+5FHKnlGrThQFC2b8vG1cDwPyUtxyJyWjfCWGlYJhgNSbl6iE9+Kw1vn3Bd7TFetE2e1/eilDwfHiidV/i5wfKwm5wFffUg0ulbkmiydXjRleKw29E7TcKTwqXaB0iQVWMauLqmyx4tKPHeosLjA/e0tASZHY3VARcGUxlLOmDmakSV3NFLwse18GqHUWiy23L1/w2efq/z1zYeESteZv1KOxmlpsBTIQOhoZNuE9ZXKL8VthiVtMhkwCDzyXLXjZlER26oNXalT1w8CnL8xDqc9kn2MO5A1XKV0UljYaQ1t61A+cNMuNkwLUR4pCnzXxBAZorZfEAYuQ5Ev2+YFAzkwE/a4GtwLicZFusIp1Dy1vRAr8Ckl75tneyzhUOvahKrZk+hy2yofgQudqn7K8gXrnXIw/bbFsjVa+e54nUGhnm/aOl6vTyUQic3VkqJTe3nUmBxyna1Elvp+hDPr4wiU6m6doYnEFe4IrddxeanW+uJqR/MgXanp9CwPy1LnThiYdIW8w36cPOLBnnKCT/ZkT/ZkT/Zbaz94Eyw10IQiadoz2Dfq16ttxTpb4iDMAUb3sRJoPAroSp1Mbm3PJiFDuX1k8Z5kk2ELG0S82XGXFgxEvX5yfEQrp/fb85zWqzgWuqy4yoklfHIwK/Kk4GalPIJXszlV/ji84Gj+jL4wy2fphqJyWC+Vl5llKYOxED87HvvFjm2s3uGUBq2I6OqmgWZZIIKs67t7LvIcS7yQV898gr7ycjRLJyt0IoEFDHoNpoQMsBu0JkYX6IVTWhRS0uz3I8b146zzv/j6LfPBEb7kvXpGQLxU7vYwmPDFj39CISKrb67fcnUQr7WI0TWD/jN1a6rvVxjShqNZn+n8BD0SwvLFHXF5INfFqx6OeP1TlYfTNBNnNyCUMIgGVDJ1jOERZjAhy9Vz/9E//k0dD3h2pvqmF5T0+qovBiPoHaWYmvK435//nEwokMywZdqrWEmurW50/L7y4id9l7rouH8QzAw9NG+EITfj+cmMUvTV1suUdx+uyBI1Ny6qFaHkLIKBje3atKJgvdPWBA8VmNWnIaBM8uFx69Ek3UeVlK7U0QWeYXsRjebRSK7ndhtjmMqjDbuKKt1hSygNO8XvWTyfKu98HIYfwdVN1hJ6GqXQfD2fBhwLQfsqN9HqnNlM4EGexfYBSL/fES/33L59/8n3A7RmhyF+731eEgth+Ox0QrysSSQca1Q2thCtN5rP8XBKGKi/++bdB9ZSxds1AbPplFxK4ZdZydAxsCdSK9AbwANVlmFgGB213KJsG1zJ2VgBRP0hyVuBluQ78uzx6lDPn2Bb6rYT2A6jnstg9ACZMIilojstKj7cX3NzJ9ADbU8lt+cqLzhsE9pfKsL2MAh4NprTG4qQrD/CEgHxzmxJ9/e8f6++x2grPn8luqquzrqoSURrcbuKQW6w87GLnzzOVJLWMblWsJKcbMyOybHqMy3rWG9TOiGUNsMATyAnkd8SWi3XS7Vmr5dbbHTCI4l8zI9pArUO+rpO9PwMW3ReUwdqiYh1bUvSFgSmilDpZkooAuKhd8ShvmO1VZWc5SMRtoeIoB9NyHIJkwcRtu/QF/iX3TikIq5MlnJIViAh0KqpyEQd6L4pCSdHhM+kjYOI+80BxxHmmaqgkLqJzNDImoaVgN/HocPQPZZv8dE1C02IMdLEw+7+bP/+IfvBQ5AmxcrVx4RHfYad6uCdrbP9tqaQslZ/MOW0Vp296kyMXkQrydzjZxNEl5fyAFc3l5jCSzccTimdgkhgCvnmktFQbXaHsqM/mnB6phgPmtU1XScsLDrs2yV6pzo8Q/uIP/tNa9EoJU9QlQarxR1poTpnVxTcb9R/93wHkpp9oSaffzggUR9MK0SzKkIJV8Z6je33qCWcsE10Orn6Fy7UtcHigzqgK72lk5yo5WsUu5pGsCzLXY3nqO8e9fs44eMHeZa17OIKQwqMEt3+yHbx7Pd/TDgYEvXUxx6aDmOvYugn1hGL5Q1zUWn2ej12ou7sRh7j+Zjfj/6S6ovFlknoMRNW+Pl0giubcItH2HPZCB6tzltOT1WosslN9rs9K8n93F1efDoGpoS/g4hBX7W332s4NhrOz5WKRbw752SmNpeB45O87rESGZjlqqBK1TitWg2blnIr7B9mgefVOKJ6v7/5ilgW2NAM8IcnJFPV5q7TKUT1feBamF5NLXXjo9PJxzL1+vApxCAXNpHdNiEMXHQpmrrNSo4EE6EHFZs44W6j+r90bQyBAWRXO8bzMf3BA/9tw+Dl2ccw9mASgXAdVquEZ8+O6Yusl9eFdDJnvFXOoVnSNerA9nUTZB0eVhkf7m/Y7B7n0c33a3RhXRrMZlgSttUIqcyaWjZz17PQdBEtHgw4CiMc58HJtTEdyZkakGJg9NScudsuiFODz16ptb9JStZbwZpGLoEfYko+UWtbSkcchH7HcnHNUU9YpxwHI3t8a7q7XXOQZ4zCGeO+yViwxLera8SHZrM+UNce9kMdQatjSZ7em0RoTYovPJO2B60VoEtYd3u3IJOY7uXlW06PJmiyvicnLzh58Zn054H1/TWB4J5X6xWm/ZBna+mM76FNO6xoWo3pc+X0Wqn5kTGl6BzSDlpTzf3G62Ocqlx5l6cUTYHRKCfAbCHJcjzh2ewP+9zfq5RNVxd8Fp19lBHaHbbMxZEc9gZ4wyGZ4A27FgKB1ejVgdPhiEY2v7H76TjcLtSY3txtWC5UOHSQW0SDjtCRvc7x0WWaJLXO+ibBt4WaLRpSS5h1NJjTG88ZyLd1bYyWuQoOAYyPexhTtWekrc4ii6kbNRa1qWHZAuXQHJzQxJHUU5ZmxHcCB/t/oU17Coc+2ZM92ZM92W+t/eBNUENDk/DZ6sMGbOWBVJqGM5gwGAg7QxCSSFipzxDDseiPVQVTaEEldauNnRKMnn0sBqk2G3qRC7Y62av9AQ3xfvUOt7NYXqubRZZsaES3rEhT8rSiH0qodF3QJZ8mcJUNPmpVae4Ay9YZSgI+oMSVRLZe7Ciw4AGGoVVoEq6wnYaua3Eq9Zyw16cXTKlR3zMbzamECPny9hbLblkKo0pW5szk1jToj1jVLmWqut1xNU7OVD8Vukm8eVz3qjhUbJOOTFg8WneGLRyQ1/cJZhPhSrViOBtiC/OJHRrMj48Zj8Qz3+Z89VZ5ije7NYOiwxTOzS9+9Jr50Ge7UWGfYPyag7jV26qidVw0T42/bmpsJMme7Q+cX+64vlM3rDz9tLIyO0io9s0b6lYgLwU0scU+T2UsGizxDlfbO7rgjEwYiu4WG2zxlIdjcDyfF6cC3HdyxoGNJYDabZHz2YlKjl9vUwK7JpAK2L3WUrbqllhsUvZXNa4U+9j+CFe83tvtp3CbnpBN952E4fCIUn8I7eS4llTd1Q1Ns6VAzfe8SNgLiW9b2Kzf3zHrqzGczU5wehWthEd7ZkBPytEbPyLLSkK5YaQU7KRwoDYyBgOT+CD9naywHxhytmvsEib246QLbjhkv5aK7vcphmjF1a3OyB6wjdW37tOMbaLW5NjKyVclhoTwOyPClSpD0+i4f3vDszO5wQURRlVy8Z2ax5rWsBMGplA/QesqEikiIW2pJeQ5rH2cg09PdqPQ0L8XItE2DYakF3bXK7Sgj2moMXU7n7pUt5RVvGSTJCx2Qk6QaYyF3zi0dGqvJRLVCg2byeQIU273kabRWYH8rkdk+gxEe/Fkdkwj1cZ37y7ZLW8IhcA83zcYsifYdofjPh6dmo2nXN0saTdq3CJ7SJWb0vY+qy5hJ8UgumGylDB1cn2PlsUYEqqd9Gb0+x6XwuAzrSYMBSwfpw3vP7whl9xOZ5YAACAASURBVDVcHDo0YXOpGh09K0lFNSOPDwweNFc1g2PTo99/qLzvPvn+5Uq10bADdEf2dq3Esm3Sveobre2opfK9OuzQuo6epLZqM6KS9JlhOKSpRSmqQ13rYpoOraHWiem5NAfVBh+DidcRPn8JQLbffiTwdgOHLM2oZI820dFcNb8H3g8XxvzgIfj222vmz1SI6r7rOEh5e1205Eaf/V4oakippbw53h/QdY9koTrnQ5kiKRlsp2OzazBkM7eMiqJpSGXjDXHYSAohMH3ypOJO4BTb+yWmlLe3Rp9A67hdSd4gX5PFj1dihWGPQiqvTDdgPHPYyPt6UUDki6jrwWTXLsmEflhragyh5xn5Do1tY0j7dbugSG+oZWPY3tXshDoqSQq8aMjDBdw0bTrBf92tNxz2FY2EDI6fT+lLKGm9jD/mM37T3ny1YNi74/i5LAyrYXMjCho9i52/ppI8lmE2GJqIXvYdqizncFCTwQ4mVBISCiOfaBRwkAnWdCWpprOXkPOvru4+VsGVlka7b4iFwDuJCxqpfEuKiuVdzlKIuePVpwf5WmiWDjcp1A+HR8RdkHAQlYWm2fN6rCpLV8sFh/IXFIVa7PfLlFpC6HqnYTvwwNPttiaBoWGJY7XerT+KymZWgVEWhOIsvbtZsxFGCVuD0qz5cqKcEHfcp5C+Ob/7lDGmL+Gio5mL5Tr0JRzd6Xu0RjBPjsPODDDl30m3ZSTiw6O+S2tYaI0a435YMxn7fPGlqsDtmw6lpvo+tFyWawtLZtF6U3IrIdZ6d8AcTUi3qv93+ztiCTmudglG4uPVnzoiAHVes5e8etPEmJWaFw0mm7ziRnKLmmGhyya0uz2QVDnzuco7Dft9CgmpN0nK0LOJBZLhuw79oc5yr9q4ynYMRSF+sY6x9x1IKHWse2iSP8s/bDgaDvB9yV0XKWn5eAhrl6SYOzWHmnyLVpikezXnTD8gKx7WkIGRdhiiVtDEGxKpRSjvPTqt+ui86FrEdXqPKSHfSg8pJT89jY7xPR9LcsBxnJLeSmj8dkHddA/kJgzdkFsRBa850NmPH+SB7eM7EY5Ue5uazUrydfF+z2af0Uoeq7VsYlHr2W62zMcOg6mQbfdcuhxmKIfQrDtcqTz3+kOWyz2ZCAuMJnNiycl1Zo3VGnw5V2HWNvDoSoERTYeMQhtN4CPaI7nZjQhF96Pgo9Sea9r0fBtPnD67LinkQHItD//ZlKYVp8Bw6AtzU5ofyHOoUzWHkrzEM2A4EXGEgYst1HeuUdELR5SlOIdej0Tms2v62LpDhnrndr+iJ8TmvhBpf59pXffpSf/xh5r2/T98sid7sid7sif7/4F1Xfc4lyBPOcEne7Ine7In+y22p0PwyZ7syZ7syX5r7ekQfLIne7Ine7LfWns6BJ/syZ7syZ7st9Z+sDr0j35e8M0bxS15SPcgoO9iG2O5Oo5wwWnVlroV9vTVBVYNuq4qiHZFjKOrSp/p4Ij5UZ9YKtts38OsdFJhTdH0lk44Kc9/dUG6i/GkrDmrS6hVnU5/eoRlepgCaD354oy+lMj/q//GX/+1Nvyn/+WWn/9C6YQ11PiWiSeAbcfxPpZUbzc3GJpG2ajS88CCyJSqJMdhk+YMHFVq2xsP0fWGsUgSlIRc3qo2WYbGsO9/rMLbbFJyqd6zPQ8j8tCbBxCthSWAYb9/xrh/yn/4tz7lD339r/33xKsdCIB58voFoaXevbg8x6yW9IQXcXQ8pRbYQWRq9MLmo1rAxfIO21Bllelug21bNEKK3toBeZaDVME96wdshYBAjxvW2wWF/cD2MmB7Kazz5ZquN8IVEdLr9Z7q/X/2a9//n/xt9e/takMgCgtFWdJqNYVoK04D46NY5mGzYLO4QzOE1LcfEohA5raycOwhhlSBxek1+0PNMFDwDdto6Quzja4XbPdbKiFyGM2eU8kzk/KAaZk0sXpnkxXUUhlcNh7/xX/9t3+tDf/4v/mP1HcnrdIuFAjMJAzRZP4W2xRNN7BdqbrLdHKBL2SazXAwwBOu2ovzcy6ur9ktVFVcus15ISTgRyMXjIRMxtF1HKJQjZvrh2hhiCMliWVWkAqRu2NHJFXCP/i//yEA//mffP1rbfh3/u6/zlS4WkNbQ3SYqeoabzznIEQR5WHPiyP1LTg1X//pFblUXTbZDs1QvzedjrACnaxT66K1bRyzpBIlkbtlQ5yoNWr5BnmTczioKsRJ3+B0qObCZntNGJiEPWHeaWomM1W5+nf+5v/8a234D/7Ov4suY0hj4Tgtluh8rnYJRqfm5bQX0OsNaR40C9uWpFTVoUY4ox9EHKRsfX3zLVHk4QgrUBAeUzdCBBLYOHQst2os0kOBIe3XbZdRr4cpoPtDcaAUpQbLN3EDl3/v3/pb/Kb92//+/0BexDS5Gre76xtE35jpyRg38MkaNTjZLuFYyNIHTc3k2SnLUrXxT/7kj4m8CFsT6iq7JRR2LMs18Gub1UbtPTkmxzO1RtrC4NB6HyvY07wmDB8gIX3y1ZZaAOY9/5j/9r/6N3/t+//jv/s/AfDu/TnFQY21aetMhwMy4bHt0j22sI31hj1WizsMIWjv+TVaq/rpVzdL+s4MzxVOXbvFtB1s0TPcFAXtQ6VwlZJVf0ZClKfZg1wiXs/jcMjIBRJjORbhTFVee3r0yRj8efvBQ/D89oJYPiBrGnoy2HfNHpIdzgP+77Ch0+Qg61rub64wDCmF1xu0SHVwmye8/eWKEjWIr1+e0jVQC+VZNLNJ5ZlJdovuaXT1A7FrDrqotRsRVZVztVHlyNV9i2M9jgXZxm9xbFnATckgDHigMgjaBMORTbBNGQ0qgkAtqO36mioRbFbjQ3EgF/V6t/Ox9YZDLYz4zhFnIzUZ2rrENwMQ0uZg5HGnCzYrW2MwwpcJ59s9LkV9owv22MXjF/P5Fy+ZT7a0tVoYwyMPTwike2FDm/fxZSQtW4NalYx72gE9rdjkaiGUSYotchNuHdMUeywpqT7yXtGc2Giy2IfOmrmpytszy8ZxCqIjtYh6R6ecDwSicefTDV3Q1aS1jR6ikfzRHthOjk+G5DKDg6AiTtZYwpJyMjvFF4aNVQ7RaEAh1Hs9R8fXZMfuLIzaZDAT6ZWmoVmtaORv6+wAPSElN0u6MqZtRISzWOME8t9WAkXNTsRxLQxKqZTumk8XjRUoZfVtusYfFKwyRbm10xzGvloXJjWOZRELdCgvLDSBZ1R1idWboBeqSM0we5zMoG8o1pClqzGYKeos00zx7ZJOnILAsdEfREbbjunwBE+gBulqjSfUbKOjEdniitHsS/nqXz8Es6ygEPL4aDTAEGyW6/Sp45TljTqgsqJg4os8Uesx6U0oEvU+6+g5jvOAc4WsgESgPYdkT+uX1LJmdc2g56v+Pnv1OZv4mr3Qrx0NAnrC7uFaEZOhwfxYnOpDw+Z7IE/9Xp9EnOGsqnE8cCO1Lk/sCEsUVLq6Zjwc0JP1XZYN5wuRd9Ny2oyPWMSzFzPqtsAQwvzahK6Rcv62JEsO2IJl3nYZ+4VylJ998QL72KQUQeda72gEg9y2BRSPQ1Xy7Vd0hkabqjYa5pJGoAWWptN1G3oCkbD7OcFIjW9RH8BLcIX+bXJs4tkWmjjcu3LJbqe+JSr73GYdWafWzWzwEjsQ2kujo+e4rLfqOZ3TYomUkdYapGZBJbC2+6tvP/l+U3Cis+MZu6WiV4sCmzDQGRkP/d9y82EjXajz4rhPIzSUTbKgEEzudKZT7bfo1QN9pYZWmlQy33qWgekJ7KJvYho2qajLbFc1wfGfKebkcUYtLG9p12EKPKcS2rXvsx88BJusIBUexJ5p4srh0bQpRgHaQE0MwwRb+EFNzWN8VmDKpLECk74/lI9pKDoLXRjpbdOjbWp6ViYdZ4JIYxh2xX695iJWkjnD0ZhaPM7AWuBEHobcNldX1xx/DxYk299ArRZ3aJmY2T256OTdNwWRfHfgZkyHIZEj3otlkm9kMbcpL8cRzUa0ufQM0yk/yhcZtoYlmKfVKiY6OmIsbbzbLFm/U+oIft9D852P7/Ts/UeeyTrpKLvk0Ta4ZoI97PAM5dlYloEmLOzDmU5179CI5xZ0W6pWYcoGzp7VaoMlsjSfn/UoKpkQ2o7t5oqZcO9N3R2WbbLRVF85qUkkGNF812L0TXpHghtscjo52L1hzXJ7QZorEP5h96kzkgsGyLcDsq3g9Kwau0soK7WA9cLCEvxoYJkcbLBRfTibH1PKjb1LMra7WxyZMzYFvlOhNWrBhZaj+PkArx9Qmj51rObtcn2F1wi3oW/iWgaNr/omsm3cWvXpI3h/7nfqwNiUBttNTZyJMkqVcpeI7IthEEUF6UF92+6uwBDAf+Ga7N5+4PZSxrtLCGwfT2ifovmEg+DrlvEN08imEZxZNRoTBer3ruJ7Lr67Ziaaeod1jibLuAod1m2fUp75m/bF559TrlU/+ppJ6kn/RkcUbcm9OAS+HqILeDvvajwc3r5V6uW9UcDxc9kwLQfP8OABEx4fiDNoRRZoNnuOLc7Ji7Mhxk3Bkdz2xkMfo1TjXdlTpkGLJxIETbth5D7ehpv1FQ3ijBouldmh99VYHLSYbKPmU9jz6XSdVlPvM+0CQ5dDX6/ADUjErzIcAxMfX6IyZd5RigN8cVjRViVuX93G9k3LIlGHoL33ufk6xjOFr3MwIStEg9NsuV1cPdqG0aTFbDqsUPVxb9dxL5EFvVniac7Hm3dnOLS2WpPb/YpZ0acnjvrLH51Q7DqikRqA48agkNvlujQZBwaJaDSGI5NapNFu1rccn1jMhK7S70/ZLpTjfIj3NMmONFXPrOpPUXL7RL0jzzO6TsgvDg27xkQTSjPLgLqTiJ/d0Wk6lhCReKFJIF57b/aCw9USR1f/Hk8syDu2cg5otUlSyA2yr2G7BmWl2rTPF7Si41odAixaNAHPt5WOJqQhRfk4/vrBnnKCT/ZkT/ZkT/Zbaz94E3SbLUOJ8frTATtRKI/Xd7RGQ7BVV9GzswGWkLHu7q6o0pgTUWE/OZ5QSw7sdn/g0BUk18IQs1uT5ylWpDxSt+1IS+WBhMMZcZowcx5Us2fs9uKBxBlNUqDJ7SdOc2IRIP1NCz2ToXhqplXTJinxUjGTmL7N9LnSFAvsjsCsaYTdZOgE1KLK7Bk2RA6pKUK5uwPNoWB4pJ7b2DVapf7bmLn8P+y9yZNk15Xm93vz/HyOMYcAEgBJkMUSu1TqMmnRf7W0kcmsZW0yk1m1uiYWQSKBHGL28Nn9zaMW90RUFzKITS+ZdwGLNHf4u/e+O5zhO983ORriCJFun/fov1RhLmcYU2MQSk6hKndMhXy56RNWu+dDQMOBh19HaL4QiNs+ImpPerNn0W1wTdVXq23QhQWnbQa8mrocapk364DZKYtTM0uOBhZ+qJ7vV7ccEg9LF4aJaMDsWDyjkUfcTRgdqTF+P/83SjmaHfn6HaUQWIfRG346ik707dw+eCKFrg4Jab3/79QKICtUX1ojZDjzeEydrguNdS4E4b2O7bukEq8JzZDz4zG9hI8C0yJL1Rh0s8LtdAKhx9oVOZYrlmK3JwxjhrI2urZHUhbc3XxKQP3P36u1n1Q2BQm+eBih5ZE2yoM/JBWX388pH/sWjiilL0Zjc7OpeBAFk3BoETk6sTBnuLhUDypiYJHT7jNyiXRYeYEl3ub7hyucSYR9Kuwqvo0toatVkVG0PZrvftJ/gMFgxIc7Fb768PGawUDlWb3wNYHp8mqs/p1sN9hC26VpDieDIQtbiNG3Kc5YFDtGDqneYHtC9zZ0KdqenYQyv3p9RiO0XcVqRWDUuML+YScmZi/0iVnOuiowNurdDC2TYPj8GEAjsNVvTKYDzK54CrP1LfTy+0Zvstmk4InaiWszCNWZtC1rdMdCk3DlJu1wdQ1dmHCaPGEvucTFcodGy0CiN7Xm4gzVmeRGU1ZpQrpRLmXkxniWWrRFfSDPnt/P47jH1TVc0eAcnL3mZCVRIN/CGMRPyidZU5A1ai6OT44Zng0xJKS+31bQ829zVbccBJsxdGw2XU0vtHxl0zKI1Rji0Qm65uDKeeY0JY9xRLPf4rsVgYT4+877pP+x6G0GhgVCzr9Z3JNulk+iyYPRCNt9JXNv0Ry2PMruRKZJL3iLtO7QXIte3kXXmNRaj4i90GgQSc53OBwoTIMwWWVdiytn3WKzok4r6lqtoaysaTP1jN3u8Ox7eGw/ewk22w3VQfJupKSJCmvNhjWt7mIJr1yrpdyuflT/z2qH1nZ4U8l7tUMCydH4RYCd1xwa1anloeZw2NIJQ/+pG7KXcEK+qzCtiKMTxbuZ7w/U4iLrto9phdT+4+K/x3CfD4dW6/e4Evs38pK7h7c4crhEwSu0Wh1ShdHT1AWIGnTRlFyIsON45HDIH6gkzGaaNYempZN/Z03B+fEvADg/HtAaHQdx07uwZTRTEi2t3lLtE3LZYJ7jYAdyuFdzemF8/2kz9QJnNKWs1EEU9z2uhCnqviCsS1xfjdFxG1wJSVbdR+w+5dhXYYhDt8AWJYxxbJBULi8kPHW33HISDtE6FXLVmz29vPt5pmNFA1YSVTDqHM0Q9viBRZ6P2MvhMwk1rv7bv+//bqFCLVHdYARq0e72GeOpRzRRczwceui1ABzo8GMXdLWhr5cHHgMamm1TGhadLN0s2TMbhmwkfFRZBl4oAJe6YrVfMRxK2Gc8IhFDKs92UNXEAujp65K9yGg9xzpWF6qfxabnUFgkkhpwZjb7KzUXrtFh91M8yWFcfPMta1G7WJU18dDAl0PDDn3iowhLUxe001XEMzHI9IrlzTVDyaW2ZkRtqcPI2Af0hcHu8BjiNzgI2KRrK9KmZL56XlRXN1yiSL1vzbT5+pXKHZq6R9hpRCJ+bWgxw+Hs6XuT8Sn/6T+pw63cp2wPKvQ9v7ylDmAsQq6FM8KtdF7N1H4/MS0e1mqvdV5AjkVXqjNEa3ssoSlrsj1vF3ecD9UzXv36gsB/nqyqzw4MItU32zLoUoNawpqmGTOaqfFZTUNf5uRlI++tppULIesSosFLvEitofFkTJfvmITKkDskK+q15C6jL9G7ilKAWI5uEc6UakUb2BhNheCiMFydIhUquOaA1j8vB1WR0ZcZwVAMwvUewxYxWM8mL8AXMIfu+pRCg5hqBmlVsRBDar26ZcCIxhGlDG1IILya6bYmXb2n0dVnujlkJxy6u7zhbv4BN1X/fvHqgqKX8GfbEwxCcgn313I2//ctvVW51aNBxDYXnt0qxdc6NKGW3G0ysIQPtKnV7IlAexib2GJ8GlaL2xn4ctbuS43O1Wgr9V3PDYnHagymr0NVotWSk/ziDY1w+EamQR1kT1R0y11Cw6PK/c9LKX0Oh35un9vn9rl9bn+x7Wc9wXJ1iyUABN8w0QfiUe018rokFdRh/1BiCVAjOp/idDaZiKz++P6KSOCvddrg9iaGMJYn+xTdtrBEO2p9W7LtpGQhr4iimrJTFuEm2XG/VFb17359zGwWcbdQz+zdmKZaPjsGzyxwhc3doCWIO9xQWd+2x5NFHRguRbp7YrLXPIPSUf2+36/Im45OSJq9oUO2T7gVtu9d2bDLFIrqbh6iBzaFJI9X+x16qBCApufRrHZMYxV2ypIaQ6DCLpCKlfzTFuo2WrMkFuspshJiETQ2+47UbOk26v8tyyVd+kE+e6D3eh4y8TBbnaHgDSKjJd1tuFsrS2++zvDOdHxB9tl2x26pPM/DpmN6fkJdq2fOb24wH0U7EhvLtAjEktWfWVFHkZpv3yhxDSm78BtevjxilanxXz6sCIT1fZUc0IMcX1iyKzQMR312t7qnNX2++EppumVpxIc8ZblV6/SEnljWUOx3HKoDZaXGNGxdlhu1TlynJpqOyVYCd+86KiEY1vpPLcevj1RE4u1hTVUlXL5X3u389z8QmcpLi059Qi8ikNB01lWEUzXhoQHj6RF3UhKRtBXf/vYN5V6N/+F+h/6osTbw+PL1L2gFNT3Pde5Fr/GorzmkS7ZC8Kz3OpaE6nrTId02DMLjT18CUGoDcl15O5PxkFb0A5tdyug4JhCtQd+3iEZq7ou04no5x2zUi82L5klnc99p5Ist20R5POMTHauwMAO1n43EQRcgltnY/HB5hytCvidfzBSoBmjLDq2uKUWfszRswj9Hepw62OJtBFVPYkBbirh33rAW0IRZ5biOSytlJlWZkcoZZTg2VtVjCxDrdGzwbr6kkFKTPK/QZS04vU54dMyHtXzW9njiWRy2K/aLDaGAePZpiSXITds0qc0/QwKeHRgMWlaZ6Ef2OZ6gaJMkxXA7fEPIvcMxmXiCrq9jmSGrlTprbj4mNNHwiex6r3W4Qm6t+wOyZkgr5P1nx2cMLNXvyOrYdHAQcuxdmWCLgkanQdnmaAIS+nD7KSF+K95WkaXoEjYxNegNg0Y8yOyQE49FfzXJ0PstkaCK7XFMramzc73aQW8ynagzovN60kPLVhDWWbenlH1gBwGtnpJI2Y02PGa9V5/lRcnrl6doIgigDQZkog9pbZ73yB/bz16Cy63KPwBofcZyqVCHySrn6OSMSlQFLhe3mKagfUYuVmGTCHt5VR2Ix6ozfgkmLoWlFl9pZjh+jyb1d/m+xrAFaRU6jHyT2lCL2goiwoka4GA2xgpMzDupWwt7TJ7nR3XCGhFbJvQ0MsumkEn1YotGZJZuFx8wbZ3hTOrNOpvrrbDVNz361GEqCs9dW9KkFj1qjLEXg9Q3Nk3NblORSDlDXTVUaxU+evHiFegahq6en3Y5Rak2jefFVNbzbntarPjm7IhYXmqzXXAkCs66UeDYGpUg+6p6Sz9Szx5nJdbkHKNWB/9/+cM1i0SN4c2Rw3a5wBK05Ciy8dqctaDLjPAYQ/IbcRgwG40oeFQAsLEfEXnLiri1aOWAaZtPkViPKYtse8NxpPIp4dgl2WYkguZ6mG94/foLNSY7Z1+1aLma01E8Jl2qMTWYTM5eY0hIbBS2dHWH7inEnmumSMqVXTrn+NVrNIFjWyZ4Q/V3oHvEvoeDqI2vUmpBMm75NB91LlJKl4d/xVo/oIkBWNYtDCQP40bE0yHbh4+qr0HHl69VP8ejgLJxuXuMtfYFWuQy9dRh0yQd1+/V/jo5jRi9+oKrKxV22h5SEkGK+rMJpdXSSTg29iyGgvJMS4Ms23B29NUn/QcoTZPGVQbZTdJQi/LLF6MZvTPGd8RY8mwikepqW4OiLp/ksIq6ohPjpMtdPHNGJvHIvqj4+ttfYuWCat3v8QwxcLdLeiy8QM1H7B6RSI3oap5yfHbB7KVaG7e7gu7PBKmMuiKX2rfTMKLBxLHl4NUNUjEGW83D1ABR//BsG1fChuuqZ79tODlTa+GQNLhphS1SVrZmkstlpjkmjWbTyThKo0BsHPSqQ3dNelcd9oVp4WmCnDVdRs3zItnrNsVsB7imet702MMWg/vhkGKXBu6R6ltvmnQi8hwNRlS1S5Wq9910M253Drf3au3fbe+ZilzS3/wvf4vexTRyDumOgyY5yJMjjW9OX5GIcsXq/oFQyh72WUSa57RyKbZPNc3/1rRWSmmyHO8Rwdws0AgZHat5arcJ61SlU2xTw41cDFON49B0rET1ZtVDELhsOjHI6oy203A9tQdX6x2VocZg9QmGaYHIMNl1ykSM74W2pc1aKsF09J2D3kk+2Pl5FYmfvQQjJ8SVzb+dZySp6vi+SNDzgkA2cPnwjlQWbZrnREFAL4dUk+o0AoYIz1xc3eVSdKxGscdwGJPIBBDssCRB2/YljmvSij7XcDIhEhBBZ+vsiwxHPLMTz6eqn09C65h0kpxfUVGWNfTqN+eLayopQM+aFDeK+eNSTaJrH2MGyqLWOofyfsNiK2UJps5d09PKgvfdhqOpmqeXry64W97x4YPkc+KIiRwotuXSdTtMAU7Umwwx+IiPY1z300J5gKRsePv+PVOJsQ/MhFLSPr5hMB4WlHIhL9LqSaIm8G2CWEOzVKnD153LzVwdIDeZzuj4r/jqXB0MU0dHCwyc3WPpw5Aql41v9xy2NR8F8m1V9/iF2mxB77Pa3pPpshaeib9n4uH6kU50LDqEdcAyOdCJ8WR6Onmv+ubEJmbgcXdQ76LKa1LxksJoSpE3IDWEjmmT1i3eY9LdaegF1GEaHrbnYcsGT9ZzIqlrmY5c7DbjIPktyi1j8T7K5yRwJI9t9SuO7APDN2p9b+sj9nLJBpMh8XFAJUCGqK9IpHTEa0JukpqDWMPr6sA/r284ErBT4uxxfqEMsPZ0wL9sb/m4VYfIoe3Ziqcb2z71/h7TU2shT3xiAeasH9bsFxCZn+ohAtRFSiMeZLnXWJtqH54dhTTWEF2Mnr5s6As1n7brsfs4p5GLznMc9rL4RrMJzS7FlMPV6UwGBhTdIxChIRpLCch0wKw4xajkfacJ+V7t2chzGQ+POMi+2CW31P3Js2Pw4xEHgbzvigNuPEKT88XKTRy5oJuqoul7glgujL5ivRVQVGMynp2yFamf7XpHs9Z5bT8aloAr5VCDiDaMcBB19+2GXPbXYbdE60EXSaa2qKkkQegPbJLd87nZwnKxxyOsTp0L+2yPJ7+R1xlt11AKSC7zbD5u1HuqLJ9pNKBz1blUaA4Pi5IjiaB0WsftVs7hf/wO1zaYCTbjzJvweLxYiRqko0vN7rDDl/q+oknJ045IMBa/unjNP/6k/2UqhkZbkDzlrWssr2GVK8OttWqKXiSXXp+Rt7Bcq+f5jcVG8oPW5CWlbrIV47luG1zbo5La065paQRHoFspWaVjCOgwdIeUUvJjlQXNYUkuXp/nBJyeqnNvvn4+wvbYPucEP7fP7XP73D63v9j2s57gSRw/hYaOT48YBhcAXN7d0uQ5hq0sqenRK3aCSNTkBAAAIABJREFUxDHjMV3fUUsZgqbXtCLl1DshO6PDGiorI9m29KaPN3xUSV9hCJw+HA6x4oZirazTXfmALRZnXJl4XY+mi2Xn1qyWD8+OoW9gI7mGwcDlxew119cKyVrscsrHXOZxiBaOWOyVq+3bPq1UTR87Qxo9QherfXLqkxkBi3tBsvoGnbDAlL0GfchkpuZKs3taUb2vl2sGnssoEqTd7kAg+aex4XG5e34M6zxhu7jFeDOVQcFqr0JuL0KLertFl6J7dzPnYavi+LPzC+w8YCJhgf9pesabb9S7uHtY0HUNp79UoTOjuCVvEpxeQoGFxtVHESs1z3nYb7AEhTi0GzoRoM1JKNYHEoEmOy8Gn/T/kRrOcC1SgUZrMSSHksVK9duPTCpTrDp3QOvZXEseZrmz0EuBatsxcTxmLznRh/mW1uwpJO/pPCwYRvK33TF0NHLJz5ZFhSteXlYVxJ5L8Fgy4mlEItqcrj8N6VaCT/Wo6No9lRTgdxok4t0MT32ywqCzWnlvK1ZSDlQ653zsGrSJ8nD0xuHtes2t5GCDAEIJPb3/4Y8MnZ4+FMKFxTWJ5G5/81e/pbLecCiUdRt3KaawogS6jdWUhP2nISyA2/USBJlcHA40uXilk1fo1YG9iOOeDwMSCX/2YYjXGxxKtYa3RYIfKK9h4o94f3ug3Kp1a+QBq3dXDIROcDAd00gpySi2ef82ZSv7dDSLFOUM4A0TaqenEg9TrwyG7vNHU+P1mJ0U2Yc+ja5TPZYX6CatJnnlhx1mEOJJPtqqaybCmFKkNfW6xBqq+TVri21lsRFayNZ0yDTVl4kdoms+h0f6tX7ISFCsdpZhlBsMYdWy0p5O0jf78sDy8vn9nOYaZn/EO8m3xWaPKQj2YPiKPi3YZiKS7bpUudoX6a5l8eEDlx9VRKY3ZgwmLuFI5avH2q/QhFVrm9xiBhWJeNfX3++YyfFhbvckxQOGMGnF0TH7RFJbP3xPsW44ey3EAsanpWfNozhxkzB+qcLrR0c2dt2yzdU8ZYWOMVLz68QhZeNgC+NYkWeMJqozlW4Tejq2oIHbVCMtbMxj9bvBIKduJM8ZWPixy0iEyGPNoZbIXat1hGaLI4QAjqk9ve/d/H+AMWY2G5NvlFtekKBbQlXlRgy8GYdKvWRnbJB/+ABAne6Yjkc8zFXy1u5Sjv/6VwBMX3zN/JA9cYD+8fABP9F5efElAKWWY8oiqiqdu72G50nCtsrIZeMfOpvA02nl4NX90ROo4qftm9dTWk1yPc2K5WJJIlB4AxdLiqy0tmJ3v6B2BRpe1+gCv903Ok1ToQsl0yarKQKXJFR9dXSH61v198PNH+nLns5Qm2gwiqgkfBNrPS/iCMtTz389HUCrXsFoEjNfPV/r+GUwwooMatkMfb0ldXLpZ8eoa/nh/js1h6lGWEkoqzUI7QFvbxXrzsJ4YBCrco2jkUFNx8ebf1C/c9hRpQmFULddxL9C36vDfDTz+Xbm0AkaxqblThg1aiMgCyN2vfrdcPxpPiqQ8o0OD0dAQdf37/nx3Q3RuYKbx+cRpYSSDnZAV9a0jjIsvLMRt5eP7zDEvbfo36l1OTBN9MilEVacL4dv0CL1O1fzP7BIlji9eo+bxYrZTB2KXqexXt4TS17K0GpcQ/IJ9afw/Pt7CQHVPaPxBXthJqn1kqwTppc8xxibeGfqotsZB+JjYXYZ2myWDanU3Ta2S63rGEfqktgtc3bCCWl7OuNxyNAW2PjdA6XkyjelycjtGZdCJ1hYZIm6IN/+6S2LtcWRKLT/tF3fp+hSzzusa2xTrbfI1plfv+WwFmad2zWhlK5EMxOtatHbRyo0nUgu3Xff/T27zRZTODmHw1OOZq/ppX63y2Eo5SJGM+VuUfHjperrLDOodTUma3xC1zf0AvBI12sW1vP7eRRq6K4anxHE1HmJI7WAQTSlyiT0TUVgeiD349HpK0JdHcrXyY887A94kkvs8QgHHtc3QjkWO9iPlG6aTdF67C5VmC8OgicO4Ynr07g78r3alyPdpKzU/CapgWY+P4Y8hZt9RSFrdjo2Wdwqp8HwXmBEJkWt+tZe7xAmNpL5grvVmoe1HPx9TezN6KSUKfJdvvqd2l/Rzuf87ITrO7X38yxhpKu6vcHrmLatyYTTuLVtXCF6+vqrV+yuE1q5/Prm07KtoyP1maYPmb5S52XZpbR2z+uJurw2ZUkm53y6W4EZ8mIspWIjFyRXuW9aZkP3iXGMo3Pe322YCJhQa9qnEquuyNmlaxyh+6s6qCU3bxkpBh3HY7W/86qjl7NM73/2mvscDv3cPrfP7XP73P5y289ekWEwYSTV+lmscxCFgSYa0HQmiOXmNg0TScDuipp0fwNCeOwOAzxhGNimC/TeY3CubuvzbEadzdkdVHgyHPnEnrJkytqgtUvKQpBAjkteCVzXKnEdl0Tg1nmtkzTPIysnQY8ZSMipd8kbnW2hLJJ6t8cRAueu07E8jVKo9RfVlkOurLqj0Yjl8p5//pOyiqYnJzjxGe8X6vn6bsNEE+8h2TMbexji3tfUBJ2AOLyYqqnYfFBejKv1IMAjt0up6+cT6Zpv0W4LEkELDsKaifR7UtuUu1s0YVHodlsq4e+rs4K7xdWTp5DYOvsPKox6+nLMclPy4/eKy/PLaUA8OsEV1NbUP+YLWzGYJNcf6fuagZAql3nKTLyI1h6zGcWcToT8+cXX8H/++/63lQqjel7EXgi6XX/Ci6++YSGQ5j8+NHgvVKG+jUuaVlhTZWVWlU8ioej91iUpI14LiUJZ6mRU6MJTc5mlXAqxul6fsFu85cWRAmdY8YhOlE9avcWxK0xZp+Xmihvx9tL2U9twcacQeE3r4fceloCdTmcumoSiD0ZNbfuMTwUU5hQ0I/Vb5dBjs3jHH+/VnLqzCfEQ7gQ5nJc6U+GEHHpj8jqnlULks9djnFBQ2oGL0TrMr1R/tK3BoBnIeF18E4w/A813WpvQUXvBryt8ATNRa4xGQ5pGvd/9esHYUSAdsp5is8ETFhp/ZGJbal+cTkMcq8NN1fPCyODDPiGXNMK41nl5LGxQ9QZT99kJ8Gq5X9KI8sdpZ9H5Ka5EfSzHwXKfD+nuNhlSVcRhXXP6YsbwsZSmqDjcqvm0GdEdapb3CnHrdpBK6qFLS4yq4+pHtZ9C38YeHVMK+MhvKqZnogzx4Z66yYkFoUlTsRGk8svjkKYJQErAgtCjmqv3YngGXhk+Owatsyirkl5CoE3v05gKxNHkFiezEftU7eEP796BMNlUgcsPbx+oDPW7L04i8sxiKgoybqBT7NR3I2eI3mocBBQyfXmCL+mkKtkTOyPmO7VuP8w/cCZncrJPSNse8xF8tF590v+B8H4WpUYj3Li6r/5TSUi/b2t0UaEJBxHJJsf0JbKWpHQSPcDseHddMI4FtTMekOGwFOIQK+2oJaQeRAPMvGC1VfNvNA2mEG93ic5ukYErSOHOIBgLkb32877ez16CeVZRCels4I05tCpcMDzzsMqCgbCPLHYax+L6h7rB2LJZSJin6Q1aQ/3G7cMlgdaT3oncxg7GJ2PuMnVoWWaAFaswRFZ5+OMJY2FXt7MDiYTYz86H9LsdbaVe8Hbb4MlG+GmzyopOFC5cK8MNDCzJ0aUPBwxLTdBic8dkdkYr+SNd82kztQDmZkvd61wv1AIr+i3L7z/Qy8V7/GrKQmi9HL/kaPICTXJmmt2w36jffOH7ZNsFvi+hhrTDztRn/balKp5H9XV5R5+UOIJmaw4f0aUkozM3ZA+3jGX+rxYZ7Z2az5s0x/zqlKWUIdyv1uTvhAli3XJXJzhygK31lhfnR7waKAOBxCOQPFzTrsmSFbaw5R+6BN0QxOt4gGm4OLJOKD7dNLHMf6A5PAjCdOVYxIMZh0Iu6HbIbi05hPGYedcSNepgSPshmSzucKSeN/7itwDsE7i+vqGTEOD7699jSU3b18df0HoaG6mvjOOATHIGTbYgSTfMInUQj6OEIJADOv00J3h8pIyzdQP7ssOoBL13P8eUDfzV669w4wmTI5XvyL0D/+Uf/x/17NGAPg6IROrGGfaYXoTpqX5vL/d8PKi56HqLTZoz0UV943hEslVlLs1iCYbH7qDG8fD2lv/1b/4KgF/99pckaUn1HOUN8M3FN7gSPur6Da+lXCVLUszxS07P1d57NQ3pH2WFhjFlMX6CnpttTSOG4jDyuU8OBK9VCLwfH/HjUmdkSrgyjBD2L+5uP7BebVis1Pq4399hBGqdtv5r3KwlnKj9FE/PieLn97NRtxhiLDq+jYtBKPWObZHTiKF+v9nSdzoHMYhuVjlfvFLraTqZ4pCRS94t0AKsoqESo3dk6xj3qi/Z7Rp0GAkeomgK8p36zd7wiAcTLNSBbTYanpR/Fc0WXXueAerh/pbTkxOCQK3pVb0EyXHnh2uKq4Ll/hGp25MKOvTsi5e8nAy5E1Lss5e/ZX5rPdUp6n31xMTy6mJIz4a//fbv1GduQydh++x+Tm2uyZaP7zSjvpd9eHnFMgVjon4zaz9ljEHqbvUWOjHws7pluzkQSBlVZ+usha5sdnpKOl9xEGxA0qVUkqJqDbiaJ8TC0NPe7LHsIe1AzqX5A5WoQLx+8YZS83mYqzNkMV/wZajWmtN3NHmKXQiCfhDgyjPsP5Nffmw/++ndYk4i3wj0/Ane7ZxG7K/3jISOanZ0hCUafQVD9ldzjFrdWEWXsRCggR0OsG1H6a8AWdgxnA0wW5GbSQpqRx3Yr968xvIi8tt/BSAaePiSZxsNh3QdxIMXalJrm/3++WL5ZZagSeHrYnNN7mgYkifINyty4aucZ1siyycUpQrNbplIJnmnBei9xde/kUS6XjNOXXYr9cxXA0sJEAJGZWN3HZOR1H9VGypRregGFtNJjh3LodwdY4t0VK7pT1RBP21amrO62WGt1cv38g+0pepbMNlxmN+gbdWleFYW3EvNpFMUmN2e8VQd9OtdiiZW5MfbW6y4ZSLefL5+zw//sOYhVYvqNxf/ga9C9dnVck/T9sSijBHbHXnyqKFXkm3veSeyKdXx9JP+65U6NPwQZgN1EB2amKaOqQQYUjYhuqhGHFyL+53NB1k3fjzj3ZWam9fHPsOTV1xn6r0ttxvuiwxPYPLTX3xNJPRYRn0gciwMqf8zQwtNLoi6KMgeril0NR8nfognZRdt/GlO0BcvaZsvyZOcxhUqq9U98egCgDevjtCCkLVcWNcPH0DKDtZNjeN5T7Vww2FAYeksBOJ9tXnL8q3yTO47nWPH5QuRi1pc5wRSsjCdHKFtaqYDAWccbZ64WbVKgzpF5/nc8snRlHav9trupmBzqfJQq+qW7HbLV2++BmDguvhCaXb66oTx+RkPgg3o8geaTr1PR684iSwq1DvdphGhFhLL893RC/yZOkzf3vxf/Nd/+p5NKsQVgze4knf0xi9oiw3Y8p5cB8d/XkUi0lt6ObYGtodfmYSOyh857Q5H3vVJ1OGHPr8XqH16yCjEK3KciIFuciLZoOXtA71n44gskNXMyDrhn10uif2QiSioZI1SvgE49WAY+CyER3eTbehES9GyLQLj+chOubljcX/J6FQZrm2S8CJSe3b2MiarNCZCwPAqnJIP1RiGg1ecn/i83wllnhlhjwa09+o5x6cu/9tXinrv6Mwj3ZhYcinm7S0DifI8HFKWyY7dSlQeAh1L1vNJ5OGZNgep3bq7/ZR380Hkmmq9pxdd0cTMubvb4crcTM9PaATotNPvSbYl31Uq4rfXaxqJgMXBCZ1h8+OdipCcjCJo7+gryWsnFakYBIvrDY7dYgqfadvoGEI9dxwYdPWAoXCejmydXnLXTfW8c/HYPucEP7fP7XP73D63v9j2s57gdn8geq1CJIbRoUkcV08cct1noCvraDaBFxcKEXe1rdEe7gklL1JWGff3ylp4+XLESRRzLcwBI9sitS0ica+jN0dkAs2utkuqfcbmUoUL28ih01SIZHX5kSj3cITxINRLdunzoYf5w5bghdAFjXSctCYUpnPr4ojLnTCNRDNCz0QTku6T6YhGrKEVFrusp9lIEXowRTtxORY3u+0rYlEMT62eJFlTSYi3tnvOp6JA326oqp5kofJyab3lVJg/utbByf6MJxi5JEZFVAtThmfz5VRZQAO9o6FHN5Q9czKwic7UPL2YTDGHIc25stQHGNwuhO2hi3j1zTH1rRJebfctvxz6bCU8Od7eciyEwuPAwx6Nn3Ty5lXFQbymfZ9R5vWTWGtrf5qbfSkWLzqYAvs3twOy1kMXr7XLTOrHcG88RI8maEJycP2wQRNihm444W3VUKD6uUnuefWL1+xSZdXu6wKrk/BrHFP2Gp7IQwzHM6ZSwGu6OoVXYlnCCkTP/F69l0p7hnhBwkKL2xvuDmtefam86y+/eUk7UF5LX7fMb5ckA2HvMT3ME7UPPu5KFvOE45Eg6+o5jtfRH9R3180K/4UUfdcW5A2VhFxD/wg9Uu8ifnPBeGfhn0jodBaDeNDa/sAP70vc7vl1dPXuBlPUVkzX4qOEwL5/f03trslFTf3V5AQDtdZ+//sP/Opv/xMEyoM1yoZjga9n6yWRNSQX4oSHjwW/+PIbIhHR/uff36BH6hl//DFhUYbc74TCqq85nomQqhvjRBalLXvfCuitT0ttAIJZiLYT+kLLwilcwqF4VH1HLCoKsxdHxHbPXljfr29v6SSstm72pHrFThhN+qpm7E2xQxFjrpZUQi7tmSYnNmg3ylNxzICzMxUa78lJ0ppCmHcczyUX76MvDgyf2QsAdWBgjx008VojJ+TipUpDvHwx4VD7dPJ8Mxvw4U7Noe3HTONjfusqtP338w3j3iZX25vzicObkRpDWW7YV0tMgce6rYYrKOmmKgnK8uk8+ZffvyWIH0OcPt+++TWuYEHedp+WF8yF7s0ODWwZ7/ZhQVroZMLGZexzLEneVm3BtrYxpbSi00wOqfrssN+Qbwp2G9HdXN0QabAwlFd+Mp4QCd4hvZ9T9j2Vp87TL87eYEnQJsvXWDT4giq2u4ZsqTAklZRa/bn2s5fgev7AVGo9LMvkmxe/BuC2MrAIKOXA3O53mHLRJcsDRd5zeqrc8sbt+HGrQprXhcFydaCQUNrx1xGzUUgiic9tWeBLjiZdp6yX17yQw93sLFpDufaOVpLvKvpCaL2mHlb7PEXRze6evxZm9cgcYDoendBMfflizK+FJb01INF01iKc++bolELqG2/qgryCewmJ2VrLYDTCPBFRYS0nk1q85W6BE0T4wlRR77dcSEmEv6u4mM2oRPEgudtQCgTZ8yIc+3nm/NXykqJNmAXCUemPGQkHJ1mHV/WMpiJZkxXUAj75xeQLyjgi8dTlMjxzOBEZluj4mOmvXnIZqJBYe1nx0o14MZWk8/aWUHIPRycDtnVCJRI5LT7mSIFYtKplMqn462OR4ZkN+ccf/n3/61YdNl0y4uNKAXE+5hrO8RtyCQFHjocnB8E7LEw9fFL4yO82DE7VwbtNMnaOyUQEfyMto/V0Asmt9bebJxHNdVrTNQZ7UYwvPr4nESj4meuTaGP6UoXt79cPeAIgivRHYtR/a1spCSm6XvElSt3Yb958zU2i5vfu/ZpN2PHDvQpbdzOd2S8lr3n7jj9sHnAv1IZOmj2/e3lOrqv3aEU2ywfJDzPh69OI9EHmxpzgOGp+f//dklemxRth9OhHFxRSJ2eaLW54xMB9nivRC70n5YbQ9zkXOSbv1Uv+9d2ctQgXH5Uz7q+FrWZ+h2aFvPn1b9R3vSPO5NJ34m/4k3fHNpWLteq4mH5NJQfn1y9sfpBauNXWpB+8wtbV4Xao1xR79dmP3+0J/IqTr9Vcba7X2MnzDFC7tMBDHXTVQ4c/cUjlstG2No6E47LNgneLW/ZLUfQYTtjL+v24+EizXXN0rA7TIIgxlls20p8u3TEZqlSLb1pUy0QpxQO55fCIm6rR0WIb91HBxgZNGJPi3n5SO/hpc9qSXXrP8UjlUoeDAfte+q11eGbPVnhMvb7Hlzrn7bt7jl87zF4J7WQLqdWQShh57GeYAtIaTD12K41Kygusak8t+Ae31clW11iigkOSkDdqLur2geR4yHGsKAyd+tO19OFWbfCvvvz6SdDZx2XkQCkyV6M4wBHw2I+Xa4q85eKFmtOqa9lJmYfVW4wiH0/SG2l6oHFqTiWdNPA6Wl31c3Uo0NwYX0okxkZNJ6mHV6+n+LaOK/lil5ZWAp199vOX4Odw6Of2uX1un9vn9hfbftYT9CydShCYM/sYfyi6YWXDej5nKKGdh2X+ROhbdyFm8JLbtbqRk7Lnaq9CKXbRsVvNGQyUJaOtIsjXFLUKSWZ1Q/xCJec7f0jX7glF6LMmx3Aeix897CCh7YXrLzgh8Z6/7Q8PV+RL9b2//t0pfeuyFvWHolzz7WsF7d+mObte443oWlmGx2qlrOHfngyoDhnz7aO3uSY+O34qHxlOHOZiuSZJgOtP2WyV5VgFPd8EwrQ+aHhxNMMU9HcdtyQPkrSNhsT5j8+OIdAOvI5NjuILAF54OzbLf1Fztj5w9T7lyyPVt9enY6biXeXzW5LEYfhY5rK9YyThwMiYsf7hBl/CTlmbsKDEEZTpr46HnAozSGvXmBuLhTBjlIauaOOBQIsY1Dp3AuNOF5+GpVc3Ksy4OaTsRpK4Pjvjw9WOgzDCn788pRPS3GoH57MZc4EWHqyQc0ENJ56HMx5jCvJrdn7CD5dXHJ8oTzE3ehwR2J1EJvmhfmLSp6xJRLlgVbvQn7B51FHbvuXCV6HLMP6UjH11r4qODdvEHJwzOJUym1KjkXBrUnZoRzPORooA4O3iTywulRLHOA74OnYZiMCxZ5QY+RxNQsCdVVBJeN2Z+DS4DAMRKK0G1KLL184T7jUbUxC3sTuildCSftizWX3Anz0PjNkXMBMS+H22pBJQ1otvvqAYR3z8JzXG379/S7eTMoihwc0f/562VN/9q1/8R9yZ6peWZ3w5eMmNhDh/8+0Z40HErYTGm+2GUhDWjt2zT1tEspDj44imUUAgy8kZxTBz1b9X2x3p7fPh0LEbsTooD2McjemMMeu52kNmrnMmyNyHzT373CEU1hB/fMpSSofGvsYhn4Nol1ZNy2a3BwkVd41DKgjY7WLDKB4RijJHoJv0pQhhWx6btU4iDEGlXaE/ssX7Y+LoeaaSgQX6PqESb8+fTFkLajbJ1/zu4gt8CV1ur/6Amaj5HlUe+naJ7gvK8uYBw/JwE/U7s3iIu1VnXb8q0DbzJ1WLP/7pko2URJhtgZZDIohfQ9eYCGtXUVm0ZcdBhAX2u09D6414VmaV8sWRuhO64QU3V1fcr6UcyjqjrtW6HAwHTE6GfP36AoDb+R2eRPiapKI/pASOmu9wesp04BEPhS/U1nCEBac+OyKv7Ce05xSH2lNnxIkTEw+GGAKCzA4HtlIa8chB/Ofaz6NDdxmavFM30jDEtR56Y0IMtoKKethGHETCJH1YMBqYvH2r6nMesgxrrEJnLi64YEsu8cP3a5z+gC/IPvflmPZOLUzDiRn0E5ZXyt29Wd5xOlMH2MTxWN2s8Eo1UWvd4P7u9tkxlE1BsXqUGRoxiBu+cNVCubuvMUUXxtlVcHvDRkqs4tGAL0VBY6xH9PWBK2Ezr/QKv98Q1Krf+q7kpUi9zxuXrLYYdfLi/JIzcbgHo3OGkxMaYfsoaRk2UubRVE9oqp+2oTnEmhgY1+qQeJ/NCYWyrVkm1JVFvZCc4NQlHqoF/P38nl+e/ZJpoC6Qy8sF60shULZTutkJyYP67vy64zjK8QQar58EHBbqu3d6QoeBHz4iEo/5w1L66vQcuoRa8gSd73zafzmYflhmBJ7aNEE8wvzGpxGpLMePuHfUHF6Mj+hbh0IXwdtphycbITZqPqYLeCyFq3UmVoPbPNZngSXUbKdHR/QTjZsbdbjbRsxIoN9jZ8DhzqITkuPDFlxh4H/xygP+9O/GcBSrtdDoNfvUYS5ireEy4eUbdSH2Wsy/pA/UwvD27d/8HZdSkuDpFW/sik6IzpN1zsqxySR0q5kuv/6rb9VvGjZ2WfHKV+GybqVR13IY9RPOB+d4a/X8u9//Cc8S0uDuwGASMph++g4Adss9taiW7FdvQVIB5wb0eU7dC4S+2D9J4nz7xa+os5zdXBmEfHPg7Q9qbm6+m/PVV79lIsryF+c2Rpvxj/+qDLT393f0ErqaHtm0WUgoaMWjuMQSKaPpoGZobQhtETU2qqeQ/k/b0dkF3XuhaOwHXN8u8Ep1KZzMZqwOgnZOTKzOxBC6u+v7e0op4/nyeIoVWWwkB1+4PhsDKrnc/GiAbquzbeKFHA1mWGI8xaMZndC2HUqDtNe4Wqo9bLkVumAKBpFN8owaCUCz2xOfHjGW0LSR7XkpNGKlZnJ7n+Ds5FKoKz78t/9Xnn1MOzDR12oNt/NL5vkWV0L1/eh/5vaPaj9//O7/w5/4bIRc/U8f3rHMpCQiXzHw4f7yg/qdJmcidH4ngyED1+LmSn3WW5/Wa+qPig95glaoy/Mojph8ec5QWLX61uTdn9R9YRtg+AkrMSymwZBzWQdZlpDnNVPBkIynM7T28ETS7pEzEeURK56ya0GX9M6gLRm9UMLQp6MZu6xgc6fune22eKKwK6vn19Jj+9lL0NgeWB/kAlnuuLlUNU/dyQlX2y2GWO4PeU0l0GcrS2nHLY0UNF6/X3H8rbLS9Sqgax1cUaTfblIiV+eV1CdtFgaZwNttcuJeA9EjuxgccRDdsoeHHddXO86kZMP1taeL9aftfBwxEoWB4mNOcGpxfK4OYv0oZDRRE3zd3XBkBPSZ2mDR0GF2rD7r6y11bxJeSM6iOuC6NVthwa9ysEUFPb/dEU5naKFwLx4aPNEzfPlf0SXZAAAgAElEQVTmnH7XPOU2r5YbhoUaQ1XtWd49nwcJZi9YzC8pJV9ZVTkXUsoRn4wJZi2uFAXHozGDUI3v7uE9xc4mS6X2Mj1m36m+fP8+46XtkXYCfBpcEIxtutUH9VAj4k6UE64u79hXJkksACPfYPziAoD71kZrduieGm/2DG+lKYs2ikNq0TsLu5xwFPFerPg+a3FHKmewz0zauiMQ4+h+U5LthCghOVAMBjS9yNfkYFsmnhgaD+sbbh/UPOYPG755+QWa1IW26ZJKuEPX2ZouTxhLzaY7HaGhDKmi/DQn2PtqDL1Zow9CAik76YIj7kQ66Gp1iz4wKcSqP/rNBd5BjeHQbjk5dmnkUtCMA3rj0AvN14txwJGouRtVg1M36K2a7ybNOIiKRteV/On6HeelMhDGgUZgSdShsdGs2ZMS+U/barkm65VROT0NCcXoGI1CBrnB3Z16d82hZHik5veH9Q+4VYPZSh6u2FHIGtqtruhOLvhK6hTtLuOf/vgd33+nKBNNV+XrARyjZja2OaDm4+b+LX/zRj3/OHbwavh+JZ7gLsVtnwf3vHo5YfXjewDWP15xP8+JLEWckB4a4ki9z5HZ4WgOppw1QQfnE6l9DDVsQ6fVVF92acsoPMKcylpoM1wBxYV+xMAcUoixZvohuWilLtY7fpwXmEKMoXsQSH3jy9OAznzeEzRtCxMbB3WZHZIGeyR6guuOstgz/4MyJH4zfkkYihSdCavLK1atWqdvL5csFwt04Tk9uniF0av99N3Nj4xW0An1YOz2NPK9NCtYPGzonEc6QxNLiAuKrmW/S7lfqGd0xqfEC69P1Pk1sXo6UYboNY3jkwmO9hhZ0rF8tQ/1xuX2+pb0Wq29+OyEkZA/nNsW469fEklUUddyNmVPLGf2OPJppWx3NPYYlDmF5P3GrsW3L6TkKAjY1hHfiVHbOBkHufTD/vn98Ng+5wQ/t8/tc/vcPre/2PaznqDj67S1uqG//+GW4k7ivecbWn9EJdbxh3lKKBDuYRfy48eHJwJYZ3iGH14A0FQd+/2ecKQsXn3Qcnn3HksKHA3DQhdPYrlbcNArPIljR8cjioOoNmQPOJmDAJEYODYH8/n7vMvWDL/8BQChNaHbNtzrkguwBmjCel5WHUcnFwRC9dOu59SZFNcaDonucHujLIvU93l5NCEXEdzl5SUr0elrLRPz4D5RoKX7HF3yEvddQZXWzFNlId5cFRwLKbVpdnx8f/XsGJbJHX2bgWgfJuuOBSoElPUVk9bAapTl9MePFS/GotlmjVleb0FCFO1gRjJX7+XjouC2vcSwlaX3gjv0kxnWkQiPxga7VL2Xm+4jychFi1T+tNTH1J2yYv/ph0u2+3u6U2GI51NPcC0MLGZ0AlIEnek9f7q8fCqa3Sd77PkHAD5cV2xyCISqq25S3nylkMl3yZaBk6KLEodtBfieSbYVMeA+ZTJWlvnxyGcUaGgDQUROXnL1TiE3tSQndjsGwjQzGIUEmppf2/50DIas9UMBceA+sYGk+QNeq/o5v71i4Jxxcab2Qr+8YjQ4kX6FHIU2qeROA/s187uU+bWylo9ejpk9emaxRnKouLoSiqSNzqm8wzQrWeYZpZDCbKs92V5I54sd4XjIV9+++qT/AL2Z4IpXEY4tWlmHu80VVAWh6DmaUYYrhN1JmlNmGp5oed7O33MrIb/RyYDCTfi///P/ruYtSdm2Okju7fK//iudoc6MbhxhvfoSpmqfatqBLFWfjb/8JYF2wp1EfW5XHYb/vEh2HJnEouKwdXKMviaV3H21S8gGap5yV+NiNmI2Urk8y+jYl0K67s4oe5/5e0U6vy1KTn/xJZNQ7ZtmdYsh6OvRZIheWliPSjhdhhU8ljy17LKCiaQb1tWOeiueUWlwPHm+4P/lyZSxPyXbqDPiNqv4/bVS7Wvo+ML36cTz/JAs0CPlwX739pLL6++eGJGGwxkP6YE6VevkP//D33MsueousrjeLSgl5Hvx6yEzoQx852psFhWbrVrnXe9waNTfZXrg1Ot4JWjsanv3Sf/NVp2Lo9ELfF1Fb6hrNusaU9bwwO4xT5R36VU2k6bjZq6Q4e5mz0TmMAhtvK4EidaMTgJcz2K3UV7joNcZfqm8vaPxlI+3K3I5TyJLwxTh4q7sMQyPPHm8BzRCUSnpsk8ZoP7deH7uw9oIuVmpzt1sSopC/f0yiGn6mh9/UJO/qTR+9VLFZj0/4pAXLITbsLEj+nO1uS7iI9bdCfIzpKlG19pcJ8Imb6bUcxUSidqM6XGIL9Rs+n7O8SN3aRjSWjoDyb2k9x/Rq2fofYC+s9mt1OUVWMfsVvcYc+EzjCs2D6KGUPtoxYFeQhub+S3NpXTUduhanXcii1MEPneHW+5vPwCwXV9jDtSLsjyT+p/fI8T2+JbL1V4d0MNoh2mFPIi4590653cvhPW8uOf+9vlL8Pvb73njDxicSX3WbsNa6qEWd29ZaB6vwt8BcFk1eBJGq/U5t31CL6G0cjLjg4gPP7QacZPzWkK1rtey3D3gGCp88vHje/aVujyu0wNNmWHk6l38x7/7NWmi/r+DpjOYjcgkZzLRP42/N546DNKdRSLlCslyzTzR2YuihzcYEguTzuy0Y9zXpIVaC8ZeI98r0ND65hZrEPJmqsZ7tbyl7Eo6ERw+mYX0lfBcTiKSfo/hqU3QGz0bUT4Zex5GX4MATHpXB+GttcJPE+nWSP3mryZnLLOOTHI2h/SAJjnIeDbCs2wMYfv44ouv+f6g3v31Hxb091BKiChtGrTKxLpUz1pvM2ayhAvfZ7es8XoFsLk4ndJLqDB0NXZNgSk5ld6GXMAL2SEhHMQE2vMXyNlxy7Fc0NNBSNoKY4hjYNYBxkwt2rQvyAUwpE/OcX2T01C9Q8Nv2UkITKdiU0fMb0RKqalINx2Z0GVZ5haJ9jI5OWX0zTHmQFRKzkq0WuVq0zTh42LO6qCe6Zkx0+h52rSiBXMkodmwZ9W2rCUtYVQ7TAEQzcKQ0AoZ+GqfFNmW+62aQ023qfHpffW+xwMbPxqDXJKlBrUh1Hf3OYEJpa32wn71gKupd3a3f0CPhrSBsMR0LZEwXrmWxdB/nv+0zBc83GrM9+q7pRE/cR+/Ohniji26gTJqGwz2AjRa9AX3xQ21hKbjVYGpQSflWP+y/gOV1Ay++eYUz56wzNWFtXI84lBSPdYF3stTsns13sNDzqVI1o3MAUHoIkL3RPmnYemDnC/71KAU8eFslVCUGQNfgCqnY0JLGYAxPacnLbGunnezTigWApiyOpLqwE72yd0Hj7OjgKGkugzPw5AQevLwQGBUiK3K/N37p7U/mn5N0jQkolzhOD6mlHiF7v8Ad6h9fkF7UAvn5S//A7nE6Y+mFoXZsBbva7epyO7Uza2NciJ0YqlitHyboZitYdNxOvua/UyN4p3R0zgeJ+dKSskPW+ZSkO+XBsejEWNTTYDjduz3yioxrBjDrnEksW9g0KyfJw3GcFntRE9wqGMPI+6ELmj3cc5oqBZ72tqYTclfvZGkc15x86O6lCwrwBqeUwigZVMe2D8sSBNVQJuuUvpSbZJpdMzDVUok+iex2WELl2LsvmSdViD5QzcwySX2bVsR337zNf/H1dtPhjAcRtiDGZNOLf6Z2WMJUPXD4UB3KNCOJUc1CHj//7P3Jj2yrWt+12/1bazoI7Lb7Tm3L1epjC08wHiAvwFDxgywPLBADJAsECA+AEjIiA+AxAAGDBgjhJClsqvqVrluc7rd5M422hWx+pbB+2TWvXfnPROP0M13cnaejIy11tut93mef1MqNGYQzfDdM+JQ6p65xuIHQiYtKuaBz48Wqm+m3pJ0l5Cmaqy+awycqbq3kaaR0aE3agO1HRdPBG4XS5+aEZEgtk6HHf/n79z/rlYb9ofdAV2XyMCdMpx5SvwTsF2dTlCW2/t7RiP48q267+2hIhPZLss44FsOZqNO/xO7IqsKdOnHtOixBVCTNTZ9doe2F+CCXXEyUAvYyTO8LuMoc6Ep7xmJtc6DIPJvtlSI1pV9ZJXmZBJFlfsDt+JmzfQVM8ugvlTXq98PyRzZ2P2AzWpDoQufU+vRq4y3vryUIptWENVNnJBfw9kbBYzxmxy7lcOFAVV/fEQy5vkaQ8Sm9S4gT1dUxdMvweXCZxYIV0yrGZ2qTWrgD6iyAj+Vms3CpBde4q9vEnbvy0eLs4EdUtrqJbfLStL391SSLfrJm7ecvhxwXKlo+1/99TeMJOvz+s2Av/8PfsL+oH73b/46xhmrZ09TZcuzvVfr++7ujnrwtB3UdDLn40hdXx9WGKdTDEE8X/7NFVWuxqJbvOBbw2Yt4hsDq6YWDd3vvrvDXX4Bvbq+b2gQ63y4lpdCUVDbAuIwfLaGzqFWP99fX/L2lYp+rMDB1/LHqDUITOYXomXpagT20wClWTTldpPjmOr6eR8yEff0N+cvOJuOuZaXQjSaYouIQZyVTMsQU+ppdQHDsUst6ybuLKZfqnVojQzqrsTYq2tcJzGNWECZhk3nVZy4qpYaGHfEKzX24+EATSupBL05GnwezYYjNTeyfkDZyXe6oGNQHNS+9z6+fxz7m8Oa18QM/Ac/wS37Ru0JujmgL1P2csjTuopxucAWC7JjmTMQ1/vS0Gm0mEAskiZnP0Yz1Odu7mvWxYbNvWgX6zlZr95XDxKWv6891wSf23N7bs/tuf3Btu+NBN3pkM5Tb+jJfE4v4svka6r0iCangMV4QTQUs9JpSJ+kLOYSCi9PmCxUnvrEGaKNbBxJLYQnP6Q769HltDyfmJwLpNnOS5LyQLZVJ37D9CnFLDbe7Xj1xQtcS32vY/cMms9z1wBZo7ESLtoLTaPsdT7s1Glhvc6Z1+q+nWBI2Tb4e+HH3FzTCT9kvjhjm4Eh5ox5Z7A9ZhwlhWAbEUYp5qiVR98NkBQ714eGoUSzXd9SNj03G0Eh6h1prq5/OmkYTU6BzyPBP/7hGenHI0Gkor2TH79COwo95eYLPKOkn8s17JB8rU5/+9Uv8ZdTliITpxUauq3uc+YF9EnOx0zB3WtyuvmSMzE4dt60rMS2o4g2uHVD36rvrbxzGrGxOh3Y7KwWXSxUZief87scqRM4dsb0haLLVH6E02sMxyLunRZkG6nX9SmOHmCiUpWzocNBUt9/tPwB60PJaqVUK8LxCY5tsrtR6FEjrxi/VB8+DStm4zH7So13XzYMNDF8bfZc33xkKQoypp0T2GKkGn0ehXQyoP3Aw+8NCqlhLN6eQiwqR+aYXRFTC+pw99ffEb5Sp9Bj5RDnLbrQc+7TmoU5epS7052CwVH19/zFBX//B29JNmILs7llaqlnijf3WLZOL5QRO3LoJPJznJyxazL7PVFUVMZ4In13XzWMbDUu4dzDC0LCVyqXZtZ7vOkXABzMDfeXv+KDjM32sCUVxHhvgqZblJI2PymGjM4DEolSG79j14uIcnzL9vIrKk1qVK/f0EoEtUpS6qxgFKrfxbc7isPToseDsU/gCbf0fE5amZSS4g6XPamgA7ftJ77aHggyifzrkpci7p7pDfn2G/Yb9dmL5QJsnfig9prx2KKVIE4bLqkPaz59VPvLLskZLsX1fTzAcVsqqXtqlknlSnSn9+z0p908LsI56XZPJGm6eTRCt9X47q4+cXlc44oC0qHuSSUDV7db7uKv+emrf6ieaTok3V1hiHHx6+UcW/qwNxPatKNx1DNGZUpgqLkYdw13lxVbEW/3mpL0XkWClW2z7fcsFiraPbc/z7CNp+p3XQwTqe3t0ph0v6U4qExHY9p0YszbpTmaXlGKfJkWzCikPvlud6DfZ+iCd3Ajn/tMAzH03pslI1mkE89lZIa0D9Z47oK1qBVtt7f8/G/+iu+kPpx1GYuZKIo9Ec3+Zvt+ikQXMBQ3YEtraUXa52q9JyXh7IWS1ikOHlNRtT8LTeogYr2UCV1qrDdqkrp+jdW07Fvhq0wsAjQy8fHKOo8T4cuMJ3Pack32/isA8uKANVThtR2YmFpII4X0KjdJi9/jJzg9oRGDiffXN5RmwjdX6n/kdUD0Qm1gm31B3mQIHoBoMsYR0MQvty3fvL+il2Km55gcsuMjsOBnP3qB7at+2iSQ3NzTtWrgbuOcnUx2+7gjGk5JhIu3L/aEYrlUVAbX958rtoPSB+0mOulepTlXrYmGmmzz10MILEpJ18VWzfKPJL2c5JR4HIcPE/WOQKDvVqGTWS07OViMnIjCCh85fWGcsM+EvM4YU8/Zi3yTlmfo8mJdJUdGw4BS0k5p8nk97XT2AGGviA8qdeP7Orqp08oiG40nfP2dvMjYkyYHNOF3WtGM+USNve/N0D9+5M//Qs2Luw/f8bMffcGfvlALPN+WhEM199r9O26vN6RC/pwMvEfbm9brCJZzQkcc6aOGqbgaPBB+f7ONhBD99fUHcnvElxfqhfH6h1/wtXA277OGd4cbSgGqHI8HNEOljvTxCWeTkPFAzYufLU4JC4P1tUqp65tLjETcRsw1XWVzfK8OoOv7A2vxm0vyHI0EXfwVt/e3LIT2sZyOafsDvbh9/G5r1u+odVVXtnoNRzZFTQvJCouvvjrIeAWEtsj5zZeMz2LyrxWo4fb9d6QipZV1DUY04cWXSsvy3WbLp+2RTDjD7cjn9Vslt9YZGe/W7x8tkk4WS3ad2HplWwZGxamk9LXLd5TV0+WNk+WUl6eigZkm5PXfrn3HPsMQAun6/Z6ry28Jhc4xDzxacYW5O6Zs9jGSmaa9PKAPPOZDtR1OxxGXezUHbrT3tMcDuei4mq4NEynRzD0GQ5e8Vz/n+R7DebAWyjk0/pPPMPSmvF0MSYQjmpk6laR0V3db0luDLlAHFG/qk4nFU7AMmO/H1GOhhg1thuMFk/MTuTcdQyhmr5cvCIMRv/iVGrdteeC1uMCvVy03Nwfu3qt9Wa8s/p6IhswuPDw03spaSLaf70k/Wag5tNZaDOFOW05FYUDiqT1iMVuQyBje3b4nsStGodBXThYkUiLZFism04C5AOSyNKM0HQZjkeYzfDQR8Fjd78kti6ujcJ2zb7g6qvWbFjo3jclRhDHaRsMSNxP9Cf3T32zP6dDn9tye23N7bn+w7XsjwQ9ff0WdqVOXMZ0yEVSW8+KEOjAfic/6aIAv4WyWb0mSnFLUEoyuxxWoZKfbrC/vOf1CnSQMzyDZboiF+tB3BnarToMLo2MQaKzlPV13Ha358JZ3OBR7zEp97yGvoLWefkDdYF+pk2uzaonOhnieOqFlhkEuIftgNsff6VSSLmq8MUehPWxLH8NZ4kTiclAkvHl7TiIqKeevf8DlnQr1G7ticPH2EeKc7L4jF7anbTXoWsX0XKUEnUPLC0kfVskdrvc0Ik6nxyh6ekGE/vyXP4eBet6T1y8x0yOG0DBWmwxHIOTjyQ/YJ3ccIxUJpvcfCBt1OsvzK+7qhl4oKQtjydergk+lisbq3R6jf3C0juiGbzFNFWHtiozAU6fKqxVYgUtaivRd9TkxNYzU8/ZcPkrRhYZNZ1QcDTWHLt7+mNdTNRZnkxENFZf36rPXt3e8/kf/WPVFfSS9+oqJoDo1v8fXM0KB8G/vr9ET9Z2R4RE5LZUo0h8LDU+c1U27ZRR6+OIbN5zZpJlKeR02nxsDI2oiZpZgaC6xqOV/d7dhs1LXs0KXC2vMdStCzFWOJqLYjjHi5NUF5U5UWpYDzl/MKS0xU72Dq0ydcH/xfsd6PWT3nbiiOx29RGbbfcrswgWJYL3lFF/QqMOJTX1/w19+9Wef3z/Q7bZUmponX7z+IbmkPeJ9zNV1xc1GhMZL7ZGa5Icxjm/ygx+prM/fJMkj2ORscoE1mfEw4mPHYp3sMEQ4+suzF/z0J2rs79MDRZEQCNXger0hEAWihe3R5j2bDwoBbFUtTvv0+TwrIZDMxvC8ZpDZfPFjlYXZBTtyQTMOA4sm3VL1apxqLeM7cW/pghnbeoOtiwrMwGO2CPAEYFRbPbmgnDs9wB4MOJFrjl4sGMzUfYejnmhi8kFAeU6lMZqq8VzFHzCfBqxzcTJgPHFwTdVP5WjA/b26XtD3fLq5xBeU+vTl/DGr5NkjQqsnkz354nRKaM6oxcEmd1ou5irr4rkT9LJhs32v7k2HgS4iJeWGrrxnICbGZ+GEH/1E7btRe0ukwUTQmfMXi8/ufyJz1h6VHMREt50NeesbfFyr/neGDs5ardF11ZJUJY4YDhPnjN68Vv1pDXC1gshT9/Ljic+xyTEd1d93ScrNt2rc7MpG61OuxKT8ruyIxWnGsiKYTOhlDUXtjjJV/x5GT5srPLTvfQke6wTXkMEIW17/RN14dmfR2AaJbATecEQl7gSbTUnWmQxttUmutls8Q2TRRjaWbTIX/cje7CnyDuPBlX1m0YtWaYJDm1sk7QPyTccVGL4/cNH8EVWuXlJlndP+HpUM13MZT9SCcoI5zjLiVF6CYRPiGOpeAt9F8ycgJrOZaXMvztNN7+LNxo/1nOy4JQ1GVAIPbuev0IS0+Nqf0O1zDoK0+6OhTSLO0LPhiKHtk2tq4hjWkslcfee2bpmfd8D/89kzGIZOUxwwRWkmsRpG4nReDwL2ncFEV89kVQcqcS8PzufU+ZydJZZXF68IB+ogc315z2aX0Maq77Vyz8e+ZeyKIW1jgKQ2IkPHHOjMpK+8Wce1GHvef7yiTu45xCpd9PLl9LP711ETuqk7IoG+x5vvSLKYvaQq8s2GRFxBPN/g7MVrzgL1THWW4wsCM91tGDUJp6/V8++TDoqc20ulItKREwkMv09zBk6HIQcN03SYCucqXV1THmNOQ0G5eh26pM484X39ZhtIjebELOh7+ObqF+r692MGC5WqXHoRdW0SiJKSOwzx5cATTMd4XsT/9ZfqPivDYWoPycWBYh3DQRBznv+K4PSEfSJ5fMshEZWSyetTnJlLIdSSsxc+5VbQznnC0DfoeDqVaARDplLr6VqN9VqNYYHN6mZHISjExvIwQjVOuzzDCx18ScGVQwcvUOn2oRGQFw1aqdasPRgx9McMRdtyYdsEgvYeuiNiat7fKcR1U1u8OpOajWbQd8pUG2BCjmk8XU/77v3lo7zZYOrj7zXcCzXnmlCjuZU6/dFn+ZMLGpGJ03uT6zvVT66bcDBhIK4tme+wdToYqfvWHRi8VqnTkzdvoQJ5JzAMAk6XKlXnjlMareTDWh3W0rJ4NJxN4gP28GkVq9GJi3PUqSrRFO4rFrYcYnULo8xwLbW3TSYFo6nUeDuDsfma41H93Xlgojkmvaz320NOvlN/9+3mimkwYCrSbLNhxFDWs3E2YLXz+UJKI+ejJaHAzV3N4QezEwwpfT2UL36znZypPaRrQ1pBbl4XR3RHw7hRn6+PHW4gjjy8oSsMPFGlqbuWSmgWzjDCdU4eNWX3kcP+kKELQnt1NB8PbqZmodsl8YP9nO0SyiG+7Dr29zti4WfPTmb4QmVxl09TVR7a974EoyjkR1+oBX4SDdDEQ27y5oQk6dBlovq+jTlWHeo7NsORA4aaKIPohs5Vg/jiRz8mvbskEV5Pa5UYfUcj+fcmKEmEZ3PV9OQHE0OirWh0yr1AyDvfpDQM8p2cbI49x+Tp/HtZlYQzoUFYOq1n4/oif7YrsGTjO2g2aLBZqeObaYyIhb+4inPuj7e4J+o5Xp7NudqkNIka8HeDW3IBTnTVlvw+4eNHtdkFdoDViXSRPcY0agJ5mRWNx3Gjni8uNdL86dPvu3dXbJNbWuHAFF6PJhJPuqsx0gLqVr1oBuOQW7FqmjpDjp3N1ZUC4ljklAJCSvSazE8JPJGKmo4oNhlxogAQbxdvMecCxe47+qpilat7DTWTlXiRjRY+fVNS6KIFaHz+AqmF3DrzXCoBLmiWzuxsxKYUykSX0Ygo9nFdsNFdohO12Z66PtWViq62t3fsdve44i25COa0Wk6aqXE7m84Yy0GmLDNuP31DNFE1k4nvM5C6rtW07I5bRhKNVGmBL5D2wcOJ9TfaSxED+PSLHXFzYDQVGkYOmoj2ulrLZDhkLYT4RE+whNnQWjmb3TWGPMdqe+RXxwpf6s4fb9fYshzHE5vILBh/qSKc9V3B5SfFqTNPdQaajyWeh1ZnYQuX1upyRoXLxHk6K4I7QbPVRu+PJ7xaCPfPmzH0vyWO1Ut3OhyhiyVQeHJGWR8xhHN1/rMfPALbsk83vPvVr3n1Uo1T2TV8vPzE6bk6oPjzOZVoV459l3Awo9VFr7OpcUZq50t3a7xux3wk9SULCgHf/G77y1//isFI3bft6nhBTeMLnH85ohSifut1TDqopS6l2yHaCzXXvvrqI7+6ecdCQFkpGa6V8ErqvjPLJy/UOLn7iol38ghcSbuCWl6e1TFhl6zJZb1ldc0mFupKaVJvnz6Y/+z1W9aHlL/5KwWCW62PDGW/NMyewLPJGhnfbIMu70CjqXm5GOG8UutyMJpi2hbtg41cfsAWiUIrCjAMyHbC4Zzb6JJJigKPH7485eMn9Yyfrj6xlIOjUcWMtIZADs7NExZ1mbzo7eGAtBO6imfAcIondlxtkaGFs8e/aW9TAsEGHPc5dwJKWq83OMOQc8GUaFXD/m6Dr6u+u9kkuEK36w4Zu8M9lyK16JhDfJmn+13JwYBO9GcDe4Im3F67flrD9aE91wSf23N7bs/tuf3Btu+NBLNOJ5aDwMRx8SQSNFwf02vJxRZGMyJ8MarV9qCZGoZAo3utojfF3qKv6K2GTzcK2YdtkWYVu1SiisIlE8RYlR1IKpOZ5OK3h56/+Ev1d9Z4Rj8Z4Io47DHvabSn0ye1HlFJtHfcVkSBRWnLQ2k9N2tV/xn4Pf54xEcRXW2NA6lYjcT7hKQuMNbq7y7OBxzzA52keu73A7RMnUAmywjbgcVIRUSdZaIJZKknaokAACAASURBVLwyKvQ2ZSCmpFgek4k61e0q0HgaxdR7NsmHkm74tyotyXcqMnhzVmBrAwaSzohzh+ODmPf9VzSHDaHAkWcXc1pB7lmVhtna2JakeIcDzpYWU0FhDrWQkzOF+jMih/36kixWfXx7fcVRai8v/vgljqUxk3rSXJw3frN1tYgYOza6nHCpNXpTR3uoK7vmYxptPlhQ1T2O9Omr6Smt2CqN/Qm2E7FcKDRbbxlU1ZZNrJ5rlPQ4moooFpbOYDrAESK/1hboBxVhHG/eUWU578QWJhu6LEVJ/8Xrz2XHLsRN/c0mwddNtiKvlyR3xLFKhzWuRdEe8MTYtat6tIEgJZsKxwj4x//g7wOwHAzRvSGBuJRfnEzJNwopapJgdxYvX6o63HoaU0vq/+ZwS3YbM5aaoNmYjMW8NF/v8J2O+eTzaBzgJ+dnjCdq7pnRGHeknqluHXaBzTRSkWdQ2xSouT+0priDJYa4rRg/cdGFHvIhjvEMl1wED/TagirjwycV4VRk/NXXf6HG8MufMRwOqMQyp+kyjkJHstMjppujG6ofR+Oa3e9R/v/zr6+ZTNSYvXl7imVPHqXgzsMQS+TObt/fMhhb2EPVF3rfYw/VPrQqNL4w5iyXQgnRSyzbww4koo8splL6+PLtkoE3pszVM9sDm73se/HxlmMW0wkJfWAN0ET1KGgssu7pWtQ8mFIXBlUsCNzaxjtRWYhZN6B1L/CmKj45+8EPqdoHt/Y9njXkeKX6cHWZMvItdEFYN+kW13gg609pNZelWEBl2xUHuU+8MY41wjPUMx2KK0qpK1N1GKVOKCjeovmc8J+JTGCelI97tzY7oT/keJId3GslvTif+O6UK6vERI3prj6SPpTSJmPKvGLdCQ1k51BkLe/2Kkq9u14zC8S0uW+4v99wFNm++7rCFaGG7d0Vg9mIqWRoosUSW2QXdeffQjGmqXWMXm1MRqOhCfS61yOmY4f1RoWlmzLBEIirHs1xjgduRYEgw6AVZ4b33/6S+P6K+7UssIFPX1dsxbvMu1+DOAxH0xFZc+TqnUorpmnHpxvRCDzmzOpzlqcq3O49C619WhXAdGccRMWgqQuSzQHsh1x9RyaLrahrguCEs5eiO+Q6fPuN6uyJ4bLUW5AXiEsGbs9WUi+BG2KJWj1FThGnBFL7MgODWsAiZtiz9BfEUt9BD9ECtSlNJxV2/vRwpDuTqvFwxf3ZtFLCiZrQjuli6eYjLH1nmFRSg7WqA+5Iw59JumxgYxfq31faFsfyQNzqGTnMg45WFDd+uTqyE33Ss9znmOvUYoRYeSFGIPqnm5hgBBOpNU7Cz+//WgBGw4HPTFJQd6sDdVLRCnjg5ckFntBxyk1BXfXY4VD65pTSUmN4fbxFswyCVm18A8/h3Yc9YSLyTocUV5RuMqPH7gYMJHUar+7pa7XwfTPA9gxiKbJXjk0iMla3d59rDVrCNTq9aNHLNanQIEa2/khz2PQm57NzDqIYU7juA5qecDhGs8AWcAK6zvZ6hS1yWX6WUYtDfKoXNGbFZauAMX2r9BcB2BdcXX4gFyDB2ckIQ7ifWnFHNRtyTJ+uRQWeyeVWracmvUMX7l95MPn1tx+YihLI6Wzy6A7vJ6AVBvlO0TW6umZ9rYAKFg5vvvx7/Pm/EqufYYUVRYwWahK4rk8jFleBuUXXO0xZe9U+JxHfy6nnMXQNOlHsyfuWxeJpruP/+y//mj/+4x8DMBlN8L0VJ+dqH/B9C1sOXCPjhCwv0KX0QN/x4q2ae8MpXF+vCOUF2eZHWt0G2VzDqGb6oHtoHblNKlo5nPdbOAjQzWr2bHZrak2toazV0MRNx9BsrmW/+t22XlcUm4JoqOZ7dkzJxLkk8APG+pRO8AYdOvVBrZ/A8uiqlNm5OrzE9zuSwxWWvHi7RqMS+sBoNGbqjwhH6mBXORojebFb3oBWNyiEVmUVGoEoXFUpmLVHlYpsmf25+lDXq+u1bUdgCEXhkGEYBwyRaBzZPqaUF5rA4c3gC1oJorKsIJNDlWUZdMBRZNQSTHaHI331wDdsSKUktlptaLoOZyjAnN5kMlZz7WTqU3QNbqh+nkyXTIXvO5p972vuOR363J7bc3tuz+0Pt33vK/KLNy85k3RNYxm8OFNR0iaO8fUIUxCgZXl8dCQvMfFNF08oC7ef1pSVOnHsr3NWl1fsRBdvm25oG49KSMLvtw4zgbpb+4S+0Xj/4a8A5fbsCGrPMgIOhcdUVycNM5wS8jRB+OL0DddiOnp1o0MXctwI9N/z6fqHEx8kcY8mJzCn7glEpLjwS4ajGa2ELVl+YDqf4UjmL5yPKQTivEvu6fqKgdASXry84E6MHru2Rg99CgEL3G/2aKJ0bugWvve0m3be1hSaTd2oPu29E7wHF2wnoDMcjEioFustGwlktElEhE4nSK/k5p59ofp+c6gZRTNqSbFaXk9oWXz7QUX3l+/3RJIeLPOcw7Fmv1fjZNv6I+DgZn/PvB8RRaofr4SA+5vtsFd9avcOuqCIT6I5764+EugCGtIGDCS1sckz0GwsieA/3v6ahwNpvj6SVy1+rE551nhCcnmFL+LqeZE/nmL9MMCxfDwp8lvGhEOmIhqzNulah0BSOyPTxpPoMtt+7if4UfwaN3HHzX5HYknU4LbMJUMysAektzWt8ItDO+QohP8kiSmLgpuj6l/DcjgZLqnEmft4ODAVsNMg0LENh+pGRWpJVtFLxGqnB7q8RhPU9FhzmUqaq2gCurikLNef3T/Av/zX/wd7iZhHr3+ELlFC0AaYRkLZqHVRlxqupMNKCqqm5yDgtfq4Zi/gHsuIOJ294Cc/fA3AYjkgrzWcifrbYDrm/qOKhg77T7h9TuCoiNo3UjJxnZ+aHho+e6FKVccto+XTuptNB3vJHH243XG+CDhu1fdMwre8Fkj/IUwpkr912zDoMMQdZBy+ZTq1qSQGCPWAyoTjWqXqA1ejK4W8vi9Jmh4P9UxJ07CO1ZgGtESOQSpRc1qYOKJydHu/4ZsP3z35DIEdkHhHbNG7PdYliD+m49kKlG0+KN1kWCIOH9QFaZ4SjtTecvbGIduO+NUHhbi9X6f8o3/4DwBwdejSSw6xWo9VXmGi5tDZaExWZDR7SeNnMaWswzRpSCOYCM3Kdz4fB0eAV1lVEkuauK4hqxssUSvSrCG6lGGaqqUyTcxOVK389DEV3Bsmje5SiZuOO/Cw2xIjFO1pa4FgJdkUBWezEb4IqmyTHFuyU+fjgLpT4CTVdIYSCY6Np+fSQ/t+AW3vFMNUHd4acL9Sg582CYdVRix8odXVBtuWFIg5IRy42LKh+LaJGNCzvd+ySjVMW6Sj3t+Tt3tisTOamR69PJR5ANtvOXbqe8u+x9bUYl/2Nk1lsZFN+YvJKWfDp6Vx8taklwkVDSxaI0cXuSbHjQgFLZkVkDYV6VF+13d0llACvIq+LWkFbm3ZNo1hYMpLuCwyYkmNLqcXDJwQUzDV0WxCKTn9crvnLl2p2gkwsgNqkT/TopCJ83QtR9cdiq6gk7y9TkkuL6ETY4Q9D2lQ37lZHYg1CfBbn+O+YiO0k8g12At/0RtFfPRrlpKe2hotea1jzlU97MQZ0YoiT5znJFc3fLhTm9/YnzEVV/B55NN5PXUsPMH8c46dJYjE0HYQJTr2x5ZodIYTqv+R7lpyURYyW5++7zGk7tbHKxJJnxSHlrbqKGs5yHQOvjGlTtQC1zUDW5QimrjBMFIqOSC1bY3dCMqvTrFam/lIOTVoZUUj3LSs/DwdWhXSpzW41imepvrmUG0ZDcTyqbU47gsQNJqZVYxPhdYz9Pn41YZAeJr3WY4Wt1SClO5oyA/qGj/60StGTs8HcSxP0iPInBmHEyx9xFLS2Benr8gq9exeGUAV87Xwqn632d0KS2rnk1H3qK5vegF+MKCRl6Dj6eiRWgeNlWHWGjOp9cYkFGN17XqbYlQrvnwrdUZTIz9WGCLpZpUHetkkPavny5MBi6VaU/GupBd0qN7s2cdf4UVqP/HNHD96WgGq7g3WN5JGPS3p7msOmaKrdLpFJEojZZWQVyZuKPQoV6MQt/Kz1yOcocm9OIEEtkbX1GjCeSuOFa2k+byBjV/XtGLUvL1L2cnfVROPutVxfbUv9VTs1mpe3Ky3VNnTVJWszTBcF894UEvS2Updr8orzLLCGQoSu7NwH/o7TtCShlj4jtrQxQthuhA396ZkKrSil4uAX//6Pf5Q0LJ1TWOreV13K6pDjamrnzV7RyylrYEXUvVwkIOzJunl32wHQcUf05T1Q03f1ClNj1DWeu2E1A8G1qWO7TkMhDo0t11sQY7GhxyjKPAd9bMZOOBZmA9rv+qwhIOuT6aMRwOmEzWH9seUMhXai95wGoVUgoAdeB6aoMR9+/vRod9vpaSfcCN+TZFmUkuetu4a+vhAulMn1evbj+wz8QazBni2zZ9/pby62t4jFt+q3f0OW2/QLFGyt3Vmg5BTS0jvmU4ut2SPoDyUeDOVN58ObHLzgRTqEEYWp2+UvuH4/BzHf7ommMcxncg8uZFDV5aYwjPRop5Arnd5eUOSFnhyaHDDEYbA/kPXRi9tBiPhDWoORZFRCglf9xsiIat/+9U75oOAaPgAVrh+1MVznIY2P7Bdq0XUNw4DR51W4t7CP/t8wgGMhiF+PGQxVid33TUhfNhcGmzNpBIYsVumHAWir9cdTqSRimafbw6ZDhVMuTRN9u+vcFT3kh1M9MLG8dS9DpYTGiHvxE2DPvd5LarzTV7Ti6vAYjlFqzsOpVoYunP22f3v7tXcCK0pvS2+eEZMZXkcd1ILcYfYcpDIs4y6qZkKfcFpbUyJBL1hiNabNPJSTHcNGj4DKZ57Rk3dP5wyLYym47iRqG3gMJ6rg8Z4sWB/zPGEg1TsjlwKSEp3nwA0VHLCrQu02sa3hVwcTNFEKqvRfczAJf0kEVW1Yi4SeUtzyNFyiGSTqq5XXP76b9iLXulyPiLN1ILur/cspktuxX+tKSqaBwV+o2BoB5id1Ll3BdEDPWWTku0TjN8DCf/ip6+5FIsz47BH76V/7TleMKIQoETXV1zt1dz2ypyX0ZLRSI3byHuBLhvjur0mN1JCSYk09HRGQ3UQR4LpS/7kp6p+1xUbQt8kETujYnXN8ag+dzq3qMqKqRDEo9Aj5GknjLYwyIXU3usRWX1kfyMHL+sdyxMBXmFC2TIxBdPQ29Sd1P9LHcsziDSZi0UGvcZAqFxGc2AvuJzV7sg0GBHL4WFd7+ikLyzX425/wJFMl2441AKKMvoBw8HTYL3L1Xcck92ja/v8dEYk0fzqfoczHVJIRNlXHXGubsa1a9J2R3ytnveQhIyigLOpysh5OtxvlBZwq0UUFBjCNwwnLbkchg9pSafrmJb6eToISUTTdWD1dFHJtWjz3jafV8zuLtV+soqPdFI7NXyDzq4YiHdfaHmsxaauyBqceUAhL0iLilD2L6oGzTQ4Sr/1RYXRt3gCZrFDj28/iLvJdEQQ+vRCpVrOA7wTkVtrMsoqIxS+tOF67CRIGwXPFInn9tye23N7bs/tyfa9keBgOeZ2o0LvnZ0ydNTp7JBcouslot6D7UXUkovNnYb4sEcyIuieyclY0iOpjuFAIyihixrGkYNuqLd3ez5hJLUtX2tJ4pxSFA+cyEaTXLTtnfDq9C2Ll68B6D0fs376fT50XeKVQu8F8xm4BqXAzSMbcoloMrvCL46YQ3X9ydwjCBfSSS1u3xDoKjXb2x1NrbGXGoLmHakqiaBOXfzAx6pUXxka9OJr1ecpaVWhSaTmGB2xUA20suGue/r0m+xXvHJGBJKa1ocDbF2dsiYdeIbOd1IzCl0NV1LKxkDnYjpmHz1A9jU8iSgG45Afvjx5rE/WRU1gztFaiSLTI2vxFtS7FJqIE0lR7fScw1FI35cxfVXR7NRkmA4/l3771S8VWf+QNNhiFmrpBl3bYUrqdmgaeL4a61LvaHoLxCetruD1S5W2jIYzikPFMVHR9Hqb4+kapi6oPL1Dk9Og743Q2hZdTGbd0GYlAt+Ga1HoGrk8b1zWpJLu1rTP59KvfyW1RNsmKRpiyesuzqdMZM4atcHt9ZaTUxXdFfWYgyAwV/kGqx1QJWosgsInZEIntXNHizBC1Tf3twe2N9eMPFE/sSN0SQ/5hc95NGcmaNwo0zl9rSKBuzQjyXUWk6fr43/6Jz9luRSVo6SlEWQy9oBj8rekf8PQGVrqvqoqozgmNI46uRdlQVyrCEKfh/juFF3kxwKtRtf3VIgAge3QSFngUG7Jj3vG4mc4OQmYn6m5Yms546rmfKAiBc/qFEzxibZdZ/QSRFx/c483NCkytZ7r5ju2N2osNFPD0SzWazVOs7GHL4Xltb6m0B3qWupuWs3AdyhkXWZ1QyeRyP3VgTjuOYoEV1qBK3KCudmSbivWnXhiegNymUN1a1Ednt6TDskVhyyjlT0rj3PmZ6oM4fgZs/mIByX/dbzGFRdZfxBQTSIKQacOl0MWAwtN1LIct6ETYf3VOiOwbS5eq4xFUVfs1DaI0eSYtIgAF57XMRuKcECeUeZ37KWO3zafp3Q76afj/h67VXtk32loXo8m88SqEgzZ29ympDtkaI14OwYDlqEaa+fCxu9cjpK9ycuMq2sNS9TNDdPjdKaoQovRgq5vqY+Sxh7ajH21ZvZxzD4vH0tUXmdjyZoxu++PBLW+fzoFB6Bp2u//5XN7bs/tuT235/b/g9b3/dMRBs/p0Of23J7bc3tuf8Dt+SX43J7bc3tuz+0Ptj2/BJ/bc3tuz+25/cG27wXG/I//2f+EJ4Xs9LDFNqSQ2zQ0eoNuKiBDb4H7oPmZl6CZhGIjkpQtVi6eU7ZOmnSYou+HOSRvcnTx1bL9JUWtCJy2beD0DftYoLIDE1sQx32e0iUp2gOXxCwxfVVI/c//+//ut57hv/jf/wWFuCPv0xW9oaOJk8Ai8slSgeVXihMzFJsUs7bwxXbH7Hp2qw2G/yBHZXB7yKlzBYyx+5qp+IgZuk3fgS0k+KKsaOVzpm5jeSM2qQJnbLuGVoicw8mSw13L//bP/9PPxuGf/nv/CNs2KMRFwjMDLAGCXF8dqIucVz9QXId59JLTU1VIXp5PqKuMJlUF6uXpkky4UleXt2i5QSGE5cXsFD+0iIVMf9xsSSp1jcliwvGQ0OZiYePoJEKX2adXSjpNeGu77Zp/8a9/2w7qn/wH6r9v/87fxRfww3ZzpKoP6Lkq8o+nS6YLZTtk2D6D0EUX6P9hf08tVIbxxSssw2UmZN7V/XuKrIHyAbjhUQjYab1pWU4iLNHvjO9Kdkfh5Tk1s3DGcKT4SU1V8+u/VvJf3/zqz/lf/u/fHoP/5D/8LwF484M5aVJRCZ3AciLs6G/1Usu0xBbNRDM0H5/h8t07VocYW+xsrC7m7fmXlOJn2QQBB7GtKbMNvjsjEAK1YTQ4uib9XXG1u8MVV4NJYD+OizEK8bqEc/GJ+yf//L/6rWf4b/+b/xqnExscS+fTe0Xmbo5r3CDik1BEqJXTAEDTNMRFzGimqC+L6Yx6J56beByq/NG5uzZbiqplKDyj4fiUNFWAIq1YUTJifK7mph86GKLxWsRHkqxgISRwfxZiCz3mn/3H//S3nuGf/Q85m5XaI168XtDVR+pEUXB0vyEv1Fq/v73CD21GsoYnpsvFa6WF63sav/zqrwhFnCJcTqm0jE7WRlM14AoNwvaoypZC5lfaN1jilRpFDqtsw/2l4rdGgzkz0Qy+ukpBd/mf/+lbfrf9R/8unLz8gkioJVq/oBHptcAzGXouwwv1d4cKukKoSlpJUcfsREQh8k107cjAVKCW0goYCKjLNzt8AypZ+6uiw5RrjKYRWVGi8QAqyfl0q8BObXNks7+mEf6qY1b8rz//bfm3P+FPAbg4n/PmQqQOCx0nCnjxIwXwafqETPaSyfyCxXjK6lY4fabPA1blL776jmi0wBN9Qce3mExmLAVgF+/v+OobJQagOwPWfY33QIMwUyxNzRnPC0iTnEYAVeub99x/UKDOF+NnisRze27P7bk9t+f2ZPveSNCKItpeERV10yAWh4XOdrhOYwwhovqhw0HURaoqx3M8fBGJ9vwhmriAWy20bswhFcHZviLWbIxenVzdCkKRYkvNA0bf0YvweWNqFKU6OdbHDQO9xRR4bHGscJ2nH+Xr7y4JRTGmrTQqLcYU2K/RGngSXZ3OZhStgSbGrvUx5sGhsNc0ul2C38jJzWtwjwdMOR2GkcY8Un3RG7DdZ7SxqKujPxK941VM260pBGLdmDreXBHgzbpkPHha+Hh4+poszZkNHgRwPYa+OgG9+uGArqzQB6ov8rhlI7JO41lAWncgAsufyopGVCw606QbeszOVCS0mCwo2honUdfYHHoaoU/EuU6e67w6U2T5yDOIGxUN2AcXO8pxbHWqttxb+J1I8Iuf/fsAjM4uOIoXWW/6mPmE0BPYtH8KjoJb+3RUhc1KBK3vdj7+SJ3m/N0InIirRI3TJj6hK7bc36l52tQ1mii49BnErgcSKdWJQSNkXqcJiHOdUFfzxmp6zn3VF93LN8C733qGWpw5djcxphdSiSi30QZ8/bWii4ReiGZ05EItsRuNoYhJF86IQmvxDVELWsxI7BBNUxFPbwX0jlpf+9WBLGlpInVG9eqKRGzKW8PGdmyGQh1qq5p4q64flBHOQKdJn5aJyjYpjaae35udYegPwu7g2xVepX6X5CWtLfQBQ8dsenRREHkxmnJs1PzaHmMiyyAWsfxtusc/W6JJdDuwO0JUZiUzC8ptTLNTdJkyt2ikT4tdhh+OaBKVXbjefWSyeBqYvl39Bd5AjVNR3dHkKVWhrh+6BqXA8He7G16dv2Uuiin5/oriKFF3arK6+zfUQhHxzRMOm1/TiPpIp3tYCzXX094Az8X01b4UmgG9ELuLPKfZb0F+rruCG3EUuUkqLPPp9fzlq3+HwfKMWkyUW+eMoanm0/64wTVDTs9+qPrp9sDXV0qyrzChcQdk3qk8b4WjD+ksNcds94RM6CKVlpJZBoWoXm3zBt9XUWqaG5zOQ5aBmE1/+oAmBgi7+494xikPmkkqw/bbkeDUVNfwnCm6qDMd6h4t1Yl/8a26125LIh6Ub75w+bhbcdiIAIMdoYngwW1xy/H+gLUWKo3ZYDsar89OpB/vefedmjOL5QWVO0ZHrYVZaOEMxFFiW6BpBvuN+mxLys1BXW9zd/XkODy0730J3ucpbaoGwCoaslSlS07e/BS7DIkr9SBZ1rM6qM3N8V0IAmpRtDiQk8iG6WgVWbwiFx2+Y7bHGr2kbdXEndguByEfjt2EQWRytVK/a3cpoXARnbZjHDoEshF4loZhPW0kGroO5oPSjNVTFTa5KHPEhoUrPK2+TIkMl1Iksw43N9zdy9urcyjLilNJXWpFx259YChmpj4uC0nfJHWDHXjkYg3Sd6A5oglabembgo0ozWimTSRae1Wt0/4eL9T7Q0FXNXhiEzIfzwgC9cKwTJM8zqkN1W9+VPLpk0oDBMcJvdZzEO1MF+NRVkjXQupjSyU8ucbKifcb+lpNiRQbTQx3veiUzliRyffstztamTmj+QucQOOjcCbjw+e8InP8A9WNdcThoCZkXQ8YjgKG9oOM15RUiEtJWqN7Drq86M1uTCuKNL/81Qbdz8gKdS/D4YBN0mA14mhvazi62tz6oOTTJiPdqUUcujaB2AXZdkPTQZypMZ45JpEYe3Z3ny+LRjQvD01GfH+NbalFWk879E4dMqz5C2g64kStGb210Go1ZvZAY8yMkS/KOkFLWqe4kciqeT5jcTzYb3tsy8FoRTWEGkNS05rn4toFni/WZUbIJlbzqdZ0HByq9ukXiOvAVoxzrz9+YrdT9/nTN6eMgpCDGNnamUUq31HkBzbbW2zhrV3dvqOSdH5cF5RlS1aodORhdUVaHcllLeT7FaYhKjAWdEWG/pBSD6YMIjWH7zcZm5sN6UDc64sM13naVuxluGN2rtLmx7agto7oc7VwmmRNZqq/m096AiejEH3MzeqSpSdOEIbF27mJ2ao0pn/ccrz8OW0jYzOaU+VqnSR1z8iaUYq84e26YSJasXrVoFU12bX6ntK+p3fVvWi9Ds7TaThzcIJ/8jMW8hJ252853qp95+J1ydyH07Gap4ddy8AV/uTAZnQRkVZqDLu7OyZTnzBU35OaJ6S3amyCIKepM6JIzc3xMsQRnvF8EvHii3P0TDjKxQErVnvbPAjRzZ7NvZobl9/8/LP7fyNmzHqoc34uEoGFxTqpOR4k4PEjFfUAm5sVnddRCRewzFOmwg2/OPUxehetfuDoauzS4tG0e2U1zH98AYBjRLTHDkekD79YXtBLGe6vv/6GLk5pK3lfeQUXYoJe3D4tX/fQntOhz+25Pbfn9tz+YNv3RoLx/gZETd3uK4yhSkOsdmuyssAXgMs2LYnFAHU+XWC7EcdM6R6W2xLdUyeQqoeVq/NKxHhH/QDdNbmTQrff93BUJ5l8c8lxNeZWIsH8eMDR1GklDDzcYIwrpy47NDH6p3X6hqcBWf2Qbo1wvJ6RpBWnpsd6pU5gVWVxcvEazZNC/n7PVpTOZ8MRbVJj7lRfOL1D1OhEnvqetmoIxR2ha11iOkxL3Bn6nkq0Uf1Bz2TpM6zVyTnNa2oBERRJSpI8PRz5pqV3TTrhe+ZHC8n4sb3bcrO7BXEVmIxHvHj7xwBktktb549qI1pjUxrqGo2TY2By0MT8+DompSE9CsCk6AgideJbOB5V6bHZqUi8oibd/a3ItDu00cWpQx9+fvo1HAWGSOqWVOQ+6hJ0PaBIVWrjZrPFGKkTbzQKMAqT7UoV1q+zlFpSvHrjEZ0sOYrgb2WZbA8dgRhoDg2XslJ9+uHyA7cfv0N+RG2GEQAAIABJREFUxfTlSwYCaNls93iGjz9VEaQ+sHF69XyLxR8BX//WM4RiQJvcfeBm3TE6F4HpFiZjtS6mnk+qGZyIspLWtfSiyVh1GaadogmgSatqXMvEFX/D8ljiSzr2ZBJxEo5BQGJFUnAoxey5qDncxdgiPu1pNqWYHTtTm1qz6Mqnz7arXcbxoL4za2smI4mK3QmF6eHNBNTxZ1fsRfV+sfB4fXHOg6jGr799TymZG3STSTQlCNR6DkYzKnRM8dY8xCs6ySxoI58gjNjeSWqtbXhxqsA2wcsZ3jonQ83huKiI7z8XYgcIwwNGryIvV6/BbbFQUYM5hi//jpprx92Epum4/qg+e6xr/uajykIYto3W7+nEw06rYqr4BiQleMh3cFB96kYWhjdBexDU7huqjYo2Rm4Ppc2gzqQfK9ZH9Z2WPyLqPldPArj59kjubGgv1O/DzQFbygn1MePD9p71Xs33rDGYiVbpuknJqwxdVGkCDca+Ti7JS9Nr0SSzUjQ9x7IkEBCPrbXoYiZuag3Jbcxa0tj7I+xF8ak2DUYDDccTB4aLc+Bf/9b9awKayvucJlBRlh+MmPlTJpEa+/Gp+2gcYNBihyG1p67xaX1Jj/q7ePOO8dzBDaUv4kvGsyWnX/5MPcfdFcOJyvqE/TnrdUKXqf7umopC9quwdOmMjlBAatssxhNzaVP/tzDVHUUXTEVh2Wp6PuVqYL67+kDTVliOerl9u/6EHoikWNNwiEtuV2pzO959S/RaTUwcnUOzoZVqm+v0FKs1o15taCeujhGpxe73IavGp5qrz5Z2wLtbVfvQNIf7dY5jqs5YWsPH9OPvtsi1uFup73cCl8gKGcvcHDpjApEYC/WQwBpQlmqRLh2HXgJlq9bx8TEEyVjuYsqqRJuo3//473yBIWiyn//ZL2gGEbqIhJPXlFIzML0erXCZDyUF29VcH1QOW88NSJ5Wzv+TL/+ItC+5vZJUxxcGhq5qFI0PVDmumKxWnoE3EOePpGS9L3BbSXuMcgIRkK4Bb+6hJSLa3CWYnYYhKaPhNMDV1UspqQo+ro/k8tl9X9IL4tcOLLQupyrUNbJs/9n9N7IQT18sKOVAUtglfjDGKuTzWortq+8cRg7LyQW6uJAnV5+oHuyCtjWO6WDN1TNqXYyVH+jFyssOvEcDVFO3GAyGBCIKvhyMGAn69/6uokoaGtlAjvsCEMV97fPNy5WF75zN6AdDvLmqGdVZ8+hgXWYp2yyla9SmvDtkmIJ41FoDp++IM/X8utbjWBq6pO+S3ZrKVP07WUwZdykjQZaWwYxC6jcf7q4xfJ+lJylfx+dmJbJhpUHfnMDTZiTcrdccZbNbnl3g6uo7811DUm3wpT76cvmKE0nhTyYWA6OjkRrhL95dsbtVB8VeM2kKl7BTvzt5ecL6fsfFUvWf29Vs7tW99ZbH7MUP6eXFcHV3RyTCyGfTIZoNo4f61WrLYfsghP3bbf3pHbebB9ThKRUJhTiWB5aFXqh5MnI0NlVDIMau5WCEL64ZqeWSrjqqVAwBkp48NbBM1XEHIDDVZ6t1zv3+AwM5OBdJ/ljvf32yIBguaEWY22oM5qH6Tj3smYyerm8MT14zmp+w2ouze1XS6lLL2yWQ3TARVGvdBo/ybu/2ew6XOYGl9qzTvkM3LdJC9VWa3pLIGl2OR9QY3Irz+2L2ishXz7C7ifl4/x5DTAdMbcqD9/B9caAsWupS7Vnr5PP6cmGKU8UfRegPUoepzcfrA2ey9/SpwXCpvn85Cjg2sJW5HoyOZL2UnbYuZ4MRvqu+5+z87zK/eI01VAekyxJsqa3a7gsGzZG4UAeN1VWC76hr/PRnP6RO9vS1Cr78KqR5WFti7vD72ve+BE0tAXG+dh2XWa9uJhv5FLrPYKY6KA5zAnlhtNkN29Z8BMr40RRbV/92xz591bKJ1UkqGoyxBj5D+d68+4grIJnW1vAcn/lDbcKvOYrWXZqV2N4SW+DAugGe9bReomeb2OIL6Pch88gi6EWTsXIfTzy7qy2Hqx2+1DmtxCf5pDp03cT89OWPCXq10X57vCVP4OaXahEPhxG6WJ+kxxTPjDAFmqzZLhIk44UeTVOBuD/rXY4uNlLlLuFYPH1iicIAq/OoRWU/OxpshqpPZ8sZ4ZtTil69TO6++oo7cfcoGpOqPzA4kUjUc0BectqgYnNcgYCNgr5G12wcWXzhfEwrTvZVWmMHDvX/x957NdmVZmd6z/Z7n328TQskXKGq3ZAcakSNYmIm5g/oRpf6kQpF6EYRGkkxFMXhkGyy2dVVBRSATKQ5ebzb3uriWwmyG8nSvYjvConj9ueXedf7SgI+ne5IM9WH3a6DFTqspwJIWM4+e/6gknVT+qSCEooNnSKPaMgcdgetT5yuh6zg7uoNlayLojzw9KlSDDHPHDarLTNJdq+n14y7NpEcKDk2qazZq5s5Td/AFQXxnnfMaKL+bTQaLN9eEotqdelUHPfVWngqit//tF1fK5j2xPNwvBa9jtp8m+iWY7FUtSoFKqJIraG4yrAlx90fjKh6xzTFGo82K4o84Kil9Dq1Jy+xUrVZ6zghzjbEkj+z9IpCrOrDeovvOBwPJGcUHXhypP69DVOaPpyfnH32/ADjwYg6VmvBcz0OS2XwWZ02ZZmTSc53/OQc25Q8thWS5nuQ/OzJkwtSQavVtc0mNVgFau2lBlidHi1RFpg4GudHKn8X7HOqKKcnQDDDbhJLyn0TRWiZgSdINKPIsI3H97OuH+hIBCiN31PEG87PVX832x3L92pd6IaB6bU5G0vuvMpZizTEYrEgrQ0wRzKGBkFoUsdqT3lPx5gSdYo3KYYbk4hkUKdl0ThTfbCsBrqW0hZNznx3T1c8EXfkk4af61ICaH4TvTNmuhTAy/0V90t1KUxaBucdg1g4MIs4YrmUaFiR0BgYdAWLYKJhuj6GjP9qfkPDVJ8bDiZ0vS6p5DY9z2Ai2pXOpsYKNFIZcNfweH+ncASHOKfRGvFgECbp+rPnDy013h8XAfml2heWq5EEOlvtAYi05Qw1vvakx2Y2473InbV6Ljd3ypByuke4R09ZXKvfz03o2xqHrXqvr/V4SHEHh4Beo0PLVmfriV7TeabKXshb3Cz2BIkaq/Mnp6wEw3IXXD46Dw/tS07wS/vSvrQv7Uv7F9t+0hOcTrfsxaq7ODHw2sqK1uIDwWFOW6D3z848ppcqrFeZOikOtqtCW35jxCpWrzWjhFWwo6krizOzmxjmFk08tXq3+4Tm6lp9dtGBKFT3dBUm9EV48fzshEGvi9cQDao6JykfDyWaacFrCUtMRkd0W000Efpcvp9Rp8qKclKTq+/fkknuaWRpBAfRrWo1GGQ14txy7J/S0UfcL5X1Mv12TvdEeREjvUu62mOIVljpwNG5GrdabxJspzRc5X2Nhi3snnq298GeQDyIP2yL6YqG5aILQtI0QnQpRA13BqbZRRP2+JQd84Maw5P+gOffDD9B1j9c3ZBK6MoZe3z88B5XrCxfq3HsIUdH6lmjLPoUVmx2eoz6Z+TvVX+DvGQs6uFOowJy2iPVf90K4Xe///xupryKVZARC6y0briQmwTCgD+7WnI/F6h/b839fAsN8Vo0A09yd3/y4mek2pxcrPru0z4NzyZfK0t6Ed9w/xBKqyIKs00m+axZcqAZKg+u3x8x9Q/sRUh17HbIDNWn0SPalK6UA6WuzX2SsxVNt7YJleR89TghSTbUueQwukefxFl3sx1anHL6XK1hu91guzywOIgigOFTCXFDkVUUqU5T1tDtdkEoEYo4A2OXsWqp0Ph8uud6KaK64xZ3y4Le4/rSHI8GaAKhP++2KCQHV3g1212NLftyPB4w34mnv1/SHrSoLVHmaDdpttVG2My2tFyfSMK2h8WOkyODcifalpMmoQgl21nO6OJrzL56uLv9np0obNR5ha7bmFIycfp0wnT+eHqjYEGzJ/NTQq3ZtIdqfdXwSWU+yxw0J2EwVuOt91p8/1ZFbvZxwcXX3/AQ9Z4tPrJ3QxxD9flocEGcqD3q6jU9r0lPFD5st+JI4Pud3pAqD3khahhpMWIwUGMYOn1+89ubR/uQ1E2Cbcn0So1NYfQxK3XOXb77geaTZxSitG6QYLtqj+zvLqmyipb8fqMzIgwOJJK2SEmYHCvPd7rboq13uE3liU8GLodA8oVZQWVpTGciYt0fsQwfFBcizCpGc1V/+/7os+cvpaxqnsDmXj1nZ5DgdyYUgj4/mgzQBH+w2W0oswMDOeumef6P2ICixbtFSHlQa+b69luMpkYpWo9R6nP99hKAV89fcdRq0XoiOpixRSb52GifcXt7iydCwUG7IpMSjSp9/G54aD95CYamgSgC8drrUBYqXNNwM6xDRvrAFJFE7A7qoqs7Pq43ouVIvV0dYusinGo0yPpjzFQt8F5XozsaUk7VYjkQcnOv/v0h+ohZOzQ9YZjwWjiW2mxdx6bIUryh2lDB4Z7in5EhKtMDptQCmnmOU8BhLbdZXKIJpDfd56SbGdt3Ekr0LFyRlrFpstcLprfqc73JBUbDRHuIm7+bUgi8vHd0QhzucX1RzfZMInlf81hn0H1BMFOCla7Wwj9Wz/bxOqLzz9QJDv0+Wbr6JHXTazfI5UZe3ewh22JLTrBexQgRBt2miZHt0c9U+CIJHWZSymImJmvL4RtRPo/mC9LojnSrnnUVZBiSvxl2z7CwwFe/cfHNK/xMWHDiHZpTYLVETLfoft4BkdoZdXrEklfOHItGq0MpDB+bKiFZS6mB0UYfdJlv1YHWMEtupupin83+d746m3B8osZqsV5TeyWTn6mD4eruFldyKM2LCe3mUxDQVBZFbMTIskqPyq6w+2qTtzpj0kSN74fl5zkESwRBD2lFXWns7gXg0dL5+L06MDWjJCMjElCF0W0SH5RxYqMx1GtWP6r6w4uzJmfDMR+v1W9Nb35DW8p8mp0eXruPlanXtMrAlTXcanaweja5gJ1wu7httS+8kyfY2p7afBwkdqgKWiKZ0+n2uRNgRFHmmJpHIIbF9GrGtdS7tYcWh6pmK+C1ntVjIuU5m8MWo7awpVYMs8ZDo5Za1CyxWQkLTcctqNPkk9r3zf09a9n3Dc3CMHOOanW4NroNukedR/tgeTVtCdnbmgN9i7FcCm7LpEL1ycscDKdFVasjrtT6dM4FxLE84NQ+c5mbMLY4xBbbTK2/2z//yKSnxvvrSYM6hpGot6/jLd+9EWBMN6DlQq+rfsP3fPYrwQ2Y95wOHz9e9TJmN52TSpqg0xtiikESLz4Q6Vu8XIWfi8WKoRjxz9s2V4cNseRXSj9Bc5poUiP8lfvHvHiunjPe7JnPVySyhhZxB18wHB3fYrPcIkuKzSGikjF1sjZxknG/lIt3efjs+Z//6iUAh3kbs1TfGdQ13eMBfQFLNjs+kZQ5dPWC8UBj0JRnm62oJmrfjbojmq0WmgjfWmGDbq9NLOUU+8XvaAt7zaA4p28W9I/VXtzPKhYf1H5arAMGoyZJrM6fy+u3hAKgiaLg0Xn4NB8/+eqX9qV9aV/al/al/f+4/XQ4NFozEYtzOn9DJUg+w9fxjYrVpfKatuE9aaAsRd9rYOkOLQnBBWX56UZefthyc78i2Kqw2r/+k1/iLNus5TY364xAkqdjt0vT7fH6uWJOGHSPiTbKIrL0Dn3fpNNT1uKuyNGzxwuEm7rOWkJloaUzbDTJAmWhpLGBJuwxZRFS7AP2e2VJLq+3NAW0Yccau8Amz5UVfdo/xuu0qJsCONmAJWG1aFdQpTDdq340qhaB9L836jM5eob/UETr58TCUKMPcrr14zZJHG6IkpDJQIUqdc1mJuwLV+EMNzdwxVrcGOEnlOmHj+85+eoMvVRe47IMuRQBUGuTYnsFy1rg5W7IfLXEEYh30+5xvVDhkvvtHcfHZwy7qv/nwwF2rf69fvsd6+UNtv0giPp5LK59JNZileKKN18XGXq0VFXUQO7p+KciTouLYZd4lpTSGHBTqecqrt9TcMTpkfqdVjPB8GpOX6qxsYY2SSTfMzojLU12d8rjaHZMesLxupyv8OyckYzp5OUpyULGNH7EcpQxNNIDRhpjh8rC9uwmujDEhFlO7Zs4Ag7w6wKksLrd7RHsd2yk7KPZ63EyhqT4R+BB6asxLFyXOFkRFeo5BsMJUymCzu0S1+2zvFX7rbZdLn6hyAjMk2OqwxzffxweulpmvBgrceI3V/dM79WYum4DLIsiU/1YvPkAhvo9S+8TblMqR3kbumHR99R3nI6+pqp1EiGYaLRcjjoGdfIACrOwe2p9GVbOx6sfmBRqvkfNHjeJ4i7db+4YjjqUlRAeRDUN7XHWm+n1ioszNaZGc0jthGxEUNpzHdpCoHGIS7quRyXrcXJ0QbehPLi6tWFf+pgidl3iYtcamhBOrPcBxydqDFuah6c3P4XUzMjj239QBeTHF01+9auvuRXEbS+ISJfq/EBPKP3HwT3pdk1k1XQlFdCzLRqyD47++CV5vIJKfbbVHlFKlK1rJ/D0HIlqMt1+5KJvMe79EoDBuGAyUudJ63jIG6sgCNX3xlnFXNh6ZlXNYnZDY6CibPtDzk6K1VtPnjKbTvnNhx8AqP6xEupTeyjJmLw6xpA3bDOT4xfHHEtQ4O5qTkdK455ORkyvd7BXYJh0uaCQs/PDu1/zr375HKMUAoK0Qr9boAky/NmoJjFU5IFII7jPGb9S6yRnQyigpP7oG3p+j5u7fwDg5u2axUz4ULXH5+Gh/eQl+O7jDZPXKqZcazm6wFF7xx0udxsqCUG6rQ4DqbGxmj5lalIWKtSgJcmn/M317ANhFpMLddX65p40vCUP1MJ5/uyE3kBBz1u9FxB36bkqlDfRevReqsHwXIN1nCriZECPQqIse7QPnf4AV/IyfmcIWsVhq957SGM8Kc/oNAJG/ZLdtVph6/2GWuL0Sb9kPguYiNJ8uC0JozWFHGBN3yMRKPZsuUTXEiJhn3CtkqbkExzDQssq/IEimQ20PbONWhiG16JpPs4w0Wx1aDZ9al8t6NAwP6E4T5M+ulUTCcS64TfQPfU9jqfCuqUgQL2hw6An9YxVwuF6wa/fKARs39LJrJqJqxZubzJgl6ocnd106LVq8kgZPZmb42rqMomoCFKbRHKphJ+jQ1cL9X+6Y9LpqyXXbuh4fovblQp1FFoD3RbasDhiug5BSmBcK8P3VR92fsDd/iMjCYd6vR6t3phGVz3P0IU7Qap++/Ythuezu1FUTkcdH7ep1sI0WNF0PXRfzdPy/gO37y4B2Cw/vwSzQq0F37MYNC1MOSTbrTbv36rw9mqV0rQblHIp0NMY+SqkXOsNzK6O0/ojNRYtk6I80JNymZHbYS81dbPlFqfIMJuypk2LO8mNtzUHWg6BhCDzOKIhtlPPNjGaDl7r8XV0Mws/pSk2q5I0ERq+5ind8y6e7JPF3TWO25Wxr2l7Q3RhdwmDknZH7cm64xNu9/iS53vRcbDsGqen5vHJS5c37yOZ04CO1yOYK2MiNmo6jkLGFr7BsDtmv1LvXUdzFtvPw3AAF5MxxxJKu98euP72b9hs1B7+xbPXnB+pAzK7v8ItdboyT/VmzkDg+1mS8P52R/ygkF5o+G6bbkf9ftod0GgqQ8YpCyZdn6OW+s3GpMQX6H3jpEX7fMDtTF2uXp3hD9WYZqnGXfB5uZAa7zFFlOJ76jw9GXfo9YQG7/gFm+WIoaBonSxn8Ubt2Sg0MMs2HbmsLbuiRMeV8jRLy+i1lAHY69rkZkWZqNcWW5PfvlOXoOvYVFud96GQ5e9mpIJEdqoWVaeNJUTgo/MOf/V3v//8gdSQ5pVBpqln81sWu80tntRO0+p9yuu57Ze0BwXTm+/k2Y7YSipttviOv/qbmLOzlzJvC/7j8BwtUfdHZSf0Hsq6giZhomFKydVuG/K91Hk7Q41X3RDvK0U8/quvv+b7v/gv6jsX00fn4aH95CVo2BY9oZKatBvsYrW402WMmxnEvupIVxtyLUnuu+k/cMgqngu1UdfUObbVZbXWE3pWTqslLOC3W8DhrKcW2ASPy7XAxJ2EM39EJBDz28U935yqDg78DlgRP15eypPmOOXjcOQor8gF6OCYUKYZrQdIc9bGFShwvJ6hVQWGJOdNz6F3+rV6lu45btJmIMWX0809WVXQ7kk5h1NittTmOwQ76jAhyNRBGn888Po//jfqc+GG7fXvePWN8m6jIPiUoyqzmGb3ga3095vVmWBoJnuhW2t0XGwpSPYGR+hWynquXit0m4PU4GiajevahFKzaLf72IX6vQ9Xb9HtA7EUcy9Lje6gQ9bQ5O8cX+iR2o0GDcOm01YbquWZ5Af1nRcXzwnmMULTx9Affvb8DzyX3vEAy1TzuYo3tPsZdlPGsCpZi3FidmxMrcAQxQW3odMTCrcXf/bfMRx1cRGAz+HASc8llCLsVbKhkrqi+c17ut0h7Yast6rEEhDLq1/+jJbfJBXvJw0zoq1az/PV8rM+GGLI+OR89WpIIHRrv/1wx81aHXaVpdPQS8q+Wguto2OI1drvWTWjQQ9fyjWq4kC4mTPqqw3db7VJarXXbt5cYTo+kdBO7asC91R95ypN8MwGFz9TeyFYzbEtAVEEB7Q8JrQfz4Hss4DFUnn3TlnQ7alx+eXXJ3Qm7U9AibjZxpH6r76rUVctvIY6XJ+cdUhD9dr7NCPPbIaSa0rNNgUhfVG4WN3PccQKr9KIUe+IWgy92duPFFJCMOyN6PlDilwZRO+XH0iKx4ExXa+FL/lvFhuM/ZyfCZHBM8/ByFQfsmhH47Cns1XnSf+sgzjs3EUZ7SLnIKU0f/bHf4rrtciEcuvq8g0NW81vv+dyOuxjCk7fyjL+5CtVkrIxU8yqYPJQurQ5oInyR1QlZNXj8zA8fsFuuyORPbTLbQZCb7bZZqy1HEs8o/3NljIQblDvGTUVhfA5PxkcUVUa379XxA6/uLjAkHrGm8OeRGuhi1G7KvcUtvq9NA8pXJ2nIzWn2omJVBhhTrp07A6lqJZ4whf9T9uz58rzXO32GJpaz3eze5J9yMFVhsTTkwHtgbrIr5crzNLHFePJKBye9tVknF00+OHvfkMsuIHW8Zh1XpLUAsKs9iSxnF8uvL++YSt1one7OT8Eap08HaVcayaRlLL88hc/55mQi6x++7ePzsND+5IT/NK+tC/tS/vS/sW2n/QEO90BpngGtQlHotSglwX6ZEhiKHf3ECTM75UVtd18T9gcQiYubGzSFvLfJhb7MKJ/JCwD25pov6M7vgCg0nROXOVBeqXHsyMPT8JAk1ZBslW5neU2hhaUwiZ+2EX43cfRZB9+vMM5Ut/RadRsgw3xXlnuSVmwEG2ubBUQJxpJrSz+AA+vryyZ1vFr9geHcqieTdNsfBdKRDnDDMg8gR+Tc7eaYkiuLZzv0H6Q0NKTM7469jk6Eq8i99nHgupsecRiif9hO5o8IYtK6lL1Y7MLyCSfoTdSnKZS7gBYJzsMQ8ZF0zCyNt1jsdY2G4KDmqfCNuj6Lie+Cj8nqU6ZBERCxjy/+y0vz1Uhappq7MN7xcAM2M2vqGTlaJrJsD/kICHE3iPlBe0jZan7jsUuljB5noPucfK1ymetC5f9QfKxqyle36Qhv0ec0BQE3LjXwddrKsk7fTMZMZ3ecB2p8Z/HOYWrrOFOr4HXgYHQkflag+ORCrv0Ji8pLGW9A+zzCFxlYa73nydCOhLZMJI5erP5SSMyLTMunqg+JOWBrmvTEYYk/2RMU5CqQycn3u6wxTPSmdHs6FCovfDy9QhbwkdVcQ/dPoHkxZJVzEjKAvzdliKNsdtqTT1pHbOTspdDusLITJL8caaSRsOgrJTHvD/MaImihbUb0OwYRJLPMvcZieTNzadH4Pg0HSEZyD0WK/VaaVlsPBtT0gSd/hmH7Y+0GqKvqHu0xWkb1jZ5VhAI0bqHxlgILoo0YfFxjuWq19ojn8P6cS/qt3/5F+iSn9SKDEfTabpqMWbxnLsf1RxO3++w9x7mRj3A0+YJQyFK2GQVzdDmqZw7vtnDNCocXf1dxTmmRCx+fnaOVW5ZCKF0WM8IXeU2aSMXw9px4qno0TauWH1CIgZMr//h0T70Jsc87T3j3a3q7yGvCER1J9VKNBw2kvhL6xa9rlqzZRViuBm1MMaERol2SFiWKt1w1WmT3an+bi7vKEqNkczNtx+uCMUr3q339McDNNTZfvz6gkxoCC3XpNXroL9T69LIP/eTaksiHcMGd0IBWfR8shz0kdwJTYO2HMlXH2bUN8GnHOEsXFBpUqozctgfYPGdSln4tklx0mMoxPKOfcyFqMssQp3ry7d8lJIF9+kz2qcKld54fo5mexzefQ/AdLEgFzJ/23w8wvbQfvoSHDTJbHWgaF3wpI5p2PKw1iVzYY7YhAu6QxXfP8vn3FLwo9CmaYecQiDqZcPBG3dYR2pgB09PsecbZqG6TCbOALctsiThjo/f/prXY7UALN8gXatLIvEtLue3XN+rXMxhk9LXPz98AcpihRsJL51dUJgVM6G1Mpsah0IAD7bHD+tbPszV4h+fvUKfqMOsdfKULNA4FGq4DL+B66YEubCfBAnnEzXBT573ya1T4qViUih3awyhLbOzkq5mUkqZwC+edWiX6nD9z//p/+Ew/zz0ADDSUqZZBHIw+VqEJt3NyNjmO0xHjIVGg6bkQQ5FwNyLyIQJ4z64I5JQUqP3Cq8O0aREYey32N/v+XD1GwCqtEEhYsed0YBn7guCuTpAtTTBc9QhfLu44fb7HzhcS2jnEcL2775ThYPN5gCjoTZw2TFxLYdsrS7Fo2GX3bkaw91VSsMPSFcCr3dsBvIszcSimxn4pvqhtmWwsWJcqXErC4O91FPqjqLnsp6LZE63x7tUraGYkyOUAAAgAElEQVTghwV9d0BbLtqycGifXgBg/fj70jEAjaECg1SJyfX6lrYEUf7oqyfMMrW+isWUbbGiZ6l9MvIt+hIedp2Kutxze/0tAF19y5OhQylyYA3DYC250+22oHJsrhcqX3yzCHEGsoeSFel2Rr+lGHTszlO2wk6UJQkjr0NndPH5JADjgUdb5L8i18SResbL9zdkeglSypPOIwSTRLEp6D0f4rTUOr3aFWwkVGadeHT0IZlcwoXXptoNmSUyN50+hqXOgWx3oFgtyUUJxkxsLoZqbPI65e//5q9JXHWgVtqSqHyc+T/eH1jdXqr+dAfouU0dqPk2DA1Tzqix3mR/NeONyLid++f8TFhYesGeSX9MkqnQ7N39LU1ToyEcnWctHZlC7HRDmcQM5e9cK/kgNIxG06Vj2RSV2s/fPJ8wW6n+/vnff8+3//dfPNoHrcowaptGR90Si9u3fBC5N3/o05tM0KSI8bAJ8CXnt5hes90GHL8StY00pIoCvnqp0iuW36AQxpiD12J7H/DbN/9Vzc0uI5VQ6fgXz9D8FpFwan6/W/DhR5WvG7Z9ogx0MQKC4vM0kyZlEGkRU9lSfua0GXRdek/UBVnlHtf3aq8dO9Bom2i5em94+YF4q5yP41dPOcMhkOkeDE95ffqCi4lyQJb3K/7urQJQNZpntOwm77eXAMT3Pi0xajdBzsHI0US15G45JVmoHKg1/Xw//9P2JRz6pX1pX9qX9qX9i20/6QkOjo4wG6Ln5zYoRfjx9HjA+fkLfnMQ1GG7R1M4Pz1PZ/7uPbbotm3JKDPliSSNPpPTNrZYkh1vTH9ikYuYp4WFLd+pdRI0r4k5FLaXo2MawlafpCZDa0CoqdDHrlqSCXHtHzY/r3BzZSnHy3sGg2NaYqEcDjdYtvrt7//mB2a7gIEkvQftl6QyPGXHwHc1go14ag0whx3QhcMvLmkdCbP69AbqPZqgy/Iw4e5eITDPmw32W5/DjfrcvpHjivqDb7aZp4+jmCw9wdQyNqIW0D0b8OqlsmJ//X4KDZNYoMqWfqD/VFnYh1kNboOF6N2l5gBDINToGqZuEV0LKkxzcI+eo4/VfA+9Jl9/9Vq9d29Q1Tld8f72KewewCD7PeEu/FSiUuw+Z2dIBQ2cpncMJTTZmhxxs12SCmPPyHZpDkXvrOwS3H7Lx43y9P/s9Wsmp2p8f3XUoXZt3LWoIdx8IN3kPBkpr/3dzRXWRK2TF8M+g0mXzpGKUlhml/m9AhGk+4TciYiEzL1IPYYtFXbpD08+60O4FcHVOqEsC6IHNGxlErtq7cXajlbfJDoojy75mHJfKqj5y5enHDUqallvA8PErw/EgrSbXx1Y79V6O2wC9Gab7VL9RkuHM0GRvo1q3J6DYarfbPgmZilgpiTh+HREZX3O8gGgF3OyvZQHBSnJSq2nrVHTcAPC6AGAMMQXTcDO+Aiz22EuoJL69Cmj12rM/v7yBzrDU9rifdQb6LXGPD8WhOBhRpWrZ6nTA9pyz1qAYK326afQu9m06E26bA1BZq/XlOXjaO/+ACYDtRYmXZvp3mYn4dmfHfXxztQY/vr9d6zuEyrhuF29XHH/XqVT7F2MYx5oRKpUq13ozIKI6ysVsfi4X+IIG1UyaKMZbXwBm2V5xfCZOiP0lkuQlISpkGZbCYOWMBJVJp22DXzeD8dw2N+G3JWSFupN8H3Vd62qcEybKFdnm+uHHGQs7rdrgsM9DyIh588mPP/ml7S6an3frQ+kWyHDKBSHVOVJGNvReCZn27jr8tuP9whVLHlsEYqH3ssL7u4+kAsYxbI+J/C4W6iStswM0B80Ve0+ppewkpSVk/vY4s2eTNq0m33cSH3XbtdnJsCndJvxVeOIh4dpai2ay4jKfChJyhkY6lmGbY+NZdOSEqROvyDIVLTkb/7rFKfl062E5OCPB7RHau1V5ePkEQ/tJy/B0YnHQCSBWk0bNxQKqHhDuV2SSx7Gq8C2ldv8/MU5ES0iQfcsyg1BU71v19E5ff4NHQnJ1NM9Xm9MGKpJ7tga4wt1uJ91nuBgkIqEjNPsUom69bvLO7ZGTSahjkUwYzN9nG1lpBu4uiywZE3LcngpNWXr+4ir9+pC3O5Cjjt9miJWatoxuqYmorJzHMthnTzQYTkMXg1xRWpoPZtSlELcW9QUxYFYNrQ3Pv2UP/MbDapYJ5f/WG9r5kK/dfH0lE3yOKQ6SSxcp8/4WIUIKi8ilbGvI5uyNjE6chAuFiQ/qO93xk3a/QE3QpVlGAmOOP+F2SDahjgdoTZaHmg3XUZCiTQwXGZCx0WYs49dekJo7Xp9mgKNNq02L1/8nAdNWy37PIxlP9yLjoYu5OVF7ZHnFkOBYutFgGaoS7BbvWTo17RG6oNn4wZfP1HhyG7TZTW9ZjhRzzmdr8m2Mau9MiDM1YIn5+oAt/0Jzi4juFH915+ccP5EhY6GukkVWmzk0LiZLdjeqYPu49vPc7MTCfMcrpcYVYLfVOM4W97iuarPJ0Mbt2FyLHRvWnjL3QcVFh8432BnEf0H8Wc9IMvX9JsyxOEGY6/62242OcQrvnqiNrHf0PHb6qJx26c0vVdoc3XYlNEVtRzCSRnxfnbJoP8Iaw+gpTs2a8mB7woyUXL/d3/0c9xGzUxIi5999YruSCH5Tl48Z5tm7KW2V89znl4oqS5z8jNmWUop1G932wVmvafcqrXxJ8M2mtSsRt0my4bPf/kLFdr66jzi9q3QijVsOscOfl9QpasMp/VoF/C1gEjmuvBUyHWWqzNiYzvoYixUZU2d6mhiOL7/zd9j7oR5pD1hefdrOpUKR54dnTCbXXI/VTnRbqdNLsaC0S5Io4BY8pxG32Amv+84I+I1xJK71cMCT4zR//ZXz9nsXvGXf/ftZ33oH59gxlvsvTpfrPEAVzAFA6ckiWLCjXIGzHyPKfSUpy+esL+L2YmRtd2vMBovP7HUvLm8p56qEKChWxi5RiF5v95giCOOyuzyipbdQmwnynLNL78W4797yuU/RMwFZdlwP1dUORjqnNpnS7ZrMczHBYdVSNNUz637Cfm9+vemrKhqh/3NXsa/T79Q/14uZrxsvODtlfrO7dWcsAunEqo1sgRPLkEzSugkBf/hhcIx+L8Y872m7ovgwwbNbDIZqL+fnlzgPaThOuPP+vBP209egvXmQCDQ9PvM48N3v1WdbyfoRc51oBacYTbwXHUolew4eXmB6V8AYE2XjLuqEx+rkiedEec9taCyYcjJ6Qt0Tfj25jf0u2ojDDo9Pn43J7hVi/Fdon+CV9+nNXGxovIF8rvfY9qPe4JVkWFbov2WJ2RZTl1I0nkbYcih/frlEyxN5+Odivf7Wsn4RB1C/aHPfh/hDJSVYTgpYR7jigfQ7rhk84faw4zZbkcpB9PXv/o5SO1Od9BhOJxQW2phVUH5SQtum60p0sep38aDMTujTyqlU5vkI9u1OryP213u9iFrqU07lDZZrKztF40jUlcnD9XBU6DTQI29nsckpk2Qqt/XLQs9zKkFuNI8fUIRqbkI0x1F6rC5lZpGbU1XVwft9kNAtswwTClILT+v74qFSKDUErZSAuN/rNB6Lk5L5iaq8GK1nnotm97kBa2u+q6BY+E01CU06g3RDhZHYo0ft9v0j+746+/VxdWJoCOGzOJuxn6/QpOEvLZp8uxXCt7t1hW5bZHKIdE/L4mlTs29+fwiz+W/NvsFxfaWhoCiTEI6AvWv9YqibKILGGEfz9EktxLvZ9xffeDFzxTYqCj2FJspi3u1+Q+pgyWfM0swE53TJ6qPeVkTh+p9Gjpa7bOv1PdqdQyGOoQtq2QfrGh6j2c5vnnxivRIlVYki5TZe3VghocSXc8xHDX+XlOj6UruWLe4Xc/QP3HM6nilWkNOUrL6cMOPH9ShnB+2OJjU5+r1ju1hiccebkPmac5ip9btsxPzkwwPWgRWTctW8+ToB46Gg0f70G24ePIwhmUx6A+YrdX4/9Wbu0/8o+1hAzuOMIWAoFwvODjqfd/0JmRlhC5emrav6FYh56IDmecHNqkyToeWz6JcoWWSW3xygRY8cLpOMe0Wunyu7TXpOFIX6pc8GX5eLgTQefmSi25GJfWNh3jBaUfyyHrFtAqZSB1stO8QS/lP93jI189/wYc3Ujo06OAYfcyB6uM3RcI6VWv4x/drjjtNTtrC/1uuGAo3buhXZHbFNhQdxDTEtlTOt5GmNPoZ1Y0yCA6PaFO+eqW0/sLijstrZchodoOi5ZId1Pwuvv9IP1HraR3vGD87wTSUkVVsAgzhprW3O1qnAV+fqbN2ebPgyfEZPPD/Zhlt2aOb7e+gPnyS8HPqMbmUcOjJhma7hy85fi3esg/VPPnZ4zWnD+1LTvBL+9K+tC/tS/sX237SEyyCPXd3olMXZxwuFfw09Vs8O+7gS3rJabRwpKjeO37K89GYYqDQaz93df74uQqtXC/WRHlFXwojl++usDo+tQjSWqaOm6nfC9KcrIrIxFr57n7KWlQW7IZJohVogtbMqybJP9OTbbzFyZSlNBo9wXaHrJYqR7fZZ7TEih79rMHmEOEKOa1baXQfVJI7kNUZQwlzrYMlux34Yqya9Zq4VM9d+yF+syQXGqLd9S3emfKunJM+VlFhBsp6qWiQR8ri2YR7PO1xT3A46VPHNreiorzLWiSiFNFxDazaJEJ0AFs+nvdggcWsr3N2gqodXIywhNz5arfGsh1MXUQwo5o4DahEIHYRGRQ75e3UZZcwD3g6UuO4ulwxWwlheAS1q1O3DHntc/0xvyUlIkOXqWh8+V6G027TaKo+J57ORJggUprobClQ1ul6GrAU9Ot5Q+O4N8YIH5C5IS+fDSgEsTZNYtYHUZ0va0x3RFtQeH7XwvZUn5p2h4/xjuKBnsv2CB+82EeCCltRFdgcIox0y1lXWdW21cXWVJ+CzZyTwVPI1Hquc4/Xz4Xhf73k8uMbtLGEedKU7PZ3BBIWSiOLs1+p/l9eX2H4E05fK+Rbe9JjIB77m+2GXZxyJ6HMwbD/CdW6P+xZ3B7YlY+rkbSeDCmu1X7SsgZBrdbQu7c3fPPyhIMUIb/J/hL/TM3vPSmb3MASAoBmL+L6VkH//+fvvmN9KNiv1bhVxYHzsyOWqQrfXW8takE839/MuLs6MPxK5a8mz7qYueTZdJtOX6M9VHP42nzN2YXkNf/X3w8nao7O5EwxLnUbI9a7EPdIvff2bocuuVuimDy7R0vU2h8ZHqWhniuvt1TBikK83V1e0O74tA4Sdfp4w8WF8spPGi0coyTM1d4Lb+4YSt1HamRYfZNAmGeseM9+r36vqrc0HyRa/qB1Tgd02OBLhMoqTBwRVE7Xc047XXpD1cf1es0H+dz1bMptsuMHyccft0f0S49QUJBP+j1eTX6m+hj8Bk2vGByrs+D+448E8rkyj0jzAk8XTIep0RPatmKXgOGQCGp5dfc5mfzNnQoHl17AlaA8wyLk2cVrNMEfhFoHRMRYGzrs9SWurz6XL1cMpbTBrAeEixmGrX7n5dhm7Jn8eKl6Pe50eSppgTfBPeHYJZTzLSq2jDtqrz1/2kQzwUrU96TBR6Y/qjE1ghD494/OBfx/XII3t29Y36mN8qzbwBR2+vfbBV7TJSnUIq6re0biUxZDHd/u4Xclv3FxjCUh1VN/yHS+Y34nMfw85ebvr9mIUvNpo6RlyCHVnoBTsrJkM+7WZKI+UW8zJl/9kp1wPB5Kjar8PHYN0Doa0++JsGbbwXFcHFdEQc0KS+Rqil3APohxJcSq5QUOauEn6/e4psFYRCmHVQdz1KE/FObzncW3U/Wc8+ktnq3TFSopw7RoCYDGLhLiKMYQnquKfxSB1PKYw/RzyjGAve5Q6gaLgwo9bLZzELhxx/cJUg1N1K1XwZzXL9Xh2fJMGqaBITRth6r8VEowTEyKqGQ0UBuxNF1qGkxEqSKJQoKlsOmEIVZUMhCmnSzX2MVqQfdaI47H5+wDtRa85ufBhd8JRPnffvMnPBmoS9ftGARFRib5YcPzMSQvYizWpNstbdR7t3VAW+Dr211MEc0oNiLiu1rQ7mgYtlrKZ52M21yti+UiZ3Q+4exU5VIH58+opTbtNin4zeVH+r7ajKt9ymwql775OffmQerEsuQ9Ez2ndypSL1UOQmHmGm3iOuX996rMpNgXaJb67fff/47fXF3xVvLM27u3nNYRlQBl4tThRlhwwtTDfungL1Qfvz49w+k58lrMze2c0pZwme6xkRqv5SZgGxbsk8ch4W9X75hK6VKjaKJ31XdGU52P2x251Ee6owZaodbz7z7+QNFpY1sqFJ43HOaBKB7oIcMjn67MDWWFXs54LwfnXVSR3qg1XUQZh8zkyUjtodRYozsCNEtShv1XuMK8sjnsP9XN/WEbDxt4UpKRpKo86SEE2dCbZAKa2ERTfvHNN+zu1EE4v7rFlb5/tD8QBTGalEys0huCssX0VhkB9WZNdaL6tFnMoaWAaQD7xR1WodbQcOIS1wGO1BYvbhac+Oo86XQqmvbj4J4fbma8m29ADMDlekMg0mgXnk6jN6AhYsvXizVNkRGb3R3YhQEnT1RO1ml22VzfYkn+zrZKvJ7aT+NOk028/QQw+t2PP7CL1XqqdZ8nxzaFgFO8ZsZKxL1LrUvsH5NJ6mkTfy4HNV2pPLfmZlwci2hyZTDqWhiuOvcq02B1qy5nc2QxGDn0xmqe1lGFU6oxy6Kc77/9HhGR4H/6H/8H8szhN2vlcJmOyVff/Kl67+bA765+pE6VUT3onKK31DxN/tVXXC41lvKbVVFSCuDS9h7noX1oP3kJru8X2JJfaNgOpXh7m3KHMRgxkgJt3+2ii6ZYmpQMdJO8VAPeLDIOMxVfNmyN7fzA7Fb9HYcxhZ4yRllPz2yXW5HN6DVdul0PX5BnZp2Su1K473ZwOhV9T1kIvX3K8fN/DcB//oM+9Nt9Nju1wKwspw4qNgehGMtqQnnOH28uCfOM9UothpPmKXpTXZb30xmO44Pk7OzxmHKxZ75W7x3VMfup2vjvb6b4jo0n5N5tz+fpiwsABuMBrqfhSuG31+6CaBIur9+zWt09Og/9SZ80Tkj+Vnkcmh7gST7l+u4DH6bfsyrVGPZGNoeVmtZBt2YxnbGXdF3ummSipO6XXXwPWpLs2oQFYVBzLwZJsLpjv1Mf7Dt92p5NITWjcXJNLNyOKQ4r845ayMZHk8+RlfOZKHp/WHJ0Kot/X6I7MXqs1s10v2d4pLwmLSkotkuiWPXprNX9hD4Ngg1WtKPYfpS/QzYLjVkuRehVjyNdNlu9ZTwYcn6qcmt+r8NdpDb+av4R3Ys4Garx6Go+fiRkCC2d/+UP+pAKoMeqbKwjn0hygnu7YrdQ3/F6ckKWg9VVz1p2E97eq/mdJQWzymAnQCg7j9HqlCOR6OlUXZpnylhreBMcv882UhfvdOnzJlVzent9S1nX9IUwva523N6rnC/mgKyEksc9kNVuQSJ1X1qRYEiRud1t0et3aQqNFnbGWvZIaleMfYdVIgbazuXNrZqX1vkz3FbJXvI7ehIwbNlUcqwk1Za7UPWhVVecv/6GP/qVyifFf/8GwTTw/OJrPLfFWqgXp5e3lPbxo33QsznxVh3CRW1QpW2SVEjok4xqI6jCsiAoQvaib7fVdY5EG/X7xZoiqbClFrHqwrvrK2Zz1Y9jz+XqvervcV3z4o+GtHrqs9tt/Ik+cL6ecYh1xkKvqNPDqNQ50LUz3mwfJ7+YXodMV9eUInOUUnEufKg/P5mgmxaFpZ6tZVaYnuzD9gQzzylr9Xe9CjH0gvOuOpe0Q8Tf/h9/DsCH/Zqjby4IZR6bncYnI0Mrfbw8YS/SeKvtkvud2k/d3jMMz2QZi17pIwzanbaQTwzBtWXsNzv8KmG/Vp+L5lMapayhuETjKaHU77rdHtlMJMYaHu1xm6pWf//ljx9Ybysa4kQc/ekvuRW8R9X2GPY9EgHTuW2DnRjfPa/L+NTksFbGmm3C0+dqP2eCwP7n2pec4Jf2pX1pX9qX9i+2/aQn6Hs9Xj5Tt76T65iidtwbPsE4PSLdiJWQFaRSrlAkOverhKMzdVuXlcNSqKmiMiWzDUxfvdfKIv74eYt4rtz9YL3EkPh6vF/xiz/591iiRH6/iEk09ZppuuhGh1BT1lK3d0SlP86cX1sZQ6lvdEyD7Wb2SdWizuJPeYKq1cVrO/SFGqJtjdmLdRIEIb0opXTUe9tRjts1eLCRVlmNKci2MjwQ0CIXi2ia3BI21bNNLp7gWDalMHxEdkgkygGm49MZPI4mu881diFogqrd327we6rvhqWx2efMIillGZ9Sxep9V292zGOYPqgxjE9pVMqDcPSSJ4M+0UaFO4rlgdmbFbWgq7qGTyqhWiuP8QwX9yDefRqxExFhbzzisHyPIxDyQf/lZ8/fbgozxjokipR1PP75CXESksci6lumXF9JHdfqgJGUnHQll2ia3AucfuKaTNc7oqUawyNnQBjX3M1VdOE+yEkFGp14T+k3zxn1VHlFqRXYQrc27HZAS6n34n0XXVqSB9kvPs+pPUj0FOMjBsMU/8EzCBYMBUXsdtuU0Q7bFOLezYBUlEudE5MnLRdNWHcM0yWYX7IWBN3gaExLLOzAblK1+uSViorcv/mW2lVjqOcF45ZPbAj9nJsyHKkxnM1KLLvG7zQ/e34A1zXQJXfb1mxsWU9W54zTwRC3kN+7ffep7tTuNLlfX9I/uQAgy2J+uFX5mvOxybPzV1SVGvt1PAdrhNdTlre2LXj1lYKzj5ot0qImlnxl6LfpSEmE07TZbje8FQ8z05oMR6/kqf+335+HfpPNUln7h53NMlmRaGrcjvwek6H6vWLQY19PKdsqBNpvNTCEam7UfkaYQCb5o+7EIjnakt6otRGUkEpaINXWFIGFP1Ke6eG4x4+iDpGGOXZmsPqgnmd83Of8TKFvq+QdWvW4j5GHGsE+py9yQqeNFgNJ0XTHParCZimixn2/zZupGpeb2xWFbVJIvbKPQ2ibHNrC7DQ4JZOQfstvsJ8d0D1RnIhyTFF6Hx132C3uMQO1p9LdnEyQsrXV42r1A4kITLebXW7/4PlHUpdo+Gs0Effuuh3q2uLJsRqnwnfRkksAznp9doeKH/5aSVD96+EZunjl3aMTWu02keTV13aTdZXx5IU6R5atDr+bSRTCiqhPzz+dUX/14W8pbLX3oh9Nytbxp/BvZnq0hZx+oj1eMvTQfvIS1B2PSDp5yGAs9Sput4NX6qx0KYIPEyph7B6evuTqPuQwFHkkTWc7lzqi299R6za61BVphxlELd7+VlH2LJcp20DqDc9PSYzvuJ0LpH7UZbeS+pxWE6/lowmH4Ga/oEofd3nT7QpTcnd202fs1ewEmLMOA0pRFfA6PczegEJXB32wj3lz95DPSOi8vqCScpOkXbK3AhxfaOOmKblI1Jy/OierSjS5bHbblNupClfdTk/xR0fkhfqNJE+YXalDuOXqGNbjF/l0dY/ttvlGygLSZM/kXEKT1o7BZQNfJGQajsXttdqku2iJ1e0QSzjFdR3GwuzuZiVPGifM1+q1bVbRKJfYEuIOpwfaUjCb6zG5p3HYC5VSmhMKq77t+zR0HfPB0Cg/D5+ciRqF7sSsNmpL5TcJ2yKlL+um8npY1YPSdwQaOKH6zuubS15KQV2yyLj78ZazjhqrTmPA3fIOzVMH4bMji/czUQ4YH7MPQ97/oArkD1XG9VzNRWw71HWFK2oBnlVTSpL91vo8l2OL8rfTMHGbLqEQMKSHgu6ZmpfK9aiKTJEUALabkx3UeOZtmwEVq+ml6sc+ZH2zRReKu3K7p75W/Into3NKMiwJ9RwwcOQi1y2dD8slhQAZuu0+uoQDw3JNuPPxW49DwqvKxJP0RlqknE7Ugd0atLD1Hoc7NTeL3RZTgAuzZMXd/o4/eqbG5uPVNbNQhc6OzR7rbcT1nQKvFHFBu/cVfcEOLA/39By13hodG7fQ+P5blS/16zavhWNVS2OW11sMVxka22XIYf84hWC3MWYqAhOzTUBlOnTkYh81fJoNtUm3wT1e7yvqc3UJthslleTyDK9Bo9th2FS58jRZMv3baxIJuVdmk81KnSfFPmSxmvHzZ+pZS81kI8ahYYwxzYxUylfMwmV5kLrIMCQr/xnDXC85G3cYmqK7GOWMbDWfWgVhGZLs5OwxAkrBKfQmQ4pww9V8LfNZUj9/iT1Qfe5evKAvBens1izDBXWuLtDdMqYQdZVA3xJnIXqkLp6KALNQe83VItL1DjfrSj8+Nwj7gqNouW12e8krVi5HxxeYwuccGSHZQvWp03ZZVwb9M2XYBOGBzVRdwIPJE/ynpyyuRVLNTDn5N2e81wUEuL5lIeO9qXZ0h11KcSre32YcD9Ra/2rURW8O8O1/DLn6njp37OxxwOFD+xIO/dK+tC/tS/vS/sW2n/YE8akFwRWFsF+KuKMXcWoc8fqJskDqOGQhhZ/h/DuqZp+iUknJ+TzGzZRXmO1uqUqXrqOsrLZ3YLO6psqUZaP5Pp4wpGfRPR/vXN4LuivdpxiCvBo0NZqtmkDCmrqTk6Wfa8AB1GYLWwRoB4Me4S7lcJAQpDehqERDbbsiXy4pRQ/MBBBEWKfZxT8d0j4VZQzHgdr5BD+4u7+lKd7D4OkJdZmSi0p8nMcUuQBDNjO6ps/FK2VVdho5i+ml6nu2R7Mf11Drt23azSGRkEaHZy1CARxUyyX9oc9KVCWOux6BEArnWYmr9Yi2yuIz9gt296J8oTlMDZdWJuUbhwo9aVFtlBV/82GFIWPxatRFW2RsREQ4i0IKIfUNEo1XF88+UXcddT8P6R4Js7zX7nCpK6t5s9phN208Gadev0O4FZHk5pDagL6EM4aORk+0395/+Ja7fc3xiTDGXaQAACAASURBVPJ84xIsa8RTQcT2JwOcC2VFv490bvZzFsLM0Ry0aAgoaZ+lFHnJvZAVtLApcuXZNx5Bk91NVQjQt3bkekRdKUu1dHxyCdO/+/GSqkxYCFqvyAMcYVzyyEnqDd2BhK1PTng+6dIcqDDnPM9IpVxFa9hkyZ4gEo/D77MPhDw+h6zK8WxBKrcNUikfaXeG1I5D9IgGHMAmDel1HmjMdMqm+j2ve8LEH7G11F4LyjnmhfJuZ9MfcLKQ6a2ifwuqA//9v1Ehx4Al15dzDoHyINsNg2aZ8dVAeZjNC4e1KFM4ls352deYQlqd7spPnl970KefZAxaQtRwX9GePO5FZZWDKyTsnaMJg8lLXFMK4lOLrQDrdtGeHCUKCxDXGwJhTlrbNpbjY0haJtIN0tNTClEzrw41i6Ua+25/xOSkj9cUQussYjBQXrmW27SKkry8VH2sCi7fK+q1Qd8kzP6ZUpWWj2+fokk4stFzGHVUH6Iooud7pKL9Z9pt2l+p1/7s1Us20y1//n8qlds8DnGM4pOCTLRb0RU1nfZpl+bCAkFrvnl7xU5KnnrNLrVWM+yKt79IMDyJ8lUu/VpDQNuMWi2u/uD5Jw9n7cbiw6UCKZlNn4Nj8pf/139S/fdyEmH3CLNnfPPNnyLMcEz/ekbSFES1bxIUIZGkIq7evmeZxPziP/w7AG7vltyLR21lL3hzl5BKJG05Nzntqz6sr2NS+56qErGCMsAVBHeVP07G/tB+uk6w3HMQWQC90aAQtYcnzQswDG7eqfBNZ9IiFhaHu/0e29aIrlWIc14UnPXVAtrlFe9Wl3iowfm3J0P6Z0NaMuBBkrMX6ZNtkjLGxBe5F+wcW/jl7q5uWSxjKl9dStfX13REUfgPW17CtZQemDSpspr9Tlz2fYIrfKS+34asYitIRr/dwhDE4y8uTrDT/5e9N/mxbU3Tu36r73e/dzQnTnObvJlZzspyVZnOWEJiYPNfwAQJhBnUDI9oJgyQjJA8QfIED5BADIApEmLiQmBsl+2qm3kzb3O6OBGx+736fjH43ghX5ol7mSJlfKMIRey91te/zfM+zxEkPLhaTUgri0ZCAV2bc094tk8K2jhmslLhBCdyEZ1JujLn9faG8Qv13mfLCaGUFDSnhuJ7Qrrno5D3N78mFvSoZ1VkUhIxdS2CqxFOLGirw4lXQh00H10w//HPWAsi8vb1V/iFWolOqJN/c0srkk/V+4T9d69Zx3Iw5A3LXs2bYW3pPY82kfczTHxDPSPJtpTlGYYU1/WPCANrwkSiWR6BHMJ11lHUBzRRt47aC7qTXCx5SujrjERayApnNLHq77/+b/0tLpcf0GIV1vyL12+Zrb4AW433gMmnnyq0XrKruHn7a7Re0HONznKqLg/XTjhuYhxRQtlsG9pBGXJFPvuoD7Gsb3dksq9qSlEfCeuSm1v1bt/88pc8P1viCMfq5vZE06jx/fxqRTCvOXupaNvaEprswELKbvpjTyL0fodi4Pxyinah3m1Xl8T34r/bE6vLKeNAPeN0kxN5ai6M1iHfVzTfY0wFzggLUZM3XdLTPd8vvNve8uuv1T45f/4pppQyLPSYixcehcx9gMXiSujN6j2243P+M4X47LoUkoZaylemNg8cnF1f0ujGA8LYXRi8F/Tgm3d3GMBqrg5Cp3YJnj0Oa2/ahmCkclJNtcIzInLhhlyfCvpa7ae0AaPtWIkQtmO7/KMv/x8ArpbPMcyWY6zWXjBasvjiFczVBVpvc37+Uh2ux7uY0/aOQHK5rR/gB+ocKg89hyzjShDRmlsS6mrOPhkZ7B+/A4kuzsmqNzRiONpOT4Yyat3GoW1GDwob7WlLkd2XL+QMms2PpU/dsMAbjTmTNIpuWLSG+s6j1rFujliCau7DF/jyjDo5YOgVg+TOx51OIGsorDpsDUqpt3x59nGO/7ML4bitct6jxlDvK9K3OX4qhkTVsZL0zfnLz7FDF+dKyoX+xS8R/wWjK4gCB11quYfRCO/VcwrJ+xnRHE/UeoZB5/nEoxBcAYcAR4SJ0zc7zHlKKEjSae9h7X4FwMT8eD//5faDl+DRNPnunbIDxuGYS09ZGSsT5qbOnVwmd/mJVoARjR6go3P3C2U5zhYhXyeqQ18fY2rDZBSJvl3ccixKrkUi6OYuIRV9tb928RMKU+dspQbOYsdOwCbfvf4lzeDSSUHp7W5Df/Ae7UNaHDCE8zLb76hSOG7Fuz2WWEIjZlY6SZZgi1XvWS0IaGMxHmN6Je/fi4SKl1LWJr4Uz0/Pl7x7p/IkdW3Qtga9kBEvVq8QSUYuPv2Cui5pWiHnTfeUhVjtfc1xu3u0D/uqp6pyyl4dRLskoxTastWrBeX2Fks8k19vt6zEaj1fzBiwWZypBRbffPdwkelxQXmMGQmtV3Jzw+3rhEDmsd7s6EUnzazPePX8E07CI3hITiwv1aZ5tRgzXi3ZCdfiu28/rnW0M0n6z6YgMfzpwmRz0h4g1R/qr9B69bfIh5k7I5Z5mkznIICKvhp49ewZ3Zka+/U+ZrO+I5FSlx//a3+V+lb6dMios5JKygKGssBPJN/nlJzeHHkmUl2mE1LXap1MHgEoTUWLLitz6gaen9/rMO7YSbFyVqR8d6czfqYuenNiMxIppZd/5Qu+/Cd/SiFSP7PFnINpUQgfbRdF/xIWP3YZvBG2FE/N/BBP5LgS6x1nZoUudVzlkGF64kWcelrN4Wz5OBAgijw8XY1bnzXsroXM2tWp05ZSymdOsc3PI5GACnS0dsvXAqE/5A1dqvaF5Yz5dDUiclTu8mzxObdvd/zFn6vxGBkBZws1boO14Oawp6iESNay0UWfVAsctL6g6NT+MoOU7eHbR/swtEdqye3Vpc5hMEFX55Kh5aRyonWRzbE78udiOL66GmNeSAnI3OXZZ1dcST3oYI/YJSfWwlPctTb3ovBHUjxX4yjfa3QJpZRK3V3foccD9j3w4nDgpafmd1PmWPmjXeBYxES+QydaoloUPCi5B/MFwy5lJ/m665sPWJLTsuyAu03Bl6KZ1+sOPTqbK3XIa/aYr27U5xIrYTGxyISw3LR7DKF57CsdoyyZjZUxMVtdEIsHPW4jorplEqpzoDp9XG4zkchaQ8mrZ2qdfNhl9G3Jz56rM/nruw9khdDL7ffcHRvOz9WluPjxM05/psjxB6ukqfeUibrYNGrebvfsf6kusOdXX9Da6sxyfQ8ratE2ap5ezA0WvurTj87P2BZHdNQzvcEnEKmwsf+D19xTTvCpPbWn9tSe2u9u+8ErMqsSonurNqmocmVVHPYDXTbCF0s1KwrsRlTHjZz0dsNWYMz7DzaeeH6mr2EEU2xRKz7GBzbFwCBlCpZhcxmI8OVyhjEePeRnsswl18XVfXHJdn/ENARJ+ukVzyQ/+X/9Vh+6tGAvcF/qNYaxfECr+ugct+KZuCFdGeOs1LtG9pjGVN5H1Wr0eOwPqk/hoWQSjanuJVT6nEDCjJrucnu4ZScsElbp4UhIwggyuiEnEm9zYtiEgvw67kqyx8W0udlvqduEQVB3WVLSCvH0KPAYW5d8NlbE0NP5V9QStvY0i/Xbb9mJlZluDzhC/5WcKiahRyRjb9Qjni9/BFJ2YsQJZxLmWS2u+PTyEzKhNdtmR2pBJPZoNF2OLRZY/oh0zNmlmpurZ3PeiOdXaAc8LeBDJuUz6TWRIHXPohWe5XBqJBcQRSSSW/qwPnA1eUZcCCx8+gluZHH1hbJIPcfgH34lBepxw+efn5EJPZeu+1Qi1dUOPtMXP6Hr1fquqgxDpAuq/uM41tvXyjOZRwN5DslMzUV9yLj+Tnkwpe3y/jrluSdyYHpP4EnuMq/QLZ/bgxond+Zh+C4VQlc1dFgirGo4I6pax8hFLLarHhR5PLNnneUUQlvXFCZBKIX7aYvRB2j940wlXaWhC1VYnma8FeLrcdjim1PcXlnOv/hHX2Lp6j2/+MlzzucXtKIckB2PtK4ggLsDWuESXYnC89ElvutYIh5XkbPdCcpR68itBV2nvKYk3fPZXHnhnyyXbOM7NEdy2eEcjMft81F0xbW4e54b4o5MluKVX+9j3oiAs+nq1E5LI6jLtQ4//Rv/BgDBaEXd5HTNfZ6iJzlcs98pb6hIoUukzKbuOb9YEczVey8up3T3tIfbmPnMYSa0fGVSYwlivmltZpPnwJcf9eE2ObJN9jiCI4jMlnCs1m/8YUNbFzRSWrNPBlJRv7g816mckiFS72ZXFbe3GxwRLsYO+XCrPN/pakKIx+ZerqqraSQn6PsuoRlSa7IWmDA9V95klWl03ZFFqH4/NB/TpiUn9d77XcxeFEN2dzE/+8lP8WZqbr4+rDkehRz+Fy3jF8+Yfioh9t8/p2rVO0/1GrNsCWxhYHJOpMS8OlNz+nufjvm1RIjOJwHX1S2xkM77TsJoKuf1IuDwvubbN68B+Gy+JJiqyNX7R6jf/nL7wUvwPHIYuWrA+yFHy9W/B9GIwYRWwBiTyZiRJHKTpGDoa0LRIay0AsMUl1pzud1u6LZCG1ZX1EVCIqGXyWSCKXxz/XmPZ/fcHFUce1/ucIXia76csAhsGpkoS7NZjB7XUBuqlmtRoqgXY+ajnpMscN+yOOzVorl6/pwXL35CW0hOrGkpRfKoPR5pSp1Q4PyjvsFuMloJO57NV8xqtaDev7tlH63oBXBijjROqfpc9uXXLP2MzlP5S7u9IpCc1L6sseVA/O32IX3Lert5oDkaryJMubzSuGKMyUhCPc+XV7w5qXDJ1zcbNkOLI4vBHnr0e4olo0bHp9ZUaOPq5Qva6w31UV02ix99zkTULqKho8yv8UO14H7ybMxtogyC47okNGyI1Bznycfhk5Gckb4BWqP6+PbPX2N1J0yhMVt+cslS6jDttMSeT+mFkf5Xf/4lI1mqC2NMd8rY74QeavkMJwJXSiTqPCMQRZOo3fPi8hXzqUDjrYivhfX+w13MaXuiEL7IY1XxSuSDHOtjCr69wLTD2ZLx2OT2OwFsZQV1oP5/eTmm6VNEsYbR2RWfPVMAseU84riL0WzR5xxcirZmLrRPxqChyYHtWAGTiwVDo56h9zYGal52jUne9JQS6glDhyFQYzPKBo59+6Dv99ttOowJJPw/j2Zc/pHSizTtAA2D2xs1pk0bMEipUn7YcXdoqDZSDrWBsSg1XN/cEJ2NuRwpY6mKDcp1zyxSwBGnykmk7GV9W+JMdXIxgLcfNrwT0FB4WWNpNYkAesomJXTGj/Yh1Kf89IUK48W1jRMuWKwEbOM2+Fu1hswgwg06woXUBs6nOJr623q359DmuBM1hsNNQpqX/Pi5MtaKPKKWtOqH5ksW0whNcmbnZ58x+Opi33rvON6dcATw4do9ba3mQg8nhP7j+3k01ll/yDADNTb7t7fEa3VZ6lWBYZn4umAj1muCsYSfJwZe0PCv/g0FrOuzhqu3zkONblpsKGo196++WDHoB0RcBmc25bBXz6vexbxYORTH+uEZqab+5moe1Bqup+b/9z+94v/+337z/e9pyCy3Id4qwJjVeyydMUmm9pdLzLZRa9YaIhw3omhfq/G1XIZQtGDLCsvRCYTC79w2cf0Rl0s1dje3/4IwVD9Hi5Rnms/pVlJWYxMpraWdGAxxQS18uB/eaUwn9ymyw6PzcN+ewqFP7ak9taf21H5n2w96gq9WMz5/psz422pDdqvMIz1wMUcTjEF9PM3WdBJK8bya1WLB6rm6ot/ffo0p5MbPv/iUm+2RJFXW8P79G5zViLHIUZTZkVxY9fP6gvz4jre3Yh32BV9I0nV8bvL2dYEmUNmXlzM853E9wak/ZqcLMbAVELpLHFt955AmuFLo0BUpdmiSCTa4L1t00R28fV1hTXQGKRLdvLlh/OIKxDMqTzmlOECNpuHYDsK9TWhCsFJj2GwKIt9GE5Rpvk+wRR1g5FoYs8fBPd+82XOzO3IuGmMvZktS0dsa2hosj5tvlAV2c/cdsUDBt3e31BFEgkD9dLlEE6tq93ZNmpbMJRxrhRafuudMHBWGOLU9vZAaPFvNybIMS1S6HW1EZAj69crCWdiYQs6bpB+HHopCvY8z/oT+azVQpuEz8iPaXI2plXXoAm7Z3O0YxQ2akOxWeUwsYrS/OMUkh5LbtQp5/tGLl8xGBpu1oDD/8MdYwpG4GAaqPGZ9UGO1XK3QBYyQ3GYYukk3qIm62+SMHbW+5/OPEa65hJHd4AVmPzywdkxWZ4x9Q8bQ5urnYAopZhSGGBMVArI9h2D8CUn9GoD1Zktv6zgSYjZ1g0vhRCw1i6JrmTtqbELH5FeiKddoB8aRx9VzBRgr45i9IBePx4Ls1PFt9Tg69Jk3ZRmqtRgsJ+xStZ72+5iir5kLgGB2MQfxLrfvbtj2EG/VOr10LrlaKYCDmRhYRc27b9X/GkND/kGj7pWVX6U7pqILeLZcklkOd7fKiyrTGFNT0ZskP2ENNUmmPIdRZOPZj3tRk2j8gL5Nb3M6K2TfSlrCNFi68jdLx16scEVP0CCgEZThfhvzYXfi4sUr9Tc9J9mVOMI6ldQ1779TABOna8lPCZYM6Tpc0whQJSkd0v17LDknXjwb8eKZ6q+jV+j94yTgdX1k7odE4lGF2R5dwFhWYdB3BZah9tHyasEf/9WfyOf2fLduiSbqZd4lR9I+RpfQYhhp/MEfqv37xecv2ec2pShZaGVGL8TyDR1t0pCKu5vnLU2p9sHIs8myGFd0CKejj6MK05XwFt/mZLGKCL24+BFdtiaXtef5HYEg1pvmwNhIyd6qdar7Ji9eqAhJdSr59hdfovsqmmBoOUXymu5MlFjsitFcef7//Bf/O2nZkElZlTbVeS2AmrvTP6XNeuZnQgzidPS1ivJpxvfkmaT9MDo0zsnOJEcXefRCgGq6OlFksLpQYY/kFDFUUp+TacS7NaNAvUxvtHji6s6XNuYQ8V2iFvtgtRjkhAL3vrwc0UmtGPkdBCHnP1MhqjbJiAXSXFUl7sTE6iV/RUP+Pcz5k+kZgQjQDoYGhs1yqQ6QbVYSTkU4dzZm0DQGYT45+3yELaz+pdFR1A2dfk+lpBEPNnNhM68OMXcSp87blouzlyRbFcZdWBa6hFWLMOLyas5IDs1ZqHOQmr6RrpFa3xMOvTnw/rinrqT0wYlZukI27SR4dHihXErlivWdMEp4Jj97+Yy8UZvRnXucm2pBbW5jmuREKIoWrd1i+waGoAet2iRwhKjWMWmKivfvhK6qPD4cwpuTRlk01GLY3L7/mAR8KyTh+0NAKqTQUx3ORhNyYegx6g5d0GTOKWd/tyWWvGruWmxEUWH97S15CYYw9Lj5t1xdelhyaBfOQOHcj6/DVK/pbbXBD4c1g1BZjSMdPS/pJIz77NzHEUWHQ/z6oz74SBgzv8YMNT77kTLIGick60VZXMsIhppC5rSsEjLBgr/fJxx2a1pJN1a0XI2WOFIj62EzDGp+veUIixxdyjDqusEI1di8On+BbhgIMQdNXKNL/i40a4rAeMiV/3ZL6xKnFTg9KYmoQdztdnz19ppLQZWeRw4HIb0/pjVtoZEKUteOZkxFMTywAtrKYP2t2l936xuq3QdmvqAl9R5X5Mhao6crXCxhAjlfvGJkqctUMzSqoiPN1DptyFldPm4Q7g42uYTu3q1bDu/e4U1FucCyiEtlwLR1Q2nX+PeyYlmNnMkU/pJiX2KI+LKp2VTlhl/dqX7Ujc5+r/r7yvdwrBF5p9bU2zcbrPszYvkpc8PGuZdRsxyG+9xWaxLpjzOV3P76l7x49oyVoFqdTwxcU713UaRQ9ZSp+n3uzbiVPPrb6zeY5sAbybMmZYvpmZyE4m45ivAl5/vlu3/MIT9xK/0IqgxPXkc/G+NrOjd36nO/Xl9zIbm18dmYfVtQyL58t7v96P23bxRyc/3hDluT8oOhoygSCjEWT5sN97B4ZzTidLzl+F4qDSYRq5kap8l4StmmaDIXr19nlKcTiayTn/7RH3K7U6V417d/QZ11ODO1box+Ra2JHFcLhmEwCIVflcOyVvMUjh8nlL9vP3gJvo13RKIe//uvzmkF/KBrGj0Z/T04Qk/JRaG9qnNKx2F2rib44uWIVsoAbk4b8jKj6tVL1ZZH3TbMJCc4DsZYgWz8qqTDe6C1apdTMtHou/jRmE8wOJ2k0FuzOSUf03UBaLXBma8m2LBHOG2JI/m6cBzhWKpguDJ0kiSm1wQMkxdIeQ6T2ZTO6EjvOSkrk+13J3ZbVSTcHxPag7Icu6HGCsYPqgftsWM1EXmVICAYfGopCbntc06S2+riI+33WI7v33zFN7c7DqJQb9Y5f/CJsqQiz+F8NlJUY8D+mJKL4sDYnnG1WrLL1NhsTie+FPSNOQr54sUFkdRarrNrfMumlhyO24agST1lp4M+cPVCXXxXFzMaV/JXfcMx2/D+L14D8Pbu3UfvHx/VxZivPYxULdLx2TmzKCQXz7ErexK5IVbnz5ikCbpoH55FZwx7NdaF2zKbRmjiwQVWQ3msyQVgM1qcmJ2rnInrOBR5DZ143l1MmwsQpTzhhBEr4abV65gguuet/bheM5AcSVFdszhf4sxEm6420eTZ8ekGra0xRWnc0WfYmjD1pwnZUKKLt7XkCteoqYUEoNNNOrGiz9wZVm891Nud4pK2V4fGfl3Ray2d6G7atokvOc/GDFjUHY/gegD4i2+/ZhYpK341v6Q4qn/sTJuBlvVRbtZqoM/kvXqPu3jPjcDSvdxge9jKmOgsz6YcBFCSpyaryWeKlxVlLA9iILx9vcdyMs6vPpExLrjeq3X5qe2xujjHEaIMy26oi8e9Wd2Y4zvKAHS6I20KmZwn+sjBvQc3GQW36x29rtbNZHLGr4R4w3JdwskYO5SD97tf8+Z44PJKGfUj12GQfGXdD9SGx8W5yhcag0kruqamlrMuK7KDlOC0FjdShvAi8JhIFOC3W5Vs6Vngj+8BgQa1HPrO0GL5A10pBr7X04sUmzOLWF75GBu1vp7VBnWZ8u5G7a/CCxDhG05vjjAqORflHdcL8YR8Yr/LMKmwRM9wsTgjEtWG0cszrhYhv75RcxynH+fTdncqD9hRYk8lsrRP6DWNVGg2B6PHFIUJbzRgjjzChXqG69tc36h5GcYJl1cjsvvLy2v463/9r7GTiEF+2jMRsOSzy4gBk6WonYx7h53U1qZDyjHP8R/qeTs0iexo34O1uG9POcGn9tSe2lN7ar+z7Qc9QSu0cCKJvxoWc7n127YjS3NuhOlcz3LKQll1/dBhmgalWLVmGD4Ujr+/3dEVNb0lVFnzZyTFayIhdjX7ksBV1krbVRiGhmOLR5WfcG1RkWhabG/E85VQTiU9Tf0424rbdyx95e0dqpryeKQUBKTvDtRS+Lo+5bi6jSlDkvY904XQMdUl00VIKAhQ0444pAPbrcrDac2BqbC1X0xc6i5jECuzzzM8Yb2ZzSKy/sTppEKCdqNRSR4scAaa3ePebJ50TPUxKxEHLsuOf/rPFRHxeTSheRmzXisL9PaQ0HfqedZsyrptH0pZzsYOb++UtT92xoxWLq4wy2eHDnfmMxFGjyxoaY8immzUjN2AXqiOSnQKyWXagU4fd1yf1Hz38cfe7OTewtdtlgvVh+n8kjTfgDy/qDQCEV8eDI84P+KJlZetd2w/qJCQo3tM5pd0x9fqd88idPWHcFV1GvjHX/6fqo8vX/HFqwVVL+Eqf0qaqHfJ6zGjYEQv1Hha2zGX4u2j+3EoLpKib8ds8TybSsgJXA4PuawmWTMOZ/hCY+boRwJRB0iTEqdtaEpl1fpmQ7I+YEno0ux1yjv1uU1ZoQ09uiAEF4ZPL3D6AzpF3dDea7NNbcxOSodsk8XsGa35OE1UufuaIVDI5OpwYCOhsotXP+by1Y/ZCoH20HR0ko/F1uh1jbEw23jhCFsiIp7fsLpa0Y3UPnSPFdOhZiJIyniIOexEAzODjopK4P5tXqEjRNtODEbwQIXnew2JhAB/u7VVRi10ZGW+xuwsBsEjFHn7AL0fnUXMLA8JyLDdb/FbUUroYvTBprqngYyv0fSOkcz/y3BEMxJaL9PF0cGQvGPT7dl+pbyUF2cTziYeqRAZjDyLTjAFTaBj6Y+jdP2JA07ARmjFHKfDFM/erHsGUkYSpre9DE3283Kkow8Z3f16q2oqy6OWUq798Y7ZUuUPw+dzmuOeU6m8xCG0iAc13/vkjqHuqKRU69lnLyiFjOJDeiSpayphpKrSj0OJy3M1NrUT4vkiPJ625EXM5XOV2/MXn5HXKip0096AVtLZqr+W66NLPL+srpkuAnZCQt63b3GMK55LqcXrX/yCxQtJiRUnyubEi7F6ZmjHlBIRMm2dU3GHI1D0i2cr7qVN78n2v6/94CW48g2yWIVz7jY9pqiZr/cFTZNjiXzSchbizZWr2zUG2W1M06kOF11HKG5x6HskWEyn6u0sf8xmP2IsFFzjsyVCJ0idV9i2Qy8h2Et/+qA2fX2zZnM6sYgklGW79PnjGz9OiodDycz2HLOCRpghjklLUwqlVh0wnk45iQCv6YzQhWnmWCTo2YhBpJV8x8TqeoxSbfA8O2L66sKY6wPJ8YBgaBhMk/17tRjsuqTUdQyhi3LmDkN9X7sTsDQed9udtsN0PDzh9yvLI7lQoaVpQhLXWMIfOJ2tsCJ16Z9FDkGoc7NVG+HifMK/8gc/Vf01ffygojwKEKnqCMfGQ1jb7jJ8MTKO2yPrLqZ8KwdBaWCKfIvh22Rdzngmas+rEL77zfffiBKIGyUPCvRdd+JYFFSGekZt1DiSr9ucSk6xyVDec6DWzBdXMtYD2+OBMlXvGVgh9VBwJ6HD16cPHKRO8szYgm6wXKjxcDyHRtguXN2h6XS6TB3Kzxaf4Joy/tXHxsgiUO8Zs+NwFKynQQAAIABJREFUiHE9dSlqbYchqiTT6YqruQlShqLZIYW8l9u02I79UOsaGBbhyGI5Ugd/1xTYcnl4dgOujybGS5lWjKU8x2YgGQz2lep/e2q4r4jQ+57puOf63eM8uk4SE0oo3gosLoX/tUsaZo7H/NN7hZGcrbDJ0Bd8upzQS368tcaYUjZl1QfizQY69T2h5RG2Jo4s/j/65AvWwsEZ5y21aXCfJnM0l05oWXSjZSgzyr06X5Jqj/49Mar3t19xKoVfuHQZuQH2TM1N08FBQt9DvsfsN9QyF94o4lzWc5adKDcd70S1w6HCLVLyd2puitWCSCj0Bs2k730+fFB76Hh9gyd2XuD/lGg+YY/ai03bkNdqPX335pomuSdT/M3meQGa3nBzFIUcarpWlD/KPU7TE4iiyU+iKZrkuI95xZDrfLhVc5Me9gx+gCk1OUWd8Is/V9RwLSVW32NIvWVaD3SSr7M8l7IvSY7iqNR3mJZah5tiw267ppGYuhl8XC60EjWd7SHhTGjxvCikrA1mC8FRWBf8cqOeZ+gD7tzj5ImMmatx5t3nphOqds8yktAwd3z97p9yFqi8nx61DIJKcqc9Q9JSos7dcDZidCZC76ea0HQYRDZu7OZcjIQrVVIA39eewqFP7ak9taf21H5n2w96glXtshQLoe0DjsJg8fZuTziP0AtBXr09EYT3Ip82hd6RSOjwcFfgCUrIwkfTXTQREs03O07rLXcSzphsU3oJiTXtwGQSYgjIYxn5VJ3o98UbTCvE1NT/5vmJ+BGOO4BTmpEclUVw2u7xbZ+VlCIc4pRWEJltDJEB/lLIadEeIM6TyIZ6oBArcxoGjH0PL7yHX1f4rrKIfGIS64guiNehcWhy5Vk4TkhneWiaeqbrtexqESqeBnwyXwH/80d92BV7Rk5ElSjrqatKLEPIj+0ISzfohP0hiBb4jrLMLdvi7NUEJxJP27XwxXv2LZfVs3PiqbJcF4slmtHx5XcqxLucnbPdCwt8+wGtMmgKZR3Gp4aToDXRoKUhPqn/nQsb/l9u//xL9Yy77D3xYS/Pu0PzdDRJ+sfbHS/Eom+Llg+/3nO9UXyVFDqFhJb80ZRjfGS9U9Dobx2TyXRELkzxSbVhL/P07KjzRVnySS5afE1PL4w4c9+j7WuqSvWjHXSOAgyJTx+DMiYXas347QzHMTGF5KAbUoZUSMkdC9PsOUoMritzAkPtmXx/ID9B2ann77SeMR3dQY2XRYElTPrr+kRS9GiC+G2JCYUg/DbdM6Q1WOoZh0RjOVaRlcnIpTh8w+bN46HEyURnJDyM5nDAcdVacKOUtD89pAKS7QeQsKIxNDi6Ri5lARdzm2OiogdZlmOZEZnwTvZVijN28Hu13tJygyZrLyk35JWO0NHiWCGmaE8OQ4XvWQyx8nC64og3fVwY+GJu0KyF8CGMWExMJks134c05rkmKiH9wGZ7QBNP5Ww1RrfU8yp94EOTUgjCeB4F5FODUOCT9nDkx7+vIltmNOb2mx2toC7xL1jIvFxerWiKjIUpOpTv78iPah+4gYcZPM7cMw5MdKOlk5B2XeQY9zVVnUnZNLQSMXlft0xQfepHc6Agk/Ikw8253X6gqtX3zOZjWvHgmrTA0luEd51kf6QUwoeyTCnjCs1UY+zWPZWUOuxPR9KsZpCzz58+Unqmq/8deRlTdyrv3UIYgXARd5QshQjCd3tMZ+Czv/IKgGlok23VXJetxcwbkRZq7P/wj/8A37ZIpf8vfu8ZVyI48ObtwC+/ShApU3bpmpefqL1ddRXFseFazhczNFi/V++emzUiXflo04bh++Gjmqb9MLb0qT21p/bUntpT+/95G4bhe5V1n8KhT+2pPbWn9tR+Z9vTJfjUntpTe2pP7Xe2PV2CT+2pPbWn9tR+Z9sPAmP+03/w3xEJBYHn2BwFYlvudkxGAbrUeE1CA1ESwnBG1FlBL8lcx6mxpQ7QcTT6oWUvSc9kd2B3zJivFHVZlhboIieD47Lebulyleg02hZPYOmEDmY0oxSqLsezaI7qBf7e3/4Pf6MP/1P6NX/2p/9Evec0oqpKPlwraPTuww03QgXWVDpla1E0KkE98aYccxVGrrIMw4Zkr5K+t/EdCydkuVT9aquWsSN9HAYYWnpHWPh7l6tniqrsYjSlH2wKATVYoxGrpQAjfJ8vv73hf/mP/+SjefiT/+qfkR8TPFHYqIuEQYR5Ld/gmB1JMoF0Oxa+1LlN3YDJZIomdWRluWMhzBCa7nPYH2mq+0S+QzhaYchcWY5JKTnx/TqmOCUPHKT2yGObirL67Iz5aIIhdFFBMOM/+Ju/GX7/B//Z3wPglOdUuZqzKHKxQpt9oR4yaB3dqZPxLHBGNq7wR/Y4+KGUC5QNbWdiiQCt6esMrY4lYKPKhF74sZLkyNBBKKUGruvTiFxT6IIzxHSyFtPKpBNmic8+WfHv/Pv/7m/04T/52/+tepe2ILRawkitb83RmEpJihs4HPOG/e41AGPLpGzUen6+fI5laeykTk4zdVzHww8EGh543O0UKCnApt/HRKJSogcTEqlxM8yBKu3YCKtN2+usztScNm1BuYtppLbrT/7uf/Qbffg7f/+/55dfq3Kd9etvsUw1FlU6EG8/0DsCPpq9oCjVelrNVtiuSS/1uyQFeymfOJxikkNKJOCI6TykqXZosoZWsxFzAWIZVogWLnCkCqU8HLGkZnJX56yez2hl2STxiU4UGP7X/+bv/EYf/su//19gCSAtDByO+4MUb4Ddt3SNmou4hM3+PVGowFZF3nAmau1N34Cm4QorzNX5JX1nsREOVstumYnCRJUdmTg+gdCvHYsCpH41PqZ82GW0MofT5QoDKS1oW7756jV/9z//r/nt9u/9rX+bi8tLtmt1tq0ulnzy6af3A8PQ92wOal8eNjdEI1WT0LcNadrx/lbVIJlDQVUUjCeqzyNPI2yFfq0vccIli6kqexlZJsZU/a0ve9JjzPEkkkR6D8JQc/PuA/tsoDXUGip3G/5HAaHdt3/4P6g1dP3uNc2g1qXu6qzTFMsRSbNwAJFh2mx2xMUJR0rOgqVDX6qzpKwSOgZ0+b3uO0aGj9C4kqUFh0R9T932mGaD30uZkzdhkPtJI8dzWjphFbPQefZSSXV98fOffzQHf7k9eYJP7ak9taf21H5n2w+XSKQZuog7MtLRRRdvd31Ey0vMVlnRo8WMiaes1vJ4IN6laL2ysgZTQ/dEzy0waNAxhOfTTHLC4wlfdOR64BBLlblT45ouva0si+PmDc1RWST2ysFuO3oR8h3a5gHq/tutXB9phN1kt76hzxK6kyomfnk+IWiUNXRzvafHJc+EjaI8MRPvJpyvqKqCO19ZZ4a14jwKWUnxbd3WrEZi4p5a3r97RxmrPmojj/ikLBlvKPEsD61V/zt9NsUXz0TXOp5NP1YvANiv/wV951CLVpk2NNQCJx/rHnpe0Aq5+DgI8aTQd38oGZIlbaPe+5Ru6HNVhBrYDpub77Bl3OzxGE1/yTFTXpTnhViesringcvI6Chr1acyzwhNZao5Zs8x3qMb6m9N+zFpwVzUNoLBIJOyFt2DQddppejfCSxcUW8w9RFNVz94A5PQwRQ492gYaDSHphSR166g6WoYielYQeWrOZzNlhi1wUl0CR1H50xY/iPbolxrHISMQXNsbEOtU639GEg2v6+3HVk4vcYwiCfa24iDTnZMsSwbz1L/HGd76nuU/MWSyB9jGoH0N8IJJ2im6OvF79AG4e7UbI7dgUaYUTzPIhEB57EzIm8SylgVDPvzKUmifjb0hj5v0LvHOWiTm7fcffMLAD68/pZzIY9vGo26bBlQpQ9WqXOI1fh+tfuG5XLB+aefAeD6DtVYjU+Nxmi0YhTJmlrYdNkIbyb936W8FxYk08kJjQOBVMsPfYYpJQrLkcGpWpNJyUDfG1jdx6U2ANdvN0RSBF34LlVZ0/VSvjGdoJtqDkPbJDUjShGATeMST5hubKDKE/SJmouj1tKXOQ/s5ml87xhhOA5J1nH9QY2HYbcspXzjuNmQ73PaVEqXyhLXUmvYaQsOwnf72220fE6RdpBIWYSXkX5QZ1tyuEM3Q6bnIvac9JTCauVYM2YTh+JepFuriVwbcbzp9nv0QP2ipRa7Q0kqZ91qMiPU1bu9e7vHC3lgljJpaIT/NjskTObP8QJ19h0MC37LE9zEigi7aU9owuLlRh7+0OIFEp0LA7Kd+nkU9pjRmGmozq/INUhF3HrAQ9dNsljt0UOR01sdvUQEfc/FkxKJ9phgGmNCYRybTM5phUggPmqUQ4KRi2pG09E2aj032R44f3QuVP9/oNlGSCNMLLmuM0itVp7XNK6GVQvBcl8xCMVTWUK5PjEIi0YUTTFHQrQdO3QU9MJMbeg6Bs5DLWDoO3SBhMQGC9O2WC7VM4+eT9ergSqHgmoYHkRIta6hKR6Xy2iSFK1V37/PUvbXNziiCBA55gNRr55vsYYRnfRX63gwAHxb48L1WMghuWs8qqbHlHDpoPcPZMeG3pOWB8r7gyjPcUx1gJ2GltJp2AtjzKbNWc1FesV20Z3Ha6POgpq4hKoQ+i+tRTPVd9T5FsMAo1FUTvWpJrtTC7otSxbnP2I0EuHalcnIUe+5dFsMfUMsdEU5KaZTU8lB4GhnJIn6zqrumUUTAqFZ2mwrWk3Ej5sTeatTSYhiPpl99P6DMAbZnk4h9FDZqcIc+QxC+aSMJan7bHsanIdLwNZcdKGmatIGzQ843tO0eR0tNdNSPV/XQ1JZCxou80lIJJU+hmfQVaIsb/jURkDa7WVMayUODOweIWO/WKgDpDZ6AkOn6/+lwkMnYfmsPGLZPp0I9TpahytMGLbXUzdbTOmvaWkMDHRioKHFSPkZk9DHHVsc91K3mMUUidozgW3j0RJZYqz0FYatfrb0AX1i0xaPo8GHKmYWqjUWnL8gEapDx2z49EVEKYK3dZ3yyVRo6GyHqr2jPrTSR5NGZLxmQYRlDvS9MHgMV7ShjSsqKce0pRNqtHHT4ZQlphAcD22PaapLYJ0n7E4J31yrA3t9SPnR7332aB+a2sUylzKGNkHosxcZrawemDnqQrI8n350CcLCtC1vmEi4e+5F1JpLKfNkccD3JrgScs8yjdVIrWNj4ZEfcpKtqBWcTsyWSq7IPLeY+2vuZE3huowlZaO3EZPR42fSoep4MfPRcnW2uVZFfxSi6tbECUJKuaDC2QtKSWdsTgkvria4hRqn/TrFDybUuRrHTWGy0NTlNbpYscg73r4X9Q8zZDVTDkWSHamb/EFQPJxMWYqgsK/bWHaA7qlzKeNj52K3/haAdH/LIJeVNThQ21S62peB5pIJXeHNdk/rg4bao4E3RTPVGvWnI5q6Q/wgZplHVScU98rUTYsjhqoxtRjqCk9I/zWzemDR0gaDaeuzadVa3B+OYKvvOD9Mgd97dC7g/+MSDIOAOylqzLMCXQ6TxWSM1STcXSsLoYwcFvd8Z2VNezjQWcpLWpxfEAlbebE/0pQdxVF953W+pTUHljI5VVVxfyaYQcTV+ZhIFrVrWWCoRZune27inFakZo6nI2n2uCd4u1+Tyd+STU6bVOSialEUOYYIAe6uY7L4PZXkul48+xHWWGSFDJ0gcngeqI0R9wN3hxJctYib1ORcGNpvTu/oR3Pyk+rzq9kMfZBcj9ly6ioKOdB9Em5OwnlaN0xETeO3WzRuMJ2BXGRDMDVaUXDXtBI7DDEkB1vGNXVxfyj29FpBINRHwSiikaL29d01xX6DKZZzhUaatpiS2zSMMZ0ckquRxcV0Si/P1zWdrdDpGVrKoPdYQoFVnD7e+DVqLEbLMaUuF/SpR7NdJt69GkNBIUEHvTNxQoe+UmOzXW9IclGpNjz0qiEr1N9006LPBwwpA4qTWzIxZIxBZzXvMCQRVXQtdSz6lPsC27PQRROzqUoaueRN42NPygrUd3RtRjX0yvsETDqSVPW5zjN0TyOSPoXRhIkQM6RDQ9sWjORdhqFDq2OaSjhRXZ/5uZJn0toGdGh6td7yQ4NpiAGY7eiKI67knkaBSSjciHkSMwQ6jv49rPmaji85Ms8J8A7KU6m7A46dcHahDsImbYlEDWF8NuNDllL1kvtJKzKhswu1I4aRksu49blJ1TSst6pPu3RPiOrDqYho9RoL9b1tXNFJhOg09GR6QyyXiWYNmObjfdBMm1qkwSJ9Ap5LuBTigvTIIPqMg2FytnpGJ0bucSipelGMqRr0tKCVtVDsD5izI5UU+Z+aBkTWaty7fNh33G3UMz+ZL7Elt+Xi0Pc6jhiv/mhEJxGwQ9ahu+NH+zCezHh2McIROi+nSSlF6cUtBwYjpJe8/jiKeL2WS++wwTPAE2rD+dhmOBVc70RPsuywxZKaWlMyrSYUdgJ3iPFEieTCq3mXJ7SF2sO5b3LpKG/eeXVJVtf4QhN4ZU+B/+M33r86KeO4a2JK0ShkDXXlEhkK/2D40QMuwnRKTmlOGSrlm0Lr6Fy1fytCUqPBstQZZXkNxzdbdgeheNPBFX5QxzNgsCkMNd663WBJcbzWD/TOQJffP9PFbBp5xg/rCT7lBJ/aU3tqT+2p/c62H/QEdVNjJ17UYu4RmqKCvgzROwhaYX03W2rJWfjWwI+eTyh6dbNPI5OJfK4OPSK9R6+VldVoY7pQpxBS368+bDiJdehPagLXwB4ry2q/2WFrooRcJ2x3J+4Jzl3LxLUeZ2xfH7f8s++UpZS8f084HDBFhPLt9Z6XIxF3DHyswWQyEqq0UYgpZMvjyYwo0nFc1SdNc9gMJZ6o0re6yXKlvmc1dxkvMr78RilFhF5Nm6uxiY8JX91dk8rzy+IFq7kK7Ri6QZJ8rN0F0GVbsrTDl/Bv01dE9+ztQ4VnwfRMWUfr4oQmYQDTKDmPTHThGSqORzQhl96/2/F2vceOhMA5BDvvQFCWx0p7oHdrS428iNFExDipB+6OKtTh9CXBbIRp3BM8f0yzlIjWoWl5+KI03nkzNEtnEI9mu644XCvLdL5cojca21h97vj+HY4gU4PRhFXgYk5EQ6+COK24E6Rd3TREjuTdDGjQHpRJzK7DstXnzuyQLG9IhQ3Z9aZUhRrTuvt4W5RC8dVZFTQdhRCft2WO2cnPbUVSWEw1oa3TwJX8hda3NK6LIdGDy8mEpm4xJTxZ2i6dkAonWcL+lHI4SJSgasgStYaLg05gmswkZ6NVNe1JPHQ6umZA175nW0cjtnsVlbj51a8YC1XXKDIZggBa+d2y+NGZyqFcPl8wXr/lq2+V17h9e0dxVCGnxdUlTudSIyoOe/CigEJIq+eWw5lQ4WllRNMdMYS8/mwyZZD88H6z5tXzFSNB+n243ePYjxPia9pAKrnDsO9xq4HAV/Nt2Ba2jK9nuaS7PcVJQrWBDpIT3B73WHFKvlUeQkWLURvEooWnj6fEG/Xzev+OQjfQZA/1TYkjSzwuNbbXJxoZbssc0YkXrg8d+vfwbf345SdMpgYjWZd+V7BJ1XlxV2XEp4RTptaNN6nIJKd93Fdkh7d8KqjhkT+ldXS2b/5Cjf8w4s9uVajyer7h4mKJJdEcvSmZSrTq3Zv3HJKYSLwvmxF1rn5O64TOQMGsgdqbfPT+aa7WQsMeTfQbyyrnWKf0hfpcf0gohY3sVG85pg12of7XzvUHTVXH6RlCn5mo7oy9EebqjEEQoWmeEoooexbfMTQanam+1+xsYkk72a6BZ1k48j6d1nCQtba/eVxw/b794CUYZwWRKJg7tosuOamegnyb4AiAwNA8NAkrmabG1LdoRWG8+O4bzp8r+K9RV9SNx0KU3b3CowkMcjlsPTfC9kVt2fIY4oFYQB1DoXEnobaq2ULbPDyzbirK+6T2b7X1IXkAa9Raz/o2xhfR091tAqImPTcj5uMxP/tEhQW6ykCTA2w18vF8i1ZUuY3xksgx2KzVgYKeEAnt/c9//4/4eZnwhYR4b64/sBdV8OPxDsv1oVIT3BcpbivlIW2Oo33M2A7QDzGD3rETxfIm3fHqSqkq9PuWtICpp57vmxEXn6uYeZkUDK5LIzyQFj6txJuPcckxsyhEsmZ0OWd1NqG5156pDIJIjVPgGdiuhS450aGtyRs1Z1mTU6bgiPEw9B9fgqHwiVpmD536TjME37dxJO+Xz1qS+F7qJqGuNLqDCrtMVxGff6pgzkZg0ekdmkCzt4ccfzEjk3qOIc2Y+pKHM3XKNCcV4MTEs1hKPmG+mFPfVvRbAbg4HaYcCvrwcThUj9TfiqLjlGxZ3kt+mc6DSoaGiV5VtHL61bnGdiOhHMtC1yeEMxUums4uWd9umU+VUWCMXY5iQMRFQ2/aFKjv1esExMjUGp3V6pK5JFF2yZa1GE+RYzHoJtXwuCr7+vrrB97Pm8OGQoyx6fRzugpCyYN9MpnxXEobPltc0B+3xLK9kniP1qjLa86YIPIJRRg4a1smXsWbQo3p4rNXvHiluB3Nk0ZnzBlKFdqbuCN6Q62LlIbBm3DxTP1vnPwpTfa4qG466ASCTSibnsjzcMU4raqCsrsva2ppW5fo7BUAs+mc61+8Vp/b7aha2N5JSL8z0SuNXAS1LTNFl5PxLslxHJ2fPFfrZjU2GIvh6AYL3l+/5SQKEG1Ro0so3HIsXP9xw7w1Wka6QSTrdOWH2L5ac6dyz3TyU768U6mm2zff0gsgrjqUGFqLE6rnT2efMwwZ/lSdWfWpZb5QPLLR8ymrywVFosb78OEtf/ZelVYkWUPgnPPqXJ1R89mURISC66YlDGb4kTqXrOZjnIIn7zoPZiA50Jga7ZQrFRlAGzpsCaEbz2Yslj7dPRAnGDMIF21anui7gankILECooXJ74m6yu3NW3wxiILIJ90fMYQDtqwPD47DZAjxvIuHC7M7ZZxEIef2cF9E83h7Coc+taf21J7aU/udbT/oCZpDy1LCNRcXF1Q7cT0rDc3acRK9qE3eoEuyurFM4qEleafc8lfTHYNYZ6ddR+tdcP5jhfwqBgPDhUy08Hx7TOWLyzwaoZsaZa6K2ZNGI5EC4axLsR0Tz1C3fpHnGN9znafxhotIRG1Ll1PiU+5ViOQZNrbEMsaGiVma+LqyKmvH5GefKaDCajQnOdaUgoA1/BE/fX7BjQB+mtTk2aUKG3w6n7HObIaRsmTPB5e3uXrG13XL1bOa6J71PQixQ9FQO/Wc4sf1xxISBsullULz6WyMKwXgWRLTZw2ZiGLqts7EVxbedoj5+u2Ge3T/PIKDhA1PMejaiHCirNEXn7zE8wNMmSvX9wjl3aJAQ/cdrEh5ClVf4YjnmQMtHcFIinRPHyMrQwk558X+IayoV9DZBiKGwcvlBF9AI2VdstvvWIlj3LQa8UGFi+pkRN7UVL0oGWgD43DxoK94yDvm4um7lkaZNQ+Q8sCyKcVLudueuL3O+PBOhUrcsYsrKNrA/xhdaY0FkTYM1GaJe69hl+e0AvYJXKgPB2pRiqiHENdRYJO8anDtnPqgvI9vEo06H5iOBAquOw/gHseyKbKUiS2KH1HAL34lBdKNyTDrSQTZmMR77gMIrdaj6yZ59QjzP6DpLb44+s2gQS+gpNsNOinjUM2vNxpRSAiuL+asnIh/8/cUuu7ZMPBn/+TP1ByeYvKqobfFM/TGZKcD+UGpf7jtOTMJzZ7qgvh4wBYQzdY6YM8lNPzyEiPwOUgJThCZxMfq0T6Mxme4guJtBo20a2mlniGtKkrJkXR5xfPzFZGE38skoXUlBOe1TA2H2L4vSM/Y+Qa1FMGvqoZ4raIQfatjmi6tAKEC/wJNPM++1RnNlmgCwKhdQJDgnhtQVI+XPGnDQNFF7Au1F3vbwZmrwu5QS2iNiOpGrXfXXTDYaq9dvgipthuSVqI5v/yKD3HD+zt1Lk4uZwQiahssZsRWTSHqI7mXcytnqWXZfPLF5ywkWrU4v6T5TnmMng6FHYKnzv1d87FYeSHRnmNRMJH5bdqMqs4fomWjyEbX7ss1dPLZiEb0E5PNhkLOwENVMLQNVi+KRPsjhzTluRAbuONLtE59zqwa3GVJIUX+cZawF/3X/cYlOXUPhC6n5PhwJ9XND+tA/LCyvKXhSNinOhTUlcCbS7D9BZqnBqg8HdAbyd9kPUbT0Ym7e9i0/Pqo6krWu5zoUsMVyV89WDBy3Qf2k5WpMzpTIZFyPiav97zN1CHVaAWmyLK0p47J4gxRDaGuChztcTRZlexY+uogst2WcL5iL6UNgT2lL6SQK9N49emnzHwVBnC1Ei1VA5wlGTN/wldv1SLafL3m5Y9+zFhqIx1rxh+PVUjidBvTFQU/PVf9+GenX2IJm42Wgz+Y/L/svUeTZFmW3/d7Wvh7rt1Dp6jKEj3djekGDCAAMxjFhh+TS34JkmZckAaAA/RgpruquiplZEjX7k9rLu6JYM9kVG247LyrrIoI93fvu+Lcc/4i6+TKXmq8e6/GZpOVjPsnT/bBt01S3aKU12W4A0pB6mpGSVUXSFYRyzG5lhRnXHWkWcV+LchNv2QtdZDdIkILRhgSgLz7mHE06RhLXcoEBsKjcpweH9YraulHUmU0Up913D60xaPCxIMB6F+2VOpny92Go5HUHhZLui5+RAjmecGFpBwjs+OwjGlkU7LMjv1WLdJDds2+rGkl1dLpJmtrTSP8s5Oj5wzE6VyzWvJDRCdyRmYQcHio5e1SdN1GF2slGo251Fpc+9O0dJaL6WnXYbs91kKLGHgOJ8dqo8l3K6Iywpb6KKbLyFEpv0LTaeqKWtDHVbVi0hui52oc14uGrif2WKbL0B/S7oRrWtzRk5pJUVjc77e00o+epeGKgkpEClVEED49j8p0R5EKvcFumffUutCLPcdhgIvaXFw8wkBtQufDMf/65Ijvv1cH311WcjpV47OKN0SgjHC1AAAgAElEQVR7g9/8WqWqp7OAu7cxvQdllvWGja3WzNn4lJGjPW6gTQvXUvPt9z0cx+cfX6va1vLtErf3NE/QzhNOztQaXScFSZmTSmBlGy6BmDsPnw8ZBwGmGDXruuLnAcRxRVvVtJImb+qafbwhE/d4yxo+ooEtavrWgP5cBcT9Z0fkQvuI6xbnuE8iaPfR+Yz7lRrDotVIm6cP8vs7gzjaMfDkAHm3wh+oPaHQe6RNxNcjsRXrfPJO9aEKMtqwz07Wwt+9f89NmkKr1p5ruWwEYu2mrQpaJciNk4T1WgWOp2ODQ9mwl7Ty3B4yPVcHVtBOebfNiSo1Nnn3aUo3l7VWRjkHwXtUcUzTHKhzNacSXUPc9FgVOberJbYEoFVRkJTyXjSHwPXZ2XLQZRnX+yUbmYtfHX1BKQFZvLkm39w+zv1hGNAJlWKplXTVgfWlCsDqnsdYFJHS5tOD/C/bLzvL93rEsdpdo7Kjb6tIsWwtWsOlm6tJY6Y1Zi5Ebn1DFSXc3csNrrW5l4Es1hlf2gHZQUU9XetxOptgSTQ8DKcMvnoBwLt4RZEVbIS8Xhotpi+FZOM5+AM8iUAHOI/R9z9v7WGPLRsRuss2iTlIgSMh50QmH5ZFo4VUhcid7e5YZWpyD1uY/Prf0GzVBpKua1aGR/DsKwBGRkD8Ub2owfmUcG5zWKmJmrz9iYPQTOxG55tXv+MmVVHmD7evWYrztt517A5PQ3mXlx8pzGMcW8j5HUQiDeaFU9o8pZTFbms+tjiGn7oObdkRCnCgzUx0gaG3nUF8qMklp24WJf7s9JFqkucGhi5k7RjeXC3Qh2oyGX3/0d1bu7ulTjYcCzDIcp9woh6rW5Rr64QP9IPeHsfrock79OuangAeQl8nHrnspOar988eN+8qbwlHfWqRnivSGr0zMQMJbAITXXzy+nbH6fjVI9nY1ioaqWvW+RLqnKkcfJN5H1dqeaPw02VRZw+cvZYiiZAkBKVn4Lnq7w7pHktr8QSYtFzdY8jteZfWtI1OOFVz8YvRCdPJnKYVT7+qYbsUqHuS0KUmdS3SUnHHdKIOtvcf79i3NeFE1RZbq6WWDbtDQysPuMOna8vR7Q1WpdbQ2BsyMdR8Ojo55euv+vzNC3V4zQdzzOqBz5eTFyWrpQCDdI+zZ79SH7gvMCOD4VgdEM+PQo60HnEldA53jCbejvr+Drc34Q/f/QDA9OiCyUz93e1qzerdLR/eqzHeRiVfT54+BMOuphJhiK40ceweqVAGprOQyZG6+QXjGXbjUAnXdTJ2IFLvpel1WLlOl6k55dcH3MLAEAyA2xb0XXV4+P1TnGGIKfM0o2Gfqg06Liv2bUMluIk0ibkTN/me06c0n+ZrBv6UONuT36lDqW/kHCLVh/OvJ8ysOY4tvGPtnrtE9fe1bbCJTV5Hag6no6/I2xhLamSVN8dABQEbHPb7jk4TqcdbCKZqzhw9P2WR7Qi7QPphkMmz1i2EvYCPsYDivE9TbJYEbp0GWqf2hCaAsTNEl5t+FleYEpy50wC7OLCS+d3FxWPNVS8M0qwPmgggJDW3h4LqRs2F6LgjPyh8iZ4v0Y3kMVt1MBzkgk5vYlE0OQXyPFHKxhQZwOhpvMhD+1wT/Nw+t8/tc/vc/mrbL94Eu7oGUQYxuwLHFlSWqZE0GqbUyKzQoZMrZ1N5bLo7lkJujmINUxCJI2PG1cc7tMmfAXjxLzxsT0efK7ToXWujSW1Ls3tE5TW7WEVIh6YkeRARtjyaGiJJwVJ2+P7T0e/93YaDQGQ3dzV1pGGjIqBXF2PsnkCfbZNw7OMYUs8xLVxX3W4OH1eUq4gj+e/SL5n7c0xRoqEtaDUR98ahr9ns9qomWmVrjPIB3WTSdwJaIdeu1hGlpdIATdlx+BnC/3QwoLF67HI1jtvFgkaQT8/nM0LPppZUtWfWjIMHObmSL2ZDNFF1uI8WjAWGHu1qOqPDEyfo+WDE0IQbIah71ghNaCduz6DnG9hSs6s8nyIW6LleYLkmui6Cw9mnNUEknTMZTx/T5nYwptN1RrYQy4cThiLBlKQ5X585lBdqnLrgGOtGajTdHf7RgFhg+GmScj6eU0g6tqe7PBurz+zQ0GobV2DrlVFhCcm+rCqqbYQrcWCIRlepZ/eMTxFxqdAHuq6kqjJskadq65ROPmPan2FaHq3UO0wt4PZSwcnzpkdr9UlyobbcLyjzHp7cKF99PcN8yGmXNWWaclioW0W/P8LU1d/Zl++wnRm61GwSPaaVGuD8aA65h9V/GpU4Gp1w+ccfAbh//4HT3/w7AJqoYPcuYSso3qQq+NVUpbWiOOE///kH/uPfq5pkcTD5+tfqJtizNbTTlkSi/zjpWBwOLCTtNboY8fxBsH23IysKtncqrXyz+sDf/k6Rpw0z4Dq+pZE09hCNyYtXT/bBdS12scoyxY2J6be4opLSFDmpCJR7dodBgC63++3qkkJKK54GugYjW/X3zeGWOEqYi9C9beuPiiZ4LuPpkNNzlYLtunt0TeaC5xBXFpZ8Tpwn1IaUj8qSvvOwJ/zTVlY6tDmloHOz1ZJa6n756SlnY5cyUzXB71//J6pQ0vu9c/7u7TUfbuSWPj7nKlkwG6r+s3Z58fsX6p9ZSrKOcUQoI5h/y6+/Vc+zXF7iNSGWoDXX+7VipQPrfcY21nhzr8bKfIJ6Vgp6urV0uk7NvfFgiBO6uPIO6zilG6txGfguoT9iKwIAVVpyiCVzZngw7KFL1qOY6HhxxZUILmjpDkvS1JpjMDKnGJIRG5xNWQtdp3/koS9LZlK7b/IUXehQlvPLd71fPAQbOjzJ71udgacJwKVOCHUXvRUZnv0Nrmg3akHHQJuhl4oWUa8iNktRznc8LhdrjCuVt/39f/9vGR4HtBNRqkhr9qICkzUlh/0GZyIbYdlw9UFthEZXoG1zhiMZZDugMZ4ufm5X1+T6SP6948Vkxm++UBP61y9/xY/v3wOwOhywiB/VRczWxDTU5EqMgv/rTz8xO1G0BHN+xE265lRUcl6czRg+bBqlRrnaUMtG2Ov3GEoNIUsS/vh3f+T02TcAzFofU/re2BbLfcv6P/3xkz4ElkvpOWiS5rPzxaPEWGBahH2PjdT6tK6lkY12OPBp2oal1EwMP6D11XM9//1LKsOlQU3GqDgQOz1Ox+p5zk+O0YVHVhdren5J1KmDt8Wik5pgQYbtOixz9bM6//QgT1M1Uc2kQ5M8SJ43NFX9SDUYOgUnczW+u3TPiGOSRi3gxjDpicbmsden9DRcgZcnmxW9cMxQNBvNKmc0kkOvctgsY0YCANhsd0SdpJmKlm1SoIliTpNkWA8ZuPbTGsJsqtJMnafx8acU2xGukuHQCIR9fDHAaQt2V9JfDcpSfd98/IyshWwrNJe9zuV1Qk/g5uE4JBO1kUNeU8Yl5gO1Z5/TysY7n49YtyWdgAX80GGVPUhV1YyHIZbzAIX6p631DCJRK8rShDRSh4neDCm9KddCGThqHWJR+fEsj+3lGk3SqJnT5/1W/dseOwxPA/JabZjvo4q2G3H8laqHJ23L+4Pq35nhcX15z7G8421b8g/f/WcArMmYdXTgvlSB82w8o997muZRWh2dvHuygpwSXVJy/WBILIHi7vsfeXnxnLO5evd6MWYsHLLV4YZyn3J2pGqEb95+ZLH8SP9ITQCj18OXmn4wn+MehVRSGsjSgr6kojeHnERrcITr2nUQDtUGbWUFabp/sg+HeM+x79I6al/MqgNmX+1JZbGhMT1WexU8/dc/vufl3/xWPTcld2nFKlLvN286gpNXeBK4J/WBZCvrSz9BCzs6qbUtsphIQID7fUGxvGEn1A6rP6CU/bM2+zQpVLmaw0n+6RFhyO/6hsZoIO9i6NHpIb6UG3K7IS3VXDOsgklvSCtlgiSusJ0HrniJWxvMjtW+Y4x81juNl2fCP9ysiDfqM+35nL5hEgSS1g5cjIG6QIXAxl6ge3JRahoQhasHOsbPtc/p0M/tc/vcPrfP7a+2/eJNcLu6wRCYq2MFrAQKXNkanabTJg8q6AO8QLyijIqmSNgLedz2PQ6daIwedtQlPJMUxSpakOsahqUiuenY53KnotO60Sh0g9FIRQS7TY0uSiBH0z5pdEcgt4j5OCCNnybXdkZOILc7b+xzPA0etTTjw54yUT9z9CG7+w29ZyqyeL1ZogsoJ2z7pNsF3gtBk9keg+lLck19/9Yb0ReXA62s+Mfv3xOvlefWYW/ygBHLE4NklfKulEKvnzA4VrfUWGvw66dRTH/6+/+COX3B2bl6tiDwMW1BY3Y1m13Em/eCUBtMCFy5vZt9TKcmF7HtHAdzrCLxSjcILA1N3lNuKPHsoUR5dleSRoL4jW9o2wJT/ObKbMWkJ3NhHeMGHYaIFdzcXX3aAfFtM+AR0pxmESOrR7EXbVrDohKkqNe6xHVLm6hIORhMyIXm8LdfvqDsdEJJAW2OT7FNl6GwArL8gC8uEn5vwjhICYQkohUR+bW4AWgFhVaQSRp5tcqZDhSoIio/vc1e3ap5efR8juZoaHLbajyHWFLTmqZzMjvFEjHvXRmjC0hJw+KwirgRvd1qb2FeRozP1A3THB7hu4K6qwxmo2fEhhrL7rBg9uCnOO0Trbc4ctudn03Yf1DPu7i/wz6Z0BhPL+vlaoEhKamTs2OkmkGqW+yWO3aN+h+hf8GfrtR3nwYT0s5m9lzNveeDiwdNasbPzzBDg4M4EOwvrymTmL/96tfqv1dbXr95DUBtmLRtw1i8717/+AMfr9RcsP1bmoHOxam6RdmhQeg+7YRxuVhhz0TpxBqSVlCIbq1WJ3iCeDR1D83QGI7V902GPtGd3EzOLN7d/oH9XvalPMLWGvYrdftZH9JHQY3wyKC2dpg9dftz/SM6KYvYhouWLnHEW7J1dfZr1Se96+ieyIoAbNqW8+mQRldzcXwcMJqoz3x3dUlJiROq/37523/NqlbP/Wa1Iy4rMkmbD8/7/ObX/4qjY/VO75c/sZJ90NIq5uMpy1ScFOqOkVBuQstiWx9Yv1Ep7nB+zPRCAa+2Xo9qm+NJYq2R9O5ftlD2U8ut8YZqzjimRWeWZKLlOfZMzgaSpnYt4uTAQbRKL9+9pZISiX/ygt7AZS7qXPf7nNCzHh16tv2a3VgobpMR6+0VvYGwCzwIHvxP85i2Kdinai4Yjo0l3oK6+6nqzV+2XzwEy3qHs1OT2BudshNUTmu5hP0eqSjIjOd9klgNdrQ40LYBpdgF6WbGxQtJFV6mBJ6N11PX1NXmng/Xd8yHKg2hD3XGkuJc7DdMTycYgerI+22MI/VJp245Oj0nlKt3ER8ws6fhyF+P5wz6aiGMXnyFVZgcRJ1sfGTwu9+q+kZemuTxDZsHLuBwrqwkAMeZMP3qGaU8y020Z7l9x2ar+vj94p7/+XdfA+DnB1a7LSVqAriexlwOSKs1Mbo99yLg7dom6U5d36PNirJ+op4GbG5v6BkmtTgZJFGEIcLEtdPiaibzqfrvtm7Yii1JZeWYlkErB8h8PKE4qHe43CSMjob4Aim3Co0oj6iFCpClNqW4hGhlztAzyQPVp7aNSWWC9c8HeEbA63eqBnr53T9+2gGp+8V59YiCM5uOKN1wuFVz6Op1w/2J+r4vL74iHPapRDh34OisU6kXJgcCzQVBklpmh6UnJCIaXuQlZiOLL1oT3d1zs1eb0R///BPFRh1mg2GfJM3YCw2jbDqmPbW43Pnkky5shYeo79ZoPYe8VH9n1AV6Xy2jqKgITI1U5rPfDrA3gqhtLNpyT7JQz/Ln7xb0XJ9vUAjjd4MF5xdq4T+7mNDoGgdEVNhxsUXeLbcbOsd9FO3WFzlDUdTofI2mXpNlTwdTfqtzJAjryfPncKM2rF22Zfx8DpZ6p7soZfNBzYOVs8UObM7Edmk+HVPJ92mmw/T0S3yxDVvdxdRmw/1a1bOi76+wygd4v8HuEFGLEkyvMekkbb/c3DLSRgyn6h2urq7Z8jSiL9pFWEI96IU6SdfQCpLzzO14NlFjNh2c0xU5hdRLzaJD26k+He5/4u7uR/780x/Us20vefX8iE4cUPL8gFWreWk3LkWSo1nqZ0fnX/DgLvfhckGWdOQHlcbt2RVDcUpIoxUUT+9JmWtynWsYohDkGjWapcZlFR/48N09f/sv/73q73RAtZD9otcyPfEpBRJpDzOcicPxc/Vsx6fP+SCp+O3mwM31R0YiO9k2HYXYKunFNZMmIRXqGscW8+AlAE1bE/kd3oUKemI+TUuncvmxOp2hUF7KIoKsYy/0rI9ZxonIpP3Lb/8Vf8z2iG8uVdWxitQcPZ/pJF3JUihHRd0Suga60DCaIMQqRHFrcUPZtJSh6v/y/Zq+r9bezAmYBX0aQa6ajoX7IPlWfHqQ/2X7xUNwqFXopTq9nWbMeKCiodso5rAp8HqqV9u7PSuxAmmTlNAZovfFUqTIOH0AJuQ2oaczOBabkInLvorYXf4DAGf9L3BGKhevGz2u799RC7k4268oRNJru6/omVBKNlfTdYLgaTDAs9GccKQK8NXBpdVMfIEN90wfQ24pWtfRjMcMRCpsFk758GcVAGSVTmtq7ISfchktKfZr9qX6zpfaGW8ScRdfLqjMiJ1QCN5+eM84VN8xOX7FrP8FlViY6J77SOh0vIYyfVreJ3AtxqGHKzSQpNXYix6n7/j0p30MqYtopsuukPF1HaLdPYZsipalUa3VRuDXFq5/Ti02LclhR2W29EXqqXI9PtyozWxzf8v5s4B8p/pUez324iRQtRZndkdfU3935Nr882OwEPpGlpQUlnq2aJGjlwmmjGlyvyPU1RjeNnfkk4S+ENK7zCB01MG0yPZARL5Tz523BcORSyWHjWM5ZKLIv15voEy5ExDNdh9TyOHdXC2J84xcuJnV2MIQukRjf7osPFH8r42CmgZPgocsqzBK4RA2GvvogCvSbCPdZzhXG9T77y6xOnA99Y57ZkfouWQihbe4W2MZ6tl+9+szFukCQ95F2J9R22oDq62MIS0LEXzIqwH+g26ra2Pr0P0Mxy7s+jhC0dh8PKAJQblN1jhrF3us+v/+x3e0mXqWi3DErDfETORm5ibYAtJx/BHbj2s68Z00yh5aUDxSqTbtFbGIJ6SVSbqPiIQQPwxtxpKRGQ9MaqMiFOKv5nRo7dO3KL/U0CXaj/Oc0bNvyB9qctsNI7EEatsaNxxQyt5Tlgk3t2/Uc93+A7YVcTxRm6NXmhTNDnT1TnW9IxWLMcucMpgf00jW5/39NZEE3DfrArs3JhH+nZO1xNuHZ6uwtafX8zYzMbtbhlKzcvoOhaPm0OTc4IgzChnjP99+oEnUHrit9sTViEocRYZWwtQ9IOcFrlnTM9Rzv9u84X6XICVwdu/+wL2vRErCdElj5Eyeq7EKfYdQgF7XS52Lkx6VvNO7w6cZtoW4tIS6S32tnlPLEuaTCa6AgW7uIq4tNS4v5hFd6/Agpnr05YxJJTe/NCYsXQ7ymW4/ZNiDTA6+NIW0kP2jqel5Dql4eTZ1iyGCD02aE5cpltAitKbFbUUL+GccSR7a55rg5/a5fW6f2+f2V9t+WTEmq/BESmrsNZSWnM6uT97W7JYqerm+SQhE8knTDHpdQiJO4yenMyy5NRxNpwQji+FzdTMbvvqSbVOR5+p3d4eKzlCn93Ves0hzUhHNXsQ5uVAkTudTTKtmca+i4S++PMHXn5aKKvc5u0b9XnNw6DSX375SKdD1x3t+uFTX95PZCZVTo4uiB3rJMnkPwOz0jCTJsWYqkvnyQudP93c4oszRDGoWsYrAXvQ99vsbblbqZrxtK27v1I1qlmV4J1+QSpRbpS3DsUo7XLgdUfyR//pEH4ZtjZVWOIIy9V2DTAoz+sQn6xls7tXYDI0BrrjVZ5sl+8P20RE+uVtjr9Xvla3Jdh8QzlX0a3s6utkQC9Kw6K6pHVG6CX0+bLZY4uTg2cGjy/0BnX5ZcDFUdcj8bM7/9l9u/snz61K/8+qKnZD8O90gTaJHZJvp97iW6C+Ll8RUDAQtGV/9iPwZ7qTHXRxz+1Gh51w63GkPXepZyXKDKRp6ebpBNyxiuW0vozWV3KZv71bkec2or/rfc3tcRzIXgk8pEoHULJxBxS7fg7jHN0lGmYsYgtEjjWOOhyq15Gg6m+jBULljMJnSW4gjfBCwOuyoRShiZI6ZhCJxlTRUVcfQV+/Y90dIRp2kuMPsGixJD7daSyK1cT1vef7112A/Dc23KoOrW/X9FDXIemrKFKdIeSheV+mS07FCTvZ7Iwor5MeFGu/jwxX6Q91tucMI+kxFUm04m7CPHLq+IsGPpim3m+/Udzcmg9EZZqHS0bv1B+pCzRNP71EBptwgf/vb/w5XhKD5X/7Xf9KHUZoyPlXzyRiHJJZGKV6aI6djL4a/rdny9cuXzGQM3y1XLKUOktQNudngHwkh3Bzw4+aAVqkBaOM9fqrWjPlhye+evcAbqfl9+foNtyIwoXseXuhS12q80/WGt5fqtnk0HZGVhyffgzc3MRudQV+t/Xk4wm7UHJrMNJYH49F82gwttuIBWnQuxSFGL9VzfjV3uP7T/01Rqvn2q7Mp/kYh77WPH2iTLWu5qZWbf6S4VfvXOHRJCpfOlSxYU/5/NJu+xdVmSyWmyvkTUIvhqYiiG9qj4lLP7MiwieTm35ohO8lA/fl+QW56pJIetvpHxLFao51p0oyn+PKeZl4fbP1RAavOcoxAaoJOD6utSKTO+fJ0TK9V6/D+dsvm7pZOULxB2GchAvwPvoY/137xEMyLgpnw76w6eqznxFud/SFDVGm4mI7RhEeVbLfs7i4JxdLk5ckJm40UpJ0eVujjH6tDsD/qc/N+RSeahYt1zfVa5anjTufk9CUfxK6oWy8YC8RWs0v0pmYo2pblYUNRlU/2oa1S2AlkvIamNThI/XJXdiCDGIQ2ZZtzvVbF8psPf8KdqM8/Hg5YxB8YtuJAEI4YDDV2kptfHe55I3fqLuyTlRWewLifjU948/onABoDDLt6dDpP2oZoqwA0TbPFaJ5WjKmyA56eY4p6g1E5iOITN1HNkdOgS9q701I8kULTyxq9S7g4U2CYZXqNPhIJsaikS/dMRK3dbh2udztcUYGvexWhHLQD+5SkNHkwex6GDr1AfeaoZzHOdUxxqnCtT2sIaymWrz7ckQiP8DgMaSL3MZVj+hUH4Shu3lfsJhn+Si3+n97fcSm8pYuLc/LG4If33wPQ5imuZnH2Qm28aZWAwLu1JCWuMuL64QT18Xz1Dus0wzAsBuL83v7Fwd4Zn6bW3ZFwjoKSLo/ZidN7URqPh0kZt4zmYwxDjUVvcsL9UlLfdk1WVwjtFavvUO9W5Kmaf115oKgFwFScMp9coDuii3i4wrYfRD8BvWXyoF3a9SmFbJjkOUnZMg6froG0RYMjfDC9bTCFZvPs5e84cSb0JmouOEaPYifyekXMcrlmVcmmPBnQE7Bal5VMzYT7H9VBl2o9msLj/Y+i87pNGB+pmufk+CuyeMP1u/8DgOX9H+gLnL0/HHEUWtRSu07SFLN+GhhjeiVfHKl3sa1r4nzP0XP1HaZhUMuWNj8ekhxuuNyoOfzj9z9Qy/yyvCHXVzfMT1U68MWXL3CXS3JPavwfdmQyT0vD5sNiTSg1YMc06IkCUs+r8bqaI0eViZZVzV6UbsY9m9unGRKsf3qNPrUZ94XiNQiwNTVnFz8tubsv0CU408qYVParw27H3fuUC3HGGDox6zRn/aPql23/inMJUNL5gJfuhFjW3tvY4vInxRGthwFBb8K2FamyV99QyCXCsxvGusdOUvH720/3pKGt5slms8IQbu/3H644Ou5wffXcp8c9boTmsU06tnWEZYmcnjngzUr9LC1dKrtgpatnOZ60FG8b+hOhgeg1tqhMpbXO6urA+lrtpxvHZiQB62q75HB9iyNAmWfaEM9XgZQm7ig/1375EGxbXNk0bLOHL0ihXq9lc8ixBC04fD6hEB3AFg+zPjAUXbyk64gKtYCCvk1kFFTXKlrSXYPAgFRTA3dI92xytSuO58fkSUR+ozY/JyswZcCdfEVcldiyo8T7BQPv6byvo2vMBKW0WeskJdwKH8qKO4YiMbWPl5TOjumFGrCofcn4VC3KwrPYlA2JRPUH2+ZDYhEO1YB/+c0FM0ui06zDHY7ZifvydnuLJafHwOwx6wxWO7VJGHYOhprAwcjH6T39spbbA2PdwhAuHGWFJwjAdakTFwae6AduD7d4D1y4ssF07MfieGPVhOJ0Xnkm49OAgfAESZe8Ci2On6vDZN3G3EUqILj9eEtW77AcNd6zL54xd9QmnEdrho0CQAHMBp9y1NqNerZ37y8fndWXdk2a5fhSyzWqAk98/DTXYpMW7G21SeZ1SSR1ke8/mrxfbLi6UcGS25lE25SJ7Dhn0x6BJgdyW1Lo+SP4Z3B0ineqbjiHZYKhezTSj71uEuiC6tx/KsG3FvfuLou5Xd0xnagFnTkuh3t1WAetixMaGDIGWzJs4bme+QFbzcYXEnC935LpEb1S5m2bkcZqzujaC6bDPvqDQHvbUYhgttdYULekEmVrukYrfNbdakt2aHn24ula1CreMRupNXy1veVipG4iuAPWy4jZkXB7G1gs1I1t9OIZvcDCMtU4ffH732MI2i5ZFLz96c/cpmo+YwxwdI+DcN6q/J75Awe4uod6x3ig1ltd1LSNmqcnFwHPv/oVP8mN55CWpNnTAeFg4OJ5qr/X9zvm8yN8uUHnhUVP+uT2+ty+v2J7rQ6QrqgoUzWf6tbE7If4Uqtvkgy93NAXcvdZv32cb01TQLGilDnROT6uI3XlIsMduGQCdDONirFodbqGy+ns6fUcjseEk5BG1MzzoOL1n9Q6XHy4ZL+rGQlqWQnG74YAACAASURBVEsz3ELtwf2zMVg7XkpQe+z7BN/63Moeub57zUvBYpwcBawTg42mgrD+5AhfDlrd6XD9FksyWe8zi1b4lZQ1SVyTFGo9bzefvofba4UcXtz+iCXgwQ9vf8KwDC7k8My2GYngOfKkI45rjl+pOdT3enQix7ktVnz8Yce3L9VzJ/cmH364oy81+LOxSS2+gIskotAtVm9Uf18flgS+ZGSKFjdvGfSl7jgbYYgZwl4ylj/XPtcEP7fP7XP73D63v9r2izfB8y+/oC+w4bRuyOXXO6ehtU02qaDEooCqkOjTHjDtTelE8LiINvTkVuj0OryhzfhBBqg6cDo+BRG9/YebEkdMTtvsirrdcibIntIbsBN0ke00aOzoiRpC6IT0jKdVAeyRxUA4OEW5w+hsPFEfMT2DQvLLZt+FTudBCe345RGDsYh3awWj+QTzSBRjpjP0RmcrdQO9qRgeCWfwjx8IGv1RZqvpUjypJ3lNgdYOcQXSffKsx95QfbC9EMd8WgR8NuoTukNSScEd1lsGQzVmmuYyd0dUIow9+eIlvlAErn56i1dblNficq93nE5VlH5IIryejuOqsTg/HWF5LrVwQY/I0cRS6GDn1KXG13JLHBgGjbhGZ4cMzymZjeR2MPx0SpUim2d2BvtY+Cm+QW6ZGIIInM3GhA+pylbn/eZAiyiTPP8CV+g5u13OYh/TGJLGtAL6zhmt1EEXWYP9XNVI/NDgdNxhC6/LGw9oNfUuZppPV7XsBf1cRAW6pIQeeFh/2WpbPYsV+GhlRPXAmaxrChHQHnk+Py7vmP7NvwFgOH6B9wBR/7iiOeicnKvo+9DUvL9/jy63xijOOQjt4eb6PY0dc/al2HxNBuw2giR0Bry737ISkeooyxEhFAyzousykujpWlR/eEbaSar29Jy7TI1pcr/hf3h+ztkLdRO6fHvL4ESt+2k/JMXieKZSfs9OXpGLpFjctLy/2RP4IrmVtiwWa4KR8DT9HmfnQjtIEt5d/oA3UOPYXnzLuF7LO/TZmjn1VI1FP5hgW09nduLGIpESRv9shjkMiMViLK1durVwW9MOswsoBCF4OpqRbNX3ZWXLPBjgOg8o8ZLNpqC8UzfxM2/CXm44xWpN6evMzlVqLc80pkO1hrBhka357q3KSlhNyVBkxmzTIf+Z8obrznAGc3bNewC+32gcanVryb0zVst7bt9KmaQ0KHqqBrcsBvRPj/jmG6U4dTRyqQOHkUiFuV3NYKBKTR/yjpvlW5pajdW3v/kf6evqBpekG2J9jDUSF5FJyJutul0V+YGms8jEkujPH28/ef6hcGTXBaSCbnY6A9+02C1V9ih0DRxxY4nqCsszMVtJayY5icxfdzrlfr3mHz+ofeG8Dz8sF3gf1ZwqT11C4cTe3G9JNANDULe1ZvBQF/KtPoO+DSJIn3UNI5EWDP2nFZQe2i8egl7os7pX6Zub3YLUkwMxL0n3CZnwRd7urh/TQ6Zm8ee7NWfC4TPjLYGk6oJjhybOiUopUB8airqgkav3h5stdl8AFsWaKtk+KukHlksrMj9tB5PhjFw2LcdoWS0vn+zDKtpSF4oUul1lTMNTvrlQm2RxW5JJYXcZZ+y1A6UQXL/59Ss0IbO+/vHvWawWfPVKHQLWcMTN6u/JZOIc93SSnXr5zXXGrO5RiJbqi4sTmgfH6jSjiEpcGcfKKCnFMqRp91Q/ox066On03ZYsl9x/o9Fr1IvVdY0gycnkoFnerB+V3e9WO456zWPqzKks2muVi8cyWRUldiwiBw4kyy22WPaMjgKc4YNm4ZDAB9NWu+3i3T21pEbzuCYbaNTyHTdvfvrk+cvmwfEiIBBH+sGxR3HIcEU27OLsBaYcUFGU8WL0go2kYooy4+yVImDbqz3nvT6N1IxeXrzANPuPB22xv+LsmRrfgZvTt0tKXeDX4z53Mp87Q0dvdPL4QaZPp5YDsZl8CozJEuEl9nQ83WG3Ut+ndxaeqQKAQnOpdIfXV2pT/NvRF4RS7zZOfQ5XB2qx/NJ7Aee/+hWxgKbeLtecPFPjHecx7abgb/7979VzezW6CErcLRM608MQx2/DMEgkdgo9l8lgSFP/jIXPPuMmURvhvO8ykVTw77484avzc45FczXZjpgIJ1QLZpgMKWQDe7NY8eJYpRyPzod8nb3if/8//x/1+cmBV89fYAotYX27J3/xQo23ZpM0Lde3ap2++M1vMcQNoiQmThoIxGbJ2JHvnj7I06JmuVaHWdeDtuhoA3VA+57DSsbeMC1C30eTOuPVesfAVYdFuT2QLTbYktZ8cTHEmj7n3aU6eMqsppPS9uLylsAJOJqp8ff7A3oC4LF7sE8X9IQ3GTo2fSRoP0BTPS3gsbjb0Ds9w3BVQLSIluwF3DM7fsXIO6NJ1J65eHvN7FTpqMbvlhh2iCXvrSlcorKhLdRc8IFOU4FMf3KMcRMznKp39eXpBbmIRrTJnCLRaBzVj6TrU7lCXdpdMQmPaEW4Ydj7NLV+dPZC/aMxOUjZx7RP8UcTPBF1GI4G7Jcqpd61FrXnkUlgcx+vWYvzhjc6ZX/Yc5BU+OjlGcOvXxAt1BnxttrwrFTzcpFVpNkaSw7BXlkTStDRDwLCnkkoDvWzIKSR/dT2fvGY+5wO/dw+t8/tc/vc/nrbLx6RhqnTdqKIT42dqdM63mwhSxiLYnhjWsyOVTTiGD76LiS/F9+6Ajq5NdiOQ6nrNIH6O2dyzPttSbRVt5PVIeb4Ic3nelxd/UApcPfj/pi9AFp8v2Vbgy/I0bosSNKfQVaaNZLJ4mg+wm4LNFE50J2MnqjQxKnGXdoyO1FRR+gbtKI0YHVDDsWKlaghzHoHno0d0lbdANq0oBDXZq+ErjWxxJx2ub3l9EKlUetWKTmYkibIDiWBkFS7oiGNnnaWv/jiJU3a0J+pZ9tWJfk+l2fxCXKLvBagShdjitfe9HRGl+W0nfq7fb57NDueD4bE5FyKuLluuXhhn1yi7KnFI7F959kc9iX5rbqx13FKtBXftNGA30yPSNeKzF0ln6L6fFHG8J2KVsjiVmawLiosUYTXHY+ZiPH6ocHtfYMraRC/MflipOZXlD1nlqa4vrqp+H2f7WaDJnnsnjbj5UR9jlauqfNLbEdcqvsTPDGLNTSo0Ai3cqPtbPZCwPfdJygSImZdLNc06QGzFuft9Z6iUeviV19NCWcTtpIG+8Obf+SbY0XHOfIHxLQg/dCLiLAb4jpCGaks5l+oTMPRqUsw7+hEwq7TOjxBwSX3CX5vQL4WJ4W0oZJgfewOCHsjWp5OJd7dXdEK0XowhS+OVDrs9786YW76mI4aw4k/4YPc2O7u31DZR0xnYkzdN3l3kHJCnVI3JVPp0839PX5b0ooU3q+ejzh+8FbcL3CdmJczdRs7nY9YC7q6rEySNsLNZU5ZkCZPp7DKpqIUyS2nqjCM+lE15FCv8QUZHYynRMkOTbJQup5QCwE9LneU5eHxdn/wK+zQZywo0w8fDtSJuOJYO+LDnELoO2W0B1/N9RO/h15kjzQfiopKlH3KrkOznkbp9nsh8yBEE2Ty9j6mTWVPCHxqY8hBxvD1xxR7r26o/+Hf/k8M+kO8QATb3ZBx5JKOZa9dr6nEOy+odb4ezkD2gmW2Ra/V2g9Gz3EmA96LSfhGyxiJwMPpeYjvBSzFD7Z5gmiePUgUahqWyALmekdTVCQ9dTM7RFuu79QcMp0RRmZx06qfvU0LVqV6T93qhqDfQxfJxHWyZpWXjzSYTvf5IMAjhg69JnoUzuj3jjjtq9/r2SbjXsBIMpKaBpEgY8380/X8l+0XD8HD3RpXFr+hORhyIFlay8nJnPGxSitumwa3Ly/06hramkZ+t3BaRkM1wHsvYDQbs5ILaKKbFMMB5zOVxx7oOlGrvk8vDMbDCa8FSXpPTStKL4e8YWw4GKJ76Y8HeNtPpa4ACB0MWU+rxYKh6T86Dd+s1hw/VymJILS4qA22G5XWXN10zAXdFQynnIYOmaH68dNPl2R5Q3+s0jCjXp9+/GBWmxL2fUqRG+oZHvUD3LryOD99TiLmngdzwVRqQrvDOw6iq/nPm6n5lLlHsZf+EuLq6uXrKTR2TharBd4/mmIJn7M2dbJGoxEIfxbYBGOpCQYWbzd7Sk8tmp47gP4QoSCx1XQqkbwy7BHToUYgMkSlvqTMpR7rT6nqIY0oxofhHLj+J89vi5WTVoAWygYWODglaEIXWR32DKS2tN/dkTUtutRuw56Bb6sFrDsW30xDDAnASBMmnUGsq9THGJ2vxUrofrkn1hsC0csM/ABDDJ5bp6bUOnREgulQMxbovWF+ugFrku71NQOjNdgL8q0rNEJBGM8uxrSuSS0WNaZvUooG5vfv3nGrbbGOpf+0mG5Nby7Go41DORKj4F6L59jcLlWq6eJsRirI1W1ZsogP7NfCYzMHeJKmzvYdxbFH2z2d4LEdh/4DhNzt00ZqzuYp6EcWncjkVdWK6Vz9XlplrKI1wZfqgFjsE/a5UlI6Pz2iM2sskSrrhyZGGpGIZVFj7ylDsfgK5oQXZzgSHO6iNVGivm9omGSYmA+p6SxiEz3dh9bUQBRbXMugbXJSCU71ictoIMhUQyMtIkyZ0KGRocmBbI96uEVIe1CHrjYNyboCZE0NzoaMQ/VePiy/Y3js4UuAlnc1schF3sUpyzSj6VSfDK2hEBlErdHpPP/JPlhNRpysGUudNcPho1BSjhuNk/CMVNLfr16+ZCxyfmHPwHUCnn+reJn15QZLS3ku1Jbr5T1XH9S7qbSGYd+me3BXv15y9Ldqn11kJpo7ILxQz7orIvBlHo5cjC7jcCVSZfmnyEpn+FBXn1NWaszq2GUS+hTCw91mO67u1fztuQt64ZRI+FA+DkdDtQ5jv6TtcnKhuMWdSejXZLK/eH37UfYy2rdousNEnG5enBxzKkGVn22ZBzMsQQonu4yeGDpX+f+PmuB2m6HxQD70H0VPa7uHZfQopL4T5xXRQR0e9a4i2XbUYu1jVRrtiZoke90kznIyuQm5loGhmzjCl4m0Pc1BxLRPZuRJn0nyYGfUYgowRtcckszAlUg5Tzu6n4l+db1ksxONxFWKOwhIJZJxgjGpkPx3ecw6T1jH4ilXXTATWPhkAI0z4FJCoNubS4qq4OQrOUA7g57k18vQJdYaru5VFPSyH3J8oiJ8Y2STFPqjD+LdYk3fV5+5jbak6dN1kDxucD2HVnzugomNIfWzstWxDBdNJLeoHDypQ13evaGIKkoh2Xf9Hkux5Mmjkq3ecDRTC8jSPLZxCobaKE4GfdoHHcRNgaNpPJARK81HLBHp0PjuzY+cjdQ45k/Quxoh63sDk1YATIarc3I8JRA+lFmkj/U5s9Npqw0D1LMEjsNAbu91rTOaufSFN1dbJnstxRaR4eeBQ+CL7uV1Sl2kaKKurbU5xUpF8U5gMZuNESNuSjp2kdT56k+FF3xNLZVRb8h9mj0KEJhOj8lMMhumTlmbmCJi7HjNo7N6lB/QXItKYPEuGprZoGfCN4wL7sWDs016EKf8jaU2P8sNubxXtcOshmRX46Ei3kFwQoeITazXLN/doz/B1QT4+sU5lhyYZt0wnSnAhWaHJFg4QrrfGxuijZqj0TJifDZ/BLpp6YFtoja3ufeSq2XBhxv13IdqyR++e00iN5fVTUdU/mv17+6KTE8xhULQFBntQb2n/vML9CLlVt5/cshIn5pIQGWbdA88SKsjaavHeuUkGNN2AjSKCpqooZNMVmHZaEKktnQTd34KMzWGW22LnlWM+gIUsTx0CbC7dErru4+WbhQN2EKR0Ex64ZBE9qx0uyIUGlPVang/I5vWegal1fFRaD5xHlMLsOtsPuLUDLCEb7jvXNZCQG9e3/Dtb21sAYld79fk+5ibvepjh85lpN5FWm55NZ2xE63Wy/iKfqQOnjfv37HKLCr5zldfXxAIWf0mWtDpNabUS4MnwHrxTqgPaUQlt/nQMbBsC13s9qqo5auvXsl4Jwxmfb5wHmy0GhoJslq7j22bpBLzRIeCOi1YCdHd0k3OhDqWjzqa9AWvXv0GANfxGVQiAGDFnIUzdFmnd04KrlrHy/XTtdmH9rkm+Ll9bp/b5/a5/dW2X7wJ7ksXR6Ke4WjGQIw2t2lNWTq4clPymhIfFbmkbUnrWuzlRPYdmyxSp3W6LxkOx8yETNsYOrerFWGpItI4y3DkRmMbGprecRoG8p0p60pFIJPpOWZXkB/UzSmoPPpSW/rnzat8UpFts5wRlTPk3VqlM8qow20ebmIrdlRMz1R02NDx9r3Ux/Sc1eI1OzHJHMQlwy++5KWoiLQ3a/oD1Ye88ai0Gn2lPvfusORcIM1pVvL2p/9GLUiwNL8iFyTdyxcTnN4ZcPdJH5qqpXGhFPHnvNWohMrg2i6abZKJuHhziDEE6WX3+txdH3BOJUVgpHSuiuwqfEauTVmJIwAVk4sTahG0zrMcV2qCdbKFtqPeiLFqnjAeizhAXUGZEYjB8Lb5NIJPG1HB90wcR0XKveEQo2xIJVVcHNaE4t+Sty2HTseQyL3M1hw69X1Dd0S33xOM1OcYvk0ZaVSdmm9G1qGLWEBR1lSViyE3o1Ucsxcx716uZAEfqD2h7ZMIZN5wP10WptRuvUGPdrfHcdRz2475qI5k1T5+MOBipFI0ljamLeSdRTt0q+awU+jMrDvgOQ6mQPExLGqxpTn66kvS3YZc0nOrpKQnda8T+hRugi5O5OdHp2zFtBitoU1r4uL+k+cHyPId3kTqeaVLIQjjaB2RRyl9qadpmU8lsn9daZGXCbvXShb9aBw+2mXtnmscPfsd1pFaM//tvy75brtBE8T1ne7xpaR7R47NpK3ZSNngkCaUklI+zGfcrG64EbS17k6INk/Xx1u3T+GrPaFyHRzbJhxIXVn3MRv1LppVxFQzmQgSOzfAkbXuTCzWd9fkQp7XrZauMCklpX61SxhO1B41evEFk7NzYsFDWJrOxUR9n2lb9DqXmQgwvKtTTEH/ekGfxc+QtN+9+w7jyCB89kL9rt/w7+b/AYBfX8xZ/PkNuaCd8zKjETm3wtXZ7FZcXqpyQzB8RlruuXxAlY/AlRSsryXMz+dc//E/AnBftGjvFUo+Wq3BGXEj7hdn2QhHUpWZZmD1fHpj9f3V5YdPnl+XtdbSciai69YwZB9FdEJ5aogY9dXPvOEYa9RDEzUb39QJvlVjZgyO6Qc+ltjkLdfv+Om/vWMmyNln8xnHkuKm6IgMk/lY3TDrvCV7oH8ZffqjgFxoPwOnIJuo9eT9jEXdQ/vFQzDwDc7OVd76bNpnX8qBsfHJUjBjNYkDvcKR2ormZtR+SyaK/K7Z4YpGnVMUGEnNQTT1wpMR4+mEqlCTpckqnIFaiHeXdzRxSiIADDqHViY4uk7Yc9mK2oYXjjH9p53lHa3l7IXYhIx9/vw6pRS+XZqWfCGOAZ3l0HOHnD5TtQ+9qfjpByUzVA5DQsNnIFw8rB5O2aBHaiM8Gowec+HOvM9hueRO4MEnw/Ejn1Bze9Q9j4HwbMwwoOmpPrjnE8rNE158wOH+irT0afUHHUqTVtTTx9NjOsMgr9SLLjqNai2boNkRtyUDcemeTHwsOVjCcExVJCxF89RyBriuwUHACY1hk4g7wuawgqQmrtRzj9wRtVAUVsuPDOuCZKVSDuX+UzuocK4m8Wa9wpQpZ7Uatt5wEIf0XZ3gJaLqb7voWUcmi7/0arYrUb6w1vj9EfdSLxsGAWVuEmVq/D3PoBZwgmH1OAuPcSWNvO/2BAPxuTQdbrcxrtR13SJhIPw3P/y0kN5JuujuUJBkFo6kFaumYSQ1R8t3WW43NA+6ro2OIU4BBQvsKkewTVhFxUYraUTX1LYsjo7UszihB1VALe7b2zzDFeBXVbcE4YA2FZ7m5pqiFcBSpzEdTcl+xlZsftzjQhy8x03LD2/VoVOtDoSzED15ODx1bhdqHhwfv8DuDbmJ1O8OWpNvv1Vp2uPTI96mG97eqWdbxRnPnr3AfKbm2NEkpBQwClpH39IZuQ+edqesxJOoSvYYtsHZuap1mf6Iy92bJ/vgmhp6q8alrnTaoqAR6pRfNbg99ZmOmeA5JifiwZnEKaWo7ujxgdOxz7IQnqLusK0a8gfLBcd55BZnXU6apnRygPaMjpVIBBpmj8V+8yiR6JgmnZQQ7GCIFj8NjLFsm5u3a8YPVIcmR/fUO7y5sYi7Fm8myk5ZRiWH9Ww0pLQK3l79CYCg9y2l3QcJxuejOR/eqWDl1ek3PPvNl2zEgeH9JmE+V8/Z703YGg1+qb4/GAXsInWYrHYr+mmP85GAT5xP+2CId+zQcxlNVcD3L/7F16yiPVGixjTa6qwloB6cnfPTh/es9u/VZx5PSeTwGll97MmYBxbDr1/OmWo9Vks1xn55YCLKUV6/j2kPsEWVZrWPcKXmbJU2ZWORPFxq6hZbF57tfPrke3hon9Ohn9vn9rl9bp/bX237ZcWY4z79QKUzujzjaKiiqmbmkCw3fLxUN5feqKUTdKBnOOxKDd1UN8HWK3AFoVSj0TQatSiWl4lGa+VEUvSvqobFXt0ai7wkT3bsDyqStHvjR2Kk3ppouo4v8NzW0mkOTyvGzM6fMx+q6LfZ2dzGEVc34kdltCwPohoxnWHaBgNBQI6dmuFv/qX6fLNjceeiW1KgLnOMqkNq7ry9uyOKVUTy8ouXbDdb7gWMo5kwEgFco67p9X3mAzUe769L4kJUO5IC234aytuaGpvVPdOJKe/lDMMVEfLxEZsswRGdvKRKaUXjNdMLjv7mOe5Q9ak/MakkHUXZ4log2rTkeY1hto83HK8XsJa0l277JIcYxPT3ZPQCrVN/uMhrOqdjL3Dz/5e9N/e1LU3TvH5rnvfa05nuHBlDZWV1ZdGqBiG10YAQarXAQRgYJYSHgZAQEhISjRAYCAcsMArh0P8DwkJCOEgIJLqrKyszI+LGjXvvmfa81zwvjO/dpyringwHi87zWXHjnLP3Wt/wfu/wvM9jPsL00Uv6xPJDdFtAUOWWssjZifbf3PVIM5WeQfdpsj2jJYCWtKORz99bOW7ko9lqL7zfHKlak0pEOoupw6I4qS+4ePEZrah29HnFIGCqtMlY3xfYEmF5tgmjmv+++TR9crZ8o75/d2Boc85D9W/H6ZhJJJDtDwx9x/Gg3uNu845aounY0nAsn8uJWpu+KPAcn3tJRzdNyv6g0lxtUzIxHJ6fGpW7jOTEn3i3x9Yu6AVgVBQHQkmVRl5IXmR4wpDz4/HmF1+S7NWzubZNLBH6WIx4boQubSdeuORDrSKxdtEzhimZqdb7/779lpeG7LWPNd9tG76X1OnH33zLsK8wpQXK+uVXRL1KR27vNvQzD3rJRExesJDUuNc3bN/e0brKhmyPFcPwOHuSMZj00hOSlz1nizMaUZrR6iOb5MQPOlCbFuujiMzeVw98lEE04UILsSR7cpMciQKHywtpM9Ih3anI91BlZIn70Fg/mTrc3Qm4yZzhuBHOSdR38Rm3AgjsSx6aun889K7hcNhQfa328Msvp3z3Vyrr9KvuV8xjm19cqZTf5HJCnij7+E9/83/gz+fsxEYa1a/5O3/vX+WLr36p1rGv2RQqY1L86lu+u/mGvegbtoZNfQL7hBrG6BCKMsb3H3egqTV8bo7o1sB2ozIBVb365PnfvVegv/lcI0rUnH64vaFsKuR4cbm44FJQ2tZ0RlnkIJ0GettjScTmRzo+Ja2AbepywDBNMmnC15qKUTIrTZ9gagNGpv4dZEds4QnWRp9k39BIKt40DGxBgms8vpdO46eV5ZuBvUiTGIbLUmi0AkasYML7Tj3o6t2Kc0l/aq5NeZdRZ5JTjkbMuTIui+gMx4gRAhVcL8QYOmxBpaVmTyYP3o0pRgsTyb8PlYEmBLB1XpONAbujWPC+whoevwS1VmezVoZ2orv88eefUzXK2DRDgKGp5x6ZMxYJt2/VAlszHy9UKYGqtzGsjKJTaYfL2SXGCOlBff/X74/M5fK8/2bL4XZNvxdCaz3jN+9UXj3wlyydlt1KbWKz8ZE1Y7XKqIvHoby64TI7j3CE/Hr5/IJWO9F4DWi2jacJg0yqsRKSZsMcceczxl49y/bYYZkqfeGMJlVW4dgiDpuPmJEFcimvtzcchRLpLLzETrdUon7ddj37vUr32gPUlUZ6YsWxP0UmWkL2PQnO2EtK+frmQN+laJK6i+YWnRCNV+2eyumZRsooOxqUnOD7BfVoMBFm+Glgsr/LyU6k4W5MKQrpvWPR5gVjK0xDffugV15WEAQ+raBOh3EEEesk/zSdqEmNRm8gtmYMlSBXfYdAUmB+5BGP0ErfWG4eWb1XRqm2XJYvLeKZ2m+HPGQSv8By1aWU5UcK0a0Z9CmFO1IKbHwauXhI6qyFw7HCkvrhcrqkr6V1qB6xrZHfpSHaZXdkgkBdLr/g6kqt/X6VoQcWeSfzX+W8eaUcx9WwhzRhEPTt4o3L5//iFzKHDW9mHo14Usm1x+H+SLZRF0iXvqTTRQ3AdNC9AFNYVCZzi1Kg60515Hx+hWaoi/7uu3sS/XFEnzOJH/aza8aYmksrWIFw5uEHas+4Q4+p6YSSOj1kOd99r2pizx2DN29e4GrKLmnHDGcosQXXoLs+o60uyKZySPYZiSiDXCy/IBZS8CIdMXSH8mSHApehk33ojNjm4yWa/P5b4s8/R1qiiR2LtS6UYtff8WL2J4y6XPTpjrRV59mNbfKxwPXUHrpcerjGnmWsnvVwf6DcKZtcaQ1a6LA6iRi/WRIvlW1dmjG3+4JsUHN8fZOgj1IGuZyiGxk7uQT3j9Q1N0d1PuLZ9OE8629rvChmOJG+tw2alIgiN+Ti6pwwUhvTsg3KQO09yw+ZTebsBFFdHAvKAFi0CAAAIABJREFUbUogUkumYZJLK0uTVIRmTD+o/UUHmtT7XO+KcL6glf1lVT2J1EqX7v8HZflsnXBaRjd+QSaC1W1vckiPDxIXWWOQHKTHaThS3BeMpjqYH5OCfK1eIl7kfPbMIBRIOceGtBo4l0KJ0fdkB7Vo94cUzfSIhLF+l+xJd8pgnc0sNN/BlsfP847J404XZuVQ5ervjGdTYit64JJrMNEN9Sx5OjK3Q/RE5Jl8E0tkZ8a2wWZkLlQ/eusQz0IM4c8cEo1eVCSyJMX2zplfqN998zoEU3lcngOxObLdqgjL6gakFk83tvj244sVBTHjdE4sjd7hdM6tcEluN2vW1UAvkdFgGQxyIZnDSLpP0MQjXb1f4UlTbDsPabMcU7y1vO1oPt4xFQO+2+9xTDEoiwmeE7GTvp/dfkMv2mCTKCAcWzLZqMYjBjgXlfK62XG3Vkb4/YfvmC0CJtJrkWs685OskRYR0ZLIxXMeRDxzlOHZt3s6w2Ur7SQaPr02cPGZgl87hk4jIAa9AzfUuBdJpn26JZSLNThb0vYufa4+pwEacWMP+afcofaptaNrOa4Kylw5hxPjJYWcA7tvsX2fUaoM8+ic+lKIGcwB3QjYCFw7KVta7UgguoSZrmOI4SvbhrouuR2lVh666Cdhd2uCY7WM0sWh6SMb6bfr8p7S0gl/R5P23fU36BLFGWNDJ86Bu5xRaDaHO7WGRdXy889VlPjMD9ncf+Rck7O3GNhvVAvE7WZNWraMujpDr//4DS/PlyQSfQ1Owrdr4avcdpwvJlzKea7blonIeL37uMKOppyJI/398YBWP16pMbscT7JTbdLy/ertQ7N+Ww6EhkD2Z0toNXzpr7yKJ+QSadd1w/t31w+AE0alqbj6Tl2SjR/SdGojH9MWzSrxTzSBTcNECDZ0w6Ise3RNXcKDVlOe2mN6cPXHzeurL8+Zv5xiST1rfbhjIfzJTl9j9LDdquivLjvyRvAGzy744uKcbidcrbdbDsd3fPudetZkdeQgwKuzl28wIh9XKAMHa8QRxZbN9YqmOaIVak+/vohIJdNyv8qo9ZarQD3PxaTnVz96/oNgIfLKxxuEIq9rWfg20+Vcvq9GEiQ44QSGCZZkgTTTx/ddmfo5aCGdqAe9/XZNlaRMLGWnqqJiEMWJwPQ4rhL2J2k+rcOQz7w47xhcjb3Yb9/1KY7qbP/F3Q3/+qMrocZTTfBpPI2n8TSexu/t+MlI8Gw5IU/UrZ/lKfcb5XEdjgeK5MggNDy252CIIKk5DgTTEFtqHYurOY3c5EkF91mKLpDmuNYwMp11f6rLhJyLwsSgm/SVTrFTXmWeVjgSQjtRwOU0xJAmYX2sMX9HFHX+4itOZTBdd7hpR3T9BA3PKJITCXeAPrNZCoNMYBus3qt8eF2VDHbHkAvFWl1iZAZtK8z+rc8MUUDQTNzFK1xJ3X7//QF3UJ7zch6hzz3MXs1jUdd4e/X9UdUQxY+z3rjBkrTzOJTquVff3HCUJtFmGDnWGmGsQoVgFvFcImvLdNklBY1ErJo5xZC6apG3WLZLI6zrtmdh5jm6NPteLF+je2p9+7QiPdbYMm/uJKAR1ubZJCB2TYZBTfLE/HRL7U5kyNqIJfXBmT3B7kxOnHbmZEYndafebKlbi1ZqCNf5QGgqr93zY/KkphM0cuCCbhsPef9x6EFIFYqm5OOx5Cj1h8aOsOQdukNL1ffI1NBpFqPUQx3707TC5kZqcoeMfVGhCaNJ3gZ0hXoHZxwIz+0HirNtfUcoxAVlU5PVEHgihtvkhJP4IRrbbfeYjtrfvpUxny1ZhMJScsxOpTRqfaC3XarT/xghkprvYcjp85qR31Efn16QSISzTgcmwsThBhG2P+HbDyrNtNrcsngtdH7Hgd5saVDvX9QG23u1Fsduw66AXqKv6eSKcdQxhVTjvquYCmWevQy4z0s6ie6L7YbzF1IPDzRKTXtgBZoFDtFLdZ7+1x+9Q1nk1L6kx1oTyxjRpAZa9RntQUXoV/GC51eXDEJ/5sUWqxNln26zTXPub1RmYxL4YHvYogwy1iOlNKTblsvf+uM/AlRKstd1br99C0BnTAnmF9hypqLYoRIEqmV7WP7jNf54uqTTNL6/UXYhmF5gWqKzaM55v91iibamMQ7ci6qJn2nYs5GZsLtYk5xeN7l/q1Lu2ljjCzvTx48fuU92LF8pezazOywh4M+SFA0eMg+RYVLI+4ZGwCz0mS3U/L99/6kwQbJXn5McLCaSls/zNTf7PZ8NbwAwA51RzsiyHRmwH1q82maLKXMTXQ7cX7/j3W9/rT4nO9KMJoNE3r5ucuKuyA4p+SrBE7Yox3IgVVH4/e6GoYQik8wLJjcrtWf3m0/bPP7m+MlL0Bp1lpKyyPORTloSdtuUKt1TtZL/Hc0Hui2rgcAyyKRG99xZYgRSH+xN+tFk971As9OOBpNO2E/6uMWcq0WrtwV1NeAMasIv3IFaBFmtcWBoGgwBYQRjyWT2OBggns9wAwGivN+xy1OYqt8Na+jkHVwtQCsdklt1oHOv5FYOSb6+oxoaolgZtIvpgqHqON6rXObz6Qtm0ptXai4wMpTqne+v7/nyM9VDGIYRdVYQ6Mq4LVyL2VQtdmAWGManaTgAx51TD7A/nlj2TQq5BDrDQNMs5qL4cGwr9onULy4i2lFnKynI+WyKK0ueZgmj1jM9V39n6BrdONIOfy3kepIv2mYHxrTHl9aOMt9RCLOOoXV4ZsBUUszT4NOaYCpMO0NV4QgVmobB8ZBTSr+jprfkpzSu3VH3BuutpCq1gqWANuLZhNX9PaM82+XLJbbr0QjAxbRNbDk0eVOgDTa2GJi+adml0kNYFDiB/5AL0ZuBQVKTpv9pr2MtnKhap3EZzRmkh28kJq3VZ2rmQF+XNNKr1O9TaqnzZSWYoYlnSS0vnNLlFfmtOgvPJwuOJyWMdYrjTh8uqYM7YEj/ZWDY5EX7UC8c2hFEMX3iBtiuzdA9XhuI5q/QezUXSZaylTTxzARjBu6Zeg99m7O/Vw6gbXeYZocp9G95lZAKl+NotbSWRlqpvT8xSga/p5dU17BLGES6qdNTvrtryWUPTRYv6KTlp9aBYSQWOL4euujh44VNfxy4kDTbaJnM7Es02Xu2Z9EPp3puT54XBNJPOZtbLKX9KjskYGnML9R5tgwNShtHqB53WYG0rHJ2vsS35hwFfKOPHbbMb9OXjEaPE0kvYpHjiYMfeA66/fg7lMcEOzT46tXnai5mM65FgqgYU4ZIIxVVBQ+dS6ndtrQYXcfPf65ssv+3n1GlJR+/lTpgW+IHau/drFKm5xafCbtOYEIn7QuEU87tGTs5M7tii3MqS9Q7Rs3FFDUZx/3UMT9fqOfpethJTf+42TNYNm4kguV2hy7rsluX6HZMJeomt8ccT9o6gmuL2w/XHEV43TU7usF+EP+emR65sN7YmYbW6HSVlGzSmkBASf0+o2/W5EflkKRpxVbSttVPE8Y8pUOfxtN4Gk/jafz+jp+MBNuieuDQK48j2aA8wPY4UlUmlbADJNkI0tAZ6i2uY7EQr9qqRp69VqCFfhzp24ZO0IJlMTBxLfxz5YWUg07Xiwjmck62rmjLk0CnSSnRT5oUuLaJI1i/qWthnfoVfjTuVxuqo3Lr7rclq23JZKGizWgeM0iKwClGtK4nWytPJmt3aCI4G83OuIwDeiELuAgj8uLIIKS681DDFWYdc7RpqoIrQSSV8RJXCHaH/cBkEuHNZG6MkVko77Q/UiafNpqrD8mpy4Y0UykZL5gSx8obK4YRrS3JtiJiTIkp6Zkm6bAqjYnwhRptQS1gAIOKxrTpC+UmBZ7FUe8Q0CnJIaOV9T0mCcn7Fda5SpGYeovRnPgDTY5aSiSp6br7dEuN0oRuhgGdoLe80MYOwJSIrh9HbElbjmOH7ui4jnDFji668MvuD1uKrqVu1Ly11ybBVLV0AHg95JISc4yepkqZSkuKhkZVqXdyIoswMtisJX3SdeiOepax+dSDdyU1abkm7dhiCwemP/HgxAeqj2hNT79TkXdzn7ITJns/mlM3CXeD8vBfLhek+5STFrRj28TCHvQxuWX77ga3lyb8iYEnrDRDmqBXGnPZX01bEAigxLAttKqn+R2+bTaavJfnuf/wgbm0VoxjhE3Cq1Oj+TOfyFTr2xYlx26NL+wfefIRXyLl0ZvRdia6IXy/yxjTMFlJ6nB5NeFC0mr/5MP3XF9/ANELdaZn1BJB5/0OeznjXsia399uWEp54cfjPHCZSWany1sm/ghCADFkBwIhvnZ8lyo7MhQnhKLJVEAc6/sVhuMzFSBWcbhnKDoG0dsz245Q2jcmQLFJ8IS/sm9LPE8AY76D5c4xWgHK6A5Fpc6BNR6pssfPsxnouI7DxFVnce5pjMJIlMcaS3eK8Vy1QDWbFZZx0hp8Qe24jALYa7ICWo1C0LHa6PL8xJ4TLNDdkVI4OC+uXnP0BNhXWNS2gys6mPaxpEB9RjPo7Pc53lRFjZ796Xk+cdMWuv3QJtYaPmPf8uFGrf0i9ghlviu9Y3bm0Uv2oko7pIuLw+HA/d0BTyL21rLZ1w2mpKYHs8YTcJMW9Ax9TyDPTWggIF4qz6RqdAohcOk7C1ea6vXxcSLzh/X4qR/mxxRDmDLKrqaTvpooGBhGnWIjLCX3O07g/sEcGPKRQuDOQxCiB+qNq+OWeehjCrXPkPZkVU5vq8MwWZ4/iDS6hsvQZeylxy7NUjpXbfZxHGiy9sEw5X2PPTy+4e4/7ghkQ185LuHcYRKrdxrbnvOlerawD3j3qxsGqS3NHA1bhEWdOMBgZHet0ge31wfywwZHUn/75IgrzCu+a5EcB3qhRns1CfEkzen2OosooOnUQhVNSi2q85puEp4Uq380Oj2jJccWxyIwWyK5oEczpGg0bu5V3nu0ekaprRwsH8/0KYVerktyDKmXhbGDPvaUe2XQ/NbHLluSrapTlHVHJsKxN9++Qyt7ElcZsPO5i26dpLIG9p2GgLsom0+31FwURuqmpBex5Th6ienoIPhjK9DRxAh23UhCzXSqDm1k+1hiJI6pg1u0D90MoxXge1NiSfv05ajUToGRHq0o0ER6XbNG5sIG49saThSjSe9nfhwxT+nQR1QkskwovWyTXmsITukir8WQloz5xOWYZphCyh67NpXs0fPzOU1fEssF0tYFy5nPXpyw1XaLLgwiYThh6AfyByYUi0DknaqmoyhzohMKr24eVFG00aMxBmzv8bR6po9YrhB/WylbUaJoKo33H44sIpX6mi8uaaQlokrXlE1NPSqDXVYFr18oyqvRWzIUFXciKH3z8S3xJGD5XPUTv764ZByU4VumAfEf/wGxJcjw3njoQdPHmuMmpRM4vzM1cQTF+uNxf8ge+hs9syPJ1jhySTTFjkJg8dNax8amPgqTUdvRyaWrNxZaO3BIpJZWd1RpzZ2kC6PZGZbk1M2hpElXLCL1nWYUIjzrJIaFo5t04hw3Q07bSWDQVBju4zZJcz00p+NaaON2ncEotXJvMWcZX2JIy5X37DV6LQ5XGDG/uABh4fn4zW8xLJ0vf/l3AQjnPr/+i98AYB1LbE9jLYTas6al3QuqEpPtekMpxbZjvaaXvt+uGSl9l/e3ai6219998vyxqAJV2QZHHKlgMqXpR3RL2JqGkVFsqe2G9JqiygNI0h3HQu1t2za5nJ3hiwM66BrnpskkVmtqVD1I20WRFaTZBsNQTu7Mu2SU/k2jG/HwiENhUmpHdMGlVMfHZfZO4ycvQdv02WTqYesyYyn51yiKGOuCzlaLcfbZnFFoq4y+oUqzBy7L2DWwJSnbDz1mPzIUYnhDG9N2iMWTDR0dX7gtB7eitQIuRKbmwxpMT5qgZyGWW2MJ313fjZj+78js1j66RJ6O3RHFU1yp342HnFBkQZpy5HJpUgn8uWs6GokapmHEZnPkXhpPm6zk42rLXIq7lj0wFx2tyHE55AdGOey94WLLZmhbnWw9YM7FA5x5mGKvNNtm8ebZo6/w5pVH/nZFGKpaxPksZiZae4NRUw06gdRsDmVHKYfEcnQsx2Yu4UaWNngi3XQ2DbHsgV5ovRxazMAC6Tess+ZBrf7ZuMA1TC4ulCFY+AZ6ow7p9c1HqmwkkFaL2eTT2uyZyKbYuFQSpbR9S9+B6QhYwYRTKcsaKoxKx5G/a0btQRduNl3Qe8MDoGUWnGH7BtI6xnZMcIWjsGk7HEOjl0NEM3BqzDxmHaHpMpG+sq6vsE8e7iOK4LqljPlkEWIEPpH0gji2wSBqF+NoEE0iRmltaEOTiSiIaJZFtiswxDvO+pZx7KjkCOq2Ta8LvN/2iWKPrRj0vLIYBSbf1zUpPFDKmY7LRup3lDW+b5PWj1+CRbnDRV2Yn3+2pKvUdzd1yfE+wZR52h2ORLKe8bMLwihgkLO/v32LJpfOOGq0nY0nTq3Zjdi1xldfqszPH/7sS27uvgbgq/mCYXTwBJh0t845Cqghcj3avn6gBZwvl0zix2v8VjSnEKWIpmyJ9Q7LVTbiWHX0qZqXwNGoy4xemuebbiAXY1hUDiYWnZA/1GnNb75dP4CrZpXFmXCe6sOWdVbQiuN6cX4JAsRJ2x4jKB+kt5qkwBZwl+uY2NHjtdlvv3vPVfAloiLGOj+idSdt1JZqZjNqkqHRXCaREAykBdvNmkLKnul2g2YVOMKbfDbOyGr1Tq0NvuFysVBUfElyxJGWDdOHw9crbmX+48s5M6Fp07UD20PCIBmD9+9vP3l+V2xt0XaM0lLVGh1oFYHgNDTHokzU/s1WG4zpjlayiq5tM4rzG9o6sT9inrBcps5YVg+q8O19RSP7sut1kqYjeSvUbMeOQWrAXd1hmBGhr5xD2/YYxCgYwU9LKT3VBJ/G03gaT+Np/N4ObTy51I/98KR4+jSextN4Gk/jafz/dIzj+HjfEE+R4NN4Gk/jaTyN3+PxdAk+jafxNJ7G0/i9HU+X4NN4Gk/jaTyN39vxk+jQ/+bf/be4mCvi4rwcGYRx340mHPKWSqDZy6nLRJTFk7TEdD1u7hRibezhfKmg18ckJ0szIlGwfvazL3CdgOs7BT8vOwND6HIiQ2MehzTC6JJWGa6wBi+nIWPbcy99dfWxwhCU0r/35//dD97h3/jX/h4L6W9rm4Ymz/Ckf0QrW3ohGw6COfFkiiUE0+XYYweijGxELC2PMldoqjQvOW4LWqEIm84Dzi5U72Hfw/36msVJcSM2H/qFfDdiTNMHdnPd0jgKJdIw9OyPOX/+j/78k3X4s//6P0HzfOypwOLLhkTaU6aaQV00VKX07dUdS2GLT9qaoRxwDLU2cexxOPUTtiPDoaIwVWuH3mRMY5f+pAxd21T3CoU1WSz5+eev8VxVIj7WDoVQLs3mU+xwyutnCtn69n7Hf/7v/NkPnv9//F/+OQD+7t//B+yFTP3bD3fsdrdEgoh0vS/RUfukrTv8wANBHbZ1wvuPqgXk6uoKH9ClneGomVjBwFHaQFzdp8xFUdpzmYYBN5mohvQdzVZ9v9aVxL5FL0ha0zAIReD2/u4t/9GfffODd/if/9F/C8CHbz+Qlym+tP1kXc1qJ61D4Qx3Mn9gW/E7m+UbhQ4dxoKm0Gil1SCITHw3otxLW0jRchTKrbJKsMzhQYHBdH06UaoYu4TVtsIUdOhsGhDEJ8aUgWkY8kr6cv/+v/0f/OAd/rN/CH/6p/8CAPNgjl6KxNV8Qt0MrA7qM9/frokjde4H2yVvNWyB0ze9zuip/WWOYLs+urTkWLpNaPc0wpZ0l++xPOVnG+GcvNiRinq8aVjomijGdBXLuYbVq3Px9bf/D7alzvN/9R/+UMXgv/jvv2WXiEpFWRH5HrpxQiSOVJ1Q9FUNljXStyfB4YyqFuFl30HrO0JBTcfxDG8SoWvq30mWszmRgHc6hmOBIDKrPKEXFHHvzLGMBlvQwZPZlEHI2xeTFzx7/YZ/81/6lDrtP/2H8Hf+5X+A0Sr7UqU9s6VCeO7KDKO1KKQ1rNdjDNkHedGR7A5kpWrtmF+9IJjHTAQBOjQ9+0yd7yqp0IeeVt6pwccScWnTMqjLlFgQwFFgkG1UK0Xa5nRVRluoVrXA2fIf//t3P3j+//J/+J/U97UtM1GWXx+P5LsNz16rNqrbJOPdW9VuZWkGxmDSluqsX75YUIrySbYrieIQU1N7pmkbStPk2Zmyw68vl/zj3yhZr6LUsWMohcLv4vnPcEV+ztI78jInkr9zm4xU5JlePH/1yRr8zfGTl+AsfEYnfV9DXdNKL8kLL6KoWgJRLgiDgLIUHk/LwQkCfGlE9YM5P/9bfwCAZhisP9xRCku/P5mCobOYq74iy5vgWeogjH1BXeREIpkzn8aEYniavKTUclxpfag9E895HI5szq44v1QX1NAe2d5+TyT05mfncwLhebTnF5SGRlur7zCqHl94H0PHQc/aB/1C23CwzCmO6Kb5E5iIZmFba4y9SbVTGyApV4zC84nREqBzIhZzRx9LDnvT6rjxp5RjALXuMYu/eNDCsyyNSCR4nr94TqxB1yrjvr7f4vXKKKROiaOFIGvjmD29UJhNtAgr7pkHirqpS+/QSDBkbt59vSMp1fOERoitL5TcENANJRcL1cyruz62EXBsxNg9sg6jpjbh7h5SMbzHzGV1rbMTlvu6uWN6IXp2ncV+r+PPRJfOmZFWau+ZuxmRb0GnIOyuc85QHsnfK7Xt49CjSY/V/mBxdGxShLG+77j/IArhgUvVGvjSN3kRG3jiZL2cvwB+eAlmmbKCaTPQDjaN9IGWY8DOFqmb6QKsGakQBxSGhi9tPI4Zk6QZushxTVwPw9TJpYexd11aT5qe8wX2MmIUmqk829ENMr+eTb4vGEXz0B0HmlSo/yqH2Ano+seJIzx3/kBxZtourZxtd+vTaCZ7cSTujyHaiWoubWjaKaWjfjcZS2aeNI4bJlUOeqp+5scWh8M9dztpvO56NIGnX5oOtR5iiJxOaJnkhZr7no6BET9WBuzyLKXMTir3P7wE8/QaXfb6oFUE7jnlqC7FyI85MQjvyjssLC4u1LPdr9a08lmaEeKaoEs7EH3H0GywTfnrKsUSDUrft5jGEYM4kuXRJpV+6X3+AQyf6Uztt/PYYVMoB2gwE3bH0zv8aB0Wf0I1xgytWvt1lpC2al8Mg84+zRlFZiryTTxPzUuf9GRlz75QF83SeI6tPePuVloBLJuxVr+7uf8VbaUzu1KOZadPCAP1d8aY4rke80i4agOdtpHz1GZ4Z5Dfqf2WPNLw//Y3qu0lCGdojvrMDzc3pB8/Uh6U85AMHYeVakkJIp+zZwuCpdpTztyjlBYM3dHoTAtbgp2iLqj3K9Yi8zT2GnvhAx1MB8+L0cRZLcqe+xvl4CarFZo9cnFQDmDkdhxEUq7MdPhXHl0K9Qy/+0dP42k8jafxNJ7GP9vjJyPB1JhTrYREOsmxhflEfz1lErbowjI7eDaR0BWNgYulacTiuZrTJQdUBDWdLIm/uKS4Vt7C7WrDYmpTiBBlgEMrIoma1hHMXBq59evBRquVF+lGMXWx4TZRbAbJfuDNV4831754+Ue8fqMYLrbr76mLFlPUzI2JzcVSRYmTy0s6PyKtVSSz23QcC/Wcu/sSR3dxxKt3RwfbjzCF0PsyDqg1UUd4vmAeR7wtT2nHGmFVIt2k6F6A0Ssvbzs0zK5UBKkbFkP2uAJyVZgYzpLzE1OGZXD9278C4OryGc89g/2dikwuvXPiSJqgdYNqX5Of2E6qHE0IpM/m51RJTVeL156amKZDLHRcletztIUaQ7c4JjWGkBrnpUVfqWijqFq0tsPfS1oz/rQxNbxSBOLrpCaRhuXYmTGeGRQHFTGPdUvQqPnVsJifvcJ31NokhyMTXdbw6xVrH3wh4HU9cBwHW1e/O7d0rl58CcAhP3I4bhiled7zAoLXwh6j9+jdwETYCmILAmlyD565wP/2g3e4X0mDbnYkPY70R9kL588IAxWxJr3LhR2hCXWV3fUko3pOG4tw4uAK5ZXt9KTtSCE0gX1jYHsqup6euVTmQHq9k/kv0B2h19sN4OnYkgKsXAOpSqBZBsdjhZPsP1kDgF/+8Z8w6OosGr2B5Z7SzzZ01oMCwVXkPBBt6/pIMD3jWtLobetQNCpitBwD25/RSgSVNT3lYFONak7Pn70gb9R+q/KBwZ/y8rmKHGzb4N1vlfbd1HZ5NXN5po4C54bOJhNmGT784B3q+pqiVJFgMF1gmnvqo0oP3nc6lqTpx3aLPfFpRNGiym7ROjWHvtfizOYgRMyO2zMzOkqhHxu1lkHo7TTNwPFs8k7t2+P+QCGE5U4QEfgW7qjm5rjesr0RIuzjimB+eHQdJtNzmtx/EALXxzO2ifrveejwcn5Bc2J/KBvsXEXe0fKKYbjGkSzQ9mNLVuSEl+p8xfMl61tJxYdvGI2Ez67+WH2OPSWv1X4aNLiYvKGXpM2+WmGbKqXqaTMWvg4Xag1/TQO8/cHz/+Er9bvH0aSrJAr3KuqoYRDlF9u3uVxIOt+ZsLg4ww8l0h50VvdqzTxfZ2w67ECt02fTBdtaf9D0vCsPvPz5G7UWro5RHnGOQhPY6fTjSUlIozy0bMu/UO//5iW2ZM5m/A46Shk/rSyfjnTCDtFxRDdUqizJKwbNwhV+N4yBSqR1LNNg1EcsqS21WcNRZHAmU5fKdOnEEJRmwr4oaSXtk969oyvUQtmux9ksokOFxdvbPcH0xL7h8f67a1Y7dRgd3X4QYP3xSJOWjdTdxmDJ+csRQ9jFtUGjEJoSbZfjOv4Dg0jTJGSS4sP0cawZQ66ezdQsWs/Fl5pCkVcPMjDb7Y73779ld6M2qkPOdqs25vp+C2+eYwn7RtmPjIkITdLReo9Lr6S7hMP+5oGmnNqBAAAgAElEQVSXczaO1MJm83G7Y52VHNfvAPjiLCb0lXGra5MKC8+QNIhlM6YqfXDoviZf6VRHdVDL7J6ZBelKPduqKjHFuI5FTqF/TZ2ozznUNdVGbWJ7doE9H9AGkT7xLj55flNUM3abjKxQz+3ZLtYswpN3coYD62vlcDnWgsCpyBv172++32BK0uLcvyA+jxiFsm6wfWrNYy7OjJVl+MLW83b1DdfX33B2JtJZWNyshTZMNwhcA0c4McvWYhSlBn/2qSzX7FxZ6KQZcc2RtTCR9GWKJmnx6liTBA2+SBuVxRFLLll9aPAvZgSiLKCZBhYOgaf28DEb6Ew1h6Zv4ncWbih1ms1IKfUsJwgZa41SHNKybB/kqTQcVlXKuH48HTo7e852qy6l+1WFL3VrzZqjjxqhSGflyZrTaerGkEGzSXfqErBs8GO1xs9fn9EOOoNrPKyFywtsmauzwOfuTjkPm3RFZJ9zLIT1fztQSxpV1zTS0Oa2UnvR1iLOwhePvoPndgSu+ruz5Yiu9yDn2TA1TGFzubyckey3rNbKtjRDzVQ4Xpczn6PWspMabNPkOIuAtFZpt+vtllpU0a1wwibJMeQdCTu8UxpVH+mbnK4/cXnusaQGWVUjY7J59B2c4ZIPb9cMrdoLjTYlnKmLrAcMa+TyQu2pw232UJIqq5RW7/BEdefq5Wvcqyl5JZJIk+iBq1aPzwlnz7l49hUArTHQ3qnLumgNdpUButrnx3ROdqf2YWQ6dAEsInWepmED/O8/fAE5J6ZRcbdWn5m1DZrhYgpNoGlm1KJ605k1w5ASyln79u17drla65kX0VcNQh1K5LoEXkAtzvigWejijNuOS5U17MT2aHlNLxzCDg5XU4/dqXzXdATijDnCSfy7xlM69Gk8jafxNJ7G7+34aRWJQcdqBGln+ExDFWHo1oKxyzFNFQk6nqOEBIFGG/lws+P4UXkk55caLyYKOdh2NVWvUegihHhc0W4/sgyFr7KpGIUYz2s6mtDDEPCLZo5UqUIpNcYSw5488EDmDeTJ4+nQydmSr98rr+MyMFn4L3j2UnlSh8MeRwA8o24ztBGGoKkMAgbhQ3WHEd+MaOX7NlWKoUN6UJHKYh4wnCuv4+u//J4yrylK5XEndUlViCeiAb2KJAA6LyTZS5FfP8OxHue4i6c2v/3uHVX+DoBfXC1wxIt/923O80BjLqmsMmuJLoRA+7jm3YcKS7haqQ7k98r7NceRbJPQiJd09npB2I3803s1x+uhZyNAiZsqRR8NppFK11WeC6IV1gUO2jhQFiIWu/8UGHNSrhgtnakIB9eNiY7D/OINAMG0IC8VArQtdFbvb8katab5umI5U99tDBr1vkMTb3QYK27yhvFcQDW6y4drBWr55tf3OMNAJx6hZae0a+VF1r1F8HzB7qA891Fz+NlSReJ9/Yhv6CsvdvpigVYa7DK1vk7g4Jjqu/WhRPeHB3JvTXcoXLXX1lXGJNQJhBF/wKJMMppUtNI8H7MQAWut4vLsinFUc9oUR+JYiN4X57RJyftfq1JAa5RMhBMSrYa6ptMeB4mV44SJACWKMiOcqGiraBx6WnqEr3HsiDz1e2XbscsT4oX6/iiYIrJ7VMWB0fUwB1FMyY6YeoBTKrtgeQ6apF+nsUNgz8lFJLvLSjQ5X509cH+f0Dsq9fDZ5xfofBqNA3TtivlJ3cULuT18fBBcdqMAy5D/DnTuNzWZJmnNoOPshdpDIxZj2RMu1brN/Qmtq6PpQjTflehC9O5MFrRNRibp/rFpaCRK6bqGYNCxJ1P5XIe5IM83xwLNLB59h1VuMw1eUEu2LPQWmLKHRrvFmhuI8Ay9VZGJOEDZdIQTm1ef/RKA2JuzrtZ0hjrD+913HNdKBHcWzXCMmNVRcX9WeUkm8222Glrc0MtCFkXJ9VpUI7BpZgGeaFmOkkX6m+PQqOjPWwT8bPkGgNtVQbq+JgwFOdzatIaa+9CZ0OwrNihb1zcemSZ2tzTRsuJBiDmlYl1DJxykfgzFrTrrlaVRHBoQ0NCQlrhCanb1fE58GbP+jbLJ9XHL7JnKWFid8+g6nMZPXoJLv6MRBetJNGcxUyFymh0Z3RLDEvXj2QRHHuxwc+T2kGLL4beCmFIY2ZPjNwzxhNZUG2p+FbMd9tzslOF9ffmaUnJwVZPx/ebARNCKpqFznwrEOWiYX16y2ajL1MZjPntceiWeh/RSh4qcJZE5MpSiwDD0WLEybvtDQ3GbsBSR2e22oOnVofhsEWAbJR8EcrvZJZhJg+UKNH50OAgq6uwipjgUzD250MaBdC/1DSvnzPNERRSCIOR2p+bCNEfM4fGUbtuUhEH0IOzaGjq21Azub9cEZwtCqRGVVUHRqXfytYph9Y7rrTKYy9pjmisj8fLyBTPP4/5a1RbPegf34hlfCOS4Xt9RijpCOfTclyl3pShhn8d88blClYZnJk3vkB5VyjcaPk3FfXcr6MlRx5WD1xQ2WVcxC8WiahWJiLxi6bTGGf2oDMNhfyAWsnIzDHn/7a/phWj9xatL3pxf0ulqbnarI81R7Rk99bFdENF7Wn/gl3/wRwAk2cCxKulHqVkZGki7zOXFZ5+8w6FQaz+JzwlfhTgntGbX4zrqu1cfCsbqSHSuDMd+U9GIMsJg6FiDxYmJsKl3lOmBv6a6Tpkv1LrZRcV+t+WB0rAzsCV11lYa8STk1ZcKUZ0mGZ3MeV8NeGYEPJ4O/c1NTRRI6nIwKHfKKBUHDY0epA5mGDYISXI0RqzXO3xLiLevbBrJXd1s79jdZyzOVK365Wd/QLofME1JeSYD3U5Y/qMpTjglNJUtiOcubaE+53Z1wz5b45xk2xi4XJ4/+g6WmbJYqAv6/MIg0XUqKa+EnoYmDvZieUVtnDEblM0yxgHhmOcv/+lf0Rg9Z5EykuH5nCj0GCKRCsNmf1DOSb3OmZzNGQdV+9rty9Px5VClOGhMF0LCb3UE4kTPooB8s370HX59U3E54SEdPZYlaa7O1ouzkCgy4FSGmmgkG7WBDT/AWzj4CzWnWZWwSxJaWdM8TRAVNaq2IY497r9TTt/7mw/ECzWnjhXhT1wsQUaXmKwqQXJiEo46a8FiPL96/snz69IOV1UNraipG53Gi+UZrrQ8aXWFG6rvM6IJ103P7b3aQyMal4Gq8U+WS9Lojm4naNz4FdEuo5dOgMjtME5QiWPHL87f0IQiuVW9x/fV3L+ezal1eDlXdkLXWgxBUN9XJ6Hlx8dPq0jUJY4YxT70uF4pQ1f3CW6ogacmzrXbB/XwddLhRxqRgAWqc5/jXi1E1tzhXMxoB/Wz0arZNzm6eMf28oyjQIx/dfM1oRPyRoykFdQUUj8qVgeqwn6oL41NwfrucThyRIQzVX/3zI84iyLyozLKSTPiSj0lDk2+/e3X3N5ID6Gr84sXql73tz+74t3bDxSp2qgTLwbDpJXnuV2tHiKzX/zic6rNikH6dbQ+BHEkulZnDBwuJup9vTCm9KQuoRmMJz2iH42+zpjZU6yF2mCrze5BGWIae1hmQCwRVXbznq1sNqsb+WLp80upNyxsl0pqYq8uXtK97vjHsdQ5/Zi2h5ev1QWwGwqaVDZtnlCULZ6jjEbmGVjPJDKZerj9iGBa6Nvkk+efIErUFuxz9ZmzaIafeaSZ+ve7999Rd+pwvb54wWplcxSjlVcDtYA94pfPyCczcmlRCIwFC+85rQiLtZsdh07AVOOS9MM3NCJFHnaxQgUAtWmzWq+JpS2l8kw+HqUOdPMpoKGX1oaqGJjMDKaGMjxJlVLIwdetHl3vqUbxqi0LTVjuXz97TeS6uAKvt8cGM+4YpFeuqkY0qX/7y5BqnYLo1p0/X6qGW6CuRrqhwHLU3pxdedxL9N7qOr1xRG8eB1g53pR1Kr2eVYspsj+TcImjeXTpWubNILLURW4OJX5ogURmpd1zIa0spe6QtzllI9kFvSdeTtivlV24v/vri3xIEw6agSMtMf5ExxbHZp2WRH7IILI467TDe7xbCKsbVYMi0FdHYq8nFBUHMwJKUcLINrSGQ3iunIWACTsBrXSGj2V3eIZat26XMPYWUqrnxeQMTTQlm6rGd018X72z7VTsZYtfLi/J64JRwDiNMdKJwb2IL4iWjyvL67nNmpFCFNMngcvVUjmV2nnMh9UNjqnOZfxiiT4THT6t4z6p2d4op/bN6z9ENyyyQh5o0nMukb7WRLStxkb2W9211BJgFKPGeAc4at6yrKOTfejNfbQwJu+kXhx86oy0kj27/XCLLmdtEUSMZc9qLf2FvoUr0V62bRlG/wGIc7+95/mFcviWzpLBcAknak19+5xKX5Hs1J6qKgtNNBGtMiPgEl3+vf3tW1aCDdCrlE2yRhdNzMWzGbn0kbfl4+vwsB4/+dOn8TSextN4Gk/jn+Hxk5Gg0YRsC+UVu7rJ/qDyy+v9munijExqCBeYbAXSui0bArfnVmom8SJmX6ub+4s3PgcadgeVt3ZtDeesJQiVt7Y1S+4FEbhtjtRNxeeiTD09O8MSGHGdDmzvrylSFX1udzna74DBFlmLLVg3zzHxXf9BeTyM5vTiLYSmw7IvaFr13GWdUwmzzUdroGwOOBNBO1UHqq6gFnh7cneLJ+wyvzVz9N2OUVgzyjJhLVDss/MZn//Jn6Lt1PePWct8pjz6v/z+iK89ntLVNJNny5h379SzNcPAeiO1U7tl8WrO/ihRMRGbe2GoIaNubVxBZzblSCeN811bUNku01B9ZzLa5NuCv/r1/wnA9XGPFapoIBuO3K9KLn6uXLnpLObdQXmVutHzsyDDFMHjdvg0mjVEOPbVF5d8907V64YcMKZ0Ehl2FXiO8mKD8BX6umR1f4rIDPJGec3f3r8l9i0CXz1b3yTk+4/MROtw15YUlvIGx/mUblww2MqT3qxShhNZwOtLfvbZBbEI9yb5kbWgf7d/+cMGbQC9UNHNut4yLkeqUiLPNKOR9FAzlBjjSJlJvbIYefZaReEvF5cMY8UgDdSha1DuUspMRScT18UWtB5dyGwREIuWpsZzMkEaOvpI2pRI0EwQhxjCQlP0E/J9Tm88fhaml+dkiSCxvz4+CBHHzy5we5tEuhGGGjRDarxDje2b9ChvOikPaHv17i+eTdE1nUaIBCyzxHdDdiIWG4YllkRptgWmkXIUxqCyNil99TmLZcDs/Bxd0rq5UfBh/6mmI8AinjMVIdf3t1tqrcO7VOf09v2OslHrNNoD3sUlhbRF3JQZjjT5e/EV5eojpaTL7Gcjh6Ihl7S9ro0Uwmjy6rPXzOcmRxHnRbOpW7WH/HnANLSJlieZ9AAsFd0+i6Z0/uM1wUUc45xNeXdUZyF6NefLr74AwLAcDmudQoSKmzYkuFRz+N1v35FWG+JOvcemyPjFP/+M5DeiJ9mWPH+pzsVkds7dfcq4UrbGNlyamYp5nocxw7phyNWeOvMiNGF6eXZ5xpjUaFKy+vrdu0+eX3fU5yzmE6a9sh9WU9C2LYbU6m/uerJE2fk3L17z5jJm30qK1ywIErHJ9wnhbUUkfWRBec/Hw54sU/YkMBtGYbMZiiP5MND0IujdtmxWgmqNHUZCcrH1obnEkAyFP30cdX8aP3kJRhdXHG+FwaXL0KSQ65kjLQODFByzLiWXtI/huFSejncmTAWhjSaHex9a5GaHIT1e1balW/jcnfpluh2apNm+WP4RVlby4jNVvI+DK+6u1aRSJuh5iXPqYPBMrq4eF6Tta408UZN216+xkoZkqzb76A0gdYje3DM3D/RShN5UayJbGbCs+UDa9QyGFGirO5qxoBMqqaXbk1cCh04r5kEDcim86wtCqZHMz84JMSk1ZXg/7A50nfrZNJwxWUwefYdnQUTghTw7V3DnzrP49eq3AFiLmJ/9/CtS6TE85B5nMhXH93vqOsfS1LN89Srm/Y2AT1Y39HZAIenI4zEh9y1quSR225SsUmufmi1OoDEKrZXvvqLKlFH8bb6lmTl/zR7kfrqlrp6pgxJZYAsTR3JoMDwdrZWakWHTZurgffOXXzM4C+YLddgbT3+oWfS1w6XhcyGiwq7rU7QtraTc7zZ3+CJw7EYD8fyc4+Gd+o66ASncX3//HV98NUE/sfC4Hb3UQfTwU4CSLvRyjm3TFCXbXByi0cDrTxRQOVXX0jnquQ/rPQiwK7BmjH1FtlIpxxcXC2pDZ3+jHEvr7AxTnIBmt8OYe9i2SsENRoMjTC/eULIpj9T5SU2+IY6FTm/YcTgMVOvH+wRnF+cMYSHzuKGV1qHZWUS1zimkDcNoNKpbdSN6M4OrKOD9Sp09K5gwVsq4DA2E+kAp+yK7fkd01fJyoZyl1LA4HqSuXHT0fcUiOrVT6GQCBLp6vkCPDJC0oqPZBP3jyvLzxQJLVMhHM8GZTGnkPXZVyyERWPwyZNAcrFqtZdEYIHtv1CrG3sIa1Pe9/uwPGQ2PX3+t9tBmt6Vu1EV+c/eOzd2Io6v5t5wJrqts3fbDPfOZzlx6pOe6TidAM70u2d79sMfxNCavrxj0livBIwT2QK+p/TVxYypfx5S6frrdEV0pm3jx3KS6Tml89dyH8cDHVcEmU2f63NH4+ldKWf7LP9Sw3Yiz50K5RogpfaG6qRO5NY2YrOP6PRfCzvTFZxF0DndSS6y7T+vLm4/S3+mcsd2q/WwcbmgwaYQFaL+v2dyqfXhlaIT+FHNUcxiEAZG0CtXXN9jrkrARsOJNSWQaTDy1jldujHWuyjCHTY3XFGzFfvdJy8Vr5fzq85iuM8hG5ax0jv0AwiN/vDxwGk/p0KfxNJ7G03gav7fjJyPBY68/gBUcp2EiJK/TFwH1MIKgBx1L50oiv53jkLY+160UfaOaKwFb/Ob9PyH3c2JThac3WUN2PFCOytu4sHtenqnI6Hizwny2IJ8rb/jj3R6zFVYSdKZBCAINxhvBe7y9oB4d+kHABw00DJijFItpGUf5WVkRLh2aQgr3ONTCdpH3FkVrc32tmBPK4o6uOdLX6ueDY9Ga6v3zbiRyPNwLBQaZh1PsUXl157MpY23gmyq6bTyNnaDnWtvGP1XmfzTO4oDNPqMSGLXTOSwu1fe9evMGM/TwxHOahjVBKA2juYFXxPzBXHldz68CXoYKXp1/v2OjN+R3yuOt5w16/AX39yoyaaMaR/giw6hlevGMNFTeWql3BNKQv9tsuNVdPnuuopHZi09TutujihyO5YYwUnvo7PKKtrX4i/9LpYT6eoRe7Zl10/Di1ees1oL4TAsC8bavXn32/7L3Xs+RZGl258+1h3t46AggoBIpSmSr6dkxkmPkzprtn70vNCPN1qimRzS7qrIqKzOhgdDStdqH+yGntwHWCx8n7xNgAXj41Z8656Dt9+hCXq6XNVGccyvQjzwuPvPYLtYPHH/dYydMGbpV0hXWivUkI4xDBkNluR42MlaFGgvTfGo5rrbKUrdaI6zKoNVV/W8e9yilf0VhMPB77KQ4ww8ymq4ae6cVUBUeWqjWRaPtkeUDQk0xXNxOF7SEP7FchzSXIyxbvKgpnxlLglGL+4dLkLDPZrEglVCl3Sholhpu8/mqkkq3qAypgD06xxYiaK+lMb2d0eirfRk9JNzO1drumTaNoqIhlbrHoxcMe+o9G1ZJY9jk8jvliYT7hJHrM83FE8xiZg9q3DLLQ7MdYgGha5bGTqBDThRxcNajJ2TMi/cPhOXz1ntZhJSlkInrGlm6ZSug7N0StlJQa29LZrsb+ifiibcG7AWesZjN6XX7NDw1bu8+TfB7HWKZd7/foiF8v/Pra/J0T38oBTaGhS7j5rgp+33ETliYukEDu3rcM02yy+ervTUNNF/j9eCV6ofvMBRvzyxSMkOnkDPx3e0FnpxR3cMehm9zNFTvbTQNprv3eL68t+0QCxtVM/C4i1Ny85FUIaEZqD497Ncctmwqqar9+f01I0uNTXut0XYqLj/+UY2jnGt/3haR2qer2MIS5iizrJh/ukOccnyviyZFck49xtmHREK4cDQK2MpENXIN6/bqX6KKmxW/+avfYAQCrdFjGi3Vp+/iisy2cIW5qrV1Gb5S7FALC2bZllz2ZRGMSDUhWk9+GSz/yznBSsOU6klbL+gPVVlrqK/JtvPPmJCTgxH7E3W47YuEhz9dMc2VKxwEfZaO6rB52MQs9uiauoR6R13GR200IXxOih07CcmcfHuG2xpycSUHEyWBALCyJKLValJpahLbrS4+z4dPtrmNq6t3S/WCbRpxOJIS7oZBJvH90iyIU5cLCTNWgU0wVP93E0ZsoxU0pKp0u6bYTrGl5vpqH9OXRbyoPQrd5sVQXQpmy6Wjqee4Zoeoqhl0JTwae8weFINLkTgcPFOJBVCZLlloUQiO8Gx8yNuXij2n2XtBVexwYwmruSW+xPPNQYMyc9jcq/DFf76+4u2JOszSRkiyrzk+F4xbuubn+ApTLlOz1gnacmDZLoeHI/YCIfhptqEIVZ+cZkCYJKwTIY0ue0/eX4phMRoOgS9sKqFOFO9od+VA1T32ErY+OB1jtT3SW8kFdNpYtrpc2/4xv/t1n9Wt+r7Jxxu8hocj+Vtq+3PZNvme3e2W1VSFdjBdBoKhPH7dZNCFw45gCMnpSdg4FFqsP28PQsY7dnwMYmohPJ5v5whzE1FicXBgMeiqebK0Y5aSz2C/I1uuKe5UTjCzU/aTCQhp9/10gaep8d3d3ZDWOfP/MZExdageoRX3P+OmOzoHj6xAezLJh7u6j+Pr7Nf1k/cHqLMGvqn2ybo22cdqnO6X71lGe7RSjU1cbah8KcOPMpzM4HSkqhf95gFN+axdZ4RFTcMWzGgd83G+YBFKNV7pkqTqb1d5xGyxZ75Tc/zi7THDM7VWCtZsl1OOhP6r3x+SZc9fIGYekYRiDDsGdZKTJo+XkostF3C4jzCa5uccaMmC2f0FAA0/gJbB31+oPTPwc87bHVJbzpAsxBJliF2Z0LQtKqkGXsc7NMEh5KVOEmlYGyE+L2N0YYwxzZRosXi2D5tdQttqkpVCSr6c0umodWAaFuE25lbCjFXbYfvINlbuSchZS376YHDEodch2gsWMi9JJMZ5sfnA2ulDoN41Cne4tvq7dTLjahLyu29VHvLk9y9ZXas9cnt1gXNk4Yqaz3579+T9375WMKNKd9AXqr+buwJrbBALJniX7IkSdbZd35k0ox19U+3hV9++5EH2ZEPTsXTINLVmjhyHr7o6n4Q57MPkhtffKCfKtkw+3Hzk9Fz9fv7iBQ9yg0VViaWZFI+MPfEUI1a50kbxy+HQX7wEv/79r7huSaFDtcDvS16isNnucmJJZG9ym+1eWQf+yEI/Cll+UJfg9fRnzL2aCLsVY1kGEWoSddei73bxGsrKDxMHqbilZbjUoUcmnInadveZs29klxR1ht9VseJW4wVG4ymoE0C3fRqCNezYGUW4Yl8/4t80FsIjmmc7NkaKcaYmqrBSbgU35Y1MEithF6r3ntdLHD+ldyqe2ybHEOzOzihZRmtqYdIvNjF1Rzg39S0D18CrlIXkN1wMwQY2nZIqfX6ydosFrn/I+RvlxTl6h25PKOyKNfHVzwSog88ZWJRSi9wOWmhViZ6rsZld3HExk6KPXUYjrUnFo3AbBj1g1FHv8IcP33OCwgiZHZvt1Zx1IN5flHEYqPkeNbtovTaJUMyl26dW1+BAXe7HA59wo6zm69sV5X5JU/CdRtP7DN7dUpNqa0JbCoHKFpan1sg/fP8T6Z1FKTmjXusFm+2MXKRYDtoH6E21LvzIoWPeE3TUujGDPl2JNHQ8+OY8IGio9bW6u8HoqcNUe+YArgW9vFqtCalZFuqwaR0dMxZsaattcRRYGJI/ur9f0pBnWdsJWhyRm2o/ze4vGLuHZP65+gJ/ykhkvJbWj5TxAs9SfV7s9rgSJVgtZ4xaJXkmyX7TwxXjxKgSZpMFYfb0Egdot4/YCMXYajYnr6RkPqkp3SNMUzCc+oZE8nxOcECaFTyEaj8bd9Vn6rmjQKMsbOyBWie7IufdxzmmQGLahobbUWuvXl7S6ng0JM/bGvU4eCHqLgso9JD12pAutUhFGuwvm6cYJ9S7ALuiIizUe2tlhSk5uc30HrMccbdSXurLfpflnbqUzCDH0E3+dKl+Px1bTP7bP+O2lUH45nWHxaUyQNbJjrLVIRItJbOu0AVf12kGNIyKgRBHWGVCJAQTmWbiuc+TFhy0B6Txjsv3El3o5DzIu3VevMY5dNjPVD7RGfTonqu1npUbtqFJKFbXw/aCtl/Q8tR4vDk94qJWl8enyx9ptL/6HMnrHx3SE0M9Mvpoto7nird1AGuhkCscm13hYwqsLEueXuRHY6F6tF2uBAq213TskUMghkR4VWEITG622TDSLXodgdasVpgbdUH2nQG910dcr9Tey+tDar/NWOjXksohkxy7EcRUt/e4LXUOffN3/xd/kihMY3XLfrdiHqnL1SpC+j3xrndPYVt/3r7kBL+0L+1L+9K+tH+17Rc9wWRbfC6v3xshlcAHGnbJ1TLh55UKJ3jrCb//dyqUMfLHNPslbdGAulh8oiqVBfDtURe/f0C6VVZevM142OxxJNTQH43RpULwfr7HiWsygUFsF3ec68pSfvPrv2J2vSdG5dZefvU32BJm+8vWcR06j2K8BwPSXcZsKmXaDZtZLJaO12FWLfn2WPXDbOXciiikU6fkdkgiobMy99itV4SBslCSykTX1Xd0TrssN7AXkKqn1ViWGkOj0HFpUEnoMN+vsB0J18Q6y+nzrPPpakW3ldEWL8Jou7gtEY/MdTpfn9ETnbaLzZJYch+jUZd0uyQQb2s/9SiFumh40sGY7ZkvhA7KM3nzpk8mih4nukW/J4wa/ddE+ZrpSoQvJ0t0YQRqdY7pDk65uZTcz+ppef5eQqPf4KIAACAASURBVL6xccRMBGeX83uSLPmsBlE1LA5fqjk0NRurqXOkKYvPM17R2Krx/Kc//oH5f11w9uJXADS+6nK32HD9Tpju/Zzf/N9KxPfsq3MmH68wG2qZ//XffkPyyPYRrdBck5YrjDFBi65U52rpU5qlXHtUSqhoz3NcGVM/rXES5RnYRs3DzQOnUp5rWg62psYj2yUUac3NvfKgy8UD5q9a3M0V0H1bR8TCpuINT8myLZapxubwrE8sed76jxOW2zmR0IOZwTmNUr3vLJziVBVu6/mS8DwGu6ks9QKPjYC1Y1LIS1zJ4+/jWxxf1mxHQ4sMVgLr6ToF+53ygldlxHAwptV9FIdtYC4j0kT16d5qokkUZpeFtEYBr19/q8b4+IBME7B626dp6qyFFLxb2pjeUyJ2AM91SC2BJm02pLlNWyjOpqv7z1qKQW3RM30+ibj3ompgSG7ednrMdzWlreb0ZrXnbNyhEtaSjQexMCtplU+cplhS9Zj7DXQJ6doDjdNeh9GRWjf6Eja6+tlxGxTm8x5IlVeUWc5KSA46uMwExrMvFpwMe5yNhcjeXGBI+LmjG6S7JiNXrROt3pN+vOToW5WmGmYaN7nkypcZ91cf8V6oivLRscvHT+r79F6bN7/+hihVfbq4WpIITVmEwzxxaQmF4Kj5NM3Ua0tkKU8oBBqWNQKW03sGZ2oPN4+HIDnAtu7QTEscqdoOl3P6ktM/6ztURYNH/YNNkmJgEEuet9Ww2Yvne71O+PjxlqWk6O76Z2QjdQektkeczAgkX9tqN9DEK9aq5z3yx/aLl+D9wwxf6LlMt0Uiasd6oOL2H2dCC1QZTOfCkPLQYDXdMHihkr6e3iSU3FloVjzMpgzFnTXMkMopebhU5deXF1N6crie9U8Y9o65+yCHa+YhpCC4B9AO+oyEPumvf/8Vk+vbZ/ugxxmxKLlvbYv2qEUuJc56WVMaahCX6Z48NdAlD3g1n3Alki1HHQ1v4HK/ES5Na0P75Ih1Wy0Up9NgIMLARWoyHgc0hVe1XhbEhnrOi4M+v+qM8UR6ZmllaJHa7Jc3a8r6KT4NwHNdRu0hcmbQM9s8zNS7NGyfpjViEavwTXA0oiNh63y3xoxmpBvh+qsjGp4k0csdRa0RdNRmG5z4FOMOc2F3/83rE9yGLHBLI57n5J/UGHf8AQ3htUzvEy7ev+NSxsbqPg3pJvfq/yZ1hCPz2+43ufnhmqawvlvemkQkiFLHoE73BIFKeneaI8KZytUe9s/5cFXw83u19hbTfyLLU3wxLJLthuWFuhAPX7wgbXeIhD/x4t3FZxHfVlsnDlxSMVbKtOTuRm3aOHp6eLVl41ekFImNLSxHVlqw/aCMJc0q8Ps+kbBdBKlHuVJjX2Q5htalK2Eet/9rqnjH/loZLM4g4PJBHVJ2XtAYjmlKIdro5Ii17MOZp9M0e5SiluDZLrHkQKebBUHDomM8z6P77t07UhE9nkYrHrbqu2M9IUt+4qCS0nMLKsl7bXczRt0XaEJTt0/WdIQ2zU07VFchN9//EwD3i5hOZ0wp7Da7VQmOGtNc1/HLFE0wXnkEiRi/hm5TuTW79BGu4lKu/xeqMNkOvytFWJpOsi5pGAIROTapBF/X7LY4GY94EHyfVmacnp6rMWv3+Xj/QMtVYfpmp0NnNKAluaMkmZLLQTt8eYJraBShGquogkDCn9k65Ga9JkpUONjWfbxcRKLzOeni+f18f/MTpqmjlWrNbouIdSQGbjHFM2e0T9T4T+d3/ON//QMAr1+9pTnqcPe9+v3tqENldHFu1Fh9/Ic/8dP/vFDvffZ73r1/4KClagem13PWcg50NYM07/DhXoWK19GevaRvTKeFYdq4cmH52uGT98/nan9cP1wyEe7b2/Wa1WzJ4EwZAU1fYyNqKk5lohlbilqgcBicHilog2VU7IoFpwKd0ZKIq/uYXJcQc9tAl2KuKrBZt5pE4tQksyviVI3xy5GF6xvocma1Tk4JBGZS2s9jTh/bl3Dol/alfWlf2pf2r7b9Mndo08eTW7jXNNB0ZXEW2ZZRx+X3vxVWhW8DbsT1vN9toD1A6yjrLM8sen3xrpY/8eH2E786UpbLoVVRVTqtprIQijDnWIoDzjsj/F32OZRXnOgMxKPTwyVD94CeYMu/+8f/yGbyL1TEf956tc1OBG6zeEucpASia2WlMQ9SkWgScnbSJUyUReR1NDqhAE2LFVoN18LwkAYVzkGbhqE+b9sDCrEnqjAnzSJ8oUYOgjM8U1lT+8xhkxVUEvINQ5c6FfaaKsUyn69w3d8k3DaWjKV6dGvEJFIZu1zO2G5XVCjP6N8e/ppHX+yHf/hvHJkz7JawONxndGKVOC5MD7N9ii/el3fUo+40MR7U5+1xn5XwsS43a9J9TTSTSkdNZ1Qqzyi+nLJaprw6V1ZfV39KVttsK8+029jQaStPqDv0cRsvuL5W453oEb6n+rdLPQq3g2Wrd5veziiE81JvHbHTt2yll7eTDUZY0xOOyvMzj9OOek5bf4nmRVxPlSeaRRatlhq3rrFi9TAhy1WfykLj45VUz0VPqyu9gYRqs5rbyQOVhA5X4ZJKU5bpi+4AQ9uy0CWs52hEwqxzfHBIVja5LaQ6tlViTlKCrlp/WwpMYVeJdI3+6TlGRzyOLCETi/fVt2cEXoAm85+VNYlUeUbVa1xzT7PzvBbfahcxkcKNTVygtUQNodQI1/dUUg0cDE95mKj+bW4XlMYhIylTTyIXEXrBc1ukWax0MoHJXYSdRfgSjrWCgKWU6NvzLa3appL9tXvYUaL2vWNrtPrndAQ+M7vaUuXPV7hmUYQnFr5lthl2A5ZCXNsLWmioudjHa+Ky4OClCgdGuzWOq57fPXnB2OnhmgILaPo0fZO+J6mB3P+Mr242O3hmg4arQo7rxYoTU41NtdyySwqsx0K33CAQXtM03eNoz3uCoaZhmRmBeEpl34FHkejA5eiFi9NW8/vh9oZHxI7X8Dk7GJN+VNGjKHFxjTYbITGZXG8JlXNHz6349vA1Wix6mStAYAjr72akLZvlWp2ngVNhCCH8kdaiaTS4facedOg9ihv/+SSos76I58zEg9SshODAIRei9bSC0hde5oNT/ChkIcU/VrlhVqnDu9KhzEr8jvIEy3zFxw8R7aHyrtc3a5rH6ufUMEkDk9FvVbph9LtTdo+culHKMs/wAhH7NlJCWeu+/fxaemy/eAlOdxtWwozhOhVJeqEe6tV0Bx3agg0LrQgtVI+6vryjcXhMLdiV9z99x4uzcwB2mxmL+ynf3aqQxaWm8epwTFNUJvJdQNdUHb43t3z8T9/Tkzj9//nr32C6UsK9XqPXFbu9Grjrn6Zsts+zrSxnE3I5QIwN6MWMruAUa10jWiv4QP/FEd7ZgCsJ3VXlA35T4BOUVMRYEgYZdptYRkkooZ1Xh29Y3cnm3kQ0LHAM5e77ds5EKL+ypoWXLbFFvd4pK4pU8pPLKW7rKbwAIMpT3HrNRgiOLfsVe6HL2a8M7G6LoYScZ5Nreh1lOOhezDwvMCu1wT6YPueoC6K04eDQxu2p99xmKYvpgtQSFeveC9oSOhzbFff7iisRs6wWH2nkap72YYlTF4ylcnTceop1/PFSjIfC4mGpQoe2F9AfnxLLxXd7t8MVUdexHxAmHomEWNMlzCdqA69Sn0l+xvhACJ61T3Q6KYeSu2j0Eq4j1d8f/9MfqfMrTiVPcXDS5vDVY6h4hp9NSWeKYUNL93QEb+cJ4fift6O2uljWD9fYnRKEKNl32zRrtQ6+OjykdLPPbDKfJg+UEm6NN2sW25BJJOX12yEHhoV5pKAH+5sbjEqFMbvNFlGo0ZP1FmsRllCTGabHYlvTaj9Wsu5YyveFpsvR8RnN7vNQm+bRIaGEnxe3l/hScarpKVlh8nhkx/stljApHY48zHrNfiahSrpIVAtTd/HHfXbTdwC8HQxo2j4ToXibphlNMQ4DPyaPGxShQD2s4rP8mt3u4ZrgSEWqEceY+f9CSinJWE2ErvF0SMcdk0taZru659WhVCemoA1OeSU5I02zCcVYaHZO6XQj7vULAMpkid1vMu6rdWJVAZtU9aEd9OmPxvi2Gqto+UBfPnPOKtb7CT1hS9ITCOTvVqHPRIj6/7IZfpPWuIkttJPesE1wpN67HpnoTkkYq7EZd8ecirpFrz2gnQU4Z/9ejVtdsruf0emdq99Pv6cfqLUb7WsMy+Fmod51O3XwR4+KLbBfJ2hC7J+nMb2WOpM8J6NZ1hjCFBNOniphHJ6pVFcr3+BJ6iAva6rKJLHUc/Q45ehYiOu9itqtQWTjSh1mO/UueaOiFdS4ApujmLDNthSCmU3rFEOwitt4x6S850BT3x9VKf0TZZyYywW77RJdLu1hy/sMj2kGz9NRPrZf9gSrjEQokqhypg9qs6fmmpPAZSN4lZ2dc10/lg0f4zYPCdeCVVvtucjfA/AwewBbIxFMyC6t0WooZypnY+gz2s3fAtAIanpvXzMSZn+9PyC9EoX2nbrdD+WiHXZ7RM9XhaPlMwoBtTetFr7RZCaX8OBsyFcCgtV6Jt1xi5Ov/g6Anz/8R/74Xl2Qtr/GMQ3Oz9Rk3O0SyjTCbKiN2h+55Jk6sCb3P1KFe/ribVZWQikFD77nEu332I467A6OxtSiHJDkMOo9Y3UBZtPi1dtfo1tqk+p7k6tbNWZVZvDb335FQ1CqHz7+PdM7tXD1dc4Oh7VY1behw8sXbwEI+halnpNK6X9cmcCeUV+VredHDnORj2n6Nn2z4Bvh2dQdG0NKo9t+gzKMaYim25uXT2WIItHsmzUSNFNd1r/qDcnSBEswnDg1puBJA69Lw+qgC93e5eQ9D5dqQy1Kk3iVkgkW0ge6x8eUhTpw/vDjLYFQrHUHOU0norDU+ActHUMSq91Bg7beZe+p/s5uPoJY+C8OnuZBNNFr3CzuMKIllqX60Wp16FrKkLCtkNJp0RAe3dn6Bi9Qn5Xhnuu7EH30GwC2u4xdssQPBCBeDtmH6jBNsxXHSUHmqvdw3ZJQ+sBqy3wVMp2p9abXBol4kInhsc0dtpfPF1iVeY0vxSC9kY3niMp9CqllU4m6C2aM01E//+qrVxQruLtSa8G0W+iyJ/MtFHFJKVUN46MhvZbNUkDS7aaNJzJTJn3uppvP0JbRm0N6p2LtJ3tuP3zAHKvDarFO0CfPH03zhwWBeH7e8QmBk9J9rfJewUTDEkWPeOdi2z7bqXg7A5cXp4I38xocNW3OLXVh7NIOXrtDLXCpcLXhRfMcAKMXYBgBRwM5SI2CpvBaTh4eaJktBpIvRltRhQKRWK+Jsuc9wabtczo6IuirPgbdBk5bioSCkiyPmc/V/u45LQ7Hgs8ua26+W+CIwofh+Bw3DzgQndefs3d0espL8pom/+O//1c+JMLB2T3ihXyWU7PMEvJKzWP/ZRffFssmLtEaJV5Xrfdk+fRgTXW1vpJkTV+KoprNNtuspi2RnrJYUOVCktHWGLotwp1ab+V+9RnKslguGbglOyGG6B+1Oc0zloWqE/F7Q+JKRaRKtrTGDg+pcjis3ZqXvuqTYXTRjQpLeIMdTfsM//rV6VM5qD9vX3KCX9qX9qV9aV/av9r2i56gVZdEhQBq84S8qTyYbVyzKE0yJJzimRQ3SuOqdAIW4YaZlBFHRUm4U16DFVh8NTwnc1Q4Mt5ppLFFQ8r9h3qBJznBb775DVWYsPlJeW07upSiNxa7S5LFjOwxrLk3+PnheesXLLqisbXc37OLLWIBpbv9graE79bJltvv39H+WvVxn6Q028oammUpvaLm3/xaWZyrvcFyHtGX8ElQ6UxE1NbRId7sOTlVHsYmTJmtVCz8UDvBNjx2UvjWdFusRENwleSYk+fDJ4OjF5z0T5hrarqmswfakndq9rvkuzm5APnzwiSaKQ82mc7Q6oi1rf5vt1yzOlbexjddn3y6YCmQhm6nj3/0FT9/UFaXXXu0BHRf7iOc5IZfnajxnu6bJBJiDbo+vWaP14cyFvr+yfubYqm2DnQSR9TTdR1ft+kMxWO+mTK5ErYa8zsy+xuiVK2FMqvpHqvvXtzGDAKHVyMV8ntYb0lTqAROUPoBgdCGNU2D07ZHr6u8AbPhENXKiqxzk3W653yswmW7NGcroNq0fprXnAnIf7Wcoe/n+Odqvou8phKllXlmowcFd+9VlWcab3jTU89veBYPJthSHRotFuTh5nNJf6sy6IiXau3nWL5L+CAViX5NLkwcLctlWOyYL9Q8beI9/rFi/vjq9AytamN5z5eErxYpjVdqvbU9n3CvrGYjsWm5PnMJF/rNAYWQOCz3EZ1Wj76EFQfmIS1RR4i/u2CTbRiKQOr5oEscrnl1qsJVJ7/5mj/+8I8A3C5m6E6BIeGyOIEEtddWaYxbJOwkBGc6FjSfz/EfdWx0yV9tr2KSzZyTV6LPWTqYkitN6w1fdYcshY3KtF0OhIprl+1oe026Eq0xjGN0y+b2UqVC9OievuTovKCH1nRJV+ocGpcZCKnD+HDM7dU9gYC5J/sQZkIIn4YY++f1QeukwvdcGm2h1/PatNpqLjQrZJru+ZtzNad3swUi5M5uk+G5A/72m79V/V+usKYrxkIpc78fE0uV/qoq6bhn/H6szqzvLt7z6Z+VN//V786oo4R/lGhS2X3DgbBojQcldZrTkZqO6pn0chJJVMDVGAbKK13nFaPARxMPT3N0VqFE7qoI0/GwTtQzL/7xkmUkmptlRFRoPOjqXOi5x0zZ8X6i0ibx9YzeW/US5dCljYcESDCcJZuN2mtBamPXUElE8vLTO2wRfjR//b/BGFNjkj9GQ7WczlgOuqMhnUEAUtZ6PZ8xOlShhnUDbLPgp706GBqNExoNkRTxTQy7xdnxOQDZpiJcpxzYKtHbjjJ6gge7/2/vOOwHbB5pxfSYcirx7asLWnWO8Zh/0g7pBc9jo3R8boUR3e+XeK5PJWKiVe7QFqkm3fG4393x3//zPwDgHGv0POVqh2FI14h501W/a22Pi2LF/FY99zL+geVOjU0yLymzDttEbfBWcMwO4V/1+6S7ilxolq46DzwI4//F1Q39r5/HOnpBQB6GIOFIq6w4kRh+bs358O4SX4RUT192ieRCjDWdrZUwe5RuCqdksdrck4eC6Of3VKXkFtcj5vdL/ucflTHzTfOcWrBoi+WEOol59UZtqPpmwfWlSL3YA+xkQf0ghSLp0+BCLGuwdtzPatq7NIauia+rS7k9bJNG6lC6nkWsVxdEO8EURnu2c8kn7F1enP4bor1I5tznWGlM+1SFHf/m299imaq/9/c/cRFldHsSZlz+i7TPdTgj3T9wOJJS7WYHhFc0zZ4ewLciAVQaAaVXg8hoJUVFKgwihd4jvLklqyT8bXdJpQw+WkfYVo2Lmnuj3OJ0bV68UOt2aLXZ7NX63v24x60KLHlOB4ddISoWyR6XlHFTmH5cjdO3sk51n3Aa0hy/ffL+AO/vVgwFY0aQUQh7jF1bVKXDUAwJr9GiECmh1WLFXVLSEvaaYnfJfKP6fqRZ5PuISLgtpz/fMQ/XHL5Vec70bsf6XnB6yZ5Gv/OZ+m9fRJRbdZjaTZsqNnnYy1jFOnX+/MHV7TbwRNw5rC1Wu5j59xfqO4qabk/NxT7MmOxDWm0VCltmO+7+JHyYnkWjPWQr4c+sLtDdLguRFlo9TFlL/rt3MKfd6ROJcsE62+MKbs0JOmSxxV7k2ObTNbpgdGtTJxZj9C/b1acL/BMb40GNY3/U43X+KPOU40YFR4LT6wU6CyneW+w3+F6XYVuwiMuUvuey/1m996g+Z3qp1tf/849/oPfb33PQUmfK33+cU7fEcDs7Zjtd0hLl4qA/ojcQUV17hVm4NBsipaU9DYdqMm7BdsE0UcbYQ1jRPjylFNm0tu8QCF/iNkz4cXZNQ2jiGl+Pef/36vLysy3t0wNKwWVO4iX//eGSB0EpOYGNLTSE9DwcPcRty++OAyL8bRQrKrtDuFP9r/KagaPuhyJ7atT+efvFS9C1cw5eqUHcxQauLzpOTQ3PbzIr1JsWekq8UBfddFoTnHboeSrenu6XmLJJDps+69Rm971aYPlmg5EVJAIC97wTCpFTub3+idaLcwaicFyspviC4Tv2v8ZZ3hNJnqbZtHH0p5IfoADMIyk48X1Iy5ieVEQahcNqJQla3ybNPAZtZdUGgzabnVr43VZCv5GRCCdj27dpbzLCjfALbkO0pXrPamZR4DGfSUFRz+M4UM8sKptOs49eqkU7m2+4m6nLo24ckuvP5wQX0Y7/8dMlDNVc+J5GZ/5IjHtPVqyIN2qMjbrkzViweEaHSVpjN6SPbRtLNtQ0rvFyGJyqAzSuA7a3eypNvc82W1GWaoFNdjNaTY9aqv76zo5Ucghm06PfapImyqrkGevXt1R/z47+D8pHujHfY5fuWE8E+LyrKdfqErKqI4bjl3jH6oI6GcPHH9XFdvtuQ0ffM5FLsGGEHI+O0Qz1rmOtZixe4g+WQ+qs6Q+lItSuOBQn6ULrcpElrO7UZvQaQ1o9Nb7p+mkfrvfyDK3JcKh9Xm9lsSHThHQ9STD1gq8GyjrexA2WH1VRkKY5tPzDzzqTw7ZGaRUMPNXnUcegp6nv/dROaeg5hniYQZIxEgLxLNtzdNRhJR53zzrgaKA2+w/3E7Y7i7X2/OHbG7SwBJRtFTrBo2eURtiZzXSqDpDp/SVdAfxb+inrdfi50K0uNJAinTALqBsmlZDO7/Y1+b5geqsugvvphu9+kijQyxNOXpwxEy1RO4yJ7tU5YPc9Si1hITJe0UrDjJ7P1OxXOxaRGtMFXaraYScebPv4BVPRE7x9mBPmfc6EQDusE75//ycAdN3DDXx8kaqa7ApuwjW14Ic3D3f0RLHcnc1pOj5uJjnoOCOQi6FhrbArj1D0FXfLkKFUasbLzWd88l+2RsNklxeYuXrX/qj5mWy6q3eI8pA//Rf1rk29j9EQQ8k7x9ZNwgtlPPQY0t1FzOWyracVnVIK3b6/4OFmgz5We+Hi04w3/+HfAlDVLsedDg3Z6662QZcoU5GGuHqTWuj+Husp/rx9O5Lc7fuQ5ULNb6v0cJZb0lqwn56FBMdoHLa5vL3HlSP61dEp7jeq781iwHSY0PEEc11lNLxveOU+Ui2eYEtVfO1bjF47VKY4C3qTti9yY5OMJNwxk2haL6hpHiij/Wj81bPz8Ni+5AS/tC/tS/vSvrR/te0XPcGsiGlJ3Fy3Kgop6d1vpmzrhLKhvI/T3pD1UirCyg2TH3IqT1lER50mV58uAAjnC8pcJ5Uy6b4Bfr3BEmql467B8LHEuDK5+vEHOqIgHi9mWCupevRLTKYMhO1EY0dUP18e+uHnD/iCQ5ytMgzdIWmrbq+wqAQr1R47YLYwJdRx+d3F53DB+PwrXoxNsq3AJ2iy2Xl0xJLsjrvkYrXnfkL36AWHUolVVTE//6jkcjzvgGEjJxRclVZtuLpVVpyrmXz/4XnLsdIbZBp4mRq3ZL9mK2Elqw44Pz5j6Ul40Ij4eKUsbD2cUNUxjphkZalxL6XHx7rH4auXeMK+Uac6rxsV/oHQc2UaVxcq1IFfYuk5D1IufdxuMT5Q7+K2XI6aNlWsQlSW95RAe79UY3P38T2mJjg1LSEuHBIhPk9Sm6An2NKNS1YWZAJDaNg2r86VhZt+mvPjH/9fwp1IYCUJw1Obt8fqOaMDB0Mo5N6+eMU0umafKe/j5g//QJ2rOXQOcya7Db8R6INt2ZiSK07qp4wrB4fnAJwctznwJ3iVWLKNA+5XKmfQ0nLSMKEh7x00CzamqG3ULrqR0vKV9f3b4w43uz1tyWE19wtylFf6qzddvhoPuf/hBwB2YQSijrCvc3pmSlvyvH6jSS35YduwGJ+2uJ4+n4s6arcxPTUX69sNBeIVVjobSjYTNd9dS6ctURa7f4if53ih+qxtGmgCR4m3GllZUQkmtnl8xMA7JRI5octkRfNIzcvh8SGjgx65ocZqu7lj56i99/Awwx+61PJ/m6QmS54/moos5pNUv+7cDKN22X+uP0gpRLrqDz/ccDhz2cTqOSUhn4RJqB/08KIhe03N0yqv+bSasNtIrivL4UiUzlOfVbqmIWw2vq0xDNTea+wNGmSfFSe2RYoh8lBxssdynodt9fo93Lqi2KrxT+7vyHz1t2Wj4v5mBhJZazgOlqvqC152D8gWG9pSYestK6KLCHstwuCbnJ2IGP/m7b9jUmZcS4Xq22++5us3aq1//bKH5XX4z9/9JwAW1zuivTpLg4OAVqPJRkScF7unqQEtVBGDllawlfOrLJtsZgk7S6pFzZxMUgHOywNa3YBIhL/p6Bx9o/b6yeEJZXtHJWxZaRJy/G2XLFee4VnnlIe5GtOs1omynK4vEbjbB9YbEVUwLaqwpBBIXe26tA/UmVQ7z0fYHtsvSylRUgsGJk81SilN7ug2VZWjCQWTXm/5u79S2crrJSzmFddSDGOUFTtR0/Zih55zRCIl+wZrGpnGb07URulaLtf36iBYTacMhi1sUQpOzJy2LL6zkwHxOscVNeQ69CnLp5yVAEarRSJKAXVhMm45eK5y5+12D0vogRYPP7LNJqxTtdlbwx59eT43G4KmT2f01wDcTUIGvRY9ccV/+J+feHOoXO5dsCXXdWoJddhZTrJRIcA8yqFncXKuFuNqrjN6qRZGo3Zo7J/vQ9Y8pKwdGqIV1huMeBC33/F0oiksN2pMx8edz+zpeaPJ/fSaVPBAzaCFJQoAs9DAXOaf4+1md4wbbnk5VLybi8k9TYE2eIaO322jRxJvN10cYdyvioyk1uj01fx7zlNjpC3gbb87ppSioNXMpn94hl6pNWVt9/iWeqbb7bDKcmpD/fGfbv6IHakQSGfYkA6hYgAAIABJREFUp/faYygJcM20GJwcQFfCOYM2+JLLzObsw0s2839WY2XNsVtqQ3WHDgetc0YCrB83WmgNtRHrzdONv4vUurhLLzh2dJym+v6RF1BLWiBclnx1ekIh/KgFW96efaPGt2xSpjOKTI3py1cn5P6AXEKLt5c7eqcqbO7bLQK7xH+pxnS66+BIGf7VdgbZgoZoFkYetAXfeDwYcLGyyAT68JetSHdEczU/08mWMlHv7ZkGmyTBkLCi2w2wNaGf0my6vSbzWGTEshxHwraa5zFwXO6EquwhyWg1fCKBtlg9ny5qfxW7NbvLa0zB1p4e9UjE4Mw1jbT2CATM7VklWf18Ycxql7GTvFtz0GRLSiIA+d3mlnQmea/aYr7f0ZGLfR9NmMzVz5rdotIjUinwWJSwWG6YXKh8eFBCvVZrfdA7wqbGcCSXSUa5VWst2q0ZNBrcidK66xk8iJSPVxjk2vP6oH6d4uUNFoIh3WxrxE6krjSSbYiZqbE4evOWrqh0zBYaSbJnJqmW4jKn+pRiyiUYZV2+E/UJq/+WthcRSO74LkzwBC9t7Sp6g4B//3t1Zr1nyy5S491rDuh7PeYfVHpjEz4tdLOk/qBhWTTbap1omU/iDtAlt1cvI4pCfd8q32IETf7mG8X366VbkP41zwc0Xh0oYltgcv0Je2cS3giFX90mE4Wcui5J50t2iTgLiUktYfPYMBl1jllJwZi2vMUKVUount+D/1fPzgV8CYd+aV/al/alfWn/itsvh0OT1WMRHH7TwamUNbpLV8wXUzIhZG332gxK5Xp2TR/NLUikIrFYbPldU1kypeZQWw0+3KiQVLK9pXJ0rrfKClm2luwt0VRbhBy0BuSaeG2GRkeIt9NdSLo22QlYP4xDzPwp8z+A02lyOVGW2ttvvuXt2dlnkddVVlNpj9qCLg2rRSBFOmYV4GzVH37d0RlVHq6UdOdBk3KxoZSiGjtp0PLUZ2WRcLtakVfKWjnsfYUpJdTtzhGOF7ATAOugf0xDoAZ5FNL6XzDGVPqIzT4hj1V/7x4y8u2VjL2D6ybcvVPeprdvMhLlb6ft0PEOSYS+6fpyQt+X8u7gkN1kw1WtLEfTWbNOC44kfDU46OGIcsL8BiyjZCvl7ZP1hpEmwNugwT7d05bS/9kzlmMiYq3oPr4UTAWBjmk5pDupVEliXAn3NjsuxgYKWXy/OTpg96OUzzcD0o7FRiADy6hmsl5QSkFVok95MVbLOrdqLu7+xK9fqu9/ff4rPBEvXe3vMNKMdKGs2ulkRiSVyfHyKcPEpazng/0DCz8ilQrJ72cTPFt993GrSQeoxRHb71PSvSiRdLpkVY5MIbc3Dxyf9OmJiHHZKil05X0spjOwNILHAq7+IZV4Rlu9TbFIcaTSz8y1z1p07xYxFwls7KMn7w/gN2rqR63JoUe6UP21LItDr0G6Ut9/djCmI4oag5HPel6jiZ4jlkHTUuPrWgHFMqKQIqE/vpuT5d9xeKL2+9e/eUsmFc3haomvORiiNxc0fPQHRYrub3dKDFlCwy29YHT+lLUHwLPaHB6rPZNUJck2YRYLjCs2cFz1fdswpHA8rmYqNdBqFZy+VFWri9Dm7uYW4QFnH6VMby5Z3yiqsPHgjK6uvPCGVmBUBSvBNd1OZtxJZGW/zXk9PiMQJZJO4nxWerF8h3rzfFjatkMco0VroObQ9WC3Vc8Y9YboKQRSqZunMbYn5CIfrjGSgosH5SUZsw5m3ma/V97Pp2XKdw9CtL7+E7T3/P5vVZ8H/TahRLlWs4rOqMGBQLyKuuZBwvs9PNKHDZGom3SfUedpyDlQoTOSQsJl3mRsHxJb6jk3i/VnWrjToxN+Wu4+3yVpZNHyREdU07i/29HpKU+74424/nhLFKrxjnqaorcCGsBNlbKLhHZT69FuShXrLmG7XPBKIlSraIYmor7Z5n9DRaIVdKgrFZv1TJttrMInu7yiwqKQuG2YO5R3KmxptAPSZUZb5INuF1Nu70WV+/CEkgRbYmJO2SHIU/S52kSdbouRqAy8PG/Ra/QIJY5cbFMqTx3mdsPi9YuvWUn1VZosaI6evwSbZoOxiKwO7D7XH1Y4tnqm5bs4QsXWosl8e4/jqgHPkx17OZQLp+bip0/EP6vPmkenXL7bcCBlxEP3CEcqO7dVRFeDpFY7zLI7HB4Jy7wxojQdEim394Zj7L7wADaWn3N+f9lWD3Na7R5tqciczhfY/qNavUuxSQma6t0OfY22YG7e/dPPRI6F1xElkOgey5bNbdro3Q6pUFwtkimZMyIai4RJ6aIJjZU/7BEvVxiiDF1WFXPhCK2SHNPQ2AtcJfn0NCfoo9613Hs0RQHeahlEYc5GVBa0/JD5Sir5mNMIGmxEYeHk/Fvu7lTI7f79DbvVDvdAjWl8F6K3HIIDtdDHPY+jE8lvaGus+ozTtiPfv+NeciZhZdM0dOpK/e3VdEPDU898FPD985Y31OZKaHG/SPmrt8pYOG5ALmLPrl1Sxim5zGNluGzXau03bZf5ZMbWEP7GwmL2wz2msHZguiRy0e0ePuA7NohShX1oo0mp++xhhVtWxMLS8iFecSdld5/0A+Zpm6x6fh2lqwjDUuuy1+ix9tSlFy63UOlYIjkTLzN0ETQuigc2S43znqhoRDXVRq1frcwJmgEtU6qddwsKlrQc9a5DLyYrxchYbYiSNsi5MP15jyOyQ/Ymoix1HjL1Pp1Wj7PD8bN98Fs92iLOGmUpI8ehM1Vr6PurW0pN9f3V+QvcdpfpWhkh9bYgyNR3V2lCGsYMhyLWisbb82P2otpx5Hco98KF/PEKr9Hh8FRdygvL5PsbZYBqac35+SvsvgqpN+yYF8Kg4hgJjeD82T5MbhKOzIxMhGsbVUKeqX1zfXOLs/LxBa5z+WnCXohMV/OY353/jqnkYG82Of1Rn5eHSmx7/l/e0xJmoY2TcDjwCYSJpWpE4Kvz+tXLr2mUFhOBeDnDEb1cqkGvSubbPQhvcvew/+T9TWFlKdIETWA8RlSR73IcR/XJ0CERA/ebb9+yvLhgIikyf59RCcdoMNXYEpJv5NK737G6zlnL7x/zNTVqTN+++i29eMM/v1MMZKkxpyl4xnZts57fUdtyfmcauqQMvPL59MDn/vzSh9FuzTe/VpMfagWXC3Wz3i5XWHrK+ECgB0aDhuCvpvuEIomo88fSfxNdiHLfnPYxy4LxkdzehwZmWWAbIu/T9HhMGr3onhDtSyZS5NFvWZiPaQINTM2gHwiwfRUjNItPWp1k9Aw1iNvJjOV2i1WpQfndX7/EESJm17QIi4pacCaTy3cEYmVcpW2yIubFS7Ux/VXFYWFT7ITqKM9YinV28fGWQrcpUznA7JJGW43TJtVYTmbEcyGdjUpenqpL8OVgiB0/Lx9z4JvYTgNHxunk9SmRsBgHDY20TD+T2hqOQyJ4nLr0OOufUhnKOkuMHUWo+n4zTXj75jWWoS62d+9/JN0m7KX45Xqhsd2qZ56MejQ6BzyIoVObW1IpYthGGaVeUj5I/D985gAWTcqGc8R2q6zRalahOy6GALY1THQ5INPIpGyCUMNiRwuuxetfpTVN32G3Vgdvw9AJ3IRuINIvgclOiL6bQUXLbXN5pQ6tH+dzLNExw1zy6sBi3lDfuVktQCRaQjkc/n9Niotqb8Q+8LA8UU/3B6RrlUs67fRwjQGmEJZHVysMIUN4uH5Ac1wGbYlmmAU3ywtOT9T8u42Ajmiz7bUx98sHKslz+9tDSjH4ijglryt0V11mhmGia2qtxVHGdbplv3l+02cJdKW/WR7RNsSQ8mvW8zUIpdou3ZJuHo3YLetNxU72Qs9uYctl8m3PYzWdY1vKOD4burTPfsux7JMojTnoqmfa52Pulg/shdIu1Zo0BJIy7NbsdjqlKN64TR+b5/dCSYohZ02lW3TbPpGA58PMIDXUeNu9FlXToRBKu6qK8STnbBsZo4NjvJYUtiUx892KZks8ulYXt5TD/35OYLmMXygD6XB8gi66h06e8M2R91mvstN1GQjxtb7T8NvPz8NmHuK6c0S6E+80xZZCt3CyJvN0BE5LneVc/qQgIXrZptNcshQ41q4Y8O3xOZXsja/+xsYXcHtkfoXppUxmyrtt2TWvpfZCp+RmuyTMxflo2GixetfrMCGabmjKqy/WT/dC9hh1M326Ao4vqzauF+DJR8v9gjCVuZ5MOes2uL9T90euFVz8pPbMbtOhdGqEO50oKqlSh0SijKae4Ao8qJE6eJXNgRRmbW8z5pXgbhseSWbz6AqdjF7waqQgEiP3l7lDv+QEv7Qv7Uv70r60f7Xtl1UkthcMQ2WpekcdzIG6M83MQg9rei0Jc8UxuoRyOr5PO2izXSoLYhtmvDlXzzsbuNRhjCOs4EZtsNg9oGnq/h72R6Ti+q83KdubGeQSEnv117QlfJGXCVEU0hTL2TQMyuhpLgqg0zCYzKTcOO/QtVsgYp5mVLAvVRVUy6rpYrG4V1Ztc1tSZyqUQg9eHR6TTZQLP18uOdK6bMSLzByPppRbO28OyTWXW6nCPOiesxfYR7jak60zqpUAvZs93EJIo0twnsf7Yxsm8WSCLcnMg4M+P89UeDAubPLYx65VqGN1D5qUzPvOEW41xPPUOKWtiERAsbpes9lvGQj7gle4OHpFQ8DrplkwE6YdK1Xh01SIg2+uVkRS0pxnFc5hi7lUPc7TpwKW4VZoxa5vMQ3V3/l6iuHqpFsJTbtNmrF6huE3MbB5RCp8/HhHKhGCv/v3f0OXLpcbtS6WkwxjpNMaqX6cDLrohRqLkgWmnRHkygI+b3lUpkg3rVy0MieVPGCZazxmZMviKVTFPlJWZVMbYGr3fLhWHvOLVkXHV3tkujX5ObrnSMKBadAgjNWeGTQ7oJdYEtb0ey0KanxhrEnznKqpLN59XJOWNltZG7P7CVkiRPJpQdDQGf9K9en16A2J5EMbs4zGdYE3VJ9d/0UfTl6eY6L6u11sKKXq7qB/QMs0wZVwdAxaKfugc0hdhxSo32dpyJGj8kBpnbMp5wzP1PcPoxbOsIkuEQvbd2gdqL3dNVoY7oy9eA61a5BJdfnDpEZLI0LJHfd6NbbARf6yTTcRTlP9X224zJaQCcOP0TDQJTx3P7uE2GIXq89GnT4tW62LpRFheC0CIQTQsz2mZZNKle+oGdBw1LxkdY0e5pSSd/QsnzdH6v/MOsesYk77ykvMyxnrrVqnXcskrJ8PS7uHDUIjoykhzzzTqUXuZzN9oDEoSSV6VaYmB0eKhq7ZHbPdp2xd9bfewCd3cuYbgba80OmJYLdrNDC9JkZXlCKcNV5XHTCT2/ccHHXRR+oczouU+WMk6/ITRmoyEHYox3tapVtFavwDmsQyn+POAcPhKUFXzeHWXnFvqX0UTjbkFKQiu5TEORvJR9t2RW2VBCIjFxQ6eeViCc1UczSk11F5zdksx6ob/O2v/4Mam69y8pX6DjezKOdraqm41eMGTi2Vq+X/BmNMstkyl1CPZwTESzVQVbal1x9RS44q2eRsHn3KNCY1DFLJLxy9eokveKSG4fOw3LPbqAPc0ce0LIsol+KAImc4VhfrfpORdjT6rlzCVYLzqArudbHiNZmU4AZGzmI+fbYPZbEij9Th2hl1wGgSySW0mC2hUu+WGxnFes/mVv1tbbbYC+bHuks5H7bxUrXArm626L2axkBtlHCZfM59hKuC0K4BteHSfUaui0L7osaJawaiIjFuuljCoefQoWE8X1KdRFOiOTR1YXdp5jiiW6ZnIePBAKNQB5+bhbhSQmxlJQ8PdxiZOlBulgv2wgkZHA7RtivsN2ojLPZLvNJjKHysw96Y+ULyfsuM0rEpNCm3vl0QS15iND6gLv8/9t7kx7Y0Xe/6rb7f/Y72xDknTzaVVXXLt8y9xr4IMWWKhBhhITHkH2DEwAOwGFiCAX8CQ2YMGCALyzLGEsLNrVttnszTRbv7tffqWwbfG+GqjKiceAQV3yhCEXvt9fVv87zP01ClUnP2RI2dJbRFbluQinr3cr0gT3KMXl3sL04txmO1iBzfJ8978o1I7WxTRp0a+0jraJoNvoTb8XQWac7mb9RBkP1tm72Ac7bZFYGeECeSfxh56Jrq36fUIbAdEqkr+pt//Q7rjXpmWD8OYx00CZ35AfF2TbtTB+bJdM5Q8rqL5RbNHJNqIpXVQzpR7xJ4EbPAYyn5Q7PcwdThILmYTzcboolwnE49pr7JQIy19+++IanU90UOZARUvVoreeBS7NT4+r3FeBSwaJ6WITo6eUlZSTlD/BYvEMXuvEZrDQxRU/cw2MnBOgsnWJZJbaq5GY5nSJUJV4sb9jQcy3AZXo+R5aSaSCJNjvjmozo/Su3Aan3An0pYuczZrNT+9QwLOwop5eK1jQy9fjpI5TpjCgkxL9MYP5hjyTlkeyapGDXnkwB/EvEv9yL/VTXsSvX8VoMuiakT1f/PTmacjxxuZL35Rk8kucX/8LPXxJsNlqMu831d86Mv1aXnVDVlluIKV2u3gWis1onnR+TZ6sk+jM7njOYBrfR3MnbxUXO46y2KbcZOaPLKXcV8rsLLQypa38AZq72urXvqao0RyflpFtiiTNHFMa2m40iZ12Zzy/KDOmvSfcHRG4uhSJe9fb/DED7UwXDI5W1MaYj8W/4YVNJLbZ6bGzQHNddFnjKMOhxD7efxdIorRl1jBWyqlrmrLvPFfo1nq3XfHzySrKISCbcm37L6bkFdqjNzO/bI5Gwt8y2zcMqVaJ5+/vUZnaeM3zJOcG2TaqfeO8Nmeys0eMuW+Z89ORXAczj0uT235/bcntufcPtBT9B0c+qDkFbre3xhqTgNLGbTkJnAZ5dxzeKd+r+8SnC8CGcgYT5bQ4x/DL9DzwxqIdcOfIPR6ZRBrayJqs3JS/Udlmbw4vMpka6slbsPl2SCLjp5+YZWa2ilULKqW5Z3N0/2wXdcdEGvbQ63jI8+5+JCZY8dp4FcWYPHsyFVOGS1UpaEacBRqJCUjq2xS30+O1PM7mG2oK4M3gTq9y6+468/SjH1XYEZ6UgVBKejF2hi/du7GtcJGEgReLHKqMUTNCYHTIFFf7951YGsKFjfigjn5Ctm97phekGfd1Sd+o7Q0tDFUg6GBsnOYics87d7neYeev1pw8sfnzAQT2ykRdwsMhzB8DveFMNVFufy/Tvevv1XJL2ayH29JjpRYzixfIaeQWcJf6Y5e/T+vaBMD+WKjXASmpaFboAlCEirtwlEL9E3hqSHjM2VFL7GOZZo3f1f/+yfoLkOZ3NlVbYJxNuMdK/Wht5alBK6Ozo30KnwJVTdrAp0Qe0eBxNMrSSUUoM6T/n4TgFoXo8ee7M7AQkFpcbAGRDda7z1JrGoqVReSr6vKUbCO9l0pMIm8yFfoA9ecHyuvMZP+yts30LQ5jRXJYkADkaTKU1VUm6F29HzcSXdoFs9SdHxTvTmvEHI2xs19x83Jp8Sj088TbpgehVL2WtZxwNjzDLesLjbP0QXZuMTNIlkLBYHNHyCSARSnYCRpdbTLr3D9SbcCR8o2zuCgcVsrPq43+/oRBbdMBoME1rREm2b/EGcN8kyfNsjjDSZi5L2jxTLW5ZP4CkPIwpOqNOcWJRuhsPoIcRrajm+7vL1S+W1BeGYoZRfTeenlK35wDc7n7lYpsvIVZGdmRsQyr4w9JS7wKEXYFTeFCQCoLJrHWqTXpRAih4MKdHwBj6G/nSJRBC0jI/HtBIxMPqY7Ur2XRjQNGAISCywPCrxmBNtT4lFIYCWftNzkwWg36c0YkLx7pK8IW+rh/FIDYNG1FGMsKOzNNJChSc9q+W2Vn2azEY4nsVAvNt4tX70/ruDOr+vbldsRF1lnaW0XUtvCHgwCtEFybjbFZi1QbuR0GwSkggheYcFxggbFX79dJWwW9m0UgJ1iGrcVpi7Rh51kTyEv+02QnPVWkxoaSuTQMhdyjLh7Se1R16e/TswxmgmZJKnsZyexlCXycnREWO/ohKmCLPNOQ7UxCziBvyGkS3SQr2GpguS8JCimw3HIp3kjjzGXkguh46dbDgI24am2ew2FnuhJNKwiIXZ3t7s6Gqdm4UayDqtKP6IqK5vBfz0M8Xa0TgTbMfjtZDKNvGOeyDdYnOgutuiS9lHWe2ZSx1N27R8/OaOg9Sb2L2PjsGdoCXjZQJCzxTYEdPJOdc3agL27+6Yi0jr59OAsmyp7i9vdtzdqIO+LDz88GmaJaOrmRglWxE1Nl8eMz9Th/Dnp2+oUpe1EHHrhxojV8/UtRLDKGlr2STWBG8iB0HUczKfke3VRqB16Du4vFPzve/WJMLo8btv7zjELUM53AfTzxgJie5sPGQ+n9CLLrktaLzfb6sbRVflWNkDIvCLz16jaxEHUZtO9hlXlyqL9eLMR0tKtoJUPfYnBCN1ub4/JATRHF9Cx+lmhbfak8nlrS9aplKu4ecWrtfSZCp80hc7HMmrrrZbwqCjFjFgOzAZTOVz/uNt4UoeqnMt9FDn7kpttnybk9tqDMsqx+w0xlIouK9KtoW69C3NwS1K4oOapyTTGek6N1Ii8T4vMTz1LhetQbxdomdqg7fRa/yR+r/LxQ3WKIRIralN4rIQlHJBwCbtyXk6B9KVKzoRH/bHOoWwDPlHM4K25/5jruVQi7GwL2s8G0ZSC7m82VAKGrWlou0rFnKgOWXMvoXhG6kZHk7ppC51k96Saylho57j+g6HXM2v63ZMpj5epcZNr2o8++kg1WfjI24l5Nn1LXo0RpN0x8SfYwlZf9nkeF7EseQ5Pc3DFuyBVreMQofQViG4yDSptJTxUK1pD5tKlF7WuxvqpCKYq7TB0XiEJTRtrdPi1RWHVNImmkXSiPKH6aBrT9enVc2G7XVFeCTlFGMPHfXdpqPk0GxRnnEdG91S49J1Npapc3OpzhaNAcOip+hE0cTI2cj62uYLRi/POTtV6H4j7bkV8vx0v2W3SxhLzswwNS7O1UXhuxHbuIFOPcc3HxtU8ULC1k7LbCjsQL7FONJYb9T5HW9LkkaUTiIfPxqxktq/6gBmqc6B46OIpnT49Fbt0W9++Y7TaYQjZ327qWml7KOyHdb7Fa6kbPbLLdp93nx5h1NuMKUm2tQaTo7VGfny/N/hElwnGpklhcaDCYOB2ngn44iyamkkWR9OJrhinZlhSmGZBAJrnc/PWArTeLvb4UU+baAWcZ0m3MVrdIGt74s1U7kgd8uC6ekxZ3KBpJstueRF3OGQ/ADRRDjkjD32PTb4e62vC45nUqB9+gbDsJhKfD9tG0SMgHgXE7mnBPcqHd4UMXgJTIPIdGklT2EaNm3bcPPpPQA3Hz7gRELH1UXoyYoj8ZoNy+R4diLfkZE0ezpLWTKabTAYqb/lScyh3D7ZB79wqBqNtFFWWVP39AJASTMHr7BJrtVnXbsn7O4PmpDTYUu9Uf97ev4aXTQZj8ch51OD7aV6740+xQ12JFL4/O7u9oG2bB/vcKwRk7kyHmYjF1Pokkwf0qTFkTxaGj62fn2RxTks1mhSs5OZFeGgodmq76sqB9cXT9jwsAyfzyXJbltH/PKt5E7NEQP/iOJGHaDVYYWXxXilOgjGRom2VX3ynIDPvz4hl01T2RmFJM6NSsN3E4pSXcIvX0wYave3wGNAgyVrqKrWbPqOopGLri7ZL9W7jXST8VhnLZ7J5u6WTOq/2mTHVZ8xdkVFYxyyvnMohHP2UFggMPW8qLG6MY4UG3/7YcFB8uaO/xorDMnMSN7HRReZIx0X9xgm4jV/X51yEHbsBPMzn0w5SFQg7C0m4zeUYtVXxQFDcsd91tFmJXdSSF/XDftebQy901kvbuhtASMAXdeSCv1fme84CFdsZTYEzhBbeIJ3+5ymVPMbRj5FdsATb8t1NMLJ01GRTusIxWPtTRtL76krtd6bLMfW1TM818RxfDpbjaHZd7QioeaaNcd+yESAKZqpkRcNfS4RqsCm9tT6npcnlF3KSM6zcOrRZ2o/NY1GmZsMBHjRahbaSui/2j0T/2l5NycraXQYSI1b4E0IA6mLHPTkjctB8AiTozNcubynzhl92fH+O5H1qg20kc9GKBQDDUqRP1vVOqfDIw43gn/IU7pOHW5257BdFOxLKVCfuWiy9+4WK7S+wZF61tnx4wvEk6RwpPlUsu/cWmd3s2IvXvEuq6gFoOfNJnz2s1e4okhhrvZMKvWzfbCw24JcSiKCKsMv4YVoghZVTH+n6gLjlc3JLMTs5TnLO3QhWLiwAbdkIl7xZ2+O+fEX6t2jJ4za32/POcHn9tye23N7bn+y7QevyGh4RiYF3LfXDXTCdJ53WL3xEJvN/J6sUFZVYwU0TUosNEP2VKcR1NnFZ19QxRVGp1zWrjqQVh25lBrs8h5HYMzj0OFsOMezlEWQdiWWIBIHmo/rakRCVbYwXdo/ouKc7ndUvrKyNpeXVJpNbIknGMfc7JVVFxyfMPJcDtV9+CTFFa/mbnNLFDrMBHreJQ2GoxFJZaiWtxwOwrLvaMQ3nwgj5TVNfYdSPIXN1Q1JWiKkOLieRy1Ius4wGUTBk3045B3e/IhT0fNzjJ5IoMtOvubym/d8+LWylkaYbAWafXSskTQJGxE2HWolvghN7u7uaC7Lh5zk3dWaVbwBIT9u6oypUKFNz48YjmbowobhjoeMRWEDp8PuGuz7AmbvMcJ1K+kdtwlYXqm531UxvmNR1OqZ0/kRJy+/BqBtpvRJQyRIzptFychSHvPReI6t+xyLVlhamnyb9lil8lTaQ8ZUQrVDM4C45zhS77reF6yFwWXguUx8i9tEjc3ENGkr5V0mxeN8VCLrwsotBm6HJeU6h31zDzDGtVuazsEQD8cYnqFJmLjAout9dGHUqAsNy+5pBSlsnDlo4iX1bc86NVis1B7n/t4fAAAgAElEQVT6uD6guer7jo5OcRyDaqjGZrVuSQXZZ45mXBhH3EiR/fc9QSccE+bCZrM/EAgsvaksRtMj4nvx63r3IOzuxS3x9Za6UP3wPR/fFbHStMTpKgyJAjmUdFpPL7nkxvZoBE6v2zXjqYMpyjOHMsYSb3o08unLkqGwmwS+/qBl+f1mmxato86LaOzjOjq+oGjbyESXMHlZ7tju9vSSk2zNhkOsvNL5y3P6IuD++LNMqOotlnjlrlVQxJIvvVrgez59rNb3frOiPcic6hp1VpAI+UWNziGTUO3mjnjwtCc4nJ1wqAxuPkquul8RCmnFydFLEqOjDdWcruwJx8KYskw76gz8oRIwP+z2rJKUnYQdncmIMpMyl6rk7TdXtIYwqPTdQ0G+bnjkWoleqvG//W1CdK72fb7UcAwTuxeCje5xydNmr86aD5c5izvJZVoD8oOJG0lYt+8ppCSiMRq2H35HfqPGzdhn+JIvHDYOXuRybKs9OvEnDMcBA/Hobm9uOZLSvLIsiXodQ0LqYeei5f+21MIKNKaB6r/d5RSxosvscounZ0K1H7wE6yKhl4Rpsqm4FNYK34sYTKbsJRbuFQ1FoTZekYOr97gSdtt92uBITDfUe+K2oJENhd7j2ybLpRqsQ7zjrlWb1HFsPsY3dJ+EUaRMyQ+yoLOcV69fUwgLfrq+Jtk9DYxJip6tSH/s7u6Ixsd0kTpQKt1kOlIAk6OzF0ThmMBWLvRudYcmChaDyQBHM7AtlRfI7Zbtdk8wVJfryxenXH5UPIhtsePs9IRWDiZdg6ZSz+lqA7sz8KSWx+5cfORvjs5kcPxkH9KqYHn5CUdYQrR5gyu0Rttdwua7JUieIjEdRpIsvr7K0doaR96lu7t8yLHui5jt7paBSCk5ds9M6zEE/PL5ZMz5S8n7RRO8SchGwsHhwMUQRXr0in29IjDU2DhCIfUH7y8X3dHkC6xCGPAri01pUwptmRGY9KVAqiubu2XDJxEPvX13QxSqXGOT23hhQyRQ7N99t6fsQixXfcdqqxHnwtt6rNFoJbrkPuJNwo3Aq0PfYehFDIXLchIckwonYVY9BgNshNqvq1J6raORzZ/FKzSpZR00GrPQxdOFgzSDXBQOjKZiNDUZCrvJ3dtL+r7DERq5Ms3o5IJcrQ/cxi19LTJAWoYfqgPz11d3HJqO4VSNR1GbGHKRhkOLwi/Q7KdzIKEz4kwMuYm5Yyn5o+VBZ1sOiKU2a3r0kkYO+rtsQaUZ2MK2so7X7CQHSWCg2UcIvgbbNomGJlakvmNbV5QTuSCNilqrKCXFFEQDIqEdDBwbM0g5lf+tkhX5Exy0AP7AIstVSLmqdKrCoGglPBhrWGK4VVnGfhOjSU7SrE1aEf/dulCul3Su5MECm6zashO1l2rnUwktXZNmOJZFmki5Q5nTyKVTVSmL9YYuEzCO65LIGbndZw8h5O833ZnQtwaHnRq4ko5Lydf9Zrmld3Refa4uOi212SzUXORxQmDYpIk69+pUJysTSjG6skWBJbJBVgCbsqCSyZnNjgjDWr5/RxSYSCSRLR5eo86T2dmQSegQ52qf7C5/8+j9j0Xc+5DEHCS+Hhkm44sjOlNdrAEdzith6+lt2r7gSISZyzjF0OUss1oMXcMWh2LSOUwGPq3Imp0fv+BcmG7KsoC2eeBpzquSCjVuTb5jNIRewrPoQCa0j8dPn6sP8/GDf31uz+25Pbfn9tz+f9y0/o+wGgBomvbH//jcnttze27P7bn9f6D1ff90voxnT/C5Pbfn9tye259we74En9tze27P7bn9ybbnS/C5Pbfn9tye259s+0F06H/93/5TaBT65uRoSCNI0SLf8MVXF6yEqeFmeSAT2irH1SiyluMTBWEPfJ29sKe0VYKhd5hSI7DrTTQOnMr/Xn9cUMt3hJOQ7X7JRBSuXcMhmAi8Pz0wGh4Riq6X70S8Plc0Wn/10z9EJ/6j//1/YnOlYPBuOCJybJKNQh1ORmd8XCoYLXnB0dkXuEJX5AUBbS/QY00j9Gw0Qa7uspQ0TrjbKK2u+fEM01L/25oOpmc+iJdimA/af54zoLN0vnurPmc6Fl6onhkMI45PP+Pvv/yPH83Df/53/z5pAZWQRr+Z2xx09bm3lyvC0GAkSFXbasmE7cI0PGqr5z7tm2+XvJwpZNVoNORA86B2Efk2oeejC5I0OWSkgtDTe40yz6hqoWQqSiJN4OzziHnk4kjZyc9//uf8l//wv/mD9//n/4tQh328JpeC2cDtWG5z+nvaMDN5KLyl61lvLwmEqDm3GnoRdDaKmqPhgNmRQqhlbUHTW5hSEF90BomQeadpznJ1w0rok0wnYjBQaFB/7GBZAyz5PbQcfv4Xfw7AT774KW/+zh+mEP7Z/yHMMnbBYrtguRK2okKjETYbbxIxNHpyYcFZ7mI8R7Tf9jH/5je/4niixulsHhG5Hr0wg0wmL1nGapxukxzXMgmFljDsaipBHaZ9zSFr6IWN5POLCYYocxx2C37yxQv+6u/8VPU3+MM+/Pf/w79gtVVk6jo9hbBBNUWF43sYIiJnU0AnqiA3t3RNhyEo17yuiA9C5h34eI6NIXqh09MZTa32J0BfNXhS9mN2PavkQCnlUrt4z720+/HxMaFpUQva++XFF7z8TKEj/4v/9D/4gz78j//V5/ytv/zbALjegG1ckYuIcV0W+K4gB3uTAo3RUJTt0wpLyn+Kpsb09Ac6R9tyiLcp5UaNjVPkmNKnqu1wRzNsYZ5xzP5B/zQyS7S2p8ru5V96EiGvX6+u+O3vfsk/+sc8av/z//oPiA9Ldum9MoVJf1B9SA4VVbNnIqTs9vERh50wRTUF8WKPK2fLaD4gtGw2grbPdgcMIVyYHx9T0HB7v4ctm0qK+u1tySaJmY9FB9GfYouiR+qY6MBnQjfXFAn/2X/y3/3B+//Df/B3AXjz5guaVu27PKlxypbdR8X6ZDUarWhnWv6MYDCllRK3eL8h26j3uvjyNYfNgu1Wzs/U5ZB8x3is5m0yDTAdUbbRQ/IMJqfq3ehqtEY0N+0BZW+Ro/ZeF9qYUmL1y998+3gSfq/94CW4un3HSJhBNsuOxVbVwrXZFq3cYYiS7dAZEQodVmc0WDaMRgJ33i+oGxE+bCscx6MR+Y3t7XvcsY3uKraXQ7snjVWH9cCiaip0gdJeL29IfytQaMPk9LwkEjHLPv9Iu3uaKsqsD9T3vewSQs/hRFToL04iwrliAolvY6bHJr4sft122EvtWZ+1ZM2GU2HdPz4Zcf0xoa8EUm53uDMpn6gqknTHWOoEg+mEQiZK1132SczxqVqolhtyK2MarzNq/elqluOLCbvcoK9kYZzNMEy1aIzOIToe4IpEj9c7lOm1/K2l73MskVmy/Z7oXP3fKHQ4tDsQJWZtcIbujqml9vPowiC+Z/ppG4ztLY7U7piHnKlQvI0GUDcVZqDKKfbdY2X5xU6JgibFhqJU89l7NnF6hxkJl2TXkC+UQWIFLq7Rs9uq3/umZC81XIOgo9LPKEr1Pft8QxROcKWuSnNcjLHwk+4TOrNjHqkyGMOwMaS+saJmPDYxpF7p9m7BQoyj82T5qA+/+faX6hms6XWbW1lveuOzWKj+1b6LrxuUe3UommGPLkWE7W5NX7Ugc2G6LqusIJM1tPV27IVW6uNyRzQYMEzUodwkN9hinLjTOZvqQCvKGLaZMbhn+/j2HYGR8+rF6NH7A7z93f9NVtzzkQ6w5GBPyj1OqzEy1Jxe7m4wxAAMQoO6KnDlwqho8GXfOXZPlq+w5TLTegeNlrpW+8bxdSxDzVOWZ1hGTyP9NbSM/p7GrHLQrJA0UettFV9h3j1NOTYcvKQRRRHNiAgcg6Ls5N1qWmGPMSyfvuvQTXVghoFOI+VBodtjNTq1cGnuthmmPsAcqTVs13sSqSfdlw00IzxbXa6O0xMO1PcHWoeuNTRSHtZXCb0YCJvNDtONQOpEf791WUJZGSSiIGI7E3xhv4pGPr1WokktSbU/YKzThz7kfYcv5UDTsc/hbkEvZ6ZRaIylRGkURCSRw5dS79mXHYmMrxbpGIuekZxZYWjTWWpdjsqcfXkgF2eE7HHNrOV/pf7Uzqhb9fdU14mrLZOB2mtdbRIO1bpc3OVcfvstvaaeWTc9rkhHpeuYzU3K7bUwboUBZ6OfYInyPIeEMxHF3exKmhSsuUgkuT2DQC5aR2dqR9xkckYZNp2mykVOjx+rwvx+ew6HPrfn9tye23P7k20/6Am+mgQ0pvKM2naH1ivryNQOUGroItCq0WDU6mY/fTUhzVsskb2v8w1OKZ+zDLS2IgzF6pha9FFI66mb+vyrUxaXQqDdpTgGnIh21thsiYW9/dP1Jetf7Rj9RIVMHMcl1J5mmLh4eYweKtdbc11svcaScJVnVrySMN6tWVPvFny6Vta3NnAxhSNxMhvxZ1/8mEB4J13Npfc6DCG2XcVrbnbKozP1njIHT3gZtabH9VQfLLdjvc9wJKxomy0jKRK93uekh6eLa6vdHaZp0zXqc4tdg3miLK7Pf/ITGr3lnrA+LzpaQ81LXMVYAxvzntLEM0hDZX2mbUJS5oRj9f3GsCeuDnz32ysAZpGD3Ut/9RBd8yhaZZFOxyEz8TxttyRrI3Qhgo43j8VQawnBxZsbcmH3qG9NNvucmQgzN1lJcV9k3pYU+y3JSnlYXqNx8lJZuK7v4Xs2UagsvsD30TyXlYSEmm4FhfAZWjpDL+eQq98tdEauYp4pjRa9y/GELd+wazY7xYRxdfl4Dn7zQb3L4fY9pefR68oCnQxPiMWWrPKWD1nFQVj2T+wRA/HYPd9iFL3BH0jReZ5SliahMOxsDx2bRP3v3aLEpmcvPK773QFTognsMnRM3Psi+7LlVtRVrm5L/CBmJyLG32+H/Zq1cDT6UcJgKCHldEfnGLgiQFvWJSNRjYiGEX2VIPzZuE0HQlpcJAWmDr57H+nIqDsTQ5hffNPGd0UZooHDck2cCMFGFNKJ2LQbgt5XZBJW3C5uGLlPe7ONOSDL1JoN/DGW71LE6vtDz2cyl/BcBlZd0xUyTrWDOVPPtPqGLL+kN1WnisqgySwMUz3XC3VsYao6ImIajeiFA3Y2tRlN1X5O0z1ttSWUon+nrxmJtl+Zw+Xdhqc8wQ8flxSmgetJ5Kdx2Evf7R6MyiDVVHF+H1dciajA0A3Q2oLJRH2ub0CrLKaOEEq3Gm4lTDO3KdndNa4tJOymTWPdk7lroENVSkpluSGYqveczua0ccF3b9+rd+sfR3ac4y/VD9NzRkLUYCU13978a2yJ7LhZQylh6jByuL58Ry7CAbvNLdFQfa7M7tit9pjC9LNPYkgtdNF+pN/ivpA9qzdY/ZhO1hCtztYXZZt4i3dkMB9fyFta3G7Vuji0TzNx3bcfvAS9QYUvCyNOCypHHMfexnF8rHuJmv0Oxxf2hb5hNhnycS0qws0eWwhvt5sldujTitSL7w7Rx6+pcrVRhuEI80Qtvu12iat1VCLAW68vcWVC5o5Bo1f0cjAYtDSbpxljDvoaXWiWQkfHSEtCKX8Mm4orUYL48M0NWZw/hIgCc4zmi9qF/YoyM7j8VqjRbAuzyZgORcH7t2/pRY08d3Si0U/QE8XE4o+OGQkZbFsUfDZ/w1aouhorRTdVCKo0KvI/cng5nsvZxQWFqIIntU4pF5Q38ak6A1eUC8LTMaWumBr2hzsut9ekElqpi4ZOWDN0TAbDExxRlViu9xzyJbGu2E+mwRkuau4vb3aEtsVU6LGOBzMcX81ZWTqMJza6HNh6/phtJXTVOjkfGtxuVc4gLzSMSmO9FsYHy+DkMzVmdpHy6/WeVgiOx8OQE5Eg6rSGprHYS0hd27eUh40cOOCOXAYS1oq8iN53KCTkHLguroTnHHOI5Rs4YoB9/WZOKyTgJo9DQL4Ity61gnRTY8gBtmnvwFcXoj01GA0DRifqOeXuQCk5CrSW2XRIeKQ2//aupOsNSrFeNncfSDKxZOqYCgtN5JvsMiUVOq66tii3GZEYVk5v8lZy7nprkKQ1t+vHVFcARyc2oVCz2QOPSsJxtdbiDR3MkdDkzSxcYf7I05h6v8NB/e9gNiDWxDB2LGzbwJaQuul4VEUCkq+sjZ5GKBGn0yl639Oawn5SNLQiil2lFofqQJ6qsdIZsNxePdmHzaancUVE1m1J8z2lCLC2tcU4VWvUcnRCvaGXPP719g5dQrwnwwkD55S4vif6rsjy+oHFxHTH7AXvEAQ+eefjSiivayz2kr87FD2eFtBIqLqta5JczZlmz5hPfwS8fdQHR3cJHQNLLqg+yymE9L01G1pLx/SV0bczYhZLNS6N7/CTN18yl1xxsqkpqwGtKJXsi4bLK2Vwpqs13nSCOVRz1Q905kIfqBk9Q3sGgciqJRUf3osRj4nuuiSiLNBL/vP328VXf6XGwprgSvmd2Wecv2rI75QF+bvvfokRCuvLeMDIc9iKJFRZubBTY2j3FYvNjmSrLn1Tc/AocCt1fxzNB3wjOX5vMsAchOSXam1YYwstUmNY6zX5fst8dk/yP6EUVZYq+OFw6A9egrrVMjiWJKz5mubXYg0XBW2dP/C2xYuCswu1+BbvN9jjllqofNIUWonTlgcDrdYetLrSZYfWlxgD9Zy7/ZaiuFee3pAd1nx8pw7Nton58ecKQBOdBry7WeCL9xFZLob+eLIApiFoErfW+z1a2eCKpl1xu8WS/M0w16k3Ocm9UkR7YPZKDejq+opq1TLuRNIk3zKcOUwk8XtlX9LIoeFOX1MPXxEf1HO8KiT9pPpnaQ1Hpy5zkY46uA4TUWufWQ5r52mqqMksZDAPaTs1bk6nc0hFNcLt8bIe21N9nM9M1p16r8ofYtZbYls2GBbdqZqnJM4Yzo7xhQLJ2N1g9i1/8Vc/A+AonBOvRMqot/ENi9cnCnzkuw2OABB0z8Vra5ZLdbH70WPL1xbG+LbaoIshs032eIGFEQmPa1PQi3F0G9/Q9nt8ycE6RyNi0RcrypJwFNGkkizvPFqjpdfVcw9pxUSowaoupaljdEvNcTAcYwlQo9MNXM/HdtTarIqeTDZex2NJK1OUtoPARJ8fowXCj1m1ILJh631Mki4fDo7V5QZfnj9wLXZ9zmmkfu/dGf0+wxSaur418TXV/6lZEDW5stgBczJlNJQLq9TJjY5OtMPaVsOUg77tWm53Od9++/QFEi8+ocn3BTOfolKHq++3eHqD4cuYOgaHRM3jzc0VWrXnyzOVW+tsk1Iuj843Cb0pmrx3bdQc0gPVAxBsRC4elGmZTGcjOvueEzKmkfyx7RpYhk87Vn1qyoIqe9og7N0hpRxbu6Sh6QPSRu0LXbfYS664r02MqmYgyuODyCMXjcKu7mgqnYGuLv3ECtDsku1eHcT+8Ix7CZmyN7laFcyEB9TubcprtS8cq8cb+NytleFXllvyWHALVUl1L0PzvTaxoddMVnJheVjYQjvYeT6NDYF4tNtNgh0oT8jyBwTRK2rx4NJ0S5q5eLL2bS/AEgMkci2KTsN11FrWLIdYwFVZFqP5GrYcN3nZU7vq+2t3RJ0eSGVO7fYx1sIXA6zph9z+RkVPdBqavGe9UP2Pm5ZTR50tRZISTBxOhCvWGIKXCEhms2R1vSURUJxDhzWyGcxEqqyvWe/UvLwaD6izis2tumiTPuPVC9GLPAmYhRFFqdbtYgOG5DkHcsb8sfacE3xuz+25Pbfn9ifbflhoKdDZ3Qs2Xt0+WJ/jsa8Im9cqbquvKwzJC5hjj7t4jSmhhenkhOELZWVsBju++dV3BPZrACLfQzd1DFG7PhqeYA6VlePmBnGTs9pJOcP0iPOhkCj3GTQ9oeQeZlOHLH+a4W0YmGyEnLZY1+ze32AZynrwfTiIknyXd4T6Me49qnyhU9kSrvEa3PNjPj9X8eb4m/esLjdU8lm38zElXBJYIQyPmAkKUetdVqmyXIJJAL3FREJSutmgt6I44PWkm3uo9R82b+wzPQmJhPW/cFtOSvWM4fSY67fvCKVk4mJqoC/UnK2zJZ+9+hGvRDh2dbjh/FSVUsR3S2qtRkd5P1MTjo8HmCICkcTXbJYH6ZNHGA6J5uqPE8/Es9VzDg3o5YajIwn/PmFXbTZKeVyzemYzydEMaw4HGIVqCQ4bhTQFeD3/gvzrH/PpowrzncyGLDdqjZRFQtgWDwt3W1aYwEgENKuyZSdq2tVyh5nnhK7yorRhR6urdZrkHU44opb1vT4s6AQZu149FhK9fP8LAMLhiNMfvca7UIoXV3/ziZcv1YuvFhmLQ8FBWO7N4Rw3UGP24vgI0/IfhJqT6kC6PGC4ylo9O3N5LeP77W+/5eP7T9giOz8bT2nFitfsA1O7I5H8bJfe8FrQoJvVgqDWHsK/329FGTMSj2Y4tOmFkP2wWWMEOh33IcAhmeT9el+j7gMqycFexvuHUKHrhbiWTiOzUWYVXhDSCj5gs1pgSc617hr6DkqBavdWjyE6k9OBR9N2CMgS09Aw+8dzAHAbJ8xFCaU3KqpCJ5Uoge1O0CVCYVYZmD2x9KPtfXohma9tnyRNSHYqmrLd5+yTDFt0JPW2YjZX3pduB6xv7vCE3DuaRPStaOGZJbppshJP8JBt8aTEqsPAHz6N9k5iFeWY+5bMC+xFH9S3ppR9g9+KB3v0kpciSn4cuHijkG8+vQNg9+l32KbDq1PJz5sauajOl2XNNDgCU5293sBjJ0TvVd2RFynxVv2+LnPefKmibKZr0DQ6E0PCjPET0SmJ8s2GQzbiQS7evePT5ZJ01UmfRlyt5fxcr+loeD0SUvB+z+1BlYkdlneQxLwZS2lLe8CoSspWPbdtNBrRX62tnLqr6Sw1Hl0FeSqi5MmUIPVIt2q9XW5vKKUk5uzFfZ7w6faDl2AbWWS5GtT40PBKalccvefy5gZNFt/RZERdCfjgYOHaLjcL9XJ/Fpzy5fA1AH99syBqCsxWgTo8L6TsdjidclfdOudM4NZDp+Wv13tiURvXmnPWnuRTVtdYs4jBXP1eVxXx/ukSiUWe0GTiIr+9o102NJ5yr//6F99Qi3IA3ZjNymAyUSHQotnxq18qV//V61MO2pZvJFfrrXK+vVrSST7n86+/4ORYTdqhaVm8O6DLQTwMal4eq4PfP5pRc6CWGP7LkwmlXFBJWpAFT7vts7Mp45mLKWGPBo12qKau6K/44kc+rwVw0dguyUGFWV7lNcZ8hh6qS7/80HJyIdI9XcbdIiZeqY1wdfVrgugVpkCjv/7sC4amKFHHJS/nI7RGHRp1oeGKqGvycYc/83l1oUIkgfGYom+VqfGOooBelL+NpkSr7vBkCU6Oh7RiSEXjIVZtYizUgt6V9UNJhKa1ZNma1bU6iDaYuK7JybF6bqu5dLUhzxxhVA6WfZ9r2hGXoiwfr7B9m0rCfpvlDS8uVF67ax+DAa43ygCMrJJ+HWPr7+VdS0KRB+oCWO5jhiNVdtN6PtlBvee+2+G70EuO3dh8wDYK6ATstFzgWcfSB5O007E9tYZKM8ONRE3lAH3Z0pYSYu9tNp9UScx2v8a2O9xq8uj9AbS+RRdjSafFkWjdPjIYvZjRipr3crUmFSO2cDzK9MBS9pdl6nCvzNAXZIcteXE/NzUX4xm2XASLTxl9ImEuvaf3DUrJ/ztujyW5NM8o2eU7LMmrW7qGIWmC7zfPjmg1dUFsNjmm5WBI7rrUbTRZf61pYmk6uqhBeCOHqheViPYWvdOxbHUJN0alJIMklHi7u8JqlXGoeRNC2yKXGsZPuxRNagH1JmPj5Ow6AQIFA/JK0kBNR/1HDPPL2w98+eLoYS98uFpQaWoyhqVGZWrU9xaBZxEJSMfsOqoedEnnLBYpXx55TKQW8vrTjut3NzKGHlkVM5CwfVW2bEQWD13DdzwQrMZts3oI2zsjF4uMALnMzccX+bBTe//EnXBtqbPmbVFDF2KIkHC9PhAv1BpNDxuqumP8I9Wnl68GBFJK8b7Jse2Gkwt1kfebhip38SW91Tk6moDw9qsVhVuj+coZOh2/oDfUvFxv7xh/MaBJRL4prYnGKn1D9TRo8r49h0Of23N7bs/tuf3Jth/0BO2uwBMkUnQS0iyleLfK0ek43OvkaQFvzlSorq40KoaMPUFTrTIOv1bue//bHV85AaNQWVwf13sqs8S2M3mZDMMQ5oBqzbh0sIx7q3JFl4pl3KVEmsHopcB/8wxfCrm/3+ZBwGqvwnHr1Zq5cY4hAJP13W9I1+pd8j6lTB3KTgqtHZvVnfJmtW1Kd/GG20YBDuqrms5yCGb32nAbJigvwnMMjGXJ6UyNR54vudkqxNjUauhdnexWWSt6N2P6UvWvtUdI7eqj9vJ4TtuZTAXJ2TVbEgnj3V2vCVwbY6T6v1x+Qyxe+Hz6msZzQCypo9kMM1NjZrY3DI3+AabtXbzGHb7APlUW2sybQq0s587a8uOffUGyVZ7hx6sFxj1KuWw4mY34s5++BsDRrh+9/+GeyMDwKVK1ZuqmpstKbq6/A8AKXtBVal4+3v6GxXKPOVUebN9bbAVg0ecabd+hCeJ2Hgwo+gNdex8y6R7El03fp6zXZAv13sOxTTBV83QTH3h79xFXQluFBpV46IH3GGTleMq7ykuL7a6BRu2FaWDwizs1TppRkqYdlYRvdnXHTnTRtN4h0jou3yvdyalT4kUNlWhdluWaqxs1Nk54wldfvyHJr6TPW3opVXr94gVV3zF9pdZe07l0twqU1EZjvHBNM3oaDWf2HZattnx2KNlI4EHXbW6We3pBcl5vVninyistTZ91mzMzxzI2Os1OUJVVQm+17EQXr2t76rwlCpRn8sVP/oz4Ht3drjE7g1NhLOosHUcg9J5j0+BhClrVcvQHj+777fTkFEP6kGcpmj16WJQAACAASURBVG/TiEelez1xpjyDgW+g1S0TEYI2PZ2dACUyrSauM0xPPNG24WgQUgqAy7RaMtES3d3ssDSb/ERCjnlPcqeiJ0eTMYHuEQxUf2fDIRthd7m9uWOxeRqlG/oheWbym9/8GoB17jE6VeOSXt/SaTaHRnl0/miG5yhP5rOTF+hZzWYrUYDoAmsy4KCpg2Ov1UyOJQpRNNws1ywr9ZzBmzlpr/o7DkMCr8MN1NjMDgnc68ZuS8wsxRDvKS0eh6UDeU6/ueP2278BwGg0mqpkv1ORFc3o6QTAM/HPufjZSyJDPcvzDdxAnTO7Q0NSu/SC8rTHFp+HDtlOff/1cvXwDm1k0lsamq1+/3BYMBIGJtP0WH265s0LQffrMJJQfJn/sK/3g5fg4tMlJy/Uy2WrPfs7FcfVmhrLNqmkPsWrdEJBJy43OUYw5thWbviwqSiWKq934TlMjk5JpG5rWuwZDzKOBb1jZi3xJ5U/a8qYIt1QXKkFp0/G5BLj7TWL1g3o5YKcBzZd+3ToIV9uMYWb62h4hqcNQEIP3vE5a8kR7VcW9sjDrNW7TG2L/j4uX3Vo1zsOkiua2SOiwQTfug9h9OgLccM9k3CzZ3elwrhX2y0fJaz4udsze/0lpa4OlE83BzbCUHMx0fG1p8Ohuq3jTWfYwgyyyQt6QVmeDkNu333DbxfqsJm/+hkNKmyZLpdY5jGdocb7sKgZCVpsMnyNW77jfKQuhf3YwzNd3InajFFl0UmYpafj6vo9N3eqj240xJI8xcmrOeejiEiQjPoTUaxYEHNxbmBN1Ji2QUBthQ/1V7vrhEiYfHrdpfUNLDFIuuSKgSCBs6okTVMGUl9Y5Sv2cU7lqueGw4Z/84tfqbE4HTALHMZyJ7y9XGKIIKwWDim2CZmszTRPCVp18BdilP1+C6VGNCkz9NEKW5gqhsGIw0Gt0bR3MEYzokiNoWea2JJk9j2dumvJJQ8zPPIZDR0KqaEdj46pzHu2k5Blfs1+oS7Bs/GIvYRjb80lWjCgytQB64VHnF2cyUDf0dcem/TpfJpZFdybiqancTZW+3d3KNlscjQpBhyMRw9iy5hQVgaliLMWeU4hyNzANTk/P8ENJM+amOT0TKVERRuY2FLGNApGUBeYxr/NETbyzN4xGFsem1ztk8g2uVyvnuzDbD7DkHKcLvRJG5+t1IVabY4hSrFO49EVKci55OJiBlLKYRts13fs7tQ+2a9jzs9PqCp517FHKKmOtq/Iy56sEdo+HfJCSpx6H80e4ItiO4GLIwxEdjZgLMb291uTwsfNDkMEcMPhGSPJrW3TLbbZokvqJ6/DB/Hygb6iXBXUUpPsNC6Xl9fUldQYDscUEsY0LA27N6klH+7aOnsJz+73Ma7hYgo6d2JCl6r3vry9RqsXmELNlgpr1O83X+6Um6sbAmG5yr2O3y2+Jb5VxqE1LCgstWeTfcaoivGHapziZIkhCvRHf/6SdqVRyNg7es91s+X8CxE7HwZ8WKo9YxkOH8tLKuG7ezGZci7G2n6xo7hLeGeo/RwOfEaSXoqsf4c6wTjvMbfqZje7Gl2ip3Ga4ehgy6XkOxmtcA0Ohi6H6xuGY0nIBkMKUbBef7pkf71lJ1Dkv/x7X6EPXepWDu14SRqrTkQXL/D69MFz+OLnf0E/V8nb2/U7+sEQ/0jl77RuSeA87QlaRoglB01ptbRZTSvABffohEkkXord8NXgS45kwKws5cRX1t/Vp0vSuwPmWh1Ek59d4Nsheaw2xvDzC6xILej1za9weo+kUQtzPPFI9+pQrT/uuXFWLAXy68xdZqb6jrPhjDR+okobmL/4Cj06IpcibGdoYMp7epZPeXvA6wUQ0IRojYqZJ4sd50dDrq/Uu+SrDeOfK0BH0Y/Y3HyDLtRR3OzQupoXQmTw6tUJjXhbTT3i28s7vinV5nv18jW1UDB1RUvgXdAJbH7oPPZCTqSUpJ943Ai4yhpYGP2AV3LY5vsb8MTIyWM8p6IRrtQ035NsVR+ONDh79YJCKLAMPYEypRagSH5zzeFaHVIvTz2mkzndfX3pNOBaiBICWjQLejm0AkMjCiRf6j6m7Mpi9d6anePoe0aukDiMRmzF011t9oRnNjtRPh+FQ16+GMsY9kRmyYtAUQSevhgysDpAcpv7hCIV8oWrNevdHQ4yN47PWgAHlj6iSzQKoVhzqz21oS4Pq+oYjH0c42ljahJqWFKbF+pjdOEDzTQNz3FI5cIaT0YkkivNy44ocggdARsd9jhTtUbmgwm64eAHarziugBNpzclX100D7ymtCZlp2GIxd9lFa0l9XZ5gd8W6JIfNYOA8uox6QJAVRYgHus8mtJ2GmyVtxPnDZ6mDsW631MeVgw5kQm0+OZGRSksv2axuiVv7kFpNm1jMBwIuGsQsBNATTCxaTY50VztKb3ZIvwaNGbLandgKJyrjVOQtGrckmyHZj99+Nq+yaGs6OQCCUdjItkjY98mSTeM5fey9rmNUxnCA/n+gCb7YjJoufjqNe5YOJUZ8uGdKmM7iiI8LwRZQ9N5hCOAuW2cM7J7avGaT4Y2vdTyZmVLUupkOzVPSfX4IrdMyZ0XS9Dvva0djrPDnwsHapdDJAAqo+fj+j2d1D52uzX//k+Vxzr+6kdMt2eYMm52mvBP//H/xihU+/Tsq59SfVLzslpecv0vv0EgJJj2nuw36oLMFimT4y/5KF56d32H6Sl6t/nZD1+CzznB5/bcnttze25/su0HPcHP3szxfSGr9XQKxAIcBZhGTy1hCC+pWN6p0M2gn3MaHHF+9Fp9gdWj2YKOXGaUpkcfqpt56GjsspTtRtg+nJbzE2XVpIcYyxvz9V+q4u27KseVOH2ppbz9uMLxxftwY3508erJPkxOf8TNrbJ4h0VNMA3xavU+tuVhS7x47BbYpU65Vb8fzY45nStLojEn7Bfv2NfKE8rKkswz8CTs8zGpeHkuSNXwgrNwSLNWfUrMkkoogC6vPxENDXIJX/R5QaWJioHf4ZlPo/p8w2Z1d/1QwPv+akFZCkn2PqVarfnRF8rDW6wzXggTxSicYq63eKmg4tZX/PZf/D8ATKcTnLxhfyOF1ZsG2gPdXnk8n755T7VTFvfAP2dfaYwEmj6IQt4LW3zTNrSGztUHZYHtjE+P3t/xJXzlR8yEvWGd5GzTPZGk3xpiyo3KHa/2O/QoQNJ8pIsFntCEFWbLrttwMlVj78+OcE8clleKKX69rHnxtfLSjIFJH7Tciqdgdj2WP5N3sUnWd9ieWlODQUAt4Zu7y8chIE8IwwPL4ot5xLJWlus/+ef/SsXIAAyT1fJbEOLg3ta4/YXKAQYOvLr4kjCSnHe2ZN/s+PpCjenNuuDttZrTd/EN4/GYoeRy64HNi7mCeXdNh2VETCcSebh6TyNeMGVNHauC56eaq2v0ouJhFnsKCRXGiYVmBFiNRHp2Gzqhw2raHpqae2ChPz6hFZq2D5s1k9EY01Vj0/g6q9trNkIifTwKOJUQ5Hq3Jwgc+kJoxbKOe66/uknIyjXtfQnWKMATSrXvt0PRYEr5UYbB3fUnakedA0VTsW8FCVhUHMqK6ZGa702pcRAKs3q9QPfGnETqvX3X48SzsZ37XG5CK9BZTXMo2wNpo8Y4Wy/JM3WevJgOMWyXw0qNh9G5D2Tmw6jD7J+OTgXeCzZpTCrv+vJoCPcsPLmFEfkYoj4STHXcI/XMEz8gvm4IR8orHZ+PMCY6l1ImMB5aHL2Q7x9Y+F1AmkreM9I5DpWX/P4ypm56ekP2VFvTikc3PZ3jRg6bW7VPs+5xVORqp/p/V/q8vVQIekvfcfS5j5WpfanvdFJJbYXnAxrHopS7ZDh7g/VSiDcuXvLq9YzDjfJgs5uKl5+f0E1V/63XHp/PFDZg+X9uOHk942qj0jJZWePI3GduRehqHM1V6db15S2//U7yoSdfPDkP9+0HL8Ek/oApwJiyTXGFPf1kcozjauyWarF3y4Y0U4eg09g4lUEnDAC/+/V32KUa0IvpGR/ynoOUVtwddKbTOfuBMMt7Pd49m8zbD5iWzs//3l8C8NeHCiEcwBm/5MP6tyylFGA+jTgcnq6N+u7baz7shDGmdel1HRrlTxemx6oQGjEtIltmaEs1wH7uMb9Q7+KdXHC13tLP1AT/zdUB1jd8/eeKQ6/WDQbCM3p69jWffvFbdpInOjQFVxLa+VTlfH16jmmog8gZVgQSjm3I6ZOnuUMXywPvV3dsc7WJ3354z0/PVZjnzcAnL1wcTX120nfkArZ4Mb2gcDpyATD9R3/r3+NW4uv127ck1x8x5+ogOAtculoj26ixevXlgBuh6jK8gpNKpw2k5qrcE9cqXNH/v+y9x5Ml2XXm+XMtnpahI3XpAhpgs8lu61nMblZjNn/v9Nj0oknrJgmCAAqoqszKzMiQTyv351rM4p5IigjWZpbIu4qwp9yv33vuEd/5vt2Oy/e/Z7NR93joPex1fPtGHVBZb0L3mTJKtZbgaRm3EzmgmhFWLewWvodr6nTulSl6C25m6rrbrk2UzLCEQm5+945Wv0X/UDkQbivBlGdqOXCXLxGCC9yGh14Ie04a8vSwweRSHbylUbCQQ/9e+upfjtMzlcrZF2s0z6IUDs4a/yNQ47htYzg1ka9+Q6+XlL6a+2R+x2W+oHOq0qGDNMNaXhJLmvHo8JzTb5VxK8NL3E6CI+mjsM45HioHtMoD7DDAlpR+23BZbtTczOKAdWDSF+ft3w7HMkkkbb3bzthWag53oUvD0zFMdf93VzMSQ6WUd7nG8fETSrGFy7RgvpY1m+W8sOD2nVCDaSampzFfKscqTHQ0AVqFScRBu4Ewl5HmAYaAMVptlzDcfWxnCIuIzuhxh7CyG5iu9Am6TfrjPpnUp1/fzqlkXbb9Jq3mIab0ZZarhLKpPuf0DqmKDEf6+DzbwmnU5HvluG7XG2pZNFrdoDsaYUtdPdMM3K66tp2m0bA9PHW24HcauNJa0ukHpOHjOIUqqkhDh4O+9K/FfFToaWgl/Y7FPBKOV79kN1P7fnzQpndSYQgvMT1Y7Le8fq/AZUNrwnis5tvtdtC2u4+lp9tJSX72VN2flmKECaORMDLlJt2ecqrquACnw9ZR6/ZU6DD/5Yh2ykYU+wZ9Aa8tZytWyx3pfXIxr2g01HPxx0P8w0NqU6230XmPk7/4XF3XekOwuSWTdOjZkc/n7kvWuwsAptfvWF+pc+ZyeofZbpNt1LXtdjEtYbxqHT8jdR20pno2g5M2m9CS9z3OJnY/PqVDP41P49P4ND6NP9vxs5HgJtmiCbP80eGI4PZe7+ySo+dHVMLDqBcmhvCDzn/a4O1T8o3yyPJdSCUsEd9f3XC5jWke3zdw9vnx7QWpJQXU0y7TW+UR/fT3f4vWcTlrKW/NOP0SzZei682aUbNHTzywPFyxzh+HVFd6ji2EuwfdNq3YZ2Mpb0FzaiTqpu/3Mf2ETAj1xo0hZl9g+FWP4OIDs0J5MtF4yC5c4+0EZGDblMJ6M0kT9nFBKG0Qm8Ulvqnm5sXZE9qRRS2Q6vPewccm/3/8w98wKB9H9b25XbBOIzSBJj87ekXPl8jHmnM92RJMlTf45eEX973MbO+2pOaCWAgBtvMFK4nQq6QGo8OwqyKT2tK5efuW3/3mbwA4PTrm6EsV6e60O/72N/9AGKiobfDFNyylXSXch2x+mDGoxOt9+q9FjQEupUWk1GK0lcCrnRYNp8mFaA3ubpfobeW5nT97RVBoTKSevdjlTJN7sueaI6smkabvwUmP4XDIXno2brcrrm5UisZpQOvJ5xiSRo72K8x7onGnjWlZuE3RI9MsMuGtjeqHzbWFsBXF+4xdntHpqzX8n58PeXcjIJJyT6eR8R9evACg0XVJv1IL7OL1a4rVgqWAn+LFgraxQRxgzp8NsQWRd3b8jMJrsF6qPeQeHmALm0w1X+L0AwaeAomNu1+wWSsw2YcPc2x3zPD46YPrB8hK6743n/0uZSu8kJY7ZnqzIJQWgX25ozVUa7Tt97GdJqk0hC/WO67mgka0G+SzPdFW/d/1bZq+hamrtVlqOVfCOjQ+7FC6TfJErQW9TtlLmaBjHzMcn5BtBZVrDiiLh4QFANk+oSWRUNGqKO2CUMA+dcNkF6n963Q7VN0ma8mpL9OAMJZMy3pJmYY4kTIgoydnFFmFoPIxao9EUp6FFtPptcikRaV73Ge+UNd5EW7I1iEvx6KvWCZopXpOVtuhyB5ngNosA2yn+xF4ty8j3L6asyxJKFtN+gO1Fhod52MqNjBKyqSmLXap3FWEaUSzq/ZcTYrpqGtpdnrsk5r5W9Ue5jR7PJcy1IHzAiPZ0G+ruYkqne6JsgOXrz+QpwWeoJ+L5KG2prFXmQczWaELUjXJV+zSkEAUbGzgySvJArgOzsAh1tXvTbMd1yv1uYubn7jdbvjVt18CoEVT5m+3dMaiHBGm3O6VbfN7OpFu0pAM0dcvTiETgYfC5bB/hCGAJi8zPpbvouXjnMz342cPQZeUUmQr8kGLrSaMEpNbXn15QiX575+mG0whql1EKX0LNKkLdH2IArVIX79+j9VsYRuq3nA5v+VufYvfUZux147YWGqxbfptrEbBTFOf1csb+igjlRGyT5d8efQLAKzUoU4eZ5jwDZ2hoBztqkVvdEwjl57GhosvqM7wDzFNK6ExEjab2GMt9RO3bdM5G1K0lQHr9M9Y5k+I5iqVVhgFuTC0R6uQxmmX66kQBUdLImEg0TUITAuG6kG1jxpY0hfZShN2q8fTodfbGZbfpi4kvVBUmEIGvNkULJcFrbYYjc2GUaA2YpwFxK0BkYhKTn665eWJypnXUUSU1hwM1GK/vLpmPYvJdCHYDnTa0rKRlSHVPqYhzstyuuK9KBWUXo2WOh+VOu6yhzWEulDzbdj+xzpJvEypu4c4DZVOCYsdFIJkcyuc7hizK7Rh9RHnkrbNgpwXB4cf0XOaVdBreuwTtdBDy8QdKnqmsMqpU5NJKmTjScLzE3UPO93m7XxBJqIX/SxkPFCGyDp6mIozdDUXnVYDxzSoS7W+neyAA6k7TaKSwrAYCMrUKVOWK5WO+mzYY28XxJcqVXh0PKJVO7jCNtOsLJYTYdlPdKzmEMkO03ZdEkEbry6XtNsWXi3CvT1o+lLbslZ02z4Oj9eiKt2h1VEGs9/WSedqztJcZ3BwRnhzAYCuWbQ8Sf+WJlFUgFyn22gj2Ug6Xh/D1dhJP5jmudxO18SCZnSPukSCvp2vK8o6piOMKrvFllxSs665puH4aIE6hTJtR5Q8nkokDdjM1ef2QUGjb1MJ/VtSx7SF3sw5GrAvde6kLOG1e/TP1F7TVwl1YdCS2rlVgVN6NFHG1bOVWC+A57pss4RmVxhN8oyF9DCmZYZR5uyWau2bW7AGKsWZZibL8HEWqyDLsZwmoYgB970BrRcqhX0xX7NrG9iusj0tI8frKQfs8m6Oney5nqiD6XL6Dqdp0pC2J9PRyaRPb7oPqMwu9NR+9w2PMpYDI8kZVw0CaX+YRQY/zVQ9enm9YxgXiJY6mv7wiIjmak3HUcHljbqWYthA9wdcXUv/7EEbxLY1Bz5Oz2MqbVxZnvOPIlJdGCZ3JpxJb5VetggLk8a9FN34kMELZdvc9S1h2mAjvtK6yIkmag0HWosnxy+wDHXh15MJQaKek1f9/+gT/OWTY2KRw4i0De2e9ODUA+yRyXynFuO0jvjLL1XtTg9skqtbLmbS7JmtiKVFYJqF9PWCZam8wZvFDqPlkeXq/yxIiMWGHvziM86/GJH01GSEaUWUqfetwin7KuBmL0rgQ4sqevwQnP3pDTPpJzxs9Nh0TZ4+VQtuEe/ZLNUEJ1pKkSdo0mgd5jt24jkG24jZ4idciSj16pK257GRw9vzKnapWhhnBy3CyyWbXD2csnnEH//wP9Tfqy1GoZN8UJ+72a74336tooZvXn1FUawevYd9EFPOA97fqj7Nc3/AB4lCz0cmZmVxKzqIb/OaL46/BmAdthkcnxMJrVXPLvCE7qzfMijjBcyUMQ8XCwxrRCLOq91zWQoAogiXjA+7aAJ2en31A9LGxOBoTGvcxWsoA9Y4HD28/lCtk37QIPZlDjF5++HDR+qsvjViPrsAIMo0Xow76L5a0N8++5ybKzW/v/nuAkPvYEgN1qWm6w4JZbM6jYJUAB6tdoN208UK1Br++vkJrigH/O5uj10bWALpjt5EuJJa0I2Ha+nrF2pONzsPtIBhT1oGoi1ZLhJEtUZQ7FnPlffdyja8fqvqoSfPv+buLmaviZNhuGyCmL/uKiPVdG2upAZb+m3SEnzpN+z4NVmmnsWz8wM6JZRSM7r90//8qDQerCbstzsao8eb5ZdBSGsgJ2vt44oeZpCbOFaT06HyvpexQyRzuKtdsvUOPVFOR2I1qIbq0I9Mj2C3IdHEydRdkkZELZFgYrlY1r0sVUUdZkiHBL5hUIgMT5FX5OmGNFNr0ds3SJPH6zharVEZEom6JoZvoTXV4dXXTSxp0dnme5IYErF/lutQiBNd41GWsJuIRFHmMrAMOpIx2OwDetKug+aSVBr7tRzsTkVDeFR3YU7PqxkJOUDLblKLHFdVmFT149mpy3drzr/6BqdS6yZpPkHXVWTvtA7R7ZAgVWvIbqQfs1wJGSdfHTKVXtMwNHAsnawWggCGNEUKbjW/ZHTWpHeunPo8yLgVmaM4jnA7fZq6SH51mphS9NVcnaHncnhfjw/ePrj+uw/qMLObXUppk9sXK1qtJpqp/n9/s+BQV+viaadmcpPTFqeWZgNd9prtGphBxYXwrza9A3ovzwkSkVLqjGn2xAG8WbG+mLAWFYkg83Ake1O6FnqqsxOg4yZscDhUYMn24z7hx/GpJvhpfBqfxqfxafzZjp+NBM8/P2FRqehkfXuJIRFV56xL0SrYLZRH8PUXI466EkGdVsSriNJRXlacadyILl1IglWWrG/UKd/75gu+/OYVZS26T4cek0ClGOdBQOeoT2mqKLLhQFfES11bJyLAkRrKen7Naevk0XuoC5OWLbpWuUs2q2hJc+9+b/DjB+VVHNYanZZBXChPpqVpIDWT476PUw8oCwn965DVZkvnPu3lNCmFyucm2pN5EaPPRftw95zvpspTWyzucOd7bgSt2TQdNiNp8m679A4fh7b3jzv8+NvfcCgefjy/QxNx3HipcTDo8uFGPYv/fnvBSghu9fZT/ud3P/FHoa07OH2JKdHFan2LkeZsLtXnZtsCf9SkK2wcw2abWvTmktWUOg6Y7dX3VLXHZ+cqgtGPjrBcl6en6ntPD3oPrv+eJUQvYjotiTaWS3SrwSoVSrPDQ7K1mqf3Vxlab8HTc/Vd+5uc5USQgzufJTpbeW79JyNaHZO3l6rGsF0EuAIv79gdDtt9ZoKqLSOdSGDpZwcmbmPEZiVro9OmeahSWZvtw4h8G6rv3E6XZMkN4Xt1PYOTA/ytSnEOuxmpq+GnyvX848V7DGk1iPc1V9cbEkltpdc7WkXChSVizEmOKc3rbS3m7vqC9rmKqKKkJrgW4VzTg26XXAiek+UNFwKbDlKHjtOi5GFKGiBJc6Z3KqL2+hn7TEUw+13EzcWPHJ2LGsUuJtqp7/TPBvj9FndTaawvHBaSVnPskjzNqBx1T3WnQ0vrsJ5JmcDSsfuCzqwqwmANjvpse3zAXhDdu82EGA3/vk2gq1MWj7vvbs+n3VH3V3s1Vs9HFzV32y+YScRW5mvsvGYrSNaAFZYIWHuZhV97/4zIbDqc+hqmp55Fz3DpDSUlbhkEtyG66Bs2Ww5NIcd3NnOG/TbPX6jUcb7OiaTG71mgl48TN2+zCq0IMUQVJtNTNjNV98pSk9HLAVLaZLLaUwhz0ujJM6yxxaGgXBeUtIOUtFJ72Og3efZEZZbq71+z+PCaWEo/jcETWhLBH9Cn0XSwhYjbswpK0WS8DbdkRc7gWEVR893DaHYt9JlD16YStY88t7B8nQPJyCyiGLcUwfB1id1MGYqakHU4xBTli/Uuxik0TKG02xs1raPP2XxQa+hP391RCFtSt/0S57hHqakSVhJqJNIc3zZKyjRlJ6jtzWTF6PgbAPz248w99+PnVSTyBZudumHHAEf6VbrDEbVlc08OcjIsSCplCLSjivoupCkbs5U3WKYSPh9aGHpOWyREnr2qODmPsO/ZN0YGjaWIji5MlpO3H9XF9xSMeqp4++VXZyzDFYEANbY3U4aHj8tlLIMFvi2pnFJnH5fUgepl2yUxWSQ9bIcuIQHuR1acDZ2ObNi2zXoa0hsI20UQwVGTSGimPCOjJz1GreMuGAOuUQ/np7/5iSBSRrWZGXQL8EU25KxVMbBFmqKyaDceF+EcDdp8F+xolyJDU5VY0mNl6DpXkysmIlti5C3+7nu1oXrHFtfzJX/47u8B+L9+8c1HKPTb2xSXIVd3cngkHX7dMxgLB6nj1hieHCafn9Cgz+QHlY5N1yFFphattomJWh1+ulGb4d2PD5k+JithARqcomUCYsgzBg2HpQB1NpuAsFCbcrUqcL+fMBK2+O3NlncX6tBLWj00q0FTWDqcxOb99zeEC3UofDbsEshGTDd7wqwgvFbG7W/m3xMLDH50dMDT51+zEb7OjmUTSU3q/cVD/tMPQrEV3u1wyhWtI7Wmjho6u1AdLFad0zCO2M/UXGze7fnVf1Gp9yzRaZLRuzfggcug2acSvsx//G5CX3g1w+CasIjYSV/s2dEJnViAP+/+yJXTYbdU6bK2AVpfOSSjwxPS2GBx+fD6AaK4AGEbcTstjhr3/KstFv2C3BTeXDxMkfhK9hVnJ0PysZQ0ViGerd5n1xpHRwdYIhfFNqDOaxqSZvXdFi15hgdNn9zW2a2lXSbLcKRWY2Gz3YX0hDzXsVx0/XGQrILlmAAAIABJREFUmGHA6Fjdb+Um1KQfnRZH09CFhlCPN+iVycmxyJ+lcHMnbS1amzgtOD5RjvPRYES5X+ALW1Jr2KYQTbG9FrFLV/SkPcz3fQZyCNrHGoddm7aAsublglpT975ZhkS7xw/BNMqo84xkp/Z++eaCbkcdumvDJE4slhdqTYXXbylTKS0dtIjv+phNdb+nboN2u0UgiJ7Zcs4baf8iyGgle3yht6n8Nr6kOHtWm/nyklvp41MKG9KatphgajYbYYSazj88uH45Lxk/6/GkrfZv7p/x5uI7EsGCnHYMLFGp6Nsa3VYLW9RdnFgnFVmrru7jDj4nlpr+3XSGf3RAr6Oc5Zs//h1RoL5n2O2wSu5IhM4yrAp6PeWAtGubYDnnvP1U/T+26IxlLfQet6v342cPwSrd0BC0kdHq0BXEzuigTRTV1CJltN0scYZCeTUoqcYNmlLrqWYR41cSwTV91vECt6M+l/VMlsWOjXjxXmJiSp3NH5mYrs9apFfSZUgovHBG3yKuHAKpSfpWA996HIml5wWrlXrYo/MnOKGFBG087Z3QPpHiuL0mL0wGsmi2wQRTlMabRZNxz2MwUHPxLtd4fvwUdySq6NMZliXoRXPHaHjA+0LdUxjcgtAzdRsOdR1jloIECwOkPxiNDO0hZSUAu32uVLQD4frraVxLP+NmVnDSbtPtKc9qvtXxRel84MLBZy+4+l4VoWevf+D1738HwIcfv+MvXn1OvVML0zYqplfXGPeIKsciRXm/Xz074ODsKac79ftG/AeuvvtfAJgnX/HLvxyRCFH0LnhIUfSVGKI6MwjlsNwEM9xBRTYVWr6uy7Cv1slx/5SXgz5PZXkmJyPmUlT/6uWXUBuke2UYXpw0eHMx/0i0fthp0ZSD5X0YMJvNKaQfzaprRv1jmW+L6c2SxXvlrLS6HVpjmYviYT3KFmRusN6RmhW9/J8NT7JRBxLLlO3NkmWh1rddlth75RREG4fkekFnpGohQRaRByGLWj3HyXTLb79X3zPu2jx5/pRSEMBZnNKUZv3M8aEo6bbV9wzaLreCfouXKf3+gFxvPbh+gKNWn7aAxDyrSypOh1btcHWfe/pdQzf44olCBtu9Ic2WxkCASC0T/LE6PArNYdzxaAkBwvrmisU0Q+ucfJzTzkD6Is0avZVTCBl0y3fYT9UztEc9Frcrxm1lpAe+R7R5SFgASi7o/GvVaG3YNYvpjpXUgfqnXeyd+tx2ryL6oamMpKO3GArhgoGLbhkci/bgE8fDqY84lh4zx7WYCdVe07Cp9wa1NO+btPEks2G4bTTX4M0bRYiQJht8IbzYBzHJ/nFwT79dkG/uPiqmr8OUr3/xn9Rr9gB3k9MVzT7PaHPwVIAvjYpWv8FK+G+fHI/RC4dZrPZJt7/FNJWNNo59uv5TwolyzpujAywhyx/1+1ymEb2uaMVG5UeO25at8eq8y5MnYs/T9oPrd47V83W6NiNN/fYy0Tn0muxFD3ZbZvRF7zUOQ375F08J9uqALDYLWl31HbljceC1SCrhFS0CzjsuA+GlNv/Dr/gf//c/qtfeXlFehswu1DMuTQerK85Jt40/HtITUNvLnkdjcE8t+PPo0E81wU/j0/g0Po1P4892/Hw6NAzpC9poY4Ssb5Tn4mpN0iSnCiV1ZvWZiKc+3ersKDiVHpFInxFXUmc6G0FiEwjdWmi6bCyP261Ik4waNEV1PdvOWOxSLEOlPvpeD0dY0N3aITFtet5TALSy5u7mcdZ5v+8QSk0y37yHzMKRqKFaJRQi5On3C8Ki5OLqRwDqXUA4VV78u3chll7xQQhot5nOT7sNT1D3+PLgkL0oUywXa4y2jifK1K2zgK/FOxxUGn//D//IWlCAumbw9vfqNzqDY5rO4ymgm2lA46jHUEjC8zQkaypPNcgqstEpDaFASocOp0fK++55GldXdxydKXaGm8Dif/1GpaM+Ox9z9lefoa+EAmkyw6xrzKcqfTX78Dv2Es1ipZwk2UfVjBdPX7Dbq/6+Ks5xTJPbmbA4FA8ZJrpdEWP2HDaBeharNMaar9FFTv7o7IBSnsvg7AWt9oDXd6rfz2tqNA5VZGK6Z0wXU6pMhFW1FisrYCK9fauLJbp4tX/87pasmuPJmgqme+qRIEebOcF+R7ZQnzOHY9ZzFfmuZw9rgs0DdZ32B5vtdsNurz53kadspQXI1B2y2qfuKS+3cdLhLlbzcn11weU8wJI9k9UeRbrh+FSt77HfZ/JBpTG3YUJamaRrtaYj3SOWFo0krTls2PgSqazvLljfqev28z6h3Qft8ayIb2s8OVZrg4bPcquu+26ypmyV1K6K6FzNwGmpyO/w6QuCYk4mxPYDx2FwKO0pdod2x+TVExXBWV+d8vu/11nfqIi2e3xIW3rT0u2COs/pCdVg13XpSMrV01L69oCjjspmGDUfZcv+7ZjebHn3pwt1C8OK6TaiI8wnZaERRcpGmNaAsqhY3m1lvhP8+zpjGnLcOeJAIkNzucA1h+yFXjGwK1JfzbfVMfGcE8JSZQfcpEMuc+/02tiNhFKEwK3cxpW2MaNhoLuPP4e//K+/Il7V3LxTGaqsgERo+K6TCN7vWEyULTgb93CkpSwOVlR+zZMDtRcG/edcvn+PFgtlo93+Z2V7w2WfONBV97FbZzhSf9eSJlqhc/xMIZ4vX3/AMQr5zia2UX0UmHa1h3SUnaN7hDOsJkIPmW3Qwjl2qtbicnXJSsSHPc9jc7thIGnJ76/e4whydvjiS7I1hFcqK9BMM4yflhSyxjZbnZ/u6/9xRbAqMQ1lTxujQ3rPBIOQpdimRiY1yjjfEVypumJn/Dil5v342UPwqWNQCJ+il9VMdmpBxfGSzTqlkrRA58BlLgraP+5zur0mSHOvUx5QyUGz6hT0Pz+jJQ8803scvfyaV79QRtq0Y0pThcw/vN6SpiWlNJwe909pyue2y5JlFvBMKJm6gzauuXz0HhxLoy2Hh2+3KApoSI9d24o46CoAi3HYZvHhT4QCudUijUTaCW4uf6JOd7RF6qd9/pzrzYbkWm3U7rhPq6uupekfsc4gPlRpmFXzksBVhrBrOVRGRjVVDsPW7xNJC4qZ25weHD16D/u9yzosKYSOKi1gI31UDUdnn24oXHX/B/0T7i7VAfVTEJMu98Sh2qRZF4a/VAu/9aSH9eJb6lwdNC3LoSRjK1qPRZYyFh2vrw6PaepNENqj1sEhKSrVkBpnFGFIXUjrg/VQiVrzBQwTBtwJd+TdpqRlhdgt9WyuLi8oNLVmjk7OabSbIHJc0+WSXDb3xWZJZ3DEZqc+9/9eznlzN/2Yxh0OTriaKo2zm8UlrTLj5VNlXE2nTbsScAQFWrrDuu//KkuWb1QtNbh9mJc2MnXdWVRjmA5VLtB/N+X4hepLXEwWvH39I54c0MeNNjdSj9zGNs6rb1lIu0qn2+V2m3Px4V7JwWBvSUN+NSPeTDkS/kpjP+H85X8A4NWzbxn0dL77p/8HgM1yRq+hjIJZRmx++iPW2ePpUK2uKST/bpsOuqTpOx0X/3DEXGprga/T1tSaHXkGZm6R3ktQeU10OZyHZw2qtGIhlHZ1viRJYpxDoeAyUsJQOXn5eoUVZx/bOVq2T9UQusTSRCt1XFGfSNcrsn+nx65pluylRUAravqNBmYtILFNQBLc15hj2rrHOpQUd+miiRNX7XLODwe4UgMOdlv658e0feW8bPcr9jt1YOiZhdc9wZAadKqticSJ3W1vcZo5tqles22fVPbBJolZbR93av3umMV0xUJ6asPNnJOd8Fz6HX7323dMAumRNb9kI2lTq6Vzs03IX6i1brslw3TAeyEZqHWXy1gdGPtdgXP8FbG0XTnlmmZbfU7Pd+gFdLrqGYfTBYHoahpWjFXuYa32Qid5aFffL5Qdmm40livl8MRxglZPMdpCrbgqefdOXfcXz16ibRoUvuhAbj0moXKw802Tl/0z7r5XTlbDrSkMjbk4Aek85aWnbOv1bsk0zbgVDVJ2K/73A9WaZ5YFph6R3+tz5js8WU+mqM//e+NTOvTT+DQ+jU/j0/izHT8bCXpp/lHPbzpdEKbKa7bsim0Q0T5SHt9mWuMKq31Pa5BsAxYi5mh0ShpCDFyMasqxQy5UbAeNI3qfDTD2kpZ5e8lCUpCLMILcYy0N1GYW47RViGwme+xAp24rb6059mi7j0dRDc3BHykPr9J8OifnfNZThfV331/gOMoP0Kqc49GAK2luXq32eMIoESQ2RsOiI42nC80mbrb45i8VBHfw8msatvL+0wTubhbsxb/4+psnbAX6bexS/uqvfsHf/p0Cp8z3O141VJTkWi52fd9Y/K/Hyy9/xSYL0C+VWGwdrWlJdOlYLWwSrn/3ewBm9W/RkYgi9jhoHOFK20PD2vPrv/4VADu94ma+YiHky6v5Nd989ZwnEsG/W72nL+mxOnPZUOCKCOqzsz7fCBH0D/OSMIt5/kSx92z0Zw+uv32u0jfRestxoqK7QoMqDuhp4g2bDX4jWmj9P/0DAzejZ6morVN6JOLt207N2dkRVqqin+luTjCNPsK9s86QjqMomJaXtzQyh1ZTpUOazWNsIY2u6hXtk88wBVShZyUtSZv0dw68/+Ff3YMpaNzDkzHdRoe4VNH8sBVx9pVCgPYOtlzN/ztZqjxlPRiRSCvL0clnDE9OWYmm3ez6lqwyaQvScbleEIrHf/r8nC8/O+VcV5/dz3ecP1e/0TIqmsOKc9Rz7A7OMEXfbbtOWV3uqFaPE0doRsE+Vh627bcwxQVut10ss6IjKiEDx6USqHljN0Pz848pZss38IUdSt/NiXSLNL5nL7qiDJd0DtQzdkydMlTpMTuK8IqS+zb+VrdBgfLQs7RCK2ErVIsUMe6/oyIRRQXSK09Ls4mCLYEwKemjNvdka5bn0m60sVMVeVZ7m70wzbSdDuF0S5gou2NhoE0T+hI1dbo9XGGDCI0Y09FILdFMjJOPCvRFEGBb4MprzUaXJL8HGzns0uDRezh+fkgQurwUCr+bG4tWX2WOsrrEsUxGrso6NcqE8E7tUcM0wNYJxGZZvQ6NzOKZZG+mmcZ0rSKh3d0W10hpCtmIWzrYS2kpq/b0bJ+NiGRvwx2RZPnaHY2q2cYTwJz2yAnx7lLtDd/26TQELMceyx99RNt3tsd80VOpStty+OFmxtNQRG61FqmkrTuehePBiaHW8FF3hN1yWa+VbT/0Ihovlf3QMsi3e7au+s3YDFhvlb0ejb9ikQbopah/1DUNAYEZzs8TaP/sIdhvdagkH32VQJmLDA1H9LwcauGVKyoMoUoauA2skyeUoQiililPf602uvfCRTdSwomaAKtZMo0vcEK1qJaba5DeNM+pyaI5Za4ezv6uxG2pQ/js9IjpKqYQhKCXddCNx9kZNnH0EW7tOdBpNCikzrncp5ixKNdrKZvdjFrqFIPhIflCbdJ5rjPu9rmQNEhmGWzzjESQt28vrhj01GHWOz7mxVGTm6XKR9eaR5aKqG1Rsi1LTEkDuUEOunrYdteke/wwlQjw5nZGMJvzmaAnO0cj3vzwWwAOnjTp6tAylJHcL+ZUcljpepOR5rLfKuM6if7ArwRS3Dp5yturH1jO1YFsFhV6Av2dev3YtOgKCsy1OkwXM3YT1VriZAG+1HaeHh4TOF3+MBWk2eAhIu5H6WG8XWz55aH63MsnX/Lu9e8JEmVQ3WaPr07/Ws29b5GGGyZCrJnkHpUgXp2ioMGesTDUP0kqsobNWuZ4/rs/kIlTZac63YMxlaU22Pzue66Ej7NbJ5y96PPkM5UeNvc5+T30PWgA/+1f3cN0pQ42wzVoeBqGqIbXToeZABnrvMl/+U//B7q0y+B4jKUOVTdbmFS0+sq4fPP8CYeHZ9SiQPF2fkSw/wqAYQ9qK8UQViD/pEvmq/m9/vCB1gZc6Wd1jp6yipShv7m95i7QMXi8Ph7HEXvUsxgddMlFbHo1D9A6WyppWThqHFNJ+088uWWdbChF/FfvptQt9XeaVGSVTlQJddVmSp3rrKUX0W9aONLj1rYcsixiNlXvTdZLOvJMF9NLohIMoXuzSNmKPfm3Q8cmEeq9MC7INAhK9RsVOdV9a5bp0fJ7ND3BGFgeu4WyF1ltM4uh3iujfNZvkxkesa7si9c/odmXNqahyx/ffv9RjYGsxtYqeZ9H0dSIhJ5ruc/oSy9zu2lw2Hu81/H84JR3+R2G2CWbmLevVQp/Eq7ZxF2CXGSHDJtU+rHXmxXjz3+FNlX244fiinFVsd+r57GoHVqhcoC73WMuJktcQ/2/qVIsQb7rUUmQLdnKs7lbBKyllvfEPwfniJ2tHNCzwZcPrj+r1ZrtN9qMhDJwdveOeDlnE6vnazSG1JlIsbkOTuax24rdbx/gCZo+CQzeXU9YT9Qm0t1T+usu0V7t52mQoguKdxvGGJbOX32h5PVSV6N3ru7P7Y1INj7cK9YfvKQn6dDj04cI1385fr5FQq9xhVuz0XVY3qmN4bs+Hc/jvfRYDZ+McQ5UlLS6XONYPuu5WnCuFhGL3lV8V+B3mxxKv91iFbMp4anAv/2WS5mrg+AqiymrDFuau6uFzrt390bYodcfYDaFz7COqILHi9BDp8Wbn1SefHx6wG63ZTYTT6LUubyUPshuzHp1hytK7wevzvjt8nsActvkj3cfsIXm6OTzNqPa4+Z36vWd3mf4X1VkZFYuL/oWI9E3/O+/f/vRU671NnkeoLXVdZ+PPY6eqoime+BT6o97LJezKxarO06kTzCaLvgn6f37Jj9lcDrkzFfPxhq3CMUbnc4mXK2XGNKXmNcZv3+tDuf/NOhx3oZLifyiuUn64Ya18BIetE85FDCKT0o8W1Ckat72N/U9by2TomTdKvitLOKmPnxw/e+F308zKmpRBQ/KhIvZinohEdaZjtdR62BkHdCMIIiVE7IM5mQtka/J10RFQWug1uXd1ffcXU9Y3iqDUmoaQ+l/OxkNeH52iuMLJ+SyzYX0CeJ6GHqHpjSzJ/mO+yUUZQ/7u1xp+i62K3pDm0yi+yzVqOX57mYTXrz4Na9+qQ6zzW7PrThS/bM+N5Mr9tzrzXU5Hh0TS507smKGp+oet7M5upXhDZVD4naPKIR4OtEt2mVKS+ajDHQWQksXbAoSvUCvHyef9joDWgKTp4pwbfW+tNiRTBJastf28YSGtHIsJjvSNMCR/tHbiy2hGCg9tmj2bK7vVC9ZUuw5PTgHU63FKDGgVAdr3O8TbFbk0n+2uks5OVC/ESewDQM86e+0PIPg35EVWyUberEosj87ptYTMjG2mt3EqEQaDRNtt/8YmeyTgE5HrZlR65RG7WEL2Khl5aRhyZ20XP34w1t6IyGb3rcJk5xMcA3H7c69DCJxUrALUnxDHbxW+c96iXZa4tiPV5u++PIlv/27t7z/UUVUuypiIgCeUndo9RosbpVtvbx6y5GvvqfZsCnTjPc36sD67s0NvxgdUQox9Ta4w7ekOb7VJApN1h+UfTsatbCln3T2/oJ49YGl0E5Okoj2qXoW475Fs2vzRLhMn48eHhGHA7Uu403IG9EAXUdTjLRiKNzLB8MBv/tOZXayeI1nu2hC09b1LXypqU/e/MRR9wBPZLwu3t+xXG7YSX/6qtyD6MY2Ox7dVo+m8M/e7mKSQH3PKplA5RM0JEOGT6MvJNw/f8x9qgl+Gp/Gp/FpfBp/vuNnj0h74LAKlSe1W+as7pTXWmkFTrNNJOwIF9OQ/vE9kWqFVkcEleT7sznjUHnRYZ5RaSa1MIZXpUVtmmwkfbXebjk/VRHUmXPAmz/+iSQXuRXf/SgldHP5lvniClca+f9z55Q4e/xWWq2K8YG6tqctnXdv/p7vvpeWjdFTfGGL3/64YBpEDLrqtdI22JTSLP7Lb4n9Lqu98mL38w2ulpCNlWfpe4eEG+VVORgMBqfsxAOOLBtNmEDSSU7ddnAL5cUPBzpGWyjcspTfiOr7vx374ZjFjyb/IM3FT3ybrih2W3HAu+/ekQubz1H/Cxa3oXznBr3pshYyYq0xZCJKDX/zN7/FdNdM1uq1aq1jeyGXF4KKGzSohN3ldlkRFCG+1BaXdcL1O4FGH7aharIRhFrce9iYej2bynx75J5aC4Nmn28//xzTu297iWkdKM/8tG+wm02YSF0qCGEjRN/twSlZXbGYqO/0DYtWwyeW7xmZBR1H3aNeZESzawoh996WEW5DEL5+C8cxubxW2QXTtggkvG32HtaXDZG9CSKDwmnw1//x1wDkaUAiyOh3hk/VdIjEt7zd7AllbX9mHrKoS7YDoRhrDrgKbEzRNiqNBgthvWG3pyg2lFKv9LonaLXIlmkNXK9LKZRc082WhZSeYt3A6YwYnz/OnuToJlkkNFdNm6fyPq2quF6tMTRpEG9aaJW6p6vJBWWR4MeSVixNilRdl+94aFHBibBi72udlllRS82sXudoQq7tejbhfkMigqieBom0mXh+i7yssSWCLcsM33k8hRWtQjbSwrI/6FC2QDOFxs31kSwuVV6Sbvf4QoS9DVOOpHVo2G3jFT6eLqxHdcJmNWcnwuDNsx62odbT7OKKm/AaR5r8fX9AvJdU3rImMfKP5OY9f8BS1D6CPWyXj6ND613AqyddoqkqN/T2A0aluofpOiOZb/A8dSPrm5B2ra5lX+VkNx84GavnZhQ5V2FAX1hyGk5FLEjItunQcvY0pV6IlrEV+1V5BmFWk8nlDQctPvtczc2rV8cMzs6ILME4PMLcM7u833vQvE+bFy5mx6Y7UGj7w+4BcU/tw3d//Hv8YZ9aIm19u6MvjDybOMTxm5xLxvHtuzvmvYJwo7J3dv+Q7lhFqTebO9J4jistZy2rx0ZSrIGT8Oz4gBd9Naf7wiWVI+GHd+/5Px99Emr87CG4DwyuJpL/n8UMhIMTs4fpuKyE+ibSAvYfLtRresk6WKEJ/cky3jCQuk+RZDR7sK+Fy7HS+DC/ZZiqBdaOHSgFjJFWlLXNRAoupWNQSfoiCrbYy5qTI2VQsmVM/e+wrRRlhStcnXq+ZrXL0SR9cTKCVHIbmd3ByTRMSc0GRc5eNOt6LYsnX75k/08q/bnZ3+G6GgNT/X5e1qwXqmagWQ3cdMrVROXxG4Mueaw27e3ilvETm25XPfA439A/VEZitVvgFo+zZPx0t+M2gNpQqcavu206L5UR1gg5cgb0h5L/fvYloa4WkBtU3HyYMfLUa+1Djatc/cbb+Qc6Ry62IbpxnSauZZLWAk33HFI5yMPVlpapYwrEPLM99kv1vnm5pe7abGu1qMv8YU3wcqMOGqwDVjv1vufPPqfYFjiitXjYrOgcimK4bzPZ74lv1GarNZ+hUMqdfvkUuzni7kI9i3G/Rss9RAaSkWfQFvqvYHMN0fKfjWQEXVGmeDJ8RtcfEAyEjzU1EJYnyoekN/z2B5V+HjRrpsuYLBYlknmEb6lneHA45v0yYfuDqh9evv+e9B6+vq+ZJBvStvry5MBknwUcS4uG0UzZhVIfriomtwsiUQz/tnboeOo3bt69Z+1oeJUy4PPpBkeAX3GkMy1KmvvHSwMVKaaAKjoNj7EAF8o6x3Gb7PcyiXqElNYYtzziGNZrqdFs1lhDdc224ZGXCUms5rv2LHbbHYYcCmVV4UiP5iCyaVQaidDS9FstOiKblqQ5zXaDVA7FIIgxuo/Xx20KdFmXuzim3ejh1er52plOLpRtOhpplZHFysmbzCfUhrScVA6VkVMZKpWWRAFOy+F8pNbi+LTFWu7p7es3NLolnrz34s337CK19ldphmZkNDrqe8PMItyK6s42Ito8rgqT6wWH58csRGbLyGzilbJRdjnj7q7GExq1eqczk1YlzbSJCo1KnlOj0yDcr/hpq5ynXz4/oS+sO53RgMv3exI5QM0wYS32pdns03iekCdq3safn3H+reIcpeGQOR6Xa/Xejv6wrnkPmGu2NELhVO0en5DlGY5oMNW0GQ/lQHLfkm4jjo8VIPHs4BWZXFe7ucXJvY8p7W++OsWyc+4ENxFoDSyRtllfBZRagt9Tz2Z8MKAnAKLYrhifjWkOVDo2WG+5Wyo7uJs9TiN4Pz6lQz+NT+PT+DQ+jT/b8bOR4Nvf37DdqFN4e6O48gDcvkH/pMlIWNBbzSYfVsojWIQpWX5FLsrBWbRiPFDehNbx+KwxBkmXzHcpyXxPV0A1Pb9DsFfhdYbF0ycv74UcqMMAXVSLi3XJcdtCEw9hOl3gZo/Dwo86PvFSFVl32yuGzSMG3yovq9Pdc7dQP+C0O/RKm1gQeWWRgcDJr+/W7NKIyxvlUWS1jmeZmC3l5eqlz0rY6634jts2bDciEulWVJJm6py0aTVr7LFCkO0XAQ1b3UO7rdGuH6qyA+zQGZye0hZwxLufbvhc1KXRXRbeGk1QiJPXrymFPaV/1OXVwYBKvOHm6RFdYWWJ8gG17xItlIfrZ5CGtwwGKh2tYVGJ6GcRxzSMGnGO0W2Xw6fqfbvCJ2o1qSNpezn8gqt/c/1NiUQPD/vY4imGuxjPd6jEc48cn1QaXVerGUUSMhKgiG+1aR6rInf3i5d0j5/Q99XFLGc/0fE1dAH/HHjQa6gI421YUxQ6tQiNNk2LRlN9T+f4mNNnrwiaguxbhyyEk7BwHkZSt+L92w2fZVXy3/7nPwDglBk98T4pNvzud3/k+Fx5wG2zwUxUz3eLmLDMyCRH0+rZ7NZrgoXy6i0tB0mlFXFNbdnU+3si8Ihc5jffm6QY6BJBDs4GLFFzWrZK1rMbttXjSGlcC7+tshCRAROZb0N38fo1wn3Barug0ATqT0GlW9ybCtOESlQy9J5PlaaspbVDj2psKoz8HuAVsxcOUCcsqHSHSIAqpQOxLmlru8V0tWcTqT1UJAVl+Tg6dDgy6QiB4UjnAAAgAElEQVTkfeB4kJUUsVrvcb3HlPtr+U0FqpPWpSAJKRGF9viWRqvmfpZMuwQ9xpX97HdcalGvefHqgM6BiWOLBujFFjwpL6QOde1itVTUahlNDLFtXm7Raz3OHXoTV+wtA00i6k5ZMpZ45MPNjkWW40tqPrFLSll7aVhgexZtISyfF2A7LlWtbO/NYoUhGbiahM3ukkpEb+OypCvKEDvLJ09v6Es5pz84pHGkUqy3sxkNv0aXEsr7R8TK3Y56bZvu0AWcePi8x4cPcwJRddhXOZaILR+Nn+HUMQ1bNARrl6YgqHtul3iTUshaeDmySTB4KQTaRVqzFmTuy4bNNnJJlsoObh2XgyOVkbG1nGKfErmCSG01iETjdc/jZ8P9+NlDUN+F7K/UBG9vawJRee+XOppvkQhs2m626Im69bvbGyx8KpRRMvScbKuWWx5rBAvQUmX47i5XmKFL3lCL6MdtwF5YHJ71nzIPYg6GysCkbDAKdZh4vk+WlARCc+XWoJeP598tt00iuR2jYfDktM2F1Jcyx+P8mdQrtwaOXTM1JW8dVfjS64il0fRaPDtV17KvTUxydiu1oY9akAui0OvpaHX5UTW7aIJ/qIyU0zQwyxX5Ri2Ok9GIJ6JB63kx7uNtgmRphed30FELJdMMRkcKuXkyHnG9eMNI6MA+LN9yd1/Lu57w5dMXHJyoxVd5Pl5b3W8cVFxezkgD9Wy+ePGCA7OHJiS3eu19pFTT4z1pGSOASJoHxxjC4tDcG4wPXxA46p5i4yFbiS1Q+LDUsQVCrjc7+LaLKSwSWbmj4p4aTGNv2NiieFDXIZ6g8xZ3N5RNncoWJpbdjF2U0RL6Nb2y0CtBGdpNrEInlgvvHo9pCitLmMA8TtiK01XVTQxEJHr9MC39T2+VMQmSAWkzJpQa0bjbZ1apY3+5mpFpKTeB2nzZ/oYiFLReuyJLSmbClNE/HTH2DKYXykELipReV73XdG2O/WcscoWuC64vmKzVWjcbLZz2OZpA6LcZvL5SzywudfS6wyR43PiGqU21kcN8k3Mkhrdh2BiuSypq5pbdxRGF7vn7CUlmoEsNp+VaCKc9RlExPhygaWre1ospWpmhSzfgQXdMEqvrrouMdRCSinjrxu+y2kn/aq/BdFViSW/eLq8w68cVGAbDLs2WcgCLOoMwxRCmIb22MHKpi5Q6WZwhYEmeHx5TyeER7hK0KiEVNYK0rrCAnjhoo3GLVqHW02IfcDuf4Hv3h4tHSxw3Tc9JaX5UZ9DRuX6r6vZmscd3Ht/QN0HMItpgi0LOaadNYyDBRh0TpX1uflKHyXS1JBex4TqM8RpbOgM1h6nVwjEsvEO13itjx0pTz/duNSXOCr58pvZbEIbcifLI+WdfYmodrKG67i0ZXSHHd1tNeqM+aahsyE/X7x9c/15Q7PN9yi+eKTv062//gjL8W978oFL4ZrjD2qiFslveMm7UrGqFIs7SFMtXc1+WGlGcIBlW1puAk/MOV++lNGCkvJKe5IZf86cfa4JSXWsRlowFUb5IIvJVBh0156avc9RXr+Xh4xJ19+NnD8EkKrhXpjfcJsVG3fx6PoNGg6wj0ci+xJGG0ZHnMZ0t0aSwYhSw3am/veEhfn3KSgAPs9sbwl2MIXll3fIY95VHstyFvP2w4qX0qj19+pLJpSgjGzDySuKdmtTFZsLh0eNRlJF3MCxp8m8esEm0j/2GyQ4s8RxLK+R4OKQtKhZ1XfFlKgbTyrH7XRyRwUksl/dXMxLhenS8Qw7P1VSWZYO55rLIVE0wvVzQvqeec5u4qYYutYdO2WDQvqeuqtlHj8PCjVyj33zJidQg9aPyY11mZprsqHkjFG5XdcRe+pbCJKeahlzK///xP79if6k26dX6ktr2mEmPV319yS9+8YJaak3x7ZL9Uh1Ck8Uao0hpC6R9eTdniVps76omZ+4BqdCWXV/PH1y/IxkEwxvhOSJrtY9Y1xG+6MtNV3NcTRm+wjIxGw61qCFsco2W1HG77Rb1bMV+qw4Td9AjNjbkEu1WjksidUnNauC2LWxDjF2ZkutCDrAruEpjKk8ih/6IXa4MkeE+LAomIgd1nS/xzhp4ov04X81pSG1tE0XUdUxfovK8MrGkJ3UaLOkeDvhc+q+Grk7lGsSeOE+eTb8vvWGdIXm8pRmpSNgtC7ID2U+6TVnEbBJlGPdZD02MbR7DeDzg3/GlqCuPVKDphl2go35vHafoZUVUqXlLopjSUA5gr9Oir7nEUtfPsMikVUYzdToaJLL3y6bLaXtEIJRnVlgQReo1s+sz6OiEkk5I8x22cHdu8xzDa2FIa0vbdKjjx2uCflPHFgOaZgWNpocpDrhZeyShrKHUwrSabCXatewWLYmeNTsnr9rcXKq1kFMybJisd9ILOdkQCIBsnRX47fZHEE8SZzTEceu1R2QYhCID1GwNaMprZu2yNx4pLgNeQ+fAHCJtqeRWhi+nwDffjin3K5D6cLZ3MaSRvNPwabgmbkett8zrUocBk41ylj5sSs6lxYw6pyZmbt4rre/JRftuvr3DMzWMgTgTsylbyQLUekWZhWiiVxlsHzb8H4hijWYY3HvGem3y7OCEzXtlE/N9gSsZIL/VJ0+2LJeSMWhpjBwFPkuMEhyNmfzOYXGG33qKU6tn8+P797wVu9/ptnh6fM7tlXI6J+s1Nz8orufOeEj/ZIwt9sQbuFTSP7k27ikaHh+faoKfxqfxaXwan8af7fjZSHCzCbGExPfpyQHn0li9iCpWm4BCag9VrlE56tQd6AWp1eaDdB6Pxme8EEVh2x+zX9vcvFaRX4c+VbaglLpIu9/FSNVJvpguWC4ixpLv7tQWM/EAiukHWh0TSuWdD/02o/bj57nptbAEfptnNVG04/CZpDVTi0S0prbbgF1SUooKsVfmZIYIiQZ7stUVnrBI+E9fMAm32II6LN2KqeTeF/u37AuHSIiStWzDqUB8z5uHFLsVa6G1sj2HWNCYncJk0H7cc0z9Q2LfZiO0arPXMbsLYbppOySTNbnUZMtuhN4WpKZ5zE3Tp9LUdeazhOsPKmJc7wv+P/be3MfWPM3z+rz7fvYT242738zKyu6qont6eiQkpHGwmD8ACQcHhPCgJYwRCAwQGIhxcUBISEigMbBHwkBqNIzE9HR3LV2ZdfNuscfZz7vvGL8ngq66kem0hSoe615FxDnv+1uf5ft8v4N5x5kQBf/Fpz0Lq+KlNJgWRkMmKalqFHJ9nuALHPn4yZTFnf5XaqPdplzJe1w0n3tdR08VlZrvuCxb9Q6tpXN7u8dE1M139T1y8WDsqTSXzKnddSyFpNjDhDoBXf1d63vky5RbqQslfYnXq/HNiwbDMGlbtRaTfYIvkZ/hHdE4BjtROMl2Ges73UH785Tu868V9NtuWxiXnOVCK+YN71GzSdsQ+jaBRByjoUsl9TMND3s8YyDCsUbb0RQdvRCO126INVCR/tOXR1x8eIvGBwB6rUGXdqS3V1dg2iCI1N7TGQwUanhw7LMoW+rvod+bHR1RlCqCLJqMbarmbL9L6HSL7X0mosSw1M8Ca0CnQ5LdEW9rBI6k93uDPoMyV2GEjofhTzGF9ekmvgBJfzqthuN46JLW1rv2vgbZadA1HZV8R9t0mNbDeyHf7rCFEH84iBhOfBxPre+yaDElKgUby7AxRPx539YMRce07zqqfUUkdfW6gSB0GQjbSFLX6JI9ePP8BdFYY7eSlgULpHRINJyxTlM0S5TmHZgfi5Zk73C1fhilWyUdfedx26i5MJ2SplJrzx/OefJFxk74DoYvntAIWf6L+YQg1Pgo5BOr2qE2EnRpQxn4OWfCLmM3JcHI40IiYdOpGY3Vnmm0hk9pwleZWrdPTw5Zy3f84uN7mkq/JzixHlAkyXJR3tFbMqnPXXz3a/wG/vCNQpkWe6gkA7V5e0mbBoQDNb+Hoc2BJh0DZcK27IkC2TPTCdvLNdukle/qWN2qSPDLFy/AbulkrCK3ZyidBU8GM6LJKZ0sG72oWS6E2D35O9CmGVqKFakFprUlnbQMRK3Par1El0E0ZzalyIY8P3rO9nLJSFg0orzGkiLC0KjI336gPlMXhh3BH4ynJKKwbKdbYvn3kW3g+RZWrn63uVjzVKij9k6C1rScPFVvfHIAeXL+8EvUOVRSr2py8iJjc6nqMLk9oJeDr8r2FFsPU6SAdkmMo6nF5kU2kW/QCB3Z3Gp5b1fYQmJ4dvsXxBdqMXjTA+qiZWqrz7FtiESJe+ztqc0eLVYH6BdPpkQzkfnZ7rlaPiwfk1sBl02PKYfbfqhR5yp94Gh7bKNlFInQ58DClvrYxb7n7fqGXtLBV9/8FVYjfWKBx6aoWPvqcG11nW+XO1pT+rpMl0/yu3rSctsXGLWkik2XvShR647Pqu/YiCLBYDAXKd7/z1xJhxbU3K7U5mqCiizbo0k61qz3eFI7tHsb72AGkmbKi5qlcAm25jUhDa3UYJMiZ7FL6XI1F5/ynEgEnXfpnr5bYYjM1PpmSzBXYziyRoSlSSrr9Kr+yEjGCffzbRFNlSPjGznDqIBMzaEVmNysxTlrUizNJBWmm8HEvu+DbNqcKq+IBc6O4bCLc1yBoBf54u51+fChoOtq3EPlkPRpiSasIAPTpkh7rjdq/g2zJI3lM60cN5gwFZj871qWpeSl1MzqlmsBWuVJyaZM78WHDR0mUnfbdx0aFanIn9W2y0AYYXpNo9U0hiKVlSY6ve7RiSyPf/wMSxeWKd8l9Kx7Z63rajphd+m7Dqtt6Tv1/abnMB8ePvgO45FLIQ1uRZ5xFL7GErh9Xq8pBPZf9js8P8AWZN3U8ahkzJJNSZ1WDKT3s7I65gczfCnvVHnOSNZAE+/RbY0DSQEGdUUnzqFumUTBAMGP0Rs1liV1Vstkkj98vH73/oIiawmEe/l47LMRZzxJKqyxyfMv1fsvFhW9KNcfTgYYGjwTbtbpVuMXv8kZeCJ7NTDYfVDnZWGWvAiPOH0j/a27WyxRnW8As7Do76TZNINIJK9enDynLgp2VwIYtD+/BA0pi42CEXvhAF18SqDsOB6q7/A9g19/q1KjV7cFU9fi8PgFAOFAiR4DHB2/JNW2d0c0q9sd65tP/PLdzwFwHZNQBKQ/XC2xLBNd5tuO5hQC9FsnBq4WYHTqDLl8/5G9tHF1zedtHn/bHtOhj/Zoj/Zoj/Z7az8YCbpByS5T3mJdVYQiZugHNk88jz6QlJSu0d41jO52aGXKKFQfPTU6pncN6fsVvtZxMJL0gWcwG5m4wgI/nOr3xKlNkYO2pcuUV13HJU/nwi15YFKlt2S5aLHlHpvkYXTo+09nvP1rRU4buj69DbE05O8ySCVtWe1r7MMhnZAK7/cbDsfKq+niFH18zJdPRQ2j33BYLkEi4664AlN4VCOPeqDjCLtNuSwo1srLW9dj/AAiV0WivZaxvJBG/sYhqR7WvdJsg2gCB0JaPdTesBWdts5uCVoNVwidT5+FbDo1Fru05GNto3fKIxoZJkPRFDMdi12yB0EkBngYjsMnSSvadsjaVvOd6tcEb94QHau0ZmKYtJIONedzWmvIcaQK3ZU5+CwSDCbKc3WNmIEQ59pNQRA12EIgbRs2vaReOhoMGlbSdP3u+hKjUe+XFhUz3+OZkAz0esp4DCOBe2+TirNzFW1ebRcYPWSSWhkMxqQCxS52l/j+jFKYOrQoovbUc94pJvxtOz5QKfS6uSJybNyRWu++bjEOpcm/KPC6BhFZwLBhLQ3Ty9uUJ3OTcCiMGpMRL5+GhKHycut0hRcIUURbUNQ2a3nnxOzphQ82MAP0PicQxHWSFlTSRmSObA4OJqyubj57fvXsDm0jQJwwwha0cd31RIZ2n9bL4w21tGu4XkiW7bkVlpbJRGM2FqCGaTEae+SSbl6QcjqL2EhEf3V9SyjkE5brEMcprqvWn+EaJEUq765jOeCFwjtrO7TGw0dTb9v4wgUbVw1nl0s8W4R7a4O8k3S7GWLr7j1Qoq7BkEhoNnaJmy2ZaOWFrk1kVmxu1Lgt9hv6oZpTu9dwHIda0m5D12Ep4J7zs49ovYYj6PZsV9AII0/nQt89nIYzhifYrDiZzWUuPJxIvYNVt2y7ksAVztnjHkvIAAwj4ersijqV79Adfvz8iETYfMbjinqm5qbUwA16EJ7Nw5kFAiDa3pTYusFSIv92f8tYSjvjKAJXR9OEU3f7eaO5o8s5xBwEjVpuNCynY70QkpTl8p4AILB8qq4jl2yNNozYLYQo4NAickN++Z06z7ItrD6dsbxQZ+bBqwl9LLzAXY13FBIK61TS9uz2ar6XV3vyYMt4qsYx37a4AvKbPHk4M3JnP3gJnjwbY8XqMG8Tm4GwVhiGz8jw6IS2zHYdCkGWnXcxf3wy4eNWTaLblXRyEJiGx2w2ZSq5dzvQ6OqWo6fqYYPA4bxSiE/H9akCi3gpiLUELF8N4pPphE8fLhHCCZyAe9jy75pVpZTLD+ozeofh0ZTurt6QNNiCHGqsHK3RKNdq0sNGJ4rUARXiUndbMlGGmHnH/PGPjoikP6tPR/eou7ZJMA1wHfW377pfYojI6pdHIVafEm/UmN5efaKSy3sWTvni1ZsH38Eb5mhtwvlCbcS+1/hO0oNWtWGgdSSZ2sDjnUUgKLu1qWPOp2Sl2ox7R+dKINzGuOLo6xOynaAM4zVWbZOWkura1/eSV9UWxmZOJvJNZZnRCvp312f0jDCPRYzX+RzhGonQ5uVyQSnIwpGV0dVbAk/aZ7r+Xom6Xl/gh+49yjGvdVy5WPr4hniVc9tJ7cXpqFYXJNodU4iJI/RB84FFlTR0ghbtqxpTai29kdPVKYHQ5uVVQ+uq8b14QAFnKj2L2a7AJMOUlGBZZwjDFE3rE2dr9kIP5fY7Wqlz1dma5U2JWSsXwdlPmIzGGDN1MJXbW+6yNkm8YxVnVHKIJnHBXvrPVnHHLt+SSQ6u6iMGQ9X/FZg1+e4jq93DTCXPX73m9lpB2A3XxBIpn7JtsAOfwBE6MBdyEd91tA4MjcOxmu/pxCVy1cHnmzqm3WBkwmBiVThGx0BSaMY8YiQqA13T4RvQmZp8Z00naGBTM3FNH02cibTRKLKHndpt3HMs0H5Nq9jvM9aSKq4ak1YwDMNpRNKZoMseNXRs+Vnf1kSjAG+v3rfRWxbLBYEwOY3HU1xJY/d1Qd2XhLpIrhkddw2GptXRoTEaqec2+w69u6szlmy/RxhYJyJpdyRSh2uyhl5knXTXIK9aOjma28ZkKG1NfuAyDCbk4vzHqy0aFonU3gYjn0LS3WPPx5n49+LEQ8/iai1OpZkzrnRGY1Pe0WMtTpVutPj+E4SPn8UDyMp/9S8V8ffxQYFsH0qrZxL5LO5arLYlltRqw9kJaZbx/lY926sXJzhj9X3rpOYqX1MJVLY2AgbHX/Gnz78CwLUqqr167qcvI5xoxGItKvRFQyUKE702x20NxnIPmH5EWwvLv8grfZ9pff9wTxGApmnf/8NHe7RHe7RHe7T/H1jf99/DIPFYE3y0R3u0R3u032N7vAQf7dEe7dEe7ffWHi/BR3u0R3u0R/u9tcdL8NEe7dEe7dF+b+0H0aH/+f/a85tfqabFVmvRRGiybQvKVqMxBPlW77BN9VGb9RVatqQsFbrLxyfyFXprPpkxDKYUiKqBqeGOxmwLBTFKsh2mNDZv1wnpbYknMCXXqYkige2aFrYzppHm7SdPXjCcK5LV/+Qf/Taa6c/+8f+A7aiaqKGZjEcOA0Fznd/eYjQKzejZJk2VKzZ/wDc6CmFvH508IbdcSmkSjUyTzixZLYTYtvEQ0BuR3+NYOulejVWSJhgCH1y2NXnXMh5Ls+twjiYo6v2+IK3hv/kv/p3P5uF//t/+Xeh0kvKOcHhGJYjPbHXDydFzQl+YMbI9tqXGqcky4t2SvTD5H58ekogyRolNXVvoupq3umkZhB6DgRCfawGdNHL37AhcAy2/0zzTCYRZJ97fsty37G4V5Hm5XvCf/lf/x289/3/33/8lAC/fnLBeKWRXlhjM5iNGwsJTtgl7Ybso85hSs0mEiHqbxeS5mosmTxgPKt68UegxXA9nHLERXsJd0hLvZVDDiGHbstwotGRfVKSicBB4DvPjGUUpJOllyeBOd7A1+Q///X/zt97hX/+DP1Lf3zToun3/d1EQcvNJIYojQ+erF68ZHKn5tVyNgYijtk6D2XgcHyskpz6YkK8zPENYl9qCSASl87bCsgyWSwXhvzpbMZ6ohug8y6hri8O5QjJuFikX1+r7F/ucfnTErajs/j///L/9rXf4p//LP+H8Vn1ma5lYQiidbVKa3S1rEfX9yZ/+axSCfj1fZBx5E3719lsAkjjlxZsXAMyfzJjMR7z/Vn1msjqnjCvmY9Xk740dyupOKWJEWqXUe9XM3S0TxoJ6nE3nbBIdV5CkE9fn43vFCfmP/7M/+613+Lf/6/+Rt7/8FQB+aOGFAY2sjVcvnlHLGVW1PV2ZUgm7SRkXDAcKias1NdlyiRsIe1Co0QHFHTFznWCZdw34HWEYYQZCym7ZmL4ncz+jyBvOhDXFdx0cX81nts0Z2GP+p//o3+N37c/+93/G2cUZR0IycDSfg+w1wzTZL6+pUvWZs6MThsLBuSsq3CAiEGWM68v3tI3OlfAGRwMHTRRQjLrCcks6IYjvTY2ViPxefPpEk8UcCP+wEYS8l3YGvSoZTAf3uo9t3PPP/slvr6P/4D/+L9U4GhUvXqrWqA7oW41A9COLpOVCiOjT7Bar6SkERRxFY4I7snhbZ2i7DEJ5FrvHdTT2e7Wmho5PI5y+Wq+Tk1M3au8NBwNaQcZeLzbUWoNtC3uOZ9AJina3+h6xWbEfvATz9TfktXqYrs85PBAR26pmHnqUlQok0+stkSlSOqOUq/gD+1TY400DwxaW93iJVR/QWnKYzx2GesLkQE3q1e2KXs4vM/J4OjmglovOt210IZnV/QjTC/n0Xnqwiivq5R1d0m/baGhgiPBiVyVEgYEurPfTiUYuVGBtkeI7PYEQ59pWjynQ/iy+otB92lxo0uweT08ZiYJ5XMUYncCtF2vsoY8fKEh9XufspNVAdx1mhxGmsLAnxeaegsodarTpw5IfenhEluzQBXJctw6iIkVaGpzdpMzm6hIs0+5OPYamNOi0Ed5EGNu1CZUoJRSlgece0GsybtWCeLmjrWVJ9DqDsfTi9QFx30MhgqyeSyUtCbs0JvRMrNEdafTn8/DNL/6letbtB8THwLCntKs914Yaw49nV+TFneSRRnhwSCb0Z1rXk1R3BMYNvm/y8UxdmJpmM3vScHutLtdvf/4tO2lLmB+/Jh8O2FxJX6bn0ot4Z+kErHcNscgsGWVOKCrkRva5isSbn/wEALuFJFuh22osnp6+oC3/HgCBpqEZLUuBonstCOqf/X6HMTRYJ+q52/UCo6/xDkQlezRlJL1ifuPhWdBm6tmqEEphmsn2K05fvWQyUOMdhB5OqP7t3q45rzyC8OFtvW06Pq3FcetcnpwIWXrdsIw7zi/Vcxu/vLhvf9ovS5pJw80ndUh2NVzr8lypzsVZSiZKJC9Ov2J0amCi1s0iLchEUNoqW4bTQ0phcFluC0bSHqKNxtSsaQXebwUm3quHe7ua/IbT59J7aMJ2vUWXReX0WwJhPqFr6byGWpisGq+7pzujhGW8YxQKk9NkTG527BKRfbIs7Eg5HZssoW1KXJlvf+IQCOl+scvYrVY40kNo+kPqVn1ma3Z0PEybVpbneHaDZckFXe8IxVl6efwj0mlLslBnxqtjD1cOxb/4xW8oNh22nBm78090dcNc+oBD00OTxiI7mmA4EVWv1lud1GSVmotxs0XzUk4kGNhnCYciT9WPInzfY7NUY7HZfN7m0YngwWDioUsfd9t16JrDnUBVWdX4whykuwOS3YYmU/M0Px4QyWTEaYKOQZGo57bsFqurGEjbS9Mn3MqztA3UmOzFGT89dFjdqn2xWS7wo5BOzrd25GGIDFTT/h2klMrsDKNXHrYTDQlddSlcbD5QNAaVUCll+0+MRVm8iq/g6i0zmYxXX75mfKQUHvpdy3xkoN3RrwU2hZmyvBG5jsUtjfTemfqc1WJFLRRJjIckrUjizEZM9ROqTPUU5tdr9MHDCgyrzRkT0byydYO6LBGGLxa7Bdla9L9cCyO3MIS6qW7K+yit9126prhXP97rHUFT8UR6p2KtJ5Cm79V6B1qLsPlQJhWbWHnqA2dO15qYolJt2hqVLKLxfEq+f9hj6awhZZczlA1uuSPsux5NzSXLEqp7yisPQ3QeSwLSfI0l0fX7i4JauDvxXBbrHnTRPcwqwh5caZjuuopUInbD0SjLmlyiz7JvCHSRpSlMsn1FfKM2Rtx+LoGjCQXVx4+fMOQijSYdRVyjCc1UbXqciQbl4WzExB9T3FGTmRFzkfLZanvKomDgqAPcHczY71PWcki/fX/ObKK8U79qqZKKhRAgeGWI5kgvmD+m1xtKkbzq1im2OD1a8/lFniZq0YSHY2ajEZ6M09HhhDyVCKLo8a2euURtH9+/5UqiuSxZcTQ9wJMDtN6kuLbFZqEulHzbYxayaGyDWK9ADtfDaMqNSARllUaCiSn9W8Ew4tmRirzM6wUf/uqCdfM9nU2dT62raKsxLOJarZMszpiOTrkyFPXgh1/9iqlEZcWiYX21R5i78PwhhXBXLjdbdNuhM9T+Hv34HzB1GwxxJFfLDZXoB2adjs2G9UaNd2+EFNJ37AwMprNndNK3t9+uKIvlg68wHXTYvhpDSzfomph6o8apS9d00ofZ9zV9lZHn6hIwbQdDNALNrObN3GQqWSaNlH2a4JjSJ4nqPwXQ85g0TxBFKNpqToQQRWQlQZlRx9JYauaMnhzIUIeM7YePV4a3tNMAACAASURBVKPcEDkex0dqDWueTi28rWl5RqB5jCciMbb4DWdX6vwoby9IVzsKT839QWhzMgmYjNT/q2JD3dsy3hnXq3PiWxUlenqPs5XLuthjexVGosZ/+WnFVs7ZVz/6mjrbUtfqXCrLzy/B04laN8fPniPCFGR5QpG0aKXah77e04n0nW2YGL5NkSgn07U9ED5PbRPTBS2OJuQiZQ22gT8UCkPboSzVzxbbmGZXgXDemic+gUS+djSk1lqqVvQEdR1sde4P/O/TVVH2WBN8tEd7tEd7tN9b+8FI0KfieSTs/WGLrSuvap0tyfYFQahSOa9//ApLGCaKq/e4vcdP3iiKrS9+9IJK7tq4Ssg215TCnhoPU5I8JRYvpNNaosMX6stHR5hNghlI2scP0eT3qnjFxqhxNGFh1TrK4mHGGFsvQFKqlmOzXd+S68qTjYsaU3Lxk+mYbJtSCz2VXToEoneWpTWFr1FKvSGOE8LOJJD8szO0qCSHHk1PsSOd2lNe/RPXopf6wtGzZyR5h9Gq8ZgNBqx10d/TEhzrYQ8+XRcsbwt01Hg7tcF4IpFQ12G1OoVQErU12PJ9VqdB31NKBDfyxxhSX9jXLZWmUQt1lWYaZCl4tdRgzYaqvnN/GxrTp6yFnLZr0TeiYlGCXprUhkpRDcafp7F88ciyJGYrqbPrbU1gerjC3nNweor11Y8AGEdDyqJmfaHSmPPQIxyp9w2nh9xurzm7VlHiEAuDilgUTSL/hDevlNr0wXBAYbQs98oDtcwATbToGjSybcXHa/WOVlxh61JPEFWG35oDYd7YjQxevH7CWOjfpqOIvFHP8un2isaAUJQExt4JbyVqmg6/pMlNlpJe6HIdy7fJWjUfuqZzeabo/fxwzof9llDUKeazObauxj6azpgeH/H8C0W/1qYJhojRNmbDURxz+xlxnTJdNwhEIWOVWyRr0b7TDJarKwwRph4dBBiW8uJXyw+cv7viT//BPwTg3/iTF1ydq9TzdpVidwG9zO/t33xHabe8eaU0QD10XFOUGVKN7WJFKZRjzmBAJ3XHtCzQTJNMygSrdE9o3uUuf9vabkcjqfG66aHa4kuK1cgSbs9VBOPrJqaj08teGx8OyKQ2lG3WBEaLMVD/n0yGuLSMJupZzzY7ipU66/LtkiA6puvvygYuuZD8N+stU9/HkzR6ZpY4pqjcFwV59nCJxrI1NMOiFTnW2XyCIWTbvhvgaTauaJm+ffcbzi5VhmRgu7i+SST0egVb0rKFGyHFL/e0upqLs9tPbJqSuovlb0fY9l0mqWazzfA0FSX6nksnZ4/WX1Pne+xGRU+u+XkUFfjCxGLUxJnad71h0DsudafGxrAsfPk9HRc0jcmBGo8dOqGUTSx/gu+EeIJNWN/c4lgjLGG9ytOKJJf3bYfUfYklWpfZak0hOoSBbuJ6Ebqv3iNwTCqhjBs4P8wY84OXYL86wxNaq6BqqYXD7emwRfdnaCIDMxjrXLxVAzoeBZiFy+xQpYQ0vSVbieTRcIzjnXBjqAPUDD0Y2lSJgDHCEd5ETf5msWOTLjGFiHG3j8ET3kG7x7BrNFkMSbpmJIP2meV7DDlosnLFer+k0iVkDw+IpsIHqpmUpkEkwJC26tlKCig3PIwwwhZ1gpkRkmy3JJE6+JO6pdirjXg0moDbsJdU3q4omLxWQsGeaZKmGxpZAJ49vVdUTvYbzODhTXN1kZFtSioJ613LQBMexEgf0jsNZaoOWy0v7sV/jbrA6RsG7t0FNSCv1SZ1fQ0za7neqQPTs0xczyURRQIjNDmeS10zKwlHYxLhZVxc70nl0jXQoNWxHTVumvM5MYMtklRJViD4AnTTxm16jmSBak1NJNyGndGyj2+o5FCeeHN0Q819rBuUlYkuihqm7hHvdQaO4vY8PYVKCqYxOaNpwEhXqZW+K9gt1WeGEw/dDAnlc72pfi9r5Iw+V6KeDdVYeJ1BepsyHKjxH0YRmtSkpuMJXuTQyQFuRT2hK/yrcYXR59BJHagz6Lcpjayp4dQlF9ml2inZLQsiqbNu4gVInc3oWmzdIlmoecubnJHw1OpGzlEYcTV+WJU9LSsuBACxvdkSy3cPBj15kTIWybPDkyGbhVrPkwMbrwuZ2MLlaBeMj9U4VeNj2iYkEWextnWePz2+F6Bt+45S+HA3lwUBHZNT5WBs6piP79RFg9Nz8uwZS6FK22c5/vfIigVBw1o+025NQteEVNKRZU4kc291JoEzoBLe4rAwsMRRjYuGInRpxHG+vYwxIodeVCQcW6dOhDN5WWPgoMklGO8SeqnPhqaBH5l4d7X6OMWSehWtj1k/TP22K3ekXYK5UZvh2ZNT6AX017WEls1gpD7TDMeEQjNJXTKZjzk8Uung80ud7Tqmk1RisYEDqfPO5x5R1/DpNyJN4hqsc/Xc20VM1lZcCqbDGHuY4shc3l5g2vo91ZjhfF7X7ETy7HxxQ3+XJjddGq1DFM/omw7xVXAdjUEY0gnwrO97VlJq8lqLsNHI5Pzs9zqpazB9qkBi6+SW9x+VM3y9SRkHJuxEDHkbE8m+GJ9OqC2NtpeAqtOwBLzm+o+iuo/2aI/2aI/2aA/aD0aCWnNF1CuP4PnhjIVAXkN3QGlEFLnAiNM1tZAWDydDbE4JQ0ktfPrAdqWixPnrP+RHp0dMJV202ZUYWUIp0Sb2AFe86CCoGbQGe0H4XGyXFBvlEXz55jnbbE8iJN1lD8n63YPvMB4N7xUttLyj1x0caVHYbVukk4M43uAFAb20ehh2w81aeRylaWMZFb4AU7zpiHVecCnQ7MtVTCVpnptNz2Rmc3Writltl3EqTPZJEpMWDUfzFwBstzGpRHDBZEiyflhFoikM4hR2KyGw7myuJB147Jm4ro5jCbz/1MGRNITleWAa93pj9AZ9K1p3gzGmY1AKhLzY7qnqhqFEt24UoouX1VtKg6yRSDD0Q2oRtkybDl3XKQU0NHY+T4eWAlXWGw3dVnPtD0ak13s0IVG2dJc4U5+RFx1pYTAYqZTfeHbClbDOd21A01lgKv/N7UxGh1P2AsDY7DbEAjDSdA8z02iE3LzvwNiIgsnAIgotnov2YtnrHB6raPJw+HkU8kQiEzOMcF2P7k6QdlNSiKhso42Ia5ObdyrzkcY3RJKJuU3WbK/3XP3lXwFwMH/C7NDi4lqBu74bH3AkrRW2btE0NYatvPqChrpS71C4Dte353SmilaHgYkuRMHpXqNpWo60h4EAF1fn+IGC5TvPPXpZe/v9ik/rDC8Q/TW3ZGCrB//67/8Md7nh+p3aX++++XPeHKt2pAPzKd58jHeq5ukmL4CUb4SEvjNtPEnj9oOO2eEMQ8Aow8bmRs4T166oqBmIGkOTZegSNfyuOa5BJSmwKrN5MpgwlCxQ1NiUmgC2FgVh7dNIeaPMy3vNvKAb8PT0K54fqfc4/+Yd+7ygl8pEZ5nUuYrCI3OIVfV0AgIMm44mU5/Z+R5Oa1PL/428wxI0qmNpLDYPE5mPJgO0fYnvqudJizUDW2WkjArquiPL1V4wqwGnY5Ve1smwDIO3v/6N+ru8YtA6ZKIqsS8anFspSzUl3uiAsSagRNO7T+k79ERexE40SeObBakgWTUdTK+ns9We/XB5+9nzu7JnknhDJoTZB6OIaDzg47k6o/XGI5d2LK2vGYwOGMqezbYlK1ElCacTely2IsIeRYdYlgYizt1pDoaEl+n6hkFlMXfVfE8GQw5Ed3IWOdRayXUl44+GJgLL2+XDoMk7+8FLsO0X9/Imjr3D80S9vK1wPY3tRh3Ki801nfQ7aYFL2/i8k960ZLnHqKQOledsk5RUmuriLMdzXFqpL2mWR3on79EU2FaHK6nLr06e8e5S+rEOXJoiZ1wJ6tP06O6w979joWVia5ISGY9pfAP/QC0MM6h5+04h4ro+wAynlFIzivoOhEn+4uKGQQ2up/7uattRVz2B9FnZYcjtWn3Outqy1dz7HqRBNMNEmM2DADcwcGZq4q4+btAydWA5gUXNw7nrg8inzVziuzaBoqRv1ILyvB4j29yjq0LPohF11k6PcGyDqpRFYHs0AudaLjeYlc5QDqmKniCyGAnyKwzmtCKIutqXeJp+f9jS1PdqEG1e0JsOy1t1ggQPIOJSSY9Fxy9IRfrkOk7xvYDZ8xcAaKbOB+l3yw0HzThgKZJQ/+dffMtCLsGv/+Qr2qKlkUNJjzRMS2PiCdLRntwfYF1pss16eunTDM2I5yfKAavSmnS3Y7kX2PjoFNtSc5aVn6cTD6R+deDbGLZJIfXhY99jKQoqcW3R2SZpoXrqPlx+hyYpsfnxBG2r8fbygxr/5Jrn/ZT379QlaNmXpKUaC893CedTfnGrLp5xGDGeq5T6oX9E1hbkIjv1xdGcY5GW0S+2dEWD3T4sSNvdpDx5Je0UkzlXIsD68Tff0nZbzldqz377y9/wD3+qavrHJ4dU5Y4Dde7hrM7xLTWHwSzHsQNOX6mUr75L+PDrM2xP0HuDOeNnShllXPSstjcMbLloVwVrKRm8OJoych12osTudjVG/XBpoNByLLnk+xKCqicUJHq7ueWp9JsVTcTt1QoEDe25Ho2IBRwFB4x1l26n9tvL8ddcri9opXZe1zmmJqWXoqRMUyJRV6mzFZmstb6q2VY35I1aQ/rM4sgREds8wSgeTku7bs1sMOPNU4XqNRqYdJKU6wqaosdKpca9rulNNWdO4JN3e/YrdQ7vVhpm6DEw1Ht0icWV7C+amuW7C2opKQynBod3qg6ahzbxcPZqr353+XMcgcwfPX2CFhpsYuVITgOL3w0vepHKGkZDdE19xuj5CV1rgquerY41EMm6LIHqvGAwU06mbpa8OlUX2Venh+SLDtOV9qhRSBM2XF6ouvOn2zMuLlQQZbU5dlXTN2qerKGPJe0jZdKwS24J5mosZrMJWazGf3W5enAe7uwHL8Hnszm+qyb/3V+/pZ+oQ78pluwvz0AijFyv8KQh6izZoXUmbSXeURVRFdIIelthOxml1PayxmBzfcle7i/NiInG0mxp9LS9AcWdKrvNy0O1wKxOQ9ciTIE029T3asO/a401ZSneSqtBY/s0cilF8wGzXg1BnFWUA4tEktzLumerqQFtBocY05BOoOjbtCKrTPa5mkjb8KhDUTrfZ/jjyT0YKGsqlnLJu/GSSeigmeKddTm6SCoPdIPqe/qKtKLGd1qsgVySvkErtaww8sh2GZ70GellTSeaebumws5qSmnDSCwdf6Seuemg7BqsTn3nZGLTmx0LURtPMUFqPUlfotUhdpbJnLYcSfQedzXXi5iNLFr9gZacQmoP4+mE+FZ5lreXBbNpyPuFQJqnPt5U1QHaomG7yfj212r7TS2dmaYOnuv3Fzz78UsiOfiL1uI3b5cMBIhk8IRRoJyATG/YUOB1osemdVjSz9nrOtvNhubu8NEGtNLYnWsP1DUFln57e8XQc/GP1KW0SnNi0egrqpRQC++Vxwdjh9VaXTSruGKLxouf/hQAZxawLzeUAgX/8tkcT6TCbouUZaEzFf1Iw3Wx5SJf5Qtcw2U6U+OxvD7HRHnfRpITckr6PVFUvlnChXImbj5tSe5q5XmHO3L5kRBOfPPr99wupZY0m3HkO5iu2uvdboMWyJgNp1wVS8L9GQCHuoN7MCXK1XNfFDazQ9WuQpqwXp/z/t1bAMaewYEs5yJf0zWHbGO1Ni7er5gJ8Ot3rWozbHH4PN9GaxtMaVnI4orbWB3C5b4ljUuyGwG/PH2GLj1sWlMQjeek0u92MD8gCOcsUXv/9uo91UbNW5jW+HHFdKC+s7I8bgVM12Gx2iesxQEcFAMKaQfb70pGUkf+XfOtEt9pGIoW3MnzL9Dk8lp/Sig3KWkmoCXHwJJWljqv2O4qwk59x+TwgO2yxJTMxZtnr6ladQ58+6tfcnbxHY6Ahsq44uRQzcv84A07s8IX3czJaMI6Ve9g1AXFLiWR2vlw9LljXgiYbhjMMQy1frf7ilWyJrtvYF6TySUbOmOKsmIyU3toOvGZSq/48TBgtS4ZiB5oScOHTcY7cRY/3rynlZYbrzMJQovRXU9ykxN3d/qNNq2t49xl3aqWxUKtJ3vw8H64s8ea4KM92qM92qP93toPRoJdVZFIz6qljwmllnZ+/ZGm0xhLZNhNxpTWnXhlTdQ06HuB5s6mpNIY6bUphmXiRSr/vc5L0sZgIGrA51lOL+0Tmq7x5OCAjQh9sv3EG2ngbTyLm087smuVgmy1nqR5uNE8MzVKqW/YHuyLPd++/wTA0XhOJrWss8sVVqvTCNw8NCx6T6LQzsXWfA7GygPbGHu2+xZNIsotNo0guNzQI9N09jvloZzOhtjSrN8tluRljJ6rdJlRa/deiJluWZ1/fPAdoqdHbN/fYkiYlccx/lR5yq0OjuUSSOuD0UCF1Kha2FUpsaB6B0+HVJ5EqLuaaBjSSupvt93w8XyJL1HEZKgzOFC1iMHplCN/QvVRpa/qZk0kqZXIHqA1Gusr9f3j4HPP0e6VR7xdbOlSNd6zgUWPwa00T+eDIYdzFW14zRJn0JE/U9/v1hl9pca61SzGs1dEQ2EZWjXkdKQ75cVP5mM+fafWwibdMnl1TOELbD1P2J6p9ZXdXrNqC0Kh7grsEk1IBrzh5/B85y7aKAuMyRykfaGOt1xcq/XUhx1pDN++U5RfrbEAQ83FvknIG4NipNZw8OSAprB5dqrWm+tV1DL/TVvgYYBkIpabSxqhzDPyhqoxqQUp7HhDBKVOXho8OTzB8B/OihwdTTlbSr3SmDF/rVpSVvsM2/jEH3+t0qjz2Zz1SkWXb/drwpFJZKn5DaIh05cqYjcc0NYVji4tC5XGwfEJhez997/Z4/tqvTlZw7PpEfHHv1F/q9e8EiR4Pdaxh1MaKa/4RxrfJ3O6Oz/DRa2T3WaH5TiYhiCT/QG7hXq/fNczdSJWwtCzfP8WV5h1LECbvORJoP7uy9FLCDsWQulmvP2WbKvGu0hr6n1NdSbjFlrcCLJx8OY54bOn7HLJBHQl1wv1DqbpotUP12bf/eJf8PL0D9gFKkqe+HPyD2of3H53SdW1dJJK7HcgCQJczeSosDhy70SUD7j2S4pEjXeR2RjC0vLUHDI7/BJbyjs4JucfFCmJtm+InRx/rH72+tWP0a/U+dV0JYvLDfFCzb9Zfo6UNiR7VWkdhTTTW55GsbpBl6xI2zT4InDrai1FkdEI4nY6PCCSlGowmOId98xc9T1niwWL9V+zP1NZoOTDW3aCPTk8mNKENqaQWdxurwiltNXOptS2Ri5ELPu0YH8XsYrw7vfZD16CT0YWpazGArCkj2doaJxMhrR3yu6hRdKoSdQDjUmnkbfqINLLJZGoCL+antJ3BdpQDr79Djfc0UqNsNd6htLj5ukVB4OePzxVC2V7dY4Vqt+rhj2sY5w7xgfLp9g9rJk4sgq0sbow1sWGTZwS79XgBEZAKJfe8+GMD4uETFfP9sXPvsKdCLfgrqA1LTzU4bhJE9Aj8lLSK57PwVB9Tp0n1FmNf0fVsyuYC+Tem52glVekhUqPDmoTTyjdmiyhSB6uIdS1Rkt/P5lebRFIa0Gy2JFsbmmERqvXQcSt2Vc1RZVTS6+nHw3Y5So1erVdM2taDAE+ZVjEmnf//14DJK23XaZMnk2YHqtDa5GWIK0QaXlN2Wd0Uutp9M9TurrA1Kvd+l5JPug7duWKtaQn7dhnIRf5L/7iXxAGDrMDdSiffXsLcnmWJ8/4q2/OeO6qS2+TFKSxKugD/Objnsv3arMfhTrufszZXqX2wolLJOfSu5sYK7QJZtJLFLToQh2V5Z87VF9/9UJ9/3aI5oy52qs6q23C8RNp8Tk0+PXbb/Blff/N+Ypa1nYWF/gnIb3UfVf7lsmzAb4U77/79b9Ei1VaUdN85oNnPJHL+JfffGAo9dlpYNFtSvKl9CJOXXr5jM2+xD8NMe2Hb5A/+upL9PfqUjgvLAJRFj956hK5T7F8NRf+tKeq1CK63lzyjecRJupQ9PdrrLG0VgxfEQ2fkTfqnf78n//fjCYDMlvt2bN9j36jvOg633L94S8ZDSTN2ut0slb0fsT5+RW7Un5m6jT9w0eTpttI1ppNnNOnGbn0iJ6MZ4wOVEo37Pc89Y6xV+qdbj9+wJVU4S5vuTbOefknygkwGxOjqHkjX1kPByx3al9+2mzo84JSeEXnozGrhZr7yNIJh0PWrXJsOrcCT5VMHKvAMB7GKRyGY1wtZCvtKr9a/Zz9d2penF0Lts/6Ui3U594xsQCB9umSYQSVsFzFXYHvOPeMRZWeU8aqLGFoDc7AoZd6YehEaLqai6++/Iqb9Br3UHpdn9i4E7nstJ4gmPBWcBxWEAK/XVMbBqpAfLG+opdAwLd1qsXivqRgtjZtIf2Umo9nTsnlYvUPx/dcz0Y/QDdLtuLELt7d0i9iGqFDuzy/Ipb2lCD0QR8SjqSur2f3IMBcs9lqJoGcNfNoQCOpce3h8vK9PaZDH+3RHu3RHu331n4wEpyPA3YSCWptw4FAuA9P5uj7nNJSN31sGtQC0V/vSpwm5/2V8uoMp6MXkuRfL98yGY+xKhV6131OZeU4kq60bA1PXPXjgU9V3NBJCmN+MObjRnkH9T5Ds0tc8WQtf068fBiOnMUXGJ3yXNa3S2oyQgnT9bqgFrJlf/yKYdKgCdw4LHoKacoMOh93MKK9Ut7KoXGMMTBYXqmfP3VnWNI+sN8X7NM9a2HyN/oY7US936gzsQwPP1Je16jX2SbKW9kmO5oHeDcBurJhFAYEUt/1TYtGWhT6viRyR7Qo77D3A0xfpYtul++pqgJDVCWeDE84fqY81dr7SLFJqbdqnvzZjAkuxVp5i4vdilCah9tc5/z8GktUPLSmZrFUXnxv6Kz2MZGAdvzo8yXVS5ZgMPDxJUppy56bOKe3RVFk7pHkKt3aByHtzEUXMgTL7Bg+V0CU13/yMwy948BVY/WkbzhfLrib/jzZc/JapTWPIgPNzRhIKs+zdFpBwUWHDl7kY/Rq/M++y3GFOMGwPi+kG7ZK6e7iDavri3u2otGJiyXqBNd9xfz0iJ9KNvWbm4/UrloXs9MjgoM5W+H8TPqUmWvR+gK+mkTEgmqdTw7ZGhYzQz13ND/hjsf4yWTIs9cWW0lrnn7xB8xHr9Wz9TG6f8Tz2ecpLIDUbqiFvb9LO9JKpXHXXFI1Dh/O1Fq4TM95KqCOcP6ULC+Jt2pdHEZHfKjVHH7h9dTdGrNSz7JxG6pijeWo9WefzkgQMvNZyHLzEbtT4/bjn/2M3R0orcxYrrb3yivTlz+hbR5uND86fn3fkuIaNaNOxyoFFGUNCUYqe2MHOau/+kRxRwqedHhj9U5dAFQtq0tVTrEsH822mExVZLTbd1wu1L/jxMA3fepU1jshL79We+ibLKaIt3gCTHm/WlO7KqLb2zCXZ/nsHZ7/FM16RlVLSWO55Y7qo6wzyrjm5kLSil3L9pPKbIysgmuz43YjfMfDiHZbMX+lIu/CtFmJ+sQiTbCjMa+fqrP2y9ev77M842GAP+vphnJm2SXjU8WyZNQpfhDeE5OkOsBf/9bzz6RZv/E1VkLa0OUFh8dzPn5U7Db7fE8v7QrN+pZXJyZH07tWD4M6Vd89mA6x0FmX6ry82VZc3MR8ulR3y02SE4zVvvRCA72r8Uw1Wj/5o79PfCeOYMJ8NmKzVe9ftB2OKFrwdyHQ3nz8yFKYSQ6/fM5QCF+Xu4Tt7oysUZvmXbzjxYtXAPRJimd1dJZa7K3jYEorw8XFijIvMKVmkFQF05lGJynIgadRCev8NhyQJimF0PCMByMSCa8nrkO531NWgog0doy+BwDU7HbYcvA5WYIbDgglzTQzNNxOvdNVXPBlOCWXGuF8G9wTAfdpg5NnJILefD4/4gvH4Dvpczr2B2wuhHnFSHkRTVjWkos3NjiNuizDPmA08Lnf3rWGlkrvn7MjqRcPvsPxYUSVTjkSpK5rTfjLbxTK7nq55qdff4Xmq9x47jgYokbQnH9i3XTMBHG7TBOOhT3hcD7FPn7Jh1+rg8D1hoSNhikZHN/XCe9qsOuOFp9E+qH6oqeRHIM3PMHxUwyp3Zr+56g+T2SXfHQG8mOja3CzkjpUF0jt22wESfnqT78mCF0sqYGm60tsSX+enA7o24Show5MX4OyaEl6Sa3Va3r53Xp2QFmvuAMzJnFOKYdZaKl2h+VWtWXstw1PJwJZtz5H9e3WatZ2Nzm73YoMtdk3SU8qda+P6ZLGMiik99Fwe3pB4B189YzTL77g5zfSP5qkXBQNr46lD/enX/FW6M6qNmL5KeH856qnMIrGLOQw37/3KE4meJ46iK4+XfJSLsFnT5/QNjURD2/68w/veSttAbXpsROqrFof8zfJivWN+o7MMuk8dUiN25ZNvsaRGujx0QnmMyFonw5x/YBCnNzDkzGO7qNL+SFd56xT5biOhkdEB2NFngyYLyPsVh3Qgzwl0Ax20vayWe5p+vTBdyi3KbWQp3eWTtW7mEIHZocejTgwbutwtvxrzj+pNTXsfULZk3lZUZXw5FDthX3cse1jzLG6TJzgOToKlm/icr24ZityScbQZ36i9poTmYwGQ7xDqTWOK8yhjGmWQ/5wf1q+ium0Ha4k4rS0pZUa4M3Nho9vr9lu1fx+t/5IIn2BP/vihHAS8klQj/Vix+xwDtJmpTs90wPV2nL18TvoLEaC4B+bLispNe2zkujIZSHtI13vs13eyYE1jGZTvpAU5IUQcP9tOxM5Lm8YYklLVJkUdFpHbqt5K+yeXlfzdJtfYMcpzyJB03shltTf97uKbt/fMxndlj1n25a4VD833DlTuTyDcYTuWnRSZw/HUzopNTmmgW82bKSXfFPGGI76vWqRPDgPPUwdVAAAIABJREFUd/aDl+D2dkMtByrJju9+XcgXuqyX19xWapKLBnph6q83DTdthyvQe9cIuOPSef70CLOvOD1QD77erjieBWyF+fzdt9e0sogD74jeOaLdfgCgrSsGokagdT2DKGQsN/3VomN3e/XgO9R1Qyk1wHy7Z+pM+XKsCsuvLItKvM8nRc94esB3lfJ4m5sV8zsqNs2g3SeMpSDefXzL8ZMTyiv1nVqSgNSRDocGY3vOlzO1AGpgJXRQz8KQ2fGI650aq7zpaBM1QVujx/0e3avl7RlWnXEpUjPDwYYmPZd56SiyHB01F+vKhFIUJhyN0/FrDJE9uji/5PY7ob+aRoyeDFhKv1+1PqNar3j25R+qsXn5hFIg65v9hvHABlsurMkUFwlN2ppxNECXiH06/Nz7HR2ry6XJt3z49K/Un7UxXnjIldQQmmKH4UmzPDFjx2Et0jYxe15K7n9x8XMGnk2mieLE4YyDJwNSATtdk+M9/TEAabUjMsz7es5kEtEcqLE5ZM7TiUfTv1Dvv6wInwpQJP98WxidWheRU2IGFudLtaYuy4ZWAq+kXOGPxiSibTg7mXIibT2zJwOsaUUoLRnBi1fY3pgmVvNotgVf/5GSa+q3DmfNLb3QyB2Nxkwlmn0zGTEOZmTSV9SlFcsPClCzT1tq44xamsB/1/bLLWMhg+j95yS6utjM0xOcfo5uq8+ppz07eYebXcaLQcBcpMGskUcrVIZd4NAZHq2AMZyoZTQ5YCD7Ky6/w7fVehgeH/JH/9Y/wrbV52ZJxbfvpJUljqFref1c9ZG1BDjC+/hPf+cdLN9HJOQYnxxjxTat3JcHTw/pizvigBRrdMLkRO1vOzOQbUdmOAyHEZ0lyje6heFaVFJYXqx3GK60RMQ113HGwBU5sjohzdQXTicn+EbHXZHyj18/J7PUPvy//vxvMLKHq01PQp/rzZqxL4CxSuf2TH1G2/Qkyx2Lt+psGfcDPKE0s+wJUWDz6sULAAxTB2fEjYDwTDOhkHTRJBiSFQV/80sVxT09OuDwhbogNXePPvBJJYjR+5IrudicoYHZ2dxeqLWwfH/22fNXrYCG4v29M1x1Onm+JRT8gd1b5JIx2Dsm3+1iXi/V/fEnXx9hCKAk323ZXqYsr9W4aUVKXoMnfdZvjt5w8ExFgvPnEa9fHXN8IlzErkUqc7gtYurLczQJMcajIRdCt1bsH+bSvbPHmuCjPdqjPdqj/d7aDzPGeAZHAluvkoxe2Fz6kUcXTWkSCUtdg/FQpc7KdEubF5ixINT2MZuNSmMeOhNm4ZRQvEp7E7O8uCW/y+N7OiuhBsNd8ile8sqTNFcZsxGOs5uLD+jNgC9MhR7Ut3uMxcPpk/B4wkDQc1HY4mgOc2E+GZs2lnjDg5lF6Aa0vfJI9DpjLNpU+11Gve9oJR1YLC8I85i/J17XnitsYfA4sgcMyxvqnfJ4W13nx6eqnhX3Bcntgt1dQ68Vkolqcp4lTKOHobyrmys80yCS92jyjL2kap3BlLQsaWr13DvDZCl5+n4wIBjNWUg6oCgH7JYS+VkDPmUJuSgJTCwP2zykXqpo87vkO0xBNjrOjNXeYnmhIsOT/5e993iyK0mvPH9X66dfvNABkUhkZokuNtusx8ba5i+f1fRMCzbZZLEqJWQAIZ9WV6tZ+BfoIhGVm14SvgIsIu519+viU+ec0OVI1D3MCmrH/GQRPlA4/WW7nyqvrdcrCeXvbucrrKjDi6+V9W/5Hk+E+HtrGbz9+MsnaEc08XAlTlvdveNjntAVRvrgzKTYLzmIhMC8m7NvJCqRXtHtOiTC9rFbF+jG/yLT7Z/3QKogtXHD8Zmi/3q72n02hsNTtWbLXcy2yNAlHGuaFvdCAKC7PmbbMDxR63kwOKGVWGztGFRFw9cXKuT2ap/A2GF8okKZbp0yEUq5sXnEL8P3RFIajuZw6/yk5rC1CB2DW9lTub+iPhAh0d2e+XSBWTy+F56ef4W7Udb43T7EkohMmsJ8UWNEap3O9teY4sGNJxYnjsY3kvfSd1O2c7W+zoZn4DfsZa1bbU2R7vj+Tim/98Z9akt5s7OiYFoldCXM6Xld9hLuXhYrvDRmIhp2wSSizh+3z23bIpTKaL0A3bbwRLfOMyv24vUvp3d0R106v1GeQnKz5qefVG5teHZME2h4PfWOJ98esjJr7sRjuKyW6K3aM3EVQ8+lkjqCdmRiDSQt0S2oNQdNcpurZIclwaNOr8eGx2kQ86Lg/nrLTAiegyIkedij0ysCrcFaqL91PR3rQNTbw5DYgCdPVWQlq/cs13u6D3qCZcVrAe7XlsbJ6BitVvttn1tI1J5sUXB+0GUsxPors6Y3VOvQN1b4ege7VHOc7h8J6eqypqsCXSBXjuaQ7ksCSQX4rs78TnmXBhXd0GFyJKIKbYYmoW/f6+BGDvG9movb2yn391fM1mpPTboRmi1E2GFAeDhC76t9sTd0UgHL51VG1jQ0kv+zbBc/UOF2ffDrvt6vXoKLy3s6orDcHY/w5WMsm5D+YYd8K/mU+Q2LuUiYGD5OqGO56kOtdimVcEIGNdTLJWkoBQ99HXNZ40nxwL1WcS/qlbtrjb2WYIrIbrncYcohMXHPWd+maJJLfBJN2Po3j45hV8VEwmrQ1j6RPia5UYfcTC/5Wrjn9vNbrpIEdyn8gnVCLQuqyTNYpoyk3NgpS9r3N+xEbqbSdI5O1GHOPKZ7ElGJysFPr9+SrFTIyz44YO20lA8UTHHG5kGQ1XGxzccvwaPDE/Ik41hysq6n4Q+U0XG/qulHEbUuMimNRr4TmqXwglVs0zbqGz57esymry653tEJvjNAX6l505MtbTVHqBYpsPCELT5Hx2p1Cilhr4wdjvAeWlXObn3LTLBSzSOCtNSicNHqhH11uB5HR5RVh8MLdblsq4pIZHcmxwfcTadsVyokdHQxwpCl+uLJiNVmix6qg/f4xOVJNKCSkHv/eMt/ea3mOxzYXIx7rEwR581zLIEoDKyc/aphKSX8nhWgSTj2/fvPL5Gp5HxXi5rlMuchct17OsEQZe+8jEGDTELFdWbzm+8UbVhstfy0nqGt9vI+0Mot7VBdPP3wkHop6gT9MV9NMsqVMpA28z1prdbGT6+uuC4X3N2pD1WmEexVKPh8fMZvXz7H6/+VbV30aIVlPwrCTwbAz9dzbuNUJViBxrKxxAA8GQ057JaUtXA9dmpupejtj398xW9eHNMTBWnN7fLLu1vcvlpv27pkI0Zl+XHGH1//xOBAjePMaziUHOwktCkWe/S12jPHk+cs7h9XkbDSHFPoCmebO3x8vEjthbjNEQpf0iajHzgkmur37e4DhuB+TScjqUpS4Tuu7AKva2MJxkwbmLz6kwoDdrUaL6qJBaLy9R9+C0eqb7XhkNQmVSNqH6uUQNJAT775mvvp42G4+PqGJjVY3Ahfp1OwFRzoJq1YbPbsBGI2aB3ylTIis57H+e9e4koeefvxA6dnLq6kO94lGeVEnUPX1/essoS/Fcmt79/8M47gKQ9OLZr7NZrIk+0IcPsqFVC3M+o05uzwBQDNdgH8+C/6byOwuSLBFViw7jdEfYdW8pPrpqAUKs2z4yOeH52z24la/X7Lb45Uv9KkZJYuWG/VPkzrBZrT4Ej4ebVYYUfqOebLMYWe0fRE3aZJaWXvmVpGGLkshJ3sdrni8Imai2zzeIHSQ/v1S/DuIxfPVWefTn5HJeDp+dWe5WLHoeDGis2CYq8+4snFKa7hUwrY9nxi8+daWWDuMiefLzFyddj1vT5psWVxrw6dkd2hfao67uk+PbPlW1cthnJ5y1pqTUojxDcrxrEn73zCD5ufHh1DuVrzIZNLuAj55qtjklu1Ma6nU/qnagxpbFBu4EDygEWiMZUKJVtrYL4mkovHcUJWZU4tpMZplZPfqINhkWxoc6il3ut+s8URq0prHSrXx5Bc5npfs0Oe2R8R1o9v/CzLaeuC+3vpT+DgRhL779vsdyW5AOSdYMhIPMb5JqesDRKR6GmrAf1AJfXHnaf0/D7DkTqIit2Ust3z9q06UHc7DVMWYhHf4ug1nYFa/Lq2ZSu501BrKLOPpKJarWufA81vr1RyPc9sKskjj48ctJFJmSmLL18nbCRRf9axOffCT6rzh23NN0PVz2+/OmD28ZoyVQaKnZ1yfhCx3EtO1izpSuLc8CeskpxtLaQOHZ1hTz2n3n9gtnvPwYEc4NWGm2u1TueP5GZvf/wTAItVS1GFDEcq76WVJUNHbcqiNYnLElMMhMCNGIpG3bBjs7f2bAS87YUdtAMPTXKomtul3Kl+//D6muJuyVd91dfxKGD1gFu7aijXU2wh0L5ZgibVgnXc0PoGT3p/hXKsyjg8FIkeOsQPEj2dlvXf3eCH6u+Cg0NslKFoanswbLxAXSCj7gn/LGT1Hz9sQO/w7/+9qiwMfYfF2/cEMv8f7mbYQud31BvyH549JxNvr97dcnGk1v711Y6P7+7xUYf0OQ7zxeNelOX5pPUDSXRNtt8SPxRpGQ55LgVTQ5MDw+D9tRpHXr6nFZqyujYwXIfGVmfWzfSSZF2TCw+lbeYYDzSEloFrVzTNg15on6lgW/d1S93qbHfKkO2GLrlIjGVFjO48btQ+GxxSmw49eU7XHPHqT/+feuZaZ58Z+FJtPexriEQgur7Aae55KcUv+/sdx72QTKIvw04ADwUn6x3FrqA7EJ5kL8ISD+7w4oy4LT5VSpc5dJ+ob2hrfZz1NZpEtopHMmYPuDvHzmjlW5heQGvbn7DTlVbw5EIcmKxlMPQ/zXfSbojFYyurnMrJkPo4TgcWV7MlbaX2iWmFnE/UGd3v2JTpHEuiFG5kkQolpW1mmIZG1ldznm4zCiFQqf8KofxD+5IT/NK+tC/tS/vS/s22X/cEmwJfRGajjs++UN7Os6HGdF5hiifUrGK2K3Vz//z9O456I4Z9ZakWC5OeSNuMQo+68tkIoXM221PeTDkdqHdsIoc4Ue6tq7e0+Y67TFQeyg3BiQrHaraBu9sykOqjanvFYvV5FRPAwfgcLRGR043N3d09RiIeTj7g9bUak7OvOIm6bG5UCC6pLfJMmTy9xuA4mhAJvq/uhqz2FYV4lIVmUK2VN9tkFpuPOxpLREndA3pDZeb8PN2xsGIyyYuUhstarMGe5xH7jwsDp/uYutlzJ6HiKi84OlJz4fshZe3hdlRY1wqHHIkCvZcU5Fc7Ql1ZTrtlgbZV1phfLin8nKJjyDsy5vsNs3s1H3lTYQhJ93HXpRfqiCISRhtjFEJcW1S0eglSlm9Un5fnX394r/rWnNI9kyrScR/f1HANUXZ3CzKBJjS3G5zM4T99oypVjzo2I4Ea7G4uSa7/TNdQFmj86u/4z9Mtq1ZZnX9cu7wVz7fbsyn3GoGw2wSaTSYhmXh/T6AXaIGyMqNGY3Wv1tpi/nlJdSK5h8U6p7QsTMH07ZczJK1MPxiRawlHIyGmbu949Y//TX2Lswt0K+UwUt8ii3r849slheQ3+t4BY/GiF7MF+mpLT7CJRmzRVOpnN7cbvnM6BEMJe12t6QwkX1WkpMWe3UOH/lWrq4JJX62TMtPo9NQzd8WMcbUlEcWL5c2es576jpOBx7O+Qyjh0au7q09h8tPff4ulB/zwSu39P3z7gt+ePeXjRs1fuosJPLX2h55Jh5S7pdCYLbasu0ITWCW06ZSVYAOvvv+Rd7/8/OgY7tcfWAlJc6qFuEYHXTy4u/maQHK+B2ML3azgRI2j+H6FJtGZzFqwXTZUtopKbBsD0+pTy/l2P3vH8TPV78it2bTQkVTF5eyS+YMqejgkqzOM6EGMN6KVqsf1bsfk6POoCMA6LTAznY7sS0qLrqO+S5alfH16Ru28V/9Pbzgbi3eVJYwPB5x+rTzBN+/+kV2SUEhOcpGVlLY6k4vdlIlzgKupuRme9ilFGUIrDeISkq0Ks1qDQ4qtVIdWU4JmR7mT1McjDFDzhdonaZviCdawd9BnuoXbGyG71gyOjtR5WeU+uybheeeBmi3mUlR3qrxBY0vWqrN0FMHFJOTNz6pv3Z6FpK7x9DW7VcP8gxB/f3NGUitPP25iyn2JRGAp6pwroaI77Awf/Q4P7Vcvwa+Oz3FS9dT51ZLZWr3w4OwZB80IPRZ3ft8wstSmHLgt+maNJ2oMmrbgKylvt92IYmLTFfqxWZ7Ss0JOI7XZF4XFUHg2/+FPfyJL1rgdtajPTw+xHfGZ7QP+65u3fDNS74j0hr75ODbq91+/4P6VmozV5ZpZfsfAVX2926Rke5moQqe2DWopa26xMSRBtrids9umtNFDDsFko+XspDjh4vkJgRwodaIT+T02uQrXRVaf5qH4Jd/x45sV4UCVsNs9g4kwuz99eUzmPc46X6VQ2yaO+6ATGH7Ki1x8dcbHyyW7nbpYQz9mJpRHed0QBSYdOXgrz0GT/KyZG8RZwd0btdhmqyXhoGXUVQvGtXVCU/W7Yxd0fYPNRha47REE6vB2yxRveIr1AC3ZVJ/1f2SrZ/q+T1/yRU4/pOvplHJorMqMVHLMo76LHeiUrZrfP769Y/yQz2n2GHlMOFLjv5xvuFmv+X6h1uacPnGh3nF8MqFj5Ajmnlezy0/YpVrr073osnynwuiLIuFSuDunN5+HT4xAXbKz7Ip4tSSKH9Q4SpxIPVOzap72h+SJMqQGRyE3crFW+hp72CK2EWbQQY9jcinGGPzNM45cCUcOx/z44yVvF6pvZ8NvuX2nDql9pmGdjalEXWV80CUUAHzb1mTlklbvfNZ/AH9wTmgK/mx7iyEwhOTDa/xixXaq1letb4hFjst3nnOuueiS415sYr7rqvVbZAbbPIelGu+2bfjD777mKzm1fmjW7EXLrVjtmLY7LNFl7HVDKsklYpbkWvJJ+T2vb7D+SnFPpZdUEtbrRSGD7ggvE+xh3vBUqA63+ylLQyMJ1TPbyZBI+GebLMYfdShDNaZqrBH0dW4kFzzfX5NLMZfftzn9zZES1ARMt2CsqfWV5CWYGppckMvFnrxSaaA8W9NxHqevWxUlu7TGlDD93bs7hkIwEB579DoGm0ydNVbHYCL8sve3dzgJlFJH8OzsGWlV817gOh2n90mHsZwcMnQ7hKaaf9/aMxViiji3CPDZCRFKWO0ZC1yjSl28IiH0RUpp+Lkqey25U93xSUXGarbLaNqcyYkKcRt5xZXk20dHX9NmNRs5BwemRl8Mt822Iit9ainuiac1VDojKcSq8yW7VK39XuJjhRalcILW6xWW5FJdx+LDhzuy6kG7tKVIpPZCID1/rX0Jh35pX9qX9qV9af9m2696gkcHfYKusk4/vt+SV+rWz+s7FomOnghkYucrZn3A0zXe3l9TXArN0tGAUKihFrs7zKiLLl7M25sl2bYilUR65TbooipgGD6ZFtM0yiIYnH7HVKzmm8sp+71OIl7u11GIsX2cncGzChxhNShwKTN4M1OW674AX2AJpVuwXm0wU2UXfJzdIBEwTvwujdHlBxFALfWU4PwA81hZxLmjowcSIrFa3ImN1qqE9GxxS7ZQz/zTj2/4073Ok99LyfNqitERBhPzFMN6nOnVQKPEwRWtrF2eo2lSPbVccj29J9+IioQRkgpRcBFruFr4SYsOy8E/Uv0qtzpVpuEKWcCRFhA2GfGV8sa0BirRJdwHO8qRQ+9EfbfNfslOEuKurxP2IzpiZaN/Tv12/FxZ522Tss5EbPnNno5nMZNCiTTOPxEcR9EFWuDx939WIe5s8RZm6t9nA4uvvzvlT2JlmvEO1+vQiKl+0J/gi2fQsUPiXcY0UV7iJq3oi2dg+AaebZM5yqqMqHh5piIE7y7/ZTUcgC5MO8vdgjJtsBL1Drc7ohFWfaMoqF2bVGi94tdzfClEWrzbMXQPmRyrd7y5W+Ety09Vtsf7hOq9UhdZvptBXlEIabjW6fJEAMOjo68Y2war9+/V+3tgdJT1vbq/IZtmPCmPP+s/QKHb/Nc/vgHg/evXPP/NE/XuiU1tPeXPooR+dT+lI1V+9eKGN+83POmqvd7RQG/Uv83ZW7rOgLpR/RxkGxY//z22hJj12wV5ovZ+NvTppQ1vr5VVf/S3/wdtpdbsfHbDi7MD1nfK+9zVK+ZCkvGvm2f7SA0YmmMzv99gC3TJjStCSWEsyy21V/BOojXt8ITAlPV7d8voZEw2fNBFNFnsbrlP1ZpyR0NevVZroM5Kzv+v77CF6UZDQ5NzQTN09LJkK8T320IjlVCtoafM7h6nfhudGKSrHeu1mrfNomKSqm+2ulnRhtAKlGh88py8fqB2tClbiw8/KbaoZbJjt08xAgk71hX3AnHqBD2aquK//KzIKc6+PcGJ1HmlaRaG7xGKiLQGuEJev7rd827+nryUc0D7HC4U6UKcEOmsK3Xu3l5vMHQDM5NiwbSglkK3xfwDXf/ZpyKb4fkZmZyzhucRaQGusGEtru7YJTHHp6qvezbshVJNczqMDobUEqFryppKhJANHfpRl52o2fc9l0LA+fnsf0NUt3BDbj4+cLjlzPfq34fDPoalI3udRO9jSrlzgMnp1/+ev3+lYvrbxOFQwpiBPaTVA15LyOz9LmV/XbMSQd5lnWAJI/z4yXP205DXksOx7zLmojz9yz+8oj8a0u0LJ+ibd9Tr+0fHMN/WvBOByJ/nW8yqxy8ii2JrGoHwPjqai9lU2KmERHYbSjk8j0df0/bHdCUHuW8T7HFA/QDtqEp8yedooUae5qxl4U7TnNZUH/zeBO10wKKRENHihicnwlIxvcLqPh4CIl0wnvRpJAxUlTmmYJCSDdRNRiPq08vZjFi4FLtWDyvyGfSF5iqr0WJlSNipRlh4mJ7a3PP1lPju7hP9XF7q+KH6mUVDv3+AUQh7fdaQiwDpuqzIax1dk1BW9fkleDpSD9Vqi/WD8HW7Z7rLCceyoUqD2QeRQCrfovWGTER5O67umb5Tc3af5xyNOqwWKre0mF3iHF6wf5C3Sd6QuXII5zfEqzlJqdbQcNQn6D8oeHu02haxj3AbqB116XfCz8NY/+1HtZ73dYmju+QCu/nq29+jBerls/WWuAooatXvNk64fa/W0E1SMtZ32BIBdFqLM9Mg3cka+n/+XzxdMJzThsPmmFzChetdgZwD7KqSpN1yKNCeqKiIRRlktVzSHQ9ZbR5nTyrQCEMJR1s/UUoO7vioQ2JsaaUi06lrnh2o33vRd6g3BW+vBCKSbXl6LPg6Z0yWOESSj9Y2O37804+MJmr8uyQm7KnD3Wh8Li9/wBlL2fovP/NBFNJxcoLjiG4g62u+Iv4rOf7IDwglFGxYAauiIF+p+a+3GXpXzo/RCTNnwxaRp9J1hiL95oWHtCOHZUd9/LOnQ4zY/VT1eHIyoJGfXd++Z6MbBML3Z+oey1rNk143bNcbPs6U8ZD3R9iR2oejaMjo6PGw9Gq74eryJ+4vVX8+vK6ou8rIms/v6FRjIgk5J75HNleGC7uEaTxlHQu+rzJY7iuOemoNdY/7vF++V3ORmcRlyx9/UeH470yfyW9FBWbxA9WmpCfplW8vvmIu9ImrQsfNNHKhfKvrz/PjgeTnmyQnlLSXYTks5zviTK2pcT+EVqpo25pFvOLsmapA9cd91u/lHLIjkjonWQsHabckeDKh56g11I/ntCKS3dCA6VFU6pzclQVepIys6fWKbF9gmsJDrUUY4jTEIvf019qvXoKt1WO6U5shGowxJE5s+6UinxZvZNea6J6yRmu7xGrG4Alg2fJpxwpzEvoBod/jg/DUaduUeumz6ykYRrfrkgoIfNW6lE5LZI7lHQMyOUGik5qXXx9weCycgbXD714qsCd/9+pfjCGz+lyKl7gwHax+H6NRw3bLkrU8U0sUJ2pfVMhHL5+xWqgNFPslVmgRRgpLE1YpmptxNVPjyLWGqzt1SlWlSa1l1IJMvb/fcfxCYcGGz5+SJhV+pHabrffwxiJd5LTY9l/5HOmMZL6iI4QEmpFRCtg00zUsaoZj5XEsVymalB9Xhs9seoflqXnS0pJ69UBQfsqgZ7EV/cYs37JPZp9KnFszoJUYfsmWm497lrE6mD7ML+lJju4/fPOMJqtoUzX+T3Rqf9FMsRaNRuNsoObi3qi4+vCawbE6QI+fHjKQufj57S3tdoklPKSd0Gfyf/5Bje/yLUm6ZSCGVdM7ZdrodAQYq2kGa+EPfGr+hsNvjnAS9U27BwEbKei5u1nx4+0NE7kIHAt2sbrAQ//zLMH3f1L5ucI0+Pr4lCdf/TsAvv6Pf8v9lZqXZV7RmTxjIsbRx+/3+EJNddY7xmx76KISfuJ3GDY5c8GipoVLz1NzkSR7Dro9Bi/Ueqs0j5//Xq3rONUZ2TpeX8jNjRWJGIe622W32/H2T//js/6DsqQj8YZe/uE/ERfKQl40HnPDYjhR/L9PDmy+k2KEY6fk5uOK6yspIjEjtFO11ianf2DinhELZeB//89/RzydcHGi+v3bfxexFLLj3BpwM33HUgjbE+uaVSryQWWXfubQKrZm3KSgzB/3ouyyxjHU9yzWMefdPrTq/2/mU7JSjc/VIwadHsFQrYvbeMZlIWTa1Y4XF9+Sf6fOr/thTf+iw/BUrbfsZomdqXOnGxa8W885sNVzTo/67G6F4zXOCSyLVgD6s9kWxJDo/W5IYz5eGOO1DR0zZN6q8U46LqffqPe1WU1ruhhCYK55FpqQcpwfn+CHAWGo+nL43QXv5ndslmpcpBm2wGNqu2V3lTEI1XPMzgGZFI91AhOqLb5gZk/HE1ZXyomompI09Yi36p1O8HmxXi58x7pWQCXws0ZjV9RIzRBW6FJXai46vUM8Z4J/rPbsh+0Na8H3jSOP3Njz7kpdwlfWmlW0pylEYs0sCRw1v7tiyyzbEssdcft+z+GhemYKU5o4AAAgAElEQVSd17SJhi9SbXGxxZDx7tPHZfYe2pec4Jf2pX1pX9qX9m+2/aonqDceiYRaJoNDLJFouZ5fcXW/YF+rmHJSdJgcKnfeOfL4p3dvWBvKshmOT7iqxTrZ6JRZwVpKv/XOV/TOcvaFyssNuocYkiPSW5v9ssaQ8vb7xGQtpetJkbCvDd5L/P+bk3POX/5H6fW/9AQdd8BBR3mlzncRWdtFFyCqFe9ZCEVWrvtoTU4mub1ltaV0Rf344IC0NNEEMNvtDijbgldbFXbyQp+5xKLrWscPImopKb+tLYYi0RMEHt39ijoXSqCTI9pAGPFth7h5HNT51ekx/vmIlXhmq+ndJ1JsB4toYFJLbXC3/4SbKzWmj7MV319ekko1lV24kCnrNHT79J+eYpuSz2l66PWObaOs3G2ccblSoGi9mRHUJraEmvyRSyUwl/vVnDJz8HTxru3PLUfHVPPfWCG1MHgs5jEXL04/jaMpW9Ja2Ey6IYZms7z9IL/7M98+faIe5kVMlzt8TaS7mi63uz3VSKScPItlrryWd/dLXr48ZVeI8vk2ZlkLGYJlk+Ye16JykDoW3QeJK//uszE8+f3fAJBs9zx5/ls6IjXz4dUPfBBLvB12SfIFoa1+FmoR+lB5d/PGZrVIiS8f1FVq5kmFpqnftSuD6Z2aG88N6Ht9HAEz27bBNxeKeca/+ogTOoSSQ9lVFpWw5Z/95iu8esVJ9HlFH0DrRWznyvszHQtqNWd/eveO68Udeav2YRj2iUW49Zaay7uMHy4V4cHF+RGXr9S317ZT/t2LDtpeyLzrDvvNisVM7ZMnL48+EUNEp2e4uxfoN98DYHRSolZC8RuD/HZNtFfrvyw0Anf06Bji6ZxK0ONGHeF2A7ZSq5DkDQshk4568O7tj+zWAs8ajei2al7yNsA/CXFE8UEfazSmiSbVyO/vXpHKuVfZJk/753jiUZV1QyFQg81NhuaP0YWUPGxgK+dAlWdU8ePSaC8vzpn9UCG4boKqpZBcYh5adA4OmC/V2t+XGl+dKM+7N7BxoxBH0guDwy7v4zmrWIiqc51Y5vC4F1KcuNhddfY8ufiGRjy/Ts+nO2hpZD6u1hZ+KOK7bctm1WCIcK2lf04coYkn7nommag/1Gjsq5x1ImQB1QJdWJy6UYhv98gy1c9FucAXubc2qmn07JMSx7jxifOEmw/qDEubPcKux0mni2N7zGKVu/UdFylbINB6RJ2IppTzZXGNKaFSyl8Hy/86d2heUFSq4z/88hOZxNSv1wvm24rjiWKQWWxivr9UB2bPO8E7n/DhSoV5Xt3smCeq0384HtMfHbLZqJ9Ni4TDwYijZ0/U+0wdhNuw3z1gM5uznqsL4/p+Q1uKNlmvT1HkTCUR9JV5hG4+rqHm+zYvXqoD5OPVgq1WYAgTymKW0hPGjv11ymV6zUY2ra9VHD1VC+iXwKNKLVwByv3DL+9wA4d6pP62F4U4IsE0GE/w9Q0fpd9HB+cYp6pvjQFPzi/wHZUXybUcQzZw5bgs49WjY7i8u2EYWUikksANGQ1UGCCtWjarmLnwOXb6tyTC3lPmBb/9akjfUe+IjJBeqOa61Vo+LqcYokxhOY1Suu6ocfh2gCmx9GEvIOrZGH1Z1JXG/RvV1+nHKxw8ulJ6/yCb9ZetlHBRZ9KnEcq8sdvh5be/ZS1MM7+8vee//r3inDx+8i1Pz8Y4UnpummNmckH4bpek7PBa4Do/fVxQ2ya/HapD6mw45ptvfqO+xckZq9YiM9VcDcyGrmC6Ur0hHFmfoC1+2xIVcrFnn8M8nj1TIft/+Ps/8vrtD4xD9U1Np6CS4pZheMDHq/fcrdVF87sXQ7pd9e7dtCa7nTIVlZSvn5yR319TSd4kavYguaWy1+cqfUtfZJcOBkf0LVVMtWlaIteiFmmjws1wSmUc2q7Bbu+SWI/jTX2rQzCWQ2q+oJXQdbWIsWqdr16qdeneT2kFIlDuCtLtDidTYzq2DlnKwRfnC4ruEENTY3j520McsyK4UPmcjWER22qvuY6GF3l881SlLd7e/sxcGJDCA59dlnBzpQ7+Qf8pmIePjmE3j8lb1e++26VoKpYf1dpPkpLtXlQjNjrtXqdcqU1z9PwINxYMspPy4dUbQket2e/OJnR6Ees7NTdxFmP1BNNWuOhGSIVAedY7SqEGDNwe+7gCuQR9XaM/kvRRYKPzuLJ8L+hS5SXTWxVGX80Kckkt0e2j+y3Te/WzA9fnUBhTPLPBdAM0T+2hf/yf/5nGbTBtoQx0XTY7tXYXcYHTibiT59z9/CMvX34HwPXtlqTSaARWdr/acvSVumiHYc3Bt2MKkWvKks/3QiHKDZ3IBoHJZbsNbZ6jSxizxmEwVPPbtyK0XMcXeJJeVfQFt7RP19xPL0HWom1oBB2H3rGax459TCP46DQ1MYucI+GaDi0LRwpskl3MuNtlj5rHfreLJeobH5aXj36Hh/YlHPqlfWlf2pf2pf2bbb/qCd68e02bqVu31jW0SFmj4+EplbnF9tWfn5/1qaXgYJZuiG2TGwHJrpMtAyHetkcddumGM0msW5FBh4DFTHmKUyMnkupC29SwA4OlEHPPk1sOREj04skRfpAyOlbWf9vq6ObjfInrTcZGvJ2UEstq6QigtKk8fEes+EGA7Z3iiF1Q7mPmotaelWt8v6TvKAvIObfpj0IqCfM2TUYp3te2m2MFEaO+AOR9SH1RfPAtRmMTSyoy72ZTJmJx7nYbzL/C+bi8X5G24A2VZ9SdjElSZaFN1xsqujRijWarLT0hH2gandNvn9AmwjK/LAlGIsBpe+y3KfuFCnMV+opFVhLIN83bHW5XeRsnxwN0p2axl4IAoySU3+s7Plpm4hsCE2g/Jy1wBGi9m89xDTXeZycHzD5c8+O1Cin/85s5eymp3tdb7udvGPfU+1+efcdP/6TCaB8/rJiMzzGFFefb4CneIOLsqVpTnd6Iji98hoZGaXn0BKawu/uFvZTMj9whJy9GGDspBLqbM3ioAHx6Bvz3fzEGV4qSXpw9YbOc89NbVShz8fIZQ+HgdEuTTgbvXksYObIZSdjyTV7yu5ff0Qi8YHE3pVruSYWU3DFzQtR3Su0e3cEEVqLXuU/odYW7MxrR6BX3O+U16oZFV0Rmw8BgNlvzT//8w2ffAGCdrjkyVX82VYIhYGnf6dIddHkpPKfpfsb13Xv1s9Dn1DPofKeKZs7HIccHQkKuefQ7Bj++FT7U4ZCLb08pZS/Wkce1CCW/evVP6CxpBXe03WnMY7W/nDzBqnNq2V+pOaDwHi9mGHV96kbNk28FVEnLbKrm0GxsWoFL3N9uSFqL5Vq9b5Ak3MxVmLvTheEkpFyp37378YpylJJIUUtZ2dSF+k61oaF7QxKpWt/EKZqoL/SiEcUmZ3mpijpm2RpTQqX93iFx/bgneD3/iN/XORfva725YfoAbTiw2e41JhLpcd0GTQq19NDgdnnD779RVZbn4SF1VdGRqvXr3Y6upI9oWxbLex4CM1XYZyfpneluit71sYXLM+wbuOJNxvmCjteCpCmS/ef7uRT9xMVWiUoDNKVBUzkMBFLXagEbiUI6gFZk9DThgW4r5nfKO4uCHlpWksi8GW1A06aYomPrBgH5RvWzdQyWsyl9EekOOx5VLVdYCXoTs9+p9bbfF1wcqnsn/Cscrg/tVy9Bu2OyLyWfpNuYXaEbawzcoM9SKNvPn59SVXLoRxFx2nDwVFWI2XGBLR/0Os+4m25wR2qz1bbPcpZyK2FGrRfgCt1abGwYHUVsV0LdddDnyUiFX58/P8ft5BxM5NKoSoLuX6EoWqxZC/uCGdoqlyKYGKIumQje2q3Cs2mSp2gNk3InoaqgT55UHPTVQWhjcZ9saSoVkrO8EQdyIQZnZ9hUuFIZVlUFhlQ3BSZ4TslU2DDssGIeq4253a7wm8fZzj0Lej2XoKfm0bJcHlh1+32HDA9PKNeSOCEXCaQysGn0hjshM7+/XPMfIoFPTM5ZzmMSIbT2OxXHF4efMJXL7TXRWC2iym65W9+j21L61VT4ogbhbQuqNMFK1AUZrz6nWfJSFZJxbTBk0XbMQ96v33P7Sl0Y9/dTTo9UWfiZNafZFmSotWANnzM+V6G6zU5n9OyEi75aC5evp9RNxThSc1MkSz5cq1DeqO/z9d98RyW51rvtHUGgvqHnZHimyTffqWrV90WMv5bcnvs5w8SxrOHodMJm3GMu1bl7w+Dbc3VBDIMxflERewrHpec6UU/CTOaMotYINLW5Tc+n7WjYthoHyZonRyp/GIcj9o3Oq9dqHJezjMmh6tPZyUum6YpQwrqhqzOT34v3cxaLD+wekYICsJyMD3t1SCS7OwanT9QYdivszY6rXJXi19s5d0JIbpo162WKKWkCKhtdjJWiXfL2AywkJGaYNnVTcJcpw+Zw9DXbvTJwjXbFejVnIDjVs6//lsxX7xs/6bOd5byXC/OustDEOPzXzdA9mkod0GbpkmQGkSVsKwOPtaRMct0k22YErsyTXVP35LtqMa5Zspf9bSZbqmVGMhdS590GS3Cvw+4Q23HZxGrMVjTCatT8dqIQo9dhJlXiVVUSSegysAMi+3H6us0mRbMMPCHptjoBpqSaNMfh426NLZjhPIkZi8LCHw4ucG2LWIjl7W5EstphDyQ0vrnBFWmjVVywbnTGkkseHJ+RCF549NW3DL2EqlDGy4UTYUlI/x9fz4i3d/hC52gOP08zLVfq/NrfbZFIOMPOkHHXpxbH4WaTEkk+0uyEmDSsE2UsXEwu0DNxNsotTbnFk/FqTUNgOay3ai/ezuZY+gMzmE1dl+wlL7S/KwgMtWcGlo3R2lgiP+Y3FpoYRJbxvyGlVBsGaSgl5asZ3b06CLZtyuWi4uOVmoxfFlMmx+rAbF/fYpo+xydqc7d+zbuZWpje4ACrZ/CDKP46VoJdNZTS8XJ7x9oRHr7AIm5KLMnPvDi8+IQBcTs9HC8FAdLbkcYye3zTvP14Re8Br2M0bMoNvsSK3U5AvFN9u2lq/AACydk8ffodkUALFh/ueXO5ZPUgndSsSEM4FsqzTtRlJfm80lpRFTma5OG6gcuwL/mFZM7ibsYyFq0yWmIxl/ZJQcf8/AJRk7imzQLGI5WXqjsey42as02c0FQxlqH6GtoGpaYWSei0xNslg4H6zFasM4oEVD7WIfP4cCd6YOae0AsIukJBhU/3QD1zt50ycH0G56IQX23RU/E+vA2tvqEV/GG5+py0oG2E1imqcA8FyuBVOK5Ba6m5+OaoQ1Gpw9wwPE5PDhh1hIqv18cWmvm2HeG47if2+F5dsNRz0qnAWfKKG+Gn9Pwx2f4eU6RfDo4OmfTUgVnGG+aLNf9wK8Db7Z6iUodwnHwuy+XIM5JAx/Ycnv1WqUgs45YPr9SllwW3DHp9nr5Qyvbb3RpLyrO9IGKzWhMLIYBrOWhY8KDc0PVwR2oPxemCy+/fsLhVa+p+VyJpOJLWJ/RDOlLAFe8SXE/yk+aG+M2arHqcJkq3d8SZ8nZ2Ojh7FQVY3v+EVlY4Qi/VxhW6UBverSpWrxccnot+5LmG9gAc92z02mA0Vt8mD3ycsMvXlrK8tbal6avnnHovefM+whY4g28NGRjKm+1GzwjDHj/e/U8AFnELxuMXiENAIqoZs+wG1z3i2ak6CP1Jh39+p8bkmS6TrkFgyqGoVURiyOzTDK2t0MwHFXQHs6xxhbTDx8OQvKrndNk3BpuNeHj9DrYUjZR1ju84vBR9v7YNEfk+dNci9B5XhUlrH92F0lVr/+LFEWZPVEmckLf/+E+0opnojvskAnlaNAV+74C3e4FHbWbMP9wzvVLrfba+xpGCRNsdgd4Qz5ShsdVrNDGiC92kXKwoYuELnUywdHWxG01M1TQYQnDysLb+sjUCiG+3NR0xVgLDgzqnkO8W+R6Bqwxlq/awtIRWipRKP6NvizHoOlT9kL5AQu5f3xPYS3oP9nYv4qFesDAMfG/EuVCzbdd7HuRL58uagWdxIEpHm3XKWvhP80dy/H/ZvuQEv7Qv7Uv70r60f7PtVz3B8eEp2xvltTVmTSQVeNNlzjyds4mVJXfz05S5xHRvLme0RU5fwldVWrOQCsivvv09xx2D+UJZ2kZT4EU+Vamu/ecHY2whQM22MU7YZXKmqsm6tsVyKUrFTcsoPOTsWFlkbbkjrh8vg90VMaGU05elQduW1JK/iswWvacs9ayyMYIuRwcqXOO7Bcjv1dGe7qSie6AsR52QSi9xH9iQ/R2TA2URdTsa7X5FJeKaYWDwwIZ2u014t7gikeqyPAwwx6KVNdLw3Met35dPeli9AGrlDhjbDNEDZX4zxQ4seo6wxXcGPPCduFqLFWh0BGzrHpwoJgfAIqffzaik3LncG5h+y0LUQO62Uwqx1pL1CkMrqDaiBadndG2hPXItbnZT3PQhBPc5WP78RI2xdzZmKgDaIi0YjEwmE2WdVjZsZ2r8RgFt3iIRR+rUYC9K46ubPR/WdxyOlaU+cgyOoy53cxVqubu5QxPduH2cM5/r1ELMbHsBhSifbO7naMmWtx/VmuqYJltNFOKzz6t0F0K4sN2toRPSP1Rh1M3VnPtrtZ6T3CTuLLEsKfW3XPSdjLdKqfKarniiXTtgWRYYomzQPxqRxCqM6Jstzw8n9IT9fpKWTE5FQUWLGI7HeEMBM69W+KJEYRo+rvs35EI9+H//y7Qmq3zHWqqYO26PjuR8D04PuPvlHbNrtdeTyuDBpQnbhjYMECeJj8s9Ner5B/0J1sTn4kR5Yt7BGYFt0RFWmjebKbu9msvZfM/Tp19TSe58uU/Qcon6JCabrk44UnsvaFNwHz+aDgcjso36TkVhE4UhnoTyOoMDTgStXWotfkdjEytPJnDAEIXy3d6kIqORnbKfx2QexAvVN6v2aITYPdkXFFlJIdGq2ocHmqH9NsY0CyqhjXPbiklXnUmZ1qLVjzOVGKVLut9xeqLWUHlwyI3QHjZ2gaXVpFuBFZUB055Q9H2cE/VyGkdyolFKSclGBK39gwNORCF+k+mctQWHwgqTJzpLoR0KeiMMw0Oz1N77GN8yFpWSZ2dHmM4AT9QjsuZzL+ooVPMdWw1FKjRp64zAtHAl3dHTNWyJeugZGK37iTzfzA22W1GpyAuWRYwp6STTcmnyllb+VtNslms1F8PQIux2iGcSqrdDqkTWfqsBFrXkYcuiYbVQkZ3ir3yHh/arl+DB8JgsV4vIYMd6rV5YJC0H3T5bX7BxaYYmGK/BpEvotYCE9iIPQ8pmvWbKdlviyCFRazWtYaKJfJLWxrTlQ3hOwzUScglXZl2HjjCtbDdzegOXFKHHqub45uP5tOn0nlCSrG3V0FJw0FUX1ih0SCV/VhPROhaeK9IrxT2WXErnFx6BlRNIVNXxfPyoxzpRB2jRZJiCr7PSmjjeoMnBe79KkegB8XZDUTcgdD5lXVEJ44LpeOzuZo+OwdWgylOSnXqHZkcUEhLyzArfsqkFC7eezjGlfN5yXMyyxpEN3RYt18JzmWdXFIsYS8K/aV0wm09Z/wXzy76SfI4NTmBze6WowwJL+5SPHTkNaxJMkbNp7c+xUaORYOGMGFfyqHnaIW0azkRxoHFM5hIaDSufo25IR2SetGxKL5fkw+YWr7QYPpRb71e8eNHjxUSFk86GLlI/hVbv6Ng1K1lv97M592/VHDrNEj9wIJDQsb1nKAn0ls9DujNRVdB0HQ8TTzBXzwcj7kTBI6p7lG2D03vgStUpRVm90hoC00H3VbhGc312Hy7RZW08NX0MV83F9ONbdumeLJfDPTpCEzaV/XZGW1acRkpO5/nZBbkUycznG/qhxzJ/XL3g6GCCHsthW4IeCXTm9JB9suDDL6rY5+27Gw6GTwAoez6drsWlhM62dzm60Lkts4owaYkF8/Xt+Dl1cMxPuwcIhYvzQKdo77G1kv1W7fWi0Di8UAUeB0cnuKZJfyC0cc2Mxn5cUaUsOrRyQOuWw2LTEtVqbuYfYppQhcoaK2Nbr2kl9dGgUYtUFE4X27TwQzUX0cEJ14s5C1FjaEuXMFBrQTcCLFcHwfFtdw2ZGFlaG3Gz2aALz+rEsdGkvqFpy09h43/dstZntYFEzpqkSKgaoU98N6Up9hyIsWQOAtr2Ie3TJwwM3gkE5y7NYF+SyllDZtH46pDyA4um3mJ76qzTXRdTICIj16StXPaNWtOG56NJDnCzv8XZF2SeFAY9YtRqrUg7FQWzpfo91woxup1PBUWtWVE8kP5oBSnQG6g9m2QGq7k6L6qyIC9LAke9f3m55Po2o5J8arXLQVIKvfGAch+zE4PEdgoCR+o0ui4EDobcH67dYBtqfP3u57Ctv2xfwqFf2pf2pX1pX9q/2fbrnqA1ZOEJT1+RoevKOqrKJecnz9B0ZbnOkz26qyw32zX59mJMnSur6mq6oJAEtKnpxNsc033gpXNwWjDtB8+lxpRyo9ODCb3AZTUXXS8KPAFp6nnO93/8CYTtw6326MbjJdWe22G7FCvetOmFIRvxaA8nAcFD7tow0WyHWthGmiahEvJuY3RE0DUwTGXlOFaBZehUwkWY5zGxVJnu6pqmqOhLFWaex3z/w3sA2qbFMCARyzHOIJAMcGMVrO7Xj47h9uojmuPjNsqq7h65OJKA76U1Rp0yXSsv0tC7mKJLWCR73MylLwUPOgEz4Xnc3izIV3MQcGnjWdSGiSfh6K5R4TyoBdQN+WpKuhbNQAsyV4WuNk3GfrdC3yoPL3qkJuNAdNv22TWFBAjcoUGwAUe0yTbLJc+Gas6eHA54EvVpBUD86n9+TyPA/d/1OwwGQ+y+WkPX31/iJ1tOLwS+E51RW+ol717fEt/MKMXWW8/u2cxVpWqgZYwmIyohSW9jndGF8uA6h58THxfiQVWxjuk0hB2Zm33LxVBVh3YHExablLWonSR5SiiMPIFlYOkmH+5U2PZdXbPZ7DgXRZWP766ptgosvr6/Zl8mdE9UgY0PRCJka/glQ9fktxMRoo4zVhIhmC1m3L57z3LzOcsHwPOjI7KtWvDr5R0PRI/vru5JlhtuhAz51myx5dtbxZ482dKTisT++IBIwuSZ7oLZ8GGq5vBq/WfG0S2FIaHUvsaBpyp+HbdmebtnJeTX/VGf0ZnyBM3RgKYqmRyruUrinO548ugYktam1dXzK10j26aY8r1X5RrPFDjObMuuXWJKWNXQWrYSuYkGOoa+wnnQ3dRdpnczal19C5OG/VxIyE2fIBoSRqJEU5Q4uvLwGhrK1iQRNZ19VeBIZbFpNljm4wVKdtDD9jfcTdX54YYFHSkM8XvP8bojulKJvij3n6JV4/M+ht6gl6pvq/ma+/tr7mT+Tb9L7alCmNNxD9INS4lgGKZFT+A6nlFh9ww661L+b5BKsV6abMn1Hc06lzF+Htlx5MzoGGAI04xljkFvkcJdHDekFoKB0HKo65xEdBCzFgpNrae6MekEhyQbtS6ubxYEVgcFrIB1sqEj/LPVpqC1LExdvSQybCohJEi2BZvGopFCqCjw0aXaer1/nIf2of3qJbjdpKRStkyd4AjezikK6tWUIzmIqrKldNVkHZ6cMh75eMLG0B2GNA8DrnXKssdGhBCbNMV1XBB6qOdPn2HJxXLYP2AcwqtEHVpl2nyi/+pFfbq2zts3UmIdOLjG43HfcHxAqD2EX0tqV2Mt9GMfVzsMiXlbuo5ue7QiyWNqFVUmMfRAJy4MamEuWCVgLqYkMh+64ZFl8vU1ndC0ub5Vl/fb99dc3kolYxih6xqehGeDRmd7qxafHhhY/BVl+fWW2sjwhAzYbnQsUXD3dBPH6oEI514cnZDKR3fNHoeDMbmEox0vpCfjra2G1G1IRBmiqDSGuoYhGMZBFBJJBaLr66T5konQzdmGiScbczlb0DQtu1jyhennwYX5nbo8s3aHLlVv2i6hV+vcC1asSlJ6QxUuOYwsgqhg4isjy37a45c/qwvCCDQCM/s0fvOwQxVP2V4K/syAxUqt2Wy1JOp7mHIR9cqSolTfcLG+g3RGLWFWv9uhbSXE+ohA8/ohD+F4jO0THMFcZe6as4szmVOf2Jkz8lVoNs7XDAYPB08Lro+5VZv2v3//M1p/QiZ554/zBR8+qLX+ZBDy9bffEkmeebOpCIVM3B47uIbOu1tVDZvUezxfvWO/Tfj51S1TyY/+65ZmNvOZ2kPff5gxkErsH/98w372E3f3ap6WW4OTUD1zfn3LqO8xeaJK7c9OXnBwqqqU54sV+b7GlBxZnhZctzssEcbWC58ml0Oq0VnHEbUYZFp4yLqQtbANiH2DvSjBmKkJ+8cvkDJPeODRKooNrqVRSZ7XDbsUK3UOJJspGTWOKM0kbYkl1H62XuC4OpEwr4S6wazUMA313IMDn9tbtYb80KZkjyehat2uiTRJ3xiQmLCTEO/RQYfDifq9JNsSp4/Tpi3ubphP70nE0PBLE11uD693yMmpRSwwqtv5DbZA097t4DjQGB+ocZi+yypu6J+IIV2m/wtPOmxpGotIoC3L1ZJGcKG5sUVbaGSSa6uaFk36Mox0tknCTqqvNfvz0LomMXzbd0mFJq0bWridLprXSF8cDElDHIxc9ruURCB1fuCyLNWcbTYrLL2P3F2M3AGhZ2FZaow/Te/wBANd7TOM0CGrhOUqzz9hHW3HY79OcIQqbbtZ4ssztPbx9MBD+9VLMDFaGk3owIYuhiVeWuThBiG5dE6vCgr5d9ee49YZreAGu1rNUjyvSdBHt6pPCdplPOXI75EJh931L/+DgVjGQbth9mZGKYdkobdorfrYxjZn2BvQEaxUU8LjuvJQNy2V+2CZjqCtiWUSN+s9oWzY9WbOfrNCk/F2ux0M+VBalZDikYh1VJngRn3MTwrLGonk9twIj4oAACAASURBVNaLLaNel8VUcgixxmisrOHOqEueVDwIolm2/ymXtssabO3xja95EdskI36vLpPr7VtaAVYbpknUeLhysRalhStkAMPoAMsIqETmKEshFmtM13S6UQ9HFNJvF3MMvyIQ1nh9v6eV8be5RrqeqwMIiJua1lfvWFzPiZdTtgJCL43Pl1Qrh8bV9YqtfMPxoY/T7/FMpHXM5watXCz5+p6qGuCKYnvXN7mQAprVMqXJZ3QEAP/yxZgPl+8o9w9yKzWRFEnp/397760syZpl6X3OafA4PHneW3WLdAONHgMxa+AJIEKGNgaDhqeAMgrMIEEYdR4BDwBtDDOYqq7urssq+WHBI5xzCPs/CZu+cRNq3klf0kmLCHf/PSL/7WuTtUINpz6gqxpSqK0p1He22kXsq5xRKA8PxWbNmx9UE8CRQrqp5vsuRifUhcfr17KB2HqN0crmHdWAO0BXrC2OCvLqYZTE4G59Ta1qmb968Yh/+vYD9x9ksxmFFr5qb2/DOXHhYKoNpjBMNqrgH+025EnxcWDZtCGcyX/82/c3HJIUtztu4ZM4z7n4jWzSy8Lg+k6CbqGfcqgvqJXG68V0iqEChmFN0YwBtim1zJgx7UENXa80ljc7JhPV6OWYaCVMpvI73tcN379XYgyNhW7MqNT83R+/W9MYsg/oww164LCLFSv3R/je7Oga8vSGXM2kjjwXzWt46D8wuwRHsdSo2TKZ2FRqI9Y1mEzlN5vXEVWe8XGSpI4xtD2OGu3QbRgp/dXh2GQbHWjUbz+Nawql1TkNQ6YjD3us3M39mEiNL7SGTtocD4J1tMbptozHwv5OrlzOPDWHaWps3YqdyiydpzsWsfxG8sV7zK+fkaoZOku3+M2zMZXKiP3w6j2B6pMoDzGHNKcZy3daZh2WysD98HbHtMjwFVM9VCmNEsLwgzPMtsFRbH5y/tPv4V7NRbauR6EeRq28ATtHjfTRdS6+qqt2tUFAR6iahtANqlh+M01nUyQp4xP5f1hNPNI4Zqbmxc/PPFzVhHc4ZMSHJYHa96uiZaeuOzw9wS4gs+S+lXlGo+qc5c80TT6grwn26NGjR48vFp9kgqOpx/1GpZJsg1OVnvGcmiA0aFRKrK0GxOoJf3TmcjJ28ZXb9dQN2SkJtYFh4loGrS6vrVZDTNvCdpXUTqXhqun+Lu84WCW6Mi81PZ9KPXUEug+mR6TUwX0nwG2Oc8H76w2uaim+0AwcH3LVnltuG6rxQ0o35pAeiJZK7s2/+yhufeuFGE5A8zAJazac1CX3D0/qhYE3levMm473b+8oVJ1AtwNCxWha3SJrG3aqhb3pCjrFMPLCZrU7boa6iCDvPEjlfmebazCUEsZkSlXHWGpEpXZrnEaeKpf5gqIsKJVvmW75aKpbrs4qurogfGilxGN9vSB1lBqGV5G6igm3OftsQ9Ypxfi8pHtQUPFM8Bxl8Qtl/dOW6kfn8nTKyKbIlKvA+RWD2RBvIizZvzhl4sv6Fvcb9LRDU0oZQRHx/GEkoL5n7DkMJ2pgtzrwcqZjKlmzrCtBSVwFg+ds9/cfa0GBHlE+kd/C/FSjSeFSpcuyJiJVTOT2+qcGzW/+8Q0A8ekGQ7PIlJSVrzc0aljct6aUec5jNbwdGg5D5VRw+eiM4OycdSq/vVll4roDTFXLng2nlEoI26Njdb/GVfWs1nS5V4LWeZZhNwbFQe7zfRrx5ntVk3u9pit95qoezT8z1N5FNo3quhyfzGiUBL9v/Y6J51CeKclCw6ZVv+2hkbNb1xxcab0/806IVUrXNmZ4QYY9lGPOpme4oxM8JSKR7FIq5cZwMjtF1x/RqZS3Ee8YKbcNfTikM03OlNpIXMWcDk9+8h0ATKcalWo7tKoK13EJHtKvtolKdNB0HnZoov570VgBjSqZmKlGWmlEqs7sNQ2z80tGKrsxMjsCZQysa3CzWmMolhjtSjKVGh+PbCy3plXuKovtB2rVnTibzZmeHRfwuDzpGHQBiaqjT6oRj58rQQstYV91RKlyRQlGtCqTdfXkgtPHF6zWstd8ePceczqiU0IZv395gecoxa16x5POI/AVM96kXO/k/69pRJhDizNfsinb5WtuMrkXf/z2RwaOyZUyQ74Y/LRL1/DVPjwKcFVXp61rTEY2ner+zpsGW3XHZskO1zQZKx/E93cbqlT1XlQVpmfSqWaBjpbxbMD8Qt57cT6kU5nDH9+8I3J1JqqRo+4qqoPKTpV7DMdifVAuRLrGwJf/693P9Is8QOs+kS/VNO3TydQePXr06NHjM0fXdT8bCft0aI8ePXr0+GLRB8EePXr06PHFog+CPXr06NHji8UnG2P+1//jRxY30g6bFDWVatvVTHB9g7lqjTa0gnQlTQzR8hrb1EiUfdH85JyykiJ+WWskWUqnK/f44AQNj2gvRVKzSbEMKWYe4pTWsjl/KTNJXd1gKK8s07DJFwfivTQSuOEM1BzV//av/of/aA1/+j//FeuFFH03WUJt2OwjKcKuP6yoVbPL9OwZy9sl1oNHoGVwt5bOgt0i59HpGRtlobLfbknuarqtrLml5PJECukvHl/h+y4H5cQdmBaXV3KOfHFNvUvxXWniMGcWk3NpTJmeD6kDh//mf/xffvI9/M//078h2n4gUHJNjmNiqxZuW+soqg6tkXuclQdSpa04GoXMZxMC5YL+5sMtevvgih1gBw26Jj+BXZyQ7mIeqetxQvNju3e0b4nqllbJUx3KGluNxAxcF6PzyB+aDNwJ//u//pc/WUOPHj16fI7omWCPHj169Phi8UkmiJag5hKJk9uPCgB1nmE6FnkiLcXRfomjHKOHY5O6Lj7Kb1XlPaMHo0l/QBJrNA/jDFpO2zREiagz2HrJRA2QzmZDMs0kVCaRo9mMQA27JsuUZZGQK0X8tFrTRsddnLODz/dvhRn9+eYtZWvjn0r7b8mAofLN2pcmf7kpqQvl2G12LJWxaLKGTXrPcKY8xoYnGISktrT3Z0WG90jYXRXOWZk1ZSWszQ47BhdyPt8esOyu2St5KqqM8l4J1Vo1U//i6Brq7sBs6jJRii0jx6TS1PB0nuC0LWWjlBPsjsGlGnDVUzAi0lSNTzRrPF2OYfoNhpWRK1Fdx3Wxxy0oCapGa+l0JWg9d6iilrVSkdBND0+NfYwHIVqt4z78lOqfky3o0aNHj88PnwyCZld+dEeY6XsapbzhzGxoGnS1EXdBh6bcpdtOw/Q9BmoezQwbHDWL17Ydld2Qd0plQG9o4wpdKUeYns7Jmcw4hfMzlnHLJpJN2u1SjEalAEc27r6jW6h0qBnQ/Yx78N26ZJFJ8NrEJ2QteGrm5+Wvn6Ptlc7jNsMPbJSgBau0pFQqLFVZo7X/n2Zek7ds9jrBWFK1fr0n9eWYb5IdTRIzUPJrl9MJna6sR/SSRFsSKaWGrmso1Xxlsm/Zmg/Tdv8xDod7gqmF8umlK9KPqeG2OZDVHaYy8DR1jVK5a5tGTal1NCpV2Wo5hZIEa9KYQV5gKbd4fehiujpxI6lpGw912RwOMfskw7SVetD5CSeBzPE0pXyv1oPYyhGtwR49evT4XNGnQ3v06NGjxxeLTzJBrY7wHeUqMLPZKsX9tqwJwzHuUInKupfcvBGBYzNvMbsWrVJae4eIyhcmVrYWm7ikUIzG1WHkBOiuNGPYnokzEYbhjgY4XYaZClOpC7i/lkaUcWhT5CmNYjzDyQlNeXyu/34Xk1tyzMrS8asaVymoWEXFVjkjVPsYRy9olMcWnc7gRJjeeOwRJDGFErVNDxmO43PYiYhxmW/JCrmV2+QWvWr4zWMRVb5f1ZSVMsg0fGJPJ1faoaYb4qiGlhYdJyuPfw9twsiZ4oaWeq9BnEoKWbcdJoH3UVk9rlrKTu7LYOgQZym10jA0BibOQ9ayLHCBkVJ+cU9mZGWJoVRTTFOjUA1NhgdeYOGYkkp1zALflS/RME3K1iDaCoNMlCJKjx49evwS8MkgGC3eEJSyqfnnNpYnG6beNbR6S9fKRlhkMSjh6dIsqKMYC6Xsbns0yn14nx0wRyNMWwmpJnu2RcJABb4nFxNU0yGa3mGaHaVyU08WObOZSk/WDU1VcjKTIOxMQvLs+FLC6QmGql3m1zHWdMhgLp8bnDz5qBzfOQu6fEmuXLGrTcb370XGbBaOcYMAcyAdoAMrI9mVVKkEwclEp1YXbg0meKFPVUq68tDVmMpSZD4L2W5T0kzqp/OTMYamnLDLlK76qeQYgKND23UYjrx3s4noDHk4GQ580qSgUqnKRqupVV2uNGvswCJ8MKe1DfZrCci390uipuNUHdOoWoajEY6yjEmSmFwZ9RqmxfhiRKtqsPvFNYZS7h8HJ+RRQqTqp1V+vDbbo0ePHp8jPhkEpy7UlXIar20s1RhTWSa79Zq8lg011xoS5VsV6C2V3WDbSiPy0QXvbpS7tqFzfnlB7SsX8iRkebejfVD7RgMl4xbt1mRNQ6dqTFm8hKmwHd0KMMIZprLFsW0bzTSOrmGzuScYiS/b9PwrlpsMK5dlX9lTnFDOnawzijrjUtkVNdWWZSR6jSO94cQ2CQwVMCYGtQ2bSq710WOHD0p7bzfyOJtdcvuDrDm4OsdUPl71UGcUnpHcinq/N50yHojOZLG9wf0ZL4zJaIyBTaacEoo8ZfxYHkhs3yVvUlA6k12eoow4SNqKwPHxFRPP8uijtx6GT9SBrrQOjUNCYZnUK6lLJkVJWYhafVvbOIFYKAFiu9JJ0NtES6hqmlZY7IPTRI8ePXr8EtDXBHv06NGjxxeLT9cEqzUWkrrLkwJDqbXXtg2OR5lIy7wTuOSGMLaYDncwY6fSk+/fRlTKxWFw+ohta2KplJlumESNThQJw9muVsxD5R7vGmBrmMrk9dHzKa4rnyvqDMMBrZXj1p1B+jNefE7tY6oa4NzT2FcGy2/vAHhz2PHoUsY3fM8kzHVOVLdkZOb83W9lZCGwHJy8oK3lOq2gxp+2JIqZ/V//z/9NVEvadvD133JxdcqjlzIy0Xon5LWwxOtXt0yfTkmHMl6Q5i1b1Of8EL05XhPUg4BCK9B15e59MaZSRsVxp7M1WmjlHJWl46rheDKTUhuRKQGC0jVwR3LuYnMDhoOuHAAsHcqqYSuXQ94YaLqkrZu6Jt4lDJTf30x3MBtlqptEVGXFw9RLWn3au6tHjx49Pid82krJDzBQc2SBzU6185uWgT8NaNXmPn88YYY0t7xbRSwODbWqde2zA60uqbuoLNHbhk41zdDWLLYRT8+lAcWoD9xvpQ6XLRZYBpwNZSMOxwFmJwHRsBx2eUSWKZunsMbCOboGW29ZKIuiYtkw1wJWuaQqtSTBaFQaNY6I71fMZmpO8fmcW2Vm+Xa/YxT6bPby73fXe37zcsBf/Weyrrya8XYt11Kke27evePq9Gv5d/wXbEPuzcWTR+ycmnipxhtsjVwZ9b6+X2Hmx5tKVvs1/sBkoOyC0jIlL5T1iG6wKQsSZQ/V2g1dJMHK1E8wNIOxpgTUu4BqL+ntooa81hm3ykpJyzGcCn8uNdFisaJppBGm7sB1hqSJnENvwFD2JHFygBZMZdni2dbRNfTo0aPH54g+HdqjR48ePb5YfJIJ5pXJ0BW202kadSZMoEta1lGE8ZASW67wppKOPH1yxfZ+T9tK2m2QmixqeV/amhR5jqVGBMq249A6mJVcxok7ZJ9cA+AYLhqwj1QzTrxmPpJU6XRq47Q5tv1gslsQKV3Tfw5LKyliOcZ8+pQlDRdPXgBwMW2YzoQJ/ePtPe9e3RCoZp9HFy43kaR4o7Li9PQxD88MSQI7TePJlbCmvxucMPzDHwC4y3U8cwPpPwEw6sYkqeiv4j2lihs2O2HCy9DCVHqc15sNp85xFnWz3TI3LfxS3lsleypL1q7VAdv9njZTJpWexTZRw/h+RZYcmI1ljabuoClN133psb2/ZzQVY03MCr3QPnaARtuCwUjpiBoGSdySbOR+VLbBdCTf2SgcYJs2pkojF9XxlG6PHj16fI74ZBC0LJ0ilwDWdTWV6hTN9h3DYP5xnGGxfM+31zK3Zl0kFNoU9TFudhE3qhuzsDri7ZpBKClOQ4O6NpgoUefDPiNTMiX1oSZpC3KljDK1XYZqgiBrW5osQetkw9WMGWV5fLzgcKhJlcu7YSZ48zPmAwnsDmtu16obEo/TJ2ckiMTaP3x4zy6R67JP5gxnU8JvVOrwRY6n5/y4kDVfnA4ZPLuS1yqb02dX7H78UT7b7LBHksa9Xf2I6095OVUjIlrDOpYinDcI+PXvX8C/+ekabKOlykruX8u1FWaE5qlUZaTR1h2mCqC324qmkyCYlQlF2VF38kBS5QX7tQTLYpuQLxMsT9mPazahA5Ohcq9PO4yBHKfAJc4LRq4E/enIJ0skmHq6Reg7eIFKj276OcEePXr8cvDJIOhoHZjKol5rOTsR1lAYLpY7QO21dIMJuxsZJ9i2Hrk1Jq5VM4YzA0v+3kUZk0fn6JUEpe1hxywYYXkylqDp8PTJ7+SghxW22aCrRouX0zFWKg0tvumShwX7O2nhb9IDU29wdA3LJCVVx9erlqqtOVUSndtdy/ZWgoBWxIyDjpNQaoLffb8iHEgNLnRH7JKS6RM1rJ6ueX1/TX4n1xOMXjB4rIJgM2BldCxtFYjuI1xfRinOv3rB/qAxVHW4ko5oK4Ht2fwCV/OOriEwE2a6ge5KoFlG2UdHhzSLqbSKQMm2mYWGrqt6bJ3R1Q2JUjLbbRN2N2rIPm3o6gHv30lN0tJtQqdhb8tDge6YPGihTUKPYeChJ3K/T8KAJpfXtDKjSWNaKnU9ydE19OjRo8fniL4m2KNHjx49vlh8kgn6nkOuZMSiww7XllSlPRphGSHembgjLNZrnv5euiGbXUqeNriGUl92LS5cadlvNgmPnlx8HKhurt9hdS2R6pBcbnPsx8LERmOfy7OAxRtRZVnuE77y5XKdIqeJcgzFOgIdBuHxEYmos8g7OX+WD4n3GyYnco7375ds3kva8upsTFXVLNXYw220ZujL+wbjC6I8x02FCXmWxdAK8UayxqFl4XnCkoN4wB/vX2OorlYKh2Amfw/Op+wci/WdnMNsO2ZzYalp3hDvi6NrsIyaYdiQVur8Rv1RHOA0DCiMEZ0jzzNn4zGrraSJx7bHZl+gbAEZDCewkNqpfepQZDme+gmMxz7UJf5QUsXPL87RlNj2aGCTrld4pvqsnuCHko7NDw3V/p3I2gCG1tcEe/To8cvBJ4OgYbrYgaTyNvcfqFeqPlekZEVOeqOkwdoS/0I2+lYLMbv4oztCGXc0rRzjyeOXFEVOrvbJqetz4lqUB0nB2bMr1omk1Qa+jh53+JVsxCeuy99885Vc137BrWZg5/I533SI883RNRRxyeHuAwDOxKHJ1vz5Wzmma8RMLyRAuueXdHHLLpVb8uyvfsdwIEFwcmFhTkSSDODrr3/Ln41/z7qT9TeOzfIg9dL3P3yL7thUY6mf2U9t3JGMb2SdS7aLWbyX6zE7ndCV3OzhENOcnh1dw2Q+xB3UaLGst+s6lIwog8AjaxwypRfa6Bp1KDXAJu9wxkPiQtKvuhEwVaMMTZmi69Dp6n7bJk1j8eTpU/XduBgqCJa7e6xmx9WpfKcnkxJNaZVGWk1awUgFxco8/jDSo0ePHp8j+nRojx49evT4YvFJJlhSUqlBa290wavX0vzSndfUTcjdnTSV2KMB3UzYR9zZOKeX5KnQvZPHQ2LV2r9Y7XFGQwJfdV3WJSOtwRwo1tR2mI3k7mYmTHE5nypmEmgY6pj5PqVsXIKJODUM7AF1tD26hovhnDSS8797s2H2fMxmIcPzq2zBb3/3EgDdtRhNv2ZkCaP024zLqTTGdJ5JN9XwLmWNuWcwLJ889PvQajrrvZzfmDXMTZP5haRH71crPnwvKdezyyeMgzmR0kcdOzaJJgxu1RWsouOdlbPTIVM7ZXQprLG8ixk4kkYNhxPu9wfiTL6nbdvgOsLK/VOb1pqyi4WJ+uEAoxOFnLQsuVneczGX9KfRtJCleKoBduxbFIqyV26Df6JxMhaWNw467FC1/7YNpmFj+sr8eBweXUOPHj16fI74ZBBs7Yr4VtJ8u23Kaq9esDvaoOZBiGQSOGwKqReVnYVfuOy2Im6tOTYvziWQ1dUOz58wd+SYQ3vERG9oE9lsi/WGQI1EhKZH05psVmJ1tPuw5mAq14o8onUNDCWjVq8XmNVx94KRPgSlELO5vceetniW6mRcJPzjd5Ka1O2YX59OcJ5L8Nq3JRuULNzYp+50kp1672TE0L/i+7U8FCziBbYaPRgbkO0OjDtJO6a375hPJWANPZP6EHMxVt2bScxqL2s3gjmVebzD1Q3hajrE1ZV6T+cwUyMSo7HDo8mIXS73Zp3bJKXMU5reBMMesnUlrTkLPPa1fM7wAx6fDhm4kuKdB2MO2zWRSjFfnEywPXHNWH6Aw3JHMJBg6nkupXKY6PSY2mlJNDm/Zvfp0B49evxy8MkguHl/y19eSQv/tg5wBzIGcL8uaeIEx5en/vawxVTsYx6ElHFCpwbNA7vGULJlo7Tg1dvvyM5lk76yKsYDm10ir3dthl7IMZe392T7A+5Gzj+1cta2BEhd15n4AaaqF5ZFxNg6HgRbL2TsSIDy8ntuvl/xX/3Xfw3A43BIriL5aGwzahJefSfD+t9F13z9X4icm2vrZAz587UE+qdzDT3Y8/dvheFdX+/5tSVB77Hdcd40zHx5r3t5xvypHGd9c882zYm2Ejxfv7pDP/ktAGdnPtbPSI6FjkFVFEzHcg7Xc6gKecjY3O6YzS8ZunLf9NTgmRrtiFONsqo4U+4bp0OPfaHmC12Nwa+eYB6kSWlwNmK5C1lu5Lu4cDp2pdw3q9gRGg2VGoTXwhmtsooyvQk6GYYlAVJ3jo959OjRo8fniL4m2KNHjx49vlh8ekTC7tCVLIxtWCxU3S2rTGoaTDXIvq/AQrGtTEMPT7iYSf1qNnLJlLLK5t1r6jJnpQxZP7x5R/PNU+anUpdapgVtLfWy9lDSRdlHt4QmnGEGwjLi9Yro9Y6hK+nBgRbjjY47y4fzKU+VMe/37y3KWuetUl4ZlSWTC+kArcySuF1jKSm203DMOJBuTevpV8xOT+hCGQm5u39DcrdhfvUNAPO5yziT8z82lhwWG/68knMMJlOcG6kzxn+5oWth5AkT/ru//RcsWuX4YLlYP2Oqa2Cwvo+oFbs+8xxM5aChl5BfH5iM1fgIDoUS0x4HE/yxzcATlnhxMuEvH5QDvG8ym8y534ik22aZ0nUtQalad6uWeiWM1es2nJ4PUJlb4jxhl8l9qssBhjGiU8PyVXHc17FHjx49Pkd8MgheDSfsprKpvV2kH2traAHvV1s0S9WlGoOJJ5tgTolVH2gq2bDbpGH9XpRV7tY7VmVG28h73czgH/58zfBWNlvfHqCHckmzsY/TVezfigHth9zFVxnPx7MB692Gg6nSdUFEFRwntZtNwnotQZhmz+ZmgZNIUPqrXz3HVSMC62jHv//+3/HiShpHXj59yZmSxHH1GTP/CWEgwTvOlxQfrvndb0WD9PJXv0HL5AEhiN/yoR3xp3/6CwDdZgO5BPm6HtHWCXfvJOVoOTsaX1KleA5aczi6huV2i5415AcJkoNHFpkKiGWS4WgZe6Ug45hDkkKCoHPlkNYaNwu5h3cfFiS6rKlKdZaHNXdv38h7PZM0O5Bv5Z6GjkNZynGS/J6ktAH57GaXEJXyu9DdGaE1YL1T6VmtTy706NHjl4NPN8YUKUNHDYTPT3k8lKf/+yhhRM5WCYRaXsgikU3QalqmlsHhThpaho+v8EZSLyz3dzRJw+OLZwCchhbZ/WvcTDb0i6HGJBC6YdYHXLchD2SzffP6FVUsQWDo/orObAgdCcJPzgfo3eLoGl69u+ZP/+HvAdh+eIXn2Px3v5dA95vLCe9VQ0eVOLx48Q2XY2Fp/+Jv/po/ffcGgPf7f8ukq7Du5RxfGw52ZWC8l/rhrvTJ17L+rrjDHwy4eCT1UzfPqZRjvD4f0exbUmWZdDGckCj7ve9++J5Hs2+OruEv373l2cUVltIA/ccfNiwOwoJDveA89FgnEuhHg5KdomzRNsYKxzQqYP1DmqDkULl8NGN0OqVQ84XruxXZ6gbDUQyvsDhsFYNNIlZBQLaVix3NLlBKbJRZSRPkZKkEv0P98EqPHj16fP7oH9t79OjRo8cXi08ywbRcc1Dt9iUdrSsdgKNwzH/5zSPKQtWlLJ9/+O47ADS9wfI8PF1Z/RgxLZIqvPBqnp+eEqfCMFZ3O4w65+xKam+2H7JOhVFlyY5nI5+LxzK4too26MquyT0bMNN8LgZCawz9QLZrjq7hD3/8kbuFMLjHkwFnT57x8oW0/jdVRFFIOvTl4+c41jmhLWzz/fd3RLEc3wnHvH+3YnkvDK4sTGaD3zFV1k5+eMpameo6ts+F7fK3z6XWFx9WZJWiX5rJdzev+UrN+53NH/GnHxWbvHlDlx+XHLPQcDSTVSq1zfX1krcLYVy+Z9E+CpgpCbf9zR1LNa7RNAaTYIxtKyf7pmCVyzE+bAcEjslezTc23Q6n7pjP5Di3i2vaRO7pcDIjul6xj5USjZkTq9vd0UBrUZmq67Q+Xtfs0aNHj88Rnx6RyFZEjQSeduThGg/t7xnjoUOtNkLXN9hulWya0RCYEXor6Tq9azANCWxP5jaO1hKp+cLGdgmHU1aRzA3eHVomSnNz6uqcTQJenEkQDGdjbt+oRg2vIjR1DF+C8DYuCKzjpFZrG+xCpVFDA+Nw4Ns3UqPcpnvsudTkHntzLr+aEnqy3td/vGZsSy1vlRaUmYvuS9B7v854cjEnseVa9bikU673L89+xdxN2KmAtqtN0RBOJwAADh9JREFUklzuxcRveHoxoVT+hlmSQCJrn3Yt6WZ9dA2W7pDkOblqKKpMiwoZbdCxiMuacin3JttGhKGv3tfwYb2lymW9huORK/updPkWXWsIHNVQM9CoDEi2ErCXH7ZczCSQV3FDXbtMLyXFa/kGlrJu2u5zrKGHoclxBr2xfI8ePX5B6NOhPXr06NHji8UnmaBrNcxOheG4Y4tIZbouTy9xXYN71SiSFzC7FPbR1VDUW3xPRgbmszmtKYxis9iw2q7RB/JeyzLIdhv0UlKS04sZTxXzCxoP6i0J8lkvDDl9KinA/f0r6s4hcCWNejU6p94cl017/OKKUEmhGcs74lXEXrHN2nJocvm7yT2MKsAM5Nr+2//+7/jhB2nuCRevsIKCs06Yod/twYgplYzbttSwfdUpe+5yWG759tUrWaMXgCYpyO3iBq3I6Gq5p2XWEhpCnRzLZzI+49+9+ukacgsWqxWhr84/9JmrtOPjx1fMqBiors+dreE6wuaa3Y7KKzFHyhw3rnCRa9a1lnDk0taS4rUDD8/yqFK5novHLzg/k3u/3CRorUuthAWqUscwhN02RkXRZhhqHejH09I9evTo8Tni09qh8ZbRRNRHmrYkV6og/jhkvV6z3EpH4i5bUynFGCt0sA2NLpNNMtczTq9ENswNLV6/ese+kpqVoxk8noyYqqA0OR1S7CUlGO+2WDrEoQS3dRFjO1KTGsweYzYFphq1sOuWMjtei6o0g86UgFzT8naxZF9Levbi2XNmAxlLcLM72rcRZSydo6viLWYnG/ul75DGtwTKdf3Js4CmgB/eyqjD60PM3ULW+/fdkGdXHt/851L32y1XbBeS8vQsB4+Wt+rh4d3rHfdbuafX2/KjnNpPvocG6q7A6SQdanU1A0/+NowSIwgJ2wdH+IzbtQT9tEqZzwc0ql6XtAca5dKxzWKMkc5gKHOSl2eXmLpPdFDOGMmK+7WkXGtjQjCekqlWVtP2KQtZ036zx7JrOl3u/zraHV1Djx49enyO+P8ZkTB5+6NQE+2ioXCFiX23z1hEMXYgG/ij89OPDKrQOw55zGKnfAhXG7RKBRqz5WJi8ES5t2tdw6k5JllJMC2jCkvVEieujkHL3d1rAJK45Ors2cdzhF3LUM34Zat7TobHNSvv6xpnKIE83+8pqzWJqt91+ggnF+aSX7/i/Ubnr92/lc9tvkMfyeeuzkeE59+gqezx/dsP3N5do6vAO6fADiTQtGlOtI357aX8+/zyETel3ObQ9lhc/8j9D38AwLJOCS7lXli2yX2qHf8e3BHbKCEqJLg9mo4wVZ0x3twwsM+JNPkuLN/FK4QxDrwRXVvj+sLopjOfePxQE9Tx5mNGEwnWTeCy3mfkhbxuaxa+euhYrmPcNiZ8cK+3NLJEHixKLFzPYb9XHpG6c3QNPXr06PE5oq8J9ujRo0ePLxafZIK6odGUysi1yllsvgfgQ3IgNcbMVZpzNDPRFEuxgxDXMtEaSe2FrsOHraT/ZtOQF5dX3H6QbsXosGNXvqOJJbX2xH/G5UBa9Ee6TZ1HeI0wk/DMwK0lVbqLb7D1Fmeg1GVODObWcQay7WrcRtie4Vpc/e4bQkeY0fnsnF8/Eysl0yg4ZAf2SpWljHekajh/HnqEXcs2lms5JBm//e1X3F4LS+Uu5kH7ej7xOfUK4lvlomH6BK4aXygb4q4jUK4S98uYXJkPt+GQZXRcMUYzdBrDwfSE4WmOzeRU1l4VLXrZktdSv9Q1A8eV1wIn4H69xHHlHAN3hGOrDtOqYd/oNCql/MS5YHhqYyoh8jax0JU0m19BmlVYptwPz7ZwA2GwF7aHabt4Y2HXft7XBHv06PHLwSeDoGPqPHomXn8rq0FvZQOdhi7zUch0LJukrW/QXNkEq85gNr+kbpWzvO5gH+TvzjGJiuQj/bx6ckG+u6UYKtuhZotuqfqdlqNZB549kktMk4xO1ZueDhu0rkXT5XqasuFud7wWNR+G7JWCysQLcPOaRPkJWnOHuhS3B0PX+fWjv2J88QiAlorwTOqDRbTgdnFDlCoro8BH9y0SJH2pmR5GJCnds9NzrqYjir3cj1W0xDUkeBwOGzbXt9i+HHdwZhId5NrGpoE+Dbk/sobANBhcPv7oE+igEZqFut8VA60jVZqdh82WaCOp6L2vk9cmh9eiDzqaz2jVg8NwPGFVpTRq7GJzOKDrFRVKGq7tyLdSj3Vsn0qz2Ch9VM0qcQxX3YspSaJRqthntu7R76FHjx49Pkf06dAePXr06PHF4pNMcDYZ4oyE0ehFzTJTLxg24dmQE9VCXx0Kzs6lweI+zaiblCCQQ0d3G0bKxWA+maJnEYHyBXwyG9ONXFa3ksqztAJLtfAPLI2Cjk618I+6lqyVxhzTs6jrFtOV8+dVTJ4dd5GI4jVtK00zk+mA7PoDhjLnXd5vCDThXt/87iW/fvmEp8+eA5DUDbHqYv3uzY+stu/Z5pIqPHzoaLRfMz6R819eXOLYYhzcJhlV6dIiN6tL4ebNt+o6I5qs4X4p67hbJlwXSrD69AWGfXwNo+GYwPPJlExLsjtgqBTndBqS5xlFJ/e7c0a0Q/nbGPoMGp9dLeno1mipVfpzOB5SpC1xK8d0KNDiHEcx+MCxGMxlXCVrOppCJ4ml+SVODJrwYeC/w/FHlA+fC4Oja+jRo0ePzxGfDILrXcajudgH+VVGt5e0WtvUNIMhZiip0lD3aTYyC5ctt1RGQqHLZhgYHUUsqcrddYqeHgh0CYK3zS0z2yX9INJhvusSqdQpQxPH1MhUt+LMN5moemFZVjSVQdrk6vyQZvHRNejpHtuS8233ay4uRxilGskIh7SNfG65u6VpItYrSZVuogXbVGqQd7fvqG2NzpEg9eHtX7BCnd+8EEPcdXnA6ZSVUGfj6xZj5cJ+/09/YPHujdw3raNpfYJQXnOKEm8lXbUD36JRqch/jkPconcdcSzX2qwPlANJOx4snU7TaZTjRWbWGMp8Vw8CmrzAVMo6oR8Sq+7bIs1oq5TNTr4309E59UNQHa96kuKGKrVpG+C7xKmqFzoaplLWqaOMrgRLmel2fXKhR48evyB8MgjWtUWiLHuSNGWoBqLTJMVaROimNLjgOGTKCy++37BNG5Zqwxx7Lq7SHK1KyPKUtJRjDsYd588f43TSVON0PlUhASvghNPpnPQgl5hsNsSJMJq6sjjEJa0vG7E3GtN1x5dS12CqIW8Nj6YpcKeyuZ+d+QwNRx2z4Ha5p1TruN5f44Tqc4bBerdFP5H3Ti8eY/hj3uykDtg0Da4mwdsFBmcai1iY4C7dYY3lYcHULXRtinaQe2O4Z4wv1OC8bZBW1dE1NJpNVtTYqibYDqFVaypzh4Fv0qggVLUamXo4aCyHotQwZ9KIY42mOMriKosPVLVJqdgtrU3ZNNRKW9TIGyrlKOENJhSViaf8G0PPJ1PNRrptMw08HOWRGPcmEj169PgFoX9s79GjR48eXyw+yQQxM7JMxhcsSoaOsI9u5DKchejKTTzbHQg8qR/Nx0MMLcHUJXU4GrmUyo2gbCpGfkCrRgZssyOwAx7NT+V0pkHoCtscOgYzG2w1A6+1DXEkLKVtbOptzYN1Xd7WVPnxeH569YIqUbWs9R2BZWAX8m+3iXl2Kte9WVe8+f5PrExhdDt9x2AmzGu1uGE08rBCqW1qTccu3uGWwiizxsRVnbO/v3qC4/i8e/1Brq3x8UZivlthY+oDHNXV6lY1i62kitf7lNY+3lnp+gM832SkxK/jpgHFyk3Xp+hqRkqsAL0iS+Re1KVOWtQESjHmdrslsNQsh+djNw4nihVPvClmW2E8yL9NhiSZsFnTHuBXFa0n31ujN+R7ec22PQa+heYpk13FVnv06NHjl4BPBsEm16mVYzy6zXwsCiozQ6dybOyhzK3tmy1pIqkyw4KhZ6JiCWPPZhVL84fnGAxCH2coDSVG3TDXPCqlPLNZbQkGEmjcqmb3YUGUyOycoXfQyeZuYzL2PCxbUoDbfU12SI6uYXT+iEkokTS58Zm74LSSVs2yjKVybrAaB7vpyB6cGuqMUimkeNMThuOAypXxif3ihtX9ltlQAsoh3+PPxWEhGJ6T5zkYEpRefvU3FGp2brVakaQtu0hqe3eHHVEkYwiTi0um8/Oja4gPBwJnQmkrfVarJqvVde73DD2ftlZzg12HbasmGctAt3xa1URjGDVNq+YgW52CFtuVe2NbDuPwnELJ3YXhiKCT9za0OF3LfCqzgU0Tc91JQ5GhmVSGQdXJA5IX9CMSPXr0+OWgT4f26NGjR48vFp9kgvskoTOUI4FZY1jy9jjJ0F0fUzWDaHlKqxibrtnQNjiVSp12OWYhLC0MZ/hajaU89AzX5rDaslpcqzNqHDphTQetoUkSmrZUr5QsFpI6HLgTQj+gLNSwfFaxOBxvKnnz/kB5KgzqNJhgOiVtLmxzV+VEr4Slxoecs9MrZspU9k3u4GfyjJDlNc1yRdIKa0uKjkZradV4QdtYrDRJsf7b//AdRpN9VJDJbZvlvaxvcxuBYVAoFmdpDu5I2FUwmTF7+vXRNexWW7q8wndlHVrdsldssqpLEmfLVlkRFuUB3VNC56MRTacT7eTasPjYuVICZWOQ7WT9yWbDcLDGNOQ7vusWtJ2ktHXDIosSUqVXqrsdcSFrt42cu31Nh5zT9pZH19CjR48enyO0rjs+m9ajR48ePXr8p44+HdqjR48ePb5Y9EGwR48ePXp8seiDYI8ePXr0+GLRB8EePXr06PHFog+CPXr06NHji0UfBHv06NGjxxeL/xe/iJxUU9U9JAAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"RmenYgJEZ3YF"},"source":["# Run on the test set\n","When you are done experimenting, you should evaluate your final trained network on the test set; you should get above 48%."]},{"cell_type":"code","metadata":{"id":"test_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1611325681791,"user_tz":-60,"elapsed":583,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c4d8fd1f-72e5-40e3-d10f-0956c0e34124"},"source":["# Print your test accuracy: this should be above 48%\n","test_acc = (best_net.predict(X_test) == y_test).mean()\n","print('Test accuracy: ', test_acc)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Test accuracy: 0.487\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"t-NlIsMYZ3YF"},"source":["**Inline Question**\n","\n","Now that you have trained a Neural Network classifier, you may find that your testing accuracy is much lower than the training accuracy. In what ways can we decrease this gap? Select all that apply.\n","\n","1. Train on a larger dataset.\n","2. Add more hidden units.\n","3. Increase the regularization strength.\n","4. None of the above.\n","\n","$\\color{blue}{\\textit Your Answer:}$ We can decrease this gap by applying **statement 1**.\n","\n","$\\color{blue}{\\textit Your Explanation:}$\n","\n","- For the first statement (correct one): Training the neural network on a large dataset (more training examples) can lead to a better learning process (adjusted weights will be more general). And this will help to increase the testing accuracy.\n","\n","- For the second and third statement: These operations can be beneficial in the case where the training accuracy is low (which is not the case here)."]},{"cell_type":"markdown","metadata":{"id":"vb352ggjZ3YF"},"source":["---\n","# IMPORTANT\n","\n","This is the end of this question. Please do the following:\n","\n","1. Click `File -> Save` to make sure the latest checkpoint of this notebook is saved to your Drive.\n","2. Execute the cell below to download the modified `.py` files back to your drive."]},{"cell_type":"code","metadata":{"id":"LZ1N1eFPZ3YG"},"source":["import os\n","\n","FOLDER_TO_SAVE = os.path.join('drive/My Drive/', FOLDERNAME)\n","FILES_TO_SAVE = ['cs231n/classifiers/neural_net.py']\n","\n","for files in FILES_TO_SAVE:\n"," with open(os.path.join(FOLDER_TO_SAVE, '/'.join(files.split('/')[1:])), 'w') as f:\n"," f.write(''.join(open(files).readlines()))"],"execution_count":null,"outputs":[]}]} ================================================ FILE: cs231n/assignment2/BatchNormalization.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"BatchNormalization.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vEfBhTLH6Z_5","executionInfo":{"status":"ok","timestamp":1612695138132,"user_tz":-60,"elapsed":25134,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f13babe7-f640-4e9c-8be2-53fa25a294df"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment2/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"xuYXcqnD6aAB"},"source":["# Batch Normalization\n","One way to make deep networks easier to train is to use more sophisticated optimization procedures such as SGD+momentum, RMSProp, or Adam. Another strategy is to change the architecture of the network to make it easier to train. \n","One idea along these lines is batch normalization which was proposed by [1] in 2015.\n","\n","The idea is relatively straightforward. Machine learning methods tend to work better when their input data consists of uncorrelated features with zero mean and unit variance. When training a neural network, we can preprocess the data before feeding it to the network to explicitly decorrelate its features; this will ensure that the first layer of the network sees data that follows a nice distribution. However, even if we preprocess the input data, the activations at deeper layers of the network will likely no longer be decorrelated and will no longer have zero mean or unit variance since they are output from earlier layers in the network. Even worse, during the training process the distribution of features at each layer of the network will shift as the weights of each layer are updated.\n","\n","The authors of [1] hypothesize that the shifting distribution of features inside deep neural networks may make training deep networks more difficult. To overcome this problem, [1] proposes to insert batch normalization layers into the network. At training time, a batch normalization layer uses a minibatch of data to estimate the mean and standard deviation of each feature. These estimated means and standard deviations are then used to center and normalize the features of the minibatch. A running average of these means and standard deviations is kept during training, and at test time these running averages are used to center and normalize features.\n","\n","It is possible that this normalization strategy could reduce the representational power of the network, since it may sometimes be optimal for certain layers to have features that are not zero-mean or unit variance. To this end, the batch normalization layer includes learnable shift and scale parameters for each feature dimension.\n","\n","[1] [Sergey Ioffe and Christian Szegedy, \"Batch Normalization: Accelerating Deep Network Training by Reducing\n","Internal Covariate Shift\", ICML 2015.](https://arxiv.org/abs/1502.03167)"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"pTnZkadM6aAC","executionInfo":{"status":"ok","timestamp":1612695168938,"user_tz":-60,"elapsed":5792,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2ff7a9c6-ae75-4ccd-f066-005f77c819c7"},"source":["# As usual, a bit of setup\n","import time\n","import numpy as np\n","import matplotlib.pyplot as plt\n","from cs231n.classifiers.fc_net import *\n","from cs231n.data_utils import get_CIFAR10_data\n","from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n","from cs231n.solver import Solver\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))\n","\n","def print_mean_std(x,axis=0):\n"," print(' means: ', x.mean(axis=axis))\n"," print(' stds: ', x.std(axis=axis))\n"," print() "],"execution_count":null,"outputs":[{"output_type":"stream","text":["=========== You can safely ignore the message below if you are NOT working on ConvolutionalNetworks.ipynb ===========\n","\tYou will need to compile a Cython extension for a portion of this assignment.\n","\tThe instructions to do this will be given in a section of the notebook below.\n","\tThere will be an option for Colab users and another for Jupyter (local) users.\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"MBzcjwfc6aAD","executionInfo":{"status":"ok","timestamp":1612695202579,"user_tz":-60,"elapsed":9106,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c00812ed-64b2-4e82-936f-10eea6608d1c"},"source":["# Load the (preprocessed) CIFAR10 data.\n","data = get_CIFAR10_data()\n","for k, v in data.items():\n"," print('%s: ' % k, v.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["X_train: (49000, 3, 32, 32)\n","y_train: (49000,)\n","X_val: (1000, 3, 32, 32)\n","y_val: (1000,)\n","X_test: (1000, 3, 32, 32)\n","y_test: (1000,)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"x5AHV8Td6aAD"},"source":["## Batch normalization: forward\n","In the file `cs231n/layers.py`, implement the batch normalization forward pass in the function `batchnorm_forward`. Once you have done so, run the following to test your implementation.\n","\n","Referencing the paper linked to above in [1] may be helpful!"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"R_8S9sUP6aAE","executionInfo":{"status":"ok","timestamp":1612695202581,"user_tz":-60,"elapsed":6986,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b1a5a96b-4c5d-4278-e580-0c8291f4bf61"},"source":["# Check the training-time forward pass by checking means and variances\n","# of features both before and after batch normalization \n","\n","# Simulate the forward pass for a two-layer network\n","np.random.seed(231)\n","N, D1, D2, D3 = 200, 50, 60, 3\n","X = np.random.randn(N, D1)\n","W1 = np.random.randn(D1, D2)\n","W2 = np.random.randn(D2, D3)\n","a = np.maximum(0, X.dot(W1)).dot(W2)\n","\n","print('Before batch normalization:')\n","print_mean_std(a,axis=0)\n","\n","gamma = np.ones((D3,))\n","beta = np.zeros((D3,))\n","# Means should be close to zero and stds close to one\n","print('After batch normalization (gamma=1, beta=0)')\n","a_norm, _ = batchnorm_forward(a, gamma, beta, {'mode': 'train'})\n","print_mean_std(a_norm,axis=0)\n","\n","gamma = np.asarray([1.0, 2.0, 3.0])\n","beta = np.asarray([11.0, 12.0, 13.0])\n","# Now means should be close to beta and stds close to gamma\n","print('After batch normalization (gamma=', gamma, ', beta=', beta, ')')\n","a_norm, _ = batchnorm_forward(a, gamma, beta, {'mode': 'train'})\n","print_mean_std(a_norm,axis=0)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Before batch normalization:\n"," means: [ -2.3814598 -13.18038246 1.91780462]\n"," stds: [27.18502186 34.21455511 37.68611762]\n","\n","After batch normalization (gamma=1, beta=0)\n"," means: [5.99520433e-17 6.93889390e-17 8.32667268e-19]\n"," stds: [0.99999999 1. 1. ]\n","\n","After batch normalization (gamma= [1. 2. 3.] , beta= [11. 12. 13.] )\n"," means: [11. 12. 13.]\n"," stds: [0.99999999 1.99999999 2.99999999]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vA1u_NWd6aAE","executionInfo":{"status":"ok","timestamp":1612695203673,"user_tz":-60,"elapsed":1084,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"a8a44b87-f090-44cd-9c96-90332214e6a6"},"source":["# Check the test-time forward pass by running the training-time\n","# forward pass many times to warm up the running averages, and then\n","# checking the means and variances of activations after a test-time\n","# forward pass.\n","\n","np.random.seed(231)\n","N, D1, D2, D3 = 200, 50, 60, 3\n","W1 = np.random.randn(D1, D2)\n","W2 = np.random.randn(D2, D3)\n","\n","bn_param = {'mode': 'train'}\n","gamma = np.ones(D3)\n","beta = np.zeros(D3)\n","\n","for t in range(50):\n"," X = np.random.randn(N, D1)\n"," a = np.maximum(0, X.dot(W1)).dot(W2)\n"," batchnorm_forward(a, gamma, beta, bn_param)\n","\n","bn_param['mode'] = 'test'\n","X = np.random.randn(N, D1)\n","a = np.maximum(0, X.dot(W1)).dot(W2)\n","a_norm, _ = batchnorm_forward(a, gamma, beta, bn_param)\n","\n","# Means should be close to zero and stds close to one, but will be\n","# noisier than training-time forward passes.\n","print('After batch normalization (test-time):')\n","print_mean_std(a_norm,axis=0)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["After batch normalization (test-time):\n"," means: [-0.03927353 -0.04349151 -0.10452686]\n"," stds: [1.01531399 1.01238345 0.97819961]\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"eA8vI-wL6aAE"},"source":["## Batch normalization: backward\n","Now implement the backward pass for batch normalization in the function `batchnorm_backward`.\n","\n","To derive the backward pass you should write out the computation graph for batch normalization and backprop through each of the intermediate nodes. Some intermediates may have multiple outgoing branches; make sure to sum gradients across these branches in the backward pass.\n","\n","Once you have finished, run the following to numerically check your backward pass."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZwGznLeJ6aAF","executionInfo":{"status":"ok","timestamp":1612695203675,"user_tz":-60,"elapsed":833,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5cecc401-6b3f-4a0f-bd34-db0c60247aab"},"source":["# Gradient check batchnorm backward pass\n","np.random.seed(231)\n","N, D = 4, 5\n","x = 5 * np.random.randn(N, D) + 12\n","gamma = np.random.randn(D)\n","beta = np.random.randn(D)\n","dout = np.random.randn(N, D)\n","\n","bn_param = {'mode': 'train'}\n","fx = lambda x: batchnorm_forward(x, gamma, beta, bn_param)[0]\n","fg = lambda a: batchnorm_forward(x, a, beta, bn_param)[0]\n","fb = lambda b: batchnorm_forward(x, gamma, b, bn_param)[0]\n","\n","dx_num = eval_numerical_gradient_array(fx, x, dout)\n","da_num = eval_numerical_gradient_array(fg, gamma.copy(), dout)\n","db_num = eval_numerical_gradient_array(fb, beta.copy(), dout)\n","\n","_, cache = batchnorm_forward(x, gamma, beta, bn_param)\n","dx, dgamma, dbeta = batchnorm_backward(dout, cache)\n","#You should expect to see relative errors between 1e-13 and 1e-8\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dgamma error: ', rel_error(da_num, dgamma))\n","print('dbeta error: ', rel_error(db_num, dbeta))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["dx error: 1.6674604875341426e-09\n","dgamma error: 7.417225040694815e-13\n","dbeta error: 2.379446949959628e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"iL4OAHgK6aAG"},"source":["## Batch normalization: alternative backward\n","In class we talked about two different implementations for the sigmoid backward pass. One strategy is to write out a computation graph composed of simple operations and backprop through all intermediate values. Another strategy is to work out the derivatives on paper. For example, you can derive a very simple formula for the sigmoid function's backward pass by simplifying gradients on paper.\n","\n","Surprisingly, it turns out that you can do a similar simplification for the batch normalization backward pass too! \n","\n","In the forward pass, given a set of inputs $X=\\begin{bmatrix}x_1\\\\x_2\\\\...\\\\x_N\\end{bmatrix}$, \n","\n","we first calculate the mean $\\mu$ and variance $v$.\n","With $\\mu$ and $v$ calculated, we can calculate the standard deviation $\\sigma$ and normalized data $Y$.\n","The equations and graph illustration below describe the computation ($y_i$ is the i-th element of the vector $Y$).\n","\n","\\begin{align}\n","& \\mu=\\frac{1}{N}\\sum_{k=1}^N x_k & v=\\frac{1}{N}\\sum_{k=1}^N (x_k-\\mu)^2 \\\\\n","& \\sigma=\\sqrt{v+\\epsilon} & y_i=\\frac{x_i-\\mu}{\\sigma}\n","\\end{align}"]},{"cell_type":"markdown","metadata":{"id":"F7siaU7F6aAH"},"source":[""]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"kwqO7IDb6aAH"},"source":["The meat of our problem during backpropagation is to compute $\\frac{\\partial L}{\\partial X}$, given the upstream gradient we receive, $\\frac{\\partial L}{\\partial Y}.$ To do this, recall the chain rule in calculus gives us $\\frac{\\partial L}{\\partial X} = \\frac{\\partial L}{\\partial Y} \\cdot \\frac{\\partial Y}{\\partial X}$.\n","\n","The unknown/hart part is $\\frac{\\partial Y}{\\partial X}$. We can find this by first deriving step-by-step our local gradients at \n","$\\frac{\\partial v}{\\partial X}$, $\\frac{\\partial \\mu}{\\partial X}$,\n","$\\frac{\\partial \\sigma}{\\partial v}$, \n","$\\frac{\\partial Y}{\\partial \\sigma}$, and $\\frac{\\partial Y}{\\partial \\mu}$,\n","and then use the chain rule to compose these gradients (which appear in the form of vectors!) appropriately to compute $\\frac{\\partial Y}{\\partial X}$.\n","\n","If it's challenging to directly reason about the gradients over $X$ and $Y$ which require matrix multiplication, try reasoning about the gradients in terms of individual elements $x_i$ and $y_i$ first: in that case, you will need to come up with the derivations for $\\frac{\\partial L}{\\partial x_i}$, by relying on the Chain Rule to first calculate the intermediate $\\frac{\\partial \\mu}{\\partial x_i}, \\frac{\\partial v}{\\partial x_i}, \\frac{\\partial \\sigma}{\\partial x_i},$ then assemble these pieces to calculate $\\frac{\\partial y_i}{\\partial x_i}$. \n","\n","You should make sure each of the intermediary gradient derivations are all as simplified as possible, for ease of implementation. \n","\n","After doing so, implement the simplified batch normalization backward pass in the function `batchnorm_backward_alt` and compare the two implementations by running the following. Your two implementations should compute nearly identical results, but the alternative implementation should be a bit faster."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"G6JnoYE36aAI","executionInfo":{"status":"ok","timestamp":1612695211173,"user_tz":-60,"elapsed":1003,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cbfa9c60-752f-4c89-9975-4495f1b58744"},"source":["np.random.seed(231)\n","N, D = 100, 500\n","x = 5 * np.random.randn(N, D) + 12\n","gamma = np.random.randn(D)\n","beta = np.random.randn(D)\n","dout = np.random.randn(N, D)\n","\n","bn_param = {'mode': 'train'}\n","out, cache = batchnorm_forward(x, gamma, beta, bn_param)\n","\n","t1 = time.time()\n","dx1, dgamma1, dbeta1 = batchnorm_backward(dout, cache)\n","t2 = time.time()\n","dx2, dgamma2, dbeta2 = batchnorm_backward_alt(dout, cache)\n","t3 = time.time()\n","\n","print('dx difference: ', rel_error(dx1, dx2))\n","print('dgamma difference: ', rel_error(dgamma1, dgamma2))\n","print('dbeta difference: ', rel_error(dbeta1, dbeta2))\n","print('speedup: %.2fx' % ((t2 - t1) / (t3 - t2)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["dx difference: 9.890497291190823e-13\n","dgamma difference: 0.0\n","dbeta difference: 0.0\n","speedup: 1.21x\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"v21tz-rh6aAJ"},"source":["## Fully Connected Nets with Batch Normalization\n","Now that you have a working implementation for batch normalization, go back to your `FullyConnectedNet` in the file `cs231n/classifiers/fc_net.py`. Modify your implementation to add batch normalization.\n","\n","Concretely, when the `normalization` flag is set to `\"batchnorm\"` in the constructor, you should insert a batch normalization layer before each ReLU nonlinearity. The outputs from the last layer of the network should not be normalized. Once you are done, run the following to gradient-check your implementation.\n","\n","HINT: You might find it useful to define an additional helper layer similar to those in the file `cs231n/layer_utils.py`. If you decide to do so, do it in the file `cs231n/classifiers/fc_net.py`."]},{"cell_type":"code","metadata":{"id":"L9WKxsZv6aAJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612698160689,"user_tz":-60,"elapsed":3549,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d33c2cf3-ba6c-4823-855f-01301d5c377f"},"source":["np.random.seed(231)\n","N, D, H1, H2, C = 2, 15, 20, 30, 10\n","X = np.random.randn(N, D)\n","y = np.random.randint(C, size=(N,))\n","\n","# You should expect losses between 1e-4~1e-10 for W, \n","# losses between 1e-08~1e-10 for b,\n","# and losses between 1e-08~1e-09 for beta and gammas.\n","for reg in [0, 3.14]:\n"," print('Running check with reg = ', reg)\n"," model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C,\n"," reg=reg, weight_scale=5e-2, dtype=np.float64,\n"," normalization='batchnorm')\n","\n"," loss, grads = model.loss(X, y)\n"," print('Initial loss: ', loss)\n","\n"," for name in sorted(grads):\n"," f = lambda _: model.loss(X, y)[0]\n"," grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)\n"," print('%s relative error: %.2e' % (name, rel_error(grad_num, grads[name])))\n"," if reg == 0: print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Running check with reg = 0\n","Initial loss: 2.2611955101340957\n","W1 relative error: 1.10e-04\n","W2 relative error: 3.11e-06\n","W3 relative error: 4.05e-10\n","b1 relative error: 2.66e-07\n","b2 relative error: 2.72e-07\n","b3 relative error: 1.01e-10\n","beta1 relative error: 7.33e-09\n","beta2 relative error: 1.89e-09\n","gamma1 relative error: 6.96e-09\n","gamma2 relative error: 2.41e-09\n","\n","Running check with reg = 3.14\n","Initial loss: 6.996533220108303\n","W1 relative error: 1.98e-06\n","W2 relative error: 2.29e-06\n","W3 relative error: 2.79e-08\n","b1 relative error: 1.38e-08\n","b2 relative error: 7.99e-07\n","b3 relative error: 2.10e-10\n","beta1 relative error: 6.65e-09\n","beta2 relative error: 3.39e-09\n","gamma1 relative error: 6.27e-09\n","gamma2 relative error: 5.28e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"XLUm_9Oa6aAJ"},"source":["# Batchnorm for deep networks\n","Run the following to train a six-layer network on a subset of 1000 training examples both with and without batch normalization."]},{"cell_type":"code","metadata":{"id":"zMiOgAfx6aAK","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612698172794,"user_tz":-60,"elapsed":10543,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"dfa87942-caba-4fee-957c-e35b5755d78f"},"source":["np.random.seed(231)\n","# Try training a very deep net with batchnorm\n","hidden_dims = [100, 100, 100, 100, 100]\n","\n","num_train = 1000\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","weight_scale = 2e-2\n","bn_model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization='batchnorm')\n","model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization=None)\n","\n","print('Solver with batch norm:')\n","bn_solver = Solver(bn_model, small_data,\n"," num_epochs=10, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=True,print_every=20)\n","bn_solver.train()\n","\n","print('\\nSolver without batch norm:')\n","solver = Solver(model, small_data,\n"," num_epochs=10, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=True, print_every=20)\n","solver.train()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Solver with batch norm:\n","(Iteration 1 / 200) loss: 2.297074\n","(Epoch 0 / 10) train acc: 0.102000; val_acc: 0.107000\n","(Epoch 1 / 10) train acc: 0.333000; val_acc: 0.263000\n","(Iteration 21 / 200) loss: 1.968218\n","(Epoch 2 / 10) train acc: 0.420000; val_acc: 0.289000\n","(Iteration 41 / 200) loss: 1.783523\n","(Epoch 3 / 10) train acc: 0.492000; val_acc: 0.309000\n","(Iteration 61 / 200) loss: 1.651492\n","(Epoch 4 / 10) train acc: 0.479000; val_acc: 0.302000\n","(Iteration 81 / 200) loss: 1.417491\n","(Epoch 5 / 10) train acc: 0.585000; val_acc: 0.327000\n","(Iteration 101 / 200) loss: 1.453174\n","(Epoch 6 / 10) train acc: 0.637000; val_acc: 0.340000\n","(Iteration 121 / 200) loss: 1.096966\n","(Epoch 7 / 10) train acc: 0.671000; val_acc: 0.330000\n","(Iteration 141 / 200) loss: 1.147829\n","(Epoch 8 / 10) train acc: 0.716000; val_acc: 0.328000\n","(Iteration 161 / 200) loss: 0.813335\n","(Epoch 9 / 10) train acc: 0.784000; val_acc: 0.330000\n","(Iteration 181 / 200) loss: 0.809768\n","(Epoch 10 / 10) train acc: 0.818000; val_acc: 0.321000\n","\n","Solver without batch norm:\n","(Iteration 1 / 200) loss: 2.302600\n","(Epoch 0 / 10) train acc: 0.124000; val_acc: 0.106000\n","(Epoch 1 / 10) train acc: 0.185000; val_acc: 0.168000\n","(Iteration 21 / 200) loss: 2.248002\n","(Epoch 2 / 10) train acc: 0.220000; val_acc: 0.226000\n","(Iteration 41 / 200) loss: 1.977625\n","(Epoch 3 / 10) train acc: 0.257000; val_acc: 0.218000\n","(Iteration 61 / 200) loss: 2.037953\n","(Epoch 4 / 10) train acc: 0.244000; val_acc: 0.227000\n","(Iteration 81 / 200) loss: 2.000312\n","(Epoch 5 / 10) train acc: 0.299000; val_acc: 0.237000\n","(Iteration 101 / 200) loss: 1.748184\n","(Epoch 6 / 10) train acc: 0.362000; val_acc: 0.279000\n","(Iteration 121 / 200) loss: 1.724046\n","(Epoch 7 / 10) train acc: 0.342000; val_acc: 0.258000\n","(Iteration 141 / 200) loss: 1.696783\n","(Epoch 8 / 10) train acc: 0.366000; val_acc: 0.252000\n","(Iteration 161 / 200) loss: 1.539274\n","(Epoch 9 / 10) train acc: 0.426000; val_acc: 0.256000\n","(Iteration 181 / 200) loss: 1.462405\n","(Epoch 10 / 10) train acc: 0.404000; val_acc: 0.273000\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"t0nXoq006aAK"},"source":["Run the following to visualize the results from two networks trained above. You should find that using batch normalization helps the network to converge much faster."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"k_vQmi1Q6aAK","colab":{"base_uri":"https://localhost:8080/","height":893},"executionInfo":{"status":"ok","timestamp":1612699453052,"user_tz":-60,"elapsed":1663,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"66db6514-2035-47e4-f7fb-5f37828912f7"},"source":["def plot_training_history(title, label, baseline, bn_solvers, plot_fn, bl_marker='.', bn_marker='.', labels=None):\n"," \"\"\"utility function for plotting training history\"\"\"\n"," plt.title(title)\n"," plt.xlabel(label)\n"," bn_plots = [plot_fn(bn_solver) for bn_solver in bn_solvers]\n"," bl_plot = plot_fn(baseline)\n"," num_bn = len(bn_plots)\n"," for i in range(num_bn):\n"," label='with_norm'\n"," if labels is not None:\n"," label += str(labels[i])\n"," plt.plot(bn_plots[i], bn_marker, label=label)\n"," label='baseline'\n"," if labels is not None:\n"," label += str(labels[0])\n"," plt.plot(bl_plot, bl_marker, label=label)\n"," plt.legend(loc='lower center', ncol=num_bn+1) \n","\n"," \n","plt.subplot(3, 1, 1)\n","plot_training_history('Training loss','Iteration', solver, [bn_solver], \\\n"," lambda x: x.loss_history, bl_marker='o', bn_marker='o')\n","plt.subplot(3, 1, 2)\n","plot_training_history('Training accuracy','Epoch', solver, [bn_solver], \\\n"," lambda x: x.train_acc_history, bl_marker='-o', bn_marker='-o')\n","plt.subplot(3, 1, 3)\n","plot_training_history('Validation accuracy','Epoch', solver, [bn_solver], \\\n"," lambda x: x.val_acc_history, bl_marker='-o', bn_marker='-o')\n","\n","plt.gcf().set_size_inches(15, 15)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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Dvv7EejPgIPALqAR+DuG/p3+feByYMRKmyIiMn1pHzgREZl1jDE/AY5aayd8BDAUjDH3AQ9Za9eHui8iIjK+NAInIiIznjFmtTFmvn9q460468u2XOh105F/rd8fAk+Fui8iIjL+FOBERGQ2yAReA9qBfwG+YK3dG9IeTQBjzEagDjjLhadpiojINKQplCIiIiIiItOERuBERERERESmibBQd2AkqamptrCwMNTdEBERERERCYk9e/bUW2vThp+fkgGusLCQ3bt3h7obIiIiIiIiIWGMKR3pvKZQioiIiIiITBMKcCIiIiIiItOEApyIiIiIiMg0oQAnIiIiIiIyTSjAiYiIiIiITBMKcCIiIiIiItPElNxGQEREREREZCJt2VvJE9tKqGruIjspms0bi7hzVU6ou3VBCnAiIiIiIjKrbNlbySMvHqSrzwtAZXMXj7x4EGDKhzhNoRQRERERkRnP67NUNHWy40Q9j209NBDe+nX1eXliW0mIenfxNAInIiIiIiIzQlevl/KmTkobOilt6KCs0Xle1thJRVMnfV573tdXNXdNUk/HTgFORERERESmBWstjR29lDZ2UuYPZk5A66C0oZPatp4h7eOjwihIieGyrARuXZZJfnIMBckxfPmFfZxt7Tnn/bOToifro4xZUAHOGHMr8CTgBp621j4+7Ho+8ByQ5G/zNWvtS8HcU0REREREZi6P10d1S7czitbYMSyoddLe4xnSPjMhivyUGK5flEZBSgx5yTEUpMRSkBxDUkw4xphz7vHIbUuGrIEDiA53s3lj0YR/vmCNOcAZY9zAd4BbgApglzFmq7X2cECzvwBesNb+uzHmMuAloDCI/oqIiIiIyDTX2esZDGX+oFba0El5YycVTV14fINTHSPcLnKToylIjmHN3GRnFC0lhvxkJ6xFhbsv+f79hUpmWxXKNcAJa+0pAGPM88AdQGCAs0CC/3kiUBXE/UREREREZBqw1lLf3ktZ4+D0RieoOaGtvn3o9MWEqDAKUmJZmpPI+y/P8ge0WApSYshIiMLtOncULVh3rsqZFoFtuGACXA5QHnBcAawd1uYx4NfGmD8CYoGbg7ifiIiIiIhMEX1eH1XNXf6pjs7oWWnD4EhaR+/g9ERjIMs/1fHGxWkUpMQOjKQVJMeSGBMewk8yvUx0EZO7gWettd82xqwDfmCMWWat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I77FLRvH8/9mjeTRz5yh8CYiPVbz8Nbe9o5YsGABK1asAGDNmjWUl5fj8/lYsWJFkw/pS5YsYdy4cWzYsIEHH3wQgPXr1/Pzn/+crVu3snv3blatWnXc50pLS2PdunXccsstPPTQQwDcc889zJw5k40bN/KDH/yAz372sw3Hb926lddee41nn30WgF27drF8+XJefPFFrr/+es4//3w2bdpEfHw8//znP0/6d3DSmoe39rafgFGjRjF//nwArr/+elauXMkbb7zB3LlzmT59OsuXL2fLli0AzJgxg8985jP84Q9/ICrK+y731VdfZcmSJZx++umcd955VFdXs29f6yG/3lVXXUVERATZ2dkUFBQ0XOfVV19l5syZnHHGGWzfvp2PP/74lF+fiIh41APXAS/45/NgzcMcrK4izh9JVYGfLy7I4jufmKJSyCISVsfrKQOYv2Q5eSVVLbZnJMfzf186+6Sec9asWaxdu5aysjJiY2M544wzWLNmDStWrODhhx/mhz/8YZvnzpkzh5EjvaHpp59+Onv27OGcc85p8/hPfvKTDc/517/+FYCVK1fy/PPPA3DBBRdQVFREWZnXC3nFFVcQH984F/mSSy4hOjqa6dOn4/f7Wbx4MQDTp09nz549J/X6j6u9nrKfTQsOn2wmaRR8/tQCZfN/j8yMr3zlK6xZs4ZRo0Zx7733Ul1dDcA///lP3n77bV566SUeeOABNm3ahHOO559/nkmTJjW5Tn0wa01sbOPUgfrhmc457rrrLr70pS+d0usREZHWnVIPnJktNrMdZrbTzFrMajazhWa2zszqzOzqU3mucGk+f6TK5ycqwsgePkjhTUR6vDtyJhHfbJRAfHQkd+RMoJlGIQAAIABJREFUauOM9kVHR5OVlcWTTz7JvHnzWLBgAW+88QY7d+5kypQpxz039AN/ZGRku3PV6o/vyLEACQkJrZ4fERFBdHR0w9/tiIiI8MyTu/BuiG5W7Co63tt+ivbt28e7774LwDPPPNMQjNPS0igvL2+YoxYIBNi/fz/nn38+P/rRjygtLaW8vJycnBx++ctfNgSx9evXn1Q7cnJyeOKJJygvLwcgLy+PwsLCU315IiISdNIBzswigUeAS4Bs4NNmlt3ssH3AjcAzJ/s84fbg0h1U+fxNttUFHA+9+lGYWiQi0nFXzczgh5+cTkZyPIbX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e0dWO+de8bseCS/OuSecc7HOuSZ4/++a5ZzTv15LsXHObQe2mlmLQFNPYJWPJUl42QJcZGYVA38ve6JJcqT4TQEGBR4PAj73sZZCKed3AaWdcy7DzO4DpuPNfjTeObfS57IkfHQFbgWWm9nSQNufnXNf+liTiMipuB/4KPCPnBuA232uR8KEc+5HM5sILMabtXkJMM7fqiSUmdm/ge5AbTNLAJ4GRgATzGwIsBm4yb8KC8e8oZ4iIiIiIiJS2mkIpYiIiIiISIhQgBMREREREQkRCnAiIiIiIiIhQgFOREREREQkRCjAiYiIiIiIhAgFOBERCVtmlmlmS7P9PF6Mx25iZiuK63giIiKFoXXgREQknKU45871uwgREZHioh44EREpc8xsk5m9ZGbLzewnM2sWaG9iZrPMbJmZzTSzRoH2umb2mZn9HPjpEjhUpJn9w8xWmtkMM4vx7aJERKRMUIATEZFwFpNrCOXN2V5Lcs61Bd4AXgu0vQ584JxrB3wEjA60jwb+55xrD5wHrAy0NwfedM61BvYD1wf5ekREpIwz55zfNYiIiASFmSU75yrn074J6OGc22BmUcB251wtM9sN1HfOpQfatznnapvZLiDWOZea7RhNgK+dc80Dz/8ERDnnngv+lYmISFmlHjgRESmr3Aken4rUbI8z0b3lIiISZApwIiJSVt2cbft94PF3wC2BxwOAeYHHM4F7AMws0syqlVSRIiIi2elfCkVEJJzFmNnSbM+/cs4dXUqghpktw+tF+22g7X7gPTN7FNgF3B5ofwAYZ2ZD8Hra7gG2Bb16ERGRXHQPnIiIlDmBe+A6Oud2+12LiIjIqdAQShERERERkRChHjgREREREZEQoR44ERERERGREKEAJyIiIiIiEiIU4EREREREREKEApyIiIiIiEiIUIATEREREREJEf8fIk5CA4sezW0AAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"NfTxCC306aAK"},"source":["# Batch normalization and initialization\n","We will now run a small experiment to study the interaction of batch normalization and weight initialization.\n","\n","The first cell will train 8-layer networks both with and without batch normalization using different scales for weight initialization. The second layer will plot training accuracy, validation set accuracy, and training loss as a function of the weight initialization scale."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"MtCy2jap6aAK","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612699734151,"user_tz":-60,"elapsed":193571,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"fdf5d8ec-8e24-454c-a44f-3aa31bf0cdf6"},"source":["np.random.seed(231)\n","# Try training a very deep net with batchnorm\n","hidden_dims = [50, 50, 50, 50, 50, 50, 50]\n","num_train = 1000\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","bn_solvers_ws = {}\n","solvers_ws = {}\n","weight_scales = np.logspace(-4, 0, num=20)\n","for i, weight_scale in enumerate(weight_scales):\n"," print('Running weight scale %d / %d' % (i + 1, len(weight_scales)))\n"," bn_model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization='batchnorm')\n"," model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization=None)\n","\n"," bn_solver = Solver(bn_model, small_data,\n"," num_epochs=10, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=False, print_every=200)\n"," bn_solver.train()\n"," bn_solvers_ws[weight_scale] = bn_solver\n","\n"," solver = Solver(model, small_data,\n"," num_epochs=10, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=False, print_every=200)\n"," solver.train()\n"," solvers_ws[weight_scale] = solver"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Running weight scale 1 / 20\n","Running weight scale 2 / 20\n","Running weight scale 3 / 20\n","Running weight scale 4 / 20\n","Running weight scale 5 / 20\n","Running weight scale 6 / 20\n","Running weight scale 7 / 20\n","Running weight scale 8 / 20\n","Running weight scale 9 / 20\n","Running weight scale 10 / 20\n","Running weight scale 11 / 20\n","Running weight scale 12 / 20\n","Running weight scale 13 / 20\n","Running weight scale 14 / 20\n","Running weight scale 15 / 20\n","Running weight scale 16 / 20\n","Running weight scale 17 / 20\n","Running weight scale 18 / 20\n","Running weight scale 19 / 20\n","Running weight scale 20 / 20\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"VjJ7bWx56aAL","colab":{"base_uri":"https://localhost:8080/","height":897},"executionInfo":{"status":"ok","timestamp":1612699738758,"user_tz":-60,"elapsed":2345,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f9a7cf6b-f576-4bdc-afb5-69574e5d8e7c"},"source":["# Plot results of weight scale experiment\n","best_train_accs, bn_best_train_accs = [], []\n","best_val_accs, bn_best_val_accs = [], []\n","final_train_loss, bn_final_train_loss = [], []\n","\n","for ws in weight_scales:\n"," best_train_accs.append(max(solvers_ws[ws].train_acc_history))\n"," bn_best_train_accs.append(max(bn_solvers_ws[ws].train_acc_history))\n"," \n"," best_val_accs.append(max(solvers_ws[ws].val_acc_history))\n"," bn_best_val_accs.append(max(bn_solvers_ws[ws].val_acc_history))\n"," \n"," final_train_loss.append(np.mean(solvers_ws[ws].loss_history[-100:]))\n"," bn_final_train_loss.append(np.mean(bn_solvers_ws[ws].loss_history[-100:]))\n"," \n","plt.subplot(3, 1, 1)\n","plt.title('Best val accuracy vs weight initialization scale')\n","plt.xlabel('Weight initialization scale')\n","plt.ylabel('Best val accuracy')\n","plt.semilogx(weight_scales, best_val_accs, '-o', label='baseline')\n","plt.semilogx(weight_scales, bn_best_val_accs, '-o', label='batchnorm')\n","plt.legend(ncol=2, loc='lower right')\n","\n","plt.subplot(3, 1, 2)\n","plt.title('Best train accuracy vs weight initialization scale')\n","plt.xlabel('Weight initialization scale')\n","plt.ylabel('Best training accuracy')\n","plt.semilogx(weight_scales, best_train_accs, '-o', label='baseline')\n","plt.semilogx(weight_scales, bn_best_train_accs, '-o', label='batchnorm')\n","plt.legend()\n","\n","plt.subplot(3, 1, 3)\n","plt.title('Final training loss vs weight initialization scale')\n","plt.xlabel('Weight initialization scale')\n","plt.ylabel('Final training loss')\n","plt.semilogx(weight_scales, final_train_loss, '-o', label='baseline')\n","plt.semilogx(weight_scales, bn_final_train_loss, '-o', label='batchnorm')\n","plt.legend()\n","plt.gca().set_ylim(1.0, 3.5)\n","\n","plt.gcf().set_size_inches(15, 15)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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iIiIdGBKCkVERERERDowJYUiIiIiItJqOsLta6nUnPOrpFBERERERFpFXl4emzZtUmKYJO7Opk2byMvLa9J26n1URERERERaRf/+/Vm9ejUbNmxIdSjtVl5eHv3792/SNkoKRURERESkVWRnZ7Pffsnp2VSaT81HRUREREREOjAlhSIiIiIiIh2YkkIREREREZEOTEmhiIiIiIhIB6akUEREREREpANLq6TQzPLM7B0ze9/MPjSzG+Osk2tmj5vZJ2b2tpkNbP1IRURERERE2oe0SgqB3cCJ7n4IcChwmpkdFbXOD4At7n4AcDtwSyvHKCIiIiIi0m6kVVLogeJwMjt8eNRqZwIPha9nACeZmbVSiCIiIiIiIu1KWiWFAGaWaWbvAeuBF9397ahV+gGrANy9AtgG9IxTzkVmNt/M5m/YsCHZYYuIiIiIiLRJaZcUunulux8K9AeOMLPhzSznD+4+2t1HFxUVtWyQIiIiIiIi7UTaJYXV3H0r8ApwWtSiNcAAADPLAroCm1o3OhERERERkfYhrZJCMysys27h63zgFGBp1GqzgAvD12cDL7t79H2HIiIiIiIi0ghZqQ4gyt7AQ2aWSZCwPuHuz5rZNGC+u88C7gP+bGafAJuB81MXroiIiIiISNuWVkmhuy8CDosz//qI16XAOa0Zl4iIiIiISHuVVs1HRUREREREpHUpKRQREREREenAlBSKiIiIiIh0YEoKRUREREREOjAlhSIiIiIiIh2YkkIREREREZEOTEmhiIiIiIhIB6akUEREREREpANTUigiIiIiItKBKSkUERERERHpwJQUioiIiIiIdGBKCkVERERERDowJYUiIiIiIiIdmJJCERERERGRDkxJoYiIiIiISAempFBERERERKQDU1IoIiIiIiKSqEVPwO3DYWq34HnRE6mOqNGyUh2AiIiIiIhIm7boCXjmSigvCaa3rQqmAUaem7q4Gkk1hSIiIiIiIol4aVptQlitvCSY3wYoKRQREREREWmunRuDmsF4tq1u3ViaSUmhiIiIiIhIcyz9O9x9VP3Lu/ZvvVgSoKRQRERERESkKUq3w8x/g8e+DYV94KQbIDu/7jrZ+XDS9amJr4nU0YyIiIiIiEhjff46zLwMtq+GY/4DjrsWsnKCWsGXpgVNRrv2DxLCNtDJDCgpFBERERER2bPyEnjpv+Gt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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"CD57P6rO6aAL"},"source":["## Inline Question 1:\n","Describe the results of this experiment. How does the scale of weight initialization affect models with/without batch normalization differently, and why?\n","\n","## Answer:\n","- Although neural nets using batch normalization performs globally better (in terms of accuracy) regarding the nets without batchnorm, we notice that the batchnorm is clearly affected by the initialization scale. In my opinion, this is due to the fact that, for all initialization scale weights, the networks were trained within the same number of epochs, and it's clear that the batchnorm layer needs more time to learn *scale* and *shift* parameters for high initialization scales.\n","- We notice also that using batchnorm prevents loss explosion with high initialization scale (3rd graph above)."]},{"cell_type":"markdown","metadata":{"id":"rIapjFeA6aAL"},"source":["# Batch normalization and batch size\n","We will now run a small experiment to study the interaction of batch normalization and batch size.\n","\n","The first cell will train 6-layer networks both with and without batch normalization using different batch sizes. The second layer will plot training accuracy and validation set accuracy over time."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"1db7yqeC6aAL","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612699958333,"user_tz":-60,"elapsed":77572,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cb80c65d-a99d-4713-f5c0-9f8f5a89ed45"},"source":["def run_batchsize_experiments(normalization_mode):\n"," np.random.seed(231)\n"," # Try training a very deep net with batchnorm\n"," hidden_dims = [100, 100, 100, 100, 100]\n"," num_train = 1000\n"," small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n"," }\n"," n_epochs=10\n"," weight_scale = 2e-2\n"," batch_sizes = [5,10,50]\n"," lr = 10**(-3.5)\n"," solver_bsize = batch_sizes[0]\n","\n"," print('No normalization: batch size = ',solver_bsize)\n"," model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization=None)\n"," solver = Solver(model, small_data,\n"," num_epochs=n_epochs, batch_size=solver_bsize,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': lr,\n"," },\n"," verbose=False)\n"," solver.train()\n"," \n"," bn_solvers = []\n"," for i in range(len(batch_sizes)):\n"," b_size=batch_sizes[i]\n"," print('Normalization: batch size = ',b_size)\n"," bn_model = FullyConnectedNet(hidden_dims, weight_scale=weight_scale, normalization=normalization_mode)\n"," bn_solver = Solver(bn_model, small_data,\n"," num_epochs=n_epochs, batch_size=b_size,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': lr,\n"," },\n"," verbose=False)\n"," bn_solver.train()\n"," bn_solvers.append(bn_solver)\n"," \n"," return bn_solvers, solver, batch_sizes\n","\n","batch_sizes = [5,10,50]\n","bn_solvers_bsize, solver_bsize, batch_sizes = run_batchsize_experiments('batchnorm')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["No normalization: batch size = 5\n","Normalization: batch size = 5\n","Normalization: batch size = 10\n","Normalization: batch size = 50\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"uX7qGqJV6aAL","colab":{"base_uri":"https://localhost:8080/","height":482},"executionInfo":{"status":"ok","timestamp":1612699973690,"user_tz":-60,"elapsed":1949,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"bf72cfc6-6497-4cc5-8d5e-75c29ae5e979"},"source":["plt.subplot(2, 1, 1)\n","plot_training_history('Training accuracy (Batch Normalization)','Epoch', solver_bsize, bn_solvers_bsize, \\\n"," lambda x: x.train_acc_history, bl_marker='-^', bn_marker='-o', labels=batch_sizes)\n","plt.subplot(2, 1, 2)\n","plot_training_history('Validation accuracy (Batch Normalization)','Epoch', solver_bsize, bn_solvers_bsize, \\\n"," lambda x: x.val_acc_history, bl_marker='-^', bn_marker='-o', labels=batch_sizes)\n","\n","plt.gcf().set_size_inches(15, 10)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"lnRRJ4SU6aAM"},"source":["## Inline Question 2:\n","Describe the results of this experiment. What does this imply about the relationship between batch normalization and batch size? Why is this relationship observed?\n","\n","## Answer:\n","We notice that batchnorm is highly dependent on batch size used during training. This is due to the fact that the batchnorm normalization step are performed per feature (i.e. vertically), increasing the batch size will result in more accurate normalization step. As a result, we conclude that: In batchnorm, the higher the batch size, the better."]},{"cell_type":"markdown","metadata":{"id":"D8q7JNg16aAM"},"source":["# Layer Normalization\n","Batch normalization has proved to be effective in making networks easier to train, but the dependency on batch size makes it less useful in complex networks which have a cap on the input batch size due to hardware limitations. \n","\n","Several alternatives to batch normalization have been proposed to mitigate this problem; one such technique is Layer Normalization [2]. Instead of normalizing over the batch, we normalize over the features. In other words, when using Layer Normalization, each feature vector corresponding to a single datapoint is normalized based on the sum of all terms within that feature vector.\n","\n","[2] [Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. \"Layer Normalization.\" stat 1050 (2016): 21.](https://arxiv.org/pdf/1607.06450.pdf)"]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"x4QugiRw6aAM"},"source":["## Inline Question 3:\n","Which of these data preprocessing steps is analogous to batch normalization, and which is analogous to layer normalization?\n","\n","1. Scaling each image in the dataset, so that the RGB channels for each row of pixels within an image sums up to 1.\n","2. Scaling each image in the dataset, so that the RGB channels for all pixels within an image sums up to 1. \n","3. Subtracting the mean image of the dataset from each image in the dataset.\n","4. Setting all RGB values to either 0 or 1 depending on a given threshold.\n","\n","## Answer:\n","- Data preprocessing step that is analogous to the **batch** normalization: **3** (In scale and shift step, put $\\gamma = \\sigma$ and $\\beta = 0$. This will result to: $x \\leftarrow x - \\mu$).\n","- Data preprocessing step that is analogous to the **layer** normalization: **2** (put: batch size = #samples, $\\mu = 0$ and $\\beta = 0$. This will result to: $x \\leftarrow \\frac{x^2}{\\sum x^2}$)."]},{"cell_type":"markdown","metadata":{"id":"nO5GubmJ6aAM"},"source":["# Layer Normalization: Implementation\n","\n","Now you'll implement layer normalization. This step should be relatively straightforward, as conceptually the implementation is almost identical to that of batch normalization. One significant difference though is that for layer normalization, we do not keep track of the moving moments, and the testing phase is identical to the training phase, where the mean and variance are directly calculated per datapoint.\n","\n","Here's what you need to do:\n","\n","* In `cs231n/layers.py`, implement the forward pass for layer normalization in the function `layernorm_forward`. \n","\n","Run the cell below to check your results.\n","* In `cs231n/layers.py`, implement the backward pass for layer normalization in the function `layernorm_backward`. \n","\n","Run the second cell below to check your results.\n","* Modify `cs231n/classifiers/fc_net.py` to add layer normalization to the `FullyConnectedNet`. When the `normalization` flag is set to `\"layernorm\"` in the constructor, you should insert a layer normalization layer before each ReLU nonlinearity. \n","\n","Run the third cell below to run the batch size experiment on layer normalization."]},{"cell_type":"code","metadata":{"id":"C4Rfxn1i6aAM","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612701972989,"user_tz":-60,"elapsed":686,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"076fed46-c926-45e4-cf68-217d26b2eabc"},"source":["# Check the training-time forward pass by checking means and variances\n","# of features both before and after layer normalization \n","\n","# Simulate the forward pass for a two-layer network\n","np.random.seed(231)\n","N, D1, D2, D3 =4, 50, 60, 3\n","X = np.random.randn(N, D1)\n","W1 = np.random.randn(D1, D2)\n","W2 = np.random.randn(D2, D3)\n","a = np.maximum(0, X.dot(W1)).dot(W2)\n","\n","print('Before layer normalization:')\n","print_mean_std(a,axis=1)\n","\n","gamma = np.ones(D3)\n","beta = np.zeros(D3)\n","# Means should be close to zero and stds close to one\n","print('After layer normalization (gamma=1, beta=0)')\n","a_norm, _ = layernorm_forward(a, gamma, beta, {'mode': 'train'})\n","print_mean_std(a_norm,axis=1)\n","\n","gamma = np.asarray([3.0,3.0,3.0])\n","beta = np.asarray([5.0,5.0,5.0])\n","# Now means should be close to beta and stds close to gamma\n","print('After layer normalization (gamma=', gamma, ', beta=', beta, ')')\n","a_norm, _ = layernorm_forward(a, gamma, beta, {'mode': 'train'})\n","print_mean_std(a_norm,axis=1)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Before layer normalization:\n"," means: [-59.06673243 -47.60782686 -43.31137368 -26.40991744]\n"," stds: [10.07429373 28.39478981 35.28360729 4.01831507]\n","\n","After layer normalization (gamma=1, beta=0)\n"," means: [ 4.81096644e-16 -7.40148683e-17 2.22044605e-16 -5.92118946e-16]\n"," stds: [0.99999995 0.99999999 1. 0.99999969]\n","\n","After layer normalization (gamma= [3. 3. 3.] , beta= [5. 5. 5.] )\n"," means: [5. 5. 5. 5.]\n"," stds: [2.99999985 2.99999998 2.99999999 2.99999907]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"_lTGIX-K6aAN","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612703033065,"user_tz":-60,"elapsed":871,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3083ab74-b5a7-47fe-a190-f43205b59a19"},"source":["# Gradient check batchnorm backward pass\n","np.random.seed(231)\n","N, D = 4, 5\n","x = 5 * np.random.randn(N, D) + 12\n","gamma = np.random.randn(D)\n","beta = np.random.randn(D)\n","dout = np.random.randn(N, D)\n","\n","ln_param = {}\n","fx = lambda x: layernorm_forward(x, gamma, beta, ln_param)[0]\n","fg = lambda a: layernorm_forward(x, a, beta, ln_param)[0]\n","fb = lambda b: layernorm_forward(x, gamma, b, ln_param)[0]\n","\n","dx_num = eval_numerical_gradient_array(fx, x, dout)\n","da_num = eval_numerical_gradient_array(fg, gamma.copy(), dout)\n","db_num = eval_numerical_gradient_array(fb, beta.copy(), dout)\n","\n","_, cache = layernorm_forward(x, gamma, beta, ln_param)\n","dx, dgamma, dbeta = layernorm_backward(dout, cache)\n","\n","#You should expect to see relative errors between 1e-12 and 1e-8\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dgamma error: ', rel_error(da_num, dgamma))\n","print('dbeta error: ', rel_error(db_num, dbeta))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["dx error: 2.107279036881856e-09\n","dgamma error: 4.519489546032799e-12\n","dbeta error: 2.5842537629899423e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"p5HA17-y6aAN"},"source":["# Layer Normalization and batch size\n","\n","We will now run the previous batch size experiment with layer normalization instead of batch normalization. Compared to the previous experiment, you should see a markedly smaller influence of batch size on the training history!"]},{"cell_type":"code","metadata":{"id":"HtJMOAkU6aAN","colab":{"base_uri":"https://localhost:8080/","height":689},"executionInfo":{"status":"ok","timestamp":1612703750024,"user_tz":-60,"elapsed":77290,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"a18ccd83-c27e-446e-dd28-5caaa3833756"},"source":["ln_solvers_bsize, solver_bsize, batch_sizes = run_batchsize_experiments('layernorm')\n","\n","plt.subplot(2, 1, 1)\n","plot_training_history('Training accuracy (Layer Normalization)','Epoch', solver_bsize, ln_solvers_bsize, \\\n"," lambda x: x.train_acc_history, bl_marker='-^', bn_marker='-o', labels=batch_sizes)\n","plt.subplot(2, 1, 2)\n","plot_training_history('Validation accuracy (Layer Normalization)','Epoch', solver_bsize, ln_solvers_bsize, \\\n"," lambda x: x.val_acc_history, bl_marker='-^', bn_marker='-o', labels=batch_sizes)\n","\n","plt.gcf().set_size_inches(15, 10)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["No normalization: batch size = 5\n","Normalization: batch size = 5\n","Normalization: batch size = 10\n","Normalization: batch size = 50\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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33wzmqYxadIkiouLycrKOquf3ek6NXhrabs1utv715TO8P6dUJOZWf95RuvMVjhw4AD33nsviYmJuLq68sEHHzB//ny2bdvGnj17qKys5KeffgLgtddeY+fOnezevZsPP/wQgFdeeYXp06ezdetW1q9fz6OPPkp5eXmz18zKymLjxo389NNPtSNza9eu5dChQ2zdupX4+Hh27NjBH3/8AViSlMyYMYOxY8fy0UcftcrrFkKcJqVUp/oaO3as6rRStygV01upb+YpZTZ3dG+EaNa+ffusPnbyq+vUgMd/avA1+dV1Z3z9zZs3qyuvvFIppdQ555yjxo8fr2pqalRMTIz68MMP1YABA1ReXp5KTk5WI0eOrG23fv165erqqtLS0pTJZFKTJk1SGzZsaPI6AwYMUIsWLVJKKfX++++r22+/XSml1Pz581VMTIxSSql169apUaNGKaWUev7559WYMWNURUVF7fMpU6aompoaFR8frxwdHdWqVauUUkpddtll6rvvvlNKKXXLLbeoIUOGqNDQUPXggw+qqqqqM/7ZnLG3Ryr1vGvDr7dHtty2Gd3tvap7vby8vNrnUVFR9fo3ffp0tW3btjP7oZ2hi765SIV8GtLg66JvLjrjc3a396+p37XO8P4ppVRNTo5KDBul9g0dVvuVGDZKGXJzz+q8ycnJKiAgoPb5unXr1KWXXqqWL1+uJkyYoEJCQpSvr6969dVXlVJKzZw5U11xxRXq888/V6WlpUoppcaOHatGjhypRo0apUaNGqUCAgLUvn371Pr161VUVJRSSqlPPvlE3XfffUopy8/6iy++qL1mr169lFJKPfLII2rAgAG15xk4cKBasmSJUkqp9PR0pZRSOTk5KiwsTP3+++8NXsvp/P8jhGgcsF01ES/JCFxL6iYMWBoJDu5w8dsgaXJFN/LozKE42urrbXO01fPozKFnfM6xY8eyY8cOjh07hr29PREREWzfvp0NGzYwderUZttOmDABf39/dDod4eHhpKSkNHv85ZdfXnvNE8du3LiRm266CYDp06dTUFDAsWOWaaRz5szB0dGxtv2sWbOwtbUlNDQUk8lEZGQkAKGhobXne/XVV9m/fz/btm2jsLCQ119//XR/JGfvgufA1rH+NltHy/az0N3eq84sekw0DnqHetsc9A5EjznzOqLd7f3rFL9rzcj/4J8o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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"RAGHQM4s6aAN"},"source":["## Inline Question 4:\n","When is layer normalization likely to not work well, and why?\n","\n","1. Using it in a very deep network\n","2. Having a very small dimension of features\n","3. Having a high regularization term\n","\n","\n","## Answer:\n","- Layer normalization is likely to not work well in **(2)**. This is due to the fact that having a small number of features will lead to inaccurate normalizing step (subtract the mean, and divide by std), i.e. normalizing throughout the features will be wrong, caused by the lack of sufficient number of features.\n","\n","- This case is similar to having a small batch size in batch normalization."]}]} ================================================ FILE: cs231n/assignment2/ConvolutionalNetworks.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"ConvolutionalNetworks.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"QFbCC-2M3Jv4","executionInfo":{"status":"ok","timestamp":1612876682216,"user_tz":-60,"elapsed":19766,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d8d47e44-4663-4ba7-bcdd-375057f1dfee"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment2/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":1,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"nhUCjU-O3Jv_"},"source":["# Convolutional Networks\n","\n","So far we have worked with deep fully-connected networks, using them to explore different optimization strategies and network architectures. Fully-connected networks are a good testbed for experimentation because they are very computationally efficient, but in practice all state-of-the-art results use convolutional networks instead.\n","\n","First you will implement several layer types that are used in convolutional networks. You will then use these layers to train a convolutional network on the CIFAR-10 dataset."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"Xn6cRqKl3JwA","executionInfo":{"status":"ok","timestamp":1612876691681,"user_tz":-60,"elapsed":4942,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}}},"source":["# As usual, a bit of setup\n","import numpy as np\n","import matplotlib.pyplot as plt\n","from cs231n.classifiers.cnn import *\n","from cs231n.data_utils import get_CIFAR10_data\n","from cs231n.gradient_check import eval_numerical_gradient_array, eval_numerical_gradient\n","from cs231n.layers import *\n","from cs231n.fast_layers import *\n","from cs231n.solver import Solver\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"],"execution_count":2,"outputs":[]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"IyufzEZK3JwB","executionInfo":{"status":"ok","timestamp":1612876698094,"user_tz":-60,"elapsed":6401,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"37003256-36e5-4856-9b10-419be4251266"},"source":["# Load the (preprocessed) CIFAR10 data.\n","\n","data = get_CIFAR10_data()\n","for k, v in data.items():\n"," print('%s: ' % k, v.shape)"],"execution_count":3,"outputs":[{"output_type":"stream","text":["X_train: (49000, 3, 32, 32)\n","y_train: (49000,)\n","X_val: (1000, 3, 32, 32)\n","y_val: (1000,)\n","X_test: (1000, 3, 32, 32)\n","y_test: (1000,)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"o4HEWSWV3JwB"},"source":["# Convolution: Naive forward pass\n","The core of a convolutional network is the convolution operation. In the file `cs231n/layers.py`, implement the forward pass for the convolution layer in the function `conv_forward_naive`. \n","\n","You don't have to worry too much about efficiency at this point; just write the code in whatever way you find most clear.\n","\n","You can test your implementation by running the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Ny8zvbdc3JwC","executionInfo":{"status":"ok","timestamp":1612876698095,"user_tz":-60,"elapsed":5376,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b43920fc-ba6d-49bd-c5e9-0a8f0048ddf6"},"source":["x_shape = (2, 3, 4, 4)\n","w_shape = (3, 3, 4, 4)\n","x = np.linspace(-0.1, 0.5, num=np.prod(x_shape)).reshape(x_shape)\n","w = np.linspace(-0.2, 0.3, num=np.prod(w_shape)).reshape(w_shape)\n","b = np.linspace(-0.1, 0.2, num=3)\n","\n","conv_param = {'stride': 2, 'pad': 1}\n","out, _ = conv_forward_naive(x, w, b, conv_param)\n","correct_out = np.array([[[[-0.08759809, -0.10987781],\n"," [-0.18387192, -0.2109216 ]],\n"," [[ 0.21027089, 0.21661097],\n"," [ 0.22847626, 0.23004637]],\n"," [[ 0.50813986, 0.54309974],\n"," [ 0.64082444, 0.67101435]]],\n"," [[[-0.98053589, -1.03143541],\n"," [-1.19128892, -1.24695841]],\n"," [[ 0.69108355, 0.66880383],\n"," [ 0.59480972, 0.56776003]],\n"," [[ 2.36270298, 2.36904306],\n"," [ 2.38090835, 2.38247847]]]])\n","\n","# Compare your output to ours; difference should be around e-8\n","print('Testing conv_forward_naive')\n","print('difference: ', rel_error(out, correct_out))"],"execution_count":4,"outputs":[{"output_type":"stream","text":["Testing conv_forward_naive\n","difference: 2.2121476417505994e-08\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"lOT93dc93JwC"},"source":["# Aside: Image processing via convolutions\n","\n","As fun way to both check your implementation and gain a better understanding of the type of operation that convolutional layers can perform, we will set up an input containing two images and manually set up filters that perform common image processing operations (grayscale conversion and edge detection). The convolution forward pass will apply these operations to each of the input images. We can then visualize the results as a sanity check."]},{"cell_type":"markdown","metadata":{"id":"NFl_nzrJ3JwD"},"source":["## Colab Users Only\n","\n","Please execute the below cell to copy two cat images to the Colab VM."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lv2TSqoa3JwD","executionInfo":{"status":"ok","timestamp":1612876699101,"user_tz":-60,"elapsed":1928,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"a6d9cfa8-39b2-4399-e361-3d792e8c9c31"},"source":["# Colab users only!\n","%mkdir -p cs231n/notebook_images\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n\n","%cp -r notebook_images/ /content/cs231n/\n","%cd /content/"],"execution_count":5,"outputs":[{"output_type":"stream","text":["/content/drive/My Drive/cs231n/assignments/assignment2/cs231n\n","/content\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/","height":448},"id":"8jDmJlrU3JwD","executionInfo":{"status":"ok","timestamp":1612876701206,"user_tz":-60,"elapsed":3213,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"be02b57a-c58e-42bb-f3ff-bd3eca97b748"},"source":["from imageio import imread\n","from PIL import Image\n","\n","kitten = imread('cs231n/notebook_images/kitten.jpg')\n","puppy = imread('cs231n/notebook_images/puppy.jpg')\n","# kitten is wide, and puppy is already square\n","d = kitten.shape[1] - kitten.shape[0]\n","kitten_cropped = kitten[:, d//2:-d//2, :]\n","\n","img_size = 200 # Make this smaller if it runs too slow\n","resized_puppy = np.array(Image.fromarray(puppy).resize((img_size, img_size)))\n","resized_kitten = np.array(Image.fromarray(kitten_cropped).resize((img_size, img_size)))\n","x = np.zeros((2, 3, img_size, img_size))\n","x[0, :, :, :] = resized_puppy.transpose((2, 0, 1))\n","x[1, :, :, :] = resized_kitten.transpose((2, 0, 1))\n","\n","# Set up a convolutional weights holding 2 filters, each 3x3\n","w = np.zeros((2, 3, 3, 3))\n","\n","# The first filter converts the image to grayscale.\n","# Set up the red, green, and blue channels of the filter.\n","w[0, 0, :, :] = [[0, 0, 0], [0, 0.3, 0], [0, 0, 0]]\n","w[0, 1, :, :] = [[0, 0, 0], [0, 0.6, 0], [0, 0, 0]]\n","w[0, 2, :, :] = [[0, 0, 0], [0, 0.1, 0], [0, 0, 0]]\n","\n","# Second filter detects horizontal edges in the blue channel.\n","w[1, 2, :, :] = [[1, 2, 1], [0, 0, 0], [-1, -2, -1]]\n","\n","# Vector of biases. We don't need any bias for the grayscale\n","# filter, but for the edge detection filter we want to add 128\n","# to each output so that nothing is negative.\n","b = np.array([0, 128])\n","\n","# Compute the result of convolving each input in x with each filter in w,\n","# offsetting by b, and storing the results in out.\n","out, _ = conv_forward_naive(x, w, b, {'stride': 1, 'pad': 1})\n","\n","def imshow_no_ax(img, normalize=True):\n"," \"\"\" Tiny helper to show images as uint8 and remove axis labels \"\"\"\n"," if normalize:\n"," img_max, img_min = np.max(img), np.min(img)\n"," img = 255.0 * (img - img_min) / (img_max - img_min)\n"," plt.imshow(img.astype('uint8'))\n"," plt.gca().axis('off')\n","\n","# Show the original images and the results of the conv operation\n","plt.subplot(2, 3, 1)\n","imshow_no_ax(puppy, normalize=False)\n","plt.title('Original image')\n","plt.subplot(2, 3, 2)\n","imshow_no_ax(out[0, 0])\n","plt.title('Grayscale')\n","plt.subplot(2, 3, 3)\n","imshow_no_ax(out[0, 1])\n","plt.title('Edges')\n","plt.subplot(2, 3, 4)\n","imshow_no_ax(kitten_cropped, normalize=False)\n","plt.subplot(2, 3, 5)\n","imshow_no_ax(out[1, 0])\n","plt.subplot(2, 3, 6)\n","imshow_no_ax(out[1, 1])\n","plt.show()"],"execution_count":6,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"DmR8sb0N3JwE"},"source":["# Convolution: Naive backward pass\n","Implement the backward pass for the convolution operation in the function `conv_backward_naive` in the file `cs231n/layers.py`. Again, you don't need to worry too much about computational efficiency.\n","\n","When you are done, run the following to check your backward pass with a numeric gradient check."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nSP0IqeC3JwF","executionInfo":{"status":"ok","timestamp":1612818259699,"user_tz":-60,"elapsed":6804,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e2f329c2-7286-458b-e31a-57771ecdd405"},"source":["np.random.seed(231)\n","x = np.random.randn(4, 3, 5, 5)\n","w = np.random.randn(2, 3, 3, 3)\n","b = np.random.randn(2,)\n","dout = np.random.randn(4, 2, 5, 5)\n","conv_param = {'stride': 1, 'pad': 1}\n","\n","dx_num = eval_numerical_gradient_array(lambda x: conv_forward_naive(x, w, b, conv_param)[0], x, dout)\n","dw_num = eval_numerical_gradient_array(lambda w: conv_forward_naive(x, w, b, conv_param)[0], w, dout)\n","db_num = eval_numerical_gradient_array(lambda b: conv_forward_naive(x, w, b, conv_param)[0], b, dout)\n","\n","out, cache = conv_forward_naive(x, w, b, conv_param)\n","dx, dw, db = conv_backward_naive(dout, cache)\n","\n","# Your errors should be around e-8 or less.\n","print('Testing conv_backward_naive function')\n","print('dx error: ', rel_error(dx, dx_num))\n","print('dw error: ', rel_error(dw, dw_num))\n","print('db error: ', rel_error(db, db_num))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Testing conv_backward_naive function\n","dx error: 1.159803161159293e-08\n","dw error: 2.2471264748452487e-10\n","db error: 3.37264006649648e-11\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"pXquGQqp3JwF"},"source":["# Max-Pooling: Naive forward\n","Implement the forward pass for the max-pooling operation in the function `max_pool_forward_naive` in the file `cs231n/layers.py`. Again, don't worry too much about computational efficiency.\n","\n","Check your implementation by running the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4ly0ylfN3JwF","executionInfo":{"status":"ok","timestamp":1612818259701,"user_tz":-60,"elapsed":5147,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9c6a824d-24ad-47f9-e127-fb9018f66ff3"},"source":["x_shape = (2, 3, 4, 4)\n","x = np.linspace(-0.3, 0.4, num=np.prod(x_shape)).reshape(x_shape)\n","pool_param = {'pool_width': 2, 'pool_height': 2, 'stride': 2}\n","\n","out, _ = max_pool_forward_naive(x, pool_param)\n","\n","correct_out = np.array([[[[-0.26315789, -0.24842105],\n"," [-0.20421053, -0.18947368]],\n"," [[-0.14526316, -0.13052632],\n"," [-0.08631579, -0.07157895]],\n"," [[-0.02736842, -0.01263158],\n"," [ 0.03157895, 0.04631579]]],\n"," [[[ 0.09052632, 0.10526316],\n"," [ 0.14947368, 0.16421053]],\n"," [[ 0.20842105, 0.22315789],\n"," [ 0.26736842, 0.28210526]],\n"," [[ 0.32631579, 0.34105263],\n"," [ 0.38526316, 0.4 ]]]])\n","\n","# Compare your output with ours. Difference should be on the order of e-8.\n","print('Testing max_pool_forward_naive function:')\n","print('difference: ', rel_error(out, correct_out))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Testing max_pool_forward_naive function:\n","difference: 4.1666665157267834e-08\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"imiJmJDD3JwG"},"source":["# Max-Pooling: Naive backward\n","Implement the backward pass for the max-pooling operation in the function `max_pool_backward_naive` in the file `cs231n/layers.py`. You don't need to worry about computational efficiency.\n","\n","Check your implementation with numeric gradient checking by running the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0GYm133A3JwH","executionInfo":{"status":"ok","timestamp":1612818260204,"user_tz":-60,"elapsed":3990,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9c81d3c1-6b3c-4117-e52d-8f7506fa7cf3"},"source":["np.random.seed(231)\n","x = np.random.randn(3, 2, 8, 8)\n","dout = np.random.randn(3, 2, 4, 4)\n","pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n","\n","dx_num = eval_numerical_gradient_array(lambda x: max_pool_forward_naive(x, pool_param)[0], x, dout)\n","\n","out, cache = max_pool_forward_naive(x, pool_param)\n","dx = max_pool_backward_naive(dout, cache)\n","\n","# Your error should be on the order of e-12\n","print('Testing max_pool_backward_naive function:')\n","print('dx error: ', rel_error(dx, dx_num))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Testing max_pool_backward_naive function:\n","dx error: 3.27562514223145e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"j2ZrQqAY3JwH"},"source":["# Fast layers\n","\n","Making convolution and pooling layers fast can be challenging. To spare you the pain, we've provided fast implementations of the forward and backward passes for convolution and pooling layers in the file `cs231n/fast_layers.py`."]},{"cell_type":"markdown","metadata":{"id":"f2wj5TMr3JwH"},"source":["The fast convolution implementation depends on a Cython extension; to compile it either execute the local development cell (option A) if you are developing locally, or the Colab cell (option B) if you are running this assignment in Colab.\n","\n","---\n","\n","**Very Important, Please Read**. For **both** option A and B, you have to **restart** the notebook after compiling the cython extension. In Colab, please save the notebook `File -> Save`, then click `Runtime -> Restart Runtime -> Yes`. This will restart the kernel which means local variables will be lost. Just re-execute the cells from top to bottom and skip the cell below as you only need to run it once for the compilation step.\n","\n","---"]},{"cell_type":"markdown","metadata":{"id":"89osNLXR3JwI"},"source":["## Option A: Local Development\n","\n","Go to the cs231n directory and execute the following in your terminal:\n","\n","```bash\n","python setup.py build_ext --inplace\n","```"]},{"cell_type":"markdown","metadata":{"id":"2zlDQOTH3JwI"},"source":["## Option B: Colab\n","\n","Execute the cell below only only **ONCE**."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9sgWYtC13JwI","executionInfo":{"status":"ok","timestamp":1612734730476,"user_tz":-60,"elapsed":10435,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5388788c-c6c3-4b84-a4a0-5e65a3a5ce28"},"source":["%cd drive/My\\ Drive/$FOLDERNAME/cs231n/\n","!python setup.py build_ext --inplace"],"execution_count":null,"outputs":[{"output_type":"stream","text":["=========== You can safely ignore the message below if you are NOT working on ConvolutionalNetworks.ipynb ===========\n","\tYou will need to compile a Cython extension for a portion of this assignment.\n","\tThe instructions to do this will be given in a section of the notebook below.\n","\tThere will be an option for Colab users and another for Jupyter (local) users.\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n\n","Compiling im2col_cython.pyx because it changed.\n","[1/1] Cythonizing im2col_cython.pyx\n","/usr/local/lib/python3.6/dist-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /content/drive/My Drive/cs231n/assignments/assignment2/cs231n/im2col_cython.pyx\n"," tree = Parsing.p_module(s, pxd, full_module_name)\n","running build_ext\n","building 'im2col_cython' extension\n","creating build\n","creating build/temp.linux-x86_64-3.6\n","x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.6/dist-packages/numpy/core/include -I/usr/include/python3.6m -c im2col_cython.c -o build/temp.linux-x86_64-3.6/im2col_cython.o\n","In file included from \u001b[01m\u001b[K/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0\u001b[m\u001b[K,\n"," from \u001b[01m\u001b[K/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/ndarrayobject.h:12\u001b[m\u001b[K,\n"," from \u001b[01m\u001b[K/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/arrayobject.h:4\u001b[m\u001b[K,\n"," from \u001b[01m\u001b[Kim2col_cython.c:629\u001b[m\u001b[K:\n","\u001b[01m\u001b[K/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[K#warning \"Using deprecated NumPy API, disable it with \" \"#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION\" [\u001b[01;35m\u001b[K-Wcpp\u001b[m\u001b[K]\n"," #\u001b[01;35m\u001b[Kwarning\u001b[m\u001b[K \"Using deprecated NumPy API, disable it with \" \\\n"," \u001b[01;35m\u001b[K^~~~~~~\u001b[m\u001b[K\n","x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/im2col_cython.o -o /content/drive/My Drive/cs231n/assignments/assignment2/cs231n/im2col_cython.cpython-36m-x86_64-linux-gnu.so\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"hXpuHcgm3JwI"},"source":["The API for the fast versions of the convolution and pooling layers is exactly the same as the naive versions that you implemented above: the forward pass receives data, weights, and parameters and produces outputs and a cache object; the backward pass recieves upstream derivatives and the cache object and produces gradients with respect to the data and weights.\n","\n","**NOTE:** The fast implementation for pooling will only perform optimally if the pooling regions are non-overlapping and tile the input. If these conditions are not met then the fast pooling implementation will not be much faster than the naive implementation.\n","\n","You can compare the performance of the naive and fast versions of these layers by running the following:"]},{"cell_type":"code","metadata":{"scrolled":true,"id":"KBnpWL5S3JwI","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612876725468,"user_tz":-60,"elapsed":11928,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"2a33a193-87e8-4eff-e790-0e83a56a0de3"},"source":["# Rel errors should be around e-9 or less\n","from cs231n.fast_layers import conv_forward_fast, conv_backward_fast\n","from time import time\n","np.random.seed(231)\n","x = np.random.randn(100, 3, 31, 31)\n","w = np.random.randn(25, 3, 3, 3)\n","b = np.random.randn(25,)\n","dout = np.random.randn(100, 25, 16, 16)\n","conv_param = {'stride': 2, 'pad': 1}\n","\n","t0 = time()\n","out_naive, cache_naive = conv_forward_naive(x, w, b, conv_param)\n","t1 = time()\n","out_fast, cache_fast = conv_forward_fast(x, w, b, conv_param)\n","t2 = time()\n","\n","print('Testing conv_forward_fast:')\n","print('Naive: %fs' % (t1 - t0))\n","print('Fast: %fs' % (t2 - t1))\n","print('Speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n","print('Difference: ', rel_error(out_naive, out_fast))\n","\n","t0 = time()\n","dx_naive, dw_naive, db_naive = conv_backward_naive(dout, cache_naive)\n","t1 = time()\n","dx_fast, dw_fast, db_fast = conv_backward_fast(dout, cache_fast)\n","t2 = time()\n","\n","print('\\nTesting conv_backward_fast:')\n","print('Naive: %fs' % (t1 - t0))\n","print('Fast: %fs' % (t2 - t1))\n","print('Speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n","print('dx difference: ', rel_error(dx_naive, dx_fast))\n","print('dw difference: ', rel_error(dw_naive, dw_fast))\n","print('db difference: ', rel_error(db_naive, db_fast))"],"execution_count":7,"outputs":[{"output_type":"stream","text":["Testing conv_forward_fast:\n","Naive: 3.528322s\n","Fast: 0.010437s\n","Speedup: 338.074131x\n","Difference: 4.926407851494105e-11\n","\n","Testing conv_backward_fast:\n","Naive: 7.174038s\n","Fast: 0.014395s\n","Speedup: 498.386683x\n","dx difference: 1.949764775345631e-11\n","dw difference: 3.681156828004736e-13\n","db difference: 3.481354613192702e-14\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"srGWpq4I3JwJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612876728216,"user_tz":-60,"elapsed":2735,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"a11efa01-4a22-4e1e-beef-01725d6197c8"},"source":["# Relative errors should be close to 0.0\n","from cs231n.fast_layers import max_pool_forward_fast, max_pool_backward_fast\n","np.random.seed(231)\n","x = np.random.randn(100, 3, 32, 32)\n","dout = np.random.randn(100, 3, 16, 16)\n","pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n","\n","t0 = time()\n","out_naive, cache_naive = max_pool_forward_naive(x, pool_param)\n","t1 = time()\n","out_fast, cache_fast = max_pool_forward_fast(x, pool_param)\n","t2 = time()\n","\n","print('Testing pool_forward_fast:')\n","print('Naive: %fs' % (t1 - t0))\n","print('fast: %fs' % (t2 - t1))\n","print('speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n","print('difference: ', rel_error(out_naive, out_fast))\n","\n","t0 = time()\n","dx_naive = max_pool_backward_naive(dout, cache_naive)\n","t1 = time()\n","dx_fast = max_pool_backward_fast(dout, cache_fast)\n","t2 = time()\n","\n","print('\\nTesting pool_backward_fast:')\n","print('Naive: %fs' % (t1 - t0))\n","print('fast: %fs' % (t2 - t1))\n","print('speedup: %fx' % ((t1 - t0) / (t2 - t1)))\n","print('dx difference: ', rel_error(dx_naive, dx_fast))"],"execution_count":8,"outputs":[{"output_type":"stream","text":["Testing pool_forward_fast:\n","Naive: 0.290965s\n","fast: 0.002990s\n","speedup: 97.320175x\n","difference: 0.0\n","\n","Testing pool_backward_fast:\n","Naive: 0.631516s\n","fast: 0.013132s\n","speedup: 48.089506x\n","dx difference: 0.0\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"GoN9sVZM3JwJ"},"source":["# Convolutional \"sandwich\" layers\n","Previously we introduced the concept of \"sandwich\" layers that combine multiple operations into commonly used patterns. In the file `cs231n/layer_utils.py` you will find sandwich layers that implement a few commonly used patterns for convolutional networks. Run the cells below to sanity check they're working."]},{"cell_type":"code","metadata":{"id":"jf_9Ncqt3JwJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612876730369,"user_tz":-60,"elapsed":1540,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"9d7305b1-cfae-4422-d8ed-8dd69312d151"},"source":["from cs231n.layer_utils import conv_relu_pool_forward, conv_relu_pool_backward\n","np.random.seed(231)\n","x = np.random.randn(2, 3, 16, 16)\n","w = np.random.randn(3, 3, 3, 3)\n","b = np.random.randn(3,)\n","dout = np.random.randn(2, 3, 8, 8)\n","conv_param = {'stride': 1, 'pad': 1}\n","pool_param = {'pool_height': 2, 'pool_width': 2, 'stride': 2}\n","\n","out, cache = conv_relu_pool_forward(x, w, b, conv_param, pool_param)\n","dx, dw, db = conv_relu_pool_backward(dout, cache)\n","\n","dx_num = eval_numerical_gradient_array(lambda x: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], x, dout)\n","dw_num = eval_numerical_gradient_array(lambda w: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], w, dout)\n","db_num = eval_numerical_gradient_array(lambda b: conv_relu_pool_forward(x, w, b, conv_param, pool_param)[0], b, dout)\n","\n","# Relative errors should be around e-8 or less\n","print('Testing conv_relu_pool')\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dw error: ', rel_error(dw_num, dw))\n","print('db error: ', rel_error(db_num, db))"],"execution_count":9,"outputs":[{"output_type":"stream","text":["Testing conv_relu_pool\n","dx error: 9.591132621921372e-09\n","dw error: 5.802391137330214e-09\n","db error: 1.0146343411762047e-09\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"Hb_wMTtP3JwJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612876734383,"user_tz":-60,"elapsed":616,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8d047c55-9d58-4eac-d09f-d52ac9e1db0c"},"source":["from cs231n.layer_utils import conv_relu_forward, conv_relu_backward\n","np.random.seed(231)\n","x = np.random.randn(2, 3, 8, 8)\n","w = np.random.randn(3, 3, 3, 3)\n","b = np.random.randn(3,)\n","dout = np.random.randn(2, 3, 8, 8)\n","conv_param = {'stride': 1, 'pad': 1}\n","\n","out, cache = conv_relu_forward(x, w, b, conv_param)\n","dx, dw, db = conv_relu_backward(dout, cache)\n","\n","dx_num = eval_numerical_gradient_array(lambda x: conv_relu_forward(x, w, b, conv_param)[0], x, dout)\n","dw_num = eval_numerical_gradient_array(lambda w: conv_relu_forward(x, w, b, conv_param)[0], w, dout)\n","db_num = eval_numerical_gradient_array(lambda b: conv_relu_forward(x, w, b, conv_param)[0], b, dout)\n","\n","# Relative errors should be around e-8 or less\n","print('Testing conv_relu:')\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dw error: ', rel_error(dw_num, dw))\n","print('db error: ', rel_error(db_num, db))"],"execution_count":10,"outputs":[{"output_type":"stream","text":["Testing conv_relu:\n","dx error: 1.5218619980349303e-09\n","dw error: 2.702022646099404e-10\n","db error: 1.451272393591721e-10\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"li4MbrXQ3JwJ"},"source":["# Three-layer ConvNet\n","Now that you have implemented all the necessary layers, we can put them together into a simple convolutional network.\n","\n","Open the file `cs231n/classifiers/cnn.py` and complete the implementation of the `ThreeLayerConvNet` class. Remember you can use the fast/sandwich layers (already imported for you) in your implementation. Run the following cells to help you debug:"]},{"cell_type":"markdown","metadata":{"id":"7BbtzKPl3JwK"},"source":["## Sanity check loss\n","After you build a new network, one of the first things you should do is sanity check the loss. When we use the softmax loss, we expect the loss for random weights (and no regularization) to be about `log(C)` for `C` classes. When we add regularization the loss should go up slightly."]},{"cell_type":"code","metadata":{"id":"o0TcBVSn3JwK","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612793117744,"user_tz":-60,"elapsed":2224,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e460f79e-61b4-44bc-8ca7-500fc10a3236"},"source":["model = ThreeLayerConvNet()\n","\n","N = 50\n","X = np.random.randn(N, 3, 32, 32)\n","y = np.random.randint(10, size=N)\n","\n","loss, grads = model.loss(X, y)\n","print('Initial loss (no regularization): ', loss)\n","\n","model.reg = 0.5\n","loss, grads = model.loss(X, y)\n","print('Initial loss (with regularization): ', loss)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Initial loss (no regularization): 2.3025850635890874\n","Initial loss (with regularization): 2.508600069296828\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"eggHIiNY3JwK"},"source":["## Gradient check\n","After the loss looks reasonable, use numeric gradient checking to make sure that your backward pass is correct. When you use numeric gradient checking you should use a small amount of artifical data and a small number of neurons at each layer. Note: correct implementations may still have relative errors up to the order of e-2."]},{"cell_type":"code","metadata":{"id":"WhS9Aybr3JwK","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794196376,"user_tz":-60,"elapsed":3510,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"51f2aa34-eaf3-4bbb-ce86-c7f3f2cc502d"},"source":["num_inputs = 2\n","input_dim = (3, 16, 16)\n","reg = 0.0\n","num_classes = 10\n","np.random.seed(231)\n","X = np.random.randn(num_inputs, *input_dim)\n","y = np.random.randint(num_classes, size=num_inputs)\n","\n","model = ThreeLayerConvNet(num_filters=3, filter_size=3,\n"," input_dim=input_dim, hidden_dim=7,\n"," dtype=np.float64)\n","loss, grads = model.loss(X, y)\n","# Errors should be small, but correct implementations may have\n","# relative errors up to the order of e-2\n","for param_name in sorted(grads):\n"," f = lambda _: model.loss(X, y)[0]\n"," param_grad_num = eval_numerical_gradient(f, model.params[param_name], verbose=False, h=1e-6)\n"," e = rel_error(param_grad_num, grads[param_name])\n"," print('%s max relative error: %e' % (param_name, rel_error(param_grad_num, grads[param_name])))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["W1 max relative error: 1.380104e-04\n","W2 max relative error: 1.822723e-02\n","W3 max relative error: 3.064049e-04\n","b1 max relative error: 3.477652e-05\n","b2 max relative error: 2.516375e-03\n","b3 max relative error: 7.945660e-10\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"CLa6dWiH3JwK"},"source":["## Overfit small data\n","A nice trick is to train your model with just a few training samples. You should be able to overfit small datasets, which will result in very high training accuracy and comparatively low validation accuracy."]},{"cell_type":"code","metadata":{"id":"yQbv3Wa63JwL","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794266837,"user_tz":-60,"elapsed":40564,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d4123cf6-e6e3-4144-e681-3673feb60d92"},"source":["np.random.seed(231)\n","\n","num_train = 100\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","model = ThreeLayerConvNet(weight_scale=1e-2)\n","\n","solver = Solver(model, small_data,\n"," num_epochs=15, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=True, print_every=1)\n","solver.train()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["(Iteration 1 / 30) loss: 2.414060\n","(Epoch 0 / 15) train acc: 0.200000; val_acc: 0.137000\n","(Iteration 2 / 30) loss: 3.102925\n","(Epoch 1 / 15) train acc: 0.140000; val_acc: 0.087000\n","(Iteration 3 / 30) loss: 2.270330\n","(Iteration 4 / 30) loss: 2.096705\n","(Epoch 2 / 15) train acc: 0.240000; val_acc: 0.094000\n","(Iteration 5 / 30) loss: 1.838880\n","(Iteration 6 / 30) loss: 1.934188\n","(Epoch 3 / 15) train acc: 0.510000; val_acc: 0.173000\n","(Iteration 7 / 30) loss: 1.827912\n","(Iteration 8 / 30) loss: 1.639574\n","(Epoch 4 / 15) train acc: 0.520000; val_acc: 0.188000\n","(Iteration 9 / 30) loss: 1.330082\n","(Iteration 10 / 30) loss: 1.756115\n","(Epoch 5 / 15) train acc: 0.630000; val_acc: 0.167000\n","(Iteration 11 / 30) loss: 1.024162\n","(Iteration 12 / 30) loss: 1.041826\n","(Epoch 6 / 15) train acc: 0.750000; val_acc: 0.229000\n","(Iteration 13 / 30) loss: 1.142777\n","(Iteration 14 / 30) loss: 0.835706\n","(Epoch 7 / 15) train acc: 0.790000; val_acc: 0.247000\n","(Iteration 15 / 30) loss: 0.587786\n","(Iteration 16 / 30) loss: 0.645509\n","(Epoch 8 / 15) train acc: 0.820000; val_acc: 0.252000\n","(Iteration 17 / 30) loss: 0.786844\n","(Iteration 18 / 30) loss: 0.467054\n","(Epoch 9 / 15) train acc: 0.820000; val_acc: 0.178000\n","(Iteration 19 / 30) loss: 0.429880\n","(Iteration 20 / 30) loss: 0.635498\n","(Epoch 10 / 15) train acc: 0.900000; val_acc: 0.206000\n","(Iteration 21 / 30) loss: 0.365807\n","(Iteration 22 / 30) loss: 0.284220\n","(Epoch 11 / 15) train acc: 0.820000; val_acc: 0.201000\n","(Iteration 23 / 30) loss: 0.469343\n","(Iteration 24 / 30) loss: 0.509369\n","(Epoch 12 / 15) train acc: 0.920000; val_acc: 0.211000\n","(Iteration 25 / 30) loss: 0.111638\n","(Iteration 26 / 30) loss: 0.145388\n","(Epoch 13 / 15) train acc: 0.930000; val_acc: 0.213000\n","(Iteration 27 / 30) loss: 0.155575\n","(Iteration 28 / 30) loss: 0.143398\n","(Epoch 14 / 15) train acc: 0.960000; val_acc: 0.212000\n","(Iteration 29 / 30) loss: 0.158160\n","(Iteration 30 / 30) loss: 0.118934\n","(Epoch 15 / 15) train acc: 0.990000; val_acc: 0.220000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"small_data_train_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794273608,"user_tz":-60,"elapsed":659,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"311e49dd-7ce7-4d86-ebe4-7872016a6ec7"},"source":["# Print final training accuracy\n","print(\n"," \"Small data training accuracy:\",\n"," solver.check_accuracy(small_data['X_train'], small_data['y_train'])\n",")"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Small data training accuracy: 0.82\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"small_data_validation_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794278021,"user_tz":-60,"elapsed":2299,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"67e355b0-cd7f-46c1-a04e-13f3d65e962f"},"source":["# Print final validation accuracy\n","print(\n"," \"Small data validation accuracy:\",\n"," solver.check_accuracy(small_data['X_val'], small_data['y_val'])\n",")"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Small data validation accuracy: 0.252\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"zBkwiUtB3JwL"},"source":["Plotting the loss, training accuracy, and validation accuracy should show clear overfitting:"]},{"cell_type":"code","metadata":{"id":"6IYML0bH3JwL","colab":{"base_uri":"https://localhost:8080/","height":497},"executionInfo":{"status":"ok","timestamp":1612794284825,"user_tz":-60,"elapsed":2479,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3f948c44-b273-4c48-971e-0aec95105dc6"},"source":["plt.subplot(2, 1, 1)\n","plt.plot(solver.loss_history, 'o')\n","plt.xlabel('iteration')\n","plt.ylabel('loss')\n","\n","plt.subplot(2, 1, 2)\n","plt.plot(solver.train_acc_history, '-o')\n","plt.plot(solver.val_acc_history, '-o')\n","plt.legend(['train', 'val'], loc='upper left')\n","plt.xlabel('epoch')\n","plt.ylabel('accuracy')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAmEAAAHgCAYAAADt8bqrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxU9b3/8deHEEiEQBCQQACDgiyKisat2JZqFdwptS7dtBut1dZutNrbqvW2V29p7fJrq5daa9vrUq9SpJVKta6ta1hkDwKyJGxhCSSQhCyf3x8zgSRMyITMyZmZvJ+Pxzwyc86Zmc8cx+TN+W7m7oiIiIhI5+oWdgEiIiIiXZFCmIiIiEgIFMJEREREQqAQJiIiIhIChTARERGRECiEiYiIiISge9gFtNeAAQO8oKAg7DJERERE2rRgwYId7j4w1r6UC2EFBQUUFRWFXYaIiIhIm8xsQ2v71BwpIiIiEgKFMBEREZEQKISJiIiIhEAhTERERCQEKdcxPxXMWVTKzPnFbC6vYkhuNjMmj2bqhPywyxIREZEkohCWYHMWlXL77KVU1dYDUFpexe2zlwIoiImIiMhBao5MsJnziw8GsEZVtfXMnF8cUkUiIiKSjBTCEmxzeVW7touIiEjXpBCWYENys9u1XURERLqmwEKYmWWZ2Vtm9o6ZLTezH8Q4pqeZ/dnM1pjZm2ZWEFQ9nWXG5NFkZ2Y025admcGMyaNDqkhERESSUZBXwmqAC9z9NOB0YIqZndvimM8Bu919JPAz4L8DrKdTTJ2Qzz3TxpOfm40B+bnZ3DNtvDrli4iISDOBjY50dwcqow8zozdvcdhVwF3R+08CvzIziz43ZU2dkK/QJSIiIkcUaJ8wM8sws8XAduA5d3+zxSH5wCYAd68D9gD9g6xJREREJBkEGsLcvd7dTweGAmeb2SlH8zpmNt3MisysqKysLLFFioiIiISgU0ZHuns58CIwpcWuUmAYgJl1B/oCO2M8f5a7F7p74cCBA4MuV0RERCRwQY6OHGhmudH72cBFwKoWh80Fbojevxp4IdX7g4mIiIjEI8hliwYDfzCzDCJh7wl3/5uZ3Q0Uuftc4HfAn8xsDbALuC7AekRERESSRpCjI5cAE2Jsv6PJ/WrgY0HVICIiIpKsNGO+iIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQKISJiIiIhEAhTERERCQECmEiIiIiIVAIExEREQmBQpiIiIhICBTCREREREKgECYiIiISAoUwERERkRAohImIiIiEQCFMREREJAQKYSIiIiIhUAgTERERCYFCmIiIiEgIFMJEREREQqAQJiIiIhIChTARERGRECiEiYiIiIQgsBBmZsPM7EUzW2Fmy83s1hjHTDKzPWa2OHq7I6h6RERERJJJ9wBfuw74prsvNLMcYIGZPefuK1oc96q7Xx5gHSIiIiJJJ7ArYe6+xd0XRu9XACuB/KDeT0RERCSVdEqfMDMrACYAb8bYfZ6ZvWNmfzezkzujHhEREZGwBdkcCYCZ9QaeAr7m7ntb7F4IHO/ulWZ2KTAHGBXjNaYD0wGGDx8ecMUiIiIiwQv0SpiZZRIJYI+4++yW+919r7tXRu/PAzLNbECM42a5e6G7Fw4cODDIkkVEREQ6RWBXwszMgN8BK939vlaOyQO2ubub2dlEQuHOoGqKx5xFpcycX8zm8iqG5GYzY/Jopk5QVzYRERFJrCCbIycCnwKWmtni6LbvAsMB3P0B4GrgJjOrA6qA69zdA6zpiOYsKuX22Uupqq0HoLS8ittnLwVQEBMREZGECiyEufu/AGvjmF8BvwqqhvaaOb/4YABrVFVbz8z5xQphIiIiklCaMb+JzeVV7douIiIicrQUwpoYkpvdru0iIiIiR0shrIkZk0eTnZnRbFt2ZgYzJo8OqSIRERFJV4HPE5ZKGvt9aXSkiIiIBE0hrIWpE/IVukRERCRwao4UERERCYGuhCUxTRwrIiKSvhTCkpQmjhUREUlvao5MUkeaOFZERERSn0JYktLEsSIiIulNISxJaeJYERGR9KYQlqQ0cayIiEh6U8f8JKWJY0VERNKbQlgS08SxIiIi6UvNkSIiIiIhUAgTERERCYGaI9OcZt0XERFJTgphaUyz7ouIiCQvNUemMc26LyIikrwUwtKYZt0XERFJXgphaUyz7ouIiCSvwEKYmQ0zsxfNbIWZLTezW2McY2b2SzNbY2ZLzOyMoOrpijTrvoiISPIKsmN+HfBNd19oZjnAAjN7zt1XNDnmEmBU9HYOcH/0pySAZt0XERFJXoGFMHffAmyJ3q8ws5VAPtA0hF0F/NHdHXjDzHLNbHD0uZIAmnVfREQkOXVKnzAzKwAmAG+22JUPbGryuCS6TURERCStBR7CzKw38BTwNXffe5SvMd3MisysqKysLLEFioiIiIQg0MlazSyTSAB7xN1nxzikFBjW5PHQ6LZm3H0WMAugsLDQAyhVOoFm7xcRETkkyNGRBvwOWOnu97Vy2Fzg09FRkucCe9QfLD01zt5fWl6Fc2j2/jmLDsvcIiIiXUKQV8ImAp8ClprZ4ui27wLDAdz9AWAecCmwBtgPfCbAeiRER5q9X1fDRESkKwpydOS/AGvjGAduDqoGSR6avV9ERKQ5zZgvnUKz94uIiDSnECadQrP3i4iINBfo6EhJHx0d2ajZ+0VERJpTCJM2NY5sbOxY3ziyEWh3EEtE6NJUFyIikg7UHCltOtLIxs6mqS5ERCRdKIRJm5JpZGMyBUIREZGOUAiTNiXTyMZkCoQiIiIdoRAmbUqmkY3JFAgTZc6iUibe+wIjbnuGife+oKZVEZEuQiFM2jR1Qj73TBtPfm42BuTnZnPPtPGhdIZPpkCYCOrjJiLSdWl0pMQlUSMbE1EHpM9UF1rOSUSk61IIk5STLIEwEdTHTUSk61JzpEiI0rGPm4iIxCeuEGZmt5pZH4v4nZktNLOLgy5OJN2lWx83ERGJX7xXwj7r7nuBi4F+wKeAewOrSqSLSKZBDyIi0rni7RNm0Z+XAn9y9+VmZkd6gkgyS6alj9Kpj5uIiMQv3hC2wMz+AYwAbjezHKAhuLJEgpOotTBFREQ6It7myM8BtwFnuft+IBP4TGBViQRISx+JiEgyiDeEnQcUu3u5mX0S+B6wJ7iyRIKjaSFERCQZxBvC7gf2m9lpwDeBtcAfA6tKJECaFkJERJJBvCGszt0duAr4lbv/GsgJriyR4GhaCBERSQbxdsyvMLPbiUxN8X4z60akX5hIykm3pY9ERCQ1xRvCrgU+TmS+sK1mNhyYeaQnmNlDwOXAdnc/Jcb+ScDTwHvRTbPd/e54CxfpCE0LISIiYYurOdLdtwKPAH3N7HKg2t3b6hP2MDCljWNedffTozcFMBEREeky4l226BrgLeBjwDXAm2Z29ZGe4+6vALs6XKGIiIhIGoq3OfI/iMwRth3AzAYCzwNPdvD9zzOzd4DNwLfcfXkHX09EREQkJcQbwro1BrConcQ/srI1C4Hj3b3SzC4F5gCjYh1oZtOB6QDDhw/v4NuKiIiIhC/eIPWsmc03sxvN7EbgGWBeR97Y3fe6e2X0/jwg08wGtHLsLHcvdPfCgQMHduRtRURERJJCXFfC3H2GmX0UmBjdNMvd/9KRNzazPGCbu7uZnU0kEO7syGuKiIiIpIp4myNx96eAp+I93sweAyYBA8ysBLiT6Nxi7v4AcDVwk5nVAVXAddEJYUVERETS3hFDmJlVALGCkQHu7n1ae667X3+k13b3XwG/iqdIERERkXRzxBDm7lqaSERERCQAHR3hKCIiIiJHIe4+YSJyuDmLSrUGpYiIHBWFMJGjNGdRKbfPXkpVbT0ApeVV3D57KYCCmIiItEnNkSJHaeb84oMBrFFVbT0z5xeHVJGIiKQShTCRo7S5vKpd20VERJpSCBM5SkNys9u1XUREpCmFMJGjNGPyaLIzM5pty87MYMbk0SFVJCIiqUQd80WOUmPne42OFBGRo6EQJtIBUyfkK3SJiMhRUXOkiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQqGO+iCSU1tMUEYmPQpiIJIzW0xQRiZ+aI0UkYbSepohI/BTCRCRhtJ6miEj8FMJEJGG0nqaISPwUwkQkYbSepohI/NQxX0QO6ujIRq2nKSISP4UwkTSQiGkhEjWyUetpiojEJ7DmSDN7yMy2m9myVvabmf3SzNaY2RIzOyOoWkTSWWN4Ki2vwjkUnuYsKm3X62hko4hI5wqyT9jDwJQj7L8EGBW9TQfuD7AWkbSVqPCkkY0iIp0rsBDm7q8Au45wyFXAHz3iDSDXzAYHVY9IukpUeNLIRhGRzhXm6Mh8YFOTxyXRbYcxs+lmVmRmRWVlZZ1SnEiqSFR40shGEZHOlRJTVLj7LHcvdPfCgQMHhl2OSFJJVHiaOiGfe6aNJz83GwPyc7O5Z9p4dbIXEQlImKMjS4FhTR4PjW4TkXZI5LQQGtkoItJ5wgxhc4FbzOxx4Bxgj7tvCbEekZSl8CQiknoCC2Fm9hgwCRhgZiXAnUAmgLs/AMwDLgXWAPuBzwRVi4iIiEiyCSyEufv1bex34Oag3l9EREQkmaVEx3wRERGRdKNli0QkKSViKSYRkWSmECYiSSdR61iKiCQzNUeKSNLROpYi0hXoSpiIJJ10XMdSzasi0pKuhIlI0km3dSwbm1dLy6twDjWvzlmk+alFujKFMBFJOum2jqWaV0UkFjVHikjSSeRSTMkgHZtXRaTjFMJEJCml01JMQ3KzKY0RuFK1eVVEEkPNkSIiAUu35lURSQxdCRMRCVi6Na+KSGIohImIdIJ0al4VkcRQc6SIiIhICHQlTESkDZpoNTadF5GOUQgTETkCrWMZm86LSMepOVJE5Ag00WpsOi8iHacrYSKSthLRXKaJVmPTeRHpOF0JE5G0lKj1GtNtHctE0XkR6TiFMBFJS4lqLtNEq7HpvIh0nJojRSQtJaq5TBOtxqbzItJxCmEikpYSuV6jJlqNTedFpGMCbY40sylmVmxma8zsthj7bzSzMjNbHL19Psh6RKTrUHOZhGXOolIm3vsCI257hon3vtDufojSdQR2JczMMoBfAxcBJcDbZjbX3Ve0OPTP7n5LUHWISNek5jIJg+ZPk/YIsjnybGCNu68DMLPHgauAliFMRCQQ6dhcplnqg5OIc3ukASH67yQtBdkcmQ9savK4JLqtpY+a2RIze9LMhsV6ITObbmZFZlZUVlYWRK0iIkkvUdNuyOESdW41f5q0R9hTVPwVKHD3U4HngD/EOsjdZ7l7obsXDhw4sFMLFBFJFomadkN9lg6XqHOr+dOkPYIMYaVA0ytbQ6PbDnL3ne5eE334IHBmgPWIiKS0RFxl0dW02BJ1BUsDQqQ9ggxhbwOjzGyEmfUArgPmNj3AzAY3eXglsDLAekREUloirrJozcfYEnUFa+qEfO6ZNp783GwMyM/N5p5p49UfTGIKrGO+u9eZ2S3AfCADeMjdl5vZ3UCRu88FvmpmVwJ1wC7gxqDqERFJdTMmj2428g7af5VFfZZiS8S5bZSOA0IkGIFO1uru84B5Lbbd0eT+7cDtQdYgIpIuEjHtRiInsU2EZBntqSlNJAzm7mHX0C6FhYVeVFQUdhkiIimp5TxWELniE0aTWTLVIhIUM1vg7oWx9oU9OlJERDpRMvVZUv806eq0dqSISBeTLH2W1D9NujpdCRMRkVBoTi3p6hTCREQkFImcU0sT0EoqUnOkiIiEIlEjErVotqQqhTAREQlNIvqnadFsSVVqjhQRkZSmDv6SqhTCREQkpamDv6QqhTAREUlpWjRbUpX6hImISErTkkOSqhTCREQk5SXLBLQi7aEQJiIiIq1KlkXWk62WRFAIExERSVMdDS2JnIMtmWpJFuqYLyIikoYaQ0tpeRXOodDSntUEErXIejLV0lhPMqywoBAmIiKSZBIREhIRWhI1B1sy1ZKIQJgoCmEiIiJJJFEhIRGhJVFzsCVTLYm8otZRCmEiIiJJJFEhIRGhJVFzsCVTLcm0woJCmIiISBJJVEhIRGiZOiGfe6aNJz83GwPyc7O5Z9r4dneET6ZakmmFBY2OFBERSSJDcrMpjRG42hsSEjWJbSLmYEumWmZMHt1slCWEt8KCuXunv2lHFBYWelFRUdhliIiIBKLlVAwQCQlHc9VHYuvM+cbMbIG7F8baF+iVMDObAvwCyAAedPd7W+zvCfwROBPYCVzr7uuDrElERCSZaRmm4CXLCguBhTAzywB+DVwElABvm9lcd1/R5LDPAbvdfaSZXQf8N3BtUDWJiIikgmQJCRKsIDvmnw2scfd17n4AeBy4qsUxVwF/iN5/ErjQzCzAmkRERESSQpAhLB/Y1ORxSXRbzGPcvQ7YA/Rv+UJmNt3MisysqKysLKByRURERDpPSkxR4e6z3L3Q3QsHDhwYdjkiIiIiHRZkCCsFhjV5PDS6LeYxZtYd6Eukg76IiIhIWgtydOTbwCgzG0EkbF0HfLzFMXOBG4DXgauBF7yNOTMWLFiww8w2BFBvSwOAHZ3wPl2Rzm1wdG6DpfMbHJ3bYOn8Bqetc3t8azsCC2HuXmdmtwDziUxR8ZC7Lzezu4Eid58L/A74k5mtAXYRCWptvW6ntEeaWVFr83pIx+jcBkfnNlg6v8HRuQ2Wzm9wOnJuA50nzN3nAfNabLujyf1q4GNB1iAiIiKSjFKiY76IiIhIulEIa92ssAtIYzq3wdG5DZbOb3B0boOl8xucoz63Kbd2pIiIiEg60JUwERERkRAohLVgZlPMrNjM1pjZbWHXk27MbL2ZLTWzxWZWFHY9qczMHjKz7Wa2rMm2Y83sOTN7N/qzX5g1prJWzu9dZlYa/f4uNrNLw6wxVZnZMDN70cxWmNlyM7s1ul3f3w46wrnVdzcBzCzLzN4ys3ei5/cH0e0jzOzNaHb4s5n1iOv11Bx5SHTR8dU0WXQcuL7FouPSAWa2Hih0d81X00Fm9gGgEviju58S3fZjYJe73xv9R0Q/d/9OmHWmqlbO711Apbv/JMzaUp2ZDQYGu/tCM8sBFgBTgRvR97dDjnBur0Hf3Q6Lrm/dy90rzSwT+BdwK/ANYLa7P25mDwDvuPv9bb2eroQ1F8+i4yJJwd1fITK/XlNXAX+I3v8DkV++chRaOb+SAO6+xd0XRu9XACuJrCWs728HHeHcSgJ4RGX0YWb05sAFwJPR7XF/dxXCmotn0XHpGAf+YWYLzGx62MWkoUHuviV6fyswKMxi0tQtZrYk2lyp5rIOMrMCYALwJvr+JlSLcwv67iaEmWWY2WJgO/AcsBYod/e66CFxZweFMOls57v7GcAlwM3RJh8JQHQJMPU3SKz7gROB04EtwE/DLSe1mVlv4Cnga+6+t+k+fX87Jsa51Xc3Qdy93t1PJ7Im9tnAmKN9LYWw5uJZdFw6wN1Loz+3A38h8gWWxNkW7RPS2Ddke8j1pBV33xb9BdwA/BZ9f49atD/NU8Aj7j47ulnf3wSIdW713U08dy8HXgTOA3LNrHEVorizg0JYcwcXHY+ObLiOyCLjkgBm1ivaURQz6wVcDCw78rOkneYCN0Tv3wA8HWItaacxIER9BH1/j0q0c/PvgJXufl+TXfr+dlBr51bf3cQws4Fmlhu9n01kIN9KImHs6uhhcX93NTqyheiw3Z9zaNHxH4VcUtowsxOIXP2CyLqlj+r8Hj0zewyYBAwAtgF3AnOAJ4DhwAbgGndX5/Kj0Mr5nUSkOceB9cAXm/RhkjiZ2fnAq8BSoCG6+btE+i7p+9sBRzi316PvboeZ2alEOt5nELmQ9YS73x39+/Y4cCywCPiku9e0+XoKYSIiIiKdT82RIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEgKFMBFJSWb2WvRngZl9PMGv/d1Y7yUikkiaokJEUpqZTQK+5e6Xt+M53Zus8xZrf6W7905EfSIirdGVMBFJSWZWGb17L/B+M1tsZl+PLq4708zeji5W/MXo8ZPM7FUzmwusiG6bE11MfnnjgvJmdi+QHX29R5q+l0XMNLNlZrbUzK5t8tovmdmTZrbKzB6JzlwuItKq7m0fIiKS1G6jyZWwaJja4+5nmVlP4N9m9o/osWcAp7j7e9HHn3X3XdHlR942s6fc/TYzuyW6QG9L04jMOn4akZn03zazV6L7JgAnA5uBfwMTgX8l/uOKSLrQlTARSTcXA582s8VElsHpD4yK7nurSQAD+KqZvQO8AQxrclxrzgceiy6EvA14GTiryWuXRBdIXgwUJOTTiEja0pUwEUk3BnzF3ec32xjpO7avxeMPA+e5+34zewnI6sD7Nl0nrh79fhWRNuhKmIikugogp8nj+cBNZpYJYGYnmVmvGM/rC+yOBrAxwLlN9tU2Pr+FV4Fro/3OBgIfAN5KyKcQkS5H/1ITkVS3BKiPNis+DPyCSFPgwmjn+DJgaoznPQt8ycxWAsVEmiQbzQKWmNlCd/9Ek+1/Ac4D3gEc+La7b42GOBGRdtEUFSIiIiIhUHOkiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQKISJiIiIhEAhTERERCQECmEiIiIiIVAIExEREQmBQpiIiIhICFJu2aIBAwZ4QUFB2GWIiIiItGnBggU73H1grH0pF8IKCgooKioKuwwRERGRNpnZhtb2qTlSREREJASBhTAze8jMtpvZslb2m5n90szWmNkSMzsjqFpEREREkk2QV8IeBqYcYf8lwKjobTpwf4C1iIiIiCSVwPqEufsrZlZwhEOuAv7o7g68YWa5ZjbY3be0971qa2spKSmhurr6KKtNHVlZWQwdOpTMzMywSxEREZEOCLNjfj6wqcnjkui2doewkpIScnJyKCgowMwSVV/ScXd27txJSUkJI0aMCLscERGRlDRnUSkz5xezubyKIbnZzJg8mqkT8ju9jpTomG9m082syMyKysrKDttfXV1N//790zqAAZgZ/fv37xJX/ERERIIwZ1Ept89eSml5FQ6Ulldx++ylzFlU2um1hBnCSoFhTR4PjW47jLvPcvdCdy8cODDmVBtpH8AadZXPKSIikmh79tfyw2dWUFVb32x7VW09M+cXd3o9YTZHzgVuMbPHgXOAPUfTHywZlJeX8+ijj/LlL3+5Xc+79NJLefTRR8nNzQ2oMhERka6npq6etdv3UbxtL6u2VlAcvW3Z03pL0ubyqk6sMCKwEGZmjwGTgAFmVgLcCWQCuPsDwDzgUmANsB/4TFC1BK28vJzf/OY3h4Wwuro6undv/RTPmzcv6NJERETSlrtTWl7Fqi0VFG+riAauvawr20ddgwOQmWGMPC6Hc0/oz+i8HH77yjp27jtw2GsNyc3u7PIDHR15fRv7Hbg5qPc/kkR3yLvttttYu3Ytp59+OpmZmWRlZdGvXz9WrVrF6tWrmTp1Kps2baK6uppbb72V6dOnA4dm/6+srOSSSy7h/PPP57XXXiM/P5+nn36a7OzO/0KIiIgkoz1VtRRvrWDV1kNXt1ZvraCipu7gMfm52YwdnMNF4wYxOq8PY/JyGDGgF5kZh3pf5fXJ4vbZS5s1SWZnZjBj8uhO/TyQgssWdVRjh7zGk9/YIQ846iB27733smzZMhYvXsxLL73EZZddxrJlyw6OYHzooYc49thjqaqq4qyzzuKjH/0o/fv3b/Ya7777Lo899hi//e1vueaaa3jqqaf45Cc/2YFPKiIiklziuQhyoK6BtWWVFG+tYOXWvTGbEvtkdWdMXh8+ckY+o/NyGJOXw0mDcsjJanv6psb3S4bRkWkXwn7w1+Ws2Ly31f2LNpZzoL6h2baq2nq+/eQSHntrY8znjBvShzuvODnuGs4+++xmU0j88pe/5C9/+QsAmzZt4t133z0shI0YMYLTTz8dgDPPPJP169fH/X4iIiLJLtZFkO88tYRlm/fQ75gerTYlnjiwN+eMOJYxg/scDFx5fbI6NFBt6oT8UEJXS2kXwtrSMoC1tf1o9OrV6+D9l156ieeff57XX3+dY445hkmTJsWcYqJnz54H72dkZFBV1fkdBEVERIKwpyr2qMSaugYefPU9INKUOCYvhw+PHcSYwbGbEtNN2oWwtq5YTbz3BUpjjIDIz83mz18876jeMycnh4qKipj79uzZQ79+/TjmmGNYtWoVb7zxxlG9h4iISLJr2pS4Ktp/q61RiQYsueviuJoS003ahbC2zJg8OuEd8vr378/EiRM55ZRTyM7OZtCgQQf3TZkyhQceeICxY8cyevRozj333A7VLyIiErbGUYmHwtaRmxJH5/XhwVdbH5XYFQMYgEUGKaaOwsJCLyoqarZt5cqVjB07Nu7XSJblCo5Wez+viIjI0WoclVgcHZW4qpVRiWPychgdvY3J68MJA5s3JbbsEwaRiyD3TBufUn+D28vMFrh7Yax9Xe5KGCRPhzwREZHO0N5Ria01JeZkdWdMXg5TJzQZlZiXQ58UG5WYLLpkCBMREekq2hqV2Dj3VqymxLNHHMuY6Hxbo/NyGNw3PUYlJguFMBERkYAE3f2lrr6Biuo6Kqrr2FtdG71/6Ofe6jpmvbK2zVGJo/NyuHDsIMZEmxJHDOhFj+7pOyoxWSiEiYiIBKCtycHbClAV1XVU1ETDVFWsY+oOC1ftYcDiOy+mb3bX7BSfDBTCREREAjBzfvFhIamqtp5vPLH4sA7qrcnK7EZOViY5Wd3JycqkT1Z3huRmkdPz0LbIz0P7c7Iy6ZMd+dm7Z3c+9JOXYk7NNCQ3WwEsZAphIiIiAdgcI/gANDh84pzhrQaoptsS0SQYxNRMkhgKYSHo3bs3lZWVYZchIhKIVJ8GqKMqqmv5xfPv0toEUPm52Xzv8nGdVo9GJSYvhTAREUmYtvpBpbOGBuephSX897PF7NxXw7kjjmVxSTnVtYeWxQvrCpRGJSanrhnCljwB/7wb9pRA36Fw4R1w6jVH/XK33XYbw4YN4+abbwbgrrvuonv37rz44ovs3r2b2tpafvjDH3LVVVcl6hOIiCSl1vpBzcV7LDAAACAASURBVJxfnNYhYElJOXfOXc6ijeWcPiyX391QyGnDcrv8VUE5sq4XwpY8AX/9KtRG2+r3bIo8hqMOYtdeey1f+9rXDoawJ554gvnz5/PVr36VPn36sGPHDs4991yuvPLKDs2vIiKSrNydl1eXxewADq33j0p1OyprmPlsMU8s2ET/Xj35ycdOY9qEfLp1i/yu1xUoOZL0C2F/vw22Lm19f8nbUF/TfFttFTx9Cyz4Q+zn5I2HS+5t9SUnTJjA9u3b2bx5M2VlZfTr14+8vDy+/vWv88orr9CtWzdKS0vZtm0beXl5R/GhRESSU32DM2/pFu5/aS0rtuylm0U6nrfkwF1zl/P5949gaL9jOr3ORKurb+BPb2zgvudWU3Wgns+fP4KvXDgqrpnjRRqlXwhrS8sA1tb2OH3sYx/jySefZOvWrVx77bU88sgjlJWVsWDBAjIzMykoKKC6uvVV5EVEUkl1bT2zF5byP6+sZcPO/ZwwsBc/vvpUugHff3p5sybJnt27cdrQvvzvGxv43zc2cOXpQ7jpgycyalBOeB+gA15bu4O75i5n9bZK3j9qAHdeMY6Rx6XmZ5FwpV8IO8IVKwB+dkqkCbKlvsPgM88c9dtee+21fOELX2DHjh28/PLLPPHEExx33HFkZmby4osvsmHDhqN+bRGRZFFRXcujb27kwX+9R1lFDacO7csDnzyDi8flHWyC657RLWY/qM3lVTz46ns89tZGZi8s5aJxg/jypBOZMLxfyJ8qPqXlVfzXMyt5ZukWhvbL5n8+dSYXjxukbiZy1NIvhLXlwjua9wkDyMyObO+Ak08+mYqKCvLz8xk8eDCf+MQnuOKKKxg/fjyFhYWMGTOmg4WLiIRnR2UND/97PX98fT17q+s4f+QAfn7t6bzvxP6HhZDW+kENyc3mjivGccsFI/nDa+t5+LX1PLdiG+eecCxfnjSS948akJSBprq2nlmvrOM3L63BHb7+4ZP44gdPICszI+zSJMWZe2szmSSnwsJCLyoqarZt5cqVjB07Nv4XSfDoyM7W7s8rInKUNu3az4OvruPPRZuoqWtgysl5fOmDJ3LasNwOv/a+mjoee2sjD776Hlv3VnNKfh9u+uBIppySR0a38MOYu/Pcim385zMr2LSrikvH5/HdS8emRZ826TxmtsDdC2Pt63pXwiASuFIodImIdLbV2yp44KW1PP3OZroZfGRCPtM/cCIjj+udsPfo1bM7n3//CXzqvOOZs6iU/3l5HTc/upARA3rxxQ+cwEfOyKdn93CuNq3ZXsndf1vBK6vLGHVcbx75/DlMHDkglFokfXXNECYiIjEt3Lib37y4ludXbiM7M4Mb31fA584fwZDc7MDes2f3DK49azhXnzmM+cu3cv9La7lt9lJ+9vxqPn/+CVx/znB69+ycP1cV1bX8vxfW8NC/3iO7RwZ3XD6OT513PJkZHV8+SKQlhTARkS7O3Xnl3R385sU1vPneLnKPyeRrHx7FDecV0K9Xj06rI6Obcen4wVxySh7/XrOT37y0hh/NW8mvXlzDDecdz40TR3BsQPU0NDh/WVTKvc+uYkdlDdecOYwZU0YzoHfPQN5PBNIohLl7UnboTLRU68MnIsmrvsH5+7LIHF/LN+9lcN8svn/5OK47axi9OunKUyxmxvmjBnD+qAEs3lTO/S+t4ZcvrGHWq+u47qzhfOEDJ5CfwCtzS0v2cOfcZSzcWM5pw3J58NOFCenzJtKWtOiY/95775GTk0P//oeP0kkn7s7OnTupqKhgxIgRYZcjIimqpi46x9fLa1kfnePrSx88kamn59Oje3I2u63ZXsEDL69jzqJSAK46PZ+bJp3Qofm5dlbW8JN/FPP425vo36sH35kyho+eMfTgVBsiiXCkjvlpEcJqa2spKSnpEpOhZmVlMXToUDIzNSuziLRPZU0dj765gQdffY/t0Tm+vjzpRC4alxyjEeOxubyK3766jsff2kRVbT0XjxvElz80ktPbceWqrr6B/43Odr//QD03vK+AWz+s2e4lGGkfwkREpHU7K2t4+LX1/OG1yBxfE0f256YPjmTiyNRtPdi178DBz7Snqpb3ndifmyadyPkjjzzX2Otrd/KDvy5n1dYKzh8Zme0+VWful9SgECYiEqA5i0pjzhAfdh2fO7+AjbuqePztjdTUNTB5XB43TUrMHF/JorKmjsff2shvX13Htr01jM/vy02TTmTyyXn89Z3NB8/HcX16MrhvFos37SE/N5vvXz6WySfnpWwIldShECYiEpA5i0q5ffbSZmslZmdmcM+08Z0axGLVAWDA1WcO5YsfTOwcX8mmpq6eOYtKeeDldby3Yx8De/egvKqW2vrmf+OmnDyIn183QbPdS6dRCBMRSbCaunrWbK/kkw++ye79tYftz8wwTurEZq7V2yoOCxwAg/r05M3vfrjT6ghbfYMzf/lWbn18UczzkZ+bzb9vuyCEyqSrCm3GfDObAvwCyAAedPd7W+wfDvwByI0ec5u7zwuyJhGR9nB3SnZXsWprBcVb90Z/VrBuxz7qG1r/R2xtvTO4b1an1bl8896Y27fvrem0GpJB41xjNz+yMOb+zeVVMbeLhCGwEGZmGcCvgYuAEuBtM5vr7iuaHPY94Al3v9/MxgHzgIKgahIROZI9+2tZFQ1ajaFr9bZKKmvqDh4ztF82Y/JyuPjkQYzO68MP/7aC7RWHB5383GwevOGsTqt94r0vUBojYAQ5030yG5KbrfMhSS/IK2FnA2vcfR2AmT0OXAU0DWEO9Ine7wtsDrAeEREg0pS4dvs+irdFA9eWyNWtrXsPTXPTNzuT0Xk5TDsjn9F5OYzJy+GkQTnktJjGoKHBY/YJmzF5dKd9HoAZk0cnRR3JQudDUkGQISwf2NTkcQlwTotj7gL+YWZfAXoBXafjgoh0WFujEhubEou3VlC8rSIauPby3o591EWbEjMzjJHH5XDeif0ZnZdzMHDl9cmKa+Rc4/uFPToyWepIFjofkgoC65hvZlcDU9z989HHnwLOcfdbmhzzjWgNPzWz84DfAae4e0OL15oOTAcYPnz4mRs2bAikZhFJHbFGA/bo3o0rTh1Mz8yMSPDaWhGzKTEStvowJi+HEQN6aXFmEQlMWB3zS4FhTR4PjW5r6nPAFAB3f93MsoABwPamB7n7LGAWREZHBlWwiKSGuvoGfjRv5WHTMRyoa+CphaVxNyWKiIQpyBD2NjDKzEYQCV/XAR9vccxG4ELgYTMbC2QBZQHWJCIpaP+BOhZtLOft9bsoWr+bhRt3s/9AfcxjDVh8x0WahFNEkl5gIczd68zsFmA+keknHnL35WZ2N1Dk7nOBbwK/NbOvE+mkf6On2sRlIpJwOyprKFq/i7fX76Zo/S6Wbd5LfYNjBmPz+vCxM4cy953NMefnGpKbrQAmIikh0HnConN+zWux7Y4m91cAE4OsQUSSm7uzYed+3lq/i6Lola51O/YB0LN7N04flstNHzyRwoJ+nHF8v4OLLE8Y3k+j30QkpQUawkREWqqrb2DlloqDoevt9bvZURmZZyv3mEwKjz+Wa88aRmHBsZyS34ee3WMvL6PRbyKS6hTCRCRQ+w/UsXhjOW+v383b63c16881tF82Hxg1gMKCYzmroB8nDuxNt27xNyVOnZCv0CUiKUshTETa7Ujzc0X6c+2OdqJv3p9rTLQ/V2HBsRQW9GNwX81eLiJdlxbwFpF2iTU/V2aGccbwXMoqDjTrz3XasFzOjgaupv25RES6itAW8BaR9DNzfvFh83PV1jtvrd/NhWOOi6s/l4iIKISJSDttjrEoMgBOpy5YLSKS6rRWh4jE7bW1O2htCq4huerfJSLSHroSJiJtqqmr575/rGbWq+sY0KsHe6vrqKk7tMSr5ucSEWk/hTAROaI12yv46mOLWbFlLx8/Zzjfu2ws/1i+TfNziYh0kEKYiMTk7vzpjQ386JmV9OrZnd9+upCLxg0CND+XiEgiKISJyGG2V1Tz7SeX8FJxGZNGD+THV5/KcTlZYZclIpJWFMJEpJnnV2zjO08tobKmjruvOplPnXu8FsQWEQmAQpiIAJHlhX74zEoefXMj4wb34fHrTmfUoJywyxIRSVsKYSLCkpJyvvb4Yt7buY8vfvAEvnHRSZpoVUQkYAphIl1YfYPzwMtr+dlzqxmY05NHPn8O7ztxQNhliYh0CQphIl3Upl37+eYT7/DW+l1cfupgfjR1PH2P0dqOIiKdRSFMpItxd+YsLuWOOctx4L5rTuMjE/LV+V5EpJMphIl0IXuqavnenGX89Z3NnFXQj/uuOZ1hxx4TdlkiIl2SQphIF/H62p1884nFbK+o4VsXn8RNk0aS0U1Xv0REwqIQJpLmDtQ18NPnipn1yjoK+vfiqZvex2nDcsMuS0Sky1MIE0lja7ZXcOvji1m+eS/Xnz2c718+lmN66H97EZFkoN/GImnI3fnfNzbww+i6j7M+dSYXn5wXdlkiItKEQphImimrqOHbT77Di8VlfPCkgcz8mNZ9FBFJRgphImnknyu38e0nI+s+/uDKk/n0eVr3UUQkWSmEiaSBqgP1/PCZFTzy5kbGDu7DY9edzkla91FEJKkphImkuKUle7j1z4t4b8c+pn/gBL55sdZ9FBFJBQphIilmzqJSZs4vZnN5FTlZ3amormNQnywe+dw5vG+k1n0UEUkV3eI5yMxmm9llZhbX8SISjDmLSrl99lJKy6twYG91Hd0MvnrhSAUwEZEUE2+o+g3wceBdM7vXzEYHWJOItGLm/FVU1dY321bv8OsX14ZUkYiIHK24Qpi7P+/unwDOANYDz5vZa2b2GTPLDLJAEYlYv2MfpeXVMfdtLq/q5GpERKSj4m5eNLP+wI3A54FFwC+IhLLnAqlMRACoq29g1itrmfzzV2htsokhudmdWpOIiHRcvH3C/gK8ChwDXOHuV7r7n939K0DvIzxvipkVm9kaM7utlWOuMbMVZrbczB49mg8hkq5WbN7LR37zGv81bxUfOGkgd145juzM5iMfszMzmDFZPQRERFJNvKMjf+nuL8ba4e6FsbabWQbwa+AioAR428zmuvuKJseMAm4HJrr7bjM7rl3Vi6Spmrp6fvXCGu5/aS25x2Ty64+fwaXj8zAzcrN7HBwdOSQ3mxmTRzN1Qn7YJYuISDvFG8LGmdkidy8HMLN+wPXu/psjPOdsYI27r4s+53HgKmBFk2O+APza3XcDuPv29n4AkXSzYMMuvv3kEtaW7WPaGfl8/7Jx9OvV4+D+qRPyFbpERNJAvH3CvtAYwACioekLbTwnH9jU5HFJdFtTJwEnmdm/zewNM5sSZz0iaWdfTR13zV3O1Q+8TnVtA3/47Nncd83pzQKYiIikj3ivhGWYmbm7w8GmxkT8ZegOjAImAUOBV8xsfNPAF32/6cB0gOHDhyfgbUWSy8ury/ju7KVs3lPFDecV8K3Jo+ndU3Mpi4iks3h/yz8L/NnM/if6+IvRbUdSCgxr8nhodFtTJcCb7l4LvGdmq4mEsrebHuTus4BZAIWFhR5nzSJJb/e+A/znMyuYvbCUEwf24skvnceZxx8bdlkiItIJ4g1h3yESvG6KPn4OeLCN57wNjDKzEUTC13VEJnxtag5wPfB7MxtApHlyXZw1iaQsd2fe0q3cOXcZ5ftr+coFI7n5QyPJytSajyIiXUVcIczdG4D7o7e4uHudmd0CzAcygIfcfbmZ3Q0Uufvc6L6LzWwFUA/McPed7f0QIqlk295qvjdnGc+t2Mb4/L786XPnMHZwn7DLEhGRTmbRbl5HPigylcQ9wDggq3G7u58QXGmxFRYWelFRUWe/rUiHuTt/fnsTP5q3kgN1DXzz4pP47MQRdM/QkqwiIunKzBa0Np1XvM2RvwfuBH4GfAj4DO2YbV+kq1u/Yx+3z17K6+t2cu4Jx3LvtFMpGNAr7LJERCRE8YawbHf/Z3SE5AbgLjNbANwRYG0iKa+uvoHf/3s9P32umMxu3bhn2niuLRxGt26tLUAkIiJdRbwhrMbMugHvRvt5lXKE5YpEBFZu2ct3nlrCkpI9fHjsIH449RTy+ma1/UQREekS4g1htxJZN/KrwH8SaZK8IaiiRFJZTV09v35hDb95aS19szP51ccncNn4wZjp6peIiBzSZgiLTsx6rbt/C6gk0h9MRGJYsGEX33lqKWu2VzJtQj7fv3ycZrwXEZGY2gxh7l5vZud3RjEiqWpfTR0z5xfzh9fXM6RvNg9/5iwmjdZ69CIi0rp4myMXmdlc4P+AfY0b3X12IFWJpJBXVpdxe3TJoU+fezwzpozRkkMiItKmeP9SZAE7gQuabHNAIUy6rPL9B/jPv63kqYUlnDiwF//3xfMoLNCSQyIiEp94Z8xXPzDp8uYsKmXm/GI2l1eRe0wmtfUNVNc2cMuHRnLLBVpySERE2ieuEGZmvydy5asZd/9swisSSUJzFpVy2+wlVNc2ALB7fy1m8K2LR3Pzh0aGXJ2IiKSieJsj/9bkfhbwEWBz4ssROVzTK1BDcrOZMXk0Uyfkt+s1qmvrqaiuo6K6Nvqzjr3VtQcf722279Axjfd37jtw2Gu6w6NvblQIExGRoxJvc+RTTR+b2WPAvwKpSKSJOYtKuX32Uqpq6wEoLa/i208u4Z1Nuxk7uG80SB0eqlqGqQP1DW2+V++e3cnJarxl0r93DwoG9CInqzuPvrkx5nM2l1cl9POKiEjXcbRDuEYBGn8vgZs5v/hgAGt0oL6B37+2odm2Xj0yyMnKJCerO32ymweonKzu9Inuy8nqTk7PzINBq3Ff76zuZBxhKaGXi8sojRG4huRmJ+aDiohIlxNvn7AKmvcJ2wp8J5CKRJpo7UqTAa98+0NxBahEmDF5dLMrcgDZmRnMmDw60PcVEZH0FW9zZE7QhYjEMqhPFlv3Vh+2fUhuNsOOPabT6mjsg9bRvmkiIiKN4r0S9hHgBXffE32cC0xy9zlBFidyXE6Pw0JYWFegpk7IV+gSEZGE6RbncXc2BjAAdy8H7gymJJGI51ZsY0npXi4bn0d+bjYG5Odmc8+08QpDIiKS8uLtmB8rrGldFglMZU0ddzy9jNGDcvj5dRPIzIj33wsiIiKpId6/bEVmdp+ZnRi93QcsCLIw6dp++o9itu6t5r+mjVcAExGRtBTvX7evAAeAPwOPA9XAzUEVJV3bO5vKefi19XzinOGceXy/sMsREREJRLyjI/cBtwVciwh19Q3cPnspA3v35NtTxoRdjoiISGDiuhJmZs9FR0Q2Pu5nZvODK0u6qof+/R4rtuzlritPpk9WZtjliIiIBCbe5sgB0RGRALj7bjRjviTYpl37+dlz73LhmOO45JS8sMsREREJVLwhrMHMhjc+MLMCms+gL9Ih7s73n16GGdw99RTMgp0BX0REJGzxTjPxH8C/zOxlIivGvB+YHlhV0uX8bckWXiou4/uXjyNf6zGKiEgXEG/H/GfNrJBI8FoEzAFiL+on0k579tfyg7+uYHx+X258X0HY5YiIiHSKeJct+jxwKzAUWAycC7wOXBBcadJV3PvsKnbtq+Hhz5wV+ELcIiIiySLePmG3AmcBG9z9Q8AEoPzITxFp29vrd/HYWxv57MQRnJLfN+xyREREOk28Iaza3asBzKynu68COn8FZUkrNXX13D57Kfm52Xz9opPCLkdERKRTxdsxvyQ6T9gc4Dkz2w1sCK4s6Qr+5+V1rNleyUM3FtKrp5YiFRGRriXejvkfid69y8xeBPoCzwZWlaS9dWWV/OrFNVw2fjAXjBkUdjkiIiKdrt0rI7v7y+4+190PtHWsmU0xs2IzW2NmrS57ZGYfNTOPjsCUNOfu/MdfltGzezfuvGJc2OWIiIiEot0hLF5mlgH8GrgEGAdcb2aH/cU1sxwiHf/fDKoWSS5PLijh9XU7ue2SMRzXJyvsckREREIRWAgDzgbWuPu66FWzx4GrYhz3n8B/A9UB1iJJYmdlDT+at5LC4/tx/VnD236CiIhImgoyhOUDm5o8LoluO8jMzgCGufszAdYhSeRHz6xkX00d/zVtPN00J5iIiHRhQYawIzKzbsB9wDfjOHa6mRWZWVFZWVnwxUkg/vXuDmYvKuWLHziRkwblhF2OiIhIqIIMYaXAsCaPh0a3NcoBTgFeMrP1RGbhnxurc767z3L3QncvHDhwYIAlS1Cqa+v5jzlLKeh/DLdcMDLsckREREIXZAh7GxhlZiPMrAdwHTC3cae773H3Ae5e4O4FwBvAle5eFGBNEpJf/vNdNuzcz48+Mp6szIywyxEREQldYCHM3euAW4D5wErgCXdfbmZ3m9mVQb2vJJ9VW/cy65V1TDsjn4kjB4RdjoiISFIIdJpyd58HzGux7Y5Wjp0UZC0SjoYG57uzl5KT1Z3vXaY5wURERBqF1jFfuoZH3trIwo3lfO+ycRzbq0fY5YiIiCQNhTAJzLa91fz476uYOLI/087Ib/sJIiIiXYhCmATmB39dTk19Az+cOh4zzQkmIiLSlEKYBOKfK7cxb+lWvnrBSEYM6BV2OSIiIklHIUwSbl9NHXc8vZyTBvVm+gdODLscERGRpBTo6Ejpmu57bjWl5VU8+aXz6NFdOV9ERCQW/YWUhFpasoff//s9PnHOcAoLjg27HBERkaSlECYJU1ffwG2zl9C/d0++PWVM2OWIiIgkNTVHSsI8/Np6lm/ey68/fgZ9szPDLkdERCSp6UqYJETJ7v389B+ruWDMcVw6Pi/sckRERJKeQph0mLtzx9PLAbj7qpM1J5iIiEgcFMKkw+Yt3coLq7bzzYtPYmi/Y8IuR0REJCUohEmH7Kmq5a6/LueU/D7c+L6CsMsRERFJGeqYLx3y42dXsbOyhoduOIvuGcr0IiIi8dJfTTlqCzbs4pE3N/KZiSMYP7Rv2OWIiIikFIUwOSoH6hq4ffZS8nOz+cZFJ4VdjoiISMpRc6QclVmvrGX1tkp+d0MhvXrqayQiItJeuhIm7fbejn388oU1XDo+jwvHDgq7HBERkZSkECbt4u78x1+W0jOjG3decXLY5YiIiKQshTBpl9kLS3lt7U6+fckYBvXJCrscERGRlKUQJnHbte8AP3xmBWcMz+UTZw8PuxwREZGUphAmcfvRMyupqK7jnmmn0q2bliYSOWjJE/CzU+Cu3MjPJU+EXZGIpAANa5O4vLZmB08tLOHmD53I6LycsMsRiVjyBPzzbthTAn2HwoV3wKnXdH4Nf/0q1FZFHu/ZFHkMnV+LiKQUhTBp1ZxFpcycX8zm8iq6dTMG9MrkKxeMCrsskYh4w487NNRBXTXUHYj8rK+Buia3Zo+rof5A8+OPdMzq+ZGfTdVWRcKhQpiIHIFCmMQ0Z1Ept89eSlVtPQD1Dc7e6nqeXbaVqRPyQ65Ouhx3qN4DFVtg7+bIbf53DwWwRrVV8JcvwT++1zxgeUPHa+jWHTJ6Qvcmt4yehwewRns2Rd6/e8+Ov7eIpCWFMIlp5vzigwGs0YH6BmbOL1YIk8Sqr4PKbZFgVbEZ9m5p8jMauiq2QO3++F7P62H0JbEDU/cs6N4j8jOjR4vHsY5vfE5P6JYR+/1+dkokcLW276zPQ+FnoffAozs/IpK2FMIkps3lVe3aLl1MvH2xqvc2D1IHfzYJWvu2H36lKqMH5ORBzhAYfCqcNAX6DIE+gyPb+gyGhy+LvH9LfYfBFb8I5nPHcuEdzZtFATKz4ewvwrbl8NJ/was/gfEfg3O+FPk8IiIohEkL7s7fl22lmxn17oftH5KbHUJVklRi9cWa82VYNhuyc5sHrQMVhz8/KzcSqHIGw6CTD4WqPvmRbX2GwDH9wdoYgXvhnbHDz4V3JO6zxqMxfLYWSne8C28+AIsfhcWPwPHnw7lfgtGXtn51TUSClQyDegDzGH9ok1lhYaEXFRWFXUZaWr2tgrvmLue1tTsZ0jeLHfsOcKDu0BWK7MwM7pk2Xs2RXd1PRkPl1tj7+gyNXq0afChotfzZ45jE1ZIkv0jjUrUbFv4J3vot7NkIucMjV8vO+BRk9Q27OpGuo+U/JCHyD7grfhnI7w8zW+DuhTH3KYTJnqpafv78av74+gZ69+zOty4+ievPHs7flmw5ODpySG42MyaPVgDrqirLYNmT8M7jsGVxKwcZ3FXeqWWlpPo6KJ4Hb9wPG1+DzF4w4RORpsr+J4ZdnSRasvxDoSvWUV8HByrhwL7oLXr//26E/TsOP77vMPj6soSXoRAmMTU0OP+3YBM/fraYXfsP8PGzh/Oti0fTr1ePsEuTZFBbBcV/jwSvNc9HOrwPPg12b4DqGGEroF9gaW3z4khT5bKnIlNejJocaao84UNtN8cms2T5gx+2Tr7iktJ1jLuqeVCK+34r+2oqIyOj2yWYf0iGFsLMbArwCyADeNDd722x/xvA54E6oAz4rLtvONJrBh3Cms6Nlc5XfxZt3M2dc5ezpGQPZxX0484rTuaUfDWJdHkNDbDxdVjyOCyfAzV7I322Tr0GTrsOjhubPL/Q00nFNih6CIp+B/vKYODYSBgbf01im287QzJ9P4IOg+6RKUqq90b+X6neE7nV7I1se+77kcctZWZHArfXQ0P05k1/NrR4fKTtDW0fV3+g9c9g3QCL/DQ7wmNrY3+3Q8e0tn/X2sicfR2VeQz06BW99W5yv+XjVu4/9Tmo3H7466bTlTAzywBW///27jy66vrM4/j7SQIBEkhQwpKwKjvKUmy1RasFKw7K0jNdtNZjbef0jF2sbU9npNM6tmOXOZ1TtZutp3a0U8c6ZXSg2gouLa1YqYogsggubGEXwpIgIckzf3x/MfeGG2TL/d7kfl7n3HPv/d1fLk++J/zuc7/L8wU+CGwBngOudvfVKed8AFjq7nVmdgNwibt/7Fjv255Je2avdQAAEedJREFUWOvaWND55kHtOnCYf39sLfNe2EK/XsV8bcYYZk2oxDryt245dbtfDYnXigfDfKUuJTB2Vki8hl509ARy9XS0j4bDoVfs2Z/C9pXQvTdMvj6UuSjL8WuQe/hg+9mUkEi2VtwLptz4DuVAUkqCtHXO8S5meKdk8KgEaj8c3pf+PDWhOpzp+X5oOnJy7dVnJFhh+H2sILkvTL/PdCzjuQUZzks5vuSOtuN4/1dDIueerFL2lOfe6nnr11Of8w6vO6z+v7bjmPqN40ugupac+oKWfJgTZmbvBW519+nJ87kA7v7dNs6fBPzY3acc633bMwmb8r2nqM5QgqGqvDtLbp7aLv9mthxpbOK+ZzZw5xPreauhkU9feBafnzqc0mItkM1btW/CqodgxQNQ/UK4uJ91CUy4GkZfES52Eoc7bHwGlt4Fax8FLAzXXPBZGPTu+LEd2Aa71sKuV1rud67JPEx9uhUUtarz1kYyt2EJNGQoqVNQGFboHlcCZVDcMySQ3Xq1ui9rdaz1817wy+mwv/rot8320H1btezyNQ7I6hfJYyVh7fkJXAWktvYW4PxjnP9p4A+ZXjCzzwCfARg8ePDpiu8onbU21l/W7+Kbv1vNqzsP8oFRFdwycxzD+ugD9oR1ht6fhsOw7rHQ47V+YRga6HcOXHYbnPPhsLJR4jODoVPCbe9G+NvdYWXlqoeganJIxsbOhsIu7ReDe/hbfzvRWtuScB3e33Je995h+HTch8Jw9Z+/n7knrGwQfGFZq22hMm0bdRzbSL39PNOxeqjbkzkBgzBEN3Z2S7LUrSxzAtWtF3TtGXqTTtalt+ZGGZW2atnlaxwQrt05cP3OiW4QM/sEcB5wcabX3f1u4G4IPWHtFUdlefeMPWEOXHvPUmZPrGL6uH707NaOF77TaPOeOm57dDULV+1gyJk9uOe685g2pl/ssDqmjrxJsztsXhom2K96KAyplPaHC26A8VdB/3NiRyjH0nsITP82XDI39Fo+e1eY07Lo62GYcvL1UHLmyb9/U1MYgm7dq7V7XZjk3KykAipGh7/3itEtt5I+6YsIuvdu+4O2qGu4ZcOxel2uvD07MbxTDblsURw5K/pwpJldCvwIuNjdM8yUS5ftOWHFRQVcPLIPa7cfZNOeOoqLCpg2pi+zJ1ZxyagKiotyr9jiofpG7lr8Gj9f/BoFZnx+6nD+4aJhORlrTqivC1Xba3eHOS21O8M3+YO7wn3trjBZPdOE0q4lYU5F+WAoGxzuS/vmxsq2Pa+HHq+XHoS9b4TJrKOvDPO8zrpEhUI7qqamsFr12Z/C638MQ3LjPwrn3wA7Xm77A66pEfZuSE+2dq0JxWRTt4Qq7Q8Vo5Ika1To3eoz6sQSvVzoNc6lBQKS12LNCSsiTMyfBlQTJuZ/3N1XpZwzCZgHXO7u64/nfWOtjnR3Xtxcw/wXq3nkpW28WVtPz25FzDhnALMnVXL+sDMpLIj7wevuPPbydm57dA3VNYeYNaGSuTNGM6Csg1e5P9ELunsojFm7OyRUB3e2PE5LrnaGx0dqM79PcVn4ll/aNyRhx6uwGMoHJYlZcl8+pOVYaf9TG+I4lro9sOrhkHhtXgoYDHt/mOc15sowv0U6j51rQomLFQ+G4TcrSN8CqqALVE4Kr+1en77ZeK+q9GSrYgxUjAw9WZ1FLiSDkvdilqiYAdxBKFHxS3f/tpl9C3je3ReY2RPAucC25Ec2ufusY71nLtQJa2hsYslrbzL/xWoWrtpObX0j/XoVM3N8JXMmVTGuslfWVxumVrsf3b8n35w1jvPPOoUhilyR6dtsYXEobtl7WEtPVe2uJNnaFRKuTBNurSBsh1PStyW5SntcEW6lfaFHH+jSreVnjzW08dlnw2s1m46+7dt89PyYgi7hA6F8cJKYDUlP2HoOgMJjzBRo/cHyga+FeS0rHoB1C8PcmIoxMOFjocRBrq+qk1NXtwd+ODFzOQQrhLOntiRcfcdAnxGq0i+SJSrW2o4O1TfyxJodzF++lcXrdnKk0TmrooQ5E6uYNaGSoe08Ab6tavdFhe3U05JtPxgH+zNs0tyssGtIpEorkoSqInlckXI8edzjjJMfgjuVoY36uiRJ2ww1G1uSs+ZE7eCO9PMLisIWP+VDUnrSkoRt+0p46t/S42hWUhE2iZ5wFfQfnxtDopI9t5YTZrC2pp0MRGJSEpYlNXX1/H7lduYvr2bpG3sAmDConDkTK7li/AD69uz2Du9w/FpXu786qXZ/Rmepdl+3J6wI+1PGiiaAwc0bwyqmbCUb7TW0ceSt8J41G1v1qCWPD2wj84drih594CuvHLsHTTq3XFr+LyJvUxIWwdaaQ/xuxVbmL9/K6m37KTCYMrzPaVlh+eKmvdy6YBUrtuzjvCG9uXVWJ6p2X7MJ/voTWParMFm4qFv6PJZm+fTB0lAfegNrNsGvZrdxkno78p4moovkJCVhka3fcYD5y7cyf0U1m/ccoriogEvH9GPWxMoTWmGZWu2+b89i5s4YzZyJVZ2j2v2OVbDkTlg5L/RsnfsReN+NYbWXPlhaqLdDjkUT0UVyjpKwHOHuLNtUw4LlLSsse3UrYsa5A5g1sZILhp1JQYEdtULzyx8cwd66I29Xu//UhcP4wtQRHb/afXNV8CV3wPpFYaucydeFQpTlg1rO0wdLC/V2iIh0KErCTkSWPvCPNDax5NXdLFi+9e0Vlv17dWPMgFKeeW0PhxtalpkbYUbQxSMruGXmWM6uKD3t8WRVUxO88vuQfG15LqxYPP8fQ+HJHmfEji73KSkVEekwlIQdr0i9DC0rLKt5Yk3merVnlHTlha9f2rGHHhvqQ/2qZ34YqnGXDw5DjhOvga49YkcnIiJy2sXaO7LjefJbRy/9P3IoHG/HJKx710JmTqhk5oRKht38aMZ1cHtr6ztuAvbWfnjh3lDh+8A26Hcu/P09MHaOVvOJiEje0idgqn1t1KPatxn+8gMYeXkodNiOyVBb+1dWlnfAqvcHd4Z97p67Bw7vg6EXwewfw9nTVMNKRETynpKwVGUDM688K+gCT34z3MoGwYjLQkI27KIwXHkafXX6qKP2r+zepZCvTh91Wv+ddvXma/DMj2D5f4fq7WNmwoU3QdXk2JGJiIjkDCVhqabd0vacsKEXhRV86xbCit/A8/dAUfewL9/Iy2DE9PQVfSdpzqSwxUym/Stz3tYX4ek7YM2CUPV9wtVhzlef4bEjExERyTmamN/a8aw8azgMG54OCdn6hbB3Qzjed1xIyEZeDgPfffJb5HQk7vD6n+Dp2+GNxaGC/XmfggtugJ79Y0cnIiISlVZHtid32L0e1j0Weso2/RWaGqB7bxh+aUjIzp7a+UovNDXC6vmhzMS2FVDaPyRe512vjYFFREQSWh3ZnsygYmS4TbkRDtXAa0+FhGz9Ilj5W7ACGHR+y1yydp7cf9pk6hUcMxOW3x/mfO3dAGcOD8O1E66CouLYEYuIiHQY6glrT02NUL0sDFmuWwjbXwrH23ly/2mRqWZaQZewl2P9gTDJfspNMPqK/Bh2FREROQkajswV+7cmk/sXwet/TDaobp7cPz3cygZmvyJ6Y0OIpflWXwf/9SGozVA4tqgbXDMPhl7YMXrzREREIlISlouOvAUbnw4J2brHoGZjON6zCmp3hHllzbp0h+nfCSswUxOltxOnQ1BfG+6PJPcZX0/92ZRzG+tPIHCDW2tOa1OIiIh0VkrCcp172MZn3UJ46jZoPHxq72eF0LUEuvQICVzXknDfpUe4dU2Odylp+/VHvgx1u49+77JB8KWXTy0+ERGRPKGJ+bnODCpGhdvjt7R93sw7UxKnHi1JU+vEqqjrqcfUcDhzzbRpx4hPREREjpuSsFzTVtX+skEw+ZPZi6N5Dlo256aJiIjkESVhuaatqv0xeqDGf1RJl4iISDspiB2AtDL+o6HuVtkgwML9zB8qGRIREelk1BOWi9QDJSIi0umpJ0xEREQkAiVhIiIiIhEoCRMRERGJQEmYiIiISAQdrmK+me0CNmbhn+oDZCgZn5fUFunUHi3UFunUHunUHi3UFunyqT2GuHtFphc6XBKWLWb2fFvbDOQbtUU6tUcLtUU6tUc6tUcLtUU6tUeg4UgRERGRCJSEiYiIiESgJKxtd8cOIIeoLdKpPVqoLdKpPdKpPVqoLdKpPdCcMBEREZEo1BMmIiIiEoGSsFbM7HIze8XMXjWzm2PHE5OZDTKzP5rZajNbZWZfjB1TbGZWaGYvmtkjsWOJzczKzWyema01szVm9t7YMcVkZl9K/p+8bGYPmFm32DFlk5n90sx2mtnLKcfOMLPHzWx9ct87ZozZ0kZbfD/5v/KSmT1sZuUxY8ymTO2R8tpXzMzNrE+M2GJTEpbCzAqBnwB/B4wFrjazsXGjiqoB+Iq7jwUuAD6X5+0B8EVgTewgcsSdwGPuPhqYQB63i5lVATcC57n7OUAhcFXcqLLuXuDyVsduBp509xHAk8nzfHAvR7fF48A57j4eWAfMzXZQEd3L0e2BmQ0CLgM2ZTugXKEkLN17gFfd/XV3rwd+A8yOHFM07r7N3Zcljw8QPmSr4kYVj5kNBK4AfhE7ltjMrAx4P3APgLvXu3tN3KiiKwK6m1kR0APYGjmerHL3PwN7Wh2eDdyXPL4PmJPVoCLJ1BbuvsjdG5KnzwIDsx5YJG38bQDcDvwTkLeT05WEpasCNqc830IeJx2pzGwoMAlYGjeSqO4gXDCaYgeSA4YBu4D/TIZnf2FmJbGDisXdq4H/IHyj3wbsc/dFcaPKCf3cfVvyeDvQL2YwOeRTwB9iBxGTmc0Gqt19RexYYlISJu/IzEqB/wVucvf9seOJwcyuBHa6+wuxY8kRRcC7gLvcfRJQS/4MNR0lmes0m5CcVgIlZvaJuFHlFg9L8fO2x6OZmf0LYarH/bFjicXMegBfA26JHUtsSsLSVQODUp4PTI7lLTPrQkjA7nf3h2LHE9EUYJaZbSAMU081s1/HDSmqLcAWd2/uGZ1HSMry1aXAG+6+y92PAA8B74scUy7YYWYDAJL7nZHjicrMPglcCVzj+V0f6mzCF5YVyTV1ILDMzPpHjSoCJWHpngNGmNkwM+tKmFi7IHJM0ZiZEeb8rHH3H8SOJyZ3n+vuA919KOHv4il3z9ueDnffDmw2s1HJoWnA6oghxbYJuMDMeiT/b6aRxwsVUiwArkseXwfMjxhLVGZ2OWE6wyx3r4sdT0zuvtLd+7r70OSaugV4V3JdyStKwlIkkyY/DywkXED/x91XxY0qqinAtYRen+XJbUbsoCRnfAG438xeAiYC34kcTzRJj+A8YBmwknBtzauK4Gb2APBXYJSZbTGzTwPfAz5oZusJvYXfixljtrTRFj8GegKPJ9fSn0UNMovaaA9BFfNFREREolBPmIiIiEgESsJEREREIlASJiIiIhKBkjARERGRCJSEiYiIiESgJExE5DiZ2SVm9kjsOESkc1ASJiIiIhKBkjAR6XTM7BNm9rekKObPzazQzA6a2e1mtsrMnjSziuTciWb2rJm9ZGYPJ/tAYmbDzewJM1thZsvM7Ozk7UvNbJ6ZrTWz+5MK+SIiJ0xJmIh0KmY2BvgYMMXdJwKNwDVACfC8u48DFgP/mvzIr4B/dvfxhGr3zcfvB37i7hMI+0BuS45PAm4CxgJnEXaWEBE5YUWxAxAROc2mAZOB55JOqu6EjaObgAeTc34NPGRmZUC5uy9Ojt8H/NbMegJV7v4wgLu/BZC839/cfUvyfDkwFHi6/X8tEelslISJSGdjwH3uPjftoNk3Wp13snu2HU553IiuoyJykjQcKSKdzZPAh82sL4CZnWFmQwjXuw8n53wceNrd9wF7zeyi5Pi1wGJ3PwBsMbM5yXsUm1mPrP4WItLp6RuciHQq7r7azL4OLDKzAuAI8DmgFnhP8tpOwrwxgOuAnyVJ1uvA9cnxa4Gfm9m3kvf4SBZ/DRHJA+Z+sj3yIiIdh5kddPfS2HGIiDTTcKSIiIhIBOoJExEREYlAPWEiIiIiESgJExEREYlASZiIiIhIBErCRERERCJQEiYiIiISgZIwERERkQj+Hwq8fdeRRYvcAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"fTzgGkpm3JwM"},"source":["## Train the net\n","By training the three-layer convolutional network for one epoch, you should achieve greater than 40% accuracy on the training set:"]},{"cell_type":"code","metadata":{"scrolled":false,"id":"raY8bsg23JwM","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794816315,"user_tz":-60,"elapsed":507683,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"bd95d7d4-a80c-4da9-e329-a07ce0e36859"},"source":["model = ThreeLayerConvNet(weight_scale=0.001, hidden_dim=500, reg=0.001)\n","\n","solver = Solver(model, data,\n"," num_epochs=1, batch_size=50,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 1e-3,\n"," },\n"," verbose=True, print_every=20)\n","solver.train()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["(Iteration 1 / 980) loss: 2.304740\n","(Epoch 0 / 1) train acc: 0.103000; val_acc: 0.107000\n","(Iteration 21 / 980) loss: 2.304885\n","(Iteration 41 / 980) loss: 4.342038\n","(Iteration 61 / 980) loss: 2.436600\n","(Iteration 81 / 980) loss: 2.297557\n","(Iteration 101 / 980) loss: 2.195027\n","(Iteration 121 / 980) loss: 2.281718\n","(Iteration 141 / 980) loss: 2.148271\n","(Iteration 161 / 980) loss: 2.193495\n","(Iteration 181 / 980) loss: 2.118286\n","(Iteration 201 / 980) loss: 2.163260\n","(Iteration 221 / 980) loss: 2.096236\n","(Iteration 241 / 980) loss: 1.914950\n","(Iteration 261 / 980) loss: 1.766880\n","(Iteration 281 / 980) loss: 2.059285\n","(Iteration 301 / 980) loss: 1.928638\n","(Iteration 321 / 980) loss: 1.866128\n","(Iteration 341 / 980) loss: 1.753471\n","(Iteration 361 / 980) loss: 1.671797\n","(Iteration 381 / 980) loss: 1.694730\n","(Iteration 401 / 980) loss: 1.826622\n","(Iteration 421 / 980) loss: 1.789596\n","(Iteration 441 / 980) loss: 1.767580\n","(Iteration 461 / 980) loss: 1.798951\n","(Iteration 481 / 980) loss: 1.590641\n","(Iteration 501 / 980) loss: 1.465927\n","(Iteration 521 / 980) loss: 1.630173\n","(Iteration 541 / 980) loss: 1.704177\n","(Iteration 561 / 980) loss: 1.610670\n","(Iteration 581 / 980) loss: 1.421287\n","(Iteration 601 / 980) loss: 1.487256\n","(Iteration 621 / 980) loss: 1.493511\n","(Iteration 641 / 980) loss: 1.555944\n","(Iteration 661 / 980) loss: 1.431901\n","(Iteration 681 / 980) loss: 1.865246\n","(Iteration 701 / 980) loss: 1.362652\n","(Iteration 721 / 980) loss: 1.555140\n","(Iteration 741 / 980) loss: 1.574991\n","(Iteration 761 / 980) loss: 1.602598\n","(Iteration 781 / 980) loss: 1.641704\n","(Iteration 801 / 980) loss: 1.666102\n","(Iteration 821 / 980) loss: 1.408135\n","(Iteration 841 / 980) loss: 1.520590\n","(Iteration 861 / 980) loss: 1.582832\n","(Iteration 881 / 980) loss: 1.532453\n","(Iteration 901 / 980) loss: 1.280710\n","(Iteration 921 / 980) loss: 1.597463\n","(Iteration 941 / 980) loss: 1.557402\n","(Iteration 961 / 980) loss: 1.671642\n","(Epoch 1 / 1) train acc: 0.498000; val_acc: 0.505000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"full_data_train_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794824541,"user_tz":-60,"elapsed":587,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8fed45f9-3e48-4ed2-ec77-4206655e4d18"},"source":["# Print final training accuracy\n","print(\n"," \"Full data training accuracy:\",\n"," solver.check_accuracy(small_data['X_train'], small_data['y_train'])\n",")"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Full data training accuracy: 0.49\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"full_data_validation_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612794828857,"user_tz":-60,"elapsed":2530,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b17128f4-c976-420f-fe63-6ac95bf3359b"},"source":["# Print final validation accuracy\n","print(\n"," \"Full data validation accuracy:\",\n"," solver.check_accuracy(data['X_val'], data['y_val'])\n",")"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Full data validation accuracy: 0.505\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"3g1Aburh3JwN"},"source":["## Visualize Filters\n","You can visualize the first-layer convolutional filters from the trained network by running the following:"]},{"cell_type":"code","metadata":{"id":"gdp49c7N3JwN","colab":{"base_uri":"https://localhost:8080/","height":303},"executionInfo":{"status":"ok","timestamp":1612794851732,"user_tz":-60,"elapsed":1188,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5e86f140-6f81-4cb7-9118-3b0fed90f76c"},"source":["from cs231n.vis_utils import visualize_grid\n","\n","grid = visualize_grid(model.params['W1'].transpose(0, 2, 3, 1))\n","plt.imshow(grid.astype('uint8'))\n","plt.axis('off')\n","plt.gcf().set_size_inches(5, 5)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"eC698nxW3JwN"},"source":["# Spatial Batch Normalization\n","We already saw that batch normalization is a very useful technique for training deep fully-connected networks. As proposed in the original paper (link in `BatchNormalization.ipynb`), batch normalization can also be used for convolutional networks, but we need to tweak it a bit; the modification will be called \"spatial batch normalization.\"\n","\n","Normally batch-normalization accepts inputs of shape `(N, D)` and produces outputs of shape `(N, D)`, where we normalize across the minibatch dimension `N`. For data coming from convolutional layers, batch normalization needs to accept inputs of shape `(N, C, H, W)` and produce outputs of shape `(N, C, H, W)` where the `N` dimension gives the minibatch size and the `(H, W)` dimensions give the spatial size of the feature map.\n","\n","If the feature map was produced using convolutions, then we expect every feature channel's statistics e.g. mean, variance to be relatively consistent both between different images, and different locations within the same image -- after all, every feature channel is produced by the same convolutional filter! Therefore spatial batch normalization computes a mean and variance for each of the `C` feature channels by computing statistics over the minibatch dimension `N` as well the spatial dimensions `H` and `W`.\n","\n","\n","[1] [Sergey Ioffe and Christian Szegedy, \"Batch Normalization: Accelerating Deep Network Training by Reducing\n","Internal Covariate Shift\", ICML 2015.](https://arxiv.org/abs/1502.03167)"]},{"cell_type":"markdown","metadata":{"id":"cB2kjQxD3JwN"},"source":["## Spatial batch normalization: forward\n","\n","In the file `cs231n/layers.py`, implement the forward pass for spatial batch normalization in the function `spatial_batchnorm_forward`. Check your implementation by running the following:"]},{"cell_type":"code","metadata":{"id":"hp-tgeEB3JwO","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612818292426,"user_tz":-60,"elapsed":1537,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"20669c68-c912-4821-f01b-47f8871b5b01"},"source":["np.random.seed(231)\n","# Check the training-time forward pass by checking means and variances\n","# of features both before and after spatial batch normalization\n","\n","N, C, H, W = 2, 3, 4, 5\n","x = 4 * np.random.randn(N, C, H, W) + 10\n","\n","print('Before spatial batch normalization:')\n","print(' Shape: ', x.shape)\n","print(' Means: ', x.mean(axis=(0, 2, 3)))\n","print(' Stds: ', x.std(axis=(0, 2, 3)))\n","\n","# Means should be close to zero and stds close to one\n","gamma, beta = np.ones(C), np.zeros(C)\n","bn_param = {'mode': 'train'}\n","out, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n","print('After spatial batch normalization:')\n","print(' Shape: ', out.shape)\n","print(' Means: ', out.mean(axis=(0, 2, 3)))\n","print(' Stds: ', out.std(axis=(0, 2, 3)))\n","\n","# Means should be close to beta and stds close to gamma\n","gamma, beta = np.asarray([3, 4, 5]), np.asarray([6, 7, 8])\n","out, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n","print('After spatial batch normalization (nontrivial gamma, beta):')\n","print(' Shape: ', out.shape)\n","print(' Means: ', out.mean(axis=(0, 2, 3)))\n","print(' Stds: ', out.std(axis=(0, 2, 3)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Before spatial batch normalization:\n"," Shape: (2, 3, 4, 5)\n"," Means: [9.33463814 8.90909116 9.11056338]\n"," Stds: [3.61447857 3.19347686 3.5168142 ]\n","After spatial batch normalization:\n"," Shape: (2, 3, 4, 5)\n"," Means: [ 5.85642645e-16 5.93969318e-16 -8.88178420e-17]\n"," Stds: [0.99999962 0.99999951 0.9999996 ]\n","After spatial batch normalization (nontrivial gamma, beta):\n"," Shape: (2, 3, 4, 5)\n"," Means: [6. 7. 8.]\n"," Stds: [2.99999885 3.99999804 4.99999798]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"uYtFa8Rc3JwO","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612818297456,"user_tz":-60,"elapsed":952,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"fafa210c-d341-4635-9520-ec226003c1d3"},"source":["np.random.seed(231)\n","# Check the test-time forward pass by running the training-time\n","# forward pass many times to warm up the running averages, and then\n","# checking the means and variances of activations after a test-time\n","# forward pass.\n","N, C, H, W = 10, 4, 11, 12\n","\n","bn_param = {'mode': 'train'}\n","gamma = np.ones(C)\n","beta = np.zeros(C)\n","for t in range(50):\n"," x = 2.3 * np.random.randn(N, C, H, W) + 13\n"," spatial_batchnorm_forward(x, gamma, beta, bn_param)\n","bn_param['mode'] = 'test'\n","x = 2.3 * np.random.randn(N, C, H, W) + 13\n","a_norm, _ = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n","\n","# Means should be close to zero and stds close to one, but will be\n","# noisier than training-time forward passes.\n","print('After spatial batch normalization (test-time):')\n","print(' means: ', a_norm.mean(axis=(0, 2, 3)))\n","print(' stds: ', a_norm.std(axis=(0, 2, 3)))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["After spatial batch normalization (test-time):\n"," means: [-0.08034378 0.07562855 0.05716351 0.04378368]\n"," stds: [0.96718413 1.02996788 1.02887272 1.00585232]\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_HLABFAH3JwO"},"source":["## Spatial batch normalization: backward\n","In the file `cs231n/layers.py`, implement the backward pass for spatial batch normalization in the function `spatial_batchnorm_backward`. Run the following to check your implementation using a numeric gradient check:"]},{"cell_type":"code","metadata":{"id":"-_8ATMr53JwO","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612818301348,"user_tz":-60,"elapsed":628,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b085fd0f-40e3-4492-8730-c5123441c0d1"},"source":["np.random.seed(231)\n","N, C, H, W = 2, 3, 4, 5\n","x = 5 * np.random.randn(N, C, H, W) + 12\n","gamma = np.random.randn(C)\n","beta = np.random.randn(C)\n","dout = np.random.randn(N, C, H, W)\n","\n","bn_param = {'mode': 'train'}\n","fx = lambda x: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n","fg = lambda a: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n","fb = lambda b: spatial_batchnorm_forward(x, gamma, beta, bn_param)[0]\n","\n","dx_num = eval_numerical_gradient_array(fx, x, dout)\n","da_num = eval_numerical_gradient_array(fg, gamma, dout)\n","db_num = eval_numerical_gradient_array(fb, beta, dout)\n","\n","#You should expect errors of magnitudes between 1e-12~1e-06\n","_, cache = spatial_batchnorm_forward(x, gamma, beta, bn_param)\n","dx, dgamma, dbeta = spatial_batchnorm_backward(dout, cache)\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dgamma error: ', rel_error(da_num, dgamma))\n","print('dbeta error: ', rel_error(db_num, dbeta))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["dx error: 3.083846820796372e-07\n","dgamma error: 7.09738489671469e-12\n","dbeta error: 3.275608725278405e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"lAKcjhkP3JwO"},"source":["# Group Normalization\n","In the previous notebook, we mentioned that Layer Normalization is an alternative normalization technique that mitigates the batch size limitations of Batch Normalization. However, as the authors of [2] observed, Layer Normalization does not perform as well as Batch Normalization when used with Convolutional Layers:\n","\n",">With fully connected layers, all the hidden units in a layer tend to make similar contributions to the final prediction, and re-centering and rescaling the summed inputs to a layer works well. However, the assumption of similar contributions is no longer true for convolutional neural networks. The large number of the hidden units whose\n","receptive fields lie near the boundary of the image are rarely turned on and thus have very different\n","statistics from the rest of the hidden units within the same layer.\n","\n","The authors of [3] propose an intermediary technique. In contrast to Layer Normalization, where you normalize over the entire feature per-datapoint, they suggest a consistent splitting of each per-datapoint feature into G groups, and a per-group per-datapoint normalization instead. \n","\n","

\n","\n","

\n","
Visual comparison of the normalization techniques discussed so far (image edited from [3])
\n","\n","Even though an assumption of equal contribution is still being made within each group, the authors hypothesize that this is not as problematic, as innate grouping arises within features for visual recognition. One example they use to illustrate this is that many high-performance handcrafted features in traditional Computer Vision have terms that are explicitly grouped together. Take for example Histogram of Oriented Gradients [4]-- after computing histograms per spatially local block, each per-block histogram is normalized before being concatenated together to form the final feature vector.\n","\n","You will now implement Group Normalization. Note that this normalization technique that you are to implement in the following cells was introduced and published to ECCV just in 2018 -- this truly is still an ongoing and excitingly active field of research!\n","\n","[2] [Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. \"Layer Normalization.\" stat 1050 (2016): 21.](https://arxiv.org/pdf/1607.06450.pdf)\n","\n","\n","[3] [Wu, Yuxin, and Kaiming He. \"Group Normalization.\" arXiv preprint arXiv:1803.08494 (2018).](https://arxiv.org/abs/1803.08494)\n","\n","\n","[4] [N. Dalal and B. Triggs. Histograms of oriented gradients for\n","human detection. In Computer Vision and Pattern Recognition\n","(CVPR), 2005.](https://ieeexplore.ieee.org/abstract/document/1467360/)"]},{"cell_type":"markdown","metadata":{"id":"cXJ4W9Oj3JwP"},"source":["## Group normalization: forward\n","\n","In the file `cs231n/layers.py`, implement the forward pass for group normalization in the function `spatial_groupnorm_forward`. Check your implementation by running the following:"]},{"cell_type":"code","metadata":{"id":"AhDdKL5m3JwP","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612878794422,"user_tz":-60,"elapsed":1104,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"421ccd94-653b-435e-cf00-4d6436038c15"},"source":["np.random.seed(231)\n","# Check the training-time forward pass by checking means and variances\n","# of features both before and after spatial batch normalization\n","\n","N, C, H, W = 2, 6, 4, 5\n","G = 2\n","x = 4 * np.random.randn(N, C, H, W) + 10\n","x_g = x.reshape((N*G,-1))\n","# print('Before spatial group normalization:')\n","# print(' Shape: ', x.shape)\n","# print(' Means: ', x_g.mean(axis=1))\n","# print(' Stds: ', x_g.std(axis=1))\n","\n","# Means should be close to zero and stds close to one\n","gamma, beta = np.ones((1,C,1,1)), np.zeros((1,C,1,1))\n","bn_param = {'mode': 'train'}\n","\n","out, _ = spatial_groupnorm_forward(x, gamma, beta, G, bn_param)\n","out_g = out.reshape((N*G,-1))\n","print('After spatial group normalization:')\n","print(' Shape: ', out.shape)\n","print(' Means: ', out_g.mean(axis=1))\n","print(' Stds: ', out_g.std(axis=1))"],"execution_count":20,"outputs":[{"output_type":"stream","text":["After spatial group normalization:\n"," Shape: (2, 6, 4, 5)\n"," Means: [-2.14643118e-16 5.25505565e-16 2.58126853e-16 -3.62672855e-16]\n"," Stds: [0.99999963 0.99999948 0.99999973 0.99999968]\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"yRU1iGQt3JwP"},"source":["## Spatial group normalization: backward\n","In the file `cs231n/layers.py`, implement the backward pass for spatial batch normalization in the function `spatial_groupnorm_backward`. Run the following to check your implementation using a numeric gradient check:"]},{"cell_type":"code","metadata":{"id":"JYHu5Xmk3JwP","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612880325840,"user_tz":-60,"elapsed":613,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3b028cea-235c-4566-8227-86c09f3c22a4"},"source":["np.random.seed(231)\n","N, C, H, W = 2, 6, 4, 5\n","G = 2\n","x = 5 * np.random.randn(N, C, H, W) + 12\n","gamma = np.random.randn(1,C,1,1)\n","beta = np.random.randn(1,C,1,1)\n","dout = np.random.randn(N, C, H, W)\n","\n","gn_param = {}\n","fx = lambda x: spatial_groupnorm_forward(x, gamma, beta, G, gn_param)[0]\n","fg = lambda a: spatial_groupnorm_forward(x, gamma, beta, G, gn_param)[0]\n","fb = lambda b: spatial_groupnorm_forward(x, gamma, beta, G, gn_param)[0]\n","\n","dx_num = eval_numerical_gradient_array(fx, x, dout)\n","da_num = eval_numerical_gradient_array(fg, gamma, dout)\n","db_num = eval_numerical_gradient_array(fb, beta, dout)\n","\n","_, cache = spatial_groupnorm_forward(x, gamma, beta, G, gn_param)\n","dx, dgamma, dbeta = spatial_groupnorm_backward(dout, cache)\n","#You should expect errors of magnitudes between 1e-12~1e-07\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dgamma error: ', rel_error(da_num, dgamma))\n","print('dbeta error: ', rel_error(db_num, dbeta))"],"execution_count":40,"outputs":[{"output_type":"stream","text":["dx error: 6.34590431845254e-08\n","dgamma error: 1.0546047434202244e-11\n","dbeta error: 3.810857316122484e-12\n"],"name":"stdout"}]}]} ================================================ FILE: cs231n/assignment2/Dropout.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Dropout.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pfrnxmxDp_8p","executionInfo":{"status":"ok","timestamp":1612704177859,"user_tz":-60,"elapsed":20990,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cfad69b5-2a00-409b-b03e-5e79025d7f9d"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment2/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"DRJBqhQ8p_8w"},"source":["# Dropout\n","Dropout [1] is a technique for regularizing neural networks by randomly setting some output activations to zero during the forward pass. In this exercise you will implement a dropout layer and modify your fully-connected network to optionally use dropout.\n","\n","[1] [Geoffrey E. Hinton et al, \"Improving neural networks by preventing co-adaptation of feature detectors\", arXiv 2012](https://arxiv.org/abs/1207.0580)"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"6L43KhnWp_8x","executionInfo":{"status":"ok","timestamp":1612704202322,"user_tz":-60,"elapsed":4288,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"7194b9e5-59de-4401-e0c4-420b3b44889e"},"source":["# As usual, a bit of setup\n","from __future__ import print_function\n","import time\n","import numpy as np\n","import matplotlib.pyplot as plt\n","from cs231n.classifiers.fc_net import *\n","from cs231n.data_utils import get_CIFAR10_data\n","from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n","from cs231n.solver import Solver\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["=========== You can safely ignore the message below if you are NOT working on ConvolutionalNetworks.ipynb ===========\n","\tYou will need to compile a Cython extension for a portion of this assignment.\n","\tThe instructions to do this will be given in a section of the notebook below.\n","\tThere will be an option for Colab users and another for Jupyter (local) users.\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"YCZNCQ-jp_8x","executionInfo":{"status":"ok","timestamp":1612704212952,"user_tz":-60,"elapsed":7267,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"0b2b1e9f-7b1f-4720-bf2f-f8f04257961b"},"source":["# Load the (preprocessed) CIFAR10 data.\n","\n","data = get_CIFAR10_data()\n","for k, v in data.items():\n"," print('%s: ' % k, v.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["X_train: (49000, 3, 32, 32)\n","y_train: (49000,)\n","X_val: (1000, 3, 32, 32)\n","y_val: (1000,)\n","X_test: (1000, 3, 32, 32)\n","y_test: (1000,)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"8BncxhN-p_8y"},"source":["# Dropout forward pass\n","In the file `cs231n/layers.py`, implement the forward pass for dropout. Since dropout behaves differently during training and testing, make sure to implement the operation for both modes.\n","\n","Once you have done so, run the cell below to test your implementation."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Ae76jrKBp_8y","executionInfo":{"status":"ok","timestamp":1612704514040,"user_tz":-60,"elapsed":1273,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c6449977-5f59-4ee6-a812-d3ce8d7cf6c1"},"source":["np.random.seed(231)\n","x = np.random.randn(500, 500) + 10\n","\n","for p in [0.25, 0.4, 0.7]:\n"," out, _ = dropout_forward(x, {'mode': 'train', 'p': p})\n"," out_test, _ = dropout_forward(x, {'mode': 'test', 'p': p})\n","\n"," print('Running tests with p = ', p)\n"," print('Mean of input: ', x.mean())\n"," print('Mean of train-time output: ', out.mean())\n"," print('Mean of test-time output: ', out_test.mean())\n"," print('Fraction of train-time output set to zero: ', (out == 0).mean())\n"," print('Fraction of test-time output set to zero: ', (out_test == 0).mean())\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Running tests with p = 0.25\n","Mean of input: 10.000207878477502\n","Mean of train-time output: 10.014059116977283\n","Mean of test-time output: 10.000207878477502\n","Fraction of train-time output set to zero: 0.749784\n","Fraction of test-time output set to zero: 0.0\n","\n","Running tests with p = 0.4\n","Mean of input: 10.000207878477502\n","Mean of train-time output: 9.977917658761159\n","Mean of test-time output: 10.000207878477502\n","Fraction of train-time output set to zero: 0.600796\n","Fraction of test-time output set to zero: 0.0\n","\n","Running tests with p = 0.7\n","Mean of input: 10.000207878477502\n","Mean of train-time output: 9.987811912159426\n","Mean of test-time output: 10.000207878477502\n","Fraction of train-time output set to zero: 0.30074\n","Fraction of test-time output set to zero: 0.0\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Xbg7kiXQp_8z"},"source":["# Dropout backward pass\n","In the file `cs231n/layers.py`, implement the backward pass for dropout. After doing so, run the following cell to numerically gradient-check your implementation."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"kY8KOvKJp_8z","executionInfo":{"status":"ok","timestamp":1612705196463,"user_tz":-60,"elapsed":756,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3a56d3e0-753c-4a13-98ce-15be7965fbae"},"source":["np.random.seed(231)\n","x = np.random.randn(10, 10) + 10\n","dout = np.random.randn(*x.shape)\n","\n","dropout_param = {'mode': 'train', 'p': 0.2, 'seed': 123}\n","out, cache = dropout_forward(x, dropout_param)\n","dx = dropout_backward(dout, cache)\n","dx_num = eval_numerical_gradient_array(lambda xx: dropout_forward(xx, dropout_param)[0], x, dout)\n","\n","# Error should be around e-10 or less\n","print('dx relative error: ', rel_error(dx, dx_num))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["dx relative error: 5.44560814873387e-11\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"78Fi0vFUp_8z"},"source":["## Inline Question 1:\n","What happens if we do not divide the values being passed through inverse dropout by `p` in the dropout layer? Why does that happen?\n","\n","## Answer:\n","- If we do not divide the values being passed through inverse dropout by `p` in the dropout layer, the output at test time will be different from the expected one at training time. It's like using a different neural network at test time than the one trained on our dataset.\n","\n","- I can explain why this will happen by returning to the original formula, in which, we multiply by `p` at test time. And since the two formulas are equivalent, the explanation will remain correct for the implementation that proceeds to divide by `p` at training time, and the test time keeps unchanged.\n","So, the goal at test time is to average the randomness defined (by introducing `p`) in training time, i.e. make it deterministic. As described in the [lecture 7](http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture7.pdf) (slide 68), it is done by multiplying by `p`."]},{"cell_type":"markdown","metadata":{"id":"67NsxTxtp_80"},"source":["# Fully-connected nets with Dropout\n","In the file `cs231n/classifiers/fc_net.py`, modify your implementation to use dropout. Specifically, if the constructor of the network receives a value that is not 1 for the `dropout` parameter, then the net should add a dropout layer immediately after every ReLU nonlinearity. After doing so, run the following to numerically gradient-check your implementation."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"PymU9PLRp_80","executionInfo":{"status":"ok","timestamp":1612706245410,"user_tz":-60,"elapsed":3219,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"50e66c25-ba91-4686-9624-b82873be5367"},"source":["np.random.seed(231)\n","N, D, H1, H2, C = 2, 15, 20, 30, 10\n","X = np.random.randn(N, D)\n","y = np.random.randint(C, size=(N,))\n","\n","for dropout in [1, 0.75, 0.5]:\n"," print('Running check with dropout = ', dropout)\n"," model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C,\n"," weight_scale=5e-2, dtype=np.float64,\n"," dropout=dropout, seed=123)\n","\n"," loss, grads = model.loss(X, y)\n"," print('Initial loss: ', loss)\n"," \n"," # Relative errors should be around e-6 or less; Note that it's fine\n"," # if for dropout=1 you have W2 error be on the order of e-5.\n"," for name in sorted(grads):\n"," f = lambda _: model.loss(X, y)[0]\n"," grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)\n"," print('%s relative error: %.2e' % (name, rel_error(grad_num, grads[name])))\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Running check with dropout = 1\n","Initial loss: 2.3004790897684924\n","W1 relative error: 1.48e-07\n","W2 relative error: 2.21e-05\n","W3 relative error: 3.53e-07\n","b1 relative error: 5.38e-09\n","b2 relative error: 2.09e-09\n","b3 relative error: 5.80e-11\n","\n","Running check with dropout = 0.75\n","Initial loss: 2.302371489704412\n","W1 relative error: 1.90e-07\n","W2 relative error: 4.76e-06\n","W3 relative error: 2.60e-08\n","b1 relative error: 4.73e-09\n","b2 relative error: 1.82e-09\n","b3 relative error: 1.70e-10\n","\n","Running check with dropout = 0.5\n","Initial loss: 2.3042759220785896\n","W1 relative error: 3.11e-07\n","W2 relative error: 1.84e-08\n","W3 relative error: 5.35e-08\n","b1 relative error: 5.37e-09\n","b2 relative error: 2.99e-09\n","b3 relative error: 1.13e-10\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"LFSfpb4Yp_81"},"source":["# Regularization experiment\n","As an experiment, we will train a pair of two-layer networks on 500 training examples: one will use no dropout, and one will use a keep probability of 0.25. We will then visualize the training and validation accuracies of the two networks over time."]},{"cell_type":"code","metadata":{"scrolled":false,"colab":{"base_uri":"https://localhost:8080/"},"id":"m_SYagOPp_81","executionInfo":{"status":"ok","timestamp":1612706321376,"user_tz":-60,"elapsed":44139,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5c2495c3-dab8-4874-98ff-5cbdc7ee9fe0"},"source":["# Train two identical nets, one with dropout and one without\n","np.random.seed(231)\n","num_train = 500\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","solvers = {}\n","dropout_choices = [1, 0.25]\n","for dropout in dropout_choices:\n"," model = FullyConnectedNet([500], dropout=dropout)\n"," print(dropout)\n","\n"," solver = Solver(model, small_data,\n"," num_epochs=25, batch_size=100,\n"," update_rule='adam',\n"," optim_config={\n"," 'learning_rate': 5e-4,\n"," },\n"," verbose=True, print_every=100)\n"," solver.train()\n"," solvers[dropout] = solver\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["1\n","(Iteration 1 / 125) loss: 7.856643\n","(Epoch 0 / 25) train acc: 0.260000; val_acc: 0.184000\n","(Epoch 1 / 25) train acc: 0.416000; val_acc: 0.258000\n","(Epoch 2 / 25) train acc: 0.482000; val_acc: 0.276000\n","(Epoch 3 / 25) train acc: 0.532000; val_acc: 0.277000\n","(Epoch 4 / 25) train acc: 0.600000; val_acc: 0.271000\n","(Epoch 5 / 25) train acc: 0.708000; val_acc: 0.299000\n","(Epoch 6 / 25) train acc: 0.722000; val_acc: 0.282000\n","(Epoch 7 / 25) train acc: 0.832000; val_acc: 0.255000\n","(Epoch 8 / 25) train acc: 0.880000; val_acc: 0.268000\n","(Epoch 9 / 25) train acc: 0.902000; val_acc: 0.277000\n","(Epoch 10 / 25) train acc: 0.898000; val_acc: 0.261000\n","(Epoch 11 / 25) train acc: 0.924000; val_acc: 0.263000\n","(Epoch 12 / 25) train acc: 0.960000; val_acc: 0.300000\n","(Epoch 13 / 25) train acc: 0.972000; val_acc: 0.314000\n","(Epoch 14 / 25) train acc: 0.972000; val_acc: 0.311000\n","(Epoch 15 / 25) train acc: 0.974000; val_acc: 0.315000\n","(Epoch 16 / 25) train acc: 0.994000; val_acc: 0.303000\n","(Epoch 17 / 25) train acc: 0.972000; val_acc: 0.306000\n","(Epoch 18 / 25) train acc: 0.994000; val_acc: 0.312000\n","(Epoch 19 / 25) train acc: 0.988000; val_acc: 0.314000\n","(Epoch 20 / 25) train acc: 0.996000; val_acc: 0.291000\n","(Iteration 101 / 125) loss: 0.000333\n","(Epoch 21 / 25) train acc: 0.990000; val_acc: 0.296000\n","(Epoch 22 / 25) train acc: 0.994000; val_acc: 0.297000\n","(Epoch 23 / 25) train acc: 0.988000; val_acc: 0.294000\n","(Epoch 24 / 25) train acc: 0.998000; val_acc: 0.302000\n","(Epoch 25 / 25) train acc: 0.984000; val_acc: 0.316000\n","\n","0.25\n","(Iteration 1 / 125) loss: 17.318478\n","(Epoch 0 / 25) train acc: 0.230000; val_acc: 0.177000\n","(Epoch 1 / 25) train acc: 0.378000; val_acc: 0.243000\n","(Epoch 2 / 25) train acc: 0.402000; val_acc: 0.254000\n","(Epoch 3 / 25) train acc: 0.502000; val_acc: 0.276000\n","(Epoch 4 / 25) train acc: 0.528000; val_acc: 0.298000\n","(Epoch 5 / 25) train acc: 0.562000; val_acc: 0.296000\n","(Epoch 6 / 25) train acc: 0.626000; val_acc: 0.291000\n","(Epoch 7 / 25) train acc: 0.622000; val_acc: 0.297000\n","(Epoch 8 / 25) train acc: 0.688000; val_acc: 0.313000\n","(Epoch 9 / 25) train acc: 0.712000; val_acc: 0.297000\n","(Epoch 10 / 25) train acc: 0.724000; val_acc: 0.306000\n","(Epoch 11 / 25) train acc: 0.768000; val_acc: 0.307000\n","(Epoch 12 / 25) train acc: 0.774000; val_acc: 0.284000\n","(Epoch 13 / 25) train acc: 0.828000; val_acc: 0.308000\n","(Epoch 14 / 25) train acc: 0.812000; val_acc: 0.346000\n","(Epoch 15 / 25) train acc: 0.850000; val_acc: 0.338000\n","(Epoch 16 / 25) train acc: 0.844000; val_acc: 0.307000\n","(Epoch 17 / 25) train acc: 0.858000; val_acc: 0.302000\n","(Epoch 18 / 25) train acc: 0.860000; val_acc: 0.318000\n","(Epoch 19 / 25) train acc: 0.884000; val_acc: 0.316000\n","(Epoch 20 / 25) train acc: 0.862000; val_acc: 0.315000\n","(Iteration 101 / 125) loss: 4.293572\n","(Epoch 21 / 25) train acc: 0.886000; val_acc: 0.330000\n","(Epoch 22 / 25) train acc: 0.898000; val_acc: 0.314000\n","(Epoch 23 / 25) train acc: 0.934000; val_acc: 0.323000\n","(Epoch 24 / 25) train acc: 0.918000; val_acc: 0.322000\n","(Epoch 25 / 25) train acc: 0.922000; val_acc: 0.324000\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":606},"id":"PZRZacXFp_81","executionInfo":{"status":"ok","timestamp":1612706327348,"user_tz":-60,"elapsed":1191,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d35de4d5-23e2-412d-f3b6-c439fffc80c2"},"source":["# Plot train and validation accuracies of the two models\n","\n","train_accs = []\n","val_accs = []\n","for dropout in dropout_choices:\n"," solver = solvers[dropout]\n"," train_accs.append(solver.train_acc_history[-1])\n"," val_accs.append(solver.val_acc_history[-1])\n","\n","plt.subplot(3, 1, 1)\n","for dropout in dropout_choices:\n"," plt.plot(solvers[dropout].train_acc_history, 'o', label='%.2f dropout' % dropout)\n","plt.title('Train accuracy')\n","plt.xlabel('Epoch')\n","plt.ylabel('Accuracy')\n","plt.legend(ncol=2, loc='lower right')\n"," \n","plt.subplot(3, 1, 2)\n","for dropout in dropout_choices:\n"," plt.plot(solvers[dropout].val_acc_history, 'o', label='%.2f dropout' % dropout)\n","plt.title('Val accuracy')\n","plt.xlabel('Epoch')\n","plt.ylabel('Accuracy')\n","plt.legend(ncol=2, loc='lower right')\n","\n","plt.gcf().set_size_inches(15, 15)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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SP/Ath3a+ge2sXzNxoIikiRJqg8mhNKe253/jkwKa+zhvv5RtUuSJKk23ve+9/GKV7yCI444YqfHZCYLFy7k0EMPZdasWfz4xz/evu+qq65i+vTpTJ8+nauuuuoF73fLLbfwjne8Y0xi3x1/93d/V9i9q+HGG29kxowZHHrooVx88cXDHvOZz3yGww8/nFmzZjFnzhweeuih7fvGjRvHkUceyZFHHslpp532gvd78MEHd/lZqbbPfvaz/Pa3vx2Ta5kU1tik9rZRtUuSJKk2zj33XG688cZdHnPDDTdw3333cd9993H55ZfzoQ99CIDHH3+cT3ziE/zoRz/ijjvu4BOf+ARPPPHEbsXxzDPP7NZ5o9VMSeG2bdv4yEc+wg033MCGDRv42te+xoYNG5533OzZs+nq6qK7u5t3vetd/M3f/M32fW1tbaxbt45169axevXq3Y6lVj8/k8IGtmjuDNrGj9uhrW38OBbNnVFQRJIkSY1n1dpejr34ZqYt/leOvfjmManPcPzxx3PAAQfs8phvfetbnHPOOUQEb3rTm+jr6+ORRx5hzZo1nHTSSRxwwAG87GUv46STTho2wbzxxhs57LDDOOqoo7j22mu3ty9dupSzzz6bY489lrPPPpsHH3yQE088cXuP1i9+8QuglLhecMEFdHZ28trXvpZvf/vbQGlO5nnnncfMmTOZPXs23/ve9wC48sorufDCC7ff5x3veAe33HILixcvpr+/nyOPPJI//dM/3ePv3ah1r4RLjoCl7aXX7pV7dLk77riDQw89lFe/+tXss88+nHnmmXzrW9963nEnnHAC++23HwBvetOb6OnpGdV97rrrLt7whjfwhje8gcsuu2x7+5VXXslpp53GiSeeyJw5c3j88ceZP38+s2bN4k1vehPd3d3Acz/n3//932f69Ol84QtfAEo90IsWLeKII45g5syZfP3rXwee35t84YUXcuWVV7JixQoefvhhTjjhBE444YTRfbOGYfXRGhusMmr1UUmSpN0zWLhvsE7DYOE+oOp/U/X29jJlypTt25MnT6a3t3en7ZWeeuopPvCBD3DzzTdz6KGH8u53v3uH/Rs2bODWW2+lra2NefPm8d73vpf3vve9XHHFFSxcuJBVq1YBpWGLd9xxB/fffz8nnHACmzZt4rLLLiMiWL9+Pffeey9ve9vb+NnPfrbT57j44ou59NJLWbdu3Vh8W0aneyVctxAGytOntm4ubQPMWrBblxzu+/+jH/1ol+d88Ytf5JRTTtm+/dRTT9HZ2cnee+/N4sWLmT9//vPOOe+887j00ks5/vjjWbRo0Q77fvzjH9Pd3c0BBxzARz/6UWbPns2qVau4+eabOeecc7Z/r7u7u7n99tv5zW9+w+zZszn11FO57bbbWLduHT/5yU949NFHOfroozn++ON3GvvChQv5zGc+w/e+9z0OPPDAEX2PdsWksADzZ3eYBEqSJO2mXRXuq+e/se69916mTZvG9OnTAXjPe97D5Zdfvn3/aaedRltbaUrRbbfdtr0n8eyzz95hmOOCBQvYa6+9mD59Oq9+9au59957ufXWW/noRz8KwGGHHcYhhxyyy6SwUDctey4hHDTQX2rfzaRwtL785S/T1dXF97///e1tDz30EB0dHTzwwAOceOKJzJw5k9e85jXb9/f19dHX17c9WTv77LO54YYbtu8f7CkGuPXWW/nmN78JwIknnshjjz3Gk08+CcDpp59OW1sbbW1tnHDCCdxxxx3ceuutnHXWWYwbN45XvvKVvPnNb+bOO+/kpS99adW/F+Dw0WKMcXe5JElSKymycF9HRwebN2/evt3T00NHR8dO20fjxS9+8YiOG1pdclfVJvfee2+effbZ7dujXaqgKrbuZMjmztpHYDTf/+9+97t88pOfZPXq1bzoRS/a4RoAr371q3nLW97C2rVrRxVDI//8TAprbbC7fOtmIJ/rLjcxlCRJGpEiC/eddtppXH311WQmt99+OxMmTOCggw5i7ty5fOc73+GJJ57giSee4Dvf+Q5z587d4dzDDjuMBx98kPvvvx+Ar33tazu9zx/8wR9wzTXXAPCVr3yF4447bvu+b3zjGzz77LPcf//9PPDAA8yYMYPjjjuOr3zlKwD87Gc/4xe/+AUzZsxg6tSprFu3jmeffZbNmzdzxx13bL/O+PHjGRgYGLPvzYhNmDy69hE4+uijue+++/j5z3/O7373O6655pphK4iuXbuWD37wg6xevZpXvOIV29ufeOIJnn76aQAeffRRfvjDH3L44YfvcG57ezvt7e3ceuutANu/38Op/HnccsstHHjggdt7/b71rW/x1FNP8dhjj3HLLbdw9NFHc9xxx/H1r3+dbdu2sWXLFn7wgx9wzDHHcMgh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3LE8YcIE2tvbuyyvtWXLFj7+8Y9z++23c+ihh/KBD3xgp/Xr1q3jrrvuoqmpidNOO41zzz2Xc889l2984xtcdNFFLF++HKh0W7z33nt59NFHmTlzJuvXr+eaa64hIli7di2/+MUveNe73sUvf/nLLq9jyZIlXH311axZs6Y/3pbeWbUYtu6ST2Pr5kr5tHl7dMjO3v+f/vSn3e7z9a9/nVNOOWXH8pYtW2hubmb48OEsXLiQuXPnvmqf8847j6uvvpoTTjiBBQsW7LTugQceoLW1lf3224+//Mu/ZMaMGSxfvpzbb7+dc845Z8d73drayj333MMf/vAHZsyYwXve8x7uvvtu1qxZw89+9jM2btzI0UcfzQknnNBl3S+66CK+9KUvcccddzB27NgevUfdsaVQkiRJdaVeE/f94he/YNKkSUyePJmI4MMf/vBO6+fMmUNTUyXPxN13380HP/hBAM4++2zuuuuuHdvNmzePvfbai8mTJ3PIIYfwi1/8grvuumvH8Q477DAOOuigboPCUj3XRetcV+UF+Jd/+RdaWlp2Cux+/etf09LSwre//W0+/elP8+ijj+60z6ZNm9i0adOOYO3ss8/eaX1HSzHAXXfdtWP9iSeeyNNPP83zzz8PwOmnn05TUxNjx45l5syZ3Hvvvdx1112cddZZDBs2jDe96U284x3v4L777ivs+ndlUFiGfu5DLUmS1EjKTNw3fvx4NmzYsGO5ra2N8ePHd1neG695zWt6tN2u2SW7yzY5fPhwtm/fvmO5t1MVFGL0hN6V90Bv3v9///d/54tf/CIrVqxgn3322ekYAIcccgjvfOc7Wb16da/qUM//foUGhRFxckQ8HBHrI2JhJ+tPiIgHIuLliHhfTfnMiFhT89gSEXOr65ZGxK9q1k0v8hr6XQF9qCVJkhpJmYn75syZw7e+9S0yk3vuuYfRo0ez//77M3v2bG677TaeffZZnn32WW677TZmz569076HHXYYjz/++I4WqO985ztdnuftb387N9xwAwDXX389xx9//I513/3ud9m+fTuPPvoojz32GFOmTOH444/n+uuvB+CXv/wlv/nNb5gyZQoHH3wwa9asYfv27WzYsIF77713x3FGjBjB1q1b++296bFZl8CIXQL4EU2V8j109NFH88gjj/CrX/2Kl156iRtuuKHTDKKrV6/mE5/4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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"sVlQMGLQp_82"},"source":["## Inline Question 2:\n","Compare the validation and training accuracies with and without dropout -- what do your results suggest about dropout as a regularizer?\n","\n","## Answer:\n","From the graphs above, we notice that:\n","- At **training time**: The accuracy is higher **without** using dropout (compared to the accuracy with using dropout), and that is less important.\n","- But, at **test time**: It's the inverse, accuracy is higher **with** using dropout, and that is the most important.\n","\n","We conclude that the dropout is an efficient regularizer, that helps to prevent overfitting of the neural networks."]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"JBu3iCbup_82"},"source":["## Inline Question 3:\n","Suppose we are training a deep fully-connected network for image classification, with dropout after hidden layers (parameterized by keep probability p). If we are concerned about overfitting, how should we modify p (if at all) when we decide to decrease the size of the hidden layers (that is, the number of nodes in each layer)?\n","\n","## Answer:\n","In my opinion, it will be better to keep `p` unchanged while decreasing layers size. And after computing training/test accuracies, if there is a big gap between the training/test accuracies (underfitting case), increase `p` (that is, increase the keep probability).\n","\n","Of course, I consider here that the layers size can be only decreased. So, re-increasing layers sizes and decreasing the keep probability `p` is not an option (question hypothesis)."]}]} ================================================ FILE: cs231n/assignment2/FullyConnectedNets.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"FullyConnectedNets.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vXSoK_7l6e4R","executionInfo":{"status":"ok","timestamp":1616352089703,"user_tz":-60,"elapsed":2023,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"a405ec16-b969-4dbf-b4ae-b10f4942b571"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment2/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":3,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"5QKqv7me6e4a"},"source":["# Fully-Connected Neural Nets\n","In the previous homework you implemented a fully-connected two-layer neural network on CIFAR-10. The implementation was simple but not very modular since the loss and gradient were computed in a single monolithic function. This is manageable for a simple two-layer network, but would become impractical as we move to bigger models. Ideally we want to build networks using a more modular design so that we can implement different layer types in isolation and then snap them together into models with different architectures."]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"tNpLWKxl6e4b"},"source":["In this exercise we will implement fully-connected networks using a more modular approach. For each layer we will implement a `forward` and a `backward` function. The `forward` function will receive inputs, weights, and other parameters and will return both an output and a `cache` object storing data needed for the backward pass, like this:\n","\n","```python\n","def layer_forward(x, w):\n"," \"\"\" Receive inputs x and weights w \"\"\"\n"," # Do some computations ...\n"," z = # ... some intermediate value\n"," # Do some more computations ...\n"," out = # the output\n"," \n"," cache = (x, w, z, out) # Values we need to compute gradients\n"," \n"," return out, cache\n","```\n","\n","The backward pass will receive upstream derivatives and the `cache` object, and will return gradients with respect to the inputs and weights, like this:\n","\n","```python\n","def layer_backward(dout, cache):\n"," \"\"\"\n"," Receive dout (derivative of loss with respect to outputs) and cache,\n"," and compute derivative with respect to inputs.\n"," \"\"\"\n"," # Unpack cache values\n"," x, w, z, out = cache\n"," \n"," # Use values in cache to compute derivatives\n"," dx = # Derivative of loss with respect to x\n"," dw = # Derivative of loss with respect to w\n"," \n"," return dx, dw\n","```\n","\n","After implementing a bunch of layers this way, we will be able to easily combine them to build classifiers with different architectures.\n","\n","In addition to implementing fully-connected networks of arbitrary depth, we will also explore different update rules for optimization, and introduce Dropout as a regularizer and Batch/Layer Normalization as a tool to more efficiently optimize deep networks.\n"," "]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"PRBSw5jZ6e4c","executionInfo":{"status":"ok","timestamp":1616352095581,"user_tz":-60,"elapsed":2028,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"70cb8989-0c7e-420f-f7be-2be4cfaf3e11"},"source":["# As usual, a bit of setup\n","from __future__ import print_function\n","import time\n","import numpy as np\n","import matplotlib.pyplot as plt\n","from cs231n.classifiers.fc_net import *\n","from cs231n.data_utils import get_CIFAR10_data\n","from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n","from cs231n.solver import Solver\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"],"execution_count":4,"outputs":[{"output_type":"stream","text":["=========== You can safely ignore the message below if you are NOT working on ConvolutionalNetworks.ipynb ===========\n","\tYou will need to compile a Cython extension for a portion of this assignment.\n","\tThe instructions to do this will be given in a section of the notebook below.\n","\tThere will be an option for Colab users and another for Jupyter (local) users.\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/"},"id":"N0LMWgTK6e4c","executionInfo":{"status":"ok","timestamp":1616352104749,"user_tz":-60,"elapsed":6426,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"86273c83-ec64-4d05-af05-68053e25258f"},"source":["# Load the (preprocessed) CIFAR10 data.\n","\n","data = get_CIFAR10_data()\n","for k, v in list(data.items()):\n"," print(('%s: ' % k, v.shape))"],"execution_count":5,"outputs":[{"output_type":"stream","text":["('X_train: ', (49000, 3, 32, 32))\n","('y_train: ', (49000,))\n","('X_val: ', (1000, 3, 32, 32))\n","('y_val: ', (1000,))\n","('X_test: ', (1000, 3, 32, 32))\n","('y_test: ', (1000,))\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"KTLvACOC6e4d"},"source":["# Affine layer: forward\n","Open the file `cs231n/layers.py` and implement the `affine_forward` function.\n","\n","Once you are done you can test your implementaion by running the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5DbX3bvm6e4d","executionInfo":{"status":"ok","timestamp":1616352109522,"user_tz":-60,"elapsed":758,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8b8ea0f3-f49f-4ed8-d7f4-a1ecf73757e6"},"source":["# Test the affine_forward function\n","\n","num_inputs = 2\n","input_shape = (4, 5, 6)\n","output_dim = 3\n","\n","input_size = num_inputs * np.prod(input_shape)\n","weight_size = output_dim * np.prod(input_shape)\n","\n","x = np.linspace(-0.1, 0.5, num=input_size).reshape(num_inputs, *input_shape)\n","w = np.linspace(-0.2, 0.3, num=weight_size).reshape(np.prod(input_shape), output_dim)\n","b = np.linspace(-0.3, 0.1, num=output_dim)\n","\n","out, _ = affine_forward(x, w, b)\n","correct_out = np.array([[ 1.49834967, 1.70660132, 1.91485297],\n"," [ 3.25553199, 3.5141327, 3.77273342]])\n","\n","# Compare your output with ours. The error should be around e-9 or less.\n","print('Testing affine_forward function:')\n","print('difference: ', rel_error(out, correct_out))"],"execution_count":6,"outputs":[{"output_type":"stream","text":["Testing affine_forward function:\n","difference: 9.769849468192957e-10\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"KnjPBdAE6e4e"},"source":["# Affine layer: backward\n","Now implement the `affine_backward` function and test your implementation using numeric gradient checking."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"KBkX9RyS6e4e","executionInfo":{"status":"ok","timestamp":1616343057642,"user_tz":-60,"elapsed":1062,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3ae83318-e163-4615-c880-80fc6c961358"},"source":["# Test the affine_backward function\n","np.random.seed(231)\n","x = np.random.randn(10, 2, 3)\n","w = np.random.randn(6, 5)\n","b = np.random.randn(5)\n","dout = np.random.randn(10, 5)\n","\n","dx_num = eval_numerical_gradient_array(lambda x: affine_forward(x, w, b)[0], x, dout)\n","dw_num = eval_numerical_gradient_array(lambda w: affine_forward(x, w, b)[0], w, dout)\n","db_num = eval_numerical_gradient_array(lambda b: affine_forward(x, w, b)[0], b, dout)\n","\n","_, cache = affine_forward(x, w, b)\n","dx, dw, db = affine_backward(dout, cache)\n","\n","# The error should be around e-10 or less\n","print('Testing affine_backward function:')\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dw error: ', rel_error(dw_num, dw))\n","print('db error: ', rel_error(db_num, db))"],"execution_count":5,"outputs":[{"output_type":"stream","text":["Testing affine_backward function:\n","dx error: 5.399100368651805e-11\n","dw error: 9.904211865398145e-11\n","db error: 2.4122867568119087e-11\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"UsHcjAaR6e4f"},"source":["# ReLU activation: forward\n","Implement the forward pass for the ReLU activation function in the `relu_forward` function and test your implementation using the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"U5v1vyA86e4g","executionInfo":{"status":"ok","timestamp":1616343060396,"user_tz":-60,"elapsed":889,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"93a5405c-d14c-4e64-f5be-3b2290808b85"},"source":["# Test the relu_forward function\n","\n","x = np.linspace(-0.5, 0.5, num=12).reshape(3, 4)\n","\n","out, _ = relu_forward(x)\n","correct_out = np.array([[ 0., 0., 0., 0., ],\n"," [ 0., 0., 0.04545455, 0.13636364,],\n"," [ 0.22727273, 0.31818182, 0.40909091, 0.5, ]])\n","\n","# Compare your output with ours. The error should be on the order of e-8\n","print('Testing relu_forward function:')\n","print('difference: ', rel_error(out, correct_out))"],"execution_count":6,"outputs":[{"output_type":"stream","text":["Testing relu_forward function:\n","difference: 4.999999798022158e-08\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"AhXkZzZB6e4h"},"source":["# ReLU activation: backward\n","Now implement the backward pass for the ReLU activation function in the `relu_backward` function and test your implementation using numeric gradient checking:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nFvwFIwD6e4i","executionInfo":{"status":"ok","timestamp":1616343063712,"user_tz":-60,"elapsed":933,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"c88a7dce-c1cc-41f4-e335-114489bfbf47"},"source":["np.random.seed(231)\n","x = np.random.randn(10, 10)\n","dout = np.random.randn(*x.shape)\n","\n","dx_num = eval_numerical_gradient_array(lambda x: relu_forward(x)[0], x, dout)\n","\n","_, cache = relu_forward(x)\n","dx = relu_backward(dout, cache)\n","\n","# The error should be on the order of e-12\n","print('Testing relu_backward function:')\n","print('dx error: ', rel_error(dx_num, dx))"],"execution_count":7,"outputs":[{"output_type":"stream","text":["Testing relu_backward function:\n","dx error: 3.2756349136310288e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"t3tPd2VH6e4i"},"source":["## Inline Question 1: \n","\n","We've only asked you to implement ReLU, but there are a number of different activation functions that one could use in neural networks, each with its pros and cons. In particular, an issue commonly seen with activation functions is getting zero (or close to zero) gradient flow during backpropagation. Which of the following activation functions have this problem? If you consider these functions in the one dimensional case, what types of input would lead to this behaviour?\n","1. Sigmoid\n","2. ReLU\n","3. Leaky ReLU\n","\n","## Answer:\n","Activation functions that lead the gradient to get zero (or close to it) are **Sigmoid** and **ReLU**.\n","\n","Note that these activation functions could lead the gradient to zero partially or totally, it depends on the input values.\n","\n","One dimensional input that leads to this behavior:\n","- For the **Sigmoid**: Whatever neuron values will be (positive or negative, small or large), this activation function could lead the gradient to get zero (or close), a.k.a. Vanishing gradients. For that, any \"random\" example is correct, e.g. the input equals $[10, 3, 0.1, -0.05, -1, -5, ...]$.\n","- For the **ReLU**: By its definition, when neuron values are negative, e.g. the input equals $[-0.1, -0.5, -0.7, ...]$."]},{"cell_type":"markdown","metadata":{"id":"ARlWkAkk6e4j"},"source":["# \"Sandwich\" layers\n","There are some common patterns of layers that are frequently used in neural nets. For example, affine layers are frequently followed by a ReLU nonlinearity. To make these common patterns easy, we define several convenience layers in the file `cs231n/layer_utils.py`.\n","\n","For now take a look at the `affine_relu_forward` and `affine_relu_backward` functions, and run the following to numerically gradient check the backward pass:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nnIfVpCq6e4j","executionInfo":{"status":"ok","timestamp":1616343069123,"user_tz":-60,"elapsed":897,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"13adc039-0aac-4686-e6fa-0fc9518c0e31"},"source":["from cs231n.layer_utils import affine_relu_forward, affine_relu_backward\n","np.random.seed(231)\n","x = np.random.randn(2, 3, 4)\n","w = np.random.randn(12, 10)\n","b = np.random.randn(10)\n","dout = np.random.randn(2, 10)\n","\n","out, cache = affine_relu_forward(x, w, b)\n","dx, dw, db = affine_relu_backward(dout, cache)\n","\n","dx_num = eval_numerical_gradient_array(lambda x: affine_relu_forward(x, w, b)[0], x, dout)\n","dw_num = eval_numerical_gradient_array(lambda w: affine_relu_forward(x, w, b)[0], w, dout)\n","db_num = eval_numerical_gradient_array(lambda b: affine_relu_forward(x, w, b)[0], b, dout)\n","\n","# Relative error should be around e-10 or less\n","print('Testing affine_relu_forward and affine_relu_backward:')\n","print('dx error: ', rel_error(dx_num, dx))\n","print('dw error: ', rel_error(dw_num, dw))\n","print('db error: ', rel_error(db_num, db))"],"execution_count":8,"outputs":[{"output_type":"stream","text":["Testing affine_relu_forward and affine_relu_backward:\n","dx error: 2.299579177309368e-11\n","dw error: 8.162011105764925e-11\n","db error: 7.826724021458994e-12\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"SK-h9CRz6e4j"},"source":["# Loss layers: Softmax and SVM\n","You implemented these loss functions in the last assignment, so we'll give them to you for free here. You should still make sure you understand how they work by looking at the implementations in `cs231n/layers.py`.\n","\n","You can make sure that the implementations are correct by running the following:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Nrop5UXF6e4k","executionInfo":{"status":"ok","timestamp":1616343072688,"user_tz":-60,"elapsed":885,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"6ebb06e1-e87b-4b47-9762-6566d9c3ac16"},"source":["np.random.seed(231)\n","num_classes, num_inputs = 10, 50\n","x = 0.001 * np.random.randn(num_inputs, num_classes)\n","y = np.random.randint(num_classes, size=num_inputs)\n","\n","dx_num = eval_numerical_gradient(lambda x: svm_loss(x, y)[0], x, verbose=False)\n","loss, dx = svm_loss(x, y)\n","\n","# Test svm_loss function. Loss should be around 9 and dx error should be around the order of e-9\n","print('Testing svm_loss:')\n","print('loss: ', loss)\n","print('dx error: ', rel_error(dx_num, dx))\n","\n","dx_num = eval_numerical_gradient(lambda x: softmax_loss(x, y)[0], x, verbose=False)\n","loss, dx = softmax_loss(x, y)\n","\n","# Test softmax_loss function. Loss should be close to 2.3 and dx error should be around e-8\n","print('\\nTesting softmax_loss:')\n","print('loss: ', loss)\n","print('dx error: ', rel_error(dx_num, dx))"],"execution_count":9,"outputs":[{"output_type":"stream","text":["Testing svm_loss:\n","loss: 8.999602749096233\n","dx error: 1.4021566006651672e-09\n","\n","Testing softmax_loss:\n","loss: 2.302545844500738\n","dx error: 9.384673161989355e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"A9uMrfou6e4l"},"source":["# Two-layer network\n","In the previous assignment you implemented a two-layer neural network in a single monolithic class. Now that you have implemented modular versions of the necessary layers, you will reimplement the two layer network using these modular implementations.\n","\n","Open the file `cs231n/classifiers/fc_net.py` and complete the implementation of the `TwoLayerNet` class. This class will serve as a model for the other networks you will implement in this assignment, so read through it to make sure you understand the API. You can run the cell below to test your implementation."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"n05qKD9K6e4m","executionInfo":{"status":"ok","timestamp":1616343079234,"user_tz":-60,"elapsed":1221,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cdcca0d7-2d36-44a8-da13-5286523ec855"},"source":["np.random.seed(231)\n","N, D, H, C = 3, 5, 50, 7\n","X = np.random.randn(N, D)\n","y = np.random.randint(C, size=N)\n","\n","std = 1e-3\n","model = TwoLayerNet(input_dim=D, hidden_dim=H, num_classes=C, weight_scale=std)\n","\n","print('Testing initialization ... ')\n","W1_std = abs(model.params['W1'].std() - std)\n","b1 = model.params['b1']\n","W2_std = abs(model.params['W2'].std() - std)\n","b2 = model.params['b2']\n","assert W1_std < std / 10, 'First layer weights do not seem right'\n","assert np.all(b1 == 0), 'First layer biases do not seem right'\n","assert W2_std < std / 10, 'Second layer weights do not seem right'\n","assert np.all(b2 == 0), 'Second layer biases do not seem right'\n","\n","print('Testing test-time forward pass ... ')\n","model.params['W1'] = np.linspace(-0.7, 0.3, num=D*H).reshape(D, H)\n","model.params['b1'] = np.linspace(-0.1, 0.9, num=H)\n","model.params['W2'] = np.linspace(-0.3, 0.4, num=H*C).reshape(H, C)\n","model.params['b2'] = np.linspace(-0.9, 0.1, num=C)\n","X = np.linspace(-5.5, 4.5, num=N*D).reshape(D, N).T\n","scores = model.loss(X)\n","correct_scores = np.asarray(\n"," [[11.53165108, 12.2917344, 13.05181771, 13.81190102, 14.57198434, 15.33206765, 16.09215096],\n"," [12.05769098, 12.74614105, 13.43459113, 14.1230412, 14.81149128, 15.49994135, 16.18839143],\n"," [12.58373087, 13.20054771, 13.81736455, 14.43418138, 15.05099822, 15.66781506, 16.2846319 ]])\n","scores_diff = np.abs(scores - correct_scores).sum()\n","assert scores_diff < 1e-6, 'Problem with test-time forward pass'\n","\n","print('Testing training loss (no regularization)')\n","y = np.asarray([0, 5, 1])\n","loss, grads = model.loss(X, y)\n","correct_loss = 3.4702243556\n","assert abs(loss - correct_loss) < 1e-10, 'Problem with training-time loss'\n","\n","model.reg = 1.0\n","loss, grads = model.loss(X, y)\n","correct_loss = 26.5948426952\n","assert abs(loss - correct_loss) < 1e-10, 'Problem with regularization loss'\n","\n","# Errors should be around e-7 or less\n","for reg in [0.0, 0.7]:\n"," print('Running numeric gradient check with reg = ', reg)\n"," model.reg = reg\n"," loss, grads = model.loss(X, y)\n","\n"," for name in sorted(grads):\n"," f = lambda _: model.loss(X, y)[0]\n"," grad_num = eval_numerical_gradient(f, model.params[name], verbose=False)\n"," print('%s relative error: %.2e' % (name, rel_error(grad_num, grads[name])))"],"execution_count":10,"outputs":[{"output_type":"stream","text":["Testing initialization ... \n","Testing test-time forward pass ... \n","Testing training loss (no regularization)\n","Running numeric gradient check with reg = 0.0\n","W1 relative error: 1.52e-08\n","W2 relative error: 3.21e-10\n","b1 relative error: 8.37e-09\n","b2 relative error: 4.33e-10\n","Running numeric gradient check with reg = 0.7\n","W1 relative error: 2.53e-07\n","W2 relative error: 2.85e-08\n","b1 relative error: 1.56e-08\n","b2 relative error: 7.76e-10\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"tIdex2q56e4n"},"source":["# Solver\n","In the previous assignment, the logic for training models was coupled to the models themselves. Following a more modular design, for this assignment we have split the logic for training models into a separate class.\n","\n","Open the file `cs231n/solver.py` and read through it to familiarize yourself with the API. After doing so, use a `Solver` instance to train a `TwoLayerNet` that achieves at least `50%` accuracy on the validation set."]},{"cell_type":"code","metadata":{"id":"tln_solver_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612461885396,"user_tz":-60,"elapsed":715226,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"7a39f8c3-b236-48b8-c348-f940daa1bef6"},"source":["model = TwoLayerNet()\n","solver = None\n","\n","##############################################################################\n","# TODO: Use a Solver instance to train a TwoLayerNet that achieves at least #\n","# 50% accuracy on the validation set. #\n","##############################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# As explained in the course lectures, random search is a better strategy for\n","# hyperparameters tuning than the grid search.\n","def params_random_values(lr_range, reg_range, hidden_dim_range, epochs_range):\n"," lr = np.random.uniform(*lr_range)\n"," reg = np.random.uniform(*reg_range)\n"," hidden_dim = np.random.randint(*hidden_dim_range)\n"," epochs = np.random.randint(*epochs_range)\n","\n"," return lr, reg, hidden_dim, epochs\n","\n","# Define parameter values ranges for random search.\n","# Note that these ranges were adjusted during tests.\n","lr_range = (3e-4, 6e-4)\n","reg_range = (1, 2)\n","hidden_dim_range = (100, 200)\n","epochs_range = (10, 20)\n","\n","# Generate 5 random parameter values combinations.\n","# Note that combinations number was adjusted during tests.\n","test_params_values = []\n","for _ in range(5):\n"," curr_comb = params_random_values(lr_range, reg_range, hidden_dim_range, epochs_range)\n"," test_params_values.append(curr_comb)\n","\n","# Keep track of the best solver (such with the highest validation accuracy) during tests.\n","best_accuracy, best_solver = 0.0, None\n","\n","# Test each combination.\n","for idx, params_value in enumerate(test_params_values):\n"," lr, reg, hidden_dim, epochs = params_value\n","\n"," model = TwoLayerNet(reg=reg, hidden_dim=hidden_dim)\n"," solver = Solver(model, data,\n"," update_rule='sgd',\n"," optim_config={'learning_rate': lr},\n"," lr_decay=0.9, num_epochs=epochs,\n"," batch_size=100, verbose=False)\n","\n"," solver.train()\n","\n"," print('%2d) lr = %.2e | reg = %.3f | hidden_dim = %3d | epochs = %2d | ' \n"," % (idx+1, *params_value) + 'Accuracy = %.4f' % solver.best_val_acc)\n","\n"," if solver.best_val_acc > best_accuracy:\n"," best_accuracy = solver.best_val_acc\n"," best_solver = solver\n","\n","# Mark the best solver as the main one.\n","solver = best_solver\n","\n","print('\\nBest solver accuracy on the validation set is: %.4f' % solver.best_val_acc)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","##############################################################################\n","# END OF YOUR CODE #\n","##############################################################################"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" 1) lr = 3.85e-04 | reg = 1.418 | hidden_dim = 169 | epochs = 16 | Accuracy = 0.5120\n"," 2) lr = 5.33e-04 | reg = 1.191 | hidden_dim = 171 | epochs = 14 | Accuracy = 0.5300\n"," 3) lr = 3.70e-04 | reg = 1.388 | hidden_dim = 141 | epochs = 17 | Accuracy = 0.5090\n"," 4) lr = 3.48e-04 | reg = 2.006 | hidden_dim = 173 | epochs = 11 | Accuracy = 0.4930\n"," 5) lr = 2.66e-04 | reg = 1.816 | hidden_dim = 119 | epochs = 10 | Accuracy = 0.4910\n","\n","Best solver accuracy on the validation set is: 0.5300\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"KpUtXsgI6e4o","colab":{"base_uri":"https://localhost:8080/","height":730},"executionInfo":{"status":"ok","timestamp":1612461937263,"user_tz":-60,"elapsed":1065,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"847048ab-9b1d-4f67-c5db-f0f9f02e16b4"},"source":["# Run this cell to visualize training loss and train / val accuracy\n","\n","plt.subplot(2, 1, 1)\n","plt.title('Training loss')\n","plt.plot(solver.loss_history, 'o')\n","plt.xlabel('Iteration')\n","\n","plt.subplot(2, 1, 2)\n","plt.title('Accuracy')\n","plt.plot(solver.train_acc_history, '-o', label='train')\n","plt.plot(solver.val_acc_history, '-o', label='val')\n","plt.plot([0.5] * len(solver.val_acc_history), 'k--')\n","plt.xlabel('Epoch')\n","plt.legend(loc='lower right')\n","plt.gcf().set_size_inches(15, 12)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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anjdunWtjDtWB+7f1OkhEBERERER1ZlUfRQAXwTwbaXU5zRX+38B/FciMiAiKwHcg+petq7AXmlERERERJQmJhm17QA+AWBnrfz+jIh8WEQ+KSKfBACl1LcB/AWAbwL4OoA/Ukr9fWKjbrOJ6WKnh0BERERERH0kdI+aUuprCK5g71xvHMB4HINKm/HJWWbdiIiIiIiobSJVfexlQZEoG18TEREREVE7MVCr+eCdazs9BCIiIiIiIgAM1Ope+x6zZkRERERElA4M1Gouc3kjERERERGlBAO1mvX5XKeHQEREREREBICBWt3oro2dHgIREREREREABmp1I0MFLMvqaz8+MXGujaMhIiIiIqJ+xkDNZdVyfVu5Z19+vY0jISIiIiKifsZAzeXanK29rKJUG0dCRERERET9jIGaSyao6zWAieliewZCRERERER9jYGay2JI0mx8crY9AyEiIiIior7GQC0C9lojIiIiIqJ2YKDmks9ZgZez1xoREREREbUDAzWXgw9s0l4mYK81IiIiIiJqDwZqLiNDBTyybRDemiIC4OFtgxgZKnRiWERERERE1Gf0jcP61JMjmzF8+1qMT87icqmM9fkcRndtZJBGRERERERtw4waERERERFRyjBQ85iYLmL/8XMolspQAIqlMvYencETE+c6PTQiIiIiIuoTDNQ8xidnUbYrDX9TAJ45fQlDv/cSm14TEREREVHiGKh5FAN6pV2bs7H/+DkGa0RERERElCgGah5Z8dZ8bFS2KxifnG3TaIiIiIiIqB8xUPOoKBV6ncsBWTciIiIiIqJWMVDzCMuoAcD6fK4NIyEiIiIion7FQM0jLKOWs7IY3bWxTaMhIiIiIqJ+xEDNIyijlhHg8O7NbH5NRERERESJYqDmEZRRWz6QYZBGRERERESJY6DmUQjYf1a2F1man4iIiIiIEsdAzWN010YElRM59ML5to2FiIiIiIj6U2igJiK3ichJEfmWiJwXkd8OuO77RWRBRD4a7zDbZ2SogA/euVZ7+bU5u42jISIiIiKifjRgcJ0FAI8rpb4hIu8CcEZE/lIp9S33lUQkC+BfA3gpgXG2zcR0EV9/9Vqnh0FERERERH0sNKOmlHpDKfWN2n+/DeDbAPwqavwWgGMA3ox1hG02PjkLe1FfUMTiYlEiIiIiIkqYSUatTkQ2ABgC8LLn7wUA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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"XYhloSR86e4p"},"source":["# Multilayer network\n","Next you will implement a fully-connected network with an arbitrary number of hidden layers.\n","\n","Read through the `FullyConnectedNet` class in the file `cs231n/classifiers/fc_net.py`.\n","\n","Implement the initialization, the forward pass, and the backward pass. For the moment don't worry about implementing dropout or batch/layer normalization; we will add those features soon."]},{"cell_type":"markdown","metadata":{"id":"BQbU47MT6e4p"},"source":["## Initial loss and gradient check\n","\n","As a sanity check, run the following to check the initial loss and to gradient check the network both with and without regularization. Do the initial losses seem reasonable?\n","\n","For gradient checking, you should expect to see errors around 1e-7 or less."]},{"cell_type":"code","metadata":{"id":"cdH0FRuk6e4q","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616343131816,"user_tz":-60,"elapsed":2607,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"223727e5-82ab-4e68-8b23-8afa9cef6015"},"source":["np.random.seed(231)\n","N, D, H1, H2, C = 2, 15, 20, 30, 10\n","X = np.random.randn(N, D)\n","y = np.random.randint(C, size=(N,))\n","\n","for reg in [0, 3.14]:\n"," print('Running check with reg = ', reg)\n"," model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C,\n"," reg=reg, weight_scale=5e-2, dtype=np.float64)\n","\n"," loss, grads = model.loss(X, y)\n"," print('Initial loss: ', loss)\n"," \n"," # Most of the errors should be on the order of e-7 or smaller. \n"," # NOTE: It is fine however to see an error for W2 on the order of e-5\n"," # for the check when reg = 0.0\n"," for name in sorted(grads):\n"," f = lambda _: model.loss(X, y)[0]\n"," grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)\n"," print('%s relative error: %.2e' % (name, rel_error(grad_num, grads[name])))"],"execution_count":11,"outputs":[{"output_type":"stream","text":["Running check with reg = 0\n","Initial loss: 2.3004790897684924\n","W1 relative error: 1.48e-07\n","W2 relative error: 2.21e-05\n","W3 relative error: 3.53e-07\n","b1 relative error: 5.38e-09\n","b2 relative error: 2.09e-09\n","b3 relative error: 5.80e-11\n","Running check with reg = 3.14\n","Initial loss: 7.052114776533016\n","W1 relative error: 6.86e-09\n","W2 relative error: 3.52e-08\n","W3 relative error: 1.32e-08\n","b1 relative error: 1.48e-08\n","b2 relative error: 1.72e-09\n","b3 relative error: 1.80e-10\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Sr-8mTZo6e4q"},"source":["As another sanity check, make sure you can overfit a small dataset of 50 images. First we will try a three-layer network with 100 units in each hidden layer. In the following cell, tweak the **learning rate** and **weight initialization scale** to overfit and achieve 100% training accuracy within 20 epochs."]},{"cell_type":"code","metadata":{"scrolled":false,"id":"s2kyKTaT6e4s","colab":{"base_uri":"https://localhost:8080/","height":713},"executionInfo":{"status":"ok","timestamp":1616344360609,"user_tz":-60,"elapsed":15088,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"7953b900-4db6-47a3-aba9-6fdb554f8677"},"source":["# TODO: Use a three-layer Net to overfit 50 training examples by \n","# tweaking just the learning rate and initialization scale.\n","\n","num_train = 50\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","best_accuracy, best_solver = 0.0, None\n","\n","# Generate 10 random values of 'weight_scale' and 'learning_rate'.\n","# Note that the range (for both hyperparameters) was adjusted during tests.\n","num_combinations = 10\n","\n","weight_scale_values = np.random.uniform(9e-3, 1e-2, num_combinations)\n","learning_rate_values = np.random.uniform(7e-3, 9e-3, num_combinations)\n","\n","for idx in range(num_combinations):\n"," weight_scale = weight_scale_values[idx]\n"," learning_rate = learning_rate_values[idx]\n","\n"," model = FullyConnectedNet([100, 100],\n"," weight_scale=weight_scale, dtype=np.float64)\n"," solver = Solver(model, small_data,\n"," print_every=10, num_epochs=20, batch_size=25,\n"," update_rule='sgd',\n"," optim_config={\n"," 'learning_rate': learning_rate,\n"," },\n"," verbose=False\n"," )\n"," \n"," solver.train()\n","\n"," train_acc = solver.check_accuracy(small_data['X_train'], small_data['y_train'],\n"," batch_size=num_train)\n","\n"," print('%2d) weight_scale = %.2e | learning_rate = %.2e ' % (idx+1, weight_scale, learning_rate) +\n"," '| Accuracy = %.4f' % train_acc)\n","\n"," if train_acc > best_accuracy:\n"," best_accuracy = train_acc\n"," best_solver = solver\n","\n","solver = best_solver\n","print('\\nBest solver accuracy on the train set is: %.4f' % best_accuracy)\n","\n","plt.plot(solver.loss_history, 'o')\n","plt.title('Training loss history')\n","plt.xlabel('Iteration')\n","plt.ylabel('Training loss')\n","plt.show()"],"execution_count":31,"outputs":[{"output_type":"stream","text":[" 1) weight_scale = 9.96e-03 | learning_rate = 8.92e-03 | Accuracy = 0.8400\n"," 2) weight_scale = 9.45e-03 | learning_rate = 7.44e-03 | Accuracy = 0.9600\n"," 3) weight_scale = 9.09e-03 | learning_rate = 8.65e-03 | Accuracy = 0.7000\n"," 4) weight_scale = 9.21e-03 | learning_rate = 8.17e-03 | Accuracy = 0.9600\n"," 5) weight_scale = 9.81e-03 | learning_rate = 8.45e-03 | Accuracy = 0.9400\n"," 6) weight_scale = 9.88e-03 | learning_rate = 7.88e-03 | Accuracy = 1.0000\n"," 7) weight_scale = 9.37e-03 | learning_rate = 7.31e-03 | Accuracy = 1.0000\n"," 8) weight_scale = 9.60e-03 | learning_rate = 8.90e-03 | Accuracy = 0.7400\n"," 9) weight_scale = 9.40e-03 | learning_rate = 8.39e-03 | Accuracy = 0.9400\n","10) weight_scale = 9.50e-03 | learning_rate = 8.74e-03 | Accuracy = 0.9800\n","\n","Best solver accuracy on the train set is: 1.0000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"m2IfmatP6e4s"},"source":["Now try to use a five-layer network with 100 units on each layer to overfit 50 training examples. Again, you will have to adjust the learning rate and weight initialization scale, but you should be able to achieve 100% training accuracy within 20 epochs."]},{"cell_type":"code","metadata":{"id":"XKrICJRn6e4s","colab":{"base_uri":"https://localhost:8080/","height":713},"executionInfo":{"status":"ok","timestamp":1616343890741,"user_tz":-60,"elapsed":16976,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e5c09acf-2fc0-4ef5-d144-9044f31534fb"},"source":["# TODO: Use a five-layer Net to overfit 50 training examples by \n","# tweaking just the learning rate and initialization scale.\n","\n","num_train = 50\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","best_accuracy, best_solver = 0.0, None\n","\n","# Generate 10 random values of 'weight_scale' and 'learning_rate'.\n","# Note that the range (for both hyperparameters) was adjusted during tests.\n","num_combinations = 10\n","\n","weight_scale_values = np.random.uniform(9e-2, 1e-1, num_combinations)\n","learning_rate_values = np.random.uniform(1e-3, 4e-3, num_combinations)\n","\n","for idx in range(num_combinations):\n"," weight_scale = weight_scale_values[idx]\n"," learning_rate = learning_rate_values[idx]\n","\n"," model = FullyConnectedNet([100, 100, 100, 100],\n"," weight_scale=weight_scale, dtype=np.float64)\n"," solver = Solver(model, small_data,\n"," print_every=10, num_epochs=20, batch_size=25,\n"," update_rule='sgd',\n"," optim_config={\n"," 'learning_rate': learning_rate,\n"," },\n"," verbose=False\n"," )\n"," \n"," solver.train()\n","\n"," train_acc = solver.check_accuracy(small_data['X_train'], small_data['y_train'],\n"," batch_size=num_train)\n","\n"," print('%2d) weight_scale = %.2e | learning_rate = %.2e ' % (idx+1, weight_scale, learning_rate) +\n"," '| Accuracy = %.4f' % train_acc)\n","\n"," if train_acc > best_accuracy:\n"," best_accuracy = train_acc\n"," best_solver = solver\n","\n","solver = best_solver\n","print('\\nBest solver accuracy on the train set is: %.4f' % best_accuracy)\n","\n","plt.plot(solver.loss_history, 'o')\n","plt.title('Training loss history')\n","plt.xlabel('Iteration')\n","plt.ylabel('Training loss')\n","plt.show()"],"execution_count":28,"outputs":[{"output_type":"stream","text":[" 1) weight_scale = 9.26e-02 | learning_rate = 3.83e-03 | Accuracy = 0.7000\n"," 2) weight_scale = 9.59e-02 | learning_rate = 1.55e-03 | Accuracy = 0.2200\n"," 3) weight_scale = 9.48e-02 | learning_rate = 2.32e-03 | Accuracy = 0.8800\n"," 4) weight_scale = 9.76e-02 | learning_rate = 2.07e-03 | Accuracy = 0.9600\n"," 5) weight_scale = 9.71e-02 | learning_rate = 3.56e-03 | Accuracy = 0.4400\n"," 6) weight_scale = 9.44e-02 | learning_rate = 3.88e-03 | Accuracy = 0.9200\n"," 7) weight_scale = 9.38e-02 | learning_rate = 1.62e-03 | Accuracy = 1.0000\n"," 8) weight_scale = 9.15e-02 | learning_rate = 1.90e-03 | Accuracy = 0.9200\n"," 9) weight_scale = 9.26e-02 | learning_rate = 1.44e-03 | Accuracy = 1.0000\n","10) weight_scale = 9.88e-02 | learning_rate = 2.39e-03 | Accuracy = 0.1600\n","\n","Best solver accuracy on the train set is: 1.0000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"TiAXbzA16e4-"},"source":["## Inline Question 2: \n","Did you notice anything about the comparative difficulty of training the three-layer net vs training the five layer net? In particular, based on your experience, which network seemed more sensitive to the initialization scale? Why do you think that is the case?\n","\n","## Answer:\n","I run some tests on a range of the `weight_scale` parameter, from `1e-5` to `5e-1`. For the `learning_rate`, I picked the best one which allows overfitting a small dataset (individual for both **3-Layer** and **5-Layer** Nets). Results (validation accuracies) are shown in the table below.\n","\n","| Weight scale | 1e-5 | 5e-5 | 1e-4 | 5e-4 | 1e-3 | 5e-3 | 1e-2 | 5e-2 | 1e-1 | 5e-1 |\n","|:--------------------------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|\n","| 3-Layer Net (lr=7.44e-03) | 0.16 | 0.12 | 0.10 | 0.10 | 0.16 | 0.72 | 0.98 | 0.40 | 0.12 | 0.16 |\n","| 5-Layer Net (lr=2.00e-03) | 0.16 | 0.16 | 0.12 | 0.16 | 0.16 | 0.18 | 0.18 | 0.98 | 0.78 | - |\n","\n","From the table above, we cannot decide which network is more sensitive to the initialization scale. Thus, we have to analyze the evolution of the loss (in the two graphs above).\n","\n","From the two graphs above, we notice that the **5-Layer Net** is more difficult to train, because the loss decreases quickly. For that, the **5-Layer Net** is more sensitive to the initialization scale. That's due to the fact that the **5-Layer Net** has more layers, which can lead (in the worst scenario) to one of the two cases:\n","- The **low** (e.g. 1e-4) init scale can lead to the **vanishing gradients** problem, as we multiply by **small values** in the backpropgation.\n","- The **high** (e.g. 1e-1) init scale can lead to the **exploding gradients** problem, as we multiply by **big values** in the backpropagation.\n","\n","Note that these two cases are likely to occur in the **3-Layer Net** also, but the **5-Layer Net** is more prone to these issues."]},{"cell_type":"markdown","metadata":{"id":"D4Mm_Hf86e4-"},"source":["# Update rules\n","So far we have used vanilla stochastic gradient descent (SGD) as our update rule. More sophisticated update rules can make it easier to train deep networks. We will implement a few of the most commonly used update rules and compare them to vanilla SGD."]},{"cell_type":"markdown","metadata":{"id":"0zPfUlx66e4-"},"source":["# SGD+Momentum\n","Stochastic gradient descent with momentum is a widely used update rule that tends to make deep networks converge faster than vanilla stochastic gradient descent. See the Momentum Update section at http://cs231n.github.io/neural-networks-3/#sgd for more information.\n","\n","Open the file `cs231n/optim.py` and read the documentation at the top of the file to make sure you understand the API. Implement the SGD+momentum update rule in the function `sgd_momentum` and run the following to check your implementation. You should see errors less than e-8."]},{"cell_type":"code","metadata":{"id":"DL6wvk8L6e4_","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616348670626,"user_tz":-60,"elapsed":975,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"beb2fb0b-8faf-47a2-a392-a32dc36b817a"},"source":["from cs231n.optim import sgd_momentum\n","\n","N, D = 4, 5\n","w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n","dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n","v = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n","\n","config = {'learning_rate': 1e-3, 'velocity': v}\n","next_w, _ = sgd_momentum(w, dw, config=config)\n","\n","expected_next_w = np.asarray([\n"," [ 0.1406, 0.20738947, 0.27417895, 0.34096842, 0.40775789],\n"," [ 0.47454737, 0.54133684, 0.60812632, 0.67491579, 0.74170526],\n"," [ 0.80849474, 0.87528421, 0.94207368, 1.00886316, 1.07565263],\n"," [ 1.14244211, 1.20923158, 1.27602105, 1.34281053, 1.4096 ]])\n","expected_velocity = np.asarray([\n"," [ 0.5406, 0.55475789, 0.56891579, 0.58307368, 0.59723158],\n"," [ 0.61138947, 0.62554737, 0.63970526, 0.65386316, 0.66802105],\n"," [ 0.68217895, 0.69633684, 0.71049474, 0.72465263, 0.73881053],\n"," [ 0.75296842, 0.76712632, 0.78128421, 0.79544211, 0.8096 ]])\n","\n","# Should see relative errors around e-8 or less\n","print('next_w error: ', rel_error(next_w, expected_next_w))\n","print('velocity error: ', rel_error(expected_velocity, config['velocity']))"],"execution_count":32,"outputs":[{"output_type":"stream","text":["next_w error: 8.882347033505819e-09\n","velocity error: 4.269287743278663e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"lDaHzWI36e5A"},"source":["Once you have done so, run the following to train a six-layer network with both SGD and SGD+momentum. You should see the SGD+momentum update rule converge faster."]},{"cell_type":"code","metadata":{"scrolled":false,"id":"YsLEPP_46e5A","colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"status":"ok","timestamp":1612473276942,"user_tz":-60,"elapsed":8668,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"47758191-b438-48fe-a810-b466e9aaa698"},"source":["num_train = 4000\n","small_data = {\n"," 'X_train': data['X_train'][:num_train],\n"," 'y_train': data['y_train'][:num_train],\n"," 'X_val': data['X_val'],\n"," 'y_val': data['y_val'],\n","}\n","\n","solvers = {}\n","\n","for update_rule in ['sgd', 'sgd_momentum']:\n"," print('running with ', update_rule)\n"," model = FullyConnectedNet([100, 100, 100, 100, 100], weight_scale=5e-2)\n","\n"," solver = Solver(model, small_data,\n"," num_epochs=5, batch_size=100,\n"," update_rule=update_rule,\n"," optim_config={\n"," 'learning_rate': 5e-3,\n"," },\n"," verbose=True)\n"," solvers[update_rule] = solver\n"," solver.train()\n"," print()\n","\n","plt.subplot(3, 1, 1)\n","plt.title('Training loss')\n","plt.xlabel('Iteration')\n","\n","plt.subplot(3, 1, 2)\n","plt.title('Training accuracy')\n","plt.xlabel('Epoch')\n","\n","plt.subplot(3, 1, 3)\n","plt.title('Validation accuracy')\n","plt.xlabel('Epoch')\n","\n","for update_rule, solver in solvers.items():\n"," plt.subplot(3, 1, 1)\n"," plt.plot(solver.loss_history, 'o', label=\"loss_%s\" % update_rule)\n"," \n"," plt.subplot(3, 1, 2)\n"," plt.plot(solver.train_acc_history, '-o', label=\"train_acc_%s\" % update_rule)\n","\n"," plt.subplot(3, 1, 3)\n"," plt.plot(solver.val_acc_history, '-o', label=\"val_acc_%s\" % update_rule)\n"," \n","for i in [1, 2, 3]:\n"," plt.subplot(3, 1, i)\n"," plt.legend(loc='upper center', ncol=4)\n","plt.gcf().set_size_inches(15, 15)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["running with sgd\n","(Iteration 1 / 200) loss: 2.460194\n","(Epoch 0 / 5) train acc: 0.122000; val_acc: 0.105000\n","(Iteration 11 / 200) loss: 2.270591\n","(Iteration 21 / 200) loss: 2.274979\n","(Iteration 31 / 200) loss: 2.165625\n","(Epoch 1 / 5) train acc: 0.216000; val_acc: 0.216000\n","(Iteration 41 / 200) loss: 2.139597\n","(Iteration 51 / 200) loss: 2.097792\n","(Iteration 61 / 200) loss: 1.997002\n","(Iteration 71 / 200) loss: 2.042961\n","(Epoch 2 / 5) train acc: 0.279000; val_acc: 0.266000\n","(Iteration 81 / 200) loss: 2.069637\n","(Iteration 91 / 200) loss: 2.031380\n","(Iteration 101 / 200) loss: 1.981451\n","(Iteration 111 / 200) loss: 1.991929\n","(Epoch 3 / 5) train acc: 0.307000; val_acc: 0.292000\n","(Iteration 121 / 200) loss: 1.911158\n","(Iteration 131 / 200) loss: 1.953267\n","(Iteration 141 / 200) loss: 2.105554\n","(Iteration 151 / 200) loss: 2.109657\n","(Epoch 4 / 5) train acc: 0.338000; val_acc: 0.304000\n","(Iteration 161 / 200) loss: 1.882566\n","(Iteration 171 / 200) loss: 1.768357\n","(Iteration 181 / 200) loss: 1.800674\n","(Iteration 191 / 200) loss: 1.796057\n","(Epoch 5 / 5) train acc: 0.349000; val_acc: 0.305000\n","\n","running with sgd_momentum\n","(Iteration 1 / 200) loss: 2.869109\n","(Epoch 0 / 5) train acc: 0.124000; val_acc: 0.124000\n","(Iteration 11 / 200) loss: 2.211370\n","(Iteration 21 / 200) loss: 2.070362\n","(Iteration 31 / 200) loss: 1.928417\n","(Epoch 1 / 5) train acc: 0.337000; val_acc: 0.295000\n","(Iteration 41 / 200) loss: 1.956824\n","(Iteration 51 / 200) loss: 1.925771\n","(Iteration 61 / 200) loss: 1.732797\n","(Iteration 71 / 200) loss: 1.704392\n","(Epoch 2 / 5) train acc: 0.419000; val_acc: 0.330000\n","(Iteration 81 / 200) loss: 1.663840\n","(Iteration 91 / 200) loss: 1.515460\n","(Iteration 101 / 200) loss: 1.520019\n","(Iteration 111 / 200) loss: 1.574483\n","(Epoch 3 / 5) train acc: 0.456000; val_acc: 0.327000\n","(Iteration 121 / 200) loss: 1.706847\n","(Iteration 131 / 200) loss: 1.336883\n","(Iteration 141 / 200) loss: 1.473617\n","(Iteration 151 / 200) loss: 1.483828\n","(Epoch 4 / 5) train acc: 0.522000; val_acc: 0.331000\n","(Iteration 161 / 200) loss: 1.268828\n","(Iteration 171 / 200) loss: 1.474310\n","(Iteration 181 / 200) loss: 1.473248\n","(Iteration 191 / 200) loss: 1.368022\n","(Epoch 5 / 5) train acc: 0.558000; val_acc: 0.365000\n","\n"],"name":"stdout"},{"output_type":"stream","text":["/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:39: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:42: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:45: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:49: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n"],"name":"stderr"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA3AAAANsCAYAAAAa/ko3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZwdZZU//s/pTidpSEgHiCydxER/EZQkEOiEccISiCyKQIjfXwTRER0mo4MgGQcJzkyIjEpL/MqI6JdBQWQEJH4JEURZJI4sI0iWJmEdGRJIGkZIoMOShnS6z/ePWzeprtT23Hpqu/fzfr3ySvdd6j63bnV3nTrnOY+oKoiIiIiIiKj4mvIeABEREREREcXDAI6IiIiIiKgkGMARERERERGVBAM4IiIiIiKikmAAR0REREREVBIM4IiIiIiIiEqCARwREdUNEfmNiHzW9mMNxzBLRDbZ3i4REREADMl7AERE1NhE5C3Xt3sAeBdAv/P936rqTXG3paofTeOxRERERcEAjoiIcqWqI6pfi8gGAOeq6m+9jxORIaq6I8uxERERFQ1LKImIqJCqpYgicrGI/A+An4jIaBH5lYi8KiKvO1+PdT3nP0TkXOfrc0TkIRH5jvPY9SLy0RofO1FEHhCRN0XktyLyAxH5Wcz38UHntXpE5EkROc1138dE5Clnu90i8g/O7fs6761HRF4TkQdFhH+ziYiIARwRERXa/gD2BvBeAPNR+bv1E+f78QB6AVwd8vwjATwLYF8AVwC4TkSkhsfeDOCPAPYBsBjAZ+IMXkRaANwJ4F4A7wFwPoCbROQg5yHXoVImOhLAZAArnNu/AmATgDEA9gPwNQAa5zWJiKi+MYAjIqIiGwBwqaq+q6q9qrpFVW9T1W2q+iaAbwI4NuT5L6jqj1S1H8BPARyASkAU+7EiMh7AdACLVHW7qj4E4I6Y4/8LACMAdDrPXQHgVwDOcu7vA/AhEdlLVV9X1dWu2w8A8F5V7VPVB1WVARwRETGAIyKiQntVVd+pfiMie4jIv4nICyLyBoAHALSJSHPA8/+n+oWqbnO+HGH42AMBvOa6DQA2xhz/gQA2quqA67YXALQ7X38CwMcAvCAivxeRDzu3LwHwHIB7ReR5EVkY8/WIiKjOMYAjIqIi82advgLgIABHqupeAI5xbg8qi7ThZQB7i8gertvGxXzuSwDGeeavjQfQDQCq+piqno5KeeVyAEud299U1a+o6vsAnAbg70VkdsL3QUREdYABHBERlclIVOa99YjI3gAuTfsFVfUFACsBLBaRoU6W7NSYT38UwDYAXxWRFhGZ5Tz35862zhaRUaraB+ANVEpGISIfF5H/z5mDtxWVZRUG/F+CiIgaCQM4IiIqk38F0ApgM4BHANyd0eueDeDDALYA+AaAW1FZry6Uqm5HJWD7KCpj/iGAv1LVZ5yHfAbABqcc9AvO6wDAJAC/BfAWgD8A+KGq/s7auyEiotISzokmIiIyIyK3AnhGVVPPABIREbkxA0dERBRBRKaLyPtFpElETgZwOipz1oiIiDI1JO8BEBERlcD+AJahsg7cJgBfVNU1+Q6JiIgaEUsoiYiIiIiISoIllERERERERCVRyBLKfffdVydMmJD3MIiIiIiIiHKxatWqzao6xnt7IQO4CRMmYOXKlXkPg4iIiIiIKBci8oLf7SyhJCIiIiIiKgkGcERERERERCXBAI6IiIiIiKgkCjkHjoiobPr6+rBp0ya88847eQ+FiFyGDx+OsWPHoqWlJe+hEBFZwQCOiMiCTZs2YeTIkZgwYQJEJO/hEBEAVcWWLVuwadMmTJw4Me/hEBFZwRJKIiIL3nnnHeyzzz4M3ogKRESwzz77MDNORHWFAVwca5cCV04GFrdV/l+7NO8REVEBMXgjKh7+XBJRvWEJZZS1S4E7LwD6eivfb91Y+R4Aps7Lb1xERERERNRwmIGLcv9lu4K3qr7eyu1EREREREQZYgAXZesms9uJiGJYvqYbMztXYOLCuzCzcwWWr+lOvM0RI0ZYGFk6Fi9ejO985zv5vHgKZfDc1/Z961vfynsIRESlwAAuyqixZrcTEUVYvqYblyxbh+6eXiiA7p5eXLJsnZUgjjyqZfBbNwLQXWXwnMtcOAzgiIjiYQAXZfYioKV18G0trZXbiYhqsOSeZ9Hb1z/ott6+fiy551kr21dVXHTRRZg8eTKmTJmCW2+9FQDw8ssv45hjjsFhhx2GyZMn48EHH0R/fz/OOeecnY+98sorA7d71VVX4UMf+hCmTp2KM888EwDw6quv4oQTTsAhhxyCc889F+9973uxefNmAMA3v/lNfOADH8BRRx2FZ5+1896MpVwGX8Z9PWvWLCxYsAAdHR344Ac/iMceewxz587FpEmT8E//9E87H/fd734XkydPxuTJk/Gv//qvAIANGzbg4IMPxjnnnIMPfOADOPvss/Hb3/4WM2fOxKRJk/DHP/4RAPD222/j85//PGbMmIFp06bhl7/8JQDghhtuwNy5c3HyySdj0qRJ+OpXvwoAWLhwIXp7e3HYYYfh7LPPxoYNGzB58uSdY/nOd76DxYsXG42fiKhesYlJlGqjkvsvq5RNjhpbCd7YwISIavRST6/R7aaWLVuGrq4uPP7449i8eTOmT5+OY445BjfffDNOOukk/OM//iP6+/uxbds2dHV1obu7G0888QQAoKenJ3C7nZ2dWL9+PYYNG7bzcV//+tdx/PHH45JLLsHdd9+N6667DgCwatUq/PznP0dXVxd27NiBww8/HEcccYSV92ck5TL4su7roUOHYuXKlfje976H008/HatWrcLee++N97///ViwYAE2bNiAn/zkJ3j00UehqjjyyCNx7LHHYvTo0Xjuuefwi1/8Atdffz2mT5+Om2++GQ899BDuuOMOfOtb38Ly5cvxzW9+E8cffzyuv/569PT0YMaMGfjIRz4CAOjq6sKaNWswbNgwHHTQQTj//PPR2dmJq6++Gl1dXQAqgWKS8e+zzz6xPj8iojJiBi6OqfOABU8Ai3sq/zN4I6IEDmxrNbrd1EMPPYSzzjoLzc3N2G+//XDsscfisccew/Tp0/GTn/wEixcvxrp16zBy5Ei8733vw/PPP4/zzz8fd999N/baa6/A7U6dOhVnn302fvazn2HIkCE7X6uaITr55JMxevRoAMCDDz6IM844A3vssQf22msvnHbaaVbem7GUy+DLuq+rj5kyZQoOOeQQHHDAARg2bBje9773YePGjXjooYdwxhlnYM8998SIESMwd+5cPPjggwCAiRMnYsqUKWhqasIhhxyC2bNnQ0QwZcqUnYHXvffei87OThx22GGYNWsW3nnnHbz44osAgNmzZ2PUqFEYPnw4PvShD+GFF14w3u9R4yciqmcM4IiIMnbRSQehtaV50G2tLc246KSDUn3dY445Bg888ADa29txzjnn4MYbb8To0aPx+OOPY9asWbjmmmtw7rnnBj7/rrvuwnnnnYfVq1dj+vTp2LFjR6rjtSKnMvii7+thw4YBAJqamnZ+Xf0+6rW8j3dvq/pcVcVtt92G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LG5Dibjbq2XbJuIGkiVulEHFlXoTExE5DsBfAzjKdfNRqtotIu8BcJ+IPKOqDwQ8fz6A+QAwfvx4W8MiIiIiorTFyX6ZlLOFba9170pjEffctLRK5bxZHd8OiajLRhlUXFbWgRORqQB+DOB0Vd1SvV1Vu53/XwFwO4AZQdtQ1WtVtUNVO8aMGWNjWERERESUhaBGEdKMmtYtC2xIMQ64eD1w+g+yWxPN3dRk1Diz8RKlIHEGTkTGA1gG4DOq+l+u2/cE0KSqbzpfnwiALXuIiIiI6o3f+mnuddxsba+aZat1nlRSUeMiykBkACcitwCYBWBfEdkE4FIALQCgqtcAWARgHwA/FBEA2OHUau4H4HbntiEAblbVu1N4D0RERESUJ9sNJIrakKKo46KGEquJSdbYxISIiIiISsdv8XIGd1SjoCYmVubAEREREREVhntNuqzWaqtl8fKiMt1/eezvBsYAjoiIiIjqR16B1P2XJV+8vAhM9189Ba4lwQCOiIiIiMrNnQG6/QtmgZSt7FHQUgJlW2LANBCtl8C1RKytA0dERERElDnvYtva7/84v0DK+9xq9ggwn7s2aqz/4uNlW2LANBCtl8C1RJiBIyIiIqLy8ssA+fELpGxmj2Yvqiwp4FbGJQYC1+CzdDslxgCOiIiIiMorTqYnKJCymT2aOq+y7l1WC4ynxTQQrZfAtURYQklERERE5RVUuijNgA6Et/O3XfaY1wLjNpmudce18TLHdeCIiIiIqLy889iASgYoTvYryXOJUsZ14IiIiIio/iQpXayXskdqKMzAERERERERFQwzcERERERERCXHAI6IiIiIiKgkGMARERERERGVBAM4IiIiIiKikmAAR0REREREVBIM4IiIiIiIiEqikMsIiMirAF7Iexw+9gWwOe9BNCju+3xx/+eH+z5f3P/54v7PD/d9vrj/81Okff9eVR3jvbGQAVxRichKv7UYKH3c9/ni/s8P932+uP/zxf2fH+77fHH/56cM+54llERERERERCXBAI6IiIiIiKgkGMCZuTbvATQw7vt8cf/nh/s+X9z/+eL+zw/3fb64//NT+H3POXBEREREREQlwQwcERERERFRSTCAIyIiIiIiKgkGcDGIyMki8qyIPCciC/MeT70TkXEi8jsReUpEnhSRLzu3LxaRbhHpcv59LO+x1iMR2SAi65x9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X23isT/t6/OeqtJsvvGRWf0+52233cauXbs488wzSUpKIjU1lby8PLZt28aOHTu4+uqrqa2tpbOzk1tvvZWVK1cCMHHiRDZs2EBbWxuXX345F1xwAW+++SZlZWX85je/IS0trc/Xe+CBB7j//vvp6upi6tSp/PSnPyU9PZ2GhgY+97nPsXv3bgDuu+8+zj//fB599FG++93vYoxh7ty5/PSnP+3zeZ944gm++c1v4nK5yMnJ4dVXX6W9vZ0bbriBzZs3M336dPbv388Pf/hDqqur+clPfsK3v/1tcnNzmTdvHikpKf1+jQbludvg4Pv9n69bDz535DFPB/zmZnjnf/u+Z9wcuHx1v0+p7+nJv6c33HADaWlpbNy4kUOHDvHwww/z6KOP8tZbb7Fw4UIeeeQRAB577DG+9a1vYa3liiuu4Dvf+Q4AmZmZfP7zn+fZZ59l/PjxfOtb3+KrX/0q+/bt49577+XKK6/E5/Nx2223sW7dOtxuN1/84hf57Gc/y7p167jrrrsoLCxk8+bNnH322fzsZz/jBz/4Afv372fx4sUUFhbyyiuvkJmZSVtbGwC/+tWv+O1vf8sjjzxyyuMXkSHi80LbQSeI9RXQmuvA3eO/365kyC6D3AqYsjgQzCrCPpZBUt+/VwG49JuR/8AHzvVL7xye9ziEFOBERAJ6hreTHT8Vq1evZvPmzbz77rusW7eOK664gs2bN3f3inr44YfJz8+no6ODc845h2uvvZaCgoKI59i5cyePPfYYDzzwANdddx2//vWvuf766/t8vWuuuYbPfOYzANxxxx089NBDfOlLX+KWW27h4osv5qmnnsLn89HW1saWLVv413/9V958800KCws5evRov+/j7rvv5vnnn6esrKx7GeCPfvQj8vLyqKmpYfPmzZx55pkAHDhwgG984xu888475OTksHjxYubPnz/gr+Gg9AxvJzt+CvQ9PbXv6bFjx3jrrbd4+umnufLKK3njjTd48MEHOeecc3j33XcpLi7ma1/7Gu+88w55eXlcdtllrFmzhquvvprjx4+zZMkS7rnnHj760Y9yxx13sHbtWmpqavj0pz/NlVdeyUMPPUROTg7r16/H7XazaNEiLrvsMgA2btzIli1bKC0tZdGiRbzxxhvccsstfO973+OVV16hsLDwpN/nk40/+LURkVPgbg2bLdvXYyat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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"cdf_UeJK6e5A"},"source":["# RMSProp and Adam\n","RMSProp [1] and Adam [2] are update rules that set per-parameter learning rates by using a running average of the second moments of gradients.\n","\n","In the file `cs231n/optim.py`, implement the RMSProp update rule in the `rmsprop` function and implement the Adam update rule in the `adam` function, and check your implementations using the tests below.\n","\n","**NOTE:** Please implement the _complete_ Adam update rule (with the bias correction mechanism), not the first simplified version mentioned in the course notes. \n","\n","[1] Tijmen Tieleman and Geoffrey Hinton. \"Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude.\" COURSERA: Neural Networks for Machine Learning 4 (2012).\n","\n","[2] Diederik Kingma and Jimmy Ba, \"Adam: A Method for Stochastic Optimization\", ICLR 2015."]},{"cell_type":"code","metadata":{"id":"PWBxZOWX6e5A","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616348681202,"user_tz":-60,"elapsed":978,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"bbe6dd0f-6a4f-4a24-98f0-f19285cf400e"},"source":["# Test RMSProp implementation\n","from cs231n.optim import rmsprop\n","\n","N, D = 4, 5\n","w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n","dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n","cache = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n","\n","config = {'learning_rate': 1e-2, 'cache': cache}\n","next_w, _ = rmsprop(w, dw, config=config)\n","\n","expected_next_w = np.asarray([\n"," [-0.39223849, -0.34037513, -0.28849239, -0.23659121, -0.18467247],\n"," [-0.132737, -0.08078555, -0.02881884, 0.02316247, 0.07515774],\n"," [ 0.12716641, 0.17918792, 0.23122175, 0.28326742, 0.33532447],\n"," [ 0.38739248, 0.43947102, 0.49155973, 0.54365823, 0.59576619]])\n","expected_cache = np.asarray([\n"," [ 0.5976, 0.6126277, 0.6277108, 0.64284931, 0.65804321],\n"," [ 0.67329252, 0.68859723, 0.70395734, 0.71937285, 0.73484377],\n"," [ 0.75037008, 0.7659518, 0.78158892, 0.79728144, 0.81302936],\n"," [ 0.82883269, 0.84469141, 0.86060554, 0.87657507, 0.8926 ]])\n","\n","# You should see relative errors around e-7 or less\n","print('next_w error: ', rel_error(expected_next_w, next_w))\n","print('cache error: ', rel_error(expected_cache, config['cache']))"],"execution_count":33,"outputs":[{"output_type":"stream","text":["next_w error: 9.524687511038133e-08\n","cache error: 2.6477955807156126e-09\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"aHUqK1Gx6e5B","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616348690097,"user_tz":-60,"elapsed":960,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"4f6ee302-461f-45b2-e42a-262218628c34"},"source":["# Test Adam implementation\n","from cs231n.optim import adam\n","\n","N, D = 4, 5\n","w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n","dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n","m = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n","v = np.linspace(0.7, 0.5, num=N*D).reshape(N, D)\n","\n","config = {'learning_rate': 1e-2, 'm': m, 'v': v, 't': 5}\n","next_w, _ = adam(w, dw, config=config)\n","\n","expected_next_w = np.asarray([\n"," [-0.40094747, -0.34836187, -0.29577703, -0.24319299, -0.19060977],\n"," [-0.1380274, -0.08544591, -0.03286534, 0.01971428, 0.0722929],\n"," [ 0.1248705, 0.17744702, 0.23002243, 0.28259667, 0.33516969],\n"," [ 0.38774145, 0.44031188, 0.49288093, 0.54544852, 0.59801459]])\n","expected_v = np.asarray([\n"," [ 0.69966, 0.68908382, 0.67851319, 0.66794809, 0.65738853,],\n"," [ 0.64683452, 0.63628604, 0.6257431, 0.61520571, 0.60467385,],\n"," [ 0.59414753, 0.58362676, 0.57311152, 0.56260183, 0.55209767,],\n"," [ 0.54159906, 0.53110598, 0.52061845, 0.51013645, 0.49966, ]])\n","expected_m = np.asarray([\n"," [ 0.48, 0.49947368, 0.51894737, 0.53842105, 0.55789474],\n"," [ 0.57736842, 0.59684211, 0.61631579, 0.63578947, 0.65526316],\n"," [ 0.67473684, 0.69421053, 0.71368421, 0.73315789, 0.75263158],\n"," [ 0.77210526, 0.79157895, 0.81105263, 0.83052632, 0.85 ]])\n","\n","# You should see relative errors around e-7 or less\n","print('next_w error: ', rel_error(expected_next_w, next_w))\n","print('v error: ', rel_error(expected_v, config['v']))\n","print('m error: ', rel_error(expected_m, config['m']))"],"execution_count":34,"outputs":[{"output_type":"stream","text":["next_w error: 1.1395691798535431e-07\n","v error: 4.208314038113071e-09\n","m error: 4.214963193114416e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"IKCXnhnW6e5B"},"source":["Once you have debugged your RMSProp and Adam implementations, run the following to train a pair of deep networks using these new update rules:"]},{"cell_type":"code","metadata":{"id":"viZMbPdw6e5B","colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"status":"ok","timestamp":1612474682285,"user_tz":-60,"elapsed":11258,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"15493f1a-b5cb-41cc-eb00-d1c19bd34e73"},"source":["learning_rates = {'rmsprop': 1e-4, 'adam': 1e-3}\n","for update_rule in ['adam', 'rmsprop']:\n"," print('running with ', update_rule)\n"," model = FullyConnectedNet([100, 100, 100, 100, 100], weight_scale=5e-2)\n","\n"," solver = Solver(model, small_data,\n"," num_epochs=5, batch_size=100,\n"," update_rule=update_rule,\n"," optim_config={\n"," 'learning_rate': learning_rates[update_rule]\n"," },\n"," verbose=True)\n"," solvers[update_rule] = solver\n"," solver.train()\n"," print()\n","\n","plt.subplot(3, 1, 1)\n","plt.title('Training loss')\n","plt.xlabel('Iteration')\n","\n","plt.subplot(3, 1, 2)\n","plt.title('Training accuracy')\n","plt.xlabel('Epoch')\n","\n","plt.subplot(3, 1, 3)\n","plt.title('Validation accuracy')\n","plt.xlabel('Epoch')\n","\n","for update_rule, solver in list(solvers.items()):\n"," plt.subplot(3, 1, 1)\n"," plt.plot(solver.loss_history, 'o', label=update_rule)\n"," \n"," plt.subplot(3, 1, 2)\n"," plt.plot(solver.train_acc_history, '-o', label=update_rule)\n","\n"," plt.subplot(3, 1, 3)\n"," plt.plot(solver.val_acc_history, '-o', label=update_rule)\n"," \n","for i in [1, 2, 3]:\n"," plt.subplot(3, 1, i)\n"," plt.legend(loc='upper center', ncol=4)\n","plt.gcf().set_size_inches(15, 15)\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["running with adam\n","(Iteration 1 / 200) loss: 2.683026\n","(Epoch 0 / 5) train acc: 0.133000; val_acc: 0.107000\n","(Iteration 11 / 200) loss: 2.094550\n","(Iteration 21 / 200) loss: 2.001838\n","(Iteration 31 / 200) loss: 1.916622\n","(Epoch 1 / 5) train acc: 0.314000; val_acc: 0.299000\n","(Iteration 41 / 200) loss: 1.849029\n","(Iteration 51 / 200) loss: 1.761948\n","(Iteration 61 / 200) loss: 1.622183\n","(Iteration 71 / 200) loss: 1.602142\n","(Epoch 2 / 5) train acc: 0.430000; val_acc: 0.336000\n","(Iteration 81 / 200) loss: 1.548003\n","(Iteration 91 / 200) loss: 1.679375\n","(Iteration 101 / 200) loss: 1.445859\n","(Iteration 111 / 200) loss: 1.460205\n","(Epoch 3 / 5) train acc: 0.484000; val_acc: 0.362000\n","(Iteration 121 / 200) loss: 1.419457\n","(Iteration 131 / 200) loss: 1.465910\n","(Iteration 141 / 200) loss: 1.618236\n","(Iteration 151 / 200) loss: 1.559929\n","(Epoch 4 / 5) train acc: 0.498000; val_acc: 0.347000\n","(Iteration 161 / 200) loss: 1.218347\n","(Iteration 171 / 200) loss: 1.018907\n","(Iteration 181 / 200) loss: 1.541438\n","(Iteration 191 / 200) loss: 1.284076\n","(Epoch 5 / 5) train acc: 0.561000; val_acc: 0.369000\n","\n","running with rmsprop\n","(Iteration 1 / 200) loss: 2.592519\n","(Epoch 0 / 5) train acc: 0.116000; val_acc: 0.125000\n","(Iteration 11 / 200) loss: 2.126185\n","(Iteration 21 / 200) loss: 1.931993\n","(Iteration 31 / 200) loss: 1.833948\n","(Epoch 1 / 5) train acc: 0.375000; val_acc: 0.313000\n","(Iteration 41 / 200) loss: 1.801159\n","(Iteration 51 / 200) loss: 1.831144\n","(Iteration 61 / 200) loss: 1.593434\n","(Iteration 71 / 200) loss: 1.786832\n","(Epoch 2 / 5) train acc: 0.432000; val_acc: 0.342000\n","(Iteration 81 / 200) loss: 1.614097\n","(Iteration 91 / 200) loss: 1.610597\n","(Iteration 101 / 200) loss: 1.656030\n","(Iteration 111 / 200) loss: 1.586038\n","(Epoch 3 / 5) train acc: 0.487000; val_acc: 0.335000\n","(Iteration 121 / 200) loss: 1.409576\n","(Iteration 131 / 200) loss: 1.550687\n","(Iteration 141 / 200) loss: 1.539730\n","(Iteration 151 / 200) loss: 1.614167\n","(Epoch 4 / 5) train acc: 0.499000; val_acc: 0.367000\n","(Iteration 161 / 200) loss: 1.581322\n","(Iteration 171 / 200) loss: 1.454006\n","(Iteration 181 / 200) loss: 1.486930\n","(Iteration 191 / 200) loss: 1.463776\n","(Epoch 5 / 5) train acc: 0.516000; val_acc: 0.341000\n","\n"],"name":"stdout"},{"output_type":"stream","text":["/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:30: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:33: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:36: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n","/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:40: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n"],"name":"stderr"},{"output_type":"display_data","data":{"image/png":"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Rjk1R2rQaGqO1FD+RnnKQdzll1/O2LFjGTFiBI8++igAv/71rzn99NMZP348q1evju9bWVnJhAkTGDNmDJ/+9Kf597//DUB5eTlf+cpXuPDCCznllFNYvnw5t99+O6NGjWLGjBk0NTWlNMa2qK+spOYHCwhXV4PWhKurqfnBgpSDuB07dnDGGWfw5S9/mR49evAf//EffPWrX+X000/n2muv5W9/+xsTJ07ktNNO4+233wbg1Vdf5ZxzzuGcc85hzJgxHDp0iJUrV3LRRRdRWlrKGWecwTe/+c14MNijRw9uu+02zj77bN58801+8pOfMHLkSEaOHMmSJUvi4zjzzDO59tprGT58OFdffTVHjx5N7aIJITosCeDcTF0AwcLEbcHCyHYhRFotevEDGpoSv4FuaGpm0YsfpHTcv/71rwwcOJB3332XzZs3M2PGDG688UZeeOEF1q5dy969e+P73nPPPUyaNIktW7ZwxRVX8K9//Sul126TDJVuZyqQjd1cut3Y7t+/n8svv5zRo0dz/vnns3HjRsB7QLB27Vouvvhixo4dy/Tp06mpqQFg8uTJ3HHHHYwfP57TTz+d119/nePHj7NgwQKWLl3KOeecw9KlSykvL+fBBx+Mj3vkyJHs2LHD8/izqWJdBY3NiR0FG5sbqVhXkdJxf/WrX7F27VrWrFnDQw89xK5du7j77rtZvXo1q1at4r333ovvO2nSJN566y3Wr1/PF7/4RR544IH4Yx999BErVqzgueee47rrruOSSy5h06ZNFBYWUlWV/UzhnsVL0KYOjLqxkT2Ll6R87A8//JBvf/vbbNmyhU8++YTbbruN999/n/fff58nn3ySVatW8eCDD3LfffcB8OCDD/Lwww+zYcMGXn/9dQoLI/cQb7/9Nj/96U957733+Oijj1i+fDkQ+Xs5YcIE3n33XQoLC/n1r3/NP/7xD9566y1++ctfsn79egA++OADvv3tb7N161Z69erFI488kvK5CSE6Jgng3IyeBTMfgtAQQEX+P/MhaWAiRAZU1zX42u7VqFGjePnll7njjjt4/fXX2b59O6eeemp8vaRrrrkmvu9rr73GddddB0BpaSm9e/dO6bXbJEOl25kMZP/5z3+63tjefffdjBkzho0bN3Lffffx5S9/Of58t4CgqamJ73znOzz11FOsXbuWr3/969x1113x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wMBARowYwY4dO1iwYAHZ2dlccsklpKamMnz4cKy1R3+j9fnsHti37vD7U5ZDZWnNbeXF8NEkWPla3e/pOADOnXbsamwD1qxZw4oVK1pkgHti2RNs2r/psPvXZq6lzFFWY1tJZQlT/zeV97a8V+d7+ob35e6hdx/xuhMnTmTPnj2UlJQwefJkrr32Wl555RUef/xxwsLCOOGEE/D19QXgk08+4dFHH6WsrIwrFwhvAAAgAElEQVSIiAjeeustYmJieOihh/j111/ZsWMHu3fv5umnn+ann37is88+Iy4ujk8++eSYt7Lf99hjlCYf/vtV/Msv2LKa3y9bUkLa/X8n551363yPb2JfOt533xGvu3PnTsaNG8ewYcN4//33iY6OZtSoUfzwww8MGTKEK664ggcffJCMjAzeeusthg4dyrfffsvkyZMB53NpS5cuZeXKlUydOpXg4GC2bdvG6NGjmTNnDh4eHgQFBXHdddexaNEiZs+ezbJly5g3bx4AV199Nbfeeis7d+7knHPO4eSTT2bVqlX079+f119/nYCAgKP5NrZolQWFlG7dQunWrZRu3UbOf/9b55/p3vvup+Dbpfh06YJP1y54d+mCT9eueHbooOcA26jyynL2Fe2rCmR7C/eyr3Afewucv6cVplFa6+9Mfy9/YgNj6RTUiaTIJGKDYukU2IlOgZ2IDYol0j+S8/5zBmnluYdcr6N3yPG6tUZTgBORFqN2eKtve0N9/vnnxMbGsnChcwpabm4uSUlJLF26lG7dunHJJZdUHfvwww8zcuRIpk6dysKFC5k7d26Trt0otcNbfdsbqLmC7MEfLk855ZQj/mC7f/9+rrzySnbs2EFAQAAvvfQSAwcObHAgWLlyJbfffjsFBQVERkby6quv0qlTJ8444wyGDRvGkiVLyMnJYe7cuQwbNoypU6dSXFzM999/z7333ktycjJBQUHceeedACQlJbFgwQKABtV/PNUOb/Vtb6h58+YRHh5OcXExQ4YMYfz48Tz44IOsXLmS0NBQRo8ezaBBgwAYOXIkP/30E8YYXn75ZaZPn85TTz0FwPbt21myZAkbN25k+PDhvP/++0yfPp0LL7yQhQsXMnHixCbVebRq/6Bf3/ajsXXrVl577TUeeeQRevbsyR133MG8efMYMmQIb7/9Nt9//z0ff/wxjz32GPPnz2fGjBnM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KaECVwDGmO7GmD3GmP3GmGecnUfKFmPMe8aYY8aYHc7OImWPMaaOMWa1MWaXMWanMWakszNJ2WGMqWiM+dkYsy1v/3rR2Zmk7DHGuBpjthhjvnZ2FilbjDEHjTHbjTFbjTGbnJ2noHQOXD6MMa7AXqALEAtsBO6x1u5yajApM4wxHYEU4H1r7RXOziNlizGmFlDLWvuLMaYSsBnopf+HSWEwxhjA21qbYoxxB34ARlprNzg5mpQhxpjHgTCgsrX2FmfnkbLDGHMQCLPWlsSbeF+UjsDlrw2w31obZa3NBD4Bejo5k5Qh1trvgRPOziFlk7U23lr7S97j08BuINC5qaSssLlS8p665/3oX4al0BhjgoD/A2Y5O4tISaECl79AIOas57Hoy4+IlELGmLpAS+An5yaRsiRvettW4Biwwlqr/UsK0xvA04DD2UGkTLJAhDFmszFmiLPDFJQKnIhIOWCM8QG+AB611iY7O4+UHdbaHGttCyAIaGOM0VRwKRTGmFuAY9bazc7OImXWtdbaVsBNwPC801pKPBW4/MUBdc56HpS3TESkVMg7N+kL4ENr7ZfOziNlk7X2FLAa6O7sLFJmtAd65J2n9AlwgzFmvnMjSVlirY3L+/MY8BW5p06VeCpw+dsIhBpj6hljPIC7gcVOziQiUiB5F5mYDey21r7m7DxSthhjAowxfnmPPcm94Fekc1NJWWGtfdZaG2StrUvu969vrbX9nBxLyghjjHfexb0wxngDXYFScUVwFbh8WGuzgYeB5eSe/L/AWrvTuamkLDHGfAysBxoZY2KNMQ84O5OUKe2B+8j9l+uteT83OzuUlBm1gNXGmF/J/QfPFdZaXepdREqDGsAPxphtwM/AUmvtMidnKhDdRkBERERERKSU0BE4ERERERGRUkIFTkREREREpJRQgRMRERERESklVOBERERERERKCRU4ERERERGRUkIFTkREyixjTM5Zt0/Yaox5phBfu64xplTcM0hERMoON2cHEBERKUJp1toWzg4hIiJSWHQETkREyh1jzEFjzCRjzHZjzM/GmIZ5y+saY741xvxqjFlljAnOW17DGPOVMWZb3s81eS/laoyZaYzZaYyJMMZ4Ou1DiYhIuaACJyIiZZnnn6ZQ3nXWuiRrbTPgLeCNvGVvAvOstc2BD4GpecunAt9Za68EWgE785aHAtOstU2BU8AdRfx5RESknDPWWmdnEBERKRLGmBRrrc8Flh8EbrDWRhlj3IEj1tpqxphEoJa1Nitveby11t8YkwAEWWszznqNusAKa21o3vNRgLu19qWi/2QiIlJe6QiciIiUV/Yijy9FxlmPc9C55SIiUsRU4EREpLy666w/1+c9/hG4O+/xvcDavMergGEAxhhXY4xvcYUUERE5m/6lUEREyjJPY8zWs54vs9b+71YCVYwxv5J7FO2evGWPAHOMMU8BCcDAvOUjgRnGmAfIPdI2DIgv8vQiIiJ/onPgRESk3Mk7By7MWpvo7CwiIiKXQlMoRURERERESgkdgRMRERERESkldARORERERESklFCBExERERERKSVU4EREREREREoJFTgREREREZFSQgVORERERESklPh/Q77C+vMz22wAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"3bYf8tz86e5B"},"source":["## Inline Question 3:\n","\n","AdaGrad, like Adam, is a per-parameter optimization method that uses the following update rule:\n","\n","```\n","cache += dw**2\n","w += - learning_rate * dw / (np.sqrt(cache) + eps)\n","```\n","\n","John notices that when he was training a network with AdaGrad that the updates became very small, and that his network was learning slowly. Using your knowledge of the AdaGrad update rule, why do you think the updates would become very small? Would Adam have the same issue?\n","\n","\n","## Answer: \n","- Using AdaGrad, the fact that updates becomes very small is due to its monotonicity. The latter is caused by the infinite update of the `cache` variable (although it's square-rooted when updating `w`, it will not change the fact that it's still incremented infinitely).\n","- No, Adam would not have the same issue. In fact, Adam is a smoothed version of **RMSprop**, in which the `cache` variable is *leaky*."]},{"cell_type":"markdown","metadata":{"id":"19iegKRb6e5C"},"source":["# Train a good model!\n","Train the best fully-connected model that you can on CIFAR-10, storing your best model in the `best_model` variable. We require you to get at least 50% accuracy on the validation set using a fully-connected net.\n","\n","If you are careful it should be possible to get accuracies above 55%, but we don't require it for this part and won't assign extra credit for doing so. Later in the assignment we will ask you to train the best convolutional network that you can on CIFAR-10, and we would prefer that you spend your effort working on convolutional nets rather than fully-connected nets.\n","\n","You might find it useful to complete the `BatchNormalization.ipynb` and `Dropout.ipynb` notebooks before completing this part, since those techniques can help you train powerful models."]},{"cell_type":"code","metadata":{"scrolled":false,"id":"BlxVLk8i6e5C","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616354514212,"user_tz":-60,"elapsed":2142989,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"54d4fd39-07ef-4506-9ab7-8d4e8a06074e"},"source":["best_model = None\n","################################################################################\n","# TODO: Train the best FullyConnectedNet that you can on CIFAR-10. You might #\n","# find batch/layer normalization and dropout useful. Store your best model in #\n","# the best_model variable. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# To find the optimal parameter combination, we'll use a random search strategy.\n","# For that, define a random search function, which yields tuples of\n","# (hidden_size, hidden_dimension, dropout_p, weight_scale, lr)\n","# Note that the hard-coded low/high values for each parameter are changed (i.e. refined)\n","# during tests.\n","def random_search(sample_size):\n"," for _ in range(sample_size):\n"," hsize = np.random.randint(low=1, high=3)\n"," hdim = np.random.randint(low=300, high=500)\n"," dp = np.around(np.random.uniform(low=8, high=10) / 10, decimals=2)\n"," wscale = 10 ** np.random.uniform(low=-4, high=-3)\n"," lr = 10 ** np.random.uniform(low=-4, high=-3)\n","\n"," yield hsize, hdim, dp, wscale, lr\n","\n","# Initialize the best validation accuracy.\n","best_val_acc = 0.0\n","\n","# Batch size (bsize) is kept unchanged during the random search.\n","bsize = 100\n","\n","# Test 10 parameter combinations.\n","for i, params in enumerate(random_search(10)):\n"," hsize, hdim, dp, wscale, lr = params\n","\n"," # Define 'hdim' hidden layers with size 'hsize'\n"," hidden_layers = [hdim] * hsize\n"," model = FullyConnectedNet(hidden_layers, weight_scale=wscale,\n"," normalization=\"batchnorm\", dropout=dp)\n","\n"," solver = Solver(model, data,\n"," num_epochs=5, batch_size=bsize,\n"," update_rule='adam',\n"," optim_config={'learning_rate': lr},\n"," verbose=False)\n","\n"," solver.train()\n","\n"," y_val_pred = np.argmax(model.loss(data['X_val']), axis=1)\n"," val_acc = (y_val_pred == data['y_val']).mean()\n","\n"," print('%2d) hsize=%1d | hdim=%3d | dp=%.2f | wscale=%.2e | lr=%.3e | val_acc=%.4f' % \n"," (i+1, hsize, hdim, dp, wscale, lr, val_acc))\n","\n"," if val_acc > best_val_acc:\n"," best_val_acc = val_acc\n"," best_model = model\n","\n","print('\\nBest validation accuracy: %.4f' % best_val_acc)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","################################################################################\n","# END OF YOUR CODE #\n","################################################################################"],"execution_count":9,"outputs":[{"output_type":"stream","text":[" 1) hsize=2 | hdim=393 | dp=0.95 | wscale=4.28e-04 | lr=1.299e-04 | val_acc=0.5510\n"," 2) hsize=2 | hdim=389 | dp=0.94 | wscale=1.01e-04 | lr=4.392e-04 | val_acc=0.5530\n"," 3) hsize=2 | hdim=473 | dp=0.83 | wscale=6.54e-04 | lr=1.789e-04 | val_acc=0.5590\n"," 4) hsize=1 | hdim=451 | dp=0.94 | wscale=2.58e-04 | lr=1.073e-04 | val_acc=0.5140\n"," 5) hsize=1 | hdim=480 | dp=0.91 | wscale=1.06e-04 | lr=7.362e-04 | val_acc=0.5240\n"," 6) hsize=2 | hdim=445 | dp=0.91 | wscale=2.04e-04 | lr=1.056e-04 | val_acc=0.5470\n"," 7) hsize=2 | hdim=499 | dp=0.86 | wscale=5.23e-04 | lr=3.167e-04 | val_acc=0.5610\n"," 8) hsize=1 | hdim=319 | dp=0.87 | wscale=7.32e-04 | lr=3.964e-04 | val_acc=0.5250\n"," 9) hsize=2 | hdim=323 | dp=0.91 | wscale=9.30e-04 | lr=4.006e-04 | val_acc=0.5630\n","10) hsize=1 | hdim=458 | dp=0.85 | wscale=1.48e-04 | lr=8.384e-04 | val_acc=0.5510\n","\n","Best validation accuracy: 0.5630\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Fcd_y9uN6e5D"},"source":["# Test your model!\n","Run your best model on the validation and test sets. You should achieve above 50% accuracy on the validation set."]},{"cell_type":"code","metadata":{"id":"vmd3V6gg6e5D","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1616354515881,"user_tz":-60,"elapsed":1654,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"eca76537-21db-4e39-ee8c-c8ae634dd8ad"},"source":["y_test_pred = np.argmax(best_model.loss(data['X_test']), axis=1)\n","y_val_pred = np.argmax(best_model.loss(data['X_val']), axis=1)\n","print('Validation set accuracy: ', (y_val_pred == data['y_val']).mean())\n","print('Test set accuracy: ', (y_test_pred == data['y_test']).mean())"],"execution_count":10,"outputs":[{"output_type":"stream","text":["Validation set accuracy: 0.563\n","Test set accuracy: 0.535\n"],"name":"stdout"}]}]} ================================================ FILE: cs231n/assignment2/PyTorch.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"PyTorch.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU","widgets":{"application/vnd.jupyter.widget-state+json":{"4eb1a044ba64422e87a1275a15117726":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_456b60a2feb74792899128fc5cdfc967","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_e855d99feea042cfaf3d4d53791252b3","IPY_MODEL_1581c8de653844c9a8994a9e7a9f00ad"]}},"456b60a2feb74792899128fc5cdfc967":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"e855d99feea042cfaf3d4d53791252b3":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_232214e6b0f54cd2af3cd875224b8bb4","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"info","max":1,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":1,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_312385a363f248d8870a5dc94117939e"}},"1581c8de653844c9a8994a9e7a9f00ad":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_ff7ea7afbcd44026859f3356f3ebc28f","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 170500096/? [00:19<00:00, 96641586.64it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_689de54ba7c44f2287bb6947b069bba0"}},"232214e6b0f54cd2af3cd875224b8bb4":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"initial","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"312385a363f248d8870a5dc94117939e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"ff7ea7afbcd44026859f3356f3ebc28f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"689de54ba7c44f2287bb6947b069bba0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}}}}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0DuR1EEfrsfy","executionInfo":{"status":"ok","timestamp":1613045099278,"user_tz":-60,"elapsed":18273,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"4cf16d17-d237-4cd6-c840-ce5293278c68"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment2/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment2/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"Qgu-XXbPrsf6"},"source":["# What's this PyTorch business?\n","\n","You've written a lot of code in this assignment to provide a whole host of neural network functionality. Dropout, Batch Norm, and 2D convolutions are some of the workhorses of deep learning in computer vision. You've also worked hard to make your code efficient and vectorized.\n","\n","For the last part of this assignment, though, we're going to leave behind your beautiful codebase and instead migrate to one of two popular deep learning frameworks: in this instance, PyTorch (or TensorFlow, if you choose to use that notebook)."]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"-ZVeIFGwrsf7"},"source":["### What is PyTorch?\n","\n","PyTorch is a system for executing dynamic computational graphs over Tensor objects that behave similarly as numpy ndarray. It comes with a powerful automatic differentiation engine that removes the need for manual back-propagation. \n","\n","### Why?\n","\n","* Our code will now run on GPUs! Much faster training. When using a framework like PyTorch or TensorFlow you can harness the power of the GPU for your own custom neural network architectures without having to write CUDA code directly (which is beyond the scope of this class).\n","* We want you to be ready to use one of these frameworks for your project so you can experiment more efficiently than if you were writing every feature you want to use by hand. \n","* We want you to stand on the shoulders of giants! TensorFlow and PyTorch are both excellent frameworks that will make your lives a lot easier, and now that you understand their guts, you are free to use them :) \n","* We want you to be exposed to the sort of deep learning code you might run into in academia or industry.\n","\n","### PyTorch versions\n","This notebook assumes that you are using **PyTorch version 1.4**. In some of the previous versions (e.g. before 0.4), Tensors had to be wrapped in Variable objects to be used in autograd; however Variables have now been deprecated. In addition 1.0+ versions separate a Tensor's datatype from its device, and use numpy-style factories for constructing Tensors rather than directly invoking Tensor constructors."]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"QO1srl7hrsf8"},"source":["## How will I learn PyTorch?\n","\n","Justin Johnson has made an excellent [tutorial](https://github.com/jcjohnson/pytorch-examples) for PyTorch. \n","\n","You can also find the detailed [API doc](http://pytorch.org/docs/stable/index.html) here. If you have other questions that are not addressed by the API docs, the [PyTorch forum](https://discuss.pytorch.org/) is a much better place to ask than StackOverflow.\n","\n","## Install PyTorch 1.4 (ONLY IF YOU ARE WORKING LOCALLY)\n","\n","1. Have the latest version of Anaconda installed on your machine.\n","2. Create a new conda environment starting from Python 3.7. In this setup example, we'll call it `torch_env`.\n","3. Run the command: `conda activate torch_env`\n","4. Run the command: `pip install torch==1.4 torchvision==0.5.0`"]},{"cell_type":"markdown","metadata":{"id":"k8DCxyFIrsf8"},"source":["# Table of Contents\n","\n","This assignment has 5 parts. You will learn PyTorch on **three different levels of abstraction**, which will help you understand it better and prepare you for the final project. \n","\n","1. Part I, Preparation: we will use CIFAR-10 dataset.\n","2. Part II, Barebones PyTorch: **Abstraction level 1**, we will work directly with the lowest-level PyTorch Tensors. \n","3. Part III, PyTorch Module API: **Abstraction level 2**, we will use `nn.Module` to define arbitrary neural network architecture. \n","4. Part IV, PyTorch Sequential API: **Abstraction level 3**, we will use `nn.Sequential` to define a linear feed-forward network very conveniently. \n","5. Part V, CIFAR-10 open-ended challenge: please implement your own network to get as high accuracy as possible on CIFAR-10. You can experiment with any layer, optimizer, hyperparameters or other advanced features. \n","\n","Here is a table of comparison:\n","\n","| API | Flexibility | Convenience |\n","|---------------|-------------|-------------|\n","| Barebone | High | Low |\n","| `nn.Module` | High | Medium |\n","| `nn.Sequential` | Low | High |"]},{"cell_type":"markdown","metadata":{"id":"PFMP9BSrrsf8"},"source":["# Part I. Preparation\n","\n","First, we load the CIFAR-10 dataset. This might take a couple minutes the first time you do it, but the files should stay cached after that.\n","\n","In previous parts of the assignment we had to write our own code to download the CIFAR-10 dataset, preprocess it, and iterate through it in minibatches; PyTorch provides convenient tools to automate this process for us."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"B_ajIVbCrsf9"},"source":["import torch\n","# assert '.'.join(torch.__version__.split('.')[:2]) == '1.4'\n","import torch.nn as nn\n","import torch.optim as optim\n","from torch.utils.data import DataLoader\n","from torch.utils.data import sampler\n","\n","import torchvision.datasets as dset\n","import torchvision.transforms as T\n","\n","import numpy as np"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/","height":117,"referenced_widgets":["4eb1a044ba64422e87a1275a15117726","456b60a2feb74792899128fc5cdfc967","e855d99feea042cfaf3d4d53791252b3","1581c8de653844c9a8994a9e7a9f00ad","232214e6b0f54cd2af3cd875224b8bb4","312385a363f248d8870a5dc94117939e","ff7ea7afbcd44026859f3356f3ebc28f","689de54ba7c44f2287bb6947b069bba0"]},"id":"Woo1In9Hrsf9","executionInfo":{"status":"ok","timestamp":1613045116415,"user_tz":-60,"elapsed":6601,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"daf50277-1945-40ae-aa9e-b34d512abdb9"},"source":["NUM_TRAIN = 49000\n","\n","# The torchvision.transforms package provides tools for preprocessing data\n","# and for performing data augmentation; here we set up a transform to\n","# preprocess the data by subtracting the mean RGB value and dividing by the\n","# standard deviation of each RGB value; we've hardcoded the mean and std.\n","transform = T.Compose([\n"," T.ToTensor(),\n"," T.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))\n"," ])\n","\n","# We set up a Dataset object for each split (train / val / test); Datasets load\n","# training examples one at a time, so we wrap each Dataset in a DataLoader which\n","# iterates through the Dataset and forms minibatches. We divide the CIFAR-10\n","# training set into train and val sets by passing a Sampler object to the\n","# DataLoader telling how it should sample from the underlying Dataset.\n","cifar10_train = dset.CIFAR10('./cs231n/datasets', train=True, download=True,\n"," transform=transform)\n","loader_train = DataLoader(cifar10_train, batch_size=64, \n"," sampler=sampler.SubsetRandomSampler(range(NUM_TRAIN)))\n","\n","cifar10_val = dset.CIFAR10('./cs231n/datasets', train=True, download=True,\n"," transform=transform)\n","loader_val = DataLoader(cifar10_val, batch_size=64, \n"," sampler=sampler.SubsetRandomSampler(range(NUM_TRAIN, 50000)))\n","\n","cifar10_test = dset.CIFAR10('./cs231n/datasets', train=False, download=True, \n"," transform=transform)\n","loader_test = DataLoader(cifar10_test, batch_size=64)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./cs231n/datasets/cifar-10-python.tar.gz\n"],"name":"stdout"},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"4eb1a044ba64422e87a1275a15117726","version_minor":0,"version_major":2},"text/plain":["HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["Extracting ./cs231n/datasets/cifar-10-python.tar.gz to ./cs231n/datasets\n","Files already downloaded and verified\n","Files already downloaded and verified\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"v6IDlCaPrsf-"},"source":["You have an option to **use GPU by setting the flag to True below**. It is not necessary to use GPU for this assignment. Note that if your computer does not have CUDA enabled, `torch.cuda.is_available()` will return False and this notebook will fallback to CPU mode.\n","\n","The global variables `dtype` and `device` will control the data types throughout this assignment.\n","\n","## Colab Users\n","\n","If you are using Colab, you need to manually switch to a GPU device. You can do this by clicking `Runtime -> Change runtime type` and selecting `GPU` under `Hardware Accelerator`. Note that you have to rerun the cells from the top since the kernel gets restarted upon switching runtimes."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"id":"x-jPlr7prsf-","executionInfo":{"status":"ok","timestamp":1613045123930,"user_tz":-60,"elapsed":652,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"68b654f1-2002-4964-9e3d-152e0c15becc"},"source":["USE_GPU = True\n","\n","dtype = torch.float32 # we will be using float throughout this tutorial\n","\n","if USE_GPU and torch.cuda.is_available():\n"," device = torch.device('cuda')\n","else:\n"," device = torch.device('cpu')\n","\n","# Constant to control how frequently we print train loss\n","print_every = 100\n","\n","print('using device:', device)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["using device: cuda\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"UYbaX56Ersf_"},"source":["# Part II. Barebones PyTorch\n","\n","PyTorch ships with high-level APIs to help us define model architectures conveniently, which we will cover in Part II of this tutorial. In this section, we will start with the barebone PyTorch elements to understand the autograd engine better. After this exercise, you will come to appreciate the high-level model API more.\n","\n","We will start with a simple fully-connected ReLU network with two hidden layers and no biases for CIFAR classification. \n","This implementation computes the forward pass using operations on PyTorch Tensors, and uses PyTorch autograd to compute gradients. It is important that you understand every line, because you will write a harder version after the example.\n","\n","When we create a PyTorch Tensor with `requires_grad=True`, then operations involving that Tensor will not just compute values; they will also build up a computational graph in the background, allowing us to easily backpropagate through the graph to compute gradients of some Tensors with respect to a downstream loss. Concretely if x is a Tensor with `x.requires_grad == True` then after backpropagation `x.grad` will be another Tensor holding the gradient of x with respect to the scalar loss at the end."]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"8U7Xwms1rsf_"},"source":["### PyTorch Tensors: Flatten Function\n","A PyTorch Tensor is conceptionally similar to a numpy array: it is an n-dimensional grid of numbers, and like numpy PyTorch provides many functions to efficiently operate on Tensors. As a simple example, we provide a `flatten` function below which reshapes image data for use in a fully-connected neural network.\n","\n","Recall that image data is typically stored in a Tensor of shape N x C x H x W, where:\n","\n","* N is the number of datapoints\n","* C is the number of channels\n","* H is the height of the intermediate feature map in pixels\n","* W is the height of the intermediate feature map in pixels\n","\n","This is the right way to represent the data when we are doing something like a 2D convolution, that needs spatial understanding of where the intermediate features are relative to each other. When we use fully connected affine layers to process the image, however, we want each datapoint to be represented by a single vector -- it's no longer useful to segregate the different channels, rows, and columns of the data. So, we use a \"flatten\" operation to collapse the `C x H x W` values per representation into a single long vector. The flatten function below first reads in the N, C, H, and W values from a given batch of data, and then returns a \"view\" of that data. \"View\" is analogous to numpy's \"reshape\" method: it reshapes x's dimensions to be N x ??, where ?? is allowed to be anything (in this case, it will be C x H x W, but we don't need to specify that explicitly). "]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"id":"juasjU6xrsgA","executionInfo":{"status":"ok","timestamp":1613045128551,"user_tz":-60,"elapsed":595,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5229cb80-7a88-490c-99f1-54f6a655d407"},"source":["def flatten(x):\n"," N = x.shape[0] # read in N, C, H, W\n"," return x.view(N, -1) # \"flatten\" the C * H * W values into a single vector per image\n","\n","def test_flatten():\n"," x = torch.arange(12).view(2, 1, 3, 2)\n"," print('Before flattening: ', x)\n"," print('After flattening: ', flatten(x))\n","\n","test_flatten()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Before flattening: tensor([[[[ 0, 1],\n"," [ 2, 3],\n"," [ 4, 5]]],\n","\n","\n"," [[[ 6, 7],\n"," [ 8, 9],\n"," [10, 11]]]])\n","After flattening: tensor([[ 0, 1, 2, 3, 4, 5],\n"," [ 6, 7, 8, 9, 10, 11]])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"RVG8mWYtrsgB"},"source":["### Barebones PyTorch: Two-Layer Network\n","\n","Here we define a function `two_layer_fc` which performs the forward pass of a two-layer fully-connected ReLU network on a batch of image data. After defining the forward pass we check that it doesn't crash and that it produces outputs of the right shape by running zeros through the network.\n","\n","You don't have to write any code here, but it's important that you read and understand the implementation."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"id":"qeR4HPGsrsgB","executionInfo":{"status":"ok","timestamp":1613045133585,"user_tz":-60,"elapsed":614,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8f48b86f-8c0a-4234-86e9-8a9270c29228"},"source":["import torch.nn.functional as F # useful stateless functions\n","\n","def two_layer_fc(x, params):\n"," \"\"\"\n"," A fully-connected neural networks; the architecture is:\n"," NN is fully connected -> ReLU -> fully connected layer.\n"," Note that this function only defines the forward pass; \n"," PyTorch will take care of the backward pass for us.\n"," \n"," The input to the network will be a minibatch of data, of shape\n"," (N, d1, ..., dM) where d1 * ... * dM = D. The hidden layer will have H units,\n"," and the output layer will produce scores for C classes.\n"," \n"," Inputs:\n"," - x: A PyTorch Tensor of shape (N, d1, ..., dM) giving a minibatch of\n"," input data.\n"," - params: A list [w1, w2] of PyTorch Tensors giving weights for the network;\n"," w1 has shape (D, H) and w2 has shape (H, C).\n"," \n"," Returns:\n"," - scores: A PyTorch Tensor of shape (N, C) giving classification scores for\n"," the input data x.\n"," \"\"\"\n"," # first we flatten the image\n"," x = flatten(x) # shape: [batch_size, C x H x W]\n"," \n"," w1, w2 = params\n"," \n"," # Forward pass: compute predicted y using operations on Tensors. Since w1 and\n"," # w2 have requires_grad=True, operations involving these Tensors will cause\n"," # PyTorch to build a computational graph, allowing automatic computation of\n"," # gradients. Since we are no longer implementing the backward pass by hand we\n"," # don't need to keep references to intermediate values.\n"," # you can also use `.clamp(min=0)`, equivalent to F.relu()\n"," x = F.relu(x.mm(w1))\n"," x = x.mm(w2)\n"," return x\n"," \n","\n","def two_layer_fc_test():\n"," hidden_layer_size = 42\n"," x = torch.zeros((64, 50), dtype=dtype) # minibatch size 64, feature dimension 50\n"," w1 = torch.zeros((50, hidden_layer_size), dtype=dtype)\n"," w2 = torch.zeros((hidden_layer_size, 10), dtype=dtype)\n"," scores = two_layer_fc(x, [w1, w2])\n"," print(scores.size()) # you should see [64, 10]\n","\n","two_layer_fc_test()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["torch.Size([64, 10])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"6tyz11uVrsgB"},"source":["### Barebones PyTorch: Three-Layer ConvNet\n","\n","Here you will complete the implementation of the function `three_layer_convnet`, which will perform the forward pass of a three-layer convolutional network. Like above, we can immediately test our implementation by passing zeros through the network. The network should have the following architecture:\n","\n","1. A convolutional layer (with bias) with `channel_1` filters, each with shape `KW1 x KH1`, and zero-padding of two\n","2. ReLU nonlinearity\n","3. A convolutional layer (with bias) with `channel_2` filters, each with shape `KW2 x KH2`, and zero-padding of one\n","4. ReLU nonlinearity\n","5. Fully-connected layer with bias, producing scores for C classes.\n","\n","Note that we have **no softmax activation** here after our fully-connected layer: this is because PyTorch's cross entropy loss performs a softmax activation for you, and by bundling that step in makes computation more efficient.\n","\n","**HINT**: For convolutions: http://pytorch.org/docs/stable/nn.html#torch.nn.functional.conv2d; pay attention to the shapes of convolutional filters!"]},{"cell_type":"code","metadata":{"id":"m1-6at5YrsgC"},"source":["def three_layer_convnet(x, params):\n"," \"\"\"\n"," Performs the forward pass of a three-layer convolutional network with the\n"," architecture defined above.\n","\n"," Inputs:\n"," - x: A PyTorch Tensor of shape (N, 3, H, W) giving a minibatch of images\n"," - params: A list of PyTorch Tensors giving the weights and biases for the\n"," network; should contain the following:\n"," - conv_w1: PyTorch Tensor of shape (channel_1, 3, KH1, KW1) giving weights\n"," for the first convolutional layer\n"," - conv_b1: PyTorch Tensor of shape (channel_1,) giving biases for the first\n"," convolutional layer\n"," - conv_w2: PyTorch Tensor of shape (channel_2, channel_1, KH2, KW2) giving\n"," weights for the second convolutional layer\n"," - conv_b2: PyTorch Tensor of shape (channel_2,) giving biases for the second\n"," convolutional layer\n"," - fc_w: PyTorch Tensor giving weights for the fully-connected layer. Can you\n"," figure out what the shape should be?\n"," - fc_b: PyTorch Tensor giving biases for the fully-connected layer. Can you\n"," figure out what the shape should be?\n"," \n"," Returns:\n"," - scores: PyTorch Tensor of shape (N, C) giving classification scores for x\n"," \"\"\"\n"," conv_w1, conv_b1, conv_w2, conv_b2, fc_w, fc_b = params\n"," scores = None\n"," ################################################################################\n"," # TODO: Implement the forward pass for the three-layer ConvNet. #\n"," ################################################################################\n"," # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n"," # Forward pass for the 1st layer: conv-relu.\n"," x = F.conv2d(x, conv_w1, conv_b1, padding=2)\n"," x = F.relu(x)\n"," # Forward pass for the 2nd layer: conv-relu.\n"," x = F.conv2d(x, conv_w2, conv_b2, padding=1)\n"," x = F.relu(x)\n"," # Flatten 'x' before passing it to the Fully-Connected layer,\n"," # i.e. Reshape it from (N, X, Y, Z) to (N, X*Y*Z).\n"," x = flatten(x)\n"," # Forward pass for the Fully-Connected layer. The output is 'scores'.\n"," scores = x.mm(fc_w) + fc_b\n","\n"," # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"," ################################################################################\n"," # END OF YOUR CODE #\n"," ################################################################################\n"," return scores"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"7nwYJyOYrsgC"},"source":["After defining the forward pass of the ConvNet above, run the following cell to test your implementation.\n","\n","When you run this function, scores should have shape (64, 10)."]},{"cell_type":"code","metadata":{"id":"barebones_output_shape","tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612962683595,"user_tz":-60,"elapsed":897,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"b813591f-4a6d-48d9-da41-b27722b22cd9"},"source":["def three_layer_convnet_test():\n"," x = torch.zeros((64, 3, 32, 32), dtype=dtype) # minibatch size 64, image size [3, 32, 32]\n","\n"," conv_w1 = torch.zeros((6, 3, 5, 5), dtype=dtype) # [out_channel, in_channel, kernel_H, kernel_W]\n"," conv_b1 = torch.zeros((6,)) # out_channel\n"," conv_w2 = torch.zeros((9, 6, 3, 3), dtype=dtype) # [out_channel, in_channel, kernel_H, kernel_W]\n"," conv_b2 = torch.zeros((9,)) # out_channel\n","\n"," # you must calculate the shape of the tensor after two conv layers, before the fully-connected layer\n"," fc_w = torch.zeros((9 * 32 * 32, 10))\n"," fc_b = torch.zeros(10)\n","\n"," scores = three_layer_convnet(x, [conv_w1, conv_b1, conv_w2, conv_b2, fc_w, fc_b])\n"," print(scores.size()) # you should see [64, 10]\n","three_layer_convnet_test()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["torch.Size([64, 10])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"b3DCUu84rsgC"},"source":["### Barebones PyTorch: Initialization\n","Let's write a couple utility methods to initialize the weight matrices for our models.\n","\n","- `random_weight(shape)` initializes a weight tensor with the Kaiming normalization method.\n","- `zero_weight(shape)` initializes a weight tensor with all zeros. Useful for instantiating bias parameters.\n","\n","The `random_weight` function uses the Kaiming normal initialization method, described in:\n","\n","He et al, *Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification*, ICCV 2015, https://arxiv.org/abs/1502.01852"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"colab":{"base_uri":"https://localhost:8080/"},"id":"Z_uf4FNprsgD","executionInfo":{"status":"ok","timestamp":1613045152092,"user_tz":-60,"elapsed":11035,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"4ae4c813-4215-48fa-e412-90b7d3401e7f"},"source":["def random_weight(shape):\n"," \"\"\"\n"," Create random Tensors for weights; setting requires_grad=True means that we\n"," want to compute gradients for these Tensors during the backward pass.\n"," We use Kaiming normalization: sqrt(2 / fan_in)\n"," \"\"\"\n"," if len(shape) == 2: # FC weight\n"," fan_in = shape[0]\n"," else:\n"," fan_in = np.prod(shape[1:]) # conv weight [out_channel, in_channel, kH, kW]\n"," # randn is standard normal distribution generator. \n"," w = torch.randn(shape, device=device, dtype=dtype) * np.sqrt(2. / fan_in)\n"," w.requires_grad = True\n"," return w\n","\n","def zero_weight(shape):\n"," return torch.zeros(shape, device=device, dtype=dtype, requires_grad=True)\n","\n","# create a weight of shape [3 x 5]\n","# you should see the type `torch.cuda.FloatTensor` if you use GPU. \n","# Otherwise it should be `torch.FloatTensor`\n","random_weight((3, 5))"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["tensor([[ 0.7874, -0.0887, -0.8017, -0.5849, -0.4455],\n"," [-0.3519, 1.8577, 0.0149, -0.0672, 0.3022],\n"," [ 0.6553, 1.2048, 0.3870, 0.0475, 0.9038]], device='cuda:0',\n"," requires_grad=True)"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"JmymrlwLrsgD"},"source":["### Barebones PyTorch: Check Accuracy\n","When training the model we will use the following function to check the accuracy of our model on the training or validation sets.\n","\n","When checking accuracy we don't need to compute any gradients; as a result we don't need PyTorch to build a computational graph for us when we compute scores. To prevent a graph from being built we scope our computation under a `torch.no_grad()` context manager."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"HDYFHRa9rsgD"},"source":["def check_accuracy_part2(loader, model_fn, params):\n"," \"\"\"\n"," Check the accuracy of a classification model.\n"," \n"," Inputs:\n"," - loader: A DataLoader for the data split we want to check\n"," - model_fn: A function that performs the forward pass of the model,\n"," with the signature scores = model_fn(x, params)\n"," - params: List of PyTorch Tensors giving parameters of the model\n"," \n"," Returns: Nothing, but prints the accuracy of the model\n"," \"\"\"\n"," split = 'val' if loader.dataset.train else 'test'\n"," print('Checking accuracy on the %s set' % split)\n"," num_correct, num_samples = 0, 0\n"," with torch.no_grad():\n"," for x, y in loader:\n"," x = x.to(device=device, dtype=dtype) # move to device, e.g. GPU\n"," y = y.to(device=device, dtype=torch.int64)\n"," scores = model_fn(x, params)\n"," _, preds = scores.max(1)\n"," num_correct += (preds == y).sum()\n"," num_samples += preds.size(0)\n"," acc = float(num_correct) / num_samples\n"," print('Got %d / %d correct (%.2f%%)' % (num_correct, num_samples, 100 * acc))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"KlOhX4myrsgD"},"source":["### BareBones PyTorch: Training Loop\n","We can now set up a basic training loop to train our network. We will train the model using stochastic gradient descent without momentum. We will use `torch.functional.cross_entropy` to compute the loss; you can [read about it here](http://pytorch.org/docs/stable/nn.html#cross-entropy).\n","\n","The training loop takes as input the neural network function, a list of initialized parameters (`[w1, w2]` in our example), and learning rate."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore-input"],"id":"JPz2olLWrsgD"},"source":["def train_part2(model_fn, params, learning_rate):\n"," \"\"\"\n"," Train a model on CIFAR-10.\n"," \n"," Inputs:\n"," - model_fn: A Python function that performs the forward pass of the model.\n"," It should have the signature scores = model_fn(x, params) where x is a\n"," PyTorch Tensor of image data, params is a list of PyTorch Tensors giving\n"," model weights, and scores is a PyTorch Tensor of shape (N, C) giving\n"," scores for the elements in x.\n"," - params: List of PyTorch Tensors giving weights for the model\n"," - learning_rate: Python scalar giving the learning rate to use for SGD\n"," \n"," Returns: Nothing\n"," \"\"\"\n"," for t, (x, y) in enumerate(loader_train):\n"," # Move the data to the proper device (GPU or CPU)\n"," x = x.to(device=device, dtype=dtype)\n"," y = y.to(device=device, dtype=torch.long)\n","\n"," # Forward pass: compute scores and loss\n"," scores = model_fn(x, params)\n"," loss = F.cross_entropy(scores, y)\n","\n"," # Backward pass: PyTorch figures out which Tensors in the computational\n"," # graph has requires_grad=True and uses backpropagation to compute the\n"," # gradient of the loss with respect to these Tensors, and stores the\n"," # gradients in the .grad attribute of each Tensor.\n"," loss.backward()\n","\n"," # Update parameters. We don't want to backpropagate through the\n"," # parameter updates, so we scope the updates under a torch.no_grad()\n"," # context manager to prevent a computational graph from being built.\n"," with torch.no_grad():\n"," for w in params:\n"," w -= learning_rate * w.grad\n","\n"," # Manually zero the gradients after running the backward pass\n"," w.grad.zero_()\n","\n"," if t % print_every == 0:\n"," print('Iteration %d, loss = %.4f' % (t, loss.item()))\n"," check_accuracy_part2(loader_val, model_fn, params)\n"," print()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_0tcAT8ZrsgE"},"source":["### BareBones PyTorch: Train a Two-Layer Network\n","Now we are ready to run the training loop. We need to explicitly allocate tensors for the fully connected weights, `w1` and `w2`. \n","\n","Each minibatch of CIFAR has 64 examples, so the tensor shape is `[64, 3, 32, 32]`. \n","\n","After flattening, `x` shape should be `[64, 3 * 32 * 32]`. This will be the size of the first dimension of `w1`. \n","The second dimension of `w1` is the hidden layer size, which will also be the first dimension of `w2`. \n","\n","Finally, the output of the network is a 10-dimensional vector that represents the probability distribution over 10 classes. \n","\n","You don't need to tune any hyperparameters but you should see accuracies above 40% after training for one epoch."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"-0J-DW3VrsgE","executionInfo":{"status":"ok","timestamp":1612963604874,"user_tz":-60,"elapsed":93839,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"0597cd71-b642-469c-947d-2c6986ddd821"},"source":["hidden_layer_size = 4000\n","learning_rate = 1e-2\n","\n","w1 = random_weight((3 * 32 * 32, hidden_layer_size))\n","w2 = random_weight((hidden_layer_size, 10))\n","\n","train_part2(two_layer_fc, [w1, w2], learning_rate)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 3.0011\n","Checking accuracy on the val set\n","Got 150 / 1000 correct (15.00%)\n","\n","Iteration 100, loss = 2.3909\n","Checking accuracy on the val set\n","Got 367 / 1000 correct (36.70%)\n","\n","Iteration 200, loss = 2.0396\n","Checking accuracy on the val set\n","Got 317 / 1000 correct (31.70%)\n","\n","Iteration 300, loss = 1.9718\n","Checking accuracy on the val set\n","Got 426 / 1000 correct (42.60%)\n","\n","Iteration 400, loss = 1.7750\n","Checking accuracy on the val set\n","Got 418 / 1000 correct (41.80%)\n","\n","Iteration 500, loss = 1.9362\n","Checking accuracy on the val set\n","Got 436 / 1000 correct (43.60%)\n","\n","Iteration 600, loss = 1.6709\n","Checking accuracy on the val set\n","Got 443 / 1000 correct (44.30%)\n","\n","Iteration 700, loss = 1.3642\n","Checking accuracy on the val set\n","Got 473 / 1000 correct (47.30%)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"nd_HobRersgE"},"source":["### BareBones PyTorch: Training a ConvNet\n","\n","In the below you should use the functions defined above to train a three-layer convolutional network on CIFAR. The network should have the following architecture:\n","\n","1. Convolutional layer (with bias) with 32 5x5 filters, with zero-padding of 2\n","2. ReLU\n","3. Convolutional layer (with bias) with 16 3x3 filters, with zero-padding of 1\n","4. ReLU\n","5. Fully-connected layer (with bias) to compute scores for 10 classes\n","\n","You should initialize your weight matrices using the `random_weight` function defined above, and you should initialize your bias vectors using the `zero_weight` function above.\n","\n","You don't need to tune any hyperparameters, but if everything works correctly you should achieve an accuracy above 42% after one epoch."]},{"cell_type":"code","metadata":{"id":"barebones_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612964667521,"user_tz":-60,"elapsed":78494,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"170ff9e9-4d2d-4ab3-c692-707a62c2212f"},"source":["learning_rate = 3e-3\n","\n","channel_1 = 32\n","channel_2 = 16\n","\n","conv_w1 = None\n","conv_b1 = None\n","conv_w2 = None\n","conv_b2 = None\n","fc_w = None\n","fc_b = None\n","\n","################################################################################\n","# TODO: Initialize the parameters of a three-layer ConvNet. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","# conv_w1 shape is: (F1, C, H1, W1) = (32, 3, 5, 5).\n","# Where, F1: Number of filters, C: Number of channels, H1/W1: Filters height/width.\n","# The output shape is: (N, F1, H, W) = (64, 32, 32, 32).\n","# Where, N: Minibatch size, H/W: height/width of 'x'.\n","# Note that the `conv1` layer dimension was designed to preserve the 'x' original H/W.\n","conv_w1 = random_weight((channel_1, 3, 5, 5))\n","# Each filter has its own bias.\n","conv_b1 = zero_weight(channel_1)\n","# conv_w2 shape is: (F2, F1, H2, W2) = (16, 32, 3, 3).\n","# Output shape is: (N, F2, H, W) = (64, 16, 32, 32).\n","conv_w2 = random_weight((channel_2, channel_1, 3, 3))\n","conv_b2 = zero_weight(channel_2)\n","# fc_w shape is: (F2*H*W, Cls) = (16*32*32, 10), where 'Cls' is the number of classes.\n","# Output shape is: (N, Cls) = (64, 10).\n","fc_w = random_weight((channel_2*32*32, 10))\n","fc_b = zero_weight(10)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","################################################################################\n","# END OF YOUR CODE #\n","################################################################################\n","\n","params = [conv_w1, conv_b1, conv_w2, conv_b2, fc_w, fc_b]\n","train_part2(three_layer_convnet, params, learning_rate)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 3.5614\n","Checking accuracy on the val set\n","Got 116 / 1000 correct (11.60%)\n","\n","Iteration 100, loss = 1.7882\n","Checking accuracy on the val set\n","Got 367 / 1000 correct (36.70%)\n","\n","Iteration 200, loss = 1.7938\n","Checking accuracy on the val set\n","Got 406 / 1000 correct (40.60%)\n","\n","Iteration 300, loss = 1.7957\n","Checking accuracy on the val set\n","Got 427 / 1000 correct (42.70%)\n","\n","Iteration 400, loss = 1.5518\n","Checking accuracy on the val set\n","Got 450 / 1000 correct (45.00%)\n","\n","Iteration 500, loss = 1.5715\n","Checking accuracy on the val set\n","Got 468 / 1000 correct (46.80%)\n","\n","Iteration 600, loss = 1.4088\n","Checking accuracy on the val set\n","Got 482 / 1000 correct (48.20%)\n","\n","Iteration 700, loss = 1.3698\n","Checking accuracy on the val set\n","Got 487 / 1000 correct (48.70%)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"cS_Q0-5trsgE"},"source":["# Part III. PyTorch Module API\n","\n","Barebone PyTorch requires that we track all the parameter tensors by hand. This is fine for small networks with a few tensors, but it would be extremely inconvenient and error-prone to track tens or hundreds of tensors in larger networks.\n","\n","PyTorch provides the `nn.Module` API for you to define arbitrary network architectures, while tracking every learnable parameters for you. In Part II, we implemented SGD ourselves. PyTorch also provides the `torch.optim` package that implements all the common optimizers, such as RMSProp, Adagrad, and Adam. It even supports approximate second-order methods like L-BFGS! You can refer to the [doc](http://pytorch.org/docs/master/optim.html) for the exact specifications of each optimizer.\n","\n","To use the Module API, follow the steps below:\n","\n","1. Subclass `nn.Module`. Give your network class an intuitive name like `TwoLayerFC`. \n","\n","2. In the constructor `__init__()`, define all the layers you need as class attributes. Layer objects like `nn.Linear` and `nn.Conv2d` are themselves `nn.Module` subclasses and contain learnable parameters, so that you don't have to instantiate the raw tensors yourself. `nn.Module` will track these internal parameters for you. Refer to the [doc](http://pytorch.org/docs/master/nn.html) to learn more about the dozens of builtin layers. **Warning**: don't forget to call the `super().__init__()` first!\n","\n","3. In the `forward()` method, define the *connectivity* of your network. You should use the attributes defined in `__init__` as function calls that take tensor as input and output the \"transformed\" tensor. Do *not* create any new layers with learnable parameters in `forward()`! All of them must be declared upfront in `__init__`. \n","\n","After you define your Module subclass, you can instantiate it as an object and call it just like the NN forward function in part II.\n","\n","### Module API: Two-Layer Network\n","Here is a concrete example of a 2-layer fully connected network:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Uh71BkT7rsgE","executionInfo":{"status":"ok","timestamp":1612980408674,"user_tz":-60,"elapsed":815,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5a04d191-c318-471e-c074-74a228c8ca66"},"source":["class TwoLayerFC(nn.Module):\n"," def __init__(self, input_size, hidden_size, num_classes):\n"," super().__init__()\n"," # assign layer objects to class attributes\n"," self.fc1 = nn.Linear(input_size, hidden_size)\n"," # nn.init package contains convenient initialization methods\n"," # http://pytorch.org/docs/master/nn.html#torch-nn-init \n"," nn.init.kaiming_normal_(self.fc1.weight)\n"," self.fc2 = nn.Linear(hidden_size, num_classes)\n"," nn.init.kaiming_normal_(self.fc2.weight)\n"," \n"," def forward(self, x):\n"," # forward always defines connectivity\n"," x = flatten(x)\n"," scores = self.fc2(F.relu(self.fc1(x)))\n"," return scores\n","\n","def test_TwoLayerFC():\n"," input_size = 50\n"," x = torch.zeros((64, input_size), dtype=dtype) # minibatch size 64, feature dimension 50\n"," model = TwoLayerFC(input_size, 42, 10)\n"," scores = model(x)\n"," print(scores.size()) # you should see [64, 10]\n","test_TwoLayerFC()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["torch.Size([64, 10])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"J69sq7bwrsgF"},"source":["### Module API: Three-Layer ConvNet\n","It's your turn to implement a 3-layer ConvNet followed by a fully connected layer. The network architecture should be the same as in Part II:\n","\n","1. Convolutional layer with `channel_1` 5x5 filters with zero-padding of 2\n","2. ReLU\n","3. Convolutional layer with `channel_2` 3x3 filters with zero-padding of 1\n","4. ReLU\n","5. Fully-connected layer to `num_classes` classes\n","\n","You should initialize the weight matrices of the model using the Kaiming normal initialization method.\n","\n","**HINT**: http://pytorch.org/docs/stable/nn.html#conv2d\n","\n","After you implement the three-layer ConvNet, the `test_ThreeLayerConvNet` function will run your implementation; it should print `(64, 10)` for the shape of the output scores."]},{"cell_type":"code","metadata":{"id":"module_output_shape","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612980411014,"user_tz":-60,"elapsed":636,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"455f0641-9b20-456d-ec1f-f8033ccaa26b"},"source":["class ThreeLayerConvNet(nn.Module):\n"," def __init__(self, in_channel, channel_1, channel_2, num_classes):\n"," super().__init__()\n"," ########################################################################\n"," # TODO: Set up the layers you need for a three-layer ConvNet with the #\n"," # architecture defined above. #\n"," ########################################################################\n"," # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n"," # Define the 1st convolution layer and initialize its weights.\n"," self.conv1 = nn.Conv2d(in_channel, channel_1, 5, padding=2)\n"," nn.init.kaiming_normal_(self.conv1.weight)\n","\n"," # Define the 2nd convolution layer and initialize its weights.\n"," self.conv2 = nn.Conv2d(channel_1, channel_2, 3, padding=1)\n"," nn.init.kaiming_normal_(self.conv2.weight)\n","\n"," # Define the FC layer and initialize its weights. The FC 'hidden_size'\n"," # will be the result of flattening previous layer (conv2) output.\n"," hidden_size = channel_2 * 32 * 32\n"," self.fc = nn.Linear(hidden_size, num_classes)\n"," nn.init.kaiming_normal_(self.fc.weight)\n","\n"," # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"," ########################################################################\n"," # END OF YOUR CODE # \n"," ########################################################################\n","\n"," def forward(self, x):\n"," scores = None\n"," ########################################################################\n"," # TODO: Implement the forward function for a 3-layer ConvNet. you #\n"," # should use the layers you defined in __init__ and specify the #\n"," # connectivity of those layers in forward() #\n"," ########################################################################\n"," # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n"," # Forward 'x' through conv1-relu, then (the previous output) conv2-relu.\n"," convsout = F.relu(self.conv1(x))\n"," convsout = F.relu(self.conv2(convsout))\n","\n"," # Flatten 'convsout' to meet the FC layer 'dot' operation needed shape.\n"," convsout = flatten(convsout)\n"," # Forward flattened 'convsout' through the FC layer.\n"," scores = self.fc(convsout)\n","\n"," # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n"," ########################################################################\n"," # END OF YOUR CODE #\n"," ########################################################################\n"," return scores\n","\n","\n","def test_ThreeLayerConvNet():\n"," x = torch.zeros((64, 3, 32, 32), dtype=dtype) # minibatch size 64, image size [3, 32, 32]\n"," model = ThreeLayerConvNet(in_channel=3, channel_1=12, channel_2=8, num_classes=10)\n"," scores = model(x)\n"," print(scores.size()) # you should see [64, 10]\n","test_ThreeLayerConvNet()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["torch.Size([64, 10])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"YhqbTq3hrsgF"},"source":["### Module API: Check Accuracy\n","Given the validation or test set, we can check the classification accuracy of a neural network. \n","\n","This version is slightly different from the one in part II. You don't manually pass in the parameters anymore."]},{"cell_type":"code","metadata":{"id":"iAoDl2HPrsgF"},"source":["def check_accuracy_part34(loader, model):\n"," if loader.dataset.train:\n"," print('Checking accuracy on validation set')\n"," else:\n"," print('Checking accuracy on test set') \n"," num_correct = 0\n"," num_samples = 0\n"," model.eval() # set model to evaluation mode\n"," with torch.no_grad():\n"," for x, y in loader:\n"," x = x.to(device=device, dtype=dtype) # move to device, e.g. GPU\n"," y = y.to(device=device, dtype=torch.long)\n"," scores = model(x)\n"," _, preds = scores.max(1)\n"," num_correct += (preds == y).sum()\n"," num_samples += preds.size(0)\n"," acc = float(num_correct) / num_samples\n"," print('Got %d / %d correct (%.2f)' % (num_correct, num_samples, 100 * acc))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"jcAyzENarsgF"},"source":["### Module API: Training Loop\n","We also use a slightly different training loop. Rather than updating the values of the weights ourselves, we use an Optimizer object from the `torch.optim` package, which abstract the notion of an optimization algorithm and provides implementations of most of the algorithms commonly used to optimize neural networks."]},{"cell_type":"code","metadata":{"id":"6K4CP94ersgG"},"source":["def train_part34(model, optimizer, epochs=1):\n"," \"\"\"\n"," Train a model on CIFAR-10 using the PyTorch Module API.\n"," \n"," Inputs:\n"," - model: A PyTorch Module giving the model to train.\n"," - optimizer: An Optimizer object we will use to train the model\n"," - epochs: (Optional) A Python integer giving the number of epochs to train for\n"," \n"," Returns: Nothing, but prints model accuracies during training.\n"," \"\"\"\n"," model = model.to(device=device) # move the model parameters to CPU/GPU\n"," for e in range(epochs):\n"," for t, (x, y) in enumerate(loader_train):\n"," model.train() # put model to training mode\n"," x = x.to(device=device, dtype=dtype) # move to device, e.g. GPU\n"," y = y.to(device=device, dtype=torch.long)\n","\n"," scores = model(x)\n"," loss = F.cross_entropy(scores, y)\n","\n"," # Zero out all of the gradients for the variables which the optimizer\n"," # will update.\n"," optimizer.zero_grad()\n","\n"," # This is the backwards pass: compute the gradient of the loss with\n"," # respect to each parameter of the model.\n"," loss.backward()\n","\n"," # Actually update the parameters of the model using the gradients\n"," # computed by the backwards pass.\n"," optimizer.step()\n","\n"," if t % print_every == 0:\n"," print('Iteration %d, loss = %.4f' % (t, loss.item()))\n"," check_accuracy_part34(loader_val, model)\n"," print()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"gAqQ22TIrsgG"},"source":["### Module API: Train a Two-Layer Network\n","Now we are ready to run the training loop. In contrast to part II, we don't explicitly allocate parameter tensors anymore.\n","\n","Simply pass the input size, hidden layer size, and number of classes (i.e. output size) to the constructor of `TwoLayerFC`. \n","\n","You also need to define an optimizer that tracks all the learnable parameters inside `TwoLayerFC`.\n","\n","You don't need to tune any hyperparameters, but you should see model accuracies above 40% after training for one epoch."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e_D3kw6TrsgG","executionInfo":{"status":"ok","timestamp":1612981027711,"user_tz":-60,"elapsed":12584,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"6e29e337-cef5-4b4e-f171-e104a630ede6"},"source":["hidden_layer_size = 4000\n","learning_rate = 1e-2\n","model = TwoLayerFC(3 * 32 * 32, hidden_layer_size, 10)\n","optimizer = optim.SGD(model.parameters(), lr=learning_rate)\n","\n","train_part34(model, optimizer)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 3.7102\n","Checking accuracy on validation set\n","Got 155 / 1000 correct (15.50)\n","\n","Iteration 100, loss = 2.3134\n","Checking accuracy on validation set\n","Got 293 / 1000 correct (29.30)\n","\n","Iteration 200, loss = 2.0270\n","Checking accuracy on validation set\n","Got 369 / 1000 correct (36.90)\n","\n","Iteration 300, loss = 2.1297\n","Checking accuracy on validation set\n","Got 375 / 1000 correct (37.50)\n","\n","Iteration 400, loss = 2.1488\n","Checking accuracy on validation set\n","Got 393 / 1000 correct (39.30)\n","\n","Iteration 500, loss = 1.7130\n","Checking accuracy on validation set\n","Got 406 / 1000 correct (40.60)\n","\n","Iteration 600, loss = 2.0719\n","Checking accuracy on validation set\n","Got 422 / 1000 correct (42.20)\n","\n","Iteration 700, loss = 1.7595\n","Checking accuracy on validation set\n","Got 434 / 1000 correct (43.40)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"wpi5_r7prsgG"},"source":["### Module API: Train a Three-Layer ConvNet\n","You should now use the Module API to train a three-layer ConvNet on CIFAR. This should look very similar to training the two-layer network! You don't need to tune any hyperparameters, but you should achieve above above 45% after training for one epoch.\n","\n","You should train the model using stochastic gradient descent without momentum."]},{"cell_type":"code","metadata":{"id":"module_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612968725130,"user_tz":-60,"elapsed":78674,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d9e2035b-aa72-4bed-dc81-6b53f26fd493"},"source":["learning_rate = 3e-3\n","channel_1 = 32\n","channel_2 = 16\n","\n","model = None\n","optimizer = None\n","################################################################################\n","# TODO: Instantiate your ThreeLayerConvNet model and a corresponding optimizer #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","model = ThreeLayerConvNet(3, channel_1, channel_2, 10)\n","optimizer = optim.SGD(model.parameters(), lr=learning_rate)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","################################################################################\n","# END OF YOUR CODE \n","################################################################################\n","\n","train_part34(model, optimizer)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 4.2089\n","Checking accuracy on validation set\n","Got 126 / 1000 correct (12.60)\n","\n","Iteration 100, loss = 2.0443\n","Checking accuracy on validation set\n","Got 360 / 1000 correct (36.00)\n","\n","Iteration 200, loss = 1.6874\n","Checking accuracy on validation set\n","Got 404 / 1000 correct (40.40)\n","\n","Iteration 300, loss = 1.6971\n","Checking accuracy on validation set\n","Got 414 / 1000 correct (41.40)\n","\n","Iteration 400, loss = 1.4544\n","Checking accuracy on validation set\n","Got 436 / 1000 correct (43.60)\n","\n","Iteration 500, loss = 1.5368\n","Checking accuracy on validation set\n","Got 458 / 1000 correct (45.80)\n","\n","Iteration 600, loss = 1.6142\n","Checking accuracy on validation set\n","Got 473 / 1000 correct (47.30)\n","\n","Iteration 700, loss = 1.4258\n","Checking accuracy on validation set\n","Got 469 / 1000 correct (46.90)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"lt55JLfersgG"},"source":["# Part IV. PyTorch Sequential API\n","\n","Part III introduced the PyTorch Module API, which allows you to define arbitrary learnable layers and their connectivity. \n","\n","For simple models like a stack of feed forward layers, you still need to go through 3 steps: subclass `nn.Module`, assign layers to class attributes in `__init__`, and call each layer one by one in `forward()`. Is there a more convenient way? \n","\n","Fortunately, PyTorch provides a container Module called `nn.Sequential`, which merges the above steps into one. It is not as flexible as `nn.Module`, because you cannot specify more complex topology than a feed-forward stack, but it's good enough for many use cases.\n","\n","### Sequential API: Two-Layer Network\n","Let's see how to rewrite our two-layer fully connected network example with `nn.Sequential`, and train it using the training loop defined above.\n","\n","Again, you don't need to tune any hyperparameters here, but you shoud achieve above 40% accuracy after one epoch of training."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dBMORN-1rsgH","executionInfo":{"status":"ok","timestamp":1613045210865,"user_tz":-60,"elapsed":14344,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"dc5a0bb5-192f-451e-8a4c-87521b8b853c"},"source":["# We need to wrap `flatten` function in a module in order to stack it\n","# in nn.Sequential\n","class Flatten(nn.Module):\n"," def forward(self, x):\n"," return flatten(x)\n","\n","hidden_layer_size = 4000\n","learning_rate = 1e-2\n","\n","model = nn.Sequential(\n"," Flatten(),\n"," nn.Linear(3 * 32 * 32, hidden_layer_size),\n"," nn.ReLU(),\n"," nn.Linear(hidden_layer_size, 10),\n",")\n","\n","# you can use Nesterov momentum in optim.SGD\n","optimizer = optim.SGD(model.parameters(), lr=learning_rate,\n"," momentum=0.9, nesterov=True)\n","\n","train_part34(model, optimizer)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 2.2779\n","Checking accuracy on validation set\n","Got 193 / 1000 correct (19.30)\n","\n","Iteration 100, loss = 1.7511\n","Checking accuracy on validation set\n","Got 404 / 1000 correct (40.40)\n","\n","Iteration 200, loss = 2.2488\n","Checking accuracy on validation set\n","Got 445 / 1000 correct (44.50)\n","\n","Iteration 300, loss = 1.8177\n","Checking accuracy on validation set\n","Got 417 / 1000 correct (41.70)\n","\n","Iteration 400, loss = 2.1701\n","Checking accuracy on validation set\n","Got 421 / 1000 correct (42.10)\n","\n","Iteration 500, loss = 1.8686\n","Checking accuracy on validation set\n","Got 410 / 1000 correct (41.00)\n","\n","Iteration 600, loss = 1.9725\n","Checking accuracy on validation set\n","Got 454 / 1000 correct (45.40)\n","\n","Iteration 700, loss = 1.6522\n","Checking accuracy on validation set\n","Got 418 / 1000 correct (41.80)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"8OGT9_3prsgH"},"source":["### Sequential API: Three-Layer ConvNet\n","Here you should use `nn.Sequential` to define and train a three-layer ConvNet with the same architecture we used in Part III:\n","\n","1. Convolutional layer (with bias) with 32 5x5 filters, with zero-padding of 2\n","2. ReLU\n","3. Convolutional layer (with bias) with 16 3x3 filters, with zero-padding of 1\n","4. ReLU\n","5. Fully-connected layer (with bias) to compute scores for 10 classes\n","\n","You should initialize your weight matrices using the `random_weight` function defined above, and you should initialize your bias vectors using the `zero_weight` function above.\n","\n","You should optimize your model using stochastic gradient descent with Nesterov momentum 0.9.\n","\n","Again, you don't need to tune any hyperparameters but you should see accuracy above 55% after one epoch of training."]},{"cell_type":"code","metadata":{"id":"sequential_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1612978155370,"user_tz":-60,"elapsed":13755,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3b8a15f7-953b-400a-87b3-ffbe0fc91296"},"source":["channel_1 = 32\n","channel_2 = 16\n","learning_rate = 1e-2\n","\n","model = None\n","optimizer = None\n","\n","################################################################################\n","# TODO: Rewrite the 2-layer ConvNet with bias from Part III with the #\n","# Sequential API. #\n","################################################################################\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","model = nn.Sequential(\n"," nn.Conv2d(3, channel_1, 5, padding=2),\n"," nn.ReLU(),\n"," nn.Conv2d(channel_1, channel_2, 3, padding=1),\n"," nn.ReLU(),\n"," Flatten(),\n"," nn.Linear(channel_2 * 32 * 32, 10),\n",")\n","\n","optimizer = optim.SGD(model.parameters(), lr=learning_rate,\n"," momentum=0.9, nesterov=True)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","################################################################################\n","# END OF YOUR CODE \n","################################################################################\n","\n","train_part34(model, optimizer)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iteration 0, loss = 2.2968\n","Checking accuracy on validation set\n","Got 143 / 1000 correct (14.30)\n","\n","Iteration 100, loss = 1.3784\n","Checking accuracy on validation set\n","Got 437 / 1000 correct (43.70)\n","\n","Iteration 200, loss = 1.8402\n","Checking accuracy on validation set\n","Got 431 / 1000 correct (43.10)\n","\n","Iteration 300, loss = 1.4508\n","Checking accuracy on validation set\n","Got 540 / 1000 correct (54.00)\n","\n","Iteration 400, loss = 1.2942\n","Checking accuracy on validation set\n","Got 525 / 1000 correct (52.50)\n","\n","Iteration 500, loss = 1.2702\n","Checking accuracy on validation set\n","Got 567 / 1000 correct (56.70)\n","\n","Iteration 600, loss = 1.4534\n","Checking accuracy on validation set\n","Got 560 / 1000 correct (56.00)\n","\n","Iteration 700, loss = 1.0572\n","Checking accuracy on validation set\n","Got 580 / 1000 correct (58.00)\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"1QOnAYIWrsgH"},"source":["# Part V. CIFAR-10 open-ended challenge\n","\n","In this section, you can experiment with whatever ConvNet architecture you'd like on CIFAR-10. \n","\n","Now it's your job to experiment with architectures, hyperparameters, loss functions, and optimizers to train a model that achieves **at least 70%** accuracy on the CIFAR-10 **validation** set within 10 epochs. You can use the check_accuracy and train functions from above. You can use either `nn.Module` or `nn.Sequential` API. \n","\n","Describe what you did at the end of this notebook.\n","\n","Here are the official API documentation for each component. One note: what we call in the class \"spatial batch norm\" is called \"BatchNorm2D\" in PyTorch.\n","\n","* Layers in torch.nn package: http://pytorch.org/docs/stable/nn.html\n","* Activations: http://pytorch.org/docs/stable/nn.html#non-linear-activations\n","* Loss functions: http://pytorch.org/docs/stable/nn.html#loss-functions\n","* Optimizers: http://pytorch.org/docs/stable/optim.html\n","\n","\n","### Things you might try:\n","- **Filter size**: Above we used 5x5; would smaller filters be more efficient?\n","- **Number of filters**: Above we used 32 filters. Do more or fewer do better?\n","- **Pooling vs Strided Convolution**: Do you use max pooling or just stride convolutions?\n","- **Batch normalization**: Try adding spatial batch normalization after convolution layers and vanilla batch normalization after affine layers. Do your networks train faster?\n","- **Network architecture**: The network above has two layers of trainable parameters. Can you do better with a deep network? Good architectures to try include:\n"," - [conv-relu-pool]xN -> [affine]xM -> [softmax or SVM]\n"," - [conv-relu-conv-relu-pool]xN -> [affine]xM -> [softmax or SVM]\n"," - [batchnorm-relu-conv]xN -> [affine]xM -> [softmax or SVM]\n","- **Global Average Pooling**: Instead of flattening and then having multiple affine layers, perform convolutions until your image gets small (7x7 or so) and then perform an average pooling operation to get to a 1x1 image picture (1, 1 , Filter#), which is then reshaped into a (Filter#) vector. This is used in [Google's Inception Network](https://arxiv.org/abs/1512.00567) (See Table 1 for their architecture).\n","- **Regularization**: Add l2 weight regularization, or perhaps use Dropout.\n","\n","### Tips for training\n","For each network architecture that you try, you should tune the learning rate and other hyperparameters. When doing this there are a couple important things to keep in mind:\n","\n","- If the parameters are working well, you should see improvement within a few hundred iterations\n","- Remember the coarse-to-fine approach for hyperparameter tuning: start by testing a large range of hyperparameters for just a few training iterations to find the combinations of parameters that are working at all.\n","- Once you have found some sets of parameters that seem to work, search more finely around these parameters. You may need to train for more epochs.\n","- You should use the validation set for hyperparameter search, and save your test set for evaluating your architecture on the best parameters as selected by the validation set.\n","\n","### Going above and beyond\n","If you are feeling adventurous there are many other features you can implement to try and improve your performance. You are **not required** to implement any of these, but don't miss the fun if you have time!\n","\n","- Alternative optimizers: you can try Adam, Adagrad, RMSprop, etc.\n","- Alternative activation functions such as leaky ReLU, parametric ReLU, ELU, or MaxOut.\n","- Model ensembles\n","- Data augmentation\n","- New Architectures\n"," - [ResNets](https://arxiv.org/abs/1512.03385) where the input from the previous layer is added to the output.\n"," - [DenseNets](https://arxiv.org/abs/1608.06993) where inputs into previous layers are concatenated together.\n"," - [This blog has an in-depth overview](https://chatbotslife.com/resnets-highwaynets-and-densenets-oh-my-9bb15918ee32)\n","\n","### Have fun and happy training! "]},{"cell_type":"code","metadata":{"id":"sVG07TTuAnRE"},"source":["################################################################################\r\n","# Implement custom training and accuracy checking function. So that, printed #\r\n","# statistics are more adequate for hyperparameters tuning. #\r\n","################################################################################\r\n","def check_accuracy_cnn_cifar10(loader, model):\r\n"," '''\r\n"," Check accuracy of a PyTorch `model`.\r\n","\r\n"," Returns: Accuracy of `model` on `loader` data as a probability.\r\n"," '''\r\n"," num_correct, num_samples = 0, 0\r\n"," model.eval() # set model to evaluation mode\r\n"," with torch.no_grad(): # Prevent PyTorch of computing gradients\r\n"," for x, y in loader:\r\n"," x = x.to(device=device, dtype=dtype) # move to device, e.g. GPU\r\n"," y = y.to(device=device, dtype=torch.long)\r\n"," scores = model(x)\r\n"," _, preds = scores.max(1)\r\n"," num_correct += (preds == y).sum()\r\n"," num_samples += preds.size(0)\r\n"," acc = float(num_correct) / num_samples\r\n","\r\n"," return acc\r\n","\r\n","\r\n","def train_cnn_cifar10(model, optimizer, epochs=1, print_every=100):\r\n"," '''\r\n"," Train a model on CIFAR-10 using the PyTorch Module API.\r\n","\r\n"," Inputs:\r\n"," - model: A PyTorch Module giving the model to train.\r\n"," - optimizer: An Optimizer object we will use to train the model\r\n"," - epochs: (Optional) A Python integer giving the number of epochs to train for\r\n"," - print_every: (Optional) An integer giving the interval between statistics prints\r\n","\r\n"," Returns: Best model and its accuracy (based on validation accuracy),\r\n"," and prints model accuracies during training.\r\n"," '''\r\n"," best_model, best_accuracy = None, -1\r\n","\r\n"," model = model.to(device=device) # move the model parameters to CPU/GPU\r\n","\r\n"," for e in range(epochs):\r\n"," for t, (x, y) in enumerate(loader_train):\r\n"," model.train() # put model to training mode\r\n"," x = x.to(device=device, dtype=dtype) # move to device, e.g. GPU\r\n"," y = y.to(device=device, dtype=torch.long)\r\n","\r\n"," scores = model(x)\r\n"," loss = F.cross_entropy(scores, y)\r\n","\r\n"," # Zero out all of the gradients for the variables which the optimizer\r\n"," # will update.\r\n"," optimizer.zero_grad()\r\n","\r\n"," # This is the backwards pass: compute the gradient of the loss with\r\n"," # respect to each parameter of the model.\r\n"," loss.backward()\r\n","\r\n"," # Actually update the parameters of the model using the gradients\r\n"," # computed by the backwards pass.\r\n"," optimizer.step()\r\n","\r\n"," if t % print_every == 0:\r\n"," valacc = check_accuracy_cnn_cifar10(loader_val, model)\r\n","\r\n"," if valacc > best_accuracy:\r\n"," best_accuracy = valacc\r\n"," best_model = model\r\n","\r\n"," print('Epoch: %2d | Iteration: %3d | Loss: %2.4f | Accuracy: %.2f' \\\r\n"," % (e, t, loss.item(), valacc))\r\n"," \r\n"," best_train_acc = check_accuracy_cnn_cifar10(loader_train, best_model)\r\n"," print('\\nBest Train Accuracy: %.2f | Best Validation Accuracy: %.2f' \\\r\n"," % (best_train_acc, best_accuracy))\r\n","\r\n"," return best_model, best_accuracy\r\n","\r\n","################################################################################\r\n","# END OF ADDED CODE #\r\n","################################################################################"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"open_ended_accuracy","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613053721548,"user_tz":-60,"elapsed":194492,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e7504040-6ff4-4f72-96ee-fa7cdf2d1184"},"source":["################################################################################\n","# TODO: # \n","# Experiment with any architectures, optimizers, and hyperparameters. #\n","# Achieve AT LEAST 70% accuracy on the *validation set* within 10 epochs. #\n","# #\n","# Note that you can use the check_accuracy function to evaluate on either #\n","# the test set or the validation set, by passing either loader_test or #\n","# loader_val as the second argument to check_accuracy. You should not touch #\n","# the test set until you have finished your architecture and hyperparameter #\n","# tuning, and only run the test set once at the end to report a final value. #\n","################################################################################\n","model = None\n","optimizer = None\n","\n","# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","\n","C1, C2 = 256, 128\n","k1, k2 = 7, 5\n","p1, p2 = 3, 2\n","\n","p = 0.5\n","lr = 8e-4\n","\n","model = nn.Sequential(\n"," nn.BatchNorm2d(3),\n"," nn.Conv2d(3, C1, k1, padding=p1),\n"," nn.ReLU(),\n"," nn.MaxPool2d(2),\n"," nn.Dropout2d(p=p),\n","\n"," nn.BatchNorm2d(C1),\n"," nn.Conv2d(C1, C2, k2, padding=p2),\n"," nn.ReLU(),\n"," nn.MaxPool2d(2),\n"," nn.Dropout2d(p=p),\n","\n"," nn.BatchNorm2d(C2),\n"," Flatten(),\n"," nn.Linear(C2 * 8 * 8, 10),\n",")\n","\n","optimizer = optim.Adam(model.parameters(), lr=lr)\n","\n","# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n","################################################################################\n","# END OF YOUR CODE #\n","################################################################################\n","# You should get at least 70% accuracy\n","best_model, best_accuracy = train_cnn_cifar10(model, optimizer, epochs=10, print_every=200)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Epoch: 0 | Iteration: 0 | Loss: 2.3704 | Accuracy: 0.13\n","Epoch: 0 | Iteration: 200 | Loss: 1.6263 | Accuracy: 0.48\n","Epoch: 0 | Iteration: 400 | Loss: 1.5973 | Accuracy: 0.54\n","Epoch: 0 | Iteration: 600 | Loss: 1.5729 | Accuracy: 0.56\n","Epoch: 1 | Iteration: 0 | Loss: 1.7118 | Accuracy: 0.58\n","Epoch: 1 | Iteration: 200 | Loss: 1.5988 | Accuracy: 0.59\n","Epoch: 1 | Iteration: 400 | Loss: 1.4581 | Accuracy: 0.59\n","Epoch: 1 | Iteration: 600 | Loss: 1.4194 | Accuracy: 0.62\n","Epoch: 2 | Iteration: 0 | Loss: 1.3651 | Accuracy: 0.62\n","Epoch: 2 | Iteration: 200 | Loss: 1.2599 | Accuracy: 0.61\n","Epoch: 2 | Iteration: 400 | Loss: 1.2436 | Accuracy: 0.64\n","Epoch: 2 | Iteration: 600 | Loss: 1.2759 | Accuracy: 0.64\n","Epoch: 3 | Iteration: 0 | Loss: 1.0130 | Accuracy: 0.66\n","Epoch: 3 | Iteration: 200 | Loss: 1.2418 | Accuracy: 0.66\n","Epoch: 3 | Iteration: 400 | Loss: 1.0496 | Accuracy: 0.65\n","Epoch: 3 | Iteration: 600 | Loss: 1.3141 | Accuracy: 0.67\n","Epoch: 4 | Iteration: 0 | Loss: 0.9825 | Accuracy: 0.68\n","Epoch: 4 | Iteration: 200 | Loss: 1.0305 | Accuracy: 0.67\n","Epoch: 4 | Iteration: 400 | Loss: 1.1965 | Accuracy: 0.68\n","Epoch: 4 | Iteration: 600 | Loss: 1.3800 | Accuracy: 0.68\n","Epoch: 5 | Iteration: 0 | Loss: 1.0507 | Accuracy: 0.68\n","Epoch: 5 | Iteration: 200 | Loss: 1.0887 | Accuracy: 0.71\n","Epoch: 5 | Iteration: 400 | Loss: 1.0286 | Accuracy: 0.69\n","Epoch: 5 | Iteration: 600 | Loss: 0.9259 | Accuracy: 0.69\n","Epoch: 6 | Iteration: 0 | Loss: 0.7272 | Accuracy: 0.70\n","Epoch: 6 | Iteration: 200 | Loss: 0.9848 | Accuracy: 0.71\n","Epoch: 6 | Iteration: 400 | Loss: 1.0689 | Accuracy: 0.69\n","Epoch: 6 | Iteration: 600 | Loss: 1.1205 | Accuracy: 0.70\n","Epoch: 7 | Iteration: 0 | Loss: 1.0696 | Accuracy: 0.70\n","Epoch: 7 | Iteration: 200 | Loss: 0.7388 | Accuracy: 0.72\n","Epoch: 7 | Iteration: 400 | Loss: 0.8227 | Accuracy: 0.71\n","Epoch: 7 | Iteration: 600 | Loss: 1.1694 | Accuracy: 0.69\n","Epoch: 8 | Iteration: 0 | Loss: 0.8455 | Accuracy: 0.71\n","Epoch: 8 | Iteration: 200 | Loss: 0.8824 | Accuracy: 0.72\n","Epoch: 8 | Iteration: 400 | Loss: 1.3224 | Accuracy: 0.72\n","Epoch: 8 | Iteration: 600 | Loss: 0.8629 | Accuracy: 0.71\n","Epoch: 9 | Iteration: 0 | Loss: 0.6941 | Accuracy: 0.71\n","Epoch: 9 | Iteration: 200 | Loss: 0.7710 | Accuracy: 0.70\n","Epoch: 9 | Iteration: 400 | Loss: 0.9357 | Accuracy: 0.72\n","Epoch: 9 | Iteration: 600 | Loss: 1.0090 | Accuracy: 0.72\n","\n","Best Train Accuracy: 0.81 | Best Validation Accuracy: 0.72\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"ucrg0nFirsgH"},"source":["## Describe what you did \n","\n","In the cell below you should write an explanation of what you did, any additional features that you implemented, and/or any graphs that you made in the process of training and evaluating your network."]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"7tWzLG97rsgI"},"source":["My experiments roadmap is divided into three successive and complementary parts.\r\n","\r\n","### First Part\r\n","\r\n","Firstly, based on the architecture used previously in this notebook: `[conv-relu]x2 -> [affine]x1 -> [softmax]`, I started by adjusting architecture options themselves, more specifically: **Filter size**, **Kernel size**, use of **Dropout** and **Batch Normalization** as well as the types of **Activation functions**. After each parameter being adjusted, I move on to the next one keeping the best value of the previous parameter.\r\n","\r\n","The quality of a parameter value is based on the relationship between the **training accuracy** and the **validation accuracy** rate of the best model during training.\r\n","\r\n","Considering the large number of tested options/values, the presented results concern the network trained in **5 epochs** only (and **not 10**). In my opinion, this number is enough to get an idea about the quality of an option value.\r\n","\r\n","The detailed results of each parameter test are presented in tables.\r\n","\r\n","Let's start with the **number of the different filters** in the two convolutional layers. The best combination is: **32 (on the 1st layer) and 16 (on the 2nd layer)**. The choice is argued by the fact that the ratio of the train/val accuracy is the smallest (although it is similar to [64, 16], I chose [32, 16] because of its lightness). Details below.\r\n","\r\n","| conv 1 | conv 2 | Train Accuracy | Validation Accuracy | Best |\r\n","|:------:|:------:|:--------------:|:-------------------:|:----:|\r\n","| 16 | 32 | 0.93 | 0.64 | |\r\n","| 32 | 16 | 0.84 | 0.64 | X |\r\n","| 64 | 16 | 0.82 | 0.63 | |\r\n","| 16 | 64 | 0.97 | 0.65 | |\r\n","\r\n","Then, I moved to the **kernel size** of the filter. The best combination is: [5x5] (on the 1st layer) and [3x3] (on the 2nd layer). Details below.\r\n","\r\n","| conv 1 | conv 2 | Train Accuracy | Validation Accuracy | Best |\r\n","|:------:|:------:|:--------------:|:-------------------:|:----:|\r\n","| 5x5 | 3x3 | 0.64 | 0.66 | X |\r\n","| 5x5 | 5x5 | 0.75 | 0.62 | |\r\n","| 7x7 | 3x3 | 0.83 | 0.62 | |\r\n","| 7x7 | 5x5 | 0.72 | 0.59 | |\r\n","| 7x7 | 7x7 | 0.68 | 0.58 | |\r\n","\r\n","Afterward, I tested the **Dropout** on the first convolutional layer and on all the convolutional layers, this last option proved to be the best. Note that the Dropout was not applied to the FC layer since it's the output layer. Details below.\r\n","\r\n","| Option | Train Accuracy | Validation Accuracy | Best |\r\n","|:---------------------------:|:--------------:|:-------------------:|:----:|\r\n","| After first conv layer only | 0.73 | 0.60 | |\r\n","| After all conv layers | 0.67 | 0.61 | X |\r\n","\r\n","Then I added **Batch Normalization**. The best option is: Adding BN after each layer of the CNN. Details below.\r\n","\r\n","| Option | Train Accuracy | Validation Accuracy | Best |\r\n","|:-------------------------------:|:--------------:|:-------------------:|:----:|\r\n","| Before first conv layer only | 0.66 | 0.59 | |\r\n","| Before each conv layer | 0.64 | 0.59 | |\r\n","| Before each layer | 0.66 | 0.60 | X |\r\n","| Only before the FC hidden layer | 0.63 | 0.58 | |\r\n","\r\n","For the **activation functions**, I tested only two: **ReLU** and **Leaky ReLU**. Since ReLU is the current standard, I tested its variant to see if it can improve the accuracy rate. Finally, there was no improvement compared to the simple ReLU. Details below.\r\n","\r\n","| Option | Train Accuracy | Validation Accuracy | Best |\r\n","|:-------------------------:|:--------------:|:-------------------:|:----:|\r\n","| Use ReLU activation | 0.65 | 0.59 | X |\r\n","| Use Leaky ReLU activation | 0.63 | 0.58 | |\r\n","\r\n","### Second Part\r\n","\r\n","Secondly, I tested two different **architecture structures** (as suggested in the exercise description). Details below.\r\n","\r\n","| Architecture Structure | N | M | Train Accuracy | Validation Accuracy | Best |\r\n","|:-------------------------------------------------------:|:-:|:-:|:--------------:|:-------------------:|:----:|\r\n","| [conv-relu-pool]xN -> [affine]xM -> [softmax] | 1 | 1 | 0.67 | 0.61 | |\r\n","| [conv-relu-pool]xN -> [affine]xM -> [softmax] | 1 | 2 | 0.77 | 0.65 | |\r\n","| [conv-relu-pool]xN -> [affine]xM -> [softmax] | 2 | 1 | 0.60 | 0.60 | X |\r\n","| [conv-relu-pool]xN -> [affine]xM -> [softmax] | 3 | 1 | 0.47 | 0.48 | |\r\n","| [conv-relu-pool]xN -> [affine]xM -> [softmax] | 3 | 2 | 0.46 | 0.49 | |\r\n","| [conv-relu-conv-relu-pool]xN -> [affine]xM -> [softmax] | 1 | 1 | 0.62 | 0.58 | |\r\n","| [conv-relu-conv-relu-pool]xN -> [affine]xM -> [softmax] | 2 | 1 | 0.49 | 0.51 | |\r\n","\r\n","For the best architecture, I dug a little bit into the **number/size of filters**, and it only did good, I was able to improve the accuracy rate of the validation. Details below.\r\n","\r\n","| Filters in conv 1 | Filters in conv 2 | Train Accuracy | Validation Accuracy | Best |\r\n","|:------------------:|:------------------:|:--------------:|:-------------------:|:----:|\r\n","| 32 | 16 | 0.60 | 0.60 | |\r\n","| 64 | 16 | 0.61 | 0.62 | |\r\n","| 64 | 32 | 0.66 | 0.63 | |\r\n","| 128 | 64 | 0.71 | 0.67 | X |\r\n","\r\n","| Filters kernel in conv 1 | Filters kernel in conv 2 | Train Accuracy | Validation Accuracy | Best |\r\n","|:------------------------:|:-------------------------:|:--------------:|:-------------------:|:----:|\r\n","| 5x5 | 3x3 | 0.74 | 0.69 | |\r\n","| 7x7 | 5x5 | 0.73 | 0.69 | X |\r\n","\r\n","### Third Part\r\n","\r\n","Thirdly, I adjusted the hyperparameters.\r\n","\r\n","I started with the **learning-rate** and the **decay learning-rate**. I noticed that adding the **decay lr** deteriorated the accuracy rate, so I reset it to **1 (no decay lr)** for further testing. The best value of the lr is: $8 * 10^{-4}$. Details below.\r\n","\r\n","| Learning-rate | decay lr | Train Accuracy | Validation Accuracy | Best |\r\n","|:-------------:|:--------:|:--------------:|:-------------------:|:----:|\r\n","| 5.1e-3 | 0.97 | 0.42 | 0.45 | |\r\n","| 8.77e-3 | 0.87 | 0.32 | 0.32 | |\r\n","| 4.3e-3 | 0.89 | 0.34 | 0.36 | |\r\n","| 1e-4 | 1 | 0.70 | 0.67 | |\r\n","| 5e-4 | 1 | 0.47 | 0.69 | |\r\n","| 8e-4 | 1 | 0.74 | 0.70 | X |\r\n","| 1e-3 | 1 | 0.74 | 0.68 | |\r\n","| 5e-3 | 1 | 0.69 | 0.66 | |\r\n","| 8e-3 | 1 | 0.65 | 0.64 | |\r\n","| 1e-2 | 1 | 0.65 | 0.63 | |\r\n","| 5e-2 | 1 | 0.45 | 0.49 | |\r\n","\r\n","Finally, I played around with the **dropout** `p` parameter. The conclusion is that **0.5** was already the best value. Details below.\r\n","\r\n","| p | Train Accuracy | Validation Accuracy | Best |\r\n","|:---:|:--------------:|:-------------------:|:----:|\r\n","| 0.3 | 0.80 | 0.70 | |\r\n","| 0.4 | 0.76 | 0.70 | |\r\n","| 0.5 | 0.73 | 0.69 | X |\r\n","| 0.6 | 0.70 | 0.65 | |\r\n","| 0.7 | 0.64 | 0.62 | |\r\n","| 0.8 | 0.58 | 0.58 | |\r\n","\r\n","Note that I did not add **L2 regularization**, since using **Dropout** has already done a similar job (as explained in the course notes).\r\n","\r\n","### Final Result\r\n","\r\n","To resume, the best final configuration is:\r\n","\r\n","- **Architecture:** `[batchnorm-conv-relu-pool-dropout]x2 -> [batchnorm-affine] -> [softmax]`\r\n","- **Filter number/size:** `256 x [5x5] (in conv 1)`, and `128 x [3x3] (in conv 2)`.\r\n","- **Dropout:** `p = 0.5`.\r\n","- **Learning-rate:** `8e-4` (without learning-rate decay).\r\n","\r\n","The final results are shown below (on the best model, trained in **10 epochs**).\r\n","\r\n","| Train Loss | Train Accuracy | Validation Accuracy | Test Accuracy |\r\n","|:----------:|:--------------:|:-------------------:|:-------------:|\r\n","| 0.739 | 81 % | 72 % | 72.71 % |\r\n","\r\n","Note that I have not touched the other *exotic possibilities* (such as **data augmentation**, **adapting existing architectures**, or **transfer learning**), I suppose that the use of these things could push the validation/test accuracy higher."]},{"cell_type":"markdown","metadata":{"id":"7YOdowunrsgI"},"source":["## Test set -- run this only once\n","\n","Now that we've gotten a result we're happy with, we test our final model on the test set (which you should store in best_model). Think about how this compares to your validation set accuracy."]},{"cell_type":"code","metadata":{"id":"CPF9FXhzrsgI","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613053782023,"user_tz":-60,"elapsed":2742,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"8223cff1-f135-45af-8d01-d9377cf513cf"},"source":["best_model = model\n","check_accuracy_part34(loader_test, best_model)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Checking accuracy on test set\n","Got 7271 / 10000 correct (72.71)\n"],"name":"stdout"}]}]} ================================================ FILE: cs231n/assignment2/README.md ================================================ # Goals In this assignment you will practice writing backpropagation code, and training Neural Networks and Convolutional Neural Networks. The goals of this assignment are as follows: - Understand **Neural Networks** and how they are arranged in layered architectures. - Understand and be able to implement (vectorized) **backpropagation**. - Implement various **update rules** used to optimize Neural Networks. - Implement **Batch Normalization** and **Layer Normalization** for training deep networks. - Implement **Dropout** to regularize networks. - Understand the architecture of **Convolutional Neural Networks** and get practice with training them. - Gain experience with a major deep learning framework: **PyTorch**. # Questions ## Q1: Fully-connected Neural Network The notebook [``FullyConnectedNets.ipynb``](FullyConnectedNets.ipynb) will introduce you to our modular layer design, and then use those layers to implement fully-connected networks of arbitrary depth. To optimize these models you will implement several popular update rules. ## Q2: Batch Normalization In notebook [``BatchNormalization.ipynb``](BatchNormalization.ipynb) you will implement batch normalization, and use it to train deep fully-connected networks. ## Q3: Dropout The notebook [``Dropout.ipynb``](Dropout.ipynb) will help you implement Dropout and explore its effects on model generalization. ## Q4: Convolutional Networks In the IPython Notebook [``ConvolutionalNetworks.ipynb``](ConvolutionalNetworks.ipynb) you will implement several new layers that are commonly used in convolutional networks. ## Q5: PyTorch on CIFAR-10 For this last part, you will be working in PyTorch, a popular and powerful deep learning framework. Open up [``PyTorch.ipynb``](PyTorch.ipynb). There, you will learn how the framework works, culminating in training a convolutional network of your own design on CIFAR-10 to get the best performance you can. ================================================ FILE: cs231n/assignment2/cs231n/__init__.py ================================================ ================================================ FILE: cs231n/assignment2/cs231n/classifiers/__init__.py ================================================ ================================================ FILE: cs231n/assignment2/cs231n/classifiers/cnn.py ================================================ from builtins import object import numpy as np from ..layers import * from ..fast_layers import * from ..layer_utils import * class ThreeLayerConvNet(object): """ A three-layer convolutional network with the following architecture: conv - relu - 2x2 max pool - affine - relu - affine - softmax The network operates on minibatches of data that have shape (N, C, H, W) consisting of N images, each with height H and width W and with C input channels. """ def __init__( self, input_dim=(3, 32, 32), num_filters=32, filter_size=7, hidden_dim=100, num_classes=10, weight_scale=1e-3, reg=0.0, dtype=np.float32, ): """ Initialize a new network. Inputs: - input_dim: Tuple (C, H, W) giving size of input data - num_filters: Number of filters to use in the convolutional layer - filter_size: Width/height of filters to use in the convolutional layer - hidden_dim: Number of units to use in the fully-connected hidden layer - num_classes: Number of scores to produce from the final affine layer. - weight_scale: Scalar giving standard deviation for random initialization of weights. - reg: Scalar giving L2 regularization strength - dtype: numpy datatype to use for computation. """ self.params = {} self.reg = reg self.dtype = dtype ############################################################################ # TODO: Initialize weights and biases for the three-layer convolutional # # network. Weights should be initialized from a Gaussian centered at 0.0 # # with standard deviation equal to weight_scale; biases should be # # initialized to zero. All weights and biases should be stored in the # # dictionary self.params. Store weights and biases for the convolutional # # layer using the keys 'W1' and 'b1'; use keys 'W2' and 'b2' for the # # weights and biases of the hidden affine layer, and keys 'W3' and 'b3' # # for the weights and biases of the output affine layer. # # # # IMPORTANT: For this assignment, you can assume that the padding # # and stride of the first convolutional layer are chosen so that # # **the width and height of the input are preserved**. Take a look at # # the start of the loss() function to see how that happens. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # W1 shape is: F, C, filter_size, filter_size. W1shape = (num_filters, input_dim[0], filter_size, filter_size) self.params['W1'] = np.random.normal(0.0, weight_scale, W1shape) self.params['b1'] = np.zeros(num_filters) # Standard fully-connected net. # W2 shape (2nd part) is the flattening result of the conv-relu-pool layer output. inlayer_size = num_filters * input_dim[1]//2 * input_dim[2]//2 W2shape = (inlayer_size, hidden_dim) self.params['W2'] = np.random.normal(0.0, weight_scale, W2shape) self.params['b2'] = np.zeros(hidden_dim) W3shape = (hidden_dim, num_classes) self.params['W3'] = np.random.normal(0.0, weight_scale, W3shape) self.params['b3'] = np.zeros(num_classes) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ for k, v in self.params.items(): self.params[k] = v.astype(dtype) def loss(self, X, y=None): """ Evaluate loss and gradient for the three-layer convolutional network. Input / output: Same API as TwoLayerNet in fc_net.py. """ W1, b1 = self.params["W1"], self.params["b1"] W2, b2 = self.params["W2"], self.params["b2"] W3, b3 = self.params["W3"], self.params["b3"] # pass conv_param to the forward pass for the convolutional layer # Padding and stride chosen to preserve the input spatial size filter_size = W1.shape[2] conv_param = {"stride": 1, "pad": (filter_size - 1) // 2} # pass pool_param to the forward pass for the max-pooling layer pool_param = {"pool_height": 2, "pool_width": 2, "stride": 2} scores = None ############################################################################ # TODO: Implement the forward pass for the three-layer convolutional net, # # computing the class scores for X and storing them in the scores # # variable. # # # # Remember you can use the functions defined in cs231n/fast_layers.py and # # cs231n/layer_utils.py in your implementation (already imported). # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, C, H, W = X.shape F = W1.shape[0] # Compute the conv-relu-pool layer forward pass, and store the output in 'convout'. convout, conv_cache = conv_relu_pool_forward(X, W1, b1, conv_param, pool_param) # Reshape 'convout' to match the hidden layer size (input to the Fully-Connected net). convout = convout.reshape(N, W2.shape[0]) # Compute the hidden layer (affine-relu) forward pass, and store the output in 'hidout'. hidout, hid_cache = affine_relu_forward(convout, W2, b2) # Compute the output layer (affine) forward pass, and store the output in 'scores'. scores, scores_cache = affine_forward(hidout, W3, b3) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ if y is None: return scores loss, grads = 0, {} ############################################################################ # TODO: Implement the backward pass for the three-layer convolutional net, # # storing the loss and gradients in the loss and grads variables. Compute # # data loss using softmax, and make sure that grads[k] holds the gradients # # for self.params[k]. Don't forget to add L2 regularization! # # # # NOTE: To ensure that your implementation matches ours and you pass the # # automated tests, make sure that your L2 regularization includes a factor # # of 0.5 to simplify the expression for the gradient. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Compute the "raw" loss (without L2 regularization). loss, d_socres = softmax_loss(scores, y) # Add L2 regularization to the loss reg_weights = np.sum(W1**2) + np.sum(W2**2) + np.sum(W3**2) loss += 0.5 * self.reg * reg_weights # Backward pass implementation. # Compute the output layer (affine) backward pass. d_hidout, dw3, db3 = affine_backward(d_socres, scores_cache) # Compute the hidden layer (affine-relu) backward pass. d_convout, dw2, db2 = affine_relu_backward(d_hidout, hid_cache) # Reshape 'd_convout' to match 'convout' original (non-reshaped) size. d_convout = d_convout.reshape(N, F, H//2, W//2) # Compute the input layer (conv-relu-pool) backward pass. dx, dw1, db1 = conv_relu_pool_backward(d_convout, conv_cache) # Assign the weights gradients (with their corresponding L2 regularization derivate). grads['W1'] = dw1 + self.reg * np.sum(W1) grads['W2'] = dw2 + self.reg * np.sum(W2) grads['W3'] = dw3 + self.reg * np.sum(W3) # Assign the biases gradients. grads['b1'], grads['b2'], grads['b3'] = db1, db2, db3 # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ return loss, grads ================================================ FILE: cs231n/assignment2/cs231n/classifiers/fc_net.py ================================================ from builtins import range from builtins import object import numpy as np from ..layers import * from ..layer_utils import * class TwoLayerNet(object): """ A two-layer fully-connected neural network with ReLU nonlinearity and softmax loss that uses a modular layer design. We assume an input dimension of D, a hidden dimension of H, and perform classification over C classes. The architecure should be affine - relu - affine - softmax. Note that this class does not implement gradient descent; instead, it will interact with a separate Solver object that is responsible for running optimization. The learnable parameters of the model are stored in the dictionary self.params that maps parameter names to numpy arrays. """ def __init__( self, input_dim=3 * 32 * 32, hidden_dim=100, num_classes=10, weight_scale=1e-3, reg=0.0, ): """ Initialize a new network. Inputs: - input_dim: An integer giving the size of the input - hidden_dim: An integer giving the size of the hidden layer - num_classes: An integer giving the number of classes to classify - weight_scale: Scalar giving the standard deviation for random initialization of the weights. - reg: Scalar giving L2 regularization strength. """ self.params = {} self.reg = reg ############################################################################ # TODO: Initialize the weights and biases of the two-layer net. Weights # # should be initialized from a Gaussian centered at 0.0 with # # standard deviation equal to weight_scale, and biases should be # # initialized to zero. All weights and biases should be stored in the # # dictionary self.params, with first layer weights # # and biases using the keys 'W1' and 'b1' and second layer # # weights and biases using the keys 'W2' and 'b2'. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** self.params['b1'] = np.zeros(hidden_dim) self.params['b2'] = np.zeros(num_classes) self.params['W1'] = np.random.normal(0.0, weight_scale, (input_dim, hidden_dim)) self.params['W2'] = np.random.normal(0.0, weight_scale, (hidden_dim, num_classes)) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ def loss(self, X, y=None): """ Compute loss and gradient for a minibatch of data. Inputs: - X: Array of input data of shape (N, d_1, ..., d_k) - y: Array of labels, of shape (N,). y[i] gives the label for X[i]. Returns: If y is None, then run a test-time forward pass of the model and return: - scores: Array of shape (N, C) giving classification scores, where scores[i, c] is the classification score for X[i] and class c. If y is not None, then run a training-time forward and backward pass and return a tuple of: - loss: Scalar value giving the loss - grads: Dictionary with the same keys as self.params, mapping parameter names to gradients of the loss with respect to those parameters. """ scores = None ############################################################################ # TODO: Implement the forward pass for the two-layer net, computing the # # class scores for X and storing them in the scores variable. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** z1, z1_cache = affine_relu_forward(X, self.params['W1'], self.params['b1']) a2, a2_cache = affine_forward(z1, self.params['W2'], self.params['b2']) scores = a2 # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ # If y is None then we are in test mode so just return scores if y is None: return scores loss, grads = 0, {} ############################################################################ # TODO: Implement the backward pass for the two-layer net. Store the loss # # in the loss variable and gradients in the grads dictionary. Compute data # # loss using softmax, and make sure that grads[k] holds the gradients for # # self.params[k]. Don't forget to add L2 regularization! # # # # NOTE: To ensure that your implementation matches ours and you pass the # # automated tests, make sure that your L2 regularization includes a factor # # of 0.5 to simplify the expression for the gradient. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** loss, d_scores = softmax_loss(scores, y) reg_weights = np.sum(self.params['W1']**2) + np.sum(self.params['W2']**2) loss += 0.5 * self.reg * reg_weights d_z1, d_W2, d_b2 = affine_backward(d_scores, a2_cache) d_x, d_W1, d_b1 = affine_relu_backward(d_z1, z1_cache) grads['b2'] = d_b2 grads['W2'] = d_W2 + self.reg * self.params['W2'] grads['b1'] = d_b1 grads['W1'] = d_W1 + self.reg * self.params['W1'] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ return loss, grads ############################################################################ # Define additional helper layer which takes into account the Batch/Layer # # Normalization (Forward and Backward pass). # ############################################################################ def affine_norm_relu_forward(x, w, b, gamma, beta, n_param, normalization): """ Convenience layer that perorms an affine transform followed by a Batch/Layer Normalization, and a ReLU Inputs: - x: Input to the affine layer - w, b: Weights for the affine layer - gamma, beta, n_param: Batch/Layer Normalization parameters - normalization: Indicate the Normalization type, Batch or Layer Returns a tuple of: - out: Output from the ReLU - cache: Object to give to the backward pass """ a1, fc_cache = affine_forward(x, w, b) if normalization == 'batchnorm': a2, norm_cache = batchnorm_forward(a1, gamma, beta, n_param) elif normalization == 'layernorm': a2, norm_cache = layernorm_forward(a1, gamma, beta, n_param) out, relu_cache = relu_forward(a2) cache = (fc_cache, norm_cache, relu_cache) return out, cache def affine_norm_relu_backward(dout, cache, normalization): """ Backward pass for the affine-norm-relu convenience layer """ fc_cache, n_cache, relu_cache = cache da1 = relu_backward(dout, relu_cache) if normalization == 'batchnorm': da2, dgamma, dbeta = batchnorm_backward_alt(da1, n_cache) elif normalization == 'layernorm': da2, dgamma, dbeta = layernorm_backward(da1, n_cache) dx, dw, db = affine_backward(da2, fc_cache) return dx, dw, db, dgamma, dbeta ############################################################################ # END OF THE ADDITIONAL CODE # ############################################################################ class FullyConnectedNet(object): """ A fully-connected neural network with an arbitrary number of hidden layers, ReLU nonlinearities, and a softmax loss function. This will also implement dropout and batch/layer normalization as options. For a network with L layers, the architecture will be {affine - [batch/layer norm] - relu - [dropout]} x (L - 1) - affine - softmax where batch/layer normalization and dropout are optional, and the {...} block is repeated L - 1 times. Similar to the TwoLayerNet above, learnable parameters are stored in the self.params dictionary and will be learned using the Solver class. """ def __init__( self, hidden_dims, input_dim=3 * 32 * 32, num_classes=10, dropout=1, normalization=None, reg=0.0, weight_scale=1e-2, dtype=np.float32, seed=None, ): """ Initialize a new FullyConnectedNet. Inputs: - hidden_dims: A list of integers giving the size of each hidden layer. - input_dim: An integer giving the size of the input. - num_classes: An integer giving the number of classes to classify. - dropout: Scalar between 0 and 1 giving dropout strength. If dropout=1 then the network should not use dropout at all. - normalization: What type of normalization the network should use. Valid values are "batchnorm", "layernorm", or None for no normalization (the default). - reg: Scalar giving L2 regularization strength. - weight_scale: Scalar giving the standard deviation for random initialization of the weights. - dtype: A numpy datatype object; all computations will be performed using this datatype. float32 is faster but less accurate, so you should use float64 for numeric gradient checking. - seed: If not None, then pass this random seed to the dropout layers. This will make the dropout layers deteriminstic so we can gradient check the model. """ self.normalization = normalization self.use_dropout = dropout != 1 self.reg = reg self.num_layers = 1 + len(hidden_dims) self.dtype = dtype self.params = {} ############################################################################ # TODO: Initialize the parameters of the network, storing all values in # # the self.params dictionary. Store weights and biases for the first layer # # in W1 and b1; for the second layer use W2 and b2, etc. Weights should be # # initialized from a normal distribution centered at 0 with standard # # deviation equal to weight_scale. Biases should be initialized to zero. # # # # When using batch normalization, store scale and shift parameters for the # # first layer in gamma1 and beta1; for the second layer use gamma2 and # # beta2, etc. Scale parameters should be initialized to ones and shift # # parameters should be initialized to zeros. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** hidden_dims.append(num_classes) for layer_idx, layer_dim in enumerate(hidden_dims): if layer_idx == 0: prev_layer_dim = input_dim else: prev_layer_dim = hidden_dims[layer_idx-1] weights_name = 'W' + str(layer_idx+1) weights_dim = (prev_layer_dim, layer_dim) biases_name = 'b' + str(layer_idx+1) self.params[weights_name] = np.random.normal(0.0, weight_scale, weights_dim) self.params[biases_name] = np.zeros(layer_dim) # Add Batch/Layer Normalization layer parameter initialization (Beta and Gamma). # Don't apply Batch/Layer Normalization on the output layer. if self.normalization and layer_idx < self.num_layers-1: self.params['gamma' + str(layer_idx+1)] = np.ones(layer_dim) self.params['beta' + str(layer_idx+1)] = np.zeros(layer_dim) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ # When using dropout we need to pass a dropout_param dictionary to each # dropout layer so that the layer knows the dropout probability and the mode # (train / test). You can pass the same dropout_param to each dropout layer. self.dropout_param = {} if self.use_dropout: self.dropout_param = {"mode": "train", "p": dropout} if seed is not None: self.dropout_param["seed"] = seed # With batch normalization we need to keep track of running means and # variances, so we need to pass a special bn_param object to each batch # normalization layer. You should pass self.bn_params[0] to the forward pass # of the first batch normalization layer, self.bn_params[1] to the forward # pass of the second batch normalization layer, etc. self.bn_params = [] if self.normalization == "batchnorm": self.bn_params = [{"mode": "train"} for i in range(self.num_layers - 1)] if self.normalization == "layernorm": self.bn_params = [{} for i in range(self.num_layers - 1)] # Cast all parameters to the correct datatype for k, v in self.params.items(): self.params[k] = v.astype(dtype) def loss(self, X, y=None): """ Compute loss and gradient for the fully-connected net. Input / output: Same as TwoLayerNet above. """ X = X.astype(self.dtype) mode = "test" if y is None else "train" # Set train/test mode for batchnorm params and dropout param since they # behave differently during training and testing. if self.use_dropout: self.dropout_param["mode"] = mode if self.normalization == "batchnorm": for bn_param in self.bn_params: bn_param["mode"] = mode scores = None ############################################################################ # TODO: Implement the forward pass for the fully-connected net, computing # # the class scores for X and storing them in the scores variable. # # # # When using dropout, you'll need to pass self.dropout_param to each # # dropout forward pass. # # # # When using batch normalization, you'll need to pass self.bn_params[0] to # # the forward pass for the first batch normalization layer, pass # # self.bn_params[1] to the forward pass for the second batch normalization # # layer, etc. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** cache_layers, dp_cache_layers, last_output = [], [], None reg_weights = 0 for layer_idx in range(self.num_layers): weights = self.params['W' + str(layer_idx+1)] biases = self.params['b' + str(layer_idx+1)] if layer_idx == 0: last_output = X if layer_idx == self.num_layers-1: last_output, cache = affine_forward(last_output, weights, biases) else: if self.normalization: last_output, cache = affine_norm_relu_forward(last_output, weights, biases, self.params['gamma' + str(layer_idx+1)], self.params['beta' + str(layer_idx+1)], self.bn_params[layer_idx], self.normalization) else: last_output, cache = affine_relu_forward(last_output, weights, biases) if self.use_dropout: last_output, dp_cache = dropout_forward(last_output, self.dropout_param) dp_cache_layers.append(dp_cache) cache_layers.append(cache) reg_weights += np.sum(weights**2) scores = last_output # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ # If test mode return early if mode == "test": return scores loss, grads = 0.0, {} ############################################################################ # TODO: Implement the backward pass for the fully-connected net. Store the # # loss in the loss variable and gradients in the grads dictionary. Compute # # data loss using softmax, and make sure that grads[k] holds the gradients # # for self.params[k]. Don't forget to add L2 regularization! # # # # When using batch/layer normalization, you don't need to regularize the scale # # and shift parameters. # # # # NOTE: To ensure that your implementation matches ours and you pass the # # automated tests, make sure that your L2 regularization includes a factor # # of 0.5 to simplify the expression for the gradient. # ############################################################################ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** loss, d_scores = softmax_loss(scores, y) loss += 0.5 * self.reg * reg_weights d_layer = None for layer_idx in range(self.num_layers-1, -1, -1): weights_name = 'W' + str(layer_idx+1) biases_name = 'b' + str(layer_idx+1) if layer_idx == self.num_layers-1: d_layer, d_W, d_b = affine_backward(d_scores, cache_layers[layer_idx]) else: if self.use_dropout: d_layer = dropout_backward(d_layer, dp_cache_layers[layer_idx]) if self.normalization: d_layer, d_W, d_b, d_gamma, d_beta = affine_norm_relu_backward(d_layer, cache_layers[layer_idx], self.normalization) grads['gamma' + str(layer_idx+1)] = d_gamma grads['beta' + str(layer_idx+1)] = d_beta else: d_layer, d_W, d_b = affine_relu_backward(d_layer, cache_layers[layer_idx]) grads[weights_name] = d_W + self.reg * self.params[weights_name] grads[biases_name] = d_b # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ############################################################################ # END OF YOUR CODE # ############################################################################ return loss, grads ================================================ FILE: cs231n/assignment2/cs231n/data_utils.py ================================================ from __future__ import print_function from builtins import range from six.moves import cPickle as pickle import numpy as np import os from imageio import imread import platform def load_pickle(f): version = platform.python_version_tuple() if version[0] == "2": return pickle.load(f) elif version[0] == "3": return pickle.load(f, encoding="latin1") raise ValueError("invalid python version: {}".format(version)) def load_CIFAR_batch(filename): """ load single batch of cifar """ with open(filename, "rb") as f: datadict = load_pickle(f) X = datadict["data"] Y = datadict["labels"] X = X.reshape(10000, 3, 32, 32).transpose(0, 2, 3, 1).astype("float") Y = np.array(Y) return X, Y def load_CIFAR10(ROOT): """ load all of cifar """ xs = [] ys = [] for b in range(1, 6): f = os.path.join(ROOT, "data_batch_%d" % (b,)) X, Y = load_CIFAR_batch(f) xs.append(X) ys.append(Y) Xtr = np.concatenate(xs) Ytr = np.concatenate(ys) del X, Y Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, "test_batch")) return Xtr, Ytr, Xte, Yte def get_CIFAR10_data( num_training=49000, num_validation=1000, num_test=1000, subtract_mean=True ): """ Load the CIFAR-10 dataset from disk and perform preprocessing to prepare it for classifiers. These are the same steps as we used for the SVM, but condensed to a single function. """ # Load the raw CIFAR-10 data cifar10_dir = os.path.join( os.path.dirname(__file__), "datasets/cifar-10-batches-py" ) X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir) # Subsample the data mask = list(range(num_training, num_training + num_validation)) X_val = X_train[mask] y_val = y_train[mask] mask = list(range(num_training)) X_train = X_train[mask] y_train = y_train[mask] mask = list(range(num_test)) X_test = X_test[mask] y_test = y_test[mask] # Normalize the data: subtract the mean image if subtract_mean: mean_image = np.mean(X_train, axis=0) X_train -= mean_image X_val -= mean_image X_test -= mean_image # Transpose so that channels come first X_train = X_train.transpose(0, 3, 1, 2).copy() X_val = X_val.transpose(0, 3, 1, 2).copy() X_test = X_test.transpose(0, 3, 1, 2).copy() # Package data into a dictionary return { "X_train": X_train, "y_train": y_train, "X_val": X_val, "y_val": y_val, "X_test": X_test, "y_test": y_test, } def load_tiny_imagenet(path, dtype=np.float32, subtract_mean=True): """ Load TinyImageNet. Each of TinyImageNet-100-A, TinyImageNet-100-B, and TinyImageNet-200 have the same directory structure, so this can be used to load any of them. Inputs: - path: String giving path to the directory to load. - dtype: numpy datatype used to load the data. - subtract_mean: Whether to subtract the mean training image. Returns: A dictionary with the following entries: - class_names: A list where class_names[i] is a list of strings giving the WordNet names for class i in the loaded dataset. - X_train: (N_tr, 3, 64, 64) array of training images - y_train: (N_tr,) array of training labels - X_val: (N_val, 3, 64, 64) array of validation images - y_val: (N_val,) array of validation labels - X_test: (N_test, 3, 64, 64) array of testing images. - y_test: (N_test,) array of test labels; if test labels are not available (such as in student code) then y_test will be None. - mean_image: (3, 64, 64) array giving mean training image """ # First load wnids with open(os.path.join(path, "wnids.txt"), "r") as f: wnids = [x.strip() for x in f] # Map wnids to integer labels wnid_to_label = {wnid: i for i, wnid in enumerate(wnids)} # Use words.txt to get names for each class with open(os.path.join(path, "words.txt"), "r") as f: wnid_to_words = dict(line.split("\t") for line in f) for wnid, words in wnid_to_words.items(): wnid_to_words[wnid] = [w.strip() for w in words.split(",")] class_names = [wnid_to_words[wnid] for wnid in wnids] # Next load training data. X_train = [] y_train = [] for i, wnid in enumerate(wnids): if (i + 1) % 20 == 0: print("loading training data for synset %d / %d" % (i + 1, len(wnids))) # To figure out the filenames we need to open the boxes file boxes_file = os.path.join(path, "train", wnid, "%s_boxes.txt" % wnid) with open(boxes_file, "r") as f: filenames = [x.split("\t")[0] for x in f] num_images = len(filenames) X_train_block = np.zeros((num_images, 3, 64, 64), dtype=dtype) y_train_block = wnid_to_label[wnid] * np.ones(num_images, dtype=np.int64) for j, img_file in enumerate(filenames): img_file = os.path.join(path, "train", wnid, "images", img_file) img = imread(img_file) if img.ndim == 2: ## grayscale file img.shape = (64, 64, 1) X_train_block[j] = img.transpose(2, 0, 1) X_train.append(X_train_block) y_train.append(y_train_block) # We need to concatenate all training data X_train = np.concatenate(X_train, axis=0) y_train = np.concatenate(y_train, axis=0) # Next load validation data with open(os.path.join(path, "val", "val_annotations.txt"), "r") as f: img_files = [] val_wnids = [] for line in f: img_file, wnid = line.split("\t")[:2] img_files.append(img_file) val_wnids.append(wnid) num_val = len(img_files) y_val = np.array([wnid_to_label[wnid] for wnid in val_wnids]) X_val = np.zeros((num_val, 3, 64, 64), dtype=dtype) for i, img_file in enumerate(img_files): img_file = os.path.join(path, "val", "images", img_file) img = imread(img_file) if img.ndim == 2: img.shape = (64, 64, 1) X_val[i] = img.transpose(2, 0, 1) # Next load test images # Students won't have test labels, so we need to iterate over files in the # images directory. img_files = os.listdir(os.path.join(path, "test", "images")) X_test = np.zeros((len(img_files), 3, 64, 64), dtype=dtype) for i, img_file in enumerate(img_files): img_file = os.path.join(path, "test", "images", img_file) img = imread(img_file) if img.ndim == 2: img.shape = (64, 64, 1) X_test[i] = img.transpose(2, 0, 1) y_test = None y_test_file = os.path.join(path, "test", "test_annotations.txt") if os.path.isfile(y_test_file): with open(y_test_file, "r") as f: img_file_to_wnid = {} for line in f: line = line.split("\t") img_file_to_wnid[line[0]] = line[1] y_test = [wnid_to_label[img_file_to_wnid[img_file]] for img_file in img_files] y_test = np.array(y_test) mean_image = X_train.mean(axis=0) if subtract_mean: X_train -= mean_image[None] X_val -= mean_image[None] X_test -= mean_image[None] return { "class_names": class_names, "X_train": X_train, "y_train": y_train, "X_val": X_val, "y_val": y_val, "X_test": X_test, "y_test": y_test, "class_names": class_names, "mean_image": mean_image, } def load_models(models_dir): """ Load saved models from disk. This will attempt to unpickle all files in a directory; any files that give errors on unpickling (such as README.txt) will be skipped. Inputs: - models_dir: String giving the path to a directory containing model files. Each model file is a pickled dictionary with a 'model' field. Returns: A dictionary mapping model file names to models. """ models = {} for model_file in os.listdir(models_dir): with open(os.path.join(models_dir, model_file), "rb") as f: try: models[model_file] = load_pickle(f)["model"] except pickle.UnpicklingError: continue return models def load_imagenet_val(num=None): """Load a handful of validation images from ImageNet. Inputs: - num: Number of images to load (max of 25) Returns: - X: numpy array with shape [num, 224, 224, 3] - y: numpy array of integer image labels, shape [num] - class_names: dict mapping integer label to class name """ imagenet_fn = os.path.join( os.path.dirname(__file__), "datasets/imagenet_val_25.npz" ) if not os.path.isfile(imagenet_fn): print("file %s not found" % imagenet_fn) print("Run the following:") print("cd cs231n/datasets") print("bash get_imagenet_val.sh") assert False, "Need to download imagenet_val_25.npz" f = np.load(imagenet_fn) X = f["X"] y = f["y"] class_names = f["label_map"].item() if num is not None: X = X[:num] y = y[:num] return X, y, class_names ================================================ FILE: cs231n/assignment2/cs231n/datasets/get_datasets.sh ================================================ if [ ! -d "cifar-10-batches-py" ]; then wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz -O cifar-10-python.tar.gz tar -xzvf cifar-10-python.tar.gz rm cifar-10-python.tar.gz fi ================================================ FILE: cs231n/assignment2/cs231n/fast_layers.py ================================================ from __future__ import print_function import numpy as np try: from .im2col_cython import col2im_cython, im2col_cython from .im2col_cython import col2im_6d_cython except ImportError: print("""=========== You can safely ignore the message below if you are NOT working on ConvolutionalNetworks.ipynb ===========""") print("\tYou will need to compile a Cython extension for a portion of this assignment.") print("\tThe instructions to do this will be given in a section of the notebook below.") print("\tThere will be an option for Colab users and another for Jupyter (local) users.") from .im2col import * def conv_forward_im2col(x, w, b, conv_param): """ A fast implementation of the forward pass for a convolutional layer based on im2col and col2im. """ N, C, H, W = x.shape num_filters, _, filter_height, filter_width = w.shape stride, pad = conv_param["stride"], conv_param["pad"] # Check dimensions assert (W + 2 * pad - filter_width) % stride == 0, "width does not work" assert (H + 2 * pad - filter_height) % stride == 0, "height does not work" # Create output out_height = (H + 2 * pad - filter_height) // stride + 1 out_width = (W + 2 * pad - filter_width) // stride + 1 out = np.zeros((N, num_filters, out_height, out_width), dtype=x.dtype) # x_cols = im2col_indices(x, w.shape[2], w.shape[3], pad, stride) x_cols = im2col_cython(x, w.shape[2], w.shape[3], pad, stride) res = w.reshape((w.shape[0], -1)).dot(x_cols) + b.reshape(-1, 1) out = res.reshape(w.shape[0], out.shape[2], out.shape[3], x.shape[0]) out = out.transpose(3, 0, 1, 2) cache = (x, w, b, conv_param, x_cols) return out, cache def conv_forward_strides(x, w, b, conv_param): N, C, H, W = x.shape F, _, HH, WW = w.shape stride, pad = conv_param["stride"], conv_param["pad"] # Check dimensions # assert (W + 2 * pad - WW) % stride == 0, 'width does not work' # assert (H + 2 * pad - HH) % stride == 0, 'height does not work' # Pad the input p = pad x_padded = np.pad(x, ((0, 0), (0, 0), (p, p), (p, p)), mode="constant") # Figure out output dimensions H += 2 * pad W += 2 * pad out_h = (H - HH) // stride + 1 out_w = (W - WW) // stride + 1 # Perform an im2col operation by picking clever strides shape = (C, HH, WW, N, out_h, out_w) strides = (H * W, W, 1, C * H * W, stride * W, stride) strides = x.itemsize * np.array(strides) x_stride = np.lib.stride_tricks.as_strided(x_padded, shape=shape, strides=strides) x_cols = np.ascontiguousarray(x_stride) x_cols.shape = (C * HH * WW, N * out_h * out_w) # Now all our convolutions are a big matrix multiply res = w.reshape(F, -1).dot(x_cols) + b.reshape(-1, 1) # Reshape the output res.shape = (F, N, out_h, out_w) out = res.transpose(1, 0, 2, 3) # Be nice and return a contiguous array # The old version of conv_forward_fast doesn't do this, so for a fair # comparison we won't either out = np.ascontiguousarray(out) cache = (x, w, b, conv_param, x_cols) return out, cache def conv_backward_strides(dout, cache): x, w, b, conv_param, x_cols = cache stride, pad = conv_param["stride"], conv_param["pad"] N, C, H, W = x.shape F, _, HH, WW = w.shape _, _, out_h, out_w = dout.shape db = np.sum(dout, axis=(0, 2, 3)) dout_reshaped = dout.transpose(1, 0, 2, 3).reshape(F, -1) dw = dout_reshaped.dot(x_cols.T).reshape(w.shape) dx_cols = w.reshape(F, -1).T.dot(dout_reshaped) dx_cols.shape = (C, HH, WW, N, out_h, out_w) dx = col2im_6d_cython(dx_cols, N, C, H, W, HH, WW, pad, stride) return dx, dw, db def conv_backward_im2col(dout, cache): """ A fast implementation of the backward pass for a convolutional layer based on im2col and col2im. """ x, w, b, conv_param, x_cols = cache stride, pad = conv_param["stride"], conv_param["pad"] db = np.sum(dout, axis=(0, 2, 3)) num_filters, _, filter_height, filter_width = w.shape dout_reshaped = dout.transpose(1, 2, 3, 0).reshape(num_filters, -1) dw = dout_reshaped.dot(x_cols.T).reshape(w.shape) dx_cols = w.reshape(num_filters, -1).T.dot(dout_reshaped) # dx = col2im_indices(dx_cols, x.shape, filter_height, filter_width, pad, stride) dx = col2im_cython( dx_cols, x.shape[0], x.shape[1], x.shape[2], x.shape[3], filter_height, filter_width, pad, stride, ) return dx, dw, db conv_forward_fast = conv_forward_strides conv_backward_fast = conv_backward_strides def max_pool_forward_fast(x, pool_param): """ A fast implementation of the forward pass for a max pooling layer. This chooses between the reshape method and the im2col method. If the pooling regions are square and tile the input image, then we can use the reshape method which is very fast. Otherwise we fall back on the im2col method, which is not much faster than the naive method. """ N, C, H, W = x.shape pool_height, pool_width = pool_param["pool_height"], pool_param["pool_width"] stride = pool_param["stride"] same_size = pool_height == pool_width == stride tiles = H % pool_height == 0 and W % pool_width == 0 if same_size and tiles: out, reshape_cache = max_pool_forward_reshape(x, pool_param) cache = ("reshape", reshape_cache) else: out, im2col_cache = max_pool_forward_im2col(x, pool_param) cache = ("im2col", im2col_cache) return out, cache def max_pool_backward_fast(dout, cache): """ A fast implementation of the backward pass for a max pooling layer. This switches between the reshape method an the im2col method depending on which method was used to generate the cache. """ method, real_cache = cache if method == "reshape": return max_pool_backward_reshape(dout, real_cache) elif method == "im2col": return max_pool_backward_im2col(dout, real_cache) else: raise ValueError('Unrecognized method "%s"' % method) def max_pool_forward_reshape(x, pool_param): """ A fast implementation of the forward pass for the max pooling layer that uses some clever reshaping. This can only be used for square pooling regions that tile the input. """ N, C, H, W = x.shape pool_height, pool_width = pool_param["pool_height"], pool_param["pool_width"] stride = pool_param["stride"] assert pool_height == pool_width == stride, "Invalid pool params" assert H % pool_height == 0 assert W % pool_height == 0 x_reshaped = x.reshape( N, C, H // pool_height, pool_height, W // pool_width, pool_width ) out = x_reshaped.max(axis=3).max(axis=4) cache = (x, x_reshaped, out) return out, cache def max_pool_backward_reshape(dout, cache): """ A fast implementation of the backward pass for the max pooling layer that uses some clever broadcasting and reshaping. This can only be used if the forward pass was computed using max_pool_forward_reshape. NOTE: If there are multiple argmaxes, this method will assign gradient to ALL argmax elements of the input rather than picking one. In this case the gradient will actually be incorrect. However this is unlikely to occur in practice, so it shouldn't matter much. One possible solution is to split the upstream gradient equally among all argmax elements; this should result in a valid subgradient. You can make this happen by uncommenting the line below; however this results in a significant performance penalty (about 40% slower) and is unlikely to matter in practice so we don't do it. """ x, x_reshaped, out = cache dx_reshaped = np.zeros_like(x_reshaped) out_newaxis = out[:, :, :, np.newaxis, :, np.newaxis] mask = x_reshaped == out_newaxis dout_newaxis = dout[:, :, :, np.newaxis, :, np.newaxis] dout_broadcast, _ = np.broadcast_arrays(dout_newaxis, dx_reshaped) dx_reshaped[mask] = dout_broadcast[mask] dx_reshaped /= np.sum(mask, axis=(3, 5), keepdims=True) dx = dx_reshaped.reshape(x.shape) return dx def max_pool_forward_im2col(x, pool_param): """ An implementation of the forward pass for max pooling based on im2col. This isn't much faster than the naive version, so it should be avoided if possible. """ N, C, H, W = x.shape pool_height, pool_width = pool_param["pool_height"], pool_param["pool_width"] stride = pool_param["stride"] assert (H - pool_height) % stride == 0, "Invalid height" assert (W - pool_width) % stride == 0, "Invalid width" out_height = (H - pool_height) // stride + 1 out_width = (W - pool_width) // stride + 1 x_split = x.reshape(N * C, 1, H, W) x_cols = im2col(x_split, pool_height, pool_width, padding=0, stride=stride) x_cols_argmax = np.argmax(x_cols, axis=0) x_cols_max = x_cols[x_cols_argmax, np.arange(x_cols.shape[1])] out = x_cols_max.reshape(out_height, out_width, N, C).transpose(2, 3, 0, 1) cache = (x, x_cols, x_cols_argmax, pool_param) return out, cache def max_pool_backward_im2col(dout, cache): """ An implementation of the backward pass for max pooling based on im2col. This isn't much faster than the naive version, so it should be avoided if possible. """ x, x_cols, x_cols_argmax, pool_param = cache N, C, H, W = x.shape pool_height, pool_width = pool_param["pool_height"], pool_param["pool_width"] stride = pool_param["stride"] dout_reshaped = dout.transpose(2, 3, 0, 1).flatten() dx_cols = np.zeros_like(x_cols) dx_cols[x_cols_argmax, np.arange(dx_cols.shape[1])] = dout_reshaped dx = col2im_indices( dx_cols, (N * C, 1, H, W), pool_height, pool_width, padding=0, stride=stride ) dx = dx.reshape(x.shape) return dx ================================================ FILE: cs231n/assignment2/cs231n/gradient_check.py ================================================ from __future__ import print_function from builtins import range from past.builtins import xrange import numpy as np from random import randrange def eval_numerical_gradient(f, x, verbose=True, h=0.00001): """ a naive implementation of numerical gradient of f at x - f should be a function that takes a single argument - x is the point (numpy array) to evaluate the gradient at """ fx = f(x) # evaluate function value at original point grad = np.zeros_like(x) # iterate over all indexes in x it = np.nditer(x, flags=["multi_index"], op_flags=["readwrite"]) while not it.finished: # evaluate function at x+h ix = it.multi_index oldval = x[ix] x[ix] = oldval + h # increment by h fxph = f(x) # evalute f(x + h) x[ix] = oldval - h fxmh = f(x) # evaluate f(x - h) x[ix] = oldval # restore # compute the partial derivative with centered formula grad[ix] = (fxph - fxmh) / (2 * h) # the slope if verbose: print(ix, grad[ix]) it.iternext() # step to next dimension return grad def eval_numerical_gradient_array(f, x, df, h=1e-5): """ Evaluate a numeric gradient for a function that accepts a numpy array and returns a numpy array. """ grad = np.zeros_like(x) it = np.nditer(x, flags=["multi_index"], op_flags=["readwrite"]) while not it.finished: ix = it.multi_index oldval = x[ix] x[ix] = oldval + h pos = f(x).copy() x[ix] = oldval - h neg = f(x).copy() x[ix] = oldval grad[ix] = np.sum((pos - neg) * df) / (2 * h) it.iternext() return grad def eval_numerical_gradient_blobs(f, inputs, output, h=1e-5): """ Compute numeric gradients for a function that operates on input and output blobs. We assume that f accepts several input blobs as arguments, followed by a blob where outputs will be written. For example, f might be called like: f(x, w, out) where x and w are input Blobs, and the result of f will be written to out. Inputs: - f: function - inputs: tuple of input blobs - output: output blob - h: step size """ numeric_diffs = [] for input_blob in inputs: diff = np.zeros_like(input_blob.diffs) it = np.nditer(input_blob.vals, flags=["multi_index"], op_flags=["readwrite"]) while not it.finished: idx = it.multi_index orig = input_blob.vals[idx] input_blob.vals[idx] = orig + h f(*(inputs + (output,))) pos = np.copy(output.vals) input_blob.vals[idx] = orig - h f(*(inputs + (output,))) neg = np.copy(output.vals) input_blob.vals[idx] = orig diff[idx] = np.sum((pos - neg) * output.diffs) / (2.0 * h) it.iternext() numeric_diffs.append(diff) return numeric_diffs def eval_numerical_gradient_net(net, inputs, output, h=1e-5): return eval_numerical_gradient_blobs( lambda *args: net.forward(), inputs, output, h=h ) def grad_check_sparse(f, x, analytic_grad, num_checks=10, h=1e-5): """ sample a few random elements and only return numerical in this dimensions. """ for i in range(num_checks): ix = tuple([randrange(m) for m in x.shape]) oldval = x[ix] x[ix] = oldval + h # increment by h fxph = f(x) # evaluate f(x + h) x[ix] = oldval - h # increment by h fxmh = f(x) # evaluate f(x - h) x[ix] = oldval # reset grad_numerical = (fxph - fxmh) / (2 * h) grad_analytic = analytic_grad[ix] rel_error = abs(grad_numerical - grad_analytic) / ( abs(grad_numerical) + abs(grad_analytic) ) print( "numerical: %f analytic: %f, relative error: %e" % (grad_numerical, grad_analytic, rel_error) ) ================================================ FILE: cs231n/assignment2/cs231n/im2col.py ================================================ from builtins import range import numpy as np def get_im2col_indices(x_shape, field_height, field_width, padding=1, stride=1): # First figure out what the size of the output should be N, C, H, W = x_shape assert (H + 2 * padding - field_height) % stride == 0 assert (W + 2 * padding - field_height) % stride == 0 out_height = (H + 2 * padding - field_height) / stride + 1 out_width = (W + 2 * padding - field_width) / stride + 1 i0 = np.repeat(np.arange(field_height), field_width) i0 = np.tile(i0, C) i1 = stride * np.repeat(np.arange(out_height), out_width) j0 = np.tile(np.arange(field_width), field_height * C) j1 = stride * np.tile(np.arange(out_width), out_height) i = i0.reshape(-1, 1) + i1.reshape(1, -1) j = j0.reshape(-1, 1) + j1.reshape(1, -1) k = np.repeat(np.arange(C), field_height * field_width).reshape(-1, 1) return (k, i, j) def im2col_indices(x, field_height, field_width, padding=1, stride=1): """ An implementation of im2col based on some fancy indexing """ # Zero-pad the input p = padding x_padded = np.pad(x, ((0, 0), (0, 0), (p, p), (p, p)), mode="constant") k, i, j = get_im2col_indices(x.shape, field_height, field_width, padding, stride) cols = x_padded[:, k, i, j] C = x.shape[1] cols = cols.transpose(1, 2, 0).reshape(field_height * field_width * C, -1) return cols def col2im_indices(cols, x_shape, field_height=3, field_width=3, padding=1, stride=1): """ An implementation of col2im based on fancy indexing and np.add.at """ N, C, H, W = x_shape H_padded, W_padded = H + 2 * padding, W + 2 * padding x_padded = np.zeros((N, C, H_padded, W_padded), dtype=cols.dtype) k, i, j = get_im2col_indices(x_shape, field_height, field_width, padding, stride) cols_reshaped = cols.reshape(C * field_height * field_width, -1, N) cols_reshaped = cols_reshaped.transpose(2, 0, 1) np.add.at(x_padded, (slice(None), k, i, j), cols_reshaped) if padding == 0: return x_padded return x_padded[:, :, padding:-padding, padding:-padding] # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** pass # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ================================================ FILE: cs231n/assignment2/cs231n/im2col_cython.c ================================================ /* Generated by Cython 0.29.21 */ /* BEGIN: Cython Metadata { "distutils": { "depends": [ "/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/arrayobject.h", "/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/ufuncobject.h" ], "include_dirs": [ "/usr/local/lib/python3.6/dist-packages/numpy/core/include" ], "name": "im2col_cython", "sources": [ "im2col_cython.pyx" ] }, "module_name": "im2col_cython" } END: Cython Metadata */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else #define CYTHON_ABI "0_29_21" #define CYTHON_HEX_VERSION 0x001D15F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #define __PYX_COMMA , #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x02070000 #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) #endif #ifndef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) #endif #ifndef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #ifdef SIZEOF_VOID_P enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0 #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int32 uint32_t; #endif #endif #else #include #endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) && __cplusplus >= 201103L #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #elif __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #elif __has_cpp_attribute(gnu::fallthrough) #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif #if defined(__clang__ ) && defined(__apple_build_version__) #if __apple_build_version__ < 7000000 #undef CYTHON_FALLTHROUGH #define CYTHON_FALLTHROUGH #endif #endif #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #endif #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 #define PyMem_RawMalloc(n) PyMem_Malloc(n) #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) #define PyMem_RawFree(p) PyMem_Free(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x03060000 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() #elif PY_VERSION_HEX >= 0x03000000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) #include "pythread.h" #define Py_tss_NEEDS_INIT 0 typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); return 0; } static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); *key = Py_tss_NEEDS_INIT; return key; } static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { PyObject_Free(key); } static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { return *key != Py_tss_NEEDS_INIT; } static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { PyThread_delete_key(*key); *key = Py_tss_NEEDS_INIT; } static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { return PyThread_set_key_value(*key, value); } static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } #endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else #define __Pyx_PyDict_NewPresized(n) PyDict_New() #endif #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS #define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) #else #define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #if PY_VERSION_HEX >= 0x030900A4 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) #else #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #else #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) #endif #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_MARK_ERR_POS(f_index, lineno) \ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE__im2col_cython #define __PYX_HAVE_API__im2col_cython /* Early includes */ #include #include #include "numpy/arrayobject.h" #include "numpy/ufuncobject.h" /* NumPy API declarations from "numpy/__init__.pxd" */ #include "pythread.h" #include #include "pystate.h" #ifdef _OPENMP #include #endif /* _OPENMP */ #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { return (size_t) i < (size_t) limit; } #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_cython_runtime = NULL; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; /* Header.proto */ #if !defined(CYTHON_CCOMPLEX) #if defined(__cplusplus) #define CYTHON_CCOMPLEX 1 #elif defined(_Complex_I) #define CYTHON_CCOMPLEX 1 #else #define CYTHON_CCOMPLEX 0 #endif #endif #if CYTHON_CCOMPLEX #ifdef __cplusplus #include #else #include #endif #endif #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) #undef _Complex_I #define _Complex_I 1.0fj #endif static const char *__pyx_f[] = { "im2col_cython.pyx", "__init__.pxd", "stringsource", "type.pxd", }; /* BufferFormatStructs.proto */ #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) typedef struct { const char* name; struct __Pyx_StructField_* fields; size_t size; size_t arraysize[8]; int ndim; char typegroup; char is_unsigned; int flags; } __Pyx_TypeInfo; typedef struct __Pyx_StructField_ { __Pyx_TypeInfo* type; const char* name; size_t offset; } __Pyx_StructField; typedef struct { __Pyx_StructField* field; size_t parent_offset; } __Pyx_BufFmt_StackElem; typedef struct { __Pyx_StructField root; __Pyx_BufFmt_StackElem* head; size_t fmt_offset; size_t new_count, enc_count; size_t struct_alignment; int is_complex; char enc_type; char new_packmode; char enc_packmode; char is_valid_array; } __Pyx_BufFmt_Context; /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* NoFastGil.proto */ #define __Pyx_PyGILState_Ensure PyGILState_Ensure #define __Pyx_PyGILState_Release PyGILState_Release #define __Pyx_FastGIL_Remember() #define __Pyx_FastGIL_Forget() #define __Pyx_FastGilFuncInit() /* Atomics.proto */ #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 #endif #define __pyx_atomic_int_type int #if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 ||\ (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) &&\ !defined(__i386__) #define __pyx_atomic_incr_aligned(value, lock) __sync_fetch_and_add(value, 1) #define __pyx_atomic_decr_aligned(value, lock) __sync_fetch_and_sub(value, 1) #ifdef __PYX_DEBUG_ATOMICS #warning "Using GNU atomics" #endif #elif CYTHON_ATOMICS && defined(_MSC_VER) && 0 #include #undef __pyx_atomic_int_type #define __pyx_atomic_int_type LONG #define __pyx_atomic_incr_aligned(value, lock) InterlockedIncrement(value) #define __pyx_atomic_decr_aligned(value, lock) InterlockedDecrement(value) #ifdef __PYX_DEBUG_ATOMICS #pragma message ("Using MSVC atomics") #endif #elif CYTHON_ATOMICS && (defined(__ICC) || defined(__INTEL_COMPILER)) && 0 #define __pyx_atomic_incr_aligned(value, lock) _InterlockedIncrement(value) #define __pyx_atomic_decr_aligned(value, lock) _InterlockedDecrement(value) #ifdef __PYX_DEBUG_ATOMICS #warning "Using Intel atomics" #endif #else #undef CYTHON_ATOMICS #define CYTHON_ATOMICS 0 #ifdef __PYX_DEBUG_ATOMICS #warning "Not using atomics" #endif #endif typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #if CYTHON_ATOMICS #define __pyx_add_acquisition_count(memview)\ __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) #define __pyx_sub_acquisition_count(memview)\ __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) #else #define __pyx_add_acquisition_count(memview)\ __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) #define __pyx_sub_acquisition_count(memview)\ __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) #endif /* MemviewSliceStruct.proto */ struct __pyx_memoryview_obj; typedef struct { struct __pyx_memoryview_obj *memview; char *data; Py_ssize_t shape[8]; Py_ssize_t strides[8]; Py_ssize_t suboffsets[8]; } __Pyx_memviewslice; #define __Pyx_MemoryView_Len(m) (m.shape[0]) /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":689 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t */ typedef npy_int8 __pyx_t_5numpy_int8_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":690 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t */ typedef npy_int16 __pyx_t_5numpy_int16_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":691 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< * ctypedef npy_int64 int64_t * #ctypedef npy_int96 int96_t */ typedef npy_int32 __pyx_t_5numpy_int32_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":692 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< * #ctypedef npy_int96 int96_t * #ctypedef npy_int128 int128_t */ typedef npy_int64 __pyx_t_5numpy_int64_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":696 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":697 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":698 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< * ctypedef npy_uint64 uint64_t * #ctypedef npy_uint96 uint96_t */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":699 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< * #ctypedef npy_uint96 uint96_t * #ctypedef npy_uint128 uint128_t */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":703 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< * ctypedef npy_float64 float64_t * #ctypedef npy_float80 float80_t */ typedef npy_float32 __pyx_t_5numpy_float32_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":704 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< * #ctypedef npy_float80 float80_t * #ctypedef npy_float128 float128_t */ typedef npy_float64 __pyx_t_5numpy_float64_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":713 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t */ typedef npy_long __pyx_t_5numpy_int_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":714 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< * ctypedef npy_longlong longlong_t * */ typedef npy_longlong __pyx_t_5numpy_long_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":715 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< * * ctypedef npy_ulong uint_t */ typedef npy_longlong __pyx_t_5numpy_longlong_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":717 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t */ typedef npy_ulong __pyx_t_5numpy_uint_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":718 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< * ctypedef npy_ulonglong ulonglong_t * */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":719 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< * * ctypedef npy_intp intp_t */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":721 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< * ctypedef npy_uintp uintp_t * */ typedef npy_intp __pyx_t_5numpy_intp_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":722 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< * * ctypedef npy_double float_t */ typedef npy_uintp __pyx_t_5numpy_uintp_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":724 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t */ typedef npy_double __pyx_t_5numpy_float_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":725 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< * ctypedef npy_longdouble longdouble_t * */ typedef npy_double __pyx_t_5numpy_double_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":726 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< * * ctypedef npy_cfloat cfloat_t */ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; /* Declarations.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< float > __pyx_t_float_complex; #else typedef float _Complex __pyx_t_float_complex; #endif #else typedef struct { float real, imag; } __pyx_t_float_complex; #endif static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); /* Declarations.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< double > __pyx_t_double_complex; #else typedef double _Complex __pyx_t_double_complex; #endif #else typedef struct { double real, imag; } __pyx_t_double_complex; #endif static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); /*--- Type declarations ---*/ struct __pyx_array_obj; struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":728 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":729 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< * ctypedef npy_clongdouble clongdouble_t * */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":730 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< * * ctypedef npy_cdouble complex_t */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":732 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< * * cdef inline object PyArray_MultiIterNew1(a): */ typedef npy_cdouble __pyx_t_5numpy_complex_t; /* "View.MemoryView":105 * * @cname("__pyx_array") * cdef class array: # <<<<<<<<<<<<<< * * cdef: */ struct __pyx_array_obj { PyObject_HEAD struct __pyx_vtabstruct_array *__pyx_vtab; char *data; Py_ssize_t len; char *format; int ndim; Py_ssize_t *_shape; Py_ssize_t *_strides; Py_ssize_t itemsize; PyObject *mode; PyObject *_format; void (*callback_free_data)(void *); int free_data; int dtype_is_object; }; /* "View.MemoryView":279 * * @cname('__pyx_MemviewEnum') * cdef class Enum(object): # <<<<<<<<<<<<<< * cdef object name * def __init__(self, name): */ struct __pyx_MemviewEnum_obj { PyObject_HEAD PyObject *name; }; /* "View.MemoryView":330 * * @cname('__pyx_memoryview') * cdef class memoryview(object): # <<<<<<<<<<<<<< * * cdef object obj */ struct __pyx_memoryview_obj { PyObject_HEAD struct __pyx_vtabstruct_memoryview *__pyx_vtab; PyObject *obj; PyObject *_size; PyObject *_array_interface; PyThread_type_lock lock; __pyx_atomic_int acquisition_count[2]; __pyx_atomic_int *acquisition_count_aligned_p; Py_buffer view; int flags; int dtype_is_object; __Pyx_TypeInfo *typeinfo; }; /* "View.MemoryView":965 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< * "Internal class for passing memoryview slices to Python" * */ struct __pyx_memoryviewslice_obj { struct __pyx_memoryview_obj __pyx_base; __Pyx_memviewslice from_slice; PyObject *from_object; PyObject *(*to_object_func)(char *); int (*to_dtype_func)(char *, PyObject *); }; /* "View.MemoryView":105 * * @cname("__pyx_array") * cdef class array: # <<<<<<<<<<<<<< * * cdef: */ struct __pyx_vtabstruct_array { PyObject *(*get_memview)(struct __pyx_array_obj *); }; static struct __pyx_vtabstruct_array *__pyx_vtabptr_array; /* "View.MemoryView":330 * * @cname('__pyx_memoryview') * cdef class memoryview(object): # <<<<<<<<<<<<<< * * cdef object obj */ struct __pyx_vtabstruct_memoryview { char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *); PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *); PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *); PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *); PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *); }; static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; /* "View.MemoryView":965 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< * "Internal class for passing memoryview slices to Python" * */ struct __pyx_vtabstruct__memoryviewslice { struct __pyx_vtabstruct_memoryview __pyx_base; }; static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* PyDictContains.proto */ static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { int result = PyDict_Contains(dict, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } /* DictGetItem.proto */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); #define __Pyx_PyObject_Dict_GetItem(obj, name)\ (likely(PyDict_CheckExact(obj)) ?\ __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) #else #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) #define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) #endif /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #define __Pyx_BUILD_ASSERT_EXPR(cond)\ (sizeof(char [1 - 2*!(cond)]) - 1) #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) #endif /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; #define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #define __Pyx_PyErr_Occurred() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) #else #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #endif #else #define __Pyx_PyErr_Clear() PyErr_Clear() #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* UnicodeAsUCS4.proto */ static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject*); /* object_ord.proto */ #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyObject_Ord(c)\ (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c)) #else #define __Pyx_PyObject_Ord(c) __Pyx__PyObject_Ord(c) #endif static long __Pyx__PyObject_Ord(PyObject* c); /* SetItemInt.proto */ #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, int wraparound, int boundscheck); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* PyObjectGetMethod.proto */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); /* PyObjectCallMethod0.proto */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); /* UnpackTupleError.proto */ static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /* UnpackTuple2.proto */ #define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ (likely(is_tuple || PyTuple_Check(tuple)) ?\ (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); static int __Pyx_unpack_tuple2_generic( PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); /* dict_iter.proto */ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, Py_ssize_t* p_orig_length, int* p_is_dict); static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); /* PyObjectCall2Args.proto */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); __Pyx_SET_SIZE(list, len + 1); return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* ArgTypeTest.proto */ #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ __Pyx__ArgTypeTest(obj, type, name, exact)) static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /* IsLittleEndian.proto */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); /* BufferFormatCheck.proto */ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, __Pyx_TypeInfo* type); /* BufferGetAndValidate.proto */ #define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ ((obj == Py_None || obj == NULL) ?\ (__Pyx_ZeroBuffer(buf), 0) :\ __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static void __Pyx_ZeroBuffer(Py_buffer* buf); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; /* None.proto */ static CYTHON_INLINE long __Pyx_div_long(long, long); /* UnaryNegOverflows.proto */ #define UNARY_NEG_WOULD_OVERFLOW(x)\ (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) /* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ (version_var) = __PYX_GET_DICT_VERSION(dict);\ (cache_var) = (value); #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ }\ } static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); #else #define __PYX_GET_DICT_VERSION(dict) (0) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); #endif /* GetModuleGlobalName.proto */ #if CYTHON_USE_DICT_VERSIONS #define __Pyx_GetModuleGlobalName(var, name) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } #define __Pyx_GetModuleGlobalNameUncached(var, name) {\ PY_UINT64_T __pyx_dict_version;\ PyObject *__pyx_dict_cached_value;\ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); #else #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); #define __Pyx_BufPtrStrided4d(type, buf, i0, s0, i1, s1, i2, s2, i3, s3) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2 + i3 * s3) #define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) /* ObjectGetItem.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); #else #define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) #endif #define __Pyx_BufPtrStrided6d(type, buf, i0, s0, i1, s1, i2, s2, i3, s3, i4, s4, i5, s5) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2 + i3 * s3 + i4 * s4 + i5 * s5) /* GetTopmostException.proto */ #if CYTHON_USE_EXC_INFO_STACK static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* IncludeStringH.proto */ #include /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* StrEquals.proto */ #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals #else #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals #endif /* None.proto */ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ /* GetAttr.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); /* decode_c_string_utf16.proto */ static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { int byteorder = 0; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { int byteorder = -1; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { int byteorder = 1; return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); } /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* GetAttr3.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); #else #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); __Pyx_SET_SIZE(list, len + 1); return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif /* ListExtend.proto */ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { #if CYTHON_COMPILING_IN_CPYTHON PyObject* none = _PyList_Extend((PyListObject*)L, v); if (unlikely(!none)) return -1; Py_DECREF(none); return 0; #else return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); #endif } /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* HasAttr.proto */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); /* PyObject_GenericGetAttrNoDict.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr #endif /* PyObject_GenericGetAttr.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr #endif /* SetVTable.proto */ static int __Pyx_SetVtable(PyObject *dict, void *vtable); /* PyObjectGetAttrStrNoError.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); /* TypeImport.proto */ #ifndef __PYX_HAVE_RT_ImportType_proto #define __PYX_HAVE_RT_ImportType_proto enum __Pyx_ImportType_CheckSize { __Pyx_ImportType_CheckSize_Error = 0, __Pyx_ImportType_CheckSize_Warn = 1, __Pyx_ImportType_CheckSize_Ignore = 2 }; static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #endif /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); /* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED 1 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 #define __Pyx_CYFUNCTION_CCLASS 0x04 #define __Pyx_CyFunction_GetClosure(f)\ (((__pyx_CyFunctionObject *) (f))->func_closure) #define __Pyx_CyFunction_GetClassObj(f)\ (((__pyx_CyFunctionObject *) (f))->func_classobj) #define __Pyx_CyFunction_Defaults(type, f)\ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) typedef struct { PyCFunctionObject func; #if PY_VERSION_HEX < 0x030500A0 PyObject *func_weakreflist; #endif PyObject *func_dict; PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; PyObject *func_globals; PyObject *func_code; PyObject *func_closure; PyObject *func_classobj; void *defaults; int defaults_pyobjects; size_t defaults_size; // used by FusedFunction for copying defaults int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; PyObject *(*defaults_getter)(PyObject *); PyObject *func_annotations; } __pyx_CyFunctionObject; static PyTypeObject *__pyx_CyFunctionType = 0; #define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType)) static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *self, PyObject *module, PyObject *globals, PyObject* code); static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, size_t size, int pyobjects); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, PyObject *tuple); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, PyObject *dict); static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict); static int __pyx_CyFunction_init(void); /* FusedFunction.proto */ typedef struct { __pyx_CyFunctionObject func; PyObject *__signatures__; PyObject *type; PyObject *self; } __pyx_FusedFunctionObject; static PyObject *__pyx_FusedFunction_New(PyMethodDef *ml, int flags, PyObject *qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject *code); static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self); static PyTypeObject *__pyx_FusedFunctionType = NULL; static int __pyx_FusedFunction_init(void); #define __Pyx_FusedFunction_USED /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #else static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #endif /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); static void __Pyx_ReleaseBuffer(Py_buffer *view); #else #define __Pyx_GetBuffer PyObject_GetBuffer #define __Pyx_ReleaseBuffer PyBuffer_Release #endif /* BufferStructDeclare.proto */ typedef struct { Py_ssize_t shape, strides, suboffsets; } __Pyx_Buf_DimInfo; typedef struct { size_t refcount; Py_buffer pybuffer; } __Pyx_Buffer; typedef struct { __Pyx_Buffer *rcbuffer; char *data; __Pyx_Buf_DimInfo diminfo[8]; } __Pyx_LocalBuf_ND; /* MemviewSliceIsContig.proto */ static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim); /* OverlappingSlices.proto */ static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, __Pyx_memviewslice *slice2, int ndim, size_t itemsize); /* Capsule.proto */ static CYTHON_INLINE PyObject *__pyx_capsule_create(void *p, const char *sig); /* TypeInfoCompare.proto */ static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b); /* MemviewSliceValidateAndInit.proto */ static int __Pyx_ValidateAndInit_memviewslice( int *axes_specs, int c_or_f_flag, int buf_flags, int ndim, __Pyx_TypeInfo *dtype, __Pyx_BufFmt_StackElem stack[], __Pyx_memviewslice *memviewslice, PyObject *original_obj); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float32_t(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float64_t(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float32_t(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float64_t(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float32_t(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float64_t(PyObject *, int writable_flag); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* RealImag.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) #define __Pyx_CIMAG(z) ((z).imag()) #else #define __Pyx_CREAL(z) (__real__(z)) #define __Pyx_CIMAG(z) (__imag__(z)) #endif #else #define __Pyx_CREAL(z) ((z).real) #define __Pyx_CIMAG(z) ((z).imag) #endif #if defined(__cplusplus) && CYTHON_CCOMPLEX\ && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) #define __Pyx_SET_CREAL(z,x) ((z).real(x)) #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) #else #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) #endif /* Arithmetic.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eq_float(a, b) ((a)==(b)) #define __Pyx_c_sum_float(a, b) ((a)+(b)) #define __Pyx_c_diff_float(a, b) ((a)-(b)) #define __Pyx_c_prod_float(a, b) ((a)*(b)) #define __Pyx_c_quot_float(a, b) ((a)/(b)) #define __Pyx_c_neg_float(a) (-(a)) #ifdef __cplusplus #define __Pyx_c_is_zero_float(z) ((z)==(float)0) #define __Pyx_c_conj_float(z) (::std::conj(z)) #if 1 #define __Pyx_c_abs_float(z) (::std::abs(z)) #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) #endif #else #define __Pyx_c_is_zero_float(z) ((z)==0) #define __Pyx_c_conj_float(z) (conjf(z)) #if 1 #define __Pyx_c_abs_float(z) (cabsf(z)) #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) #endif #endif #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); #if 1 static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); #endif #endif /* Arithmetic.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eq_double(a, b) ((a)==(b)) #define __Pyx_c_sum_double(a, b) ((a)+(b)) #define __Pyx_c_diff_double(a, b) ((a)-(b)) #define __Pyx_c_prod_double(a, b) ((a)*(b)) #define __Pyx_c_quot_double(a, b) ((a)/(b)) #define __Pyx_c_neg_double(a) (-(a)) #ifdef __cplusplus #define __Pyx_c_is_zero_double(z) ((z)==(double)0) #define __Pyx_c_conj_double(z) (::std::conj(z)) #if 1 #define __Pyx_c_abs_double(z) (::std::abs(z)) #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) #endif #else #define __Pyx_c_is_zero_double(z) ((z)==0) #define __Pyx_c_conj_double(z) (conj(z)) #if 1 #define __Pyx_c_abs_double(z) (cabs(z)) #define __Pyx_c_pow_double(a, b) (cpow(a, b)) #endif #endif #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); #if 1 static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); #endif #endif /* MemviewSliceCopyTemplate.proto */ static __Pyx_memviewslice __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, const char *mode, int ndim, size_t sizeof_dtype, int contig_flag, int dtype_is_object); /* MemviewSliceInit.proto */ #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d #define __Pyx_MEMVIEW_DIRECT 1 #define __Pyx_MEMVIEW_PTR 2 #define __Pyx_MEMVIEW_FULL 4 #define __Pyx_MEMVIEW_CONTIG 8 #define __Pyx_MEMVIEW_STRIDED 16 #define __Pyx_MEMVIEW_FOLLOW 32 #define __Pyx_IS_C_CONTIG 1 #define __Pyx_IS_F_CONTIG 2 static int __Pyx_init_memviewslice( struct __pyx_memoryview_obj *memview, int ndim, __Pyx_memviewslice *memviewslice, int memview_is_new_reference); static CYTHON_INLINE int __pyx_add_acquisition_count_locked( __pyx_atomic_int *acquisition_count, PyThread_type_lock lock); static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( __pyx_atomic_int *acquisition_count, PyThread_type_lock lock); #define __pyx_get_slice_count_pointer(memview) (memview->acquisition_count_aligned_p) #define __pyx_get_slice_count(memview) (*__pyx_get_slice_count_pointer(memview)) #define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) #define __PYX_XDEC_MEMVIEW(slice, have_gil) __Pyx_XDEC_MEMVIEW(slice, have_gil, __LINE__) static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* BytesContains.proto */ static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character); /* ImportNumPyArray.proto */ static PyObject *__pyx_numpy_ndarray = NULL; static PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ /* Module declarations from 'cpython.buffer' */ /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ /* Module declarations from '__builtin__' */ /* Module declarations from 'cpython.type' */ static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; /* Module declarations from 'cpython' */ /* Module declarations from 'cpython.object' */ /* Module declarations from 'cpython.ref' */ /* Module declarations from 'cpython.mem' */ /* Module declarations from 'numpy' */ /* Module declarations from 'numpy' */ static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; /* Module declarations from 'cython' */ /* Module declarations from 'im2col_cython' */ static PyTypeObject *__pyx_array_type = 0; static PyTypeObject *__pyx_MemviewEnum_type = 0; static PyTypeObject *__pyx_memoryview_type = 0; static PyTypeObject *__pyx_memoryviewslice_type = 0; static PyObject *generic = 0; static PyObject *strided = 0; static PyObject *indirect = 0; static PyObject *contiguous = 0; static PyObject *indirect_contiguous = 0; static int __pyx_memoryview_thread_locks_used; static PyThread_type_lock __pyx_memoryview_thread_locks[8]; static int __pyx_fuse_0__pyx_f_13im2col_cython_im2col_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static int __pyx_fuse_1__pyx_f_13im2col_cython_im2col_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static int __pyx_fuse_0__pyx_f_13im2col_cython_col2im_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static int __pyx_fuse_1__pyx_f_13im2col_cython_col2im_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static PyObject *__pyx_fuse_0__pyx_f_13im2col_cython_col2im_6d_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static PyObject *__pyx_fuse_1__pyx_f_13im2col_cython_col2im_6d_cython_inner(PyArrayObject *, PyArrayObject *, int, int, int, int, int, int, int, int, int, int); /*proto*/ static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/ static void *__pyx_align_pointer(void *, size_t); /*proto*/ static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/ static PyObject *_unellipsify(PyObject *, int); /*proto*/ static PyObject *assert_direct_dimensions(Py_ssize_t *, int); /*proto*/ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/ static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/ static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/ static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/ static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/ static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/ static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/ static int __pyx_memoryview_err_dim(PyObject *, char *, int); /*proto*/ static int __pyx_memoryview_err(PyObject *, char *); /*proto*/ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/ static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t = { "float32_t", NULL, sizeof(__pyx_t_5numpy_float32_t), { 0 }, 0, 'R', 0, 0 }; static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), { 0 }, 0, 'R', 0, 0 }; #define __Pyx_MODULE_NAME "im2col_cython" extern int __pyx_module_is_main_im2col_cython; int __pyx_module_is_main_im2col_cython = 0; /* Implementation of 'im2col_cython' */ static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_ImportError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_Ellipsis; static PyObject *__pyx_builtin_id; static PyObject *__pyx_builtin_IndexError; static const char __pyx_k_[] = "()"; static const char __pyx_k_C[] = "C"; static const char __pyx_k_H[] = "H"; static const char __pyx_k_N[] = "N"; static const char __pyx_k_O[] = "O"; static const char __pyx_k_W[] = "W"; static const char __pyx_k_c[] = "c"; static const char __pyx_k_p[] = "p"; static const char __pyx_k_s[] = "s"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_HH[] = "HH"; static const char __pyx_k_WW[] = "WW"; static const char __pyx_k__2[] = "|"; static const char __pyx_k_id[] = "id"; static const char __pyx_k_np[] = "np"; static const char __pyx_k_new[] = "__new__"; static const char __pyx_k_obj[] = "obj"; static const char __pyx_k_pad[] = "pad"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_base[] = "base"; static const char __pyx_k_cols[] = "cols"; static const char __pyx_k_dict[] = "__dict__"; static const char __pyx_k_kind[] = "kind"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_mode[] = "mode"; static const char __pyx_k_name[] = "name"; static const char __pyx_k_ndim[] = "ndim"; static const char __pyx_k_pack[] = "pack"; static const char __pyx_k_size[] = "size"; static const char __pyx_k_step[] = "step"; static const char __pyx_k_stop[] = "stop"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_ASCII[] = "ASCII"; static const char __pyx_k_class[] = "__class__"; static const char __pyx_k_dtype[] = "dtype"; static const char __pyx_k_empty[] = "empty"; static const char __pyx_k_error[] = "error"; static const char __pyx_k_flags[] = "flags"; static const char __pyx_k_numpy[] = "numpy"; static const char __pyx_k_out_h[] = "out_h"; static const char __pyx_k_out_w[] = "out_w"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_shape[] = "shape"; static const char __pyx_k_split[] = "split"; static const char __pyx_k_start[] = "start"; static const char __pyx_k_strip[] = "strip"; static const char __pyx_k_zeros[] = "zeros"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_kwargs[] = "kwargs"; static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_pickle[] = "pickle"; static const char __pyx_k_reduce[] = "__reduce__"; static const char __pyx_k_stride[] = "stride"; static const char __pyx_k_struct[] = "struct"; static const char __pyx_k_unpack[] = "unpack"; static const char __pyx_k_update[] = "update"; static const char __pyx_k_fortran[] = "fortran"; static const char __pyx_k_memview[] = "memview"; static const char __pyx_k_padding[] = "padding"; static const char __pyx_k_Ellipsis[] = "Ellipsis"; static const char __pyx_k_constant[] = "constant"; static const char __pyx_k_defaults[] = "defaults"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_itemsize[] = "itemsize"; static const char __pyx_k_pyx_type[] = "__pyx_type"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_x_padded[] = "x_padded"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_float32_t[] = "float32_t"; static const char __pyx_k_float64_t[] = "float64_t"; static const char __pyx_k_pyx_state[] = "__pyx_state"; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_IndexError[] = "IndexError"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_pyx_result[] = "__pyx_result"; static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; static const char __pyx_k_signatures[] = "signatures"; static const char __pyx_k_ImportError[] = "ImportError"; static const char __pyx_k_MemoryError[] = "MemoryError"; static const char __pyx_k_PickleError[] = "PickleError"; static const char __pyx_k_field_width[] = "field_width"; static const char __pyx_k_field_height[] = "field_height"; static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; static const char __pyx_k_stringsource[] = "stringsource"; static const char __pyx_k_col2im_cython[] = "col2im_cython"; static const char __pyx_k_im2col_cython[] = "im2col_cython"; static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_View_MemoryView[] = "View.MemoryView"; static const char __pyx_k_allocate_buffer[] = "allocate_buffer"; static const char __pyx_k_dtype_is_object[] = "dtype_is_object"; static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_col2im_6d_cython[] = "col2im_6d_cython"; static const char __pyx_k_im2col_cython_pyx[] = "im2col_cython.pyx"; static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_strided_and_direct[] = ""; static const char __pyx_k_strided_and_indirect[] = ""; static const char __pyx_k_contiguous_and_direct[] = ""; static const char __pyx_k_MemoryView_of_r_object[] = ""; static const char __pyx_k_MemoryView_of_r_at_0x_x[] = ""; static const char __pyx_k_contiguous_and_indirect[] = ""; static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'"; static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d."; static const char __pyx_k_No_matching_signature_found[] = "No matching signature found"; static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array"; static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data."; static const char __pyx_k_strided_and_direct_or_indirect[] = ""; static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides"; static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory."; static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to read-only memoryview"; static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview"; static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array"; static const char __pyx_k_Expected_at_least_d_argument_s_g[] = "Expected at least %d argument%s, got %d"; static const char __pyx_k_Function_call_with_ambiguous_arg[] = "Function call with ambiguous argument types"; static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))"; static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported"; static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got %s"; static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis %d)"; static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object"; static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension %d (got %d and %d)"; static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static PyObject *__pyx_kp_s_; static PyObject *__pyx_n_s_ASCII; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_n_s_C; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; static PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor; static PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi; static PyObject *__pyx_kp_s_Cannot_index_with_type_s; static PyObject *__pyx_n_s_Ellipsis; static PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr; static PyObject *__pyx_kp_s_Expected_at_least_d_argument_s_g; static PyObject *__pyx_kp_s_Function_call_with_ambiguous_arg; static PyObject *__pyx_n_s_H; static PyObject *__pyx_n_s_HH; static PyObject *__pyx_n_s_ImportError; static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0; static PyObject *__pyx_n_s_IndexError; static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte; static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr; static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d; static PyObject *__pyx_n_s_MemoryError; static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x; static PyObject *__pyx_kp_s_MemoryView_of_r_object; static PyObject *__pyx_n_s_N; static PyObject *__pyx_kp_s_No_matching_signature_found; static PyObject *__pyx_n_b_O; static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a; static PyObject *__pyx_n_s_PickleError; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_n_s_View_MemoryView; static PyObject *__pyx_n_s_W; static PyObject *__pyx_n_s_WW; static PyObject *__pyx_kp_s__2; static PyObject *__pyx_n_s_allocate_buffer; static PyObject *__pyx_n_s_args; static PyObject *__pyx_n_s_base; static PyObject *__pyx_n_s_c; static PyObject *__pyx_n_u_c; static PyObject *__pyx_n_s_class; static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_col2im_6d_cython; static PyObject *__pyx_n_s_col2im_cython; static PyObject *__pyx_n_s_cols; static PyObject *__pyx_n_s_constant; static PyObject *__pyx_kp_s_contiguous_and_direct; static PyObject *__pyx_kp_s_contiguous_and_indirect; static PyObject *__pyx_n_s_defaults; static PyObject *__pyx_n_s_dict; static PyObject *__pyx_n_s_dtype; static PyObject *__pyx_n_s_dtype_is_object; static PyObject *__pyx_n_s_empty; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_n_s_enumerate; static PyObject *__pyx_n_s_error; static PyObject *__pyx_n_s_field_height; static PyObject *__pyx_n_s_field_width; static PyObject *__pyx_n_s_flags; static PyObject *__pyx_n_s_float32_t; static PyObject *__pyx_n_s_float64_t; static PyObject *__pyx_n_s_format; static PyObject *__pyx_n_s_fortran; static PyObject *__pyx_n_u_fortran; static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi; static PyObject *__pyx_n_s_id; static PyObject *__pyx_n_s_im2col_cython; static PyObject *__pyx_kp_s_im2col_cython_pyx; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_itemsize; static PyObject *__pyx_kp_s_itemsize_0_for_cython_array; static PyObject *__pyx_n_s_kind; static PyObject *__pyx_n_s_kwargs; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_memview; static PyObject *__pyx_n_s_mode; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_name_2; static PyObject *__pyx_n_s_ndim; static PyObject *__pyx_n_s_new; static PyObject *__pyx_kp_s_no_default___reduce___due_to_non; static PyObject *__pyx_n_s_np; static PyObject *__pyx_n_s_numpy; static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to; static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor; static PyObject *__pyx_n_s_obj; static PyObject *__pyx_n_s_out_h; static PyObject *__pyx_n_s_out_w; static PyObject *__pyx_n_s_p; static PyObject *__pyx_n_s_pack; static PyObject *__pyx_n_s_pad; static PyObject *__pyx_n_s_padding; static PyObject *__pyx_n_s_pickle; static PyObject *__pyx_n_s_pyx_PickleError; static PyObject *__pyx_n_s_pyx_checksum; static PyObject *__pyx_n_s_pyx_getbuffer; static PyObject *__pyx_n_s_pyx_result; static PyObject *__pyx_n_s_pyx_state; static PyObject *__pyx_n_s_pyx_type; static PyObject *__pyx_n_s_pyx_unpickle_Enum; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_reduce; static PyObject *__pyx_n_s_reduce_cython; static PyObject *__pyx_n_s_reduce_ex; static PyObject *__pyx_n_s_s; static PyObject *__pyx_n_s_setstate; static PyObject *__pyx_n_s_setstate_cython; static PyObject *__pyx_n_s_shape; static PyObject *__pyx_n_s_signatures; static PyObject *__pyx_n_s_size; static PyObject *__pyx_n_s_split; static PyObject *__pyx_n_s_start; static PyObject *__pyx_n_s_step; static PyObject *__pyx_n_s_stop; static PyObject *__pyx_n_s_stride; static PyObject *__pyx_kp_s_strided_and_direct; static PyObject *__pyx_kp_s_strided_and_direct_or_indirect; static PyObject *__pyx_kp_s_strided_and_indirect; static PyObject *__pyx_kp_s_stringsource; static PyObject *__pyx_n_s_strip; static PyObject *__pyx_n_s_struct; static PyObject *__pyx_n_s_test; static PyObject *__pyx_kp_s_unable_to_allocate_array_data; static PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str; static PyObject *__pyx_n_s_unpack; static PyObject *__pyx_n_s_update; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_x_padded; static PyObject *__pyx_n_s_zeros; static PyObject *__pyx_pf_13im2col_cython_im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults); /* proto */ static PyObject *__pyx_pf_13im2col_cython_6im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_x, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride); /* proto */ static PyObject *__pyx_pf_13im2col_cython_8im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_x, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride); /* proto */ static PyObject *__pyx_pf_13im2col_cython_2col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults); /* proto */ static PyObject *__pyx_pf_13im2col_cython_12col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride); /* proto */ static PyObject *__pyx_pf_13im2col_cython_14col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride); /* proto */ static PyObject *__pyx_pf_13im2col_cython_4col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults); /* proto */ static PyObject *__pyx_pf_13im2col_cython_18col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_pad, int __pyx_v_stride); /* proto */ static PyObject *__pyx_pf_13im2col_cython_20col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_pad, int __pyx_v_stride); /* proto */ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */ static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_5; static PyObject *__pyx_int_9; static PyObject *__pyx_int_184977713; static PyObject *__pyx_int_neg_1; static PyObject *__pyx_slice__6; static PyObject *__pyx_slice__7; static PyObject *__pyx_slice__8; static PyObject *__pyx_slice__9; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__5; static PyObject *__pyx_slice__10; static PyObject *__pyx_slice__11; static PyObject *__pyx_slice__12; static PyObject *__pyx_slice__13; static PyObject *__pyx_slice__30; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__15; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__17; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__19; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__22; static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__32; static PyObject *__pyx_tuple__33; static PyObject *__pyx_tuple__34; static PyObject *__pyx_tuple__36; static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__40; static PyObject *__pyx_tuple__41; static PyObject *__pyx_tuple__42; static PyObject *__pyx_tuple__43; static PyObject *__pyx_tuple__44; static PyObject *__pyx_tuple__45; static PyObject *__pyx_codeobj__35; static PyObject *__pyx_codeobj__37; static PyObject *__pyx_codeobj__39; static PyObject *__pyx_codeobj__46; /* Late includes */ /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ /* Python wrapper */ static PyObject *__pyx_pw_13im2col_cython_1im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_13im2col_cython_1im2col_cython = {"im2col_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13im2col_cython_1im2col_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_13im2col_cython_1im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; PyObject *__pyx_v_args = 0; PyObject *__pyx_v_kwargs = 0; CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signatures)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 2); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_defaults)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 3); __PYX_ERR(0, 12, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) __PYX_ERR(0, 12, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_signatures = values[0]; __pyx_v_args = values[1]; __pyx_v_kwargs = values[2]; __pyx_v_defaults = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_13im2col_cython_im2col_cython(__pyx_self, __pyx_v_signatures, __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults) { PyObject *__pyx_v_dest_sig = NULL; Py_ssize_t __pyx_v_i; PyTypeObject *__pyx_v_ndarray = 0; __Pyx_memviewslice __pyx_v_memslice; Py_ssize_t __pyx_v_itemsize; CYTHON_UNUSED int __pyx_v_dtype_signed; char __pyx_v_kind; PyObject *__pyx_v_arg = NULL; PyObject *__pyx_v_dtype = NULL; PyObject *__pyx_v_arg_base = NULL; PyObject *__pyx_v_candidates = NULL; PyObject *__pyx_v_sig = NULL; int __pyx_v_match_found; PyObject *__pyx_v_src_sig = NULL; PyObject *__pyx_v_dst_type = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; Py_ssize_t __pyx_t_5; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; __Pyx_memviewslice __pyx_t_8; Py_ssize_t __pyx_t_9; int __pyx_t_10; int __pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; Py_ssize_t __pyx_t_15; Py_ssize_t __pyx_t_16; Py_ssize_t __pyx_t_17; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("im2col_cython", 0); __Pyx_INCREF(__pyx_v_kwargs); __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyList_SET_ITEM(__pyx_t_1, 0, Py_None); __pyx_v_dest_sig = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); } __pyx_t_1 = ((PyObject *)__Pyx_ImportNumPyArrayTypeIfAvailable()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_ndarray = ((PyTypeObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_v_itemsize = -1L; if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_2 = ((0 < __pyx_t_5) != 0); if (__pyx_t_2) { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(((PyObject*)__pyx_v_args), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L7_bool_binop_done; } if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_x, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L7_bool_binop_done:; if (__pyx_t_2) { if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } /*else*/ { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_int_5); __Pyx_GIVEREF(__pyx_int_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_5); __Pyx_INCREF(__pyx_n_s_s); __Pyx_GIVEREF(__pyx_n_s_s); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_s); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_L6:; while (1) { __pyx_t_2 = (__pyx_v_ndarray != ((PyTypeObject*)Py_None)); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L12; } __pyx_t_2 = __pyx_memoryview_check(__pyx_v_arg); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_arg_base = __pyx_t_6; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L13; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L13:; goto __pyx_L12; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L12:; __pyx_v_itemsize = -1L; __pyx_t_2 = (__pyx_v_dtype != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_itemsize = __pyx_t_5; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_7 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_kind = __pyx_t_7; __pyx_v_dtype_signed = (__pyx_v_kind == 'i'); switch (__pyx_v_kind) { case 'i': case 'u': break; case 'f': __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float32_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L16_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 4) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L16_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 12, __pyx_L1_error) goto __pyx_L10_break; } __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float64_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L19_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 4) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L19_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 12, __pyx_L1_error) goto __pyx_L10_break; } break; case 'c': break; case 'O': break; default: break; } } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L22_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float32_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L22_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float32_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 12, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L26_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float64_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L26_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float64_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 12, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 12, __pyx_L1_error) goto __pyx_L10_break; } __pyx_L10_break:; __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_candidates = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; __pyx_t_5 = 0; if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = __pyx_t_1; __pyx_t_1 = 0; while (1) { __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_9, &__pyx_t_5, &__pyx_t_1, NULL, NULL, __pyx_t_10); if (unlikely(__pyx_t_11 == 0)) break; if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_v_match_found = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s_); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__2) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__2); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_i = __pyx_t_17; __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_dest_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_dst_type != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_2) { __pyx_v_match_found = 1; goto __pyx_L34; } /*else*/ { __pyx_v_match_found = 0; goto __pyx_L32_break; } __pyx_L34:; } } __pyx_L32_break:; __pyx_t_2 = (__pyx_v_match_found != 0); if (__pyx_t_2) { __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 12, __pyx_L1_error) } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0); __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_t_3 = ((__pyx_t_9 > 1) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 12, __pyx_L1_error) } /*else*/ { __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_candidates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_13; __pyx_t_13 = 0; goto __pyx_L0; } /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_dest_sig); __Pyx_XDECREF(__pyx_v_ndarray); __Pyx_XDECREF(__pyx_v_arg); __Pyx_XDECREF(__pyx_v_dtype); __Pyx_XDECREF(__pyx_v_arg_base); __Pyx_XDECREF(__pyx_v_candidates); __Pyx_XDECREF(__pyx_v_sig); __Pyx_XDECREF(__pyx_v_src_sig); __Pyx_XDECREF(__pyx_v_dst_type); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_7im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_0__pyx_mdef_13im2col_cython_7im2col_cython = {"__pyx_fuse_0im2col_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_13im2col_cython_7im2col_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_7im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_x = 0; int __pyx_v_field_height; int __pyx_v_field_width; int __pyx_v_padding; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("im2col_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_field_height,&__pyx_n_s_field_width,&__pyx_n_s_padding,&__pyx_n_s_stride,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 1); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_width)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 2); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_padding)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 3); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 4); __PYX_ERR(0, 12, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "im2col_cython") < 0)) __PYX_ERR(0, 12, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_x = ((PyArrayObject *)values[0]); __pyx_v_field_height = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_field_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L3_error) __pyx_v_field_width = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_field_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) __pyx_v_padding = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_padding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.im2col_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_6im2col_cython(__pyx_self, __pyx_v_x, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_6im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_x, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_HH; int __pyx_v_WW; int __pyx_v_p; PyArrayObject *__pyx_v_x_padded = 0; PyArrayObject *__pyx_v_cols = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x; __Pyx_Buffer __pyx_pybuffer_x; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations long __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyArrayObject *__pyx_t_7 = NULL; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0im2col_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x.pybuffer.buf = NULL; __pyx_pybuffer_x.refcount = 0; __pyx_pybuffernd_x.data = NULL; __pyx_pybuffernd_x.rcbuffer = &__pyx_pybuffer_x; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x.rcbuffer->pybuffer, (PyObject*)__pyx_v_x, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_pybuffernd_x.diminfo[0].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x.diminfo[0].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x.diminfo[1].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x.diminfo[1].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x.diminfo[2].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x.diminfo[2].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x.diminfo[3].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x.diminfo[3].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":14 * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, * int field_width, int padding, int stride): * cdef int N = x.shape[0] # <<<<<<<<<<<<<< * cdef int C = x.shape[1] * cdef int H = x.shape[2] */ __pyx_v_N = (__pyx_v_x->dimensions[0]); /* "im2col_cython.pyx":15 * int field_width, int padding, int stride): * cdef int N = x.shape[0] * cdef int C = x.shape[1] # <<<<<<<<<<<<<< * cdef int H = x.shape[2] * cdef int W = x.shape[3] */ __pyx_v_C = (__pyx_v_x->dimensions[1]); /* "im2col_cython.pyx":16 * cdef int N = x.shape[0] * cdef int C = x.shape[1] * cdef int H = x.shape[2] # <<<<<<<<<<<<<< * cdef int W = x.shape[3] * */ __pyx_v_H = (__pyx_v_x->dimensions[2]); /* "im2col_cython.pyx":17 * cdef int C = x.shape[1] * cdef int H = x.shape[2] * cdef int W = x.shape[3] # <<<<<<<<<<<<<< * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 */ __pyx_v_W = (__pyx_v_x->dimensions[3]); /* "im2col_cython.pyx":19 * cdef int W = x.shape[3] * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 # <<<<<<<<<<<<<< * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * */ __pyx_t_1 = ((__pyx_v_H + (2 * __pyx_v_padding)) - __pyx_v_field_height); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 19, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 19, __pyx_L1_error) } __pyx_v_HH = (__Pyx_div_long(__pyx_t_1, __pyx_v_stride) + 1); /* "im2col_cython.pyx":20 * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 # <<<<<<<<<<<<<< * * cdef int p = padding */ __pyx_t_1 = ((__pyx_v_W + (2 * __pyx_v_padding)) - __pyx_v_field_width); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 20, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 20, __pyx_L1_error) } __pyx_v_WW = (__Pyx_div_long(__pyx_t_1, __pyx_v_stride) + 1); /* "im2col_cython.pyx":22 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * * cdef int p = padding # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') */ __pyx_v_p = __pyx_v_padding; /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pad); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":24 * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') # <<<<<<<<<<<<<< * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_tuple__5); __Pyx_INCREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_tuple__5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_x)); __Pyx_GIVEREF(((PyObject *)__pyx_v_x)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_x)); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":24 * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') # <<<<<<<<<<<<<< * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( */ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_mode, __pyx_n_s_constant) < 0) __PYX_ERR(0, 24, __pyx_L1_error) /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 23, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 23, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_7 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":27 * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( * (C * field_height * field_width, N * HH * WW), # <<<<<<<<<<<<<< * dtype=x.dtype) * */ __pyx_t_5 = __Pyx_PyInt_From_int(((__pyx_v_C * __pyx_v_field_height) * __pyx_v_field_width)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_N * __pyx_v_HH) * __pyx_v_WW)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; /* "im2col_cython.pyx":28 * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) # <<<<<<<<<<<<<< * * # Moving the inner loop to a C function with no bounds checking works, but does */ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 26, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { __pyx_v_cols = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 26, __pyx_L1_error) } else {__pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; } } __pyx_t_8 = 0; __pyx_v_cols = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":33 * # not seem to help performance in any measurable way. * * im2col_cython_inner(cols, x_padded, N, C, H, W, HH, WW, # <<<<<<<<<<<<<< * field_height, field_width, padding, stride) * return cols */ __pyx_t_9 = __pyx_fuse_0__pyx_f_13im2col_cython_im2col_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L1_error) /* "im2col_cython.pyx":35 * im2col_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * return cols # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_cols)); __pyx_r = ((PyObject *)__pyx_v_cols); goto __pyx_L0; /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.im2col_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XDECREF((PyObject *)__pyx_v_cols); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_9im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_1__pyx_mdef_13im2col_cython_9im2col_cython = {"__pyx_fuse_1im2col_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_13im2col_cython_9im2col_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_9im2col_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_x = 0; int __pyx_v_field_height; int __pyx_v_field_width; int __pyx_v_padding; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("im2col_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_field_height,&__pyx_n_s_field_width,&__pyx_n_s_padding,&__pyx_n_s_stride,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 1); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_width)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 2); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_padding)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 3); __PYX_ERR(0, 12, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, 4); __PYX_ERR(0, 12, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "im2col_cython") < 0)) __PYX_ERR(0, 12, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_x = ((PyArrayObject *)values[0]); __pyx_v_field_height = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_field_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L3_error) __pyx_v_field_width = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_field_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) __pyx_v_padding = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_padding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("im2col_cython", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.im2col_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_8im2col_cython(__pyx_self, __pyx_v_x, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_8im2col_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_x, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_HH; int __pyx_v_WW; int __pyx_v_p; PyArrayObject *__pyx_v_x_padded = 0; PyArrayObject *__pyx_v_cols = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x; __Pyx_Buffer __pyx_pybuffer_x; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations long __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyArrayObject *__pyx_t_7 = NULL; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1im2col_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x.pybuffer.buf = NULL; __pyx_pybuffer_x.refcount = 0; __pyx_pybuffernd_x.data = NULL; __pyx_pybuffernd_x.rcbuffer = &__pyx_pybuffer_x; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x.rcbuffer->pybuffer, (PyObject*)__pyx_v_x, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 12, __pyx_L1_error) } __pyx_pybuffernd_x.diminfo[0].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x.diminfo[0].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x.diminfo[1].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x.diminfo[1].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x.diminfo[2].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x.diminfo[2].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x.diminfo[3].strides = __pyx_pybuffernd_x.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x.diminfo[3].shape = __pyx_pybuffernd_x.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":14 * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, * int field_width, int padding, int stride): * cdef int N = x.shape[0] # <<<<<<<<<<<<<< * cdef int C = x.shape[1] * cdef int H = x.shape[2] */ __pyx_v_N = (__pyx_v_x->dimensions[0]); /* "im2col_cython.pyx":15 * int field_width, int padding, int stride): * cdef int N = x.shape[0] * cdef int C = x.shape[1] # <<<<<<<<<<<<<< * cdef int H = x.shape[2] * cdef int W = x.shape[3] */ __pyx_v_C = (__pyx_v_x->dimensions[1]); /* "im2col_cython.pyx":16 * cdef int N = x.shape[0] * cdef int C = x.shape[1] * cdef int H = x.shape[2] # <<<<<<<<<<<<<< * cdef int W = x.shape[3] * */ __pyx_v_H = (__pyx_v_x->dimensions[2]); /* "im2col_cython.pyx":17 * cdef int C = x.shape[1] * cdef int H = x.shape[2] * cdef int W = x.shape[3] # <<<<<<<<<<<<<< * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 */ __pyx_v_W = (__pyx_v_x->dimensions[3]); /* "im2col_cython.pyx":19 * cdef int W = x.shape[3] * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 # <<<<<<<<<<<<<< * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * */ __pyx_t_1 = ((__pyx_v_H + (2 * __pyx_v_padding)) - __pyx_v_field_height); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 19, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 19, __pyx_L1_error) } __pyx_v_HH = (__Pyx_div_long(__pyx_t_1, __pyx_v_stride) + 1); /* "im2col_cython.pyx":20 * * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 # <<<<<<<<<<<<<< * * cdef int p = padding */ __pyx_t_1 = ((__pyx_v_W + (2 * __pyx_v_padding)) - __pyx_v_field_width); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 20, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 20, __pyx_L1_error) } __pyx_v_WW = (__Pyx_div_long(__pyx_t_1, __pyx_v_stride) + 1); /* "im2col_cython.pyx":22 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * * cdef int p = padding # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') */ __pyx_v_p = __pyx_v_padding; /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pad); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":24 * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') # <<<<<<<<<<<<<< * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_tuple__5); __Pyx_INCREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_tuple__5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_x)); __Pyx_GIVEREF(((PyObject *)__pyx_v_x)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_x)); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":24 * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') # <<<<<<<<<<<<<< * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( */ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_mode, __pyx_n_s_constant) < 0) __PYX_ERR(0, 24, __pyx_L1_error) /* "im2col_cython.pyx":23 * * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, # <<<<<<<<<<<<<< * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * */ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 23, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 23, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_7 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":27 * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( * (C * field_height * field_width, N * HH * WW), # <<<<<<<<<<<<<< * dtype=x.dtype) * */ __pyx_t_5 = __Pyx_PyInt_From_int(((__pyx_v_C * __pyx_v_field_height) * __pyx_v_field_width)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_N * __pyx_v_HH) * __pyx_v_WW)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; /* "im2col_cython.pyx":28 * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) # <<<<<<<<<<<<<< * * # Moving the inner loop to a C function with no bounds checking works, but does */ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":26 * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( # <<<<<<<<<<<<<< * (C * field_height * field_width, N * HH * WW), * dtype=x.dtype) */ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 26, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { __pyx_v_cols = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 26, __pyx_L1_error) } else {__pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; } } __pyx_t_8 = 0; __pyx_v_cols = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; /* "im2col_cython.pyx":33 * # not seem to help performance in any measurable way. * * im2col_cython_inner(cols, x_padded, N, C, H, W, HH, WW, # <<<<<<<<<<<<<< * field_height, field_width, padding, stride) * return cols */ __pyx_t_9 = __pyx_fuse_1__pyx_f_13im2col_cython_im2col_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L1_error) /* "im2col_cython.pyx":35 * im2col_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * return cols # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_cols)); __pyx_r = ((PyObject *)__pyx_v_cols); goto __pyx_L0; /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.im2col_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XDECREF((PyObject *)__pyx_v_cols); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "im2col_cython.pyx":39 * * @cython.boundscheck(False) * cdef int im2col_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ static int __pyx_fuse_0__pyx_f_13im2col_cython_im2col_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_field_height, int __pyx_v_field_width, CYTHON_UNUSED int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_ii; int __pyx_v_jj; int __pyx_v_row; int __pyx_v_yy; int __pyx_v_xx; int __pyx_v_i; int __pyx_v_col; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0im2col_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 39, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 39, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":45 * cdef int c, ii, jj, row, yy, xx, i, col * * for c in range(C): # <<<<<<<<<<<<<< * for yy in range(HH): * for xx in range(WW): */ __pyx_t_1 = __pyx_v_C; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_c = __pyx_t_3; /* "im2col_cython.pyx":46 * * for c in range(C): * for yy in range(HH): # <<<<<<<<<<<<<< * for xx in range(WW): * for ii in range(field_height): */ __pyx_t_4 = __pyx_v_HH; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_yy = __pyx_t_6; /* "im2col_cython.pyx":47 * for c in range(C): * for yy in range(HH): * for xx in range(WW): # <<<<<<<<<<<<<< * for ii in range(field_height): * for jj in range(field_width): */ __pyx_t_7 = __pyx_v_WW; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_xx = __pyx_t_9; /* "im2col_cython.pyx":48 * for yy in range(HH): * for xx in range(WW): * for ii in range(field_height): # <<<<<<<<<<<<<< * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj */ __pyx_t_10 = __pyx_v_field_height; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_ii = __pyx_t_12; /* "im2col_cython.pyx":49 * for xx in range(WW): * for ii in range(field_height): * for jj in range(field_width): # <<<<<<<<<<<<<< * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): */ __pyx_t_13 = __pyx_v_field_width; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_jj = __pyx_t_15; /* "im2col_cython.pyx":50 * for ii in range(field_height): * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj # <<<<<<<<<<<<<< * for i in range(N): * col = yy * WW * N + xx * N + i */ __pyx_v_row = ((((__pyx_v_c * __pyx_v_field_width) * __pyx_v_field_height) + (__pyx_v_ii * __pyx_v_field_height)) + __pyx_v_jj); /* "im2col_cython.pyx":51 * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): # <<<<<<<<<<<<<< * col = yy * WW * N + xx * N + i * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] */ __pyx_t_16 = __pyx_v_N; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; /* "im2col_cython.pyx":52 * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): * col = yy * WW * N + xx * N + i # <<<<<<<<<<<<<< * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] * */ __pyx_v_col = ((((__pyx_v_yy * __pyx_v_WW) * __pyx_v_N) + (__pyx_v_xx * __pyx_v_N)) + __pyx_v_i); /* "im2col_cython.pyx":53 * for i in range(N): * col = yy * WW * N + xx * N + i * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_c; __pyx_t_21 = ((__pyx_v_stride * __pyx_v_yy) + __pyx_v_ii); __pyx_t_22 = ((__pyx_v_stride * __pyx_v_xx) + __pyx_v_jj); if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_pybuffernd_x_padded.diminfo[0].shape; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_pybuffernd_x_padded.diminfo[1].shape; if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_pybuffernd_x_padded.diminfo[2].shape; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_pybuffernd_x_padded.diminfo[3].shape; __pyx_t_23 = __pyx_v_row; __pyx_t_24 = __pyx_v_col; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_pybuffernd_cols.diminfo[0].shape; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_pybuffernd_cols.diminfo[1].shape; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_24, __pyx_pybuffernd_cols.diminfo[1].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_21, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_22, __pyx_pybuffernd_x_padded.diminfo[3].strides)); } } } } } } /* "im2col_cython.pyx":39 * * @cython.boundscheck(False) * cdef int im2col_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.im2col_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_fuse_1__pyx_f_13im2col_cython_im2col_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_field_height, int __pyx_v_field_width, CYTHON_UNUSED int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_ii; int __pyx_v_jj; int __pyx_v_row; int __pyx_v_yy; int __pyx_v_xx; int __pyx_v_i; int __pyx_v_col; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1im2col_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 39, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 39, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":45 * cdef int c, ii, jj, row, yy, xx, i, col * * for c in range(C): # <<<<<<<<<<<<<< * for yy in range(HH): * for xx in range(WW): */ __pyx_t_1 = __pyx_v_C; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_c = __pyx_t_3; /* "im2col_cython.pyx":46 * * for c in range(C): * for yy in range(HH): # <<<<<<<<<<<<<< * for xx in range(WW): * for ii in range(field_height): */ __pyx_t_4 = __pyx_v_HH; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_yy = __pyx_t_6; /* "im2col_cython.pyx":47 * for c in range(C): * for yy in range(HH): * for xx in range(WW): # <<<<<<<<<<<<<< * for ii in range(field_height): * for jj in range(field_width): */ __pyx_t_7 = __pyx_v_WW; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_xx = __pyx_t_9; /* "im2col_cython.pyx":48 * for yy in range(HH): * for xx in range(WW): * for ii in range(field_height): # <<<<<<<<<<<<<< * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj */ __pyx_t_10 = __pyx_v_field_height; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_ii = __pyx_t_12; /* "im2col_cython.pyx":49 * for xx in range(WW): * for ii in range(field_height): * for jj in range(field_width): # <<<<<<<<<<<<<< * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): */ __pyx_t_13 = __pyx_v_field_width; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_jj = __pyx_t_15; /* "im2col_cython.pyx":50 * for ii in range(field_height): * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj # <<<<<<<<<<<<<< * for i in range(N): * col = yy * WW * N + xx * N + i */ __pyx_v_row = ((((__pyx_v_c * __pyx_v_field_width) * __pyx_v_field_height) + (__pyx_v_ii * __pyx_v_field_height)) + __pyx_v_jj); /* "im2col_cython.pyx":51 * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): # <<<<<<<<<<<<<< * col = yy * WW * N + xx * N + i * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] */ __pyx_t_16 = __pyx_v_N; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; /* "im2col_cython.pyx":52 * row = c * field_width * field_height + ii * field_height + jj * for i in range(N): * col = yy * WW * N + xx * N + i # <<<<<<<<<<<<<< * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] * */ __pyx_v_col = ((((__pyx_v_yy * __pyx_v_WW) * __pyx_v_N) + (__pyx_v_xx * __pyx_v_N)) + __pyx_v_i); /* "im2col_cython.pyx":53 * for i in range(N): * col = yy * WW * N + xx * N + i * cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_c; __pyx_t_21 = ((__pyx_v_stride * __pyx_v_yy) + __pyx_v_ii); __pyx_t_22 = ((__pyx_v_stride * __pyx_v_xx) + __pyx_v_jj); if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_pybuffernd_x_padded.diminfo[0].shape; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_pybuffernd_x_padded.diminfo[1].shape; if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_pybuffernd_x_padded.diminfo[2].shape; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_pybuffernd_x_padded.diminfo[3].shape; __pyx_t_23 = __pyx_v_row; __pyx_t_24 = __pyx_v_col; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_pybuffernd_cols.diminfo[0].shape; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_pybuffernd_cols.diminfo[1].shape; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_24, __pyx_pybuffernd_cols.diminfo[1].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_21, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_22, __pyx_pybuffernd_x_padded.diminfo[3].strides)); } } } } } } /* "im2col_cython.pyx":39 * * @cython.boundscheck(False) * cdef int im2col_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.im2col_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "im2col_cython.pyx":57 * * * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* Python wrapper */ static PyObject *__pyx_pw_13im2col_cython_3col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_13im2col_cython_3col2im_cython = {"col2im_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13im2col_cython_3col2im_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_13im2col_cython_3col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; PyObject *__pyx_v_args = 0; PyObject *__pyx_v_kwargs = 0; CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signatures)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 2); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_defaults)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 3); __PYX_ERR(0, 57, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) __PYX_ERR(0, 57, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_signatures = values[0]; __pyx_v_args = values[1]; __pyx_v_kwargs = values[2]; __pyx_v_defaults = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 57, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_13im2col_cython_2col2im_cython(__pyx_self, __pyx_v_signatures, __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_2col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults) { PyObject *__pyx_v_dest_sig = NULL; Py_ssize_t __pyx_v_i; PyTypeObject *__pyx_v_ndarray = 0; __Pyx_memviewslice __pyx_v_memslice; Py_ssize_t __pyx_v_itemsize; CYTHON_UNUSED int __pyx_v_dtype_signed; char __pyx_v_kind; PyObject *__pyx_v_arg = NULL; PyObject *__pyx_v_dtype = NULL; PyObject *__pyx_v_arg_base = NULL; PyObject *__pyx_v_candidates = NULL; PyObject *__pyx_v_sig = NULL; int __pyx_v_match_found; PyObject *__pyx_v_src_sig = NULL; PyObject *__pyx_v_dst_type = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; Py_ssize_t __pyx_t_5; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; __Pyx_memviewslice __pyx_t_8; Py_ssize_t __pyx_t_9; int __pyx_t_10; int __pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; Py_ssize_t __pyx_t_15; Py_ssize_t __pyx_t_16; Py_ssize_t __pyx_t_17; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("col2im_cython", 0); __Pyx_INCREF(__pyx_v_kwargs); __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyList_SET_ITEM(__pyx_t_1, 0, Py_None); __pyx_v_dest_sig = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); } __pyx_t_1 = ((PyObject *)__Pyx_ImportNumPyArrayTypeIfAvailable()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_ndarray = ((PyTypeObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_v_itemsize = -1L; if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_2 = ((0 < __pyx_t_5) != 0); if (__pyx_t_2) { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(((PyObject*)__pyx_v_args), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L7_bool_binop_done; } if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_cols, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L7_bool_binop_done:; if (__pyx_t_2) { if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_cols); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } /*else*/ { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_int_9); __Pyx_GIVEREF(__pyx_int_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_9); __Pyx_INCREF(__pyx_n_s_s); __Pyx_GIVEREF(__pyx_n_s_s); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_s); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_L6:; while (1) { __pyx_t_2 = (__pyx_v_ndarray != ((PyTypeObject*)Py_None)); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L12; } __pyx_t_2 = __pyx_memoryview_check(__pyx_v_arg); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_arg_base = __pyx_t_6; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L13; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L13:; goto __pyx_L12; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L12:; __pyx_v_itemsize = -1L; __pyx_t_2 = (__pyx_v_dtype != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_itemsize = __pyx_t_5; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_7 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_kind = __pyx_t_7; __pyx_v_dtype_signed = (__pyx_v_kind == 'i'); switch (__pyx_v_kind) { case 'i': case 'u': break; case 'f': __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float32_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L16_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 2) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L16_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error) goto __pyx_L10_break; } __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float64_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L19_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 2) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L19_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error) goto __pyx_L10_break; } break; case 'c': break; case 'O': break; default: break; } } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L22_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float32_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L22_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float32_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L26_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float64_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L26_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float64_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error) goto __pyx_L10_break; } __pyx_L10_break:; __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_candidates = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; __pyx_t_5 = 0; if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_1 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = __pyx_t_1; __pyx_t_1 = 0; while (1) { __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_9, &__pyx_t_5, &__pyx_t_1, NULL, NULL, __pyx_t_10); if (unlikely(__pyx_t_11 == 0)) break; if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_v_match_found = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s_); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__2) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__2); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_i = __pyx_t_17; __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_dest_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_dst_type != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_2) { __pyx_v_match_found = 1; goto __pyx_L34; } /*else*/ { __pyx_v_match_found = 0; goto __pyx_L32_break; } __pyx_L34:; } } __pyx_L32_break:; __pyx_t_2 = (__pyx_v_match_found != 0); if (__pyx_t_2) { __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 57, __pyx_L1_error) } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0); __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_3 = ((__pyx_t_9 > 1) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 57, __pyx_L1_error) } /*else*/ { __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_candidates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_13; __pyx_t_13 = 0; goto __pyx_L0; } /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_dest_sig); __Pyx_XDECREF(__pyx_v_ndarray); __Pyx_XDECREF(__pyx_v_arg); __Pyx_XDECREF(__pyx_v_dtype); __Pyx_XDECREF(__pyx_v_arg_base); __Pyx_XDECREF(__pyx_v_candidates); __Pyx_XDECREF(__pyx_v_sig); __Pyx_XDECREF(__pyx_v_src_sig); __Pyx_XDECREF(__pyx_v_dst_type); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_13col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_0__pyx_mdef_13im2col_cython_13col2im_cython = {"__pyx_fuse_0col2im_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_13im2col_cython_13col2im_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_13col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_cols = 0; int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_field_height; int __pyx_v_field_width; int __pyx_v_padding; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("col2im_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cols,&__pyx_n_s_N,&__pyx_n_s_C,&__pyx_n_s_H,&__pyx_n_s_W,&__pyx_n_s_field_height,&__pyx_n_s_field_width,&__pyx_n_s_padding,&__pyx_n_s_stride,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8); CYTHON_FALLTHROUGH; case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cols)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 1); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 2); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_H)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 3); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 4); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 5); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_width)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 6); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_padding)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 7); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 8: if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 8); __PYX_ERR(0, 57, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "col2im_cython") < 0)) __PYX_ERR(0, 57, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 9) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); values[5] = PyTuple_GET_ITEM(__pyx_args, 5); values[6] = PyTuple_GET_ITEM(__pyx_args, 6); values[7] = PyTuple_GET_ITEM(__pyx_args, 7); values[8] = PyTuple_GET_ITEM(__pyx_args, 8); } __pyx_v_cols = ((PyArrayObject *)values[0]); __pyx_v_N = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_N == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_C = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_C == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_H = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_H == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_W = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_W == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_field_height = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_field_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_field_width = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_field_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_padding = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_padding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 57, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.col2im_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cols), __pyx_ptype_5numpy_ndarray, 1, "cols", 0))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_12col2im_cython(__pyx_self, __pyx_v_cols, __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_12col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride) { CYTHON_UNUSED PyArrayObject *__pyx_v_x = 0; int __pyx_v_HH; int __pyx_v_WW; PyArrayObject *__pyx_v_x_padded = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_t_10; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0col2im_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; /* "im2col_cython.pyx":59 * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) # <<<<<<<<<<<<<< * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_H); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_W); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 59, __pyx_L1_error) __pyx_v_x = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; /* "im2col_cython.pyx":60 * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int HH = (H + 2 * padding - field_height) / stride + 1 # <<<<<<<<<<<<<< * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), */ __pyx_t_7 = ((__pyx_v_H + (2 * __pyx_v_padding)) - __pyx_v_field_height); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 60, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 60, __pyx_L1_error) } __pyx_v_HH = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":61 * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), * dtype=cols.dtype) */ __pyx_t_7 = ((__pyx_v_W + (2 * __pyx_v_padding)) - __pyx_v_field_width); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 61, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 61, __pyx_L1_error) } __pyx_v_WW = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":62 * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_H + (2 * __pyx_v_padding))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_W + (2 * __pyx_v_padding))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":63 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), * dtype=cols.dtype) # <<<<<<<<<<<<<< * * # Moving the inner loop to a C-function with no bounds checking improves */ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":62 * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 62, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 62, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_8 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":67 * # Moving the inner loop to a C-function with no bounds checking improves * # performance quite a bit for col2im. * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, # <<<<<<<<<<<<<< * field_height, field_width, padding, stride) * if padding > 0: */ __pyx_t_9 = __pyx_fuse_0__pyx_f_13im2col_cython_col2im_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L1_error) /* "im2col_cython.pyx":69 * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * if padding > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded */ __pyx_t_10 = ((__pyx_v_padding > 0) != 0); if (__pyx_t_10) { /* "im2col_cython.pyx":70 * field_height, field_width, padding, stride) * if padding > 0: * return x_padded[:, :, padding:-padding, padding:-padding] # <<<<<<<<<<<<<< * return x_padded * */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_padding); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyInt_From_int((-__pyx_v_padding)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_padding); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_padding)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_slice__6); __Pyx_GIVEREF(__pyx_slice__6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__6); __Pyx_INCREF(__pyx_slice__7); __Pyx_GIVEREF(__pyx_slice__7); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x_padded), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "im2col_cython.pyx":69 * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * if padding > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded */ } /* "im2col_cython.pyx":71 * if padding > 0: * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x_padded)); __pyx_r = ((PyObject *)__pyx_v_x_padded); goto __pyx_L0; /* "im2col_cython.pyx":57 * * * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x); __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_15col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_1__pyx_mdef_13im2col_cython_15col2im_cython = {"__pyx_fuse_1col2im_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_13im2col_cython_15col2im_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_15col2im_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_cols = 0; int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_field_height; int __pyx_v_field_width; int __pyx_v_padding; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("col2im_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cols,&__pyx_n_s_N,&__pyx_n_s_C,&__pyx_n_s_H,&__pyx_n_s_W,&__pyx_n_s_field_height,&__pyx_n_s_field_width,&__pyx_n_s_padding,&__pyx_n_s_stride,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8); CYTHON_FALLTHROUGH; case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cols)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 1); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 2); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_H)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 3); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 4); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 5); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_field_width)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 6); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_padding)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 7); __PYX_ERR(0, 57, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 8: if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, 8); __PYX_ERR(0, 57, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "col2im_cython") < 0)) __PYX_ERR(0, 57, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 9) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); values[5] = PyTuple_GET_ITEM(__pyx_args, 5); values[6] = PyTuple_GET_ITEM(__pyx_args, 6); values[7] = PyTuple_GET_ITEM(__pyx_args, 7); values[8] = PyTuple_GET_ITEM(__pyx_args, 8); } __pyx_v_cols = ((PyArrayObject *)values[0]); __pyx_v_N = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_N == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_C = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_C == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_H = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_H == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_W = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_W == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_field_height = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_field_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_field_width = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_field_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_padding = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_padding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("col2im_cython", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 57, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.col2im_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cols), __pyx_ptype_5numpy_ndarray, 1, "cols", 0))) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_14col2im_cython(__pyx_self, __pyx_v_cols, __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_14col2im_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_field_height, int __pyx_v_field_width, int __pyx_v_padding, int __pyx_v_stride) { CYTHON_UNUSED PyArrayObject *__pyx_v_x = 0; int __pyx_v_HH; int __pyx_v_WW; PyArrayObject *__pyx_v_x_padded = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_t_10; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1col2im_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 57, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; /* "im2col_cython.pyx":59 * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) # <<<<<<<<<<<<<< * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_H); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_W); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 59, __pyx_L1_error) __pyx_v_x = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; /* "im2col_cython.pyx":60 * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int HH = (H + 2 * padding - field_height) / stride + 1 # <<<<<<<<<<<<<< * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), */ __pyx_t_7 = ((__pyx_v_H + (2 * __pyx_v_padding)) - __pyx_v_field_height); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 60, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 60, __pyx_L1_error) } __pyx_v_HH = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":61 * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), * dtype=cols.dtype) */ __pyx_t_7 = ((__pyx_v_W + (2 * __pyx_v_padding)) - __pyx_v_field_width); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 61, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 61, __pyx_L1_error) } __pyx_v_WW = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":62 * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_H + (2 * __pyx_v_padding))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_W + (2 * __pyx_v_padding))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":63 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), * dtype=cols.dtype) # <<<<<<<<<<<<<< * * # Moving the inner loop to a C-function with no bounds checking improves */ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":62 * cdef int HH = (H + 2 * padding - field_height) / stride + 1 * cdef int WW = (W + 2 * padding - field_width) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 62, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 62, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_8 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":67 * # Moving the inner loop to a C-function with no bounds checking improves * # performance quite a bit for col2im. * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, # <<<<<<<<<<<<<< * field_height, field_width, padding, stride) * if padding > 0: */ __pyx_t_9 = __pyx_fuse_1__pyx_f_13im2col_cython_col2im_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_field_height, __pyx_v_field_width, __pyx_v_padding, __pyx_v_stride); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L1_error) /* "im2col_cython.pyx":69 * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * if padding > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded */ __pyx_t_10 = ((__pyx_v_padding > 0) != 0); if (__pyx_t_10) { /* "im2col_cython.pyx":70 * field_height, field_width, padding, stride) * if padding > 0: * return x_padded[:, :, padding:-padding, padding:-padding] # <<<<<<<<<<<<<< * return x_padded * */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_padding); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyInt_From_int((-__pyx_v_padding)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_padding); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_padding)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_slice__8); __Pyx_GIVEREF(__pyx_slice__8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__8); __Pyx_INCREF(__pyx_slice__9); __Pyx_GIVEREF(__pyx_slice__9); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x_padded), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "im2col_cython.pyx":69 * col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, * field_height, field_width, padding, stride) * if padding > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded */ } /* "im2col_cython.pyx":71 * if padding > 0: * return x_padded[:, :, padding:-padding, padding:-padding] * return x_padded # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x_padded)); __pyx_r = ((PyObject *)__pyx_v_x_padded); goto __pyx_L0; /* "im2col_cython.pyx":57 * * * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x); __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "im2col_cython.pyx":75 * * @cython.boundscheck(False) * cdef int col2im_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ static int __pyx_fuse_0__pyx_f_13im2col_cython_col2im_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_field_height, int __pyx_v_field_width, CYTHON_UNUSED int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_ii; int __pyx_v_jj; int __pyx_v_row; int __pyx_v_yy; int __pyx_v_xx; int __pyx_v_i; int __pyx_v_col; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0col2im_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 75, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 75, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":81 * cdef int c, ii, jj, row, yy, xx, i, col * * for c in range(C): # <<<<<<<<<<<<<< * for ii in range(field_height): * for jj in range(field_width): */ __pyx_t_1 = __pyx_v_C; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_c = __pyx_t_3; /* "im2col_cython.pyx":82 * * for c in range(C): * for ii in range(field_height): # <<<<<<<<<<<<<< * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj */ __pyx_t_4 = __pyx_v_field_height; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_ii = __pyx_t_6; /* "im2col_cython.pyx":83 * for c in range(C): * for ii in range(field_height): * for jj in range(field_width): # <<<<<<<<<<<<<< * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): */ __pyx_t_7 = __pyx_v_field_width; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_jj = __pyx_t_9; /* "im2col_cython.pyx":84 * for ii in range(field_height): * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj # <<<<<<<<<<<<<< * for yy in range(HH): * for xx in range(WW): */ __pyx_v_row = ((((__pyx_v_c * __pyx_v_field_width) * __pyx_v_field_height) + (__pyx_v_ii * __pyx_v_field_height)) + __pyx_v_jj); /* "im2col_cython.pyx":85 * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): # <<<<<<<<<<<<<< * for xx in range(WW): * for i in range(N): */ __pyx_t_10 = __pyx_v_HH; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_yy = __pyx_t_12; /* "im2col_cython.pyx":86 * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): * for xx in range(WW): # <<<<<<<<<<<<<< * for i in range(N): * col = yy * WW * N + xx * N + i */ __pyx_t_13 = __pyx_v_WW; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_xx = __pyx_t_15; /* "im2col_cython.pyx":87 * for yy in range(HH): * for xx in range(WW): * for i in range(N): # <<<<<<<<<<<<<< * col = yy * WW * N + xx * N + i * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] */ __pyx_t_16 = __pyx_v_N; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; /* "im2col_cython.pyx":88 * for xx in range(WW): * for i in range(N): * col = yy * WW * N + xx * N + i # <<<<<<<<<<<<<< * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] * */ __pyx_v_col = ((((__pyx_v_yy * __pyx_v_WW) * __pyx_v_N) + (__pyx_v_xx * __pyx_v_N)) + __pyx_v_i); /* "im2col_cython.pyx":89 * for i in range(N): * col = yy * WW * N + xx * N + i * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_row; __pyx_t_20 = __pyx_v_col; if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_pybuffernd_cols.diminfo[0].shape; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_pybuffernd_cols.diminfo[1].shape; __pyx_t_21 = __pyx_v_i; __pyx_t_22 = __pyx_v_c; __pyx_t_23 = ((__pyx_v_stride * __pyx_v_yy) + __pyx_v_ii); __pyx_t_24 = ((__pyx_v_stride * __pyx_v_xx) + __pyx_v_jj); if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_pybuffernd_x_padded.diminfo[0].shape; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_pybuffernd_x_padded.diminfo[1].shape; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_pybuffernd_x_padded.diminfo[2].shape; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_pybuffernd_x_padded.diminfo[3].shape; *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_23, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_24, __pyx_pybuffernd_x_padded.diminfo[3].strides) += (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_cols.diminfo[1].strides)); } } } } } } /* "im2col_cython.pyx":75 * * @cython.boundscheck(False) * cdef int col2im_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_fuse_1__pyx_f_13im2col_cython_col2im_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_field_height, int __pyx_v_field_width, CYTHON_UNUSED int __pyx_v_padding, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_ii; int __pyx_v_jj; int __pyx_v_row; int __pyx_v_yy; int __pyx_v_xx; int __pyx_v_i; int __pyx_v_col; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1col2im_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 75, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 75, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":81 * cdef int c, ii, jj, row, yy, xx, i, col * * for c in range(C): # <<<<<<<<<<<<<< * for ii in range(field_height): * for jj in range(field_width): */ __pyx_t_1 = __pyx_v_C; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_c = __pyx_t_3; /* "im2col_cython.pyx":82 * * for c in range(C): * for ii in range(field_height): # <<<<<<<<<<<<<< * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj */ __pyx_t_4 = __pyx_v_field_height; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_ii = __pyx_t_6; /* "im2col_cython.pyx":83 * for c in range(C): * for ii in range(field_height): * for jj in range(field_width): # <<<<<<<<<<<<<< * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): */ __pyx_t_7 = __pyx_v_field_width; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_jj = __pyx_t_9; /* "im2col_cython.pyx":84 * for ii in range(field_height): * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj # <<<<<<<<<<<<<< * for yy in range(HH): * for xx in range(WW): */ __pyx_v_row = ((((__pyx_v_c * __pyx_v_field_width) * __pyx_v_field_height) + (__pyx_v_ii * __pyx_v_field_height)) + __pyx_v_jj); /* "im2col_cython.pyx":85 * for jj in range(field_width): * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): # <<<<<<<<<<<<<< * for xx in range(WW): * for i in range(N): */ __pyx_t_10 = __pyx_v_HH; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_yy = __pyx_t_12; /* "im2col_cython.pyx":86 * row = c * field_width * field_height + ii * field_height + jj * for yy in range(HH): * for xx in range(WW): # <<<<<<<<<<<<<< * for i in range(N): * col = yy * WW * N + xx * N + i */ __pyx_t_13 = __pyx_v_WW; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_xx = __pyx_t_15; /* "im2col_cython.pyx":87 * for yy in range(HH): * for xx in range(WW): * for i in range(N): # <<<<<<<<<<<<<< * col = yy * WW * N + xx * N + i * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] */ __pyx_t_16 = __pyx_v_N; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; /* "im2col_cython.pyx":88 * for xx in range(WW): * for i in range(N): * col = yy * WW * N + xx * N + i # <<<<<<<<<<<<<< * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] * */ __pyx_v_col = ((((__pyx_v_yy * __pyx_v_WW) * __pyx_v_N) + (__pyx_v_xx * __pyx_v_N)) + __pyx_v_i); /* "im2col_cython.pyx":89 * for i in range(N): * col = yy * WW * N + xx * N + i * x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_row; __pyx_t_20 = __pyx_v_col; if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_pybuffernd_cols.diminfo[0].shape; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_pybuffernd_cols.diminfo[1].shape; __pyx_t_21 = __pyx_v_i; __pyx_t_22 = __pyx_v_c; __pyx_t_23 = ((__pyx_v_stride * __pyx_v_yy) + __pyx_v_ii); __pyx_t_24 = ((__pyx_v_stride * __pyx_v_xx) + __pyx_v_jj); if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_pybuffernd_x_padded.diminfo[0].shape; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_pybuffernd_x_padded.diminfo[1].shape; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_pybuffernd_x_padded.diminfo[2].shape; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_pybuffernd_x_padded.diminfo[3].shape; *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_23, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_24, __pyx_pybuffernd_x_padded.diminfo[3].strides) += (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_cols.diminfo[1].strides)); } } } } } } /* "im2col_cython.pyx":75 * * @cython.boundscheck(False) * cdef int col2im_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "im2col_cython.pyx":94 * @cython.boundscheck(False) * @cython.wraparound(False) * cdef col2im_6d_cython_inner(np.ndarray[DTYPE_t, ndim=6] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ static PyObject *__pyx_fuse_0__pyx_f_13im2col_cython_col2im_6d_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_out_h, int __pyx_v_out_w, CYTHON_UNUSED int __pyx_v_pad, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_hh; int __pyx_v_ww; int __pyx_v_n; int __pyx_v_h; int __pyx_v_w; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; Py_ssize_t __pyx_t_25; Py_ssize_t __pyx_t_26; Py_ssize_t __pyx_t_27; Py_ssize_t __pyx_t_28; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0col2im_6d_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 6, 0, __pyx_stack) == -1)) __PYX_ERR(0, 94, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cols.diminfo[2].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cols.diminfo[2].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_cols.diminfo[3].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_cols.diminfo[3].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[3]; __pyx_pybuffernd_cols.diminfo[4].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[4]; __pyx_pybuffernd_cols.diminfo[4].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[4]; __pyx_pybuffernd_cols.diminfo[5].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[5]; __pyx_pybuffernd_cols.diminfo[5].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[5]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 94, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":100 * * cdef int c, hh, ww, n, h, w * for n in range(N): # <<<<<<<<<<<<<< * for c in range(C): * for hh in range(HH): */ __pyx_t_1 = __pyx_v_N; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_n = __pyx_t_3; /* "im2col_cython.pyx":101 * cdef int c, hh, ww, n, h, w * for n in range(N): * for c in range(C): # <<<<<<<<<<<<<< * for hh in range(HH): * for ww in range(WW): */ __pyx_t_4 = __pyx_v_C; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_c = __pyx_t_6; /* "im2col_cython.pyx":102 * for n in range(N): * for c in range(C): * for hh in range(HH): # <<<<<<<<<<<<<< * for ww in range(WW): * for h in range(out_h): */ __pyx_t_7 = __pyx_v_HH; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_hh = __pyx_t_9; /* "im2col_cython.pyx":103 * for c in range(C): * for hh in range(HH): * for ww in range(WW): # <<<<<<<<<<<<<< * for h in range(out_h): * for w in range(out_w): */ __pyx_t_10 = __pyx_v_WW; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_ww = __pyx_t_12; /* "im2col_cython.pyx":104 * for hh in range(HH): * for ww in range(WW): * for h in range(out_h): # <<<<<<<<<<<<<< * for w in range(out_w): * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] */ __pyx_t_13 = __pyx_v_out_h; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_h = __pyx_t_15; /* "im2col_cython.pyx":105 * for ww in range(WW): * for h in range(out_h): * for w in range(out_w): # <<<<<<<<<<<<<< * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] * */ __pyx_t_16 = __pyx_v_out_w; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_w = __pyx_t_18; /* "im2col_cython.pyx":106 * for h in range(out_h): * for w in range(out_w): * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_c; __pyx_t_20 = __pyx_v_hh; __pyx_t_21 = __pyx_v_ww; __pyx_t_22 = __pyx_v_n; __pyx_t_23 = __pyx_v_h; __pyx_t_24 = __pyx_v_w; __pyx_t_25 = __pyx_v_n; __pyx_t_26 = __pyx_v_c; __pyx_t_27 = ((__pyx_v_stride * __pyx_v_h) + __pyx_v_hh); __pyx_t_28 = ((__pyx_v_stride * __pyx_v_w) + __pyx_v_ww); *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_27, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_28, __pyx_pybuffernd_x_padded.diminfo[3].strides) += (*__Pyx_BufPtrStrided6d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_cols.diminfo[1].strides, __pyx_t_21, __pyx_pybuffernd_cols.diminfo[2].strides, __pyx_t_22, __pyx_pybuffernd_cols.diminfo[3].strides, __pyx_t_23, __pyx_pybuffernd_cols.diminfo[4].strides, __pyx_t_24, __pyx_pybuffernd_cols.diminfo[5].strides)); } } } } } } /* "im2col_cython.pyx":94 * @cython.boundscheck(False) * @cython.wraparound(False) * cdef col2im_6d_cython_inner(np.ndarray[DTYPE_t, ndim=6] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_6d_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_fuse_1__pyx_f_13im2col_cython_col2im_6d_cython_inner(PyArrayObject *__pyx_v_cols, PyArrayObject *__pyx_v_x_padded, int __pyx_v_N, int __pyx_v_C, CYTHON_UNUSED int __pyx_v_H, CYTHON_UNUSED int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_out_h, int __pyx_v_out_w, CYTHON_UNUSED int __pyx_v_pad, int __pyx_v_stride) { int __pyx_v_c; int __pyx_v_hh; int __pyx_v_ww; int __pyx_v_n; int __pyx_v_h; int __pyx_v_w; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; Py_ssize_t __pyx_t_25; Py_ssize_t __pyx_t_26; Py_ssize_t __pyx_t_27; Py_ssize_t __pyx_t_28; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1col2im_6d_cython_inner", 0); __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 6, 0, __pyx_stack) == -1)) __PYX_ERR(0, 94, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cols.diminfo[2].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cols.diminfo[2].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_cols.diminfo[3].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_cols.diminfo[3].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[3]; __pyx_pybuffernd_cols.diminfo[4].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[4]; __pyx_pybuffernd_cols.diminfo[4].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[4]; __pyx_pybuffernd_cols.diminfo[5].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[5]; __pyx_pybuffernd_cols.diminfo[5].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[5]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_v_x_padded, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) __PYX_ERR(0, 94, __pyx_L1_error) } __pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; /* "im2col_cython.pyx":100 * * cdef int c, hh, ww, n, h, w * for n in range(N): # <<<<<<<<<<<<<< * for c in range(C): * for hh in range(HH): */ __pyx_t_1 = __pyx_v_N; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_n = __pyx_t_3; /* "im2col_cython.pyx":101 * cdef int c, hh, ww, n, h, w * for n in range(N): * for c in range(C): # <<<<<<<<<<<<<< * for hh in range(HH): * for ww in range(WW): */ __pyx_t_4 = __pyx_v_C; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_c = __pyx_t_6; /* "im2col_cython.pyx":102 * for n in range(N): * for c in range(C): * for hh in range(HH): # <<<<<<<<<<<<<< * for ww in range(WW): * for h in range(out_h): */ __pyx_t_7 = __pyx_v_HH; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_hh = __pyx_t_9; /* "im2col_cython.pyx":103 * for c in range(C): * for hh in range(HH): * for ww in range(WW): # <<<<<<<<<<<<<< * for h in range(out_h): * for w in range(out_w): */ __pyx_t_10 = __pyx_v_WW; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_ww = __pyx_t_12; /* "im2col_cython.pyx":104 * for hh in range(HH): * for ww in range(WW): * for h in range(out_h): # <<<<<<<<<<<<<< * for w in range(out_w): * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] */ __pyx_t_13 = __pyx_v_out_h; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_h = __pyx_t_15; /* "im2col_cython.pyx":105 * for ww in range(WW): * for h in range(out_h): * for w in range(out_w): # <<<<<<<<<<<<<< * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] * */ __pyx_t_16 = __pyx_v_out_w; __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_w = __pyx_t_18; /* "im2col_cython.pyx":106 * for h in range(out_h): * for w in range(out_w): * x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] # <<<<<<<<<<<<<< * * */ __pyx_t_19 = __pyx_v_c; __pyx_t_20 = __pyx_v_hh; __pyx_t_21 = __pyx_v_ww; __pyx_t_22 = __pyx_v_n; __pyx_t_23 = __pyx_v_h; __pyx_t_24 = __pyx_v_w; __pyx_t_25 = __pyx_v_n; __pyx_t_26 = __pyx_v_c; __pyx_t_27 = ((__pyx_v_stride * __pyx_v_h) + __pyx_v_hh); __pyx_t_28 = ((__pyx_v_stride * __pyx_v_w) + __pyx_v_ww); *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_x_padded.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_x_padded.diminfo[1].strides, __pyx_t_27, __pyx_pybuffernd_x_padded.diminfo[2].strides, __pyx_t_28, __pyx_pybuffernd_x_padded.diminfo[3].strides) += (*__Pyx_BufPtrStrided6d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cols.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_cols.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_cols.diminfo[1].strides, __pyx_t_21, __pyx_pybuffernd_cols.diminfo[2].strides, __pyx_t_22, __pyx_pybuffernd_cols.diminfo[3].strides, __pyx_t_23, __pyx_pybuffernd_cols.diminfo[4].strides, __pyx_t_24, __pyx_pybuffernd_cols.diminfo[5].strides)); } } } } } } /* "im2col_cython.pyx":94 * @cython.boundscheck(False) * @cython.wraparound(False) * cdef col2im_6d_cython_inner(np.ndarray[DTYPE_t, ndim=6] cols, # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t, ndim=4] x_padded, * int N, int C, int H, int W, int HH, int WW, */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_6d_cython_inner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "im2col_cython.pyx":109 * * * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* Python wrapper */ static PyObject *__pyx_pw_13im2col_cython_5col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_13im2col_cython_5col2im_6d_cython = {"col2im_6d_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13im2col_cython_5col2im_6d_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_13im2col_cython_5col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; PyObject *__pyx_v_args = 0; PyObject *__pyx_v_kwargs = 0; CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signatures)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 2); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_defaults)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 3); __PYX_ERR(0, 109, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) __PYX_ERR(0, 109, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_signatures = values[0]; __pyx_v_args = values[1]; __pyx_v_kwargs = values[2]; __pyx_v_defaults = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 109, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_13im2col_cython_4col2im_6d_cython(__pyx_self, __pyx_v_signatures, __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_4col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults) { PyObject *__pyx_v_dest_sig = NULL; Py_ssize_t __pyx_v_i; PyTypeObject *__pyx_v_ndarray = 0; __Pyx_memviewslice __pyx_v_memslice; Py_ssize_t __pyx_v_itemsize; CYTHON_UNUSED int __pyx_v_dtype_signed; char __pyx_v_kind; PyObject *__pyx_v_arg = NULL; PyObject *__pyx_v_dtype = NULL; PyObject *__pyx_v_arg_base = NULL; PyObject *__pyx_v_candidates = NULL; PyObject *__pyx_v_sig = NULL; int __pyx_v_match_found; PyObject *__pyx_v_src_sig = NULL; PyObject *__pyx_v_dst_type = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; Py_ssize_t __pyx_t_5; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; __Pyx_memviewslice __pyx_t_8; Py_ssize_t __pyx_t_9; int __pyx_t_10; int __pyx_t_11; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; Py_ssize_t __pyx_t_15; Py_ssize_t __pyx_t_16; Py_ssize_t __pyx_t_17; int __pyx_t_18; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("col2im_6d_cython", 0); __Pyx_INCREF(__pyx_v_kwargs); __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyList_SET_ITEM(__pyx_t_1, 0, Py_None); __pyx_v_dest_sig = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); } __pyx_t_1 = ((PyObject *)__Pyx_ImportNumPyArrayTypeIfAvailable()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_ndarray = ((PyTypeObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_v_itemsize = -1L; if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_2 = ((0 < __pyx_t_5) != 0); if (__pyx_t_2) { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(((PyObject*)__pyx_v_args), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } __pyx_t_3 = (__pyx_v_kwargs != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L7_bool_binop_done; } if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_cols, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L7_bool_binop_done:; if (__pyx_t_2) { if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_cols); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_arg = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6; } /*else*/ { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_int_9); __Pyx_GIVEREF(__pyx_int_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_9); __Pyx_INCREF(__pyx_n_s_s); __Pyx_GIVEREF(__pyx_n_s_s); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_s); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_L6:; while (1) { __pyx_t_2 = (__pyx_v_ndarray != ((PyTypeObject*)Py_None)); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L12; } __pyx_t_2 = __pyx_memoryview_check(__pyx_v_arg); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_arg_base = __pyx_t_6; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L13; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L13:; goto __pyx_L12; } /*else*/ { __Pyx_INCREF(Py_None); __pyx_v_dtype = Py_None; } __pyx_L12:; __pyx_v_itemsize = -1L; __pyx_t_2 = (__pyx_v_dtype != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_itemsize = __pyx_t_5; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_7 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_kind = __pyx_t_7; __pyx_v_dtype_signed = (__pyx_v_kind == 'i'); switch (__pyx_v_kind) { case 'i': case 'u': break; case 'f': __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float32_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L16_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 6) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L16_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 109, __pyx_L1_error) goto __pyx_L10_break; } __pyx_t_2 = (((sizeof(__pyx_t_5numpy_float64_t)) == __pyx_v_itemsize) != 0); if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L19_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = ((((Py_ssize_t)__pyx_t_5) == 6) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L19_bool_binop_done:; if (__pyx_t_3) { if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 109, __pyx_L1_error) goto __pyx_L10_break; } break; case 'c': break; case 'O': break; default: break; } } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L22_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float32_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L22_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float32_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float32_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 109, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } __pyx_t_2 = ((__pyx_v_itemsize == -1L) != 0); if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L26_bool_binop_done; } __pyx_t_2 = ((__pyx_v_itemsize == (sizeof(__pyx_t_5numpy_float64_t))) != 0); __pyx_t_3 = __pyx_t_2; __pyx_L26_bool_binop_done:; if (__pyx_t_3) { __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float64_t(__pyx_v_arg, 0); __pyx_v_memslice = __pyx_t_8; __pyx_t_3 = (__pyx_v_memslice.memview != 0); if (__pyx_t_3) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float64_t, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 109, __pyx_L1_error) goto __pyx_L10_break; } /*else*/ { PyErr_Clear(); } } if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 109, __pyx_L1_error) goto __pyx_L10_break; } __pyx_L10_break:; __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_candidates = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; __pyx_t_5 = 0; if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_1 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = __pyx_t_1; __pyx_t_1 = 0; while (1) { __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_9, &__pyx_t_5, &__pyx_t_1, NULL, NULL, __pyx_t_10); if (unlikely(__pyx_t_11 == 0)) break; if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_v_match_found = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s_); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__2) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__2); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_i = __pyx_t_17; __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_dest_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_v_dst_type != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_2) { __pyx_v_match_found = 1; goto __pyx_L34; } /*else*/ { __pyx_v_match_found = 0; goto __pyx_L32_break; } __pyx_L34:; } } __pyx_L32_break:; __pyx_t_2 = (__pyx_v_match_found != 0); if (__pyx_t_2) { __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 109, __pyx_L1_error) } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0); __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_3 = ((__pyx_t_9 > 1) != 0); if (__pyx_t_3) { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 109, __pyx_L1_error) } /*else*/ { __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_candidates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_13; __pyx_t_13 = 0; goto __pyx_L0; } /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("im2col_cython.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_dest_sig); __Pyx_XDECREF(__pyx_v_ndarray); __Pyx_XDECREF(__pyx_v_arg); __Pyx_XDECREF(__pyx_v_dtype); __Pyx_XDECREF(__pyx_v_arg_base); __Pyx_XDECREF(__pyx_v_candidates); __Pyx_XDECREF(__pyx_v_sig); __Pyx_XDECREF(__pyx_v_src_sig); __Pyx_XDECREF(__pyx_v_dst_type); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_19col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_0__pyx_mdef_13im2col_cython_19col2im_6d_cython = {"__pyx_fuse_0col2im_6d_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_13im2col_cython_19col2im_6d_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_0__pyx_pw_13im2col_cython_19col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_cols = 0; int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_HH; int __pyx_v_WW; int __pyx_v_pad; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("col2im_6d_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cols,&__pyx_n_s_N,&__pyx_n_s_C,&__pyx_n_s_H,&__pyx_n_s_W,&__pyx_n_s_HH,&__pyx_n_s_WW,&__pyx_n_s_pad,&__pyx_n_s_stride,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8); CYTHON_FALLTHROUGH; case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cols)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 1); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 2); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_H)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 3); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 4); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_HH)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 5); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_WW)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 6); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pad)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 7); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 8: if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 8); __PYX_ERR(0, 109, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "col2im_6d_cython") < 0)) __PYX_ERR(0, 109, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 9) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); values[5] = PyTuple_GET_ITEM(__pyx_args, 5); values[6] = PyTuple_GET_ITEM(__pyx_args, 6); values[7] = PyTuple_GET_ITEM(__pyx_args, 7); values[8] = PyTuple_GET_ITEM(__pyx_args, 8); } __pyx_v_cols = ((PyArrayObject *)values[0]); __pyx_v_N = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_N == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_C = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_C == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_H = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_H == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_W = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_W == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_HH = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_HH == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_WW = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_WW == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_pad = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_pad == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 109, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.col2im_6d_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cols), __pyx_ptype_5numpy_ndarray, 1, "cols", 0))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_18col2im_6d_cython(__pyx_self, __pyx_v_cols, __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_pad, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_18col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_pad, int __pyx_v_stride) { CYTHON_UNUSED PyArrayObject *__pyx_v_x = 0; int __pyx_v_out_h; int __pyx_v_out_w; PyArrayObject *__pyx_v_x_padded = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0col2im_6d_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 6, 0, __pyx_stack) == -1)) __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cols.diminfo[2].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cols.diminfo[2].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_cols.diminfo[3].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_cols.diminfo[3].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[3]; __pyx_pybuffernd_cols.diminfo[4].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[4]; __pyx_pybuffernd_cols.diminfo[4].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[4]; __pyx_pybuffernd_cols.diminfo[5].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[5]; __pyx_pybuffernd_cols.diminfo[5].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[5]; /* "im2col_cython.pyx":111 * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) # <<<<<<<<<<<<<< * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_H); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_W); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 111, __pyx_L1_error) __pyx_v_x = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; /* "im2col_cython.pyx":112 * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int out_h = (H + 2 * pad - HH) / stride + 1 # <<<<<<<<<<<<<< * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), */ __pyx_t_7 = ((__pyx_v_H + (2 * __pyx_v_pad)) - __pyx_v_HH); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 112, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 112, __pyx_L1_error) } __pyx_v_out_h = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":113 * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), * dtype=cols.dtype) */ __pyx_t_7 = ((__pyx_v_W + (2 * __pyx_v_pad)) - __pyx_v_WW); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 113, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 113, __pyx_L1_error) } __pyx_v_out_w = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":114 * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_H + (2 * __pyx_v_pad))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_W + (2 * __pyx_v_pad))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":115 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), * dtype=cols.dtype) # <<<<<<<<<<<<<< * * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) */ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":114 * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 114, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 114, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_8 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":117 * dtype=cols.dtype) * * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) # <<<<<<<<<<<<<< * * if pad > 0: */ __pyx_t_2 = __pyx_fuse_0__pyx_f_13im2col_cython_col2im_6d_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_out_h, __pyx_v_out_w, __pyx_v_pad, __pyx_v_stride); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":119 * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) * * if pad > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded */ __pyx_t_9 = ((__pyx_v_pad > 0) != 0); if (__pyx_t_9) { /* "im2col_cython.pyx":120 * * if pad > 0: * return x_padded[:, :, pad:-pad, pad:-pad] # <<<<<<<<<<<<<< * return x_padded */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pad); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyInt_From_int((-__pyx_v_pad)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pad); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_pad)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_slice__10); __Pyx_GIVEREF(__pyx_slice__10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__10); __Pyx_INCREF(__pyx_slice__11); __Pyx_GIVEREF(__pyx_slice__11); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__11); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x_padded), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "im2col_cython.pyx":119 * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) * * if pad > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded */ } /* "im2col_cython.pyx":121 * if pad > 0: * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x_padded)); __pyx_r = ((PyObject *)__pyx_v_x_padded); goto __pyx_L0; /* "im2col_cython.pyx":109 * * * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_6d_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x); __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_21col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_fuse_1__pyx_mdef_13im2col_cython_21col2im_6d_cython = {"__pyx_fuse_1col2im_6d_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_13im2col_cython_21col2im_6d_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_fuse_1__pyx_pw_13im2col_cython_21col2im_6d_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_cols = 0; int __pyx_v_N; int __pyx_v_C; int __pyx_v_H; int __pyx_v_W; int __pyx_v_HH; int __pyx_v_WW; int __pyx_v_pad; int __pyx_v_stride; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("col2im_6d_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cols,&__pyx_n_s_N,&__pyx_n_s_C,&__pyx_n_s_H,&__pyx_n_s_W,&__pyx_n_s_HH,&__pyx_n_s_WW,&__pyx_n_s_pad,&__pyx_n_s_stride,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8); CYTHON_FALLTHROUGH; case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cols)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 1); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 2); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_H)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 3); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 4); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_HH)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 5); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_WW)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 6); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pad)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 7); __PYX_ERR(0, 109, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 8: if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, 8); __PYX_ERR(0, 109, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "col2im_6d_cython") < 0)) __PYX_ERR(0, 109, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 9) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); values[5] = PyTuple_GET_ITEM(__pyx_args, 5); values[6] = PyTuple_GET_ITEM(__pyx_args, 6); values[7] = PyTuple_GET_ITEM(__pyx_args, 7); values[8] = PyTuple_GET_ITEM(__pyx_args, 8); } __pyx_v_cols = ((PyArrayObject *)values[0]); __pyx_v_N = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_N == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_C = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_C == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_H = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_H == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_W = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_W == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) __pyx_v_HH = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_HH == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_WW = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_WW == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_pad = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_pad == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) __pyx_v_stride = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("col2im_6d_cython", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 109, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("im2col_cython.col2im_6d_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cols), __pyx_ptype_5numpy_ndarray, 1, "cols", 0))) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_r = __pyx_pf_13im2col_cython_20col2im_6d_cython(__pyx_self, __pyx_v_cols, __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_pad, __pyx_v_stride); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_13im2col_cython_20col2im_6d_cython(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_cols, int __pyx_v_N, int __pyx_v_C, int __pyx_v_H, int __pyx_v_W, int __pyx_v_HH, int __pyx_v_WW, int __pyx_v_pad, int __pyx_v_stride) { CYTHON_UNUSED PyArrayObject *__pyx_v_x = 0; int __pyx_v_out_h; int __pyx_v_out_w; PyArrayObject *__pyx_v_x_padded = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_cols; __Pyx_Buffer __pyx_pybuffer_cols; __Pyx_LocalBuf_ND __pyx_pybuffernd_x_padded; __Pyx_Buffer __pyx_pybuffer_x_padded; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; long __pyx_t_7; PyArrayObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1col2im_6d_cython", 0); __pyx_pybuffer_x_padded.pybuffer.buf = NULL; __pyx_pybuffer_x_padded.refcount = 0; __pyx_pybuffernd_x_padded.data = NULL; __pyx_pybuffernd_x_padded.rcbuffer = &__pyx_pybuffer_x_padded; __pyx_pybuffer_cols.pybuffer.buf = NULL; __pyx_pybuffer_cols.refcount = 0; __pyx_pybuffernd_cols.data = NULL; __pyx_pybuffernd_cols.rcbuffer = &__pyx_pybuffer_cols; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cols.rcbuffer->pybuffer, (PyObject*)__pyx_v_cols, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 6, 0, __pyx_stack) == -1)) __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_pybuffernd_cols.diminfo[0].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cols.diminfo[0].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cols.diminfo[1].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cols.diminfo[1].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cols.diminfo[2].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cols.diminfo[2].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_cols.diminfo[3].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_cols.diminfo[3].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[3]; __pyx_pybuffernd_cols.diminfo[4].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[4]; __pyx_pybuffernd_cols.diminfo[4].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[4]; __pyx_pybuffernd_cols.diminfo[5].strides = __pyx_pybuffernd_cols.rcbuffer->pybuffer.strides[5]; __pyx_pybuffernd_cols.diminfo[5].shape = __pyx_pybuffernd_cols.rcbuffer->pybuffer.shape[5]; /* "im2col_cython.pyx":111 * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) # <<<<<<<<<<<<<< * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_H); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_W); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 111, __pyx_L1_error) __pyx_v_x = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; /* "im2col_cython.pyx":112 * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int out_h = (H + 2 * pad - HH) / stride + 1 # <<<<<<<<<<<<<< * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), */ __pyx_t_7 = ((__pyx_v_H + (2 * __pyx_v_pad)) - __pyx_v_HH); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 112, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 112, __pyx_L1_error) } __pyx_v_out_h = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":113 * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 # <<<<<<<<<<<<<< * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), * dtype=cols.dtype) */ __pyx_t_7 = ((__pyx_v_W + (2 * __pyx_v_pad)) - __pyx_v_WW); if (unlikely(__pyx_v_stride == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 113, __pyx_L1_error) } else if (sizeof(long) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_stride == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_7))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(0, 113, __pyx_L1_error) } __pyx_v_out_w = (__Pyx_div_long(__pyx_t_7, __pyx_v_stride) + 1); /* "im2col_cython.pyx":114 * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_C); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_H + (2 * __pyx_v_pad))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_W + (2 * __pyx_v_pad))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":115 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), * dtype=cols.dtype) # <<<<<<<<<<<<<< * * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) */ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cols), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":114 * cdef int out_h = (H + 2 * pad - HH) / stride + 1 * cdef int out_w = (W + 2 * pad - WW) / stride + 1 * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), # <<<<<<<<<<<<<< * dtype=cols.dtype) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 114, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) { __pyx_v_x_padded = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 114, __pyx_L1_error) } else {__pyx_pybuffernd_x_padded.diminfo[0].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x_padded.diminfo[0].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_x_padded.diminfo[1].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_x_padded.diminfo[1].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_x_padded.diminfo[2].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_x_padded.diminfo[2].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_x_padded.diminfo[3].strides = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_x_padded.diminfo[3].shape = __pyx_pybuffernd_x_padded.rcbuffer->pybuffer.shape[3]; } } __pyx_t_8 = 0; __pyx_v_x_padded = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":117 * dtype=cols.dtype) * * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) # <<<<<<<<<<<<<< * * if pad > 0: */ __pyx_t_2 = __pyx_fuse_1__pyx_f_13im2col_cython_col2im_6d_cython_inner(((PyArrayObject *)__pyx_v_cols), ((PyArrayObject *)__pyx_v_x_padded), __pyx_v_N, __pyx_v_C, __pyx_v_H, __pyx_v_W, __pyx_v_HH, __pyx_v_WW, __pyx_v_out_h, __pyx_v_out_w, __pyx_v_pad, __pyx_v_stride); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":119 * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) * * if pad > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded */ __pyx_t_9 = ((__pyx_v_pad > 0) != 0); if (__pyx_t_9) { /* "im2col_cython.pyx":120 * * if pad > 0: * return x_padded[:, :, pad:-pad, pad:-pad] # <<<<<<<<<<<<<< * return x_padded */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pad); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyInt_From_int((-__pyx_v_pad)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pad); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int((-__pyx_v_pad)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_slice__12); __Pyx_GIVEREF(__pyx_slice__12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__12); __Pyx_INCREF(__pyx_slice__13); __Pyx_GIVEREF(__pyx_slice__13); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__13); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x_padded), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "im2col_cython.pyx":119 * col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) * * if pad > 0: # <<<<<<<<<<<<<< * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded */ } /* "im2col_cython.pyx":121 * if pad > 0: * return x_padded[:, :, pad:-pad, pad:-pad] * return x_padded # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x_padded)); __pyx_r = ((PyObject *)__pyx_v_x_padded); goto __pyx_L0; /* "im2col_cython.pyx":109 * * * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("im2col_cython.col2im_6d_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cols.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x_padded.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_x); __Pyx_XDECREF((PyObject *)__pyx_v_x_padded); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":734 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(1, a) * */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":735 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< * * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":734 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(1, a) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":737 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(2, a, b) * */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":738 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< * * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":737 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(2, a, b) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":740 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(3, a, b, c) * */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":741 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":740 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(3, a, b, c) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":743 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(4, a, b, c, d) * */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":744 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":743 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(4, a, b, c, d) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":746 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(5, a, b, c, d, e) * */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":747 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< * * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":746 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< * return PyArray_MultiIterNew(5, a, b, c, d, e) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":749 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":750 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< * return d.subarray.shape * else: */ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":751 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< * else: * return () */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":750 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< * return d.subarray.shape * else: */ } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":753 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< * * */ /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_empty_tuple); __pyx_r = __pyx_empty_tuple; goto __pyx_L0; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":749 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":868 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) */ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_array_base", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":869 * * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< * PyArray_SetBaseObject(arr, base) * */ Py_INCREF(__pyx_v_base); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":870 * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< * * cdef inline object get_array_base(ndarray arr): */ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":868 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":872 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< * base = PyArray_BASE(arr) * if base is NULL: */ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { PyObject *__pyx_v_base; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":873 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< * if base is NULL: * return None */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":874 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< * return None * return base */ __pyx_t_1 = ((__pyx_v_base == NULL) != 0); if (__pyx_t_1) { /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":875 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< * return base * */ __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":874 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< * return None * return base */ } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":876 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< * * # Versions of the import_* functions which are more suitable for */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_base)); __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":872 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< * base = PyArray_BASE(arr) * if base is NULL: */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":880 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< * try: * __pyx_import_array() */ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":881 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< * __pyx_import_array() * except Exception: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":882 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.multiarray failed to import") */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 882, __pyx_L3_error) /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":881 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< * __pyx_import_array() * except Exception: */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":883 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< * raise ImportError("numpy.core.multiarray failed to import") * */ __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 883, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":884 * __pyx_import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 884, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __PYX_ERR(1, 884, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":881 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< * __pyx_import_array() * except Exception: */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L8_try_end:; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":880 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< * try: * __pyx_import_array() */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":886 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< * try: * _import_umath() */ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":887 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":888 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 888, __pyx_L3_error) /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":887 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":889 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< * raise ImportError("numpy.core.umath failed to import") * */ __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 889, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":890 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 890, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __PYX_ERR(1, 890, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":887 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L8_try_end:; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":886 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< * try: * _import_umath() */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":892 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< * try: * _import_umath() */ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":893 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":894 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 894, __pyx_L3_error) /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":893 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":895 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< * raise ImportError("numpy.core.umath failed to import") * */ __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 895, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":896 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef extern from *: */ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 896, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __PYX_ERR(1, 896, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":893 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L8_try_end:; } /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":892 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< * try: * _import_umath() */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":122 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< * mode="c", bint allocate_buffer=True): * */ /* Python wrapper */ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_shape = 0; Py_ssize_t __pyx_v_itemsize; PyObject *__pyx_v_format = 0; PyObject *__pyx_v_mode = 0; int __pyx_v_allocate_buffer; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0}; PyObject* values[5] = {0,0,0,0,0}; values[3] = ((PyObject *)__pyx_n_s_c); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(2, 122, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(2, 122, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_allocate_buffer); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(2, 122, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_shape = ((PyObject*)values[0]); __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 122, __pyx_L3_error) __pyx_v_format = values[2]; __pyx_v_mode = values[3]; if (values[4]) { __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L3_error) } else { /* "View.MemoryView":123 * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, * mode="c", bint allocate_buffer=True): # <<<<<<<<<<<<<< * * cdef int idx */ __pyx_v_allocate_buffer = ((int)1); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 122, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(2, 122, __pyx_L1_error) if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(2, 122, __pyx_L1_error) } __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); /* "View.MemoryView":122 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< * mode="c", bint allocate_buffer=True): * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) { int __pyx_v_idx; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_dim; PyObject **__pyx_v_p; char __pyx_v_order; int __pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; char *__pyx_t_7; int __pyx_t_8; Py_ssize_t __pyx_t_9; PyObject *__pyx_t_10 = NULL; Py_ssize_t __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_format); /* "View.MemoryView":129 * cdef PyObject **p * * self.ndim = len(shape) # <<<<<<<<<<<<<< * self.itemsize = itemsize * */ if (unlikely(__pyx_v_shape == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(2, 129, __pyx_L1_error) } __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(2, 129, __pyx_L1_error) __pyx_v_self->ndim = ((int)__pyx_t_1); /* "View.MemoryView":130 * * self.ndim = len(shape) * self.itemsize = itemsize # <<<<<<<<<<<<<< * * if not self.ndim: */ __pyx_v_self->itemsize = __pyx_v_itemsize; /* "View.MemoryView":132 * self.itemsize = itemsize * * if not self.ndim: # <<<<<<<<<<<<<< * raise ValueError("Empty shape tuple for cython.array") * */ __pyx_t_2 = ((!(__pyx_v_self->ndim != 0)) != 0); if (unlikely(__pyx_t_2)) { /* "View.MemoryView":133 * * if not self.ndim: * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< * * if itemsize <= 0: */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 133, __pyx_L1_error) /* "View.MemoryView":132 * self.itemsize = itemsize * * if not self.ndim: # <<<<<<<<<<<<<< * raise ValueError("Empty shape tuple for cython.array") * */ } /* "View.MemoryView":135 * raise ValueError("Empty shape tuple for cython.array") * * if itemsize <= 0: # <<<<<<<<<<<<<< * raise ValueError("itemsize <= 0 for cython.array") * */ __pyx_t_2 = ((__pyx_v_itemsize <= 0) != 0); if (unlikely(__pyx_t_2)) { /* "View.MemoryView":136 * * if itemsize <= 0: * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< * * if not isinstance(format, bytes): */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 136, __pyx_L1_error) /* "View.MemoryView":135 * raise ValueError("Empty shape tuple for cython.array") * * if itemsize <= 0: # <<<<<<<<<<<<<< * raise ValueError("itemsize <= 0 for cython.array") * */ } /* "View.MemoryView":138 * raise ValueError("itemsize <= 0 for cython.array") * * if not isinstance(format, bytes): # <<<<<<<<<<<<<< * format = format.encode('ASCII') * self._format = format # keep a reference to the byte string */ __pyx_t_2 = PyBytes_Check(__pyx_v_format); __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0); if (__pyx_t_4) { /* "View.MemoryView":139 * * if not isinstance(format, bytes): * format = format.encode('ASCII') # <<<<<<<<<<<<<< * self._format = format # keep a reference to the byte string * self.format = self._format */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":138 * raise ValueError("itemsize <= 0 for cython.array") * * if not isinstance(format, bytes): # <<<<<<<<<<<<<< * format = format.encode('ASCII') * self._format = format # keep a reference to the byte string */ } /* "View.MemoryView":140 * if not isinstance(format, bytes): * format = format.encode('ASCII') * self._format = format # keep a reference to the byte string # <<<<<<<<<<<<<< * self.format = self._format * */ if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 140, __pyx_L1_error) __pyx_t_3 = __pyx_v_format; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_format); __Pyx_DECREF(__pyx_v_self->_format); __pyx_v_self->_format = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":141 * format = format.encode('ASCII') * self._format = format # keep a reference to the byte string * self.format = self._format # <<<<<<<<<<<<<< * * */ if (unlikely(__pyx_v_self->_format == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); __PYX_ERR(2, 141, __pyx_L1_error) } __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 141, __pyx_L1_error) __pyx_v_self->format = __pyx_t_7; /* "View.MemoryView":144 * * * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) # <<<<<<<<<<<<<< * self._strides = self._shape + self.ndim * */ __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2))); /* "View.MemoryView":145 * * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) * self._strides = self._shape + self.ndim # <<<<<<<<<<<<<< * * if not self._shape: */ __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim); /* "View.MemoryView":147 * self._strides = self._shape + self.ndim * * if not self._shape: # <<<<<<<<<<<<<< * raise MemoryError("unable to allocate shape and strides.") * */ __pyx_t_4 = ((!(__pyx_v_self->_shape != 0)) != 0); if (unlikely(__pyx_t_4)) { /* "View.MemoryView":148 * * if not self._shape: * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 148, __pyx_L1_error) /* "View.MemoryView":147 * self._strides = self._shape + self.ndim * * if not self._shape: # <<<<<<<<<<<<<< * raise MemoryError("unable to allocate shape and strides.") * */ } /* "View.MemoryView":151 * * * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) */ __pyx_t_8 = 0; __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; for (;;) { if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 151, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_dim = __pyx_t_9; __pyx_v_idx = __pyx_t_8; __pyx_t_8 = (__pyx_t_8 + 1); /* "View.MemoryView":152 * * for idx, dim in enumerate(shape): * if dim <= 0: # <<<<<<<<<<<<<< * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) * self._shape[idx] = dim */ __pyx_t_4 = ((__pyx_v_dim <= 0) != 0); if (unlikely(__pyx_t_4)) { /* "View.MemoryView":153 * for idx, dim in enumerate(shape): * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) # <<<<<<<<<<<<<< * self._shape[idx] = dim * */ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(2, 153, __pyx_L1_error) /* "View.MemoryView":152 * * for idx, dim in enumerate(shape): * if dim <= 0: # <<<<<<<<<<<<<< * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) * self._shape[idx] = dim */ } /* "View.MemoryView":154 * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) * self._shape[idx] = dim # <<<<<<<<<<<<<< * * cdef char order */ (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim; /* "View.MemoryView":151 * * * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":157 * * cdef char order * if mode == 'fortran': # <<<<<<<<<<<<<< * order = b'F' * self.mode = u'fortran' */ __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 157, __pyx_L1_error) if (__pyx_t_4) { /* "View.MemoryView":158 * cdef char order * if mode == 'fortran': * order = b'F' # <<<<<<<<<<<<<< * self.mode = u'fortran' * elif mode == 'c': */ __pyx_v_order = 'F'; /* "View.MemoryView":159 * if mode == 'fortran': * order = b'F' * self.mode = u'fortran' # <<<<<<<<<<<<<< * elif mode == 'c': * order = b'C' */ __Pyx_INCREF(__pyx_n_u_fortran); __Pyx_GIVEREF(__pyx_n_u_fortran); __Pyx_GOTREF(__pyx_v_self->mode); __Pyx_DECREF(__pyx_v_self->mode); __pyx_v_self->mode = __pyx_n_u_fortran; /* "View.MemoryView":157 * * cdef char order * if mode == 'fortran': # <<<<<<<<<<<<<< * order = b'F' * self.mode = u'fortran' */ goto __pyx_L10; } /* "View.MemoryView":160 * order = b'F' * self.mode = u'fortran' * elif mode == 'c': # <<<<<<<<<<<<<< * order = b'C' * self.mode = u'c' */ __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 160, __pyx_L1_error) if (likely(__pyx_t_4)) { /* "View.MemoryView":161 * self.mode = u'fortran' * elif mode == 'c': * order = b'C' # <<<<<<<<<<<<<< * self.mode = u'c' * else: */ __pyx_v_order = 'C'; /* "View.MemoryView":162 * elif mode == 'c': * order = b'C' * self.mode = u'c' # <<<<<<<<<<<<<< * else: * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) */ __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); __Pyx_GOTREF(__pyx_v_self->mode); __Pyx_DECREF(__pyx_v_self->mode); __pyx_v_self->mode = __pyx_n_u_c; /* "View.MemoryView":160 * order = b'F' * self.mode = u'fortran' * elif mode == 'c': # <<<<<<<<<<<<<< * order = b'C' * self.mode = u'c' */ goto __pyx_L10; } /* "View.MemoryView":164 * self.mode = u'c' * else: * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) # <<<<<<<<<<<<<< * * self.len = fill_contig_strides_array(self._shape, self._strides, */ /*else*/ { __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(2, 164, __pyx_L1_error) } __pyx_L10:; /* "View.MemoryView":166 * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) * * self.len = fill_contig_strides_array(self._shape, self._strides, # <<<<<<<<<<<<<< * itemsize, self.ndim, order) * */ __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order); /* "View.MemoryView":169 * itemsize, self.ndim, order) * * self.free_data = allocate_buffer # <<<<<<<<<<<<<< * self.dtype_is_object = format == b'O' * if allocate_buffer: */ __pyx_v_self->free_data = __pyx_v_allocate_buffer; /* "View.MemoryView":170 * * self.free_data = allocate_buffer * self.dtype_is_object = format == b'O' # <<<<<<<<<<<<<< * if allocate_buffer: * */ __pyx_t_10 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 170, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_self->dtype_is_object = __pyx_t_4; /* "View.MemoryView":171 * self.free_data = allocate_buffer * self.dtype_is_object = format == b'O' * if allocate_buffer: # <<<<<<<<<<<<<< * * */ __pyx_t_4 = (__pyx_v_allocate_buffer != 0); if (__pyx_t_4) { /* "View.MemoryView":174 * * * self.data = malloc(self.len) # <<<<<<<<<<<<<< * if not self.data: * raise MemoryError("unable to allocate array data.") */ __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len)); /* "View.MemoryView":175 * * self.data = malloc(self.len) * if not self.data: # <<<<<<<<<<<<<< * raise MemoryError("unable to allocate array data.") * */ __pyx_t_4 = ((!(__pyx_v_self->data != 0)) != 0); if (unlikely(__pyx_t_4)) { /* "View.MemoryView":176 * self.data = malloc(self.len) * if not self.data: * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< * * if self.dtype_is_object: */ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(2, 176, __pyx_L1_error) /* "View.MemoryView":175 * * self.data = malloc(self.len) * if not self.data: # <<<<<<<<<<<<<< * raise MemoryError("unable to allocate array data.") * */ } /* "View.MemoryView":178 * raise MemoryError("unable to allocate array data.") * * if self.dtype_is_object: # <<<<<<<<<<<<<< * p = self.data * for i in range(self.len / itemsize): */ __pyx_t_4 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_4) { /* "View.MemoryView":179 * * if self.dtype_is_object: * p = self.data # <<<<<<<<<<<<<< * for i in range(self.len / itemsize): * p[i] = Py_None */ __pyx_v_p = ((PyObject **)__pyx_v_self->data); /* "View.MemoryView":180 * if self.dtype_is_object: * p = self.data * for i in range(self.len / itemsize): # <<<<<<<<<<<<<< * p[i] = Py_None * Py_INCREF(Py_None) */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(2, 180, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(2, 180, __pyx_L1_error) } __pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize); __pyx_t_9 = __pyx_t_1; for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11; /* "View.MemoryView":181 * p = self.data * for i in range(self.len / itemsize): * p[i] = Py_None # <<<<<<<<<<<<<< * Py_INCREF(Py_None) * */ (__pyx_v_p[__pyx_v_i]) = Py_None; /* "View.MemoryView":182 * for i in range(self.len / itemsize): * p[i] = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< * * @cname('getbuffer') */ Py_INCREF(Py_None); } /* "View.MemoryView":178 * raise MemoryError("unable to allocate array data.") * * if self.dtype_is_object: # <<<<<<<<<<<<<< * p = self.data * for i in range(self.len / itemsize): */ } /* "View.MemoryView":171 * self.free_data = allocate_buffer * self.dtype_is_object = format == b'O' * if allocate_buffer: # <<<<<<<<<<<<<< * * */ } /* "View.MemoryView":122 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< * mode="c", bint allocate_buffer=True): * */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_format); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":185 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< * cdef int bufmode = -1 * if self.mode == u"c": */ /* Python wrapper */ static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_v_bufmode; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; char *__pyx_t_4; Py_ssize_t __pyx_t_5; int __pyx_t_6; Py_ssize_t *__pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; if (__pyx_v_info == NULL) { PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); return -1; } __Pyx_RefNannySetupContext("__getbuffer__", 0); __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); /* "View.MemoryView":186 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * cdef int bufmode = -1 # <<<<<<<<<<<<<< * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS */ __pyx_v_bufmode = -1; /* "View.MemoryView":187 * def __getbuffer__(self, Py_buffer *info, int flags): * cdef int bufmode = -1 * if self.mode == u"c": # <<<<<<<<<<<<<< * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": */ __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 187, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":188 * cdef int bufmode = -1 * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS */ __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); /* "View.MemoryView":187 * def __getbuffer__(self, Py_buffer *info, int flags): * cdef int bufmode = -1 * if self.mode == u"c": # <<<<<<<<<<<<<< * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": */ goto __pyx_L3; } /* "View.MemoryView":189 * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": # <<<<<<<<<<<<<< * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): */ __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 189, __pyx_L1_error) __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "View.MemoryView":190 * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") */ __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); /* "View.MemoryView":189 * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": # <<<<<<<<<<<<<< * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): */ } __pyx_L3:; /* "View.MemoryView":191 * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): # <<<<<<<<<<<<<< * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data */ __pyx_t_1 = ((!((__pyx_v_flags & __pyx_v_bufmode) != 0)) != 0); if (unlikely(__pyx_t_1)) { /* "View.MemoryView":192 * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< * info.buf = self.data * info.len = self.len */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 192, __pyx_L1_error) /* "View.MemoryView":191 * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): # <<<<<<<<<<<<<< * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data */ } /* "View.MemoryView":193 * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data # <<<<<<<<<<<<<< * info.len = self.len * info.ndim = self.ndim */ __pyx_t_4 = __pyx_v_self->data; __pyx_v_info->buf = __pyx_t_4; /* "View.MemoryView":194 * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data * info.len = self.len # <<<<<<<<<<<<<< * info.ndim = self.ndim * info.shape = self._shape */ __pyx_t_5 = __pyx_v_self->len; __pyx_v_info->len = __pyx_t_5; /* "View.MemoryView":195 * info.buf = self.data * info.len = self.len * info.ndim = self.ndim # <<<<<<<<<<<<<< * info.shape = self._shape * info.strides = self._strides */ __pyx_t_6 = __pyx_v_self->ndim; __pyx_v_info->ndim = __pyx_t_6; /* "View.MemoryView":196 * info.len = self.len * info.ndim = self.ndim * info.shape = self._shape # <<<<<<<<<<<<<< * info.strides = self._strides * info.suboffsets = NULL */ __pyx_t_7 = __pyx_v_self->_shape; __pyx_v_info->shape = __pyx_t_7; /* "View.MemoryView":197 * info.ndim = self.ndim * info.shape = self._shape * info.strides = self._strides # <<<<<<<<<<<<<< * info.suboffsets = NULL * info.itemsize = self.itemsize */ __pyx_t_7 = __pyx_v_self->_strides; __pyx_v_info->strides = __pyx_t_7; /* "View.MemoryView":198 * info.shape = self._shape * info.strides = self._strides * info.suboffsets = NULL # <<<<<<<<<<<<<< * info.itemsize = self.itemsize * info.readonly = 0 */ __pyx_v_info->suboffsets = NULL; /* "View.MemoryView":199 * info.strides = self._strides * info.suboffsets = NULL * info.itemsize = self.itemsize # <<<<<<<<<<<<<< * info.readonly = 0 * */ __pyx_t_5 = __pyx_v_self->itemsize; __pyx_v_info->itemsize = __pyx_t_5; /* "View.MemoryView":200 * info.suboffsets = NULL * info.itemsize = self.itemsize * info.readonly = 0 # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ __pyx_v_info->readonly = 0; /* "View.MemoryView":202 * info.readonly = 0 * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * info.format = self.format * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { /* "View.MemoryView":203 * * if flags & PyBUF_FORMAT: * info.format = self.format # <<<<<<<<<<<<<< * else: * info.format = NULL */ __pyx_t_4 = __pyx_v_self->format; __pyx_v_info->format = __pyx_t_4; /* "View.MemoryView":202 * info.readonly = 0 * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * info.format = self.format * else: */ goto __pyx_L5; } /* "View.MemoryView":205 * info.format = self.format * else: * info.format = NULL # <<<<<<<<<<<<<< * * info.obj = self */ /*else*/ { __pyx_v_info->format = NULL; } __pyx_L5:; /* "View.MemoryView":207 * info.format = NULL * * info.obj = self # <<<<<<<<<<<<<< * * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") */ __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); /* "View.MemoryView":185 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< * cdef int bufmode = -1 * if self.mode == u"c": */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; if (__pyx_v_info->obj != NULL) { __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } goto __pyx_L2; __pyx_L0:; if (__pyx_v_info->obj == Py_None) { __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":211 * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") * * def __dealloc__(array self): # <<<<<<<<<<<<<< * if self.callback_free_data != NULL: * self.callback_free_data(self.data) */ /* Python wrapper */ static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_array___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); /* "View.MemoryView":212 * * def __dealloc__(array self): * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< * self.callback_free_data(self.data) * elif self.free_data: */ __pyx_t_1 = ((__pyx_v_self->callback_free_data != NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":213 * def __dealloc__(array self): * if self.callback_free_data != NULL: * self.callback_free_data(self.data) # <<<<<<<<<<<<<< * elif self.free_data: * if self.dtype_is_object: */ __pyx_v_self->callback_free_data(__pyx_v_self->data); /* "View.MemoryView":212 * * def __dealloc__(array self): * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< * self.callback_free_data(self.data) * elif self.free_data: */ goto __pyx_L3; } /* "View.MemoryView":214 * if self.callback_free_data != NULL: * self.callback_free_data(self.data) * elif self.free_data: # <<<<<<<<<<<<<< * if self.dtype_is_object: * refcount_objects_in_slice(self.data, self._shape, */ __pyx_t_1 = (__pyx_v_self->free_data != 0); if (__pyx_t_1) { /* "View.MemoryView":215 * self.callback_free_data(self.data) * elif self.free_data: * if self.dtype_is_object: # <<<<<<<<<<<<<< * refcount_objects_in_slice(self.data, self._shape, * self._strides, self.ndim, False) */ __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_1) { /* "View.MemoryView":216 * elif self.free_data: * if self.dtype_is_object: * refcount_objects_in_slice(self.data, self._shape, # <<<<<<<<<<<<<< * self._strides, self.ndim, False) * free(self.data) */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0); /* "View.MemoryView":215 * self.callback_free_data(self.data) * elif self.free_data: * if self.dtype_is_object: # <<<<<<<<<<<<<< * refcount_objects_in_slice(self.data, self._shape, * self._strides, self.ndim, False) */ } /* "View.MemoryView":218 * refcount_objects_in_slice(self.data, self._shape, * self._strides, self.ndim, False) * free(self.data) # <<<<<<<<<<<<<< * PyObject_Free(self._shape) * */ free(__pyx_v_self->data); /* "View.MemoryView":214 * if self.callback_free_data != NULL: * self.callback_free_data(self.data) * elif self.free_data: # <<<<<<<<<<<<<< * if self.dtype_is_object: * refcount_objects_in_slice(self.data, self._shape, */ } __pyx_L3:; /* "View.MemoryView":219 * self._strides, self.ndim, False) * free(self.data) * PyObject_Free(self._shape) # <<<<<<<<<<<<<< * * @property */ PyObject_Free(__pyx_v_self->_shape); /* "View.MemoryView":211 * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") * * def __dealloc__(array self): # <<<<<<<<<<<<<< * if self.callback_free_data != NULL: * self.callback_free_data(self.data) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "View.MemoryView":222 * * @property * def memview(self): # <<<<<<<<<<<<<< * return self.get_memview() * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":223 * @property * def memview(self): * return self.get_memview() # <<<<<<<<<<<<<< * * @cname('get_memview') */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "View.MemoryView":222 * * @property * def memview(self): # <<<<<<<<<<<<<< * return self.get_memview() * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":226 * * @cname('get_memview') * cdef get_memview(self): # <<<<<<<<<<<<<< * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE * return memoryview(self, flags, self.dtype_is_object) */ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { int __pyx_v_flags; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_memview", 0); /* "View.MemoryView":227 * @cname('get_memview') * cdef get_memview(self): * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE # <<<<<<<<<<<<<< * return memoryview(self, flags, self.dtype_is_object) * */ __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE); /* "View.MemoryView":228 * cdef get_memview(self): * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE * return memoryview(self, flags, self.dtype_is_object) # <<<<<<<<<<<<<< * * def __len__(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":226 * * @cname('get_memview') * cdef get_memview(self): # <<<<<<<<<<<<<< * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE * return memoryview(self, flags, self.dtype_is_object) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":230 * return memoryview(self, flags, self.dtype_is_object) * * def __len__(self): # <<<<<<<<<<<<<< * return self._shape[0] * */ /* Python wrapper */ static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/ static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__", 0); /* "View.MemoryView":231 * * def __len__(self): * return self._shape[0] # <<<<<<<<<<<<<< * * def __getattr__(self, attr): */ __pyx_r = (__pyx_v_self->_shape[0]); goto __pyx_L0; /* "View.MemoryView":230 * return memoryview(self, flags, self.dtype_is_object) * * def __len__(self): # <<<<<<<<<<<<<< * return self._shape[0] * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":233 * return self._shape[0] * * def __getattr__(self, attr): # <<<<<<<<<<<<<< * return getattr(self.memview, attr) * */ /* Python wrapper */ static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/ static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getattr__", 0); /* "View.MemoryView":234 * * def __getattr__(self, attr): * return getattr(self.memview, attr) # <<<<<<<<<<<<<< * * def __getitem__(self, item): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":233 * return self._shape[0] * * def __getattr__(self, attr): # <<<<<<<<<<<<<< * return getattr(self.memview, attr) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":236 * return getattr(self.memview, attr) * * def __getitem__(self, item): # <<<<<<<<<<<<<< * return self.memview[item] * */ /* Python wrapper */ static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); /* "View.MemoryView":237 * * def __getitem__(self, item): * return self.memview[item] # <<<<<<<<<<<<<< * * def __setitem__(self, item, value): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":236 * return getattr(self.memview, attr) * * def __getitem__(self, item): # <<<<<<<<<<<<<< * return self.memview[item] * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":239 * return self.memview[item] * * def __setitem__(self, item, value): # <<<<<<<<<<<<<< * self.memview[item] = value * */ /* Python wrapper */ static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/ static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setitem__", 0); /* "View.MemoryView":240 * * def __setitem__(self, item, value): * self.memview[item] = value # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(2, 240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "View.MemoryView":239 * return self.memview[item] * * def __setitem__(self, item, value): # <<<<<<<<<<<<<< * self.memview[item] = value * */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":244 * * @cname("__pyx_array_new") * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< * char *mode, char *buf): * cdef array result */ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_mode, char *__pyx_v_buf) { struct __pyx_array_obj *__pyx_v_result = 0; struct __pyx_array_obj *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("array_cwrapper", 0); /* "View.MemoryView":248 * cdef array result * * if buf == NULL: # <<<<<<<<<<<<<< * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: */ __pyx_t_1 = ((__pyx_v_buf == NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":249 * * if buf == NULL: * result = array(shape, itemsize, format, mode.decode('ASCII')) # <<<<<<<<<<<<<< * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), */ __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":248 * cdef array result * * if buf == NULL: # <<<<<<<<<<<<<< * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: */ goto __pyx_L3; } /* "View.MemoryView":251 * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< * allocate_buffer=False) * result.data = buf */ /*else*/ { __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_3 = 0; /* "View.MemoryView":252 * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), * allocate_buffer=False) # <<<<<<<<<<<<<< * result.data = buf * */ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(2, 252, __pyx_L1_error) /* "View.MemoryView":251 * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< * allocate_buffer=False) * result.data = buf */ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_5); __pyx_t_5 = 0; /* "View.MemoryView":253 * result = array(shape, itemsize, format, mode.decode('ASCII'), * allocate_buffer=False) * result.data = buf # <<<<<<<<<<<<<< * * return result */ __pyx_v_result->data = __pyx_v_buf; } __pyx_L3:; /* "View.MemoryView":255 * result.data = buf * * return result # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = __pyx_v_result; goto __pyx_L0; /* "View.MemoryView":244 * * @cname("__pyx_array_new") * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< * char *mode, char *buf): * cdef array result */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":281 * cdef class Enum(object): * cdef object name * def __init__(self, name): # <<<<<<<<<<<<<< * self.name = name * def __repr__(self): */ /* Python wrapper */ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 281, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); } __pyx_v_name = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 281, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* "View.MemoryView":282 * cdef object name * def __init__(self, name): * self.name = name # <<<<<<<<<<<<<< * def __repr__(self): * return self.name */ __Pyx_INCREF(__pyx_v_name); __Pyx_GIVEREF(__pyx_v_name); __Pyx_GOTREF(__pyx_v_self->name); __Pyx_DECREF(__pyx_v_self->name); __pyx_v_self->name = __pyx_v_name; /* "View.MemoryView":281 * cdef class Enum(object): * cdef object name * def __init__(self, name): # <<<<<<<<<<<<<< * self.name = name * def __repr__(self): */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":283 * def __init__(self, name): * self.name = name * def __repr__(self): # <<<<<<<<<<<<<< * return self.name * */ /* Python wrapper */ static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__", 0); /* "View.MemoryView":284 * self.name = name * def __repr__(self): * return self.name # <<<<<<<<<<<<<< * * cdef generic = Enum("") */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->name); __pyx_r = __pyx_v_self->name; goto __pyx_L0; /* "View.MemoryView":283 * def __init__(self, name): * self.name = name * def __repr__(self): # <<<<<<<<<<<<<< * return self.name * */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":5 * cdef object _dict * cdef bint use_setstate * state = (self.name,) # <<<<<<<<<<<<<< * _dict = getattr(self, '__dict__', None) * if _dict is not None: */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_self->name); __Pyx_GIVEREF(__pyx_v_self->name); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name); __pyx_v_state = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":6 * cdef bint use_setstate * state = (self.name,) * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< * if _dict is not None: * state += (_dict,) */ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v__dict = __pyx_t_1; __pyx_t_1 = 0; /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ __pyx_t_2 = (__pyx_v__dict != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* "(tree fragment)":8 * _dict = getattr(self, '__dict__', None) * if _dict is not None: * state += (_dict,) # <<<<<<<<<<<<<< * use_setstate = True * else: */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); __pyx_t_4 = 0; /* "(tree fragment)":9 * if _dict is not None: * state += (_dict,) * use_setstate = True # <<<<<<<<<<<<<< * else: * use_setstate = self.name is not None */ __pyx_v_use_setstate = 1; /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ goto __pyx_L3; } /* "(tree fragment)":11 * use_setstate = True * else: * use_setstate = self.name is not None # <<<<<<<<<<<<<< * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state */ /*else*/ { __pyx_t_3 = (__pyx_v_self->name != Py_None); __pyx_v_use_setstate = __pyx_t_3; } __pyx_L3:; /* "(tree fragment)":12 * else: * use_setstate = self.name is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state * else: */ __pyx_t_3 = (__pyx_v_use_setstate != 0); if (__pyx_t_3) { /* "(tree fragment)":13 * use_setstate = self.name is not None * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state # <<<<<<<<<<<<<< * else: * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_INCREF(__pyx_int_184977713); __Pyx_GIVEREF(__pyx_int_184977713); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; /* "(tree fragment)":12 * else: * use_setstate = self.name is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state * else: */ } /* "(tree fragment)":15 * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state * else: * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_Enum__set_state(self, __pyx_state) */ /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_INCREF(__pyx_int_184977713); __Pyx_GIVEREF(__pyx_int_184977713); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); __Pyx_XDECREF(__pyx_v__dict); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":16 * else: * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state(self, __pyx_state) */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":17 * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error) __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":16 * else: * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state(self, __pyx_state) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":298 * * @cname('__pyx_align_pointer') * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< * "Align pointer memory on a given boundary" * cdef Py_intptr_t aligned_p = memory */ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) { Py_intptr_t __pyx_v_aligned_p; size_t __pyx_v_offset; void *__pyx_r; int __pyx_t_1; /* "View.MemoryView":300 * cdef void *align_pointer(void *memory, size_t alignment) nogil: * "Align pointer memory on a given boundary" * cdef Py_intptr_t aligned_p = memory # <<<<<<<<<<<<<< * cdef size_t offset * */ __pyx_v_aligned_p = ((Py_intptr_t)__pyx_v_memory); /* "View.MemoryView":304 * * with cython.cdivision(True): * offset = aligned_p % alignment # <<<<<<<<<<<<<< * * if offset > 0: */ __pyx_v_offset = (__pyx_v_aligned_p % __pyx_v_alignment); /* "View.MemoryView":306 * offset = aligned_p % alignment * * if offset > 0: # <<<<<<<<<<<<<< * aligned_p += alignment - offset * */ __pyx_t_1 = ((__pyx_v_offset > 0) != 0); if (__pyx_t_1) { /* "View.MemoryView":307 * * if offset > 0: * aligned_p += alignment - offset # <<<<<<<<<<<<<< * * return aligned_p */ __pyx_v_aligned_p = (__pyx_v_aligned_p + (__pyx_v_alignment - __pyx_v_offset)); /* "View.MemoryView":306 * offset = aligned_p % alignment * * if offset > 0: # <<<<<<<<<<<<<< * aligned_p += alignment - offset * */ } /* "View.MemoryView":309 * aligned_p += alignment - offset * * return aligned_p # <<<<<<<<<<<<<< * * */ __pyx_r = ((void *)__pyx_v_aligned_p); goto __pyx_L0; /* "View.MemoryView":298 * * @cname('__pyx_align_pointer') * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< * "Align pointer memory on a given boundary" * cdef Py_intptr_t aligned_p = memory */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "View.MemoryView":345 * cdef __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< * self.obj = obj * self.flags = flags */ /* Python wrapper */ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_obj = 0; int __pyx_v_flags; int __pyx_v_dtype_is_object; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(2, 345, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dtype_is_object); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(2, 345, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_obj = values[0]; __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 345, __pyx_L3_error) if (values[2]) { __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 345, __pyx_L3_error) } else { __pyx_v_dtype_is_object = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 345, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); /* "View.MemoryView":346 * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj # <<<<<<<<<<<<<< * self.flags = flags * if type(self) is memoryview or obj is not None: */ __Pyx_INCREF(__pyx_v_obj); __Pyx_GIVEREF(__pyx_v_obj); __Pyx_GOTREF(__pyx_v_self->obj); __Pyx_DECREF(__pyx_v_self->obj); __pyx_v_self->obj = __pyx_v_obj; /* "View.MemoryView":347 * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj * self.flags = flags # <<<<<<<<<<<<<< * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) */ __pyx_v_self->flags = __pyx_v_flags; /* "View.MemoryView":348 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: */ __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type)); __pyx_t_3 = (__pyx_t_2 != 0); if (!__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__pyx_v_obj != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "View.MemoryView":349 * self.flags = flags * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None */ __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 349, __pyx_L1_error) /* "View.MemoryView":350 * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) */ __pyx_t_1 = ((((PyObject *)__pyx_v_self->view.obj) == NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":351 * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< * Py_INCREF(Py_None) * */ ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; /* "View.MemoryView":352 * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< * * global __pyx_memoryview_thread_locks_used */ Py_INCREF(Py_None); /* "View.MemoryView":350 * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) */ } /* "View.MemoryView":348 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: */ } /* "View.MemoryView":355 * * global __pyx_memoryview_thread_locks_used * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: # <<<<<<<<<<<<<< * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 */ __pyx_t_1 = ((__pyx_memoryview_thread_locks_used < 8) != 0); if (__pyx_t_1) { /* "View.MemoryView":356 * global __pyx_memoryview_thread_locks_used * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: */ __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); /* "View.MemoryView":357 * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 # <<<<<<<<<<<<<< * if self.lock is NULL: * self.lock = PyThread_allocate_lock() */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1); /* "View.MemoryView":355 * * global __pyx_memoryview_thread_locks_used * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: # <<<<<<<<<<<<<< * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 */ } /* "View.MemoryView":358 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< * self.lock = PyThread_allocate_lock() * if self.lock is NULL: */ __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":359 * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< * if self.lock is NULL: * raise MemoryError */ __pyx_v_self->lock = PyThread_allocate_lock(); /* "View.MemoryView":360 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< * raise MemoryError * */ __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0); if (unlikely(__pyx_t_1)) { /* "View.MemoryView":361 * self.lock = PyThread_allocate_lock() * if self.lock is NULL: * raise MemoryError # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ PyErr_NoMemory(); __PYX_ERR(2, 361, __pyx_L1_error) /* "View.MemoryView":360 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< * raise MemoryError * */ } /* "View.MemoryView":358 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< * self.lock = PyThread_allocate_lock() * if self.lock is NULL: */ } /* "View.MemoryView":363 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { /* "View.MemoryView":364 * * if flags & PyBUF_FORMAT: * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') # <<<<<<<<<<<<<< * else: * self.dtype_is_object = dtype_is_object */ __pyx_t_2 = (((__pyx_v_self->view.format[0]) == 'O') != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L11_bool_binop_done; } __pyx_t_2 = (((__pyx_v_self->view.format[1]) == '\x00') != 0); __pyx_t_1 = __pyx_t_2; __pyx_L11_bool_binop_done:; __pyx_v_self->dtype_is_object = __pyx_t_1; /* "View.MemoryView":363 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') * else: */ goto __pyx_L10; } /* "View.MemoryView":366 * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') * else: * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< * * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( */ /*else*/ { __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object; } __pyx_L10:; /* "View.MemoryView":368 * self.dtype_is_object = dtype_is_object * * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( # <<<<<<<<<<<<<< * &self.acquisition_count[0], sizeof(__pyx_atomic_int)) * self.typeinfo = NULL */ __pyx_v_self->acquisition_count_aligned_p = ((__pyx_atomic_int *)__pyx_align_pointer(((void *)(&(__pyx_v_self->acquisition_count[0]))), (sizeof(__pyx_atomic_int)))); /* "View.MemoryView":370 * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( * &self.acquisition_count[0], sizeof(__pyx_atomic_int)) * self.typeinfo = NULL # <<<<<<<<<<<<<< * * def __dealloc__(memoryview self): */ __pyx_v_self->typeinfo = NULL; /* "View.MemoryView":345 * cdef __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< * self.obj = obj * self.flags = flags */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":372 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) */ /* Python wrapper */ static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) { int __pyx_v_i; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; PyThread_type_lock __pyx_t_6; PyThread_type_lock __pyx_t_7; __Pyx_RefNannySetupContext("__dealloc__", 0); /* "View.MemoryView":373 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< * __Pyx_ReleaseBuffer(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: */ __pyx_t_1 = (__pyx_v_self->obj != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":374 * def __dealloc__(memoryview self): * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) # <<<<<<<<<<<<<< * elif (<__pyx_buffer *> &self.view).obj == Py_None: * */ __Pyx_ReleaseBuffer((&__pyx_v_self->view)); /* "View.MemoryView":373 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< * __Pyx_ReleaseBuffer(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: */ goto __pyx_L3; } /* "View.MemoryView":375 * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< * * (<__pyx_buffer *> &self.view).obj = NULL */ __pyx_t_2 = ((((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None) != 0); if (__pyx_t_2) { /* "View.MemoryView":377 * elif (<__pyx_buffer *> &self.view).obj == Py_None: * * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< * Py_DECREF(Py_None) * */ ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; /* "View.MemoryView":378 * * (<__pyx_buffer *> &self.view).obj = NULL * Py_DECREF(Py_None) # <<<<<<<<<<<<<< * * cdef int i */ Py_DECREF(Py_None); /* "View.MemoryView":375 * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< * * (<__pyx_buffer *> &self.view).obj = NULL */ } __pyx_L3:; /* "View.MemoryView":382 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: */ __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0); if (__pyx_t_2) { /* "View.MemoryView":383 * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 */ __pyx_t_3 = __pyx_memoryview_thread_locks_used; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "View.MemoryView":384 * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: */ __pyx_t_2 = (((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock) != 0); if (__pyx_t_2) { /* "View.MemoryView":385 * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); /* "View.MemoryView":386 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) */ __pyx_t_2 = ((__pyx_v_i != __pyx_memoryview_thread_locks_used) != 0); if (__pyx_t_2) { /* "View.MemoryView":388 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< * break * else: */ __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); __pyx_t_7 = (__pyx_memoryview_thread_locks[__pyx_v_i]); /* "View.MemoryView":387 * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) * break */ (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_6; (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_7; /* "View.MemoryView":386 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) */ } /* "View.MemoryView":389 * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) * break # <<<<<<<<<<<<<< * else: * PyThread_free_lock(self.lock) */ goto __pyx_L6_break; /* "View.MemoryView":384 * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: */ } } /*else*/ { /* "View.MemoryView":391 * break * else: * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< * * cdef char *get_item_pointer(memoryview self, object index) except NULL: */ PyThread_free_lock(__pyx_v_self->lock); } __pyx_L6_break:; /* "View.MemoryView":382 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: */ } /* "View.MemoryView":372 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "View.MemoryView":393 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf */ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { Py_ssize_t __pyx_v_dim; char *__pyx_v_itemp; PyObject *__pyx_v_idx = NULL; char *__pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); PyObject *__pyx_t_5 = NULL; Py_ssize_t __pyx_t_6; char *__pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_item_pointer", 0); /* "View.MemoryView":395 * cdef char *get_item_pointer(memoryview self, object index) except NULL: * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< * * for dim, idx in enumerate(index): */ __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); /* "View.MemoryView":397 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< * itemp = pybuffer_index(&self.view, itemp, idx, dim) * */ __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) { __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 397, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 397, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 397, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(2, 397, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5); __pyx_t_5 = 0; __pyx_v_dim = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); /* "View.MemoryView":398 * * for dim, idx in enumerate(index): * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< * * return itemp */ __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 398, __pyx_L1_error) __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(2, 398, __pyx_L1_error) __pyx_v_itemp = __pyx_t_7; /* "View.MemoryView":397 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< * itemp = pybuffer_index(&self.view, itemp, idx, dim) * */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":400 * itemp = pybuffer_index(&self.view, itemp, idx, dim) * * return itemp # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_itemp; goto __pyx_L0; /* "View.MemoryView":393 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_idx); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":403 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< * if index is Ellipsis: * return self */ /* Python wrapper */ static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/ static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { PyObject *__pyx_v_have_slices = NULL; PyObject *__pyx_v_indices = NULL; char *__pyx_v_itemp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; char *__pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); /* "View.MemoryView":404 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< * return self * */ __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":405 * def __getitem__(memoryview self, object index): * if index is Ellipsis: * return self # <<<<<<<<<<<<<< * * have_slices, indices = _unellipsify(index, self.view.ndim) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; /* "View.MemoryView":404 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< * return self * */ } /* "View.MemoryView":407 * return self * * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * cdef char *itemp */ __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(2, 407, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 407, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_indices = __pyx_t_5; __pyx_t_5 = 0; /* "View.MemoryView":410 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 410, __pyx_L1_error) if (__pyx_t_2) { /* "View.MemoryView":411 * cdef char *itemp * if have_slices: * return memview_slice(self, indices) # <<<<<<<<<<<<<< * else: * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "View.MemoryView":410 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ } /* "View.MemoryView":413 * return memview_slice(self, indices) * else: * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< * return self.convert_item_to_object(itemp) * */ /*else*/ { __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(2, 413, __pyx_L1_error) __pyx_v_itemp = __pyx_t_6; /* "View.MemoryView":414 * else: * itemp = self.get_item_pointer(indices) * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< * * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; } /* "View.MemoryView":403 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< * if index is Ellipsis: * return self */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_have_slices); __Pyx_XDECREF(__pyx_v_indices); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":416 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") */ /* Python wrapper */ static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/ static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { PyObject *__pyx_v_have_slices = NULL; PyObject *__pyx_v_obj = NULL; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_index); /* "View.MemoryView":417 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< * raise TypeError("Cannot assign to read-only memoryview") * */ __pyx_t_1 = (__pyx_v_self->view.readonly != 0); if (unlikely(__pyx_t_1)) { /* "View.MemoryView":418 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(2, 418, __pyx_L1_error) /* "View.MemoryView":417 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< * raise TypeError("Cannot assign to read-only memoryview") * */ } /* "View.MemoryView":420 * raise TypeError("Cannot assign to read-only memoryview") * * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * if have_slices: */ __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(2, 420, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 420, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":422 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 422, __pyx_L1_error) if (__pyx_t_1) { /* "View.MemoryView":423 * * if have_slices: * obj = self.is_slice(value) # <<<<<<<<<<<<<< * if obj: * self.setitem_slice_assignment(self[index], obj) */ __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_obj = __pyx_t_2; __pyx_t_2 = 0; /* "View.MemoryView":424 * if have_slices: * obj = self.is_slice(value) * if obj: # <<<<<<<<<<<<<< * self.setitem_slice_assignment(self[index], obj) * else: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 424, __pyx_L1_error) if (__pyx_t_1) { /* "View.MemoryView":425 * obj = self.is_slice(value) * if obj: * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< * else: * self.setitem_slice_assign_scalar(self[index], value) */ __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":424 * if have_slices: * obj = self.is_slice(value) * if obj: # <<<<<<<<<<<<<< * self.setitem_slice_assignment(self[index], obj) * else: */ goto __pyx_L5; } /* "View.MemoryView":427 * self.setitem_slice_assignment(self[index], obj) * else: * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< * else: * self.setitem_indexed(index, value) */ /*else*/ { __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(2, 427, __pyx_L1_error) __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L5:; /* "View.MemoryView":422 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj: */ goto __pyx_L4; } /* "View.MemoryView":429 * self.setitem_slice_assign_scalar(self[index], value) * else: * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< * * cdef is_slice(self, obj): */ /*else*/ { __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L4:; /* "View.MemoryView":416 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_have_slices); __Pyx_XDECREF(__pyx_v_obj); __Pyx_XDECREF(__pyx_v_index); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":431 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< * if not isinstance(obj, memoryview): * try: */ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_slice", 0); __Pyx_INCREF(__pyx_v_obj); /* "View.MemoryView":432 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, */ __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { /* "View.MemoryView":434 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); /* "View.MemoryView":435 * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) # <<<<<<<<<<<<<< * except TypeError: * return None */ __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 435, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); /* "View.MemoryView":434 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_obj); __Pyx_GIVEREF(__pyx_v_obj); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); __pyx_t_7 = 0; /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) */ } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* "View.MemoryView":436 * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) * except TypeError: # <<<<<<<<<<<<<< * return None * */ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(2, 436, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_6); /* "View.MemoryView":437 * self.dtype_is_object) * except TypeError: * return None # <<<<<<<<<<<<<< * * return obj */ __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L7_except_return; } goto __pyx_L6_except_error; __pyx_L6_except_error:; /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L7_except_return:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L0; __pyx_L9_try_end:; } /* "View.MemoryView":432 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, */ } /* "View.MemoryView":439 * return None * * return obj # <<<<<<<<<<<<<< * * cdef setitem_slice_assignment(self, dst, src): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_obj); __pyx_r = __pyx_v_obj; goto __pyx_L0; /* "View.MemoryView":431 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< * if not isinstance(obj, memoryview): * try: */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_obj); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":441 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice dst_slice * cdef __Pyx_memviewslice src_slice */ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) { __Pyx_memviewslice __pyx_v_dst_slice; __Pyx_memviewslice __pyx_v_src_slice; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice *__pyx_t_1; __Pyx_memviewslice *__pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); /* "View.MemoryView":445 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(2, 445, __pyx_L1_error) __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 445, __pyx_L1_error) /* "View.MemoryView":446 * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], # <<<<<<<<<<<<<< * src.ndim, dst.ndim, self.dtype_is_object) * */ if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(2, 446, __pyx_L1_error) __pyx_t_2 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_2 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 446, __pyx_L1_error) /* "View.MemoryView":447 * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":445 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ __pyx_t_6 = __pyx_memoryview_copy_contents((__pyx_t_1[0]), (__pyx_t_2[0]), __pyx_t_4, __pyx_t_5, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 445, __pyx_L1_error) /* "View.MemoryView":441 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice dst_slice * cdef __Pyx_memviewslice src_slice */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":449 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< * cdef int array[128] * cdef void *tmp = NULL */ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { int __pyx_v_array[0x80]; void *__pyx_v_tmp; void *__pyx_v_item; __Pyx_memviewslice *__pyx_v_dst_slice; __Pyx_memviewslice __pyx_v_tmp_slice; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice *__pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; char const *__pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); /* "View.MemoryView":451 * cdef setitem_slice_assign_scalar(self, memoryview dst, value): * cdef int array[128] * cdef void *tmp = NULL # <<<<<<<<<<<<<< * cdef void *item * */ __pyx_v_tmp = NULL; /* "View.MemoryView":456 * cdef __Pyx_memviewslice *dst_slice * cdef __Pyx_memviewslice tmp_slice * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< * * if self.view.itemsize > sizeof(array): */ __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 456, __pyx_L1_error) __pyx_v_dst_slice = __pyx_t_1; /* "View.MemoryView":458 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: */ __pyx_t_2 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0); if (__pyx_t_2) { /* "View.MemoryView":459 * * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< * if tmp == NULL: * raise MemoryError */ __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); /* "View.MemoryView":460 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< * raise MemoryError * item = tmp */ __pyx_t_2 = ((__pyx_v_tmp == NULL) != 0); if (unlikely(__pyx_t_2)) { /* "View.MemoryView":461 * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: * raise MemoryError # <<<<<<<<<<<<<< * item = tmp * else: */ PyErr_NoMemory(); __PYX_ERR(2, 461, __pyx_L1_error) /* "View.MemoryView":460 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< * raise MemoryError * item = tmp */ } /* "View.MemoryView":462 * if tmp == NULL: * raise MemoryError * item = tmp # <<<<<<<<<<<<<< * else: * item = array */ __pyx_v_item = __pyx_v_tmp; /* "View.MemoryView":458 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: */ goto __pyx_L3; } /* "View.MemoryView":464 * item = tmp * else: * item = array # <<<<<<<<<<<<<< * * try: */ /*else*/ { __pyx_v_item = ((void *)__pyx_v_array); } __pyx_L3:; /* "View.MemoryView":466 * item = array * * try: # <<<<<<<<<<<<<< * if self.dtype_is_object: * ( item)[0] = value */ /*try:*/ { /* "View.MemoryView":467 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< * ( item)[0] = value * else: */ __pyx_t_2 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_2) { /* "View.MemoryView":468 * try: * if self.dtype_is_object: * ( item)[0] = value # <<<<<<<<<<<<<< * else: * self.assign_item_from_object( item, value) */ (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); /* "View.MemoryView":467 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< * ( item)[0] = value * else: */ goto __pyx_L8; } /* "View.MemoryView":470 * ( item)[0] = value * else: * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< * * */ /*else*/ { __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 470, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L8:; /* "View.MemoryView":474 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, */ __pyx_t_2 = ((__pyx_v_self->view.suboffsets != NULL) != 0); if (__pyx_t_2) { /* "View.MemoryView":475 * * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ __pyx_t_3 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 475, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":474 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, */ } /* "View.MemoryView":476 * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< * item, self.dtype_is_object) * finally: */ __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); } /* "View.MemoryView":479 * item, self.dtype_is_object) * finally: * PyMem_Free(tmp) # <<<<<<<<<<<<<< * * cdef setitem_indexed(self, index, value): */ /*finally:*/ { /*normal exit:*/{ PyMem_Free(__pyx_v_tmp); goto __pyx_L7; } __pyx_L6_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; { PyMem_Free(__pyx_v_tmp); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; goto __pyx_L1_error; } __pyx_L7:; } /* "View.MemoryView":449 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< * cdef int array[128] * cdef void *tmp = NULL */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":481 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) */ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { char *__pyx_v_itemp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations char *__pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_indexed", 0); /* "View.MemoryView":482 * * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< * self.assign_item_from_object(itemp, value) * */ __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(2, 482, __pyx_L1_error) __pyx_v_itemp = __pyx_t_1; /* "View.MemoryView":483 * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":481 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":485 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" */ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) { PyObject *__pyx_v_struct = NULL; PyObject *__pyx_v_bytesitem = 0; PyObject *__pyx_v_result = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; size_t __pyx_t_10; int __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); /* "View.MemoryView":488 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef bytes bytesitem * */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; /* "View.MemoryView":491 * cdef bytes bytesitem * * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< * try: * result = struct.unpack(self.view.format, bytesitem) */ __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< * result = struct.unpack(self.view.format, bytesitem) * except struct.error: */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { /* "View.MemoryView":493 * bytesitem = itemp[:self.view.itemsize] * try: * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< * except struct.error: * raise ValueError("Unable to convert item to object") */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_v_bytesitem); __Pyx_GIVEREF(__pyx_v_bytesitem); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0; /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< * result = struct.unpack(self.view.format, bytesitem) * except struct.error: */ } /* "View.MemoryView":497 * raise ValueError("Unable to convert item to object") * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< * return result[0] * return result */ /*else:*/ { __pyx_t_10 = strlen(__pyx_v_self->view.format); __pyx_t_11 = ((__pyx_t_10 == 1) != 0); if (__pyx_t_11) { /* "View.MemoryView":498 * else: * if len(self.view.format) == 1: * return result[0] # <<<<<<<<<<<<<< * return result * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 498, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6_except_return; /* "View.MemoryView":497 * raise ValueError("Unable to convert item to object") * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< * return result[0] * return result */ } /* "View.MemoryView":499 * if len(self.view.format) == 1: * return result[0] * return result # <<<<<<<<<<<<<< * * cdef assign_item_from_object(self, char *itemp, object value): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_result); __pyx_r = __pyx_v_result; goto __pyx_L6_except_return; } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* "View.MemoryView":494 * try: * result = struct.unpack(self.view.format, bytesitem) * except struct.error: # <<<<<<<<<<<<<< * raise ValueError("Unable to convert item to object") * else: */ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_ErrRestore(__pyx_t_1, __pyx_t_5, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0; if (__pyx_t_8) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(2, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_1); /* "View.MemoryView":495 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 495, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(2, 495, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< * result = struct.unpack(self.view.format, bytesitem) * except struct.error: */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L6_except_return:; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L0; } /* "View.MemoryView":485 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_struct); __Pyx_XDECREF(__pyx_v_bytesitem); __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":501 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" */ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { PyObject *__pyx_v_struct = NULL; char __pyx_v_c; PyObject *__pyx_v_bytesvalue = 0; Py_ssize_t __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; Py_ssize_t __pyx_t_9; PyObject *__pyx_t_10 = NULL; char *__pyx_t_11; char *__pyx_t_12; char *__pyx_t_13; char *__pyx_t_14; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); /* "View.MemoryView":504 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef char c * cdef bytes bytesvalue */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; /* "View.MemoryView":509 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< * bytesvalue = struct.pack(self.view.format, *value) * else: */ __pyx_t_2 = PyTuple_Check(__pyx_v_value); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* "View.MemoryView":510 * * if isinstance(value, tuple): * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< * else: * bytesvalue = struct.pack(self.view.format, value) */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(2, 510, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":509 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< * bytesvalue = struct.pack(self.view.format, *value) * else: */ goto __pyx_L3; } /* "View.MemoryView":512 * bytesvalue = struct.pack(self.view.format, *value) * else: * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< * * for i, c in enumerate(bytesvalue): */ /*else*/ { __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_v_value); __Pyx_GIVEREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(2, 512, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; } __pyx_L3:; /* "View.MemoryView":514 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ __pyx_t_9 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); __PYX_ERR(2, 514, __pyx_L1_error) } __Pyx_INCREF(__pyx_v_bytesvalue); __pyx_t_10 = __pyx_v_bytesvalue; __pyx_t_12 = PyBytes_AS_STRING(__pyx_t_10); __pyx_t_13 = (__pyx_t_12 + PyBytes_GET_SIZE(__pyx_t_10)); for (__pyx_t_14 = __pyx_t_12; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) { __pyx_t_11 = __pyx_t_14; __pyx_v_c = (__pyx_t_11[0]); /* "View.MemoryView":515 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< * * @cname('getbuffer') */ __pyx_v_i = __pyx_t_9; /* "View.MemoryView":514 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ __pyx_t_9 = (__pyx_t_9 + 1); /* "View.MemoryView":515 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< * * @cname('getbuffer') */ (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* "View.MemoryView":501 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_struct); __Pyx_XDECREF(__pyx_v_bytesvalue); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":518 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") */ /* Python wrapper */ static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; Py_ssize_t *__pyx_t_4; char *__pyx_t_5; void *__pyx_t_6; int __pyx_t_7; Py_ssize_t __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; if (__pyx_v_info == NULL) { PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); return -1; } __Pyx_RefNannySetupContext("__getbuffer__", 0); __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); /* "View.MemoryView":519 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< * raise ValueError("Cannot create writable memory view from read-only memoryview") * */ __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = (__pyx_v_self->view.readonly != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* "View.MemoryView":520 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 520, __pyx_L1_error) /* "View.MemoryView":519 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< * raise ValueError("Cannot create writable memory view from read-only memoryview") * */ } /* "View.MemoryView":522 * raise ValueError("Cannot create writable memory view from read-only memoryview") * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< * info.shape = self.view.shape * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); if (__pyx_t_1) { /* "View.MemoryView":523 * * if flags & PyBUF_ND: * info.shape = self.view.shape # <<<<<<<<<<<<<< * else: * info.shape = NULL */ __pyx_t_4 = __pyx_v_self->view.shape; __pyx_v_info->shape = __pyx_t_4; /* "View.MemoryView":522 * raise ValueError("Cannot create writable memory view from read-only memoryview") * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< * info.shape = self.view.shape * else: */ goto __pyx_L6; } /* "View.MemoryView":525 * info.shape = self.view.shape * else: * info.shape = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_STRIDES: */ /*else*/ { __pyx_v_info->shape = NULL; } __pyx_L6:; /* "View.MemoryView":527 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< * info.strides = self.view.strides * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { /* "View.MemoryView":528 * * if flags & PyBUF_STRIDES: * info.strides = self.view.strides # <<<<<<<<<<<<<< * else: * info.strides = NULL */ __pyx_t_4 = __pyx_v_self->view.strides; __pyx_v_info->strides = __pyx_t_4; /* "View.MemoryView":527 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< * info.strides = self.view.strides * else: */ goto __pyx_L7; } /* "View.MemoryView":530 * info.strides = self.view.strides * else: * info.strides = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_INDIRECT: */ /*else*/ { __pyx_v_info->strides = NULL; } __pyx_L7:; /* "View.MemoryView":532 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< * info.suboffsets = self.view.suboffsets * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); if (__pyx_t_1) { /* "View.MemoryView":533 * * if flags & PyBUF_INDIRECT: * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< * else: * info.suboffsets = NULL */ __pyx_t_4 = __pyx_v_self->view.suboffsets; __pyx_v_info->suboffsets = __pyx_t_4; /* "View.MemoryView":532 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< * info.suboffsets = self.view.suboffsets * else: */ goto __pyx_L8; } /* "View.MemoryView":535 * info.suboffsets = self.view.suboffsets * else: * info.suboffsets = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ /*else*/ { __pyx_v_info->suboffsets = NULL; } __pyx_L8:; /* "View.MemoryView":537 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * info.format = self.view.format * else: */ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { /* "View.MemoryView":538 * * if flags & PyBUF_FORMAT: * info.format = self.view.format # <<<<<<<<<<<<<< * else: * info.format = NULL */ __pyx_t_5 = __pyx_v_self->view.format; __pyx_v_info->format = __pyx_t_5; /* "View.MemoryView":537 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< * info.format = self.view.format * else: */ goto __pyx_L9; } /* "View.MemoryView":540 * info.format = self.view.format * else: * info.format = NULL # <<<<<<<<<<<<<< * * info.buf = self.view.buf */ /*else*/ { __pyx_v_info->format = NULL; } __pyx_L9:; /* "View.MemoryView":542 * info.format = NULL * * info.buf = self.view.buf # <<<<<<<<<<<<<< * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize */ __pyx_t_6 = __pyx_v_self->view.buf; __pyx_v_info->buf = __pyx_t_6; /* "View.MemoryView":543 * * info.buf = self.view.buf * info.ndim = self.view.ndim # <<<<<<<<<<<<<< * info.itemsize = self.view.itemsize * info.len = self.view.len */ __pyx_t_7 = __pyx_v_self->view.ndim; __pyx_v_info->ndim = __pyx_t_7; /* "View.MemoryView":544 * info.buf = self.view.buf * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< * info.len = self.view.len * info.readonly = self.view.readonly */ __pyx_t_8 = __pyx_v_self->view.itemsize; __pyx_v_info->itemsize = __pyx_t_8; /* "View.MemoryView":545 * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize * info.len = self.view.len # <<<<<<<<<<<<<< * info.readonly = self.view.readonly * info.obj = self */ __pyx_t_8 = __pyx_v_self->view.len; __pyx_v_info->len = __pyx_t_8; /* "View.MemoryView":546 * info.itemsize = self.view.itemsize * info.len = self.view.len * info.readonly = self.view.readonly # <<<<<<<<<<<<<< * info.obj = self * */ __pyx_t_1 = __pyx_v_self->view.readonly; __pyx_v_info->readonly = __pyx_t_1; /* "View.MemoryView":547 * info.len = self.view.len * info.readonly = self.view.readonly * info.obj = self # <<<<<<<<<<<<<< * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") */ __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); /* "View.MemoryView":518 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; if (__pyx_v_info->obj != NULL) { __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } goto __pyx_L2; __pyx_L0:; if (__pyx_v_info->obj == Py_None) { __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":553 * * @property * def T(self): # <<<<<<<<<<<<<< * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) { struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":554 * @property * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< * transpose_memslice(&result.from_slice) * return result */ __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(2, 554, __pyx_L1_error) __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; /* "View.MemoryView":555 * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< * return result * */ __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(2, 555, __pyx_L1_error) /* "View.MemoryView":556 * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) * return result # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; /* "View.MemoryView":553 * * @property * def T(self): # <<<<<<<<<<<<<< * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":559 * * @property * def base(self): # <<<<<<<<<<<<<< * return self.obj * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":560 * @property * def base(self): * return self.obj # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->obj); __pyx_r = __pyx_v_self->obj; goto __pyx_L0; /* "View.MemoryView":559 * * @property * def base(self): # <<<<<<<<<<<<<< * return self.obj * */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":563 * * @property * def shape(self): # <<<<<<<<<<<<<< * return tuple([length for length in self.view.shape[:self.view.ndim]]) * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) { Py_ssize_t __pyx_v_length; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t *__pyx_t_2; Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":564 * @property * def shape(self): * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_v_length = (__pyx_t_2[0]); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(2, 564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; /* "View.MemoryView":563 * * @property * def shape(self): # <<<<<<<<<<<<<< * return tuple([length for length in self.view.shape[:self.view.ndim]]) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":567 * * @property * def strides(self): # <<<<<<<<<<<<<< * if self.view.strides == NULL: * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) { Py_ssize_t __pyx_v_stride; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; Py_ssize_t *__pyx_t_5; PyObject *__pyx_t_6 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":568 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< * * raise ValueError("Buffer view does not expose strides") */ __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0); if (unlikely(__pyx_t_1)) { /* "View.MemoryView":570 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(2, 570, __pyx_L1_error) /* "View.MemoryView":568 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< * * raise ValueError("Buffer view does not expose strides") */ } /* "View.MemoryView":572 * raise ValueError("Buffer view does not expose strides") * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_v_stride = (__pyx_t_3[0]); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 572, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "View.MemoryView":567 * * @property * def strides(self): # <<<<<<<<<<<<<< * if self.view.strides == NULL: * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":575 * * @property * def suboffsets(self): # <<<<<<<<<<<<<< * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) { Py_ssize_t __pyx_v_suboffset; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t *__pyx_t_4; Py_ssize_t *__pyx_t_5; Py_ssize_t *__pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":576 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< * return (-1,) * self.view.ndim * */ __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":577 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__27, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "View.MemoryView":576 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< * return (-1,) * self.view.ndim * */ } /* "View.MemoryView":579 * return (-1,) * self.view.ndim * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) { __pyx_t_4 = __pyx_t_6; __pyx_v_suboffset = (__pyx_t_4[0]); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(2, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":575 * * @property * def suboffsets(self): # <<<<<<<<<<<<<< * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":582 * * @property * def ndim(self): # <<<<<<<<<<<<<< * return self.view.ndim * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":583 * @property * def ndim(self): * return self.view.ndim # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "View.MemoryView":582 * * @property * def ndim(self): # <<<<<<<<<<<<<< * return self.view.ndim * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":586 * * @property * def itemsize(self): # <<<<<<<<<<<<<< * return self.view.itemsize * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":587 * @property * def itemsize(self): * return self.view.itemsize # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "View.MemoryView":586 * * @property * def itemsize(self): # <<<<<<<<<<<<<< * return self.view.itemsize * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":590 * * @property * def nbytes(self): # <<<<<<<<<<<<<< * return self.size * self.view.itemsize * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":591 * @property * def nbytes(self): * return self.size * self.view.itemsize # <<<<<<<<<<<<<< * * @property */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "View.MemoryView":590 * * @property * def nbytes(self): # <<<<<<<<<<<<<< * return self.size * self.view.itemsize * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":594 * * @property * def size(self): # <<<<<<<<<<<<<< * if self._size is None: * result = 1 */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_v_result = NULL; PyObject *__pyx_v_length = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; Py_ssize_t *__pyx_t_5; PyObject *__pyx_t_6 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":595 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< * result = 1 * */ __pyx_t_1 = (__pyx_v_self->_size == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":596 * def size(self): * if self._size is None: * result = 1 # <<<<<<<<<<<<<< * * for length in self.view.shape[:self.view.ndim]: */ __Pyx_INCREF(__pyx_int_1); __pyx_v_result = __pyx_int_1; /* "View.MemoryView":598 * result = 1 * * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< * result *= length * */ __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6); __pyx_t_6 = 0; /* "View.MemoryView":599 * * for length in self.view.shape[:self.view.ndim]: * result *= length # <<<<<<<<<<<<<< * * self._size = result */ __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6); __pyx_t_6 = 0; } /* "View.MemoryView":601 * result *= length * * self._size = result # <<<<<<<<<<<<<< * * return self._size */ __Pyx_INCREF(__pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); __Pyx_GOTREF(__pyx_v_self->_size); __Pyx_DECREF(__pyx_v_self->_size); __pyx_v_self->_size = __pyx_v_result; /* "View.MemoryView":595 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< * result = 1 * */ } /* "View.MemoryView":603 * self._size = result * * return self._size # <<<<<<<<<<<<<< * * def __len__(self): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->_size); __pyx_r = __pyx_v_self->_size; goto __pyx_L0; /* "View.MemoryView":594 * * @property * def size(self): # <<<<<<<<<<<<<< * if self._size is None: * result = 1 */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XDECREF(__pyx_v_length); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":605 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< * if self.view.ndim >= 1: * return self.view.shape[0] */ /* Python wrapper */ static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/ static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__len__", 0); /* "View.MemoryView":606 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< * return self.view.shape[0] * */ __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0); if (__pyx_t_1) { /* "View.MemoryView":607 * def __len__(self): * if self.view.ndim >= 1: * return self.view.shape[0] # <<<<<<<<<<<<<< * * return 0 */ __pyx_r = (__pyx_v_self->view.shape[0]); goto __pyx_L0; /* "View.MemoryView":606 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< * return self.view.shape[0] * */ } /* "View.MemoryView":609 * return self.view.shape[0] * * return 0 # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = 0; goto __pyx_L0; /* "View.MemoryView":605 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< * if self.view.ndim >= 1: * return self.view.shape[0] */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":611 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< * return "" % (self.base.__class__.__name__, * id(self)) */ /* Python wrapper */ static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "View.MemoryView":612 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< * id(self)) * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":613 * def __repr__(self): * return "" % (self.base.__class__.__name__, * id(self)) # <<<<<<<<<<<<<< * * def __str__(self): */ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "View.MemoryView":612 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< * id(self)) * */ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":611 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< * return "" % (self.base.__class__.__name__, * id(self)) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":615 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< * return "" % (self.base.__class__.__name__,) * */ /* Python wrapper */ static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); /* "View.MemoryView":616 * * def __str__(self): * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "View.MemoryView":615 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< * return "" % (self.base.__class__.__name__,) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":619 * * * def is_c_contig(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp */ /* Python wrapper */ static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice *__pyx_v_mslice; __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice *__pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_c_contig", 0); /* "View.MemoryView":622 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'C', self.view.ndim) * */ __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 622, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":623 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< * * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":619 * * * def is_c_contig(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":625 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp */ /* Python wrapper */ static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice *__pyx_v_mslice; __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice *__pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_f_contig", 0); /* "View.MemoryView":628 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'F', self.view.ndim) * */ __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 628, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":629 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< * * def copy(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":625 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS */ /* Python wrapper */ static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice __pyx_v_mslice; int __pyx_v_flags; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy", 0); /* "View.MemoryView":633 * def copy(self): * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< * * slice_copy(self, &mslice) */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); /* "View.MemoryView":635 * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS * * slice_copy(self, &mslice) # <<<<<<<<<<<<<< * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, * self.view.itemsize, */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); /* "View.MemoryView":636 * * slice_copy(self, &mslice) * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 636, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":641 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< * * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":643 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS */ /* Python wrapper */ static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0); __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice __pyx_v_src; __Pyx_memviewslice __pyx_v_dst; int __pyx_v_flags; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_memviewslice __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy_fortran", 0); /* "View.MemoryView":645 * def copy_fortran(self): * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< * * slice_copy(self, &src) */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); /* "View.MemoryView":647 * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS * * slice_copy(self, &src) # <<<<<<<<<<<<<< * dst = slice_copy_contig(&src, "fortran", self.view.ndim, * self.view.itemsize, */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); /* "View.MemoryView":648 * * slice_copy(self, &src) * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 648, __pyx_L1_error) __pyx_v_dst = __pyx_t_1; /* "View.MemoryView":653 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":643 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":657 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo */ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) { struct __pyx_memoryview_obj *__pyx_v_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); /* "View.MemoryView":658 * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< * result.typeinfo = typeinfo * return result */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_o); __Pyx_GIVEREF(__pyx_v_o); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":659 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo # <<<<<<<<<<<<<< * return result * */ __pyx_v_result->typeinfo = __pyx_v_typeinfo; /* "View.MemoryView":660 * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo * return result # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_check') */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; /* "View.MemoryView":657 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":663 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< * return isinstance(o, memoryview) * */ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("memoryview_check", 0); /* "View.MemoryView":664 * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): * return isinstance(o, memoryview) # <<<<<<<<<<<<<< * * cdef tuple _unellipsify(object index, int ndim): */ __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); __pyx_r = __pyx_t_1; goto __pyx_L0; /* "View.MemoryView":663 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< * return isinstance(o, memoryview) * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":666 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< * """ * Replace all ellipses with full slices and fill incomplete indices with */ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyObject *__pyx_v_tup = NULL; PyObject *__pyx_v_result = NULL; int __pyx_v_have_slices; int __pyx_v_seen_ellipsis; CYTHON_UNUSED PyObject *__pyx_v_idx = NULL; PyObject *__pyx_v_item = NULL; Py_ssize_t __pyx_v_nslices; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; Py_ssize_t __pyx_t_5; PyObject *(*__pyx_t_6)(PyObject *); PyObject *__pyx_t_7 = NULL; Py_ssize_t __pyx_t_8; int __pyx_t_9; int __pyx_t_10; PyObject *__pyx_t_11 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_unellipsify", 0); /* "View.MemoryView":671 * full slices. * """ * if not isinstance(index, tuple): # <<<<<<<<<<<<<< * tup = (index,) * else: */ __pyx_t_1 = PyTuple_Check(__pyx_v_index); __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":672 * """ * if not isinstance(index, tuple): * tup = (index,) # <<<<<<<<<<<<<< * else: * tup = index */ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index); __pyx_v_tup = __pyx_t_3; __pyx_t_3 = 0; /* "View.MemoryView":671 * full slices. * """ * if not isinstance(index, tuple): # <<<<<<<<<<<<<< * tup = (index,) * else: */ goto __pyx_L3; } /* "View.MemoryView":674 * tup = (index,) * else: * tup = index # <<<<<<<<<<<<<< * * result = [] */ /*else*/ { __Pyx_INCREF(__pyx_v_index); __pyx_v_tup = __pyx_v_index; } __pyx_L3:; /* "View.MemoryView":676 * tup = index * * result = [] # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":677 * * result = [] * have_slices = False # <<<<<<<<<<<<<< * seen_ellipsis = False * for idx, item in enumerate(tup): */ __pyx_v_have_slices = 0; /* "View.MemoryView":678 * result = [] * have_slices = False * seen_ellipsis = False # <<<<<<<<<<<<<< * for idx, item in enumerate(tup): * if item is Ellipsis: */ __pyx_v_seen_ellipsis = 0; /* "View.MemoryView":679 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< * if item is Ellipsis: * if not seen_ellipsis: */ __Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_tup)) || PyTuple_CheckExact(__pyx_v_tup)) { __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 679, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(2, 679, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(2, 679, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(2, 679, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7); __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3); __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_7; __pyx_t_7 = 0; /* "View.MemoryView":680 * seen_ellipsis = False * for idx, item in enumerate(tup): * if item is Ellipsis: # <<<<<<<<<<<<<< * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) */ __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "View.MemoryView":681 * for idx, item in enumerate(tup): * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< * result.extend([slice(None)] * (ndim - len(tup) + 1)) * seen_ellipsis = True */ __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0); if (__pyx_t_1) { /* "View.MemoryView":682 * if item is Ellipsis: * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< * seen_ellipsis = True * else: */ __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(2, 682, __pyx_L1_error) __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) { __Pyx_INCREF(__pyx_slice__30); __Pyx_GIVEREF(__pyx_slice__30); PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__30); } } __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "View.MemoryView":683 * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) * seen_ellipsis = True # <<<<<<<<<<<<<< * else: * result.append(slice(None)) */ __pyx_v_seen_ellipsis = 1; /* "View.MemoryView":681 * for idx, item in enumerate(tup): * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< * result.extend([slice(None)] * (ndim - len(tup) + 1)) * seen_ellipsis = True */ goto __pyx_L7; } /* "View.MemoryView":685 * seen_ellipsis = True * else: * result.append(slice(None)) # <<<<<<<<<<<<<< * have_slices = True * else: */ /*else*/ { __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__30); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 685, __pyx_L1_error) } __pyx_L7:; /* "View.MemoryView":686 * else: * result.append(slice(None)) * have_slices = True # <<<<<<<<<<<<<< * else: * if not isinstance(item, slice) and not PyIndex_Check(item): */ __pyx_v_have_slices = 1; /* "View.MemoryView":680 * seen_ellipsis = False * for idx, item in enumerate(tup): * if item is Ellipsis: # <<<<<<<<<<<<<< * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) */ goto __pyx_L6; } /* "View.MemoryView":688 * have_slices = True * else: * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< * raise TypeError("Cannot index with type '%s'" % type(item)) * */ /*else*/ { __pyx_t_2 = PySlice_Check(__pyx_v_item); __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0); if (__pyx_t_10) { } else { __pyx_t_1 = __pyx_t_10; goto __pyx_L9_bool_binop_done; } __pyx_t_10 = ((!(PyIndex_Check(__pyx_v_item) != 0)) != 0); __pyx_t_1 = __pyx_t_10; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* "View.MemoryView":689 * else: * if not isinstance(item, slice) and not PyIndex_Check(item): * raise TypeError("Cannot index with type '%s'" % type(item)) # <<<<<<<<<<<<<< * * have_slices = have_slices or isinstance(item, slice) */ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(2, 689, __pyx_L1_error) /* "View.MemoryView":688 * have_slices = True * else: * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< * raise TypeError("Cannot index with type '%s'" % type(item)) * */ } /* "View.MemoryView":691 * raise TypeError("Cannot index with type '%s'" % type(item)) * * have_slices = have_slices or isinstance(item, slice) # <<<<<<<<<<<<<< * result.append(item) * */ __pyx_t_10 = (__pyx_v_have_slices != 0); if (!__pyx_t_10) { } else { __pyx_t_1 = __pyx_t_10; goto __pyx_L11_bool_binop_done; } __pyx_t_10 = PySlice_Check(__pyx_v_item); __pyx_t_2 = (__pyx_t_10 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L11_bool_binop_done:; __pyx_v_have_slices = __pyx_t_1; /* "View.MemoryView":692 * * have_slices = have_slices or isinstance(item, slice) * result.append(item) # <<<<<<<<<<<<<< * * nslices = ndim - len(result) */ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 692, __pyx_L1_error) } __pyx_L6:; /* "View.MemoryView":679 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< * if item is Ellipsis: * if not seen_ellipsis: */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":694 * result.append(item) * * nslices = ndim - len(result) # <<<<<<<<<<<<<< * if nslices: * result.extend([slice(None)] * nslices) */ __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(2, 694, __pyx_L1_error) __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5); /* "View.MemoryView":695 * * nslices = ndim - len(result) * if nslices: # <<<<<<<<<<<<<< * result.extend([slice(None)] * nslices) * */ __pyx_t_1 = (__pyx_v_nslices != 0); if (__pyx_t_1) { /* "View.MemoryView":696 * nslices = ndim - len(result) * if nslices: * result.extend([slice(None)] * nslices) # <<<<<<<<<<<<<< * * return have_slices or nslices, tuple(result) */ __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) { __Pyx_INCREF(__pyx_slice__30); __Pyx_GIVEREF(__pyx_slice__30); PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__30); } } __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":695 * * nslices = ndim - len(result) * if nslices: # <<<<<<<<<<<<<< * result.extend([slice(None)] * nslices) * */ } /* "View.MemoryView":698 * result.extend([slice(None)] * nslices) * * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): */ __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L14_bool_binop_done; } __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; __pyx_L14_bool_binop_done:; __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_r = ((PyObject*)__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L0; /* "View.MemoryView":666 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< * """ * Replace all ellipses with full slices and fill incomplete indices with */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_result); __Pyx_XDECREF(__pyx_v_idx); __Pyx_XDECREF(__pyx_v_item); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: */ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) { Py_ssize_t __pyx_v_suboffset; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations Py_ssize_t *__pyx_t_1; Py_ssize_t *__pyx_t_2; Py_ssize_t *__pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assert_direct_dimensions", 0); /* "View.MemoryView":701 * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< * if suboffset >= 0: * raise ValueError("Indirect dimensions not supported") */ __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim); for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) { __pyx_t_1 = __pyx_t_3; __pyx_v_suboffset = (__pyx_t_1[0]); /* "View.MemoryView":702 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< * raise ValueError("Indirect dimensions not supported") * */ __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0); if (unlikely(__pyx_t_4)) { /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(2, 703, __pyx_L1_error) /* "View.MemoryView":702 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< * raise ValueError("Indirect dimensions not supported") * */ } } /* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":710 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< * cdef int new_ndim = 0, suboffset_dim = -1, dim * cdef bint negative_step */ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) { int __pyx_v_new_ndim; int __pyx_v_suboffset_dim; int __pyx_v_dim; __Pyx_memviewslice __pyx_v_src; __Pyx_memviewslice __pyx_v_dst; __Pyx_memviewslice *__pyx_v_p_src; struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0; __Pyx_memviewslice *__pyx_v_p_dst; int *__pyx_v_p_suboffset_dim; Py_ssize_t __pyx_v_start; Py_ssize_t __pyx_v_stop; Py_ssize_t __pyx_v_step; int __pyx_v_have_start; int __pyx_v_have_stop; int __pyx_v_have_step; PyObject *__pyx_v_index = NULL; struct __pyx_memoryview_obj *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; struct __pyx_memoryview_obj *__pyx_t_4; char *__pyx_t_5; int __pyx_t_6; Py_ssize_t __pyx_t_7; PyObject *(*__pyx_t_8)(PyObject *); PyObject *__pyx_t_9 = NULL; Py_ssize_t __pyx_t_10; int __pyx_t_11; Py_ssize_t __pyx_t_12; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memview_slice", 0); /* "View.MemoryView":711 * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< * cdef bint negative_step * cdef __Pyx_memviewslice src, dst */ __pyx_v_new_ndim = 0; __pyx_v_suboffset_dim = -1; /* "View.MemoryView":718 * * * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< * * cdef _memoryviewslice memviewsliceobj */ (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); /* "View.MemoryView":722 * cdef _memoryviewslice memviewsliceobj * * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< * * if isinstance(memview, _memoryviewslice): */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(2, 722, __pyx_L1_error) } } #endif /* "View.MemoryView":724 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":725 * * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview # <<<<<<<<<<<<<< * p_src = &memviewsliceobj.from_slice * else: */ if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(2, 725, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":726 * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< * else: * slice_copy(memview, &src) */ __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); /* "View.MemoryView":724 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice */ goto __pyx_L3; } /* "View.MemoryView":728 * p_src = &memviewsliceobj.from_slice * else: * slice_copy(memview, &src) # <<<<<<<<<<<<<< * p_src = &src * */ /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); /* "View.MemoryView":729 * else: * slice_copy(memview, &src) * p_src = &src # <<<<<<<<<<<<<< * * */ __pyx_v_p_src = (&__pyx_v_src); } __pyx_L3:; /* "View.MemoryView":735 * * * dst.memview = p_src.memview # <<<<<<<<<<<<<< * dst.data = p_src.data * */ __pyx_t_4 = __pyx_v_p_src->memview; __pyx_v_dst.memview = __pyx_t_4; /* "View.MemoryView":736 * * dst.memview = p_src.memview * dst.data = p_src.data # <<<<<<<<<<<<<< * * */ __pyx_t_5 = __pyx_v_p_src->data; __pyx_v_dst.data = __pyx_t_5; /* "View.MemoryView":741 * * * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< * cdef int *p_suboffset_dim = &suboffset_dim * cdef Py_ssize_t start, stop, step */ __pyx_v_p_dst = (&__pyx_v_dst); /* "View.MemoryView":742 * * cdef __Pyx_memviewslice *p_dst = &dst * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< * cdef Py_ssize_t start, stop, step * cdef bint have_start, have_stop, have_step */ __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); /* "View.MemoryView":746 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< * if PyIndex_Check(index): * slice_memviewslice( */ __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) { __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 746, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(2, 746, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(2, 746, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } } else { __pyx_t_9 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(2, 746, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_9); } __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_dim = __pyx_t_6; __pyx_t_6 = (__pyx_t_6 + 1); /* "View.MemoryView":747 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< * slice_memviewslice( * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], */ __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0); if (__pyx_t_2) { /* "View.MemoryView":751 * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, * index, 0, 0, # start, stop, step # <<<<<<<<<<<<<< * 0, 0, 0, # have_{start,stop,step} * False) */ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 751, __pyx_L1_error) /* "View.MemoryView":748 * for dim, index in enumerate(indices): * if PyIndex_Check(index): * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 748, __pyx_L1_error) /* "View.MemoryView":747 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< * slice_memviewslice( * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], */ goto __pyx_L6; } /* "View.MemoryView":754 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 */ __pyx_t_2 = (__pyx_v_index == Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "View.MemoryView":755 * False) * elif index is None: * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 */ (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; /* "View.MemoryView":756 * elif index is None: * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 */ (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; /* "View.MemoryView":757 * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< * new_ndim += 1 * else: */ (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; /* "View.MemoryView":758 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 # <<<<<<<<<<<<<< * else: * start = index.start or 0 */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); /* "View.MemoryView":754 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 */ goto __pyx_L6; } /* "View.MemoryView":760 * new_ndim += 1 * else: * start = index.start or 0 # <<<<<<<<<<<<<< * stop = index.stop or 0 * step = index.step or 0 */ /*else*/ { __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 760, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 760, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_bool_binop_done; } __pyx_t_10 = 0; __pyx_L7_bool_binop_done:; __pyx_v_start = __pyx_t_10; /* "View.MemoryView":761 * else: * start = index.start or 0 * stop = index.stop or 0 # <<<<<<<<<<<<<< * step = index.step or 0 * */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 761, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 761, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L9_bool_binop_done; } __pyx_t_10 = 0; __pyx_L9_bool_binop_done:; __pyx_v_stop = __pyx_t_10; /* "View.MemoryView":762 * start = index.start or 0 * stop = index.stop or 0 * step = index.step or 0 # <<<<<<<<<<<<<< * * have_start = index.start is not None */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 762, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 762, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_bool_binop_done; } __pyx_t_10 = 0; __pyx_L11_bool_binop_done:; __pyx_v_step = __pyx_t_10; /* "View.MemoryView":764 * step = index.step or 0 * * have_start = index.start is not None # <<<<<<<<<<<<<< * have_stop = index.stop is not None * have_step = index.step is not None */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_start = __pyx_t_1; /* "View.MemoryView":765 * * have_start = index.start is not None * have_stop = index.stop is not None # <<<<<<<<<<<<<< * have_step = index.step is not None * */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_stop = __pyx_t_1; /* "View.MemoryView":766 * have_start = index.start is not None * have_stop = index.stop is not None * have_step = index.step is not None # <<<<<<<<<<<<<< * * slice_memviewslice( */ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_step = __pyx_t_1; /* "View.MemoryView":768 * have_step = index.step is not None * * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 768, __pyx_L1_error) /* "View.MemoryView":774 * have_start, have_stop, have_step, * True) * new_ndim += 1 # <<<<<<<<<<<<<< * * if isinstance(memview, _memoryviewslice): */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); } __pyx_L6:; /* "View.MemoryView":746 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< * if PyIndex_Check(index): * slice_memviewslice( */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":776 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":777 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ __Pyx_XDECREF(((PyObject *)__pyx_r)); /* "View.MemoryView":778 * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(2, 778, __pyx_L1_error) } /* "View.MemoryView":779 * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< * memview.dtype_is_object) * else: */ if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(2, 779, __pyx_L1_error) } /* "View.MemoryView":777 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(2, 777, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; /* "View.MemoryView":776 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, */ } /* "View.MemoryView":782 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ /*else*/ { __Pyx_XDECREF(((PyObject *)__pyx_r)); /* "View.MemoryView":783 * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "View.MemoryView":782 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(2, 782, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; } /* "View.MemoryView":710 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< * cdef int new_ndim = 0, suboffset_dim = -1, dim * cdef bint negative_step */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj); __Pyx_XDECREF(__pyx_v_index); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":807 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< * __Pyx_memviewslice *dst, * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, */ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) { Py_ssize_t __pyx_v_new_shape; int __pyx_v_negative_step; int __pyx_r; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "View.MemoryView":827 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< * * if start < 0: */ __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_1) { /* "View.MemoryView":829 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< * start += shape * if not 0 <= start < shape: */ __pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* "View.MemoryView":830 * * if start < 0: * start += shape # <<<<<<<<<<<<<< * if not 0 <= start < shape: * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); /* "View.MemoryView":829 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< * start += shape * if not 0 <= start < shape: */ } /* "View.MemoryView":831 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) * else: */ __pyx_t_1 = (0 <= __pyx_v_start); if (__pyx_t_1) { __pyx_t_1 = (__pyx_v_start < __pyx_v_shape); } __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":832 * start += shape * if not 0 <= start < shape: * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< * else: * */ __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 832, __pyx_L1_error) /* "View.MemoryView":831 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) * else: */ } /* "View.MemoryView":827 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< * * if start < 0: */ goto __pyx_L3; } /* "View.MemoryView":835 * else: * * negative_step = have_step != 0 and step < 0 # <<<<<<<<<<<<<< * * if have_step and step == 0: */ /*else*/ { __pyx_t_1 = ((__pyx_v_have_step != 0) != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L6_bool_binop_done; } __pyx_t_1 = ((__pyx_v_step < 0) != 0); __pyx_t_2 = __pyx_t_1; __pyx_L6_bool_binop_done:; __pyx_v_negative_step = __pyx_t_2; /* "View.MemoryView":837 * negative_step = have_step != 0 and step < 0 * * if have_step and step == 0: # <<<<<<<<<<<<<< * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) * */ __pyx_t_1 = (__pyx_v_have_step != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L9_bool_binop_done; } __pyx_t_1 = ((__pyx_v_step == 0) != 0); __pyx_t_2 = __pyx_t_1; __pyx_L9_bool_binop_done:; if (__pyx_t_2) { /* "View.MemoryView":838 * * if have_step and step == 0: * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 838, __pyx_L1_error) /* "View.MemoryView":837 * negative_step = have_step != 0 and step < 0 * * if have_step and step == 0: # <<<<<<<<<<<<<< * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) * */ } /* "View.MemoryView":841 * * * if have_start: # <<<<<<<<<<<<<< * if start < 0: * start += shape */ __pyx_t_2 = (__pyx_v_have_start != 0); if (__pyx_t_2) { /* "View.MemoryView":842 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< * start += shape * if start < 0: */ __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":843 * if have_start: * if start < 0: * start += shape # <<<<<<<<<<<<<< * if start < 0: * start = 0 */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); /* "View.MemoryView":844 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< * start = 0 * elif start >= shape: */ __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":845 * start += shape * if start < 0: * start = 0 # <<<<<<<<<<<<<< * elif start >= shape: * if negative_step: */ __pyx_v_start = 0; /* "View.MemoryView":844 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< * start = 0 * elif start >= shape: */ } /* "View.MemoryView":842 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< * start += shape * if start < 0: */ goto __pyx_L12; } /* "View.MemoryView":846 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< * if negative_step: * start = shape - 1 */ __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0); if (__pyx_t_2) { /* "View.MemoryView":847 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< * start = shape - 1 * else: */ __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { /* "View.MemoryView":848 * elif start >= shape: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< * else: * start = shape */ __pyx_v_start = (__pyx_v_shape - 1); /* "View.MemoryView":847 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< * start = shape - 1 * else: */ goto __pyx_L14; } /* "View.MemoryView":850 * start = shape - 1 * else: * start = shape # <<<<<<<<<<<<<< * else: * if negative_step: */ /*else*/ { __pyx_v_start = __pyx_v_shape; } __pyx_L14:; /* "View.MemoryView":846 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< * if negative_step: * start = shape - 1 */ } __pyx_L12:; /* "View.MemoryView":841 * * * if have_start: # <<<<<<<<<<<<<< * if start < 0: * start += shape */ goto __pyx_L11; } /* "View.MemoryView":852 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< * start = shape - 1 * else: */ /*else*/ { __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { /* "View.MemoryView":853 * else: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< * else: * start = 0 */ __pyx_v_start = (__pyx_v_shape - 1); /* "View.MemoryView":852 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< * start = shape - 1 * else: */ goto __pyx_L15; } /* "View.MemoryView":855 * start = shape - 1 * else: * start = 0 # <<<<<<<<<<<<<< * * if have_stop: */ /*else*/ { __pyx_v_start = 0; } __pyx_L15:; } __pyx_L11:; /* "View.MemoryView":857 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< * if stop < 0: * stop += shape */ __pyx_t_2 = (__pyx_v_have_stop != 0); if (__pyx_t_2) { /* "View.MemoryView":858 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< * stop += shape * if stop < 0: */ __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":859 * if have_stop: * if stop < 0: * stop += shape # <<<<<<<<<<<<<< * if stop < 0: * stop = 0 */ __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); /* "View.MemoryView":860 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< * stop = 0 * elif stop > shape: */ __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":861 * stop += shape * if stop < 0: * stop = 0 # <<<<<<<<<<<<<< * elif stop > shape: * stop = shape */ __pyx_v_stop = 0; /* "View.MemoryView":860 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< * stop = 0 * elif stop > shape: */ } /* "View.MemoryView":858 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< * stop += shape * if stop < 0: */ goto __pyx_L17; } /* "View.MemoryView":862 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< * stop = shape * else: */ __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0); if (__pyx_t_2) { /* "View.MemoryView":863 * stop = 0 * elif stop > shape: * stop = shape # <<<<<<<<<<<<<< * else: * if negative_step: */ __pyx_v_stop = __pyx_v_shape; /* "View.MemoryView":862 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< * stop = shape * else: */ } __pyx_L17:; /* "View.MemoryView":857 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< * if stop < 0: * stop += shape */ goto __pyx_L16; } /* "View.MemoryView":865 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< * stop = -1 * else: */ /*else*/ { __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { /* "View.MemoryView":866 * else: * if negative_step: * stop = -1 # <<<<<<<<<<<<<< * else: * stop = shape */ __pyx_v_stop = -1L; /* "View.MemoryView":865 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< * stop = -1 * else: */ goto __pyx_L19; } /* "View.MemoryView":868 * stop = -1 * else: * stop = shape # <<<<<<<<<<<<<< * * if not have_step: */ /*else*/ { __pyx_v_stop = __pyx_v_shape; } __pyx_L19:; } __pyx_L16:; /* "View.MemoryView":870 * stop = shape * * if not have_step: # <<<<<<<<<<<<<< * step = 1 * */ __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":871 * * if not have_step: * step = 1 # <<<<<<<<<<<<<< * * */ __pyx_v_step = 1; /* "View.MemoryView":870 * stop = shape * * if not have_step: # <<<<<<<<<<<<<< * step = 1 * */ } /* "View.MemoryView":875 * * with cython.cdivision(True): * new_shape = (stop - start) // step # <<<<<<<<<<<<<< * * if (stop - start) - step * new_shape: */ __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); /* "View.MemoryView":877 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< * new_shape += 1 * */ __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); if (__pyx_t_2) { /* "View.MemoryView":878 * * if (stop - start) - step * new_shape: * new_shape += 1 # <<<<<<<<<<<<<< * * if new_shape < 0: */ __pyx_v_new_shape = (__pyx_v_new_shape + 1); /* "View.MemoryView":877 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< * new_shape += 1 * */ } /* "View.MemoryView":880 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< * new_shape = 0 * */ __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":881 * * if new_shape < 0: * new_shape = 0 # <<<<<<<<<<<<<< * * */ __pyx_v_new_shape = 0; /* "View.MemoryView":880 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< * new_shape = 0 * */ } /* "View.MemoryView":884 * * * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset */ (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); /* "View.MemoryView":885 * * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< * dst.suboffsets[new_ndim] = suboffset * */ (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; /* "View.MemoryView":886 * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< * * */ (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset; } __pyx_L3:; /* "View.MemoryView":889 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< * dst.data += start * stride * else: */ __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":890 * * if suboffset_dim[0] < 0: * dst.data += start * stride # <<<<<<<<<<<<<< * else: * dst.suboffsets[suboffset_dim[0]] += start * stride */ __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); /* "View.MemoryView":889 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< * dst.data += start * stride * else: */ goto __pyx_L23; } /* "View.MemoryView":892 * dst.data += start * stride * else: * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< * * if suboffset >= 0: */ /*else*/ { __pyx_t_3 = (__pyx_v_suboffset_dim[0]); (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride)); } __pyx_L23:; /* "View.MemoryView":894 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< * if not is_slice: * if new_ndim == 0: */ __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":895 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset */ __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":896 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< * dst.data = ( dst.data)[0] + suboffset * else: */ __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":897 * if not is_slice: * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " */ __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); /* "View.MemoryView":896 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< * dst.data = ( dst.data)[0] + suboffset * else: */ goto __pyx_L26; } /* "View.MemoryView":899 * dst.data = ( dst.data)[0] + suboffset * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< * "must be indexed and not sliced", dim) * else: */ /*else*/ { /* "View.MemoryView":900 * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< * else: * suboffset_dim[0] = new_ndim */ __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 899, __pyx_L1_error) } __pyx_L26:; /* "View.MemoryView":895 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset */ goto __pyx_L25; } /* "View.MemoryView":902 * "must be indexed and not sliced", dim) * else: * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< * * return 0 */ /*else*/ { (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim; } __pyx_L25:; /* "View.MemoryView":894 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< * if not is_slice: * if new_ndim == 0: */ } /* "View.MemoryView":904 * suboffset_dim[0] = new_ndim * * return 0 # <<<<<<<<<<<<<< * * */ __pyx_r = 0; goto __pyx_L0; /* "View.MemoryView":807 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< * __Pyx_memviewslice *dst, * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, */ /* function exit code */ __pyx_L1_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "View.MemoryView":910 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 */ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) { Py_ssize_t __pyx_v_shape; Py_ssize_t __pyx_v_stride; Py_ssize_t __pyx_v_suboffset; Py_ssize_t __pyx_v_itemsize; char *__pyx_v_resultp; char *__pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pybuffer_index", 0); /* "View.MemoryView":912 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< * cdef Py_ssize_t itemsize = view.itemsize * cdef char *resultp */ __pyx_v_suboffset = -1L; /* "View.MemoryView":913 * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< * cdef char *resultp * */ __pyx_t_1 = __pyx_v_view->itemsize; __pyx_v_itemsize = __pyx_t_1; /* "View.MemoryView":916 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< * shape = view.len / itemsize * stride = itemsize */ __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":917 * * if view.ndim == 0: * shape = view.len / itemsize # <<<<<<<<<<<<<< * stride = itemsize * else: */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(2, 917, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); __PYX_ERR(2, 917, __pyx_L1_error) } __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize); /* "View.MemoryView":918 * if view.ndim == 0: * shape = view.len / itemsize * stride = itemsize # <<<<<<<<<<<<<< * else: * shape = view.shape[dim] */ __pyx_v_stride = __pyx_v_itemsize; /* "View.MemoryView":916 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< * shape = view.len / itemsize * stride = itemsize */ goto __pyx_L3; } /* "View.MemoryView":920 * stride = itemsize * else: * shape = view.shape[dim] # <<<<<<<<<<<<<< * stride = view.strides[dim] * if view.suboffsets != NULL: */ /*else*/ { __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); /* "View.MemoryView":921 * else: * shape = view.shape[dim] * stride = view.strides[dim] # <<<<<<<<<<<<<< * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] */ __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); /* "View.MemoryView":922 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< * suboffset = view.suboffsets[dim] * */ __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0); if (__pyx_t_2) { /* "View.MemoryView":923 * stride = view.strides[dim] * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< * * if index < 0: */ __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); /* "View.MemoryView":922 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< * suboffset = view.suboffsets[dim] * */ } } __pyx_L3:; /* "View.MemoryView":925 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< * index += view.shape[dim] * if index < 0: */ __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":926 * * if index < 0: * index += view.shape[dim] # <<<<<<<<<<<<<< * if index < 0: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) */ __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); /* "View.MemoryView":927 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * */ __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (unlikely(__pyx_t_2)) { /* "View.MemoryView":928 * index += view.shape[dim] * if index < 0: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * if index >= shape: */ __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 928, __pyx_L1_error) /* "View.MemoryView":927 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * */ } /* "View.MemoryView":925 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< * index += view.shape[dim] * if index < 0: */ } /* "View.MemoryView":930 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * if index >= shape: # <<<<<<<<<<<<<< * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * */ __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0); if (unlikely(__pyx_t_2)) { /* "View.MemoryView":931 * * if index >= shape: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * resultp = bufp + index * stride */ __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 931, __pyx_L1_error) /* "View.MemoryView":930 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * if index >= shape: # <<<<<<<<<<<<<< * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * */ } /* "View.MemoryView":933 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * resultp = bufp + index * stride # <<<<<<<<<<<<<< * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset */ __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); /* "View.MemoryView":934 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< * resultp = ( resultp)[0] + suboffset * */ __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":935 * resultp = bufp + index * stride * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< * * return resultp */ __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); /* "View.MemoryView":934 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< * resultp = ( resultp)[0] + suboffset * */ } /* "View.MemoryView":937 * resultp = ( resultp)[0] + suboffset * * return resultp # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_resultp; goto __pyx_L0; /* "View.MemoryView":910 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":943 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< * cdef int ndim = memslice.memview.view.ndim * */ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { int __pyx_v_ndim; Py_ssize_t *__pyx_v_shape; Py_ssize_t *__pyx_v_strides; int __pyx_v_i; int __pyx_v_j; int __pyx_r; int __pyx_t_1; Py_ssize_t *__pyx_t_2; long __pyx_t_3; long __pyx_t_4; Py_ssize_t __pyx_t_5; Py_ssize_t __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "View.MemoryView":944 * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< * * cdef Py_ssize_t *shape = memslice.shape */ __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; __pyx_v_ndim = __pyx_t_1; /* "View.MemoryView":946 * cdef int ndim = memslice.memview.view.ndim * * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< * cdef Py_ssize_t *strides = memslice.strides * */ __pyx_t_2 = __pyx_v_memslice->shape; __pyx_v_shape = __pyx_t_2; /* "View.MemoryView":947 * * cdef Py_ssize_t *shape = memslice.shape * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __pyx_v_memslice->strides; __pyx_v_strides = __pyx_t_2; /* "View.MemoryView":951 * * cdef int i, j * for i in range(ndim / 2): # <<<<<<<<<<<<<< * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] */ __pyx_t_3 = __Pyx_div_long(__pyx_v_ndim, 2); __pyx_t_4 = __pyx_t_3; for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; /* "View.MemoryView":952 * cdef int i, j * for i in range(ndim / 2): * j = ndim - 1 - i # <<<<<<<<<<<<<< * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] */ __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); /* "View.MemoryView":953 * for i in range(ndim / 2): * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< * shape[i], shape[j] = shape[j], shape[i] * */ __pyx_t_5 = (__pyx_v_strides[__pyx_v_j]); __pyx_t_6 = (__pyx_v_strides[__pyx_v_i]); (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; /* "View.MemoryView":954 * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: */ __pyx_t_6 = (__pyx_v_shape[__pyx_v_j]); __pyx_t_5 = (__pyx_v_shape[__pyx_v_i]); (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; /* "View.MemoryView":956 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") * */ __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0) != 0); if (!__pyx_t_8) { } else { __pyx_t_7 = __pyx_t_8; goto __pyx_L6_bool_binop_done; } __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0) != 0); __pyx_t_7 = __pyx_t_8; __pyx_L6_bool_binop_done:; if (__pyx_t_7) { /* "View.MemoryView":957 * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< * * return 1 */ __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 957, __pyx_L1_error) /* "View.MemoryView":956 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") * */ } } /* "View.MemoryView":959 * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") * * return 1 # <<<<<<<<<<<<<< * * */ __pyx_r = 1; goto __pyx_L0; /* "View.MemoryView":943 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< * cdef int ndim = memslice.memview.view.ndim * */ /* function exit code */ __pyx_L1_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_r = 0; __pyx_L0:; return __pyx_r; } /* "View.MemoryView":976 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * */ /* Python wrapper */ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); /* "View.MemoryView":977 * * def __dealloc__(self): * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1); /* "View.MemoryView":976 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "View.MemoryView":979 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< * if self.to_object_func != NULL: * return self.to_object_func(itemp) */ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); /* "View.MemoryView":980 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< * return self.to_object_func(itemp) * else: */ __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":981 * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: * return self.to_object_func(itemp) # <<<<<<<<<<<<<< * else: * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "View.MemoryView":980 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< * return self.to_object_func(itemp) * else: */ } /* "View.MemoryView":983 * return self.to_object_func(itemp) * else: * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< * * cdef assign_item_from_object(self, char *itemp, object value): */ /*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } /* "View.MemoryView":979 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< * if self.to_object_func != NULL: * return self.to_object_func(itemp) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":985 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) */ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); /* "View.MemoryView":986 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< * self.to_dtype_func(itemp, value) * else: */ __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0); if (__pyx_t_1) { /* "View.MemoryView":987 * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< * else: * memoryview.assign_item_from_object(self, itemp, value) */ __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(2, 987, __pyx_L1_error) /* "View.MemoryView":986 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< * self.to_dtype_func(itemp, value) * else: */ goto __pyx_L3; } /* "View.MemoryView":989 * self.to_dtype_func(itemp, value) * else: * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< * * @property */ /*else*/ { __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; /* "View.MemoryView":985 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":992 * * @property * def base(self): # <<<<<<<<<<<<<< * return self.from_object * */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* "View.MemoryView":993 * @property * def base(self): * return self.from_object # <<<<<<<<<<<<<< * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->from_object); __pyx_r = __pyx_v_self->from_object; goto __pyx_L0; /* "View.MemoryView":992 * * @property * def base(self): # <<<<<<<<<<<<<< * return self.from_object * */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* Python wrapper */ static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":999 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< * int ndim, * object (*to_object_func)(char *), */ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) { struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; Py_ssize_t __pyx_v_suboffset; PyObject *__pyx_v_length = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_TypeInfo *__pyx_t_4; Py_buffer __pyx_t_5; Py_ssize_t *__pyx_t_6; Py_ssize_t *__pyx_t_7; Py_ssize_t *__pyx_t_8; Py_ssize_t __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_fromslice", 0); /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< * return None * */ __pyx_t_1 = ((((PyObject *)__pyx_v_memviewslice.memview) == Py_None) != 0); if (__pyx_t_1) { /* "View.MemoryView":1008 * * if memviewslice.memview == Py_None: * return None # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< * return None * */ } /* "View.MemoryView":1013 * * * result = _memoryviewslice(None, 0, dtype_is_object) # <<<<<<<<<<<<<< * * result.from_slice = memviewslice */ __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":1015 * result = _memoryviewslice(None, 0, dtype_is_object) * * result.from_slice = memviewslice # <<<<<<<<<<<<<< * __PYX_INC_MEMVIEW(&memviewslice, 1) * */ __pyx_v_result->from_slice = __pyx_v_memviewslice; /* "View.MemoryView":1016 * * result.from_slice = memviewslice * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< * * result.from_object = ( memviewslice.memview).base */ __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); /* "View.MemoryView":1018 * __PYX_INC_MEMVIEW(&memviewslice, 1) * * result.from_object = ( memviewslice.memview).base # <<<<<<<<<<<<<< * result.typeinfo = memviewslice.memview.typeinfo * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_result->from_object); __Pyx_DECREF(__pyx_v_result->from_object); __pyx_v_result->from_object = __pyx_t_2; __pyx_t_2 = 0; /* "View.MemoryView":1019 * * result.from_object = ( memviewslice.memview).base * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< * * result.view = memviewslice.memview.view */ __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; /* "View.MemoryView":1021 * result.typeinfo = memviewslice.memview.typeinfo * * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< * result.view.buf = memviewslice.data * result.view.ndim = ndim */ __pyx_t_5 = __pyx_v_memviewslice.memview->view; __pyx_v_result->__pyx_base.view = __pyx_t_5; /* "View.MemoryView":1022 * * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None */ __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); /* "View.MemoryView":1023 * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data * result.view.ndim = ndim # <<<<<<<<<<<<<< * (<__pyx_buffer *> &result.view).obj = Py_None * Py_INCREF(Py_None) */ __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; /* "View.MemoryView":1024 * result.view.buf = memviewslice.data * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< * Py_INCREF(Py_None) * */ ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; /* "View.MemoryView":1025 * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< * * if (memviewslice.memview).flags & PyBUF_WRITABLE: */ Py_INCREF(Py_None); /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< * result.flags = PyBUF_RECORDS * else: */ __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); if (__pyx_t_1) { /* "View.MemoryView":1028 * * if (memviewslice.memview).flags & PyBUF_WRITABLE: * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< * else: * result.flags = PyBUF_RECORDS_RO */ __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< * result.flags = PyBUF_RECORDS * else: */ goto __pyx_L4; } /* "View.MemoryView":1030 * result.flags = PyBUF_RECORDS * else: * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< * * result.view.shape = result.from_slice.shape */ /*else*/ { __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS_RO; } __pyx_L4:; /* "View.MemoryView":1032 * result.flags = PyBUF_RECORDS_RO * * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< * result.view.strides = result.from_slice.strides * */ __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); /* "View.MemoryView":1033 * * result.view.shape = result.from_slice.shape * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< * * */ __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); /* "View.MemoryView":1036 * * * result.view.suboffsets = NULL # <<<<<<<<<<<<<< * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: */ __pyx_v_result->__pyx_base.view.suboffsets = NULL; /* "View.MemoryView":1037 * * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets */ __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; __pyx_v_suboffset = (__pyx_t_6[0]); /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< * result.view.suboffsets = result.from_slice.suboffsets * break */ __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_1) { /* "View.MemoryView":1039 * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< * break * */ __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); /* "View.MemoryView":1040 * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets * break # <<<<<<<<<<<<<< * * result.view.len = result.view.itemsize */ goto __pyx_L6_break; /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< * result.view.suboffsets = result.from_slice.suboffsets * break */ } } __pyx_L6_break:; /* "View.MemoryView":1042 * break * * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< * for length in result.view.shape[:ndim]: * result.view.len *= length */ __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; /* "View.MemoryView":1043 * * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< * result.view.len *= length * */ __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":1044 * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: * result.view.len *= length # <<<<<<<<<<<<<< * * result.to_object_func = to_object_func */ __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 1044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; } /* "View.MemoryView":1046 * result.view.len *= length * * result.to_object_func = to_object_func # <<<<<<<<<<<<<< * result.to_dtype_func = to_dtype_func * */ __pyx_v_result->to_object_func = __pyx_v_to_object_func; /* "View.MemoryView":1047 * * result.to_object_func = to_object_func * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< * * return result */ __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; /* "View.MemoryView":1049 * result.to_dtype_func = to_dtype_func * * return result # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_get_slice_from_memoryview') */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; /* "View.MemoryView":999 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< * int ndim, * object (*to_object_func)(char *), */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_length); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":1052 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj */ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) { struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0; __Pyx_memviewslice *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_slice_from_memview", 0); /* "View.MemoryView":1055 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * obj = memview * return &obj.from_slice */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":1056 * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): * obj = memview # <<<<<<<<<<<<<< * return &obj.from_slice * else: */ if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(2, 1056, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":1057 * if isinstance(memview, _memoryviewslice): * obj = memview * return &obj.from_slice # <<<<<<<<<<<<<< * else: * slice_copy(memview, mslice) */ __pyx_r = (&__pyx_v_obj->from_slice); goto __pyx_L0; /* "View.MemoryView":1055 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * obj = memview * return &obj.from_slice */ } /* "View.MemoryView":1059 * return &obj.from_slice * else: * slice_copy(memview, mslice) # <<<<<<<<<<<<<< * return mslice * */ /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); /* "View.MemoryView":1060 * else: * slice_copy(memview, mslice) * return mslice # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_slice_copy') */ __pyx_r = __pyx_v_mslice; goto __pyx_L0; } /* "View.MemoryView":1052 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_obj); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":1063 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< * cdef int dim * cdef (Py_ssize_t*) shape, strides, suboffsets */ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) { int __pyx_v_dim; Py_ssize_t *__pyx_v_shape; Py_ssize_t *__pyx_v_strides; Py_ssize_t *__pyx_v_suboffsets; __Pyx_RefNannyDeclarations Py_ssize_t *__pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; Py_ssize_t __pyx_t_5; __Pyx_RefNannySetupContext("slice_copy", 0); /* "View.MemoryView":1067 * cdef (Py_ssize_t*) shape, strides, suboffsets * * shape = memview.view.shape # <<<<<<<<<<<<<< * strides = memview.view.strides * suboffsets = memview.view.suboffsets */ __pyx_t_1 = __pyx_v_memview->view.shape; __pyx_v_shape = __pyx_t_1; /* "View.MemoryView":1068 * * shape = memview.view.shape * strides = memview.view.strides # <<<<<<<<<<<<<< * suboffsets = memview.view.suboffsets * */ __pyx_t_1 = __pyx_v_memview->view.strides; __pyx_v_strides = __pyx_t_1; /* "View.MemoryView":1069 * shape = memview.view.shape * strides = memview.view.strides * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< * * dst.memview = <__pyx_memoryview *> memview */ __pyx_t_1 = __pyx_v_memview->view.suboffsets; __pyx_v_suboffsets = __pyx_t_1; /* "View.MemoryView":1071 * suboffsets = memview.view.suboffsets * * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< * dst.data = memview.view.buf * */ __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); /* "View.MemoryView":1072 * * dst.memview = <__pyx_memoryview *> memview * dst.data = memview.view.buf # <<<<<<<<<<<<<< * * for dim in range(memview.view.ndim): */ __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); /* "View.MemoryView":1074 * dst.data = memview.view.buf * * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] */ __pyx_t_2 = __pyx_v_memview->view.ndim; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_dim = __pyx_t_4; /* "View.MemoryView":1075 * * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< * dst.strides[dim] = strides[dim] * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 */ (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); /* "View.MemoryView":1076 * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 * */ (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); /* "View.MemoryView":1077 * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_object') */ if ((__pyx_v_suboffsets != 0)) { __pyx_t_5 = (__pyx_v_suboffsets[__pyx_v_dim]); } else { __pyx_t_5 = -1L; } (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; } /* "View.MemoryView":1063 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< * cdef int dim * cdef (Py_ssize_t*) shape, strides, suboffsets */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "View.MemoryView":1080 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice */ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) { __Pyx_memviewslice __pyx_v_memviewslice; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy", 0); /* "View.MemoryView":1083 * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< * return memoryview_copy_from_slice(memview, &memviewslice) * */ __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); /* "View.MemoryView":1084 * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "View.MemoryView":1080 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":1087 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< * """ * Create a new memoryview object from a given memoryview object and slice. */ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) { PyObject *(*__pyx_v_to_object_func)(char *); int (*__pyx_v_to_dtype_func)(char *, PyObject *); PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *(*__pyx_t_3)(char *); int (*__pyx_t_4)(char *, PyObject *); PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "View.MemoryView":1095 * * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: */ __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; __pyx_v_to_object_func = __pyx_t_3; /* "View.MemoryView":1096 * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< * else: * to_object_func = NULL */ __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; __pyx_v_to_dtype_func = __pyx_t_4; /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func */ goto __pyx_L3; } /* "View.MemoryView":1098 * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: * to_object_func = NULL # <<<<<<<<<<<<<< * to_dtype_func = NULL * */ /*else*/ { __pyx_v_to_object_func = NULL; /* "View.MemoryView":1099 * else: * to_object_func = NULL * to_dtype_func = NULL # <<<<<<<<<<<<<< * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, */ __pyx_v_to_dtype_func = NULL; } __pyx_L3:; /* "View.MemoryView":1101 * to_dtype_func = NULL * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< * to_object_func, to_dtype_func, * memview.dtype_is_object) */ __Pyx_XDECREF(__pyx_r); /* "View.MemoryView":1103 * return memoryview_fromslice(memviewslice[0], memview.view.ndim, * to_object_func, to_dtype_func, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; /* "View.MemoryView":1087 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< * """ * Create a new memoryview object from a given memoryview object and slice. */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< * if arg < 0: * return -arg */ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { Py_ssize_t __pyx_r; int __pyx_t_1; /* "View.MemoryView":1110 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: # <<<<<<<<<<<<<< * return -arg * else: */ __pyx_t_1 = ((__pyx_v_arg < 0) != 0); if (__pyx_t_1) { /* "View.MemoryView":1111 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: * return -arg # <<<<<<<<<<<<<< * else: * return arg */ __pyx_r = (-__pyx_v_arg); goto __pyx_L0; /* "View.MemoryView":1110 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: # <<<<<<<<<<<<<< * return -arg * else: */ } /* "View.MemoryView":1113 * return -arg * else: * return arg # <<<<<<<<<<<<<< * * @cname('__pyx_get_best_slice_order') */ /*else*/ { __pyx_r = __pyx_v_arg; goto __pyx_L0; } /* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< * if arg < 0: * return -arg */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1116 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< * """ * Figure out the best memory access order for a given slice. */ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) { int __pyx_v_i; Py_ssize_t __pyx_v_c_stride; Py_ssize_t __pyx_v_f_stride; char __pyx_r; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; /* "View.MemoryView":1121 * """ * cdef int i * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< * cdef Py_ssize_t f_stride = 0 * */ __pyx_v_c_stride = 0; /* "View.MemoryView":1122 * cdef int i * cdef Py_ssize_t c_stride = 0 * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< * * for i in range(ndim - 1, -1, -1): */ __pyx_v_f_stride = 0; /* "View.MemoryView":1124 * cdef Py_ssize_t f_stride = 0 * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] */ for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; /* "View.MemoryView":1125 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< * c_stride = mslice.strides[i] * break */ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { /* "View.MemoryView":1126 * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< * break * */ __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); /* "View.MemoryView":1127 * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< * * for i in range(ndim): */ goto __pyx_L4_break; /* "View.MemoryView":1125 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< * c_stride = mslice.strides[i] * break */ } } __pyx_L4_break:; /* "View.MemoryView":1129 * break * * for i in range(ndim): # <<<<<<<<<<<<<< * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] */ __pyx_t_1 = __pyx_v_ndim; __pyx_t_3 = __pyx_t_1; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; /* "View.MemoryView":1130 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< * f_stride = mslice.strides[i] * break */ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { /* "View.MemoryView":1131 * for i in range(ndim): * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< * break * */ __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); /* "View.MemoryView":1132 * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): */ goto __pyx_L7_break; /* "View.MemoryView":1130 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< * f_stride = mslice.strides[i] * break */ } } __pyx_L7_break:; /* "View.MemoryView":1134 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< * return 'C' * else: */ __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0); if (__pyx_t_2) { /* "View.MemoryView":1135 * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): * return 'C' # <<<<<<<<<<<<<< * else: * return 'F' */ __pyx_r = 'C'; goto __pyx_L0; /* "View.MemoryView":1134 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< * return 'C' * else: */ } /* "View.MemoryView":1137 * return 'C' * else: * return 'F' # <<<<<<<<<<<<<< * * @cython.cdivision(True) */ /*else*/ { __pyx_r = 'F'; goto __pyx_L0; } /* "View.MemoryView":1116 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< * """ * Figure out the best memory access order for a given slice. */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1140 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< * char *dst_data, Py_ssize_t *dst_strides, * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, */ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) { CYTHON_UNUSED Py_ssize_t __pyx_v_i; CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent; Py_ssize_t __pyx_v_dst_extent; Py_ssize_t __pyx_v_src_stride; Py_ssize_t __pyx_v_dst_stride; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; Py_ssize_t __pyx_t_4; Py_ssize_t __pyx_t_5; Py_ssize_t __pyx_t_6; /* "View.MemoryView":1147 * * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] */ __pyx_v_src_extent = (__pyx_v_src_shape[0]); /* "View.MemoryView":1148 * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] */ __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); /* "View.MemoryView":1149 * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< * cdef Py_ssize_t dst_stride = dst_strides[0] * */ __pyx_v_src_stride = (__pyx_v_src_strides[0]); /* "View.MemoryView":1150 * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< * * if ndim == 1: */ __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); /* "View.MemoryView":1152 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): */ __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ __pyx_t_2 = ((__pyx_v_src_stride > 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = ((__pyx_v_dst_stride > 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } /* "View.MemoryView":1154 * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< * memcpy(dst_data, src_data, itemsize * dst_extent) * else: */ __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize); if (__pyx_t_2) { __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride)); } __pyx_t_3 = (__pyx_t_2 != 0); __pyx_t_1 = __pyx_t_3; __pyx_L5_bool_binop_done:; /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ if (__pyx_t_1) { /* "View.MemoryView":1155 * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< * else: * for i in range(dst_extent): */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ goto __pyx_L4; } /* "View.MemoryView":1157 * memcpy(dst_data, src_data, itemsize * dst_extent) * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< * memcpy(dst_data, src_data, itemsize) * src_data += src_stride */ /*else*/ { __pyx_t_4 = __pyx_v_dst_extent; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "View.MemoryView":1158 * else: * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< * src_data += src_stride * dst_data += dst_stride */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); /* "View.MemoryView":1159 * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< * dst_data += dst_stride * else: */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); /* "View.MemoryView":1160 * memcpy(dst_data, src_data, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< * else: * for i in range(dst_extent): */ __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); } } __pyx_L4:; /* "View.MemoryView":1152 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): */ goto __pyx_L3; } /* "View.MemoryView":1162 * dst_data += dst_stride * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< * _copy_strided_to_strided(src_data, src_strides + 1, * dst_data, dst_strides + 1, */ /*else*/ { __pyx_t_4 = __pyx_v_dst_extent; __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "View.MemoryView":1163 * else: * for i in range(dst_extent): * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< * dst_data, dst_strides + 1, * src_shape + 1, dst_shape + 1, */ _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); /* "View.MemoryView":1167 * src_shape + 1, dst_shape + 1, * ndim - 1, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< * dst_data += dst_stride * */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); /* "View.MemoryView":1168 * ndim - 1, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, */ __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); } } __pyx_L3:; /* "View.MemoryView":1140 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< * char *dst_data, Py_ssize_t *dst_strides, * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, */ /* function exit code */ } /* "View.MemoryView":1170 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) nogil: */ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { /* "View.MemoryView":1173 * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) nogil: * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< * src.shape, dst.shape, ndim, itemsize) * */ _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); /* "View.MemoryView":1170 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) nogil: */ /* function exit code */ } /* "View.MemoryView":1177 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< * "Return the size of the memory occupied by the slice in number of bytes" * cdef Py_ssize_t shape, size = src.memview.view.itemsize */ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) { Py_ssize_t __pyx_v_shape; Py_ssize_t __pyx_v_size; Py_ssize_t __pyx_r; Py_ssize_t __pyx_t_1; Py_ssize_t *__pyx_t_2; Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; /* "View.MemoryView":1179 * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: * "Return the size of the memory occupied by the slice in number of bytes" * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< * * for shape in src.shape[:ndim]: */ __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_size = __pyx_t_1; /* "View.MemoryView":1181 * cdef Py_ssize_t shape, size = src.memview.view.itemsize * * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< * size *= shape * */ __pyx_t_3 = (__pyx_v_src->shape + __pyx_v_ndim); for (__pyx_t_4 = __pyx_v_src->shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_v_shape = (__pyx_t_2[0]); /* "View.MemoryView":1182 * * for shape in src.shape[:ndim]: * size *= shape # <<<<<<<<<<<<<< * * return size */ __pyx_v_size = (__pyx_v_size * __pyx_v_shape); } /* "View.MemoryView":1184 * size *= shape * * return size # <<<<<<<<<<<<<< * * @cname('__pyx_fill_contig_strides_array') */ __pyx_r = __pyx_v_size; goto __pyx_L0; /* "View.MemoryView":1177 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< * "Return the size of the memory occupied by the slice in number of bytes" * cdef Py_ssize_t shape, size = src.memview.view.itemsize */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1187 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, * int ndim, char order) nogil: */ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) { int __pyx_v_idx; Py_ssize_t __pyx_r; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; /* "View.MemoryView":1196 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< * for idx in range(ndim): * strides[idx] = stride */ __pyx_t_1 = ((__pyx_v_order == 'F') != 0); if (__pyx_t_1) { /* "View.MemoryView":1197 * * if order == 'F': * for idx in range(ndim): # <<<<<<<<<<<<<< * strides[idx] = stride * stride *= shape[idx] */ __pyx_t_2 = __pyx_v_ndim; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_idx = __pyx_t_4; /* "View.MemoryView":1198 * if order == 'F': * for idx in range(ndim): * strides[idx] = stride # <<<<<<<<<<<<<< * stride *= shape[idx] * else: */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; /* "View.MemoryView":1199 * for idx in range(ndim): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< * else: * for idx in range(ndim - 1, -1, -1): */ __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); } /* "View.MemoryView":1196 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< * for idx in range(ndim): * strides[idx] = stride */ goto __pyx_L3; } /* "View.MemoryView":1201 * stride *= shape[idx] * else: * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * strides[idx] = stride * stride *= shape[idx] */ /*else*/ { for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { __pyx_v_idx = __pyx_t_2; /* "View.MemoryView":1202 * else: * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride # <<<<<<<<<<<<<< * stride *= shape[idx] * */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; /* "View.MemoryView":1203 * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< * * return stride */ __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); } } __pyx_L3:; /* "View.MemoryView":1205 * stride *= shape[idx] * * return stride # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_data_to_temp') */ __pyx_r = __pyx_v_stride; goto __pyx_L0; /* "View.MemoryView":1187 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, * int ndim, char order) nogil: */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1208 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< * __Pyx_memviewslice *tmpslice, * char order, */ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) { int __pyx_v_i; void *__pyx_v_result; size_t __pyx_v_itemsize; size_t __pyx_v_size; void *__pyx_r; Py_ssize_t __pyx_t_1; int __pyx_t_2; int __pyx_t_3; struct __pyx_memoryview_obj *__pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "View.MemoryView":1219 * cdef void *result * * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< * cdef size_t size = slice_get_size(src, ndim) * */ __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; /* "View.MemoryView":1220 * * cdef size_t itemsize = src.memview.view.itemsize * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< * * result = malloc(size) */ __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); /* "View.MemoryView":1222 * cdef size_t size = slice_get_size(src, ndim) * * result = malloc(size) # <<<<<<<<<<<<<< * if not result: * _err(MemoryError, NULL) */ __pyx_v_result = malloc(__pyx_v_size); /* "View.MemoryView":1223 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< * _err(MemoryError, NULL) * */ __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":1224 * result = malloc(size) * if not result: * _err(MemoryError, NULL) # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 1224, __pyx_L1_error) /* "View.MemoryView":1223 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< * _err(MemoryError, NULL) * */ } /* "View.MemoryView":1227 * * * tmpslice.data = result # <<<<<<<<<<<<<< * tmpslice.memview = src.memview * for i in range(ndim): */ __pyx_v_tmpslice->data = ((char *)__pyx_v_result); /* "View.MemoryView":1228 * * tmpslice.data = result * tmpslice.memview = src.memview # <<<<<<<<<<<<<< * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] */ __pyx_t_4 = __pyx_v_src->memview; __pyx_v_tmpslice->memview = __pyx_t_4; /* "View.MemoryView":1229 * tmpslice.data = result * tmpslice.memview = src.memview * for i in range(ndim): # <<<<<<<<<<<<<< * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 */ __pyx_t_3 = __pyx_v_ndim; __pyx_t_5 = __pyx_t_3; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "View.MemoryView":1230 * tmpslice.memview = src.memview * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< * tmpslice.suboffsets[i] = -1 * */ (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); /* "View.MemoryView":1231 * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, */ (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; } /* "View.MemoryView":1233 * tmpslice.suboffsets[i] = -1 * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, # <<<<<<<<<<<<<< * ndim, order) * */ (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); /* "View.MemoryView":1237 * * * for i in range(ndim): # <<<<<<<<<<<<<< * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 */ __pyx_t_3 = __pyx_v_ndim; __pyx_t_5 = __pyx_t_3; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "View.MemoryView":1238 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< * tmpslice.strides[i] = 0 * */ __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { /* "View.MemoryView":1239 * for i in range(ndim): * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< * * if slice_is_contig(src[0], order, ndim): */ (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; /* "View.MemoryView":1238 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< * tmpslice.strides[i] = 0 * */ } } /* "View.MemoryView":1241 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< * memcpy(result, src.data, size) * else: */ __pyx_t_2 = (__pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim) != 0); if (__pyx_t_2) { /* "View.MemoryView":1242 * * if slice_is_contig(src[0], order, ndim): * memcpy(result, src.data, size) # <<<<<<<<<<<<<< * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) */ (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); /* "View.MemoryView":1241 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< * memcpy(result, src.data, size) * else: */ goto __pyx_L9; } /* "View.MemoryView":1244 * memcpy(result, src.data, size) * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< * * return result */ /*else*/ { copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize); } __pyx_L9:; /* "View.MemoryView":1246 * copy_strided_to_strided(src, tmpslice, ndim, itemsize) * * return result # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_result; goto __pyx_L0; /* "View.MemoryView":1208 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< * __Pyx_memviewslice *tmpslice, * char order, */ /* function exit code */ __pyx_L1_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_r = NULL; __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1251 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % */ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_err_extents", 0); /* "View.MemoryView":1254 * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % * (i, extent1, extent2)) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err_dim') */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; /* "View.MemoryView":1253 * cdef int _err_extents(int i, Py_ssize_t extent1, * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % # <<<<<<<<<<<<<< * (i, extent1, extent2)) * */ __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(2, 1253, __pyx_L1_error) /* "View.MemoryView":1251 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif return __pyx_r; } /* "View.MemoryView":1257 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< * raise error(msg.decode('ascii') % dim) * */ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, int __pyx_v_dim) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_err_dim", 0); __Pyx_INCREF(__pyx_v_error); /* "View.MemoryView":1258 * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: * raise error(msg.decode('ascii') % dim) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err') */ __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_v_error); __pyx_t_3 = __pyx_v_error; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(2, 1258, __pyx_L1_error) /* "View.MemoryView":1257 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< * raise error(msg.decode('ascii') % dim) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __Pyx_XDECREF(__pyx_v_error); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif return __pyx_r; } /* "View.MemoryView":1261 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< * if msg != NULL: * raise error(msg.decode('ascii')) */ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_err", 0); __Pyx_INCREF(__pyx_v_error); /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: # <<<<<<<<<<<<<< * raise error(msg.decode('ascii')) * else: */ __pyx_t_1 = ((__pyx_v_msg != NULL) != 0); if (unlikely(__pyx_t_1)) { /* "View.MemoryView":1263 * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: * raise error(msg.decode('ascii')) # <<<<<<<<<<<<<< * else: * raise error */ __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_error); __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(2, 1263, __pyx_L1_error) /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: # <<<<<<<<<<<<<< * raise error(msg.decode('ascii')) * else: */ } /* "View.MemoryView":1265 * raise error(msg.decode('ascii')) * else: * raise error # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_contents') */ /*else*/ { __Pyx_Raise(__pyx_v_error, 0, 0, 0); __PYX_ERR(2, 1265, __pyx_L1_error) } /* "View.MemoryView":1261 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< * if msg != NULL: * raise error(msg.decode('ascii')) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __Pyx_XDECREF(__pyx_v_error); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif return __pyx_r; } /* "View.MemoryView":1268 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< * __Pyx_memviewslice dst, * int src_ndim, int dst_ndim, */ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) { void *__pyx_v_tmpdata; size_t __pyx_v_itemsize; int __pyx_v_i; char __pyx_v_order; int __pyx_v_broadcasting; int __pyx_v_direct_copy; __Pyx_memviewslice __pyx_v_tmp; int __pyx_v_ndim; int __pyx_r; Py_ssize_t __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; void *__pyx_t_7; int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "View.MemoryView":1276 * Check for overlapping memory and verify the shapes. * """ * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< * cdef size_t itemsize = src.memview.view.itemsize * cdef int i */ __pyx_v_tmpdata = NULL; /* "View.MemoryView":1277 * """ * cdef void *tmpdata = NULL * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< * cdef int i * cdef char order = get_best_order(&src, src_ndim) */ __pyx_t_1 = __pyx_v_src.memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; /* "View.MemoryView":1279 * cdef size_t itemsize = src.memview.view.itemsize * cdef int i * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< * cdef bint broadcasting = False * cdef bint direct_copy = False */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); /* "View.MemoryView":1280 * cdef int i * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False # <<<<<<<<<<<<<< * cdef bint direct_copy = False * cdef __Pyx_memviewslice tmp */ __pyx_v_broadcasting = 0; /* "View.MemoryView":1281 * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False * cdef bint direct_copy = False # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice tmp * */ __pyx_v_direct_copy = 0; /* "View.MemoryView":1284 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: */ __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0); if (__pyx_t_2) { /* "View.MemoryView":1285 * * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) */ __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); /* "View.MemoryView":1284 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: */ goto __pyx_L3; } /* "View.MemoryView":1286 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< * broadcast_leading(&dst, dst_ndim, src_ndim) * */ __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0); if (__pyx_t_2) { /* "View.MemoryView":1287 * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< * * cdef int ndim = max(src_ndim, dst_ndim) */ __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); /* "View.MemoryView":1286 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< * broadcast_leading(&dst, dst_ndim, src_ndim) * */ } __pyx_L3:; /* "View.MemoryView":1289 * broadcast_leading(&dst, dst_ndim, src_ndim) * * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< * * for i in range(ndim): */ __pyx_t_3 = __pyx_v_dst_ndim; __pyx_t_4 = __pyx_v_src_ndim; if (((__pyx_t_3 > __pyx_t_4) != 0)) { __pyx_t_5 = __pyx_t_3; } else { __pyx_t_5 = __pyx_t_4; } __pyx_v_ndim = __pyx_t_5; /* "View.MemoryView":1291 * cdef int ndim = max(src_ndim, dst_ndim) * * for i in range(ndim): # <<<<<<<<<<<<<< * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: */ __pyx_t_5 = __pyx_v_ndim; __pyx_t_3 = __pyx_t_5; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; /* "View.MemoryView":1292 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< * if src.shape[i] == 1: * broadcasting = True */ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0); if (__pyx_t_2) { /* "View.MemoryView":1293 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< * broadcasting = True * src.strides[i] = 0 */ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { /* "View.MemoryView":1294 * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: * broadcasting = True # <<<<<<<<<<<<<< * src.strides[i] = 0 * else: */ __pyx_v_broadcasting = 1; /* "View.MemoryView":1295 * if src.shape[i] == 1: * broadcasting = True * src.strides[i] = 0 # <<<<<<<<<<<<<< * else: * _err_extents(i, dst.shape[i], src.shape[i]) */ (__pyx_v_src.strides[__pyx_v_i]) = 0; /* "View.MemoryView":1293 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< * broadcasting = True * src.strides[i] = 0 */ goto __pyx_L7; } /* "View.MemoryView":1297 * src.strides[i] = 0 * else: * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< * * if src.suboffsets[i] >= 0: */ /*else*/ { __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1297, __pyx_L1_error) } __pyx_L7:; /* "View.MemoryView":1292 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< * if src.shape[i] == 1: * broadcasting = True */ } /* "View.MemoryView":1299 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< * _err_dim(ValueError, "Dimension %d is not direct", i) * */ __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0); if (__pyx_t_2) { /* "View.MemoryView":1300 * * if src.suboffsets[i] >= 0: * _err_dim(ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< * * if slices_overlap(&src, &dst, ndim, itemsize): */ __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1300, __pyx_L1_error) /* "View.MemoryView":1299 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< * _err_dim(ValueError, "Dimension %d is not direct", i) * */ } } /* "View.MemoryView":1302 * _err_dim(ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< * * if not slice_is_contig(src, order, ndim): */ __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0); if (__pyx_t_2) { /* "View.MemoryView":1304 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< * order = get_best_order(&dst, ndim) * */ __pyx_t_2 = ((!(__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":1305 * * if not slice_is_contig(src, order, ndim): * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); /* "View.MemoryView":1304 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< * order = get_best_order(&dst, ndim) * */ } /* "View.MemoryView":1307 * order = get_best_order(&dst, ndim) * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< * src = tmp * */ __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(2, 1307, __pyx_L1_error) __pyx_v_tmpdata = __pyx_t_7; /* "View.MemoryView":1308 * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) * src = tmp # <<<<<<<<<<<<<< * * if not broadcasting: */ __pyx_v_src = __pyx_v_tmp; /* "View.MemoryView":1302 * _err_dim(ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< * * if not slice_is_contig(src, order, ndim): */ } /* "View.MemoryView":1310 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< * * */ __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0); if (__pyx_t_2) { /* "View.MemoryView":1313 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): */ __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim) != 0); if (__pyx_t_2) { /* "View.MemoryView":1314 * * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< * elif slice_is_contig(src, 'F', ndim): * direct_copy = slice_is_contig(dst, 'F', ndim) */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); /* "View.MemoryView":1313 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): */ goto __pyx_L12; } /* "View.MemoryView":1315 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< * direct_copy = slice_is_contig(dst, 'F', ndim) * */ __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim) != 0); if (__pyx_t_2) { /* "View.MemoryView":1316 * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< * * if direct_copy: */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); /* "View.MemoryView":1315 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< * direct_copy = slice_is_contig(dst, 'F', ndim) * */ } __pyx_L12:; /* "View.MemoryView":1318 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, False) */ __pyx_t_2 = (__pyx_v_direct_copy != 0); if (__pyx_t_2) { /* "View.MemoryView":1320 * if direct_copy: * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); /* "View.MemoryView":1321 * * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) */ (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); /* "View.MemoryView":1322 * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< * free(tmpdata) * return 0 */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); /* "View.MemoryView":1323 * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) # <<<<<<<<<<<<<< * return 0 * */ free(__pyx_v_tmpdata); /* "View.MemoryView":1324 * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) * return 0 # <<<<<<<<<<<<<< * * if order == 'F' == get_best_order(&dst, ndim): */ __pyx_r = 0; goto __pyx_L0; /* "View.MemoryView":1318 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, False) */ } /* "View.MemoryView":1310 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< * * */ } /* "View.MemoryView":1326 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< * * */ __pyx_t_2 = (__pyx_v_order == 'F'); if (__pyx_t_2) { __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim)); } __pyx_t_8 = (__pyx_t_2 != 0); if (__pyx_t_8) { /* "View.MemoryView":1329 * * * transpose_memslice(&src) # <<<<<<<<<<<<<< * transpose_memslice(&dst) * */ __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(2, 1329, __pyx_L1_error) /* "View.MemoryView":1330 * * transpose_memslice(&src) * transpose_memslice(&dst) # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, False) */ __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(2, 1330, __pyx_L1_error) /* "View.MemoryView":1326 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< * * */ } /* "View.MemoryView":1332 * transpose_memslice(&dst) * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, True) */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); /* "View.MemoryView":1333 * * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< * refcount_copying(&dst, dtype_is_object, ndim, True) * */ copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); /* "View.MemoryView":1334 * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< * * free(tmpdata) */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); /* "View.MemoryView":1336 * refcount_copying(&dst, dtype_is_object, ndim, True) * * free(tmpdata) # <<<<<<<<<<<<<< * return 0 * */ free(__pyx_v_tmpdata); /* "View.MemoryView":1337 * * free(tmpdata) * return 0 # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_broadcast_leading') */ __pyx_r = 0; goto __pyx_L0; /* "View.MemoryView":1268 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< * __Pyx_memviewslice dst, * int src_ndim, int dst_ndim, */ /* function exit code */ __pyx_L1_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "View.MemoryView":1340 * * @cname('__pyx_memoryview_broadcast_leading') * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< * int ndim, * int ndim_other) nogil: */ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) { int __pyx_v_i; int __pyx_v_offset; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "View.MemoryView":1344 * int ndim_other) nogil: * cdef int i * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< * * for i in range(ndim - 1, -1, -1): */ __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); /* "View.MemoryView":1346 * cdef int offset = ndim_other - ndim * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] */ for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; /* "View.MemoryView":1347 * * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< * mslice.strides[i + offset] = mslice.strides[i] * mslice.suboffsets[i + offset] = mslice.suboffsets[i] */ (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); /* "View.MemoryView":1348 * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< * mslice.suboffsets[i + offset] = mslice.suboffsets[i] * */ (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); /* "View.MemoryView":1349 * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< * * for i in range(offset): */ (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); } /* "View.MemoryView":1351 * mslice.suboffsets[i + offset] = mslice.suboffsets[i] * * for i in range(offset): # <<<<<<<<<<<<<< * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] */ __pyx_t_1 = __pyx_v_offset; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "View.MemoryView":1352 * * for i in range(offset): * mslice.shape[i] = 1 # <<<<<<<<<<<<<< * mslice.strides[i] = mslice.strides[0] * mslice.suboffsets[i] = -1 */ (__pyx_v_mslice->shape[__pyx_v_i]) = 1; /* "View.MemoryView":1353 * for i in range(offset): * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< * mslice.suboffsets[i] = -1 * */ (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); /* "View.MemoryView":1354 * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< * * */ (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; } /* "View.MemoryView":1340 * * @cname('__pyx_memoryview_broadcast_leading') * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< * int ndim, * int ndim_other) nogil: */ /* function exit code */ } /* "View.MemoryView":1362 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< * int ndim, bint inc) nogil: * */ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { int __pyx_t_1; /* "View.MemoryView":1366 * * * if dtype_is_object: # <<<<<<<<<<<<<< * refcount_objects_in_slice_with_gil(dst.data, dst.shape, * dst.strides, ndim, inc) */ __pyx_t_1 = (__pyx_v_dtype_is_object != 0); if (__pyx_t_1) { /* "View.MemoryView":1367 * * if dtype_is_object: * refcount_objects_in_slice_with_gil(dst.data, dst.shape, # <<<<<<<<<<<<<< * dst.strides, ndim, inc) * */ __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); /* "View.MemoryView":1366 * * * if dtype_is_object: # <<<<<<<<<<<<<< * refcount_objects_in_slice_with_gil(dst.data, dst.shape, * dst.strides, ndim, inc) */ } /* "View.MemoryView":1362 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< * int ndim, bint inc) nogil: * */ /* function exit code */ } /* "View.MemoryView":1371 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, * bint inc) with gil: */ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0); /* "View.MemoryView":1374 * Py_ssize_t *strides, int ndim, * bint inc) with gil: * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_refcount_objects_in_slice') */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); /* "View.MemoryView":1371 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, * bint inc) with gil: */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } /* "View.MemoryView":1377 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, bint inc): * cdef Py_ssize_t i */ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { CYTHON_UNUSED Py_ssize_t __pyx_v_i; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; Py_ssize_t __pyx_t_2; Py_ssize_t __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0); /* "View.MemoryView":1381 * cdef Py_ssize_t i * * for i in range(shape[0]): # <<<<<<<<<<<<<< * if ndim == 1: * if inc: */ __pyx_t_1 = (__pyx_v_shape[0]); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "View.MemoryView":1382 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< * if inc: * Py_INCREF(( data)[0]) */ __pyx_t_4 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_4) { /* "View.MemoryView":1383 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< * Py_INCREF(( data)[0]) * else: */ __pyx_t_4 = (__pyx_v_inc != 0); if (__pyx_t_4) { /* "View.MemoryView":1384 * if ndim == 1: * if inc: * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< * else: * Py_DECREF(( data)[0]) */ Py_INCREF((((PyObject **)__pyx_v_data)[0])); /* "View.MemoryView":1383 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< * Py_INCREF(( data)[0]) * else: */ goto __pyx_L6; } /* "View.MemoryView":1386 * Py_INCREF(( data)[0]) * else: * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, */ /*else*/ { Py_DECREF((((PyObject **)__pyx_v_data)[0])); } __pyx_L6:; /* "View.MemoryView":1382 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< * if inc: * Py_INCREF(( data)[0]) */ goto __pyx_L5; } /* "View.MemoryView":1388 * Py_DECREF(( data)[0]) * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< * ndim - 1, inc) * */ /*else*/ { /* "View.MemoryView":1389 * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, * ndim - 1, inc) # <<<<<<<<<<<<<< * * data += strides[0] */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc); } __pyx_L5:; /* "View.MemoryView":1391 * ndim - 1, inc) * * data += strides[0] # <<<<<<<<<<<<<< * * */ __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0])); } /* "View.MemoryView":1377 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, bint inc): * cdef Py_ssize_t i */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "View.MemoryView":1397 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< * size_t itemsize, void *item, * bint dtype_is_object) nogil: */ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { /* "View.MemoryView":1400 * size_t itemsize, void *item, * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, * itemsize, item) */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); /* "View.MemoryView":1401 * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, # <<<<<<<<<<<<<< * itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, True) */ __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); /* "View.MemoryView":1403 * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, * itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< * * */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); /* "View.MemoryView":1397 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< * size_t itemsize, void *item, * bint dtype_is_object) nogil: */ /* function exit code */ } /* "View.MemoryView":1407 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, * size_t itemsize, void *item) nogil: */ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) { CYTHON_UNUSED Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_stride; Py_ssize_t __pyx_v_extent; int __pyx_t_1; Py_ssize_t __pyx_t_2; Py_ssize_t __pyx_t_3; Py_ssize_t __pyx_t_4; /* "View.MemoryView":1411 * size_t itemsize, void *item) nogil: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< * cdef Py_ssize_t extent = shape[0] * */ __pyx_v_stride = (__pyx_v_strides[0]); /* "View.MemoryView":1412 * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< * * if ndim == 1: */ __pyx_v_extent = (__pyx_v_shape[0]); /* "View.MemoryView":1414 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< * for i in range(extent): * memcpy(data, item, itemsize) */ __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { /* "View.MemoryView":1415 * * if ndim == 1: * for i in range(extent): # <<<<<<<<<<<<<< * memcpy(data, item, itemsize) * data += stride */ __pyx_t_2 = __pyx_v_extent; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; /* "View.MemoryView":1416 * if ndim == 1: * for i in range(extent): * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< * data += stride * else: */ (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); /* "View.MemoryView":1417 * for i in range(extent): * memcpy(data, item, itemsize) * data += stride # <<<<<<<<<<<<<< * else: * for i in range(extent): */ __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } /* "View.MemoryView":1414 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< * for i in range(extent): * memcpy(data, item, itemsize) */ goto __pyx_L3; } /* "View.MemoryView":1419 * data += stride * else: * for i in range(extent): # <<<<<<<<<<<<<< * _slice_assign_scalar(data, shape + 1, strides + 1, * ndim - 1, itemsize, item) */ /*else*/ { __pyx_t_2 = __pyx_v_extent; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; /* "View.MemoryView":1420 * else: * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< * ndim - 1, itemsize, item) * data += stride */ __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); /* "View.MemoryView":1422 * _slice_assign_scalar(data, shape + 1, strides + 1, * ndim - 1, itemsize, item) * data += stride # <<<<<<<<<<<<<< * * */ __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } } __pyx_L3:; /* "View.MemoryView":1407 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< * Py_ssize_t *strides, int ndim, * size_t itemsize, void *item) nogil: */ /* function exit code */ } /* "(tree fragment)":1 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* Python wrapper */ static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v___pyx_type = 0; long __pyx_v___pyx_checksum; PyObject *__pyx_v___pyx_state = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v___pyx_type = values[0]; __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) __pyx_v___pyx_state = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_PickleError = 0; PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0); /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum != 0xb068931: # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) */ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb068931) != 0); if (__pyx_t_1) { /* "(tree fragment)":5 * cdef object __pyx_result * if __pyx_checksum != 0xb068931: * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) * __pyx_result = Enum.__new__(__pyx_type) */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_PickleError); __Pyx_GIVEREF(__pyx_n_s_PickleError); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v___pyx_PickleError = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":6 * if __pyx_checksum != 0xb068931: * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) # <<<<<<<<<<<<<< * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: */ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v___pyx_PickleError); __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 6, __pyx_L1_error) /* "(tree fragment)":4 * cdef object __pyx_PickleError * cdef object __pyx_result * if __pyx_checksum != 0xb068931: # <<<<<<<<<<<<<< * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) */ } /* "(tree fragment)":7 * from pickle import PickleError as __pyx_PickleError * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) * __pyx_result = Enum.__new__(__pyx_type) # <<<<<<<<<<<<<< * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v___pyx_result = __pyx_t_3; __pyx_t_3 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result */ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (__pyx_t_6) { /* "(tree fragment)":9 * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): */ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 9, __pyx_L1_error) __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":8 * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result */ } /* "(tree fragment)":10 * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result # <<<<<<<<<<<<<< * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v___pyx_result); __pyx_r = __pyx_v___pyx_result; goto __pyx_L0; /* "(tree fragment)":1 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_PickleError); __Pyx_XDECREF(__pyx_v___pyx_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): */ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; Py_ssize_t __pyx_t_3; int __pyx_t_4; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0); /* "(tree fragment)":12 * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] # <<<<<<<<<<<<<< * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[1]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(2, 12, __pyx_L1_error) } __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v___pyx_result->name); __Pyx_DECREF(__pyx_v___pyx_result->name); __pyx_v___pyx_result->name = __pyx_t_1; __pyx_t_1 = 0; /* "(tree fragment)":13 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[1]) */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(2, 13, __pyx_L1_error) } __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) __pyx_t_4 = ((__pyx_t_3 > 1) != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) __pyx_t_5 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_5; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* "(tree fragment)":14 * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(2, 14, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":13 * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< * __pyx_result.__dict__.update(__pyx_state[1]) */ } /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_vtabstruct_array __pyx_vtable_array; static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_array_obj *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; p = ((struct __pyx_array_obj *)o); p->__pyx_vtab = __pyx_vtabptr_array; p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None); p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None); if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_array(PyObject *o) { struct __pyx_array_obj *p = (struct __pyx_array_obj *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_array___dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } Py_CLEAR(p->mode); Py_CLEAR(p->_format); (*Py_TYPE(o)->tp_free)(o); } static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) { PyObject *r; PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); Py_DECREF(x); return r; } static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) { if (v) { return __pyx_array___setitem__(o, i, v); } else { PyErr_Format(PyExc_NotImplementedError, "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name); return -1; } } static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) { PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n); if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); v = __pyx_array___getattr__(o, n); } return v; } static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o); } static PyMethodDef __pyx_methods_array[] = { {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0}, {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_array_1__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_array_3__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_array[] = { {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; static PySequenceMethods __pyx_tp_as_sequence_array = { __pyx_array___len__, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ __pyx_sq_item_array, /*sq_item*/ 0, /*sq_slice*/ 0, /*sq_ass_item*/ 0, /*sq_ass_slice*/ 0, /*sq_contains*/ 0, /*sq_inplace_concat*/ 0, /*sq_inplace_repeat*/ }; static PyMappingMethods __pyx_tp_as_mapping_array = { __pyx_array___len__, /*mp_length*/ __pyx_array___getitem__, /*mp_subscript*/ __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/ }; static PyBufferProcs __pyx_tp_as_buffer_array = { #if PY_MAJOR_VERSION < 3 0, /*bf_getreadbuffer*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getwritebuffer*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getsegcount*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getcharbuffer*/ #endif __pyx_array_getbuffer, /*bf_getbuffer*/ 0, /*bf_releasebuffer*/ }; static PyTypeObject __pyx_type___pyx_array = { PyVarObject_HEAD_INIT(0, 0) "im2col_cython.array", /*tp_name*/ sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ &__pyx_tp_as_sequence_array, /*tp_as_sequence*/ &__pyx_tp_as_mapping_array, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ __pyx_tp_getattro_array, /*tp_getattro*/ 0, /*tp_setattro*/ &__pyx_tp_as_buffer_array, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_array, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_array, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_array, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif }; static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_MemviewEnum_obj *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; p = ((struct __pyx_MemviewEnum_obj *)o); p->name = Py_None; Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_Enum(PyObject *o) { struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->name); (*Py_TYPE(o)->tp_free)(o); } static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) { int e; struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; if (p->name) { e = (*v)(p->name, a); if (e) return e; } return 0; } static int __pyx_tp_clear_Enum(PyObject *o) { PyObject* tmp; struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; tmp = ((PyObject*)p->name); p->name = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyMethodDef __pyx_methods_Enum[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type___pyx_MemviewEnum = { PyVarObject_HEAD_INIT(0, 0) "im2col_cython.Enum", /*tp_name*/ sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_MemviewEnum___repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_Enum, /*tp_traverse*/ __pyx_tp_clear_Enum, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_Enum, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_MemviewEnum___init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_Enum, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif }; static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_memoryview_obj *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; p = ((struct __pyx_memoryview_obj *)o); p->__pyx_vtab = __pyx_vtabptr_memoryview; p->obj = Py_None; Py_INCREF(Py_None); p->_size = Py_None; Py_INCREF(Py_None); p->_array_interface = Py_None; Py_INCREF(Py_None); p->view.obj = NULL; if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad; return o; bad: Py_DECREF(o); o = 0; return NULL; } static void __pyx_tp_dealloc_memoryview(PyObject *o) { struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_memoryview___dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } Py_CLEAR(p->obj); Py_CLEAR(p->_size); Py_CLEAR(p->_array_interface); (*Py_TYPE(o)->tp_free)(o); } static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { int e; struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; if (p->obj) { e = (*v)(p->obj, a); if (e) return e; } if (p->_size) { e = (*v)(p->_size, a); if (e) return e; } if (p->_array_interface) { e = (*v)(p->_array_interface, a); if (e) return e; } if (p->view.obj) { e = (*v)(p->view.obj, a); if (e) return e; } return 0; } static int __pyx_tp_clear_memoryview(PyObject *o) { PyObject* tmp; struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; tmp = ((PyObject*)p->obj); p->obj = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->_size); p->_size = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->_array_interface); p->_array_interface = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); Py_CLEAR(p->view.obj); return 0; } static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) { PyObject *r; PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); Py_DECREF(x); return r; } static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) { if (v) { return __pyx_memoryview___setitem__(o, i, v); } else { PyErr_Format(PyExc_NotImplementedError, "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name); return -1; } } static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o); } static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o); } static PyMethodDef __pyx_methods_memoryview[] = { {"is_c_contig", (PyCFunction)__pyx_memoryview_is_c_contig, METH_NOARGS, 0}, {"is_f_contig", (PyCFunction)__pyx_memoryview_is_f_contig, METH_NOARGS, 0}, {"copy", (PyCFunction)__pyx_memoryview_copy, METH_NOARGS, 0}, {"copy_fortran", (PyCFunction)__pyx_memoryview_copy_fortran, METH_NOARGS, 0}, {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_1__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_3__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_memoryview[] = { {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0}, {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0}, {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0}, {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0}, {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0}, {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0}, {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0}, {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0}, {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; static PySequenceMethods __pyx_tp_as_sequence_memoryview = { __pyx_memoryview___len__, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ __pyx_sq_item_memoryview, /*sq_item*/ 0, /*sq_slice*/ 0, /*sq_ass_item*/ 0, /*sq_ass_slice*/ 0, /*sq_contains*/ 0, /*sq_inplace_concat*/ 0, /*sq_inplace_repeat*/ }; static PyMappingMethods __pyx_tp_as_mapping_memoryview = { __pyx_memoryview___len__, /*mp_length*/ __pyx_memoryview___getitem__, /*mp_subscript*/ __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/ }; static PyBufferProcs __pyx_tp_as_buffer_memoryview = { #if PY_MAJOR_VERSION < 3 0, /*bf_getreadbuffer*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getwritebuffer*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getsegcount*/ #endif #if PY_MAJOR_VERSION < 3 0, /*bf_getcharbuffer*/ #endif __pyx_memoryview_getbuffer, /*bf_getbuffer*/ 0, /*bf_releasebuffer*/ }; static PyTypeObject __pyx_type___pyx_memoryview = { PyVarObject_HEAD_INIT(0, 0) "im2col_cython.memoryview", /*tp_name*/ sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_memoryview___repr__, /*tp_repr*/ 0, /*tp_as_number*/ &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/ &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ __pyx_memoryview___str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_memoryview, /*tp_traverse*/ __pyx_tp_clear_memoryview, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_memoryview, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_memoryview, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_memoryview, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif }; static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice; static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_memoryviewslice_obj *p; PyObject *o = __pyx_tp_new_memoryview(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_memoryviewslice_obj *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice; p->from_object = Py_None; Py_INCREF(Py_None); p->from_slice.memview = NULL; return o; } static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) { struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_memoryviewslice___dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } Py_CLEAR(p->from_object); PyObject_GC_Track(o); __pyx_tp_dealloc_memoryview(o); } static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) { int e; struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e; if (p->from_object) { e = (*v)(p->from_object, a); if (e) return e; } return 0; } static int __pyx_tp_clear__memoryviewslice(PyObject *o) { PyObject* tmp; struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; __pyx_tp_clear_memoryview(o); tmp = ((PyObject*)p->from_object); p->from_object = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); __PYX_XDEC_MEMVIEW(&p->from_slice, 1); return 0; } static PyObject *__pyx_getprop___pyx_memoryviewslice_base(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(o); } static PyMethodDef __pyx_methods__memoryviewslice[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets__memoryviewslice[] = { {(char *)"base", __pyx_getprop___pyx_memoryviewslice_base, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_type___pyx_memoryviewslice = { PyVarObject_HEAD_INIT(0, 0) "im2col_cython._memoryviewslice", /*tp_name*/ sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif #if CYTHON_COMPILING_IN_PYPY __pyx_memoryview___repr__, /*tp_repr*/ #else 0, /*tp_repr*/ #endif 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ #if CYTHON_COMPILING_IN_PYPY __pyx_memoryview___str__, /*tp_str*/ #else 0, /*tp_str*/ #endif 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "Internal class for passing memoryview slices to Python", /*tp_doc*/ __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/ __pyx_tp_clear__memoryviewslice, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods__memoryviewslice, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets__memoryviewslice, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new__memoryviewslice, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif }; static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ static int __pyx_pymod_exec_im2col_cython(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec_im2col_cython}, {0, NULL} }; #endif static struct PyModuleDef __pyx_moduledef = { PyModuleDef_HEAD_INIT, "im2col_cython", 0, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ #else -1, /* m_size */ #endif __pyx_methods /* m_methods */, #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_moduledef_slots, /* m_slots */ #else NULL, /* m_reload */ #endif NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif #ifndef CYTHON_SMALL_CODE #if defined(__clang__) #define CYTHON_SMALL_CODE #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) #define CYTHON_SMALL_CODE __attribute__((cold)) #else #define CYTHON_SMALL_CODE #endif #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_n_s_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 0, 1, 1}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0}, {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1}, {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0}, {&__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_k_Expected_at_least_d_argument_s_g, sizeof(__pyx_k_Expected_at_least_d_argument_s_g), 0, 0, 1, 0}, {&__pyx_kp_s_Function_call_with_ambiguous_arg, __pyx_k_Function_call_with_ambiguous_arg, sizeof(__pyx_k_Function_call_with_ambiguous_arg), 0, 0, 1, 0}, {&__pyx_n_s_H, __pyx_k_H, sizeof(__pyx_k_H), 0, 0, 1, 1}, {&__pyx_n_s_HH, __pyx_k_HH, sizeof(__pyx_k_HH), 0, 0, 1, 1}, {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0}, {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0}, {&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0}, {&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0}, {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0}, {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0}, {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1}, {&__pyx_kp_s_No_matching_signature_found, __pyx_k_No_matching_signature_found, sizeof(__pyx_k_No_matching_signature_found), 0, 0, 1, 0}, {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1}, {&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0}, {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1}, {&__pyx_n_s_W, __pyx_k_W, sizeof(__pyx_k_W), 0, 0, 1, 1}, {&__pyx_n_s_WW, __pyx_k_WW, sizeof(__pyx_k_WW), 0, 0, 1, 1}, {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1}, {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_col2im_6d_cython, __pyx_k_col2im_6d_cython, sizeof(__pyx_k_col2im_6d_cython), 0, 0, 1, 1}, {&__pyx_n_s_col2im_cython, __pyx_k_col2im_cython, sizeof(__pyx_k_col2im_cython), 0, 0, 1, 1}, {&__pyx_n_s_cols, __pyx_k_cols, sizeof(__pyx_k_cols), 0, 0, 1, 1}, {&__pyx_n_s_constant, __pyx_k_constant, sizeof(__pyx_k_constant), 0, 0, 1, 1}, {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0}, {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0}, {&__pyx_n_s_defaults, __pyx_k_defaults, sizeof(__pyx_k_defaults), 0, 0, 1, 1}, {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1}, {&__pyx_n_s_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 0, 0, 1, 1}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, {&__pyx_n_s_field_height, __pyx_k_field_height, sizeof(__pyx_k_field_height), 0, 0, 1, 1}, {&__pyx_n_s_field_width, __pyx_k_field_width, sizeof(__pyx_k_field_width), 0, 0, 1, 1}, {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, {&__pyx_n_s_float32_t, __pyx_k_float32_t, sizeof(__pyx_k_float32_t), 0, 0, 1, 1}, {&__pyx_n_s_float64_t, __pyx_k_float64_t, sizeof(__pyx_k_float64_t), 0, 0, 1, 1}, {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1}, {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, {&__pyx_n_s_im2col_cython, __pyx_k_im2col_cython, sizeof(__pyx_k_im2col_cython), 0, 0, 1, 1}, {&__pyx_kp_s_im2col_cython_pyx, __pyx_k_im2col_cython_pyx, sizeof(__pyx_k_im2col_cython_pyx), 0, 0, 1, 0}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1}, {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0}, {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1}, {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1}, {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1}, {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0}, {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0}, {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, {&__pyx_n_s_out_h, __pyx_k_out_h, sizeof(__pyx_k_out_h), 0, 0, 1, 1}, {&__pyx_n_s_out_w, __pyx_k_out_w, sizeof(__pyx_k_out_w), 0, 0, 1, 1}, {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1}, {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1}, {&__pyx_n_s_pad, __pyx_k_pad, sizeof(__pyx_k_pad), 0, 0, 1, 1}, {&__pyx_n_s_padding, __pyx_k_padding, sizeof(__pyx_k_padding), 0, 0, 1, 1}, {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, {&__pyx_n_s_pyx_getbuffer, __pyx_k_pyx_getbuffer, sizeof(__pyx_k_pyx_getbuffer), 0, 0, 1, 1}, {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, {&__pyx_n_s_signatures, __pyx_k_signatures, sizeof(__pyx_k_signatures), 0, 0, 1, 1}, {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1}, {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, {&__pyx_n_s_stride, __pyx_k_stride, sizeof(__pyx_k_stride), 0, 0, 1, 1}, {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0}, {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0}, {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0}, {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1}, {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0}, {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0}, {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1}, {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_x_padded, __pyx_k_x_padded, sizeof(__pyx_k_x_padded), 0, 0, 1, 1}, {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 12, __pyx_L1_error) __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 884, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 133, __pyx_L1_error) __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 148, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 151, __pyx_L1_error) __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(2, 404, __pyx_L1_error) __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(2, 613, __pyx_L1_error) __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(2, 832, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); /* "im2col_cython.pyx":24 * cdef int p = padding * cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, * ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') # <<<<<<<<<<<<<< * * cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( */ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); /* "im2col_cython.pyx":70 * field_height, field_width, padding, stride) * if padding > 0: * return x_padded[:, :, padding:-padding, padding:-padding] # <<<<<<<<<<<<<< * return x_padded * */ __pyx_slice__6 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__6); __Pyx_GIVEREF(__pyx_slice__6); __pyx_slice__7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__7); __Pyx_GIVEREF(__pyx_slice__7); __pyx_slice__8 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__8); __Pyx_GIVEREF(__pyx_slice__8); __pyx_slice__9 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__9)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__9); __Pyx_GIVEREF(__pyx_slice__9); /* "im2col_cython.pyx":120 * * if pad > 0: * return x_padded[:, :, pad:-pad, pad:-pad] # <<<<<<<<<<<<<< * return x_padded */ __pyx_slice__10 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__10); __Pyx_GIVEREF(__pyx_slice__10); __pyx_slice__11 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__11); __Pyx_GIVEREF(__pyx_slice__11); __pyx_slice__12 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__12)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__12); __Pyx_GIVEREF(__pyx_slice__12); __pyx_slice__13 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__13)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__13); __Pyx_GIVEREF(__pyx_slice__13); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":884 * __pyx_import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 884, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); /* "../../../../../../../usr/local/lib/python3.6/dist-packages/numpy/__init__.pxd":890 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "View.MemoryView":133 * * if not self.ndim: * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< * * if itemsize <= 0: */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); /* "View.MemoryView":136 * * if itemsize <= 0: * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< * * if not isinstance(format, bytes): */ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); /* "View.MemoryView":148 * * if not self._shape: * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< * * */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); /* "View.MemoryView":176 * self.data = malloc(self.len) * if not self.data: * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< * * if self.dtype_is_object: */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* "View.MemoryView":192 * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< * info.buf = self.data * info.len = self.len */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); /* "View.MemoryView":418 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* "View.MemoryView":495 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 495, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); /* "View.MemoryView":520 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); /* "View.MemoryView":570 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); /* "View.MemoryView":577 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __pyx_tuple__27 = PyTuple_New(1); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_tuple__27, 0, __pyx_int_neg_1); __Pyx_GIVEREF(__pyx_tuple__27); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* "View.MemoryView":682 * if item is Ellipsis: * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< * seen_ellipsis = True * else: */ __pyx_slice__30 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__30)) __PYX_ERR(2, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__30); __Pyx_GIVEREF(__pyx_slice__30); /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__33); __Pyx_GIVEREF(__pyx_tuple__33); /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ __pyx_tuple__34 = PyTuple_Pack(14, __pyx_n_s_x, __pyx_n_s_field_height, __pyx_n_s_field_width, __pyx_n_s_padding, __pyx_n_s_stride, __pyx_n_s_N, __pyx_n_s_C, __pyx_n_s_H, __pyx_n_s_W, __pyx_n_s_HH, __pyx_n_s_WW, __pyx_n_s_p, __pyx_n_s_x_padded, __pyx_n_s_cols); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(5, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_im2col_cython_pyx, __pyx_n_s_im2col_cython, 12, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 12, __pyx_L1_error) /* "im2col_cython.pyx":57 * * * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ __pyx_tuple__36 = PyTuple_Pack(13, __pyx_n_s_cols, __pyx_n_s_N, __pyx_n_s_C, __pyx_n_s_H, __pyx_n_s_W, __pyx_n_s_field_height, __pyx_n_s_field_width, __pyx_n_s_padding, __pyx_n_s_stride, __pyx_n_s_x, __pyx_n_s_HH, __pyx_n_s_WW, __pyx_n_s_x_padded); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(9, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_im2col_cython_pyx, __pyx_n_s_col2im_cython, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 57, __pyx_L1_error) /* "im2col_cython.pyx":109 * * * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ __pyx_tuple__38 = PyTuple_Pack(13, __pyx_n_s_cols, __pyx_n_s_N, __pyx_n_s_C, __pyx_n_s_H, __pyx_n_s_W, __pyx_n_s_HH, __pyx_n_s_WW, __pyx_n_s_pad, __pyx_n_s_stride, __pyx_n_s_x, __pyx_n_s_out_h, __pyx_n_s_out_w, __pyx_n_s_x_padded); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(9, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_im2col_cython_pyx, __pyx_n_s_col2im_6d_cython, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 109, __pyx_L1_error) /* "View.MemoryView":286 * return self.name * * cdef generic = Enum("") # <<<<<<<<<<<<<< * cdef strided = Enum("") # default * cdef indirect = Enum("") */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); /* "View.MemoryView":287 * * cdef generic = Enum("") * cdef strided = Enum("") # default # <<<<<<<<<<<<<< * cdef indirect = Enum("") * */ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__41); __Pyx_GIVEREF(__pyx_tuple__41); /* "View.MemoryView":288 * cdef generic = Enum("") * cdef strided = Enum("") # default * cdef indirect = Enum("") # <<<<<<<<<<<<<< * * */ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__42); __Pyx_GIVEREF(__pyx_tuple__42); /* "View.MemoryView":291 * * * cdef contiguous = Enum("") # <<<<<<<<<<<<<< * cdef indirect_contiguous = Enum("") * */ __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 291, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__43); __Pyx_GIVEREF(__pyx_tuple__43); /* "View.MemoryView":292 * * cdef contiguous = Enum("") * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< * * */ __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); /* "(tree fragment)":1 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ __pyx_tuple__45 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45); __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(2, 1, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ static int __Pyx_modinit_global_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ generic = Py_None; Py_INCREF(Py_None); strided = Py_None; Py_INCREF(Py_None); indirect = Py_None; Py_INCREF(Py_None); contiguous = Py_None; Py_INCREF(Py_None); indirect_contiguous = Py_None; Py_INCREF(Py_None); __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ __pyx_vtabptr_array = &__pyx_vtable_array; __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview; if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_array.tp_print = 0; #endif if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) __pyx_array_type = &__pyx_type___pyx_array; if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(2, 279, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_MemviewEnum.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_MemviewEnum.tp_dictoffset && __pyx_type___pyx_MemviewEnum.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_MemviewEnum.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(2, 279, __pyx_L1_error) __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice; __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment; __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar; __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed; __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object; __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object; if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_memoryview.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryview.tp_dictoffset && __pyx_type___pyx_memoryview.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_memoryview.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) __pyx_memoryview_type = &__pyx_type___pyx_memoryview; __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type; if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_memoryviewslice.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryviewslice.tp_dictoffset && __pyx_type___pyx_memoryviewslice.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_memoryviewslice.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_type_import_code(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 sizeof(PyTypeObject), #else sizeof(PyHeapTypeObject), #endif __Pyx_ImportType_CheckSize_Warn); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 199, __pyx_L1_error) __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 222, __pyx_L1_error) __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 226, __pyx_L1_error) __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 238, __pyx_L1_error) __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 764, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_variable_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); /*--- Variable import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } #ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC #elif PY_MAJOR_VERSION < 3 #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" void #else #define __Pyx_PyMODINIT_FUNC void #endif #else #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else #define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif #if PY_MAJOR_VERSION < 3 __Pyx_PyMODINIT_FUNC initim2col_cython(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC initim2col_cython(void) #else __Pyx_PyMODINIT_FUNC PyInit_im2col_cython(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC PyInit_im2col_cython(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); } static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { #if PY_VERSION_HEX >= 0x030700A1 static PY_INT64_T main_interpreter_id = -1; PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); if (main_interpreter_id == -1) { main_interpreter_id = current_id; return (unlikely(current_id == -1)) ? -1 : 0; } else if (unlikely(main_interpreter_id != current_id)) #else static PyInterpreterState *main_interpreter = NULL; PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; if (!main_interpreter) { main_interpreter = current_interpreter; } else if (unlikely(main_interpreter != current_interpreter)) #endif { PyErr_SetString( PyExc_ImportError, "Interpreter change detected - this module can only be loaded into one interpreter per process."); return -1; } return 0; } static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { if (allow_none || value != Py_None) { result = PyDict_SetItemString(moddict, to_name, value); } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); } else { result = -1; } return result; } static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; if (__Pyx_check_single_interpreter()) return NULL; if (__pyx_m) return __Pyx_NewRef(__pyx_m); modname = PyObject_GetAttrString(spec, "name"); if (unlikely(!modname)) goto bad; module = PyModule_NewObject(modname); Py_DECREF(modname); if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; return module; bad: Py_XDECREF(module); return NULL; } static CYTHON_SMALL_CODE int __pyx_pymod_exec_im2col_cython(PyObject *__pyx_pyinit_module) #endif #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; static PyThread_type_lock __pyx_t_3[8]; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; PyErr_SetString(PyExc_RuntimeError, "Module 'im2col_cython' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_im2col_cython(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("im2col_cython", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) #endif __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_b); __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_cython_runtime); if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_im2col_cython) { if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "im2col_cython")) { if (unlikely(PyDict_SetItemString(modules, "im2col_cython", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "im2col_cython.pyx":1 * import numpy as np # <<<<<<<<<<<<<< * cimport numpy as np * cimport cython */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":12 * np.float64_t * * def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, # <<<<<<<<<<<<<< * int field_width, int padding, int stride): * cdef int N = x.shape[0] */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_13im2col_cython_7im2col_cython, 0, __pyx_n_s_im2col_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_13im2col_cython_9im2col_cython, 0, __pyx_n_s_im2col_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_mdef_13im2col_cython_1im2col_cython, 0, __pyx_n_s_im2col_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); ((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_im2col_cython, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":57 * * * def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int field_height, int field_width, int padding, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_13im2col_cython_13col2im_cython, 0, __pyx_n_s_col2im_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_float32_t, __pyx_t_1) < 0) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_13im2col_cython_15col2im_cython, 0, __pyx_n_s_col2im_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_float64_t, __pyx_t_1) < 0) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_FusedFunction_New(&__pyx_mdef_13im2col_cython_3col2im_cython, 0, __pyx_n_s_col2im_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_empty_tuple); ((__pyx_FusedFunctionObject *) __pyx_t_1)->__signatures__ = __pyx_t_2; __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_col2im_cython, __pyx_t_1) < 0) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "im2col_cython.pyx":109 * * * def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, # <<<<<<<<<<<<<< * int HH, int WW, int pad, int stride): * cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_13im2col_cython_19col2im_6d_cython, 0, __pyx_n_s_col2im_6d_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_13im2col_cython_21col2im_6d_cython, 0, __pyx_n_s_col2im_6d_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_mdef_13im2col_cython_5col2im_6d_cython, 0, __pyx_n_s_col2im_6d_cython, NULL, __pyx_n_s_im2col_cython, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple); ((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_col2im_6d_cython, __pyx_t_2) < 0) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "im2col_cython.pyx":1 * import numpy as np # <<<<<<<<<<<<<< * cimport numpy as np * cimport cython */ __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":209 * info.obj = self * * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * def __dealloc__(array self): */ __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(2, 209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_array_type); /* "View.MemoryView":286 * return self.name * * cdef generic = Enum("") # <<<<<<<<<<<<<< * cdef strided = Enum("") # default * cdef indirect = Enum("") */ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(generic); __Pyx_DECREF_SET(generic, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":287 * * cdef generic = Enum("") * cdef strided = Enum("") # default # <<<<<<<<<<<<<< * cdef indirect = Enum("") * */ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(strided); __Pyx_DECREF_SET(strided, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":288 * cdef generic = Enum("") * cdef strided = Enum("") # default * cdef indirect = Enum("") # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect); __Pyx_DECREF_SET(indirect, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":291 * * * cdef contiguous = Enum("") # <<<<<<<<<<<<<< * cdef indirect_contiguous = Enum("") * */ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 291, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(contiguous); __Pyx_DECREF_SET(contiguous, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":292 * * cdef contiguous = Enum("") * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect_contiguous); __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":316 * * DEF THREAD_LOCKS_PREALLOCATED = 8 * cdef int __pyx_memoryview_thread_locks_used = 0 # <<<<<<<<<<<<<< * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [ * PyThread_allocate_lock(), */ __pyx_memoryview_thread_locks_used = 0; /* "View.MemoryView":317 * DEF THREAD_LOCKS_PREALLOCATED = 8 * cdef int __pyx_memoryview_thread_locks_used = 0 * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [ # <<<<<<<<<<<<<< * PyThread_allocate_lock(), * PyThread_allocate_lock(), */ __pyx_t_3[0] = PyThread_allocate_lock(); __pyx_t_3[1] = PyThread_allocate_lock(); __pyx_t_3[2] = PyThread_allocate_lock(); __pyx_t_3[3] = PyThread_allocate_lock(); __pyx_t_3[4] = PyThread_allocate_lock(); __pyx_t_3[5] = PyThread_allocate_lock(); __pyx_t_3[6] = PyThread_allocate_lock(); __pyx_t_3[7] = PyThread_allocate_lock(); memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_3, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); /* "View.MemoryView":549 * info.obj = self * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(2, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryview_type); /* "View.MemoryView":995 * return self.from_object * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(2, 995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryviewslice_type); /* "(tree fragment)":1 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): */ /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init im2col_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_CLEAR(__pyx_m); } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init im2col_cython"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if CYTHON_PEP489_MULTI_PHASE_INIT return (__pyx_m != NULL) ? 0 : -1; #elif PY_MAJOR_VERSION >= 3 return __pyx_m; #else return; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule(modname); if (!m) goto end; p = PyObject_GetAttrString(m, "RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* GetItemInt */ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* DictGetItem */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { PyObject *value; value = PyDict_GetItemWithError(d, key); if (unlikely(!value)) { if (!PyErr_Occurred()) { if (unlikely(PyTuple_Check(key))) { PyObject* args = PyTuple_Pack(1, key); if (likely(args)) { PyErr_SetObject(PyExc_KeyError, args); Py_DECREF(args); } } else { PyErr_SetObject(PyExc_KeyError, key); } } return NULL; } Py_INCREF(value); return value; } #endif /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); int flags = PyCFunction_GET_FLAGS(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); } else { return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); } } #endif /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = __Pyx_PyFrame_GetLocalsplus(f); for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif #endif /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif if (likely(PyCFunction_Check(func))) { if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } if (PyType_Check(type)) { #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } } __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *instance_class = NULL; if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { int is_subclass = PyObject_IsSubclass(instance_class, type); if (!is_subclass) { instance_class = NULL; } else if (unlikely(is_subclass == -1)) { goto bad; } else { type = instance_class; } } } if (!instance_class) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyObject_Call(type, args, NULL); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } if (cause) { PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; } else if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { #if CYTHON_COMPILING_IN_PYPY PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #else PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* UnicodeAsUCS4 */ static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) { Py_ssize_t length; #if CYTHON_PEP393_ENABLED length = PyUnicode_GET_LENGTH(x); if (likely(length == 1)) { return PyUnicode_READ_CHAR(x, 0); } #else length = PyUnicode_GET_SIZE(x); if (likely(length == 1)) { return PyUnicode_AS_UNICODE(x)[0]; } #if Py_UNICODE_SIZE == 2 else if (PyUnicode_GET_SIZE(x) == 2) { Py_UCS4 high_val = PyUnicode_AS_UNICODE(x)[0]; if (high_val >= 0xD800 && high_val <= 0xDBFF) { Py_UCS4 low_val = PyUnicode_AS_UNICODE(x)[1]; if (low_val >= 0xDC00 && low_val <= 0xDFFF) { return 0x10000 + (((high_val & ((1<<10)-1)) << 10) | (low_val & ((1<<10)-1))); } } } #endif #endif PyErr_Format(PyExc_ValueError, "only single character unicode strings can be converted to Py_UCS4, " "got length %" CYTHON_FORMAT_SSIZE_T "d", length); return (Py_UCS4)-1; } /* object_ord */ static long __Pyx__PyObject_Ord(PyObject* c) { Py_ssize_t size; if (PyBytes_Check(c)) { size = PyBytes_GET_SIZE(c); if (likely(size == 1)) { return (unsigned char) PyBytes_AS_STRING(c)[0]; } #if PY_MAJOR_VERSION < 3 } else if (PyUnicode_Check(c)) { return (long)__Pyx_PyUnicode_AsPy_UCS4(c); #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) } else if (PyByteArray_Check(c)) { size = PyByteArray_GET_SIZE(c); if (likely(size == 1)) { return (unsigned char) PyByteArray_AS_STRING(c)[0]; } #endif } else { PyErr_Format(PyExc_TypeError, "ord() expected string of length 1, but %.200s found", c->ob_type->tp_name); return (long)(Py_UCS4)-1; } PyErr_Format(PyExc_TypeError, "ord() expected a character, but string of length %zd found", size); return (long)(Py_UCS4)-1; } /* SetItemInt */ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); Py_DECREF(j); return r; } static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { PyObject* old = PyList_GET_ITEM(o, n); Py_INCREF(v); PyList_SET_ITEM(o, n, v); Py_DECREF(old); return 1; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_ass_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return -1; PyErr_Clear(); } } return m->sq_ass_item(o, i, v); } } #else #if CYTHON_COMPILING_IN_PYPY if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) #else if (is_list || PySequence_Check(o)) #endif { return PySequence_SetItem(o, i, v); } #endif return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { PyObject *exc_value, *exc_tb; exc_value = tstate->curexc_value; exc_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; Py_DECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_tb); return 0; } else { return -1; } } return 0; #else if (unlikely(PyErr_Occurred())) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { PyErr_Clear(); return 0; } else { return -1; } } return 0; #endif } /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) #else if (likely(PyCFunction_Check(func))) #endif { if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* PyObjectGetMethod */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { PyObject *attr; #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP PyTypeObject *tp = Py_TYPE(obj); PyObject *descr; descrgetfunc f = NULL; PyObject **dictptr, *dict; int meth_found = 0; assert (*method == NULL); if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; } if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { return 0; } descr = _PyType_Lookup(tp, name); if (likely(descr != NULL)) { Py_INCREF(descr); #if PY_MAJOR_VERSION >= 3 #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) #endif #else #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr))) #endif #endif { meth_found = 1; } else { f = Py_TYPE(descr)->tp_descr_get; if (f != NULL && PyDescr_IsData(descr)) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } } } dictptr = _PyObject_GetDictPtr(obj); if (dictptr != NULL && (dict = *dictptr) != NULL) { Py_INCREF(dict); attr = __Pyx_PyDict_GetItemStr(dict, name); if (attr != NULL) { Py_INCREF(attr); Py_DECREF(dict); Py_XDECREF(descr); goto try_unpack; } Py_DECREF(dict); } if (meth_found) { *method = descr; return 1; } if (f != NULL) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } if (descr != NULL) { *method = descr; return 0; } PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'%.50s' object has no attribute '%U'", tp->tp_name, name); #else "'%.50s' object has no attribute '%.400s'", tp->tp_name, PyString_AS_STRING(name)); #endif return 0; #else attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; #endif try_unpack: #if CYTHON_UNPACK_METHODS if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { PyObject *function = PyMethod_GET_FUNCTION(attr); Py_INCREF(function); Py_DECREF(attr); *method = function; return 1; } #endif *method = attr; return 0; } /* PyObjectCallMethod0 */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { PyObject *method = NULL, *result = NULL; int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); if (likely(is_method)) { result = __Pyx_PyObject_CallOneArg(method, obj); Py_DECREF(method); return result; } if (unlikely(!method)) goto bad; result = __Pyx_PyObject_CallNoArg(method); Py_DECREF(method); bad: return result; } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } else { return __Pyx_IterFinish(); } return 0; } /* RaiseNoneIterError */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } /* UnpackTupleError */ static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { if (t == Py_None) { __Pyx_RaiseNoneNotIterableError(); } else if (PyTuple_GET_SIZE(t) < index) { __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); } else { __Pyx_RaiseTooManyValuesError(index); } } /* UnpackTuple2 */ static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { PyObject *value1 = NULL, *value2 = NULL; #if CYTHON_COMPILING_IN_PYPY value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; #else value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); #endif if (decref_tuple) { Py_DECREF(tuple); } *pvalue1 = value1; *pvalue2 = value2; return 0; #if CYTHON_COMPILING_IN_PYPY bad: Py_XDECREF(value1); Py_XDECREF(value2); if (decref_tuple) { Py_XDECREF(tuple); } return -1; #endif } static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int has_known_size, int decref_tuple) { Py_ssize_t index; PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; iternextfunc iternext; iter = PyObject_GetIter(tuple); if (unlikely(!iter)) goto bad; if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } iternext = Py_TYPE(iter)->tp_iternext; value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; Py_DECREF(iter); *pvalue1 = value1; *pvalue2 = value2; return 0; unpacking_failed: if (!has_known_size && __Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); bad: Py_XDECREF(iter); Py_XDECREF(value1); Py_XDECREF(value2); if (decref_tuple) { Py_XDECREF(tuple); } return -1; } /* dict_iter */ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, Py_ssize_t* p_orig_length, int* p_source_is_dict) { is_dict = is_dict || likely(PyDict_CheckExact(iterable)); *p_source_is_dict = is_dict; if (is_dict) { #if !CYTHON_COMPILING_IN_PYPY *p_orig_length = PyDict_Size(iterable); Py_INCREF(iterable); return iterable; #elif PY_MAJOR_VERSION >= 3 static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; PyObject **pp = NULL; if (method_name) { const char *name = PyUnicode_AsUTF8(method_name); if (strcmp(name, "iteritems") == 0) pp = &py_items; else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; else if (strcmp(name, "itervalues") == 0) pp = &py_values; if (pp) { if (!*pp) { *pp = PyUnicode_FromString(name + 4); if (!*pp) return NULL; } method_name = *pp; } } #endif } *p_orig_length = 0; if (method_name) { PyObject* iter; iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); if (!iterable) return NULL; #if !CYTHON_COMPILING_IN_PYPY if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) return iterable; #endif iter = PyObject_GetIter(iterable); Py_DECREF(iterable); return iter; } return PyObject_GetIter(iterable); } static CYTHON_INLINE int __Pyx_dict_iter_next( PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { PyObject* next_item; #if !CYTHON_COMPILING_IN_PYPY if (source_is_dict) { PyObject *key, *value; if (unlikely(orig_length != PyDict_Size(iter_obj))) { PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); return -1; } if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { return 0; } if (pitem) { PyObject* tuple = PyTuple_New(2); if (unlikely(!tuple)) { return -1; } Py_INCREF(key); Py_INCREF(value); PyTuple_SET_ITEM(tuple, 0, key); PyTuple_SET_ITEM(tuple, 1, value); *pitem = tuple; } else { if (pkey) { Py_INCREF(key); *pkey = key; } if (pvalue) { Py_INCREF(value); *pvalue = value; } } return 1; } else if (PyTuple_CheckExact(iter_obj)) { Py_ssize_t pos = *ppos; if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; *ppos = pos + 1; next_item = PyTuple_GET_ITEM(iter_obj, pos); Py_INCREF(next_item); } else if (PyList_CheckExact(iter_obj)) { Py_ssize_t pos = *ppos; if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; *ppos = pos + 1; next_item = PyList_GET_ITEM(iter_obj, pos); Py_INCREF(next_item); } else #endif { next_item = PyIter_Next(iter_obj); if (unlikely(!next_item)) { return __Pyx_IterFinish(); } } if (pitem) { *pitem = next_item; } else if (pkey && pvalue) { if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) return -1; } else if (pkey) { *pkey = next_item; } else { *pvalue = next_item; } return 1; } /* PyObjectCall2Args */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args, *result = NULL; #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyFunction_FastCall(function, args, 2); } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyCFunction_FastCall(function, args, 2); } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(arg1); PyTuple_SET_ITEM(args, 0, arg1); Py_INCREF(arg2); PyTuple_SET_ITEM(args, 1, arg2); Py_INCREF(function); result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); done: return result; } /* ArgTypeTest */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } else if (exact) { #if PY_MAJOR_VERSION == 2 if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(__Pyx_TypeCheck(obj, type))) return 1; } PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", name, type->tp_name, Py_TYPE(obj)->tp_name); return 0; } /* IsLittleEndian */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) { union { uint32_t u32; uint8_t u8[4]; } S; S.u32 = 0x01020304; return S.u8[0] == 4; } /* BufferFormatCheck */ static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, __Pyx_TypeInfo* type) { stack[0].field = &ctx->root; stack[0].parent_offset = 0; ctx->root.type = type; ctx->root.name = "buffer dtype"; ctx->root.offset = 0; ctx->head = stack; ctx->head->field = &ctx->root; ctx->fmt_offset = 0; ctx->head->parent_offset = 0; ctx->new_packmode = '@'; ctx->enc_packmode = '@'; ctx->new_count = 1; ctx->enc_count = 0; ctx->enc_type = 0; ctx->is_complex = 0; ctx->is_valid_array = 0; ctx->struct_alignment = 0; while (type->typegroup == 'S') { ++ctx->head; ctx->head->field = type->fields; ctx->head->parent_offset = 0; type = type->fields->type; } } static int __Pyx_BufFmt_ParseNumber(const char** ts) { int count; const char* t = *ts; if (*t < '0' || *t > '9') { return -1; } else { count = *t++ - '0'; while (*t >= '0' && *t <= '9') { count *= 10; count += *t++ - '0'; } } *ts = t; return count; } static int __Pyx_BufFmt_ExpectNumber(const char **ts) { int number = __Pyx_BufFmt_ParseNumber(ts); if (number == -1) PyErr_Format(PyExc_ValueError,\ "Does not understand character buffer dtype format string ('%c')", **ts); return number; } static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { PyErr_Format(PyExc_ValueError, "Unexpected format string character: '%c'", ch); } static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { switch (ch) { case '?': return "'bool'"; case 'c': return "'char'"; case 'b': return "'signed char'"; case 'B': return "'unsigned char'"; case 'h': return "'short'"; case 'H': return "'unsigned short'"; case 'i': return "'int'"; case 'I': return "'unsigned int'"; case 'l': return "'long'"; case 'L': return "'unsigned long'"; case 'q': return "'long long'"; case 'Q': return "'unsigned long long'"; case 'f': return (is_complex ? "'complex float'" : "'float'"); case 'd': return (is_complex ? "'complex double'" : "'double'"); case 'g': return (is_complex ? "'complex long double'" : "'long double'"); case 'T': return "a struct"; case 'O': return "Python object"; case 'P': return "a pointer"; case 's': case 'p': return "a string"; case 0: return "end"; default: return "unparseable format string"; } } static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { switch (ch) { case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; case 'h': case 'H': return 2; case 'i': case 'I': case 'l': case 'L': return 4; case 'q': case 'Q': return 8; case 'f': return (is_complex ? 8 : 4); case 'd': return (is_complex ? 16 : 8); case 'g': { PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); return 0; } case 'O': case 'P': return sizeof(void*); default: __Pyx_BufFmt_RaiseUnexpectedChar(ch); return 0; } } static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { switch (ch) { case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; case 'h': case 'H': return sizeof(short); case 'i': case 'I': return sizeof(int); case 'l': case 'L': return sizeof(long); #ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(PY_LONG_LONG); #endif case 'f': return sizeof(float) * (is_complex ? 2 : 1); case 'd': return sizeof(double) * (is_complex ? 2 : 1); case 'g': return sizeof(long double) * (is_complex ? 2 : 1); case 'O': case 'P': return sizeof(void*); default: { __Pyx_BufFmt_RaiseUnexpectedChar(ch); return 0; } } } typedef struct { char c; short x; } __Pyx_st_short; typedef struct { char c; int x; } __Pyx_st_int; typedef struct { char c; long x; } __Pyx_st_long; typedef struct { char c; float x; } __Pyx_st_float; typedef struct { char c; double x; } __Pyx_st_double; typedef struct { char c; long double x; } __Pyx_st_longdouble; typedef struct { char c; void *x; } __Pyx_st_void_p; #ifdef HAVE_LONG_LONG typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; #endif static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { switch (ch) { case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); #ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); #endif case 'f': return sizeof(__Pyx_st_float) - sizeof(float); case 'd': return sizeof(__Pyx_st_double) - sizeof(double); case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); default: __Pyx_BufFmt_RaiseUnexpectedChar(ch); return 0; } } /* These are for computing the padding at the end of the struct to align on the first member of the struct. This will probably the same as above, but we don't have any guarantees. */ typedef struct { short x; char c; } __Pyx_pad_short; typedef struct { int x; char c; } __Pyx_pad_int; typedef struct { long x; char c; } __Pyx_pad_long; typedef struct { float x; char c; } __Pyx_pad_float; typedef struct { double x; char c; } __Pyx_pad_double; typedef struct { long double x; char c; } __Pyx_pad_longdouble; typedef struct { void *x; char c; } __Pyx_pad_void_p; #ifdef HAVE_LONG_LONG typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; #endif static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { switch (ch) { case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); #ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); #endif case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); default: __Pyx_BufFmt_RaiseUnexpectedChar(ch); return 0; } } static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { switch (ch) { case 'c': return 'H'; case 'b': case 'h': case 'i': case 'l': case 'q': case 's': case 'p': return 'I'; case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': return 'U'; case 'f': case 'd': case 'g': return (is_complex ? 'C' : 'R'); case 'O': return 'O'; case 'P': return 'P'; default: { __Pyx_BufFmt_RaiseUnexpectedChar(ch); return 0; } } } static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { if (ctx->head == NULL || ctx->head->field == &ctx->root) { const char* expected; const char* quote; if (ctx->head == NULL) { expected = "end"; quote = ""; } else { expected = ctx->head->field->type->name; quote = "'"; } PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch, expected %s%s%s but got %s", quote, expected, quote, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); } else { __Pyx_StructField* field = ctx->head->field; __Pyx_StructField* parent = (ctx->head - 1)->field; PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), parent->type->name, field->name); } } static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { char group; size_t size, offset, arraysize = 1; if (ctx->enc_type == 0) return 0; if (ctx->head->field->type->arraysize[0]) { int i, ndim = 0; if (ctx->enc_type == 's' || ctx->enc_type == 'p') { ctx->is_valid_array = ctx->head->field->type->ndim == 1; ndim = 1; if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { PyErr_Format(PyExc_ValueError, "Expected a dimension of size %zu, got %zu", ctx->head->field->type->arraysize[0], ctx->enc_count); return -1; } } if (!ctx->is_valid_array) { PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", ctx->head->field->type->ndim, ndim); return -1; } for (i = 0; i < ctx->head->field->type->ndim; i++) { arraysize *= ctx->head->field->type->arraysize[i]; } ctx->is_valid_array = 0; ctx->enc_count = 1; } group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); do { __Pyx_StructField* field = ctx->head->field; __Pyx_TypeInfo* type = field->type; if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); } else { size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); } if (ctx->enc_packmode == '@') { size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); size_t align_mod_offset; if (align_at == 0) return -1; align_mod_offset = ctx->fmt_offset % align_at; if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; if (ctx->struct_alignment == 0) ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, ctx->is_complex); } if (type->size != size || type->typegroup != group) { if (type->typegroup == 'C' && type->fields != NULL) { size_t parent_offset = ctx->head->parent_offset + field->offset; ++ctx->head; ctx->head->field = type->fields; ctx->head->parent_offset = parent_offset; continue; } if ((type->typegroup == 'H' || group == 'H') && type->size == size) { } else { __Pyx_BufFmt_RaiseExpected(ctx); return -1; } } offset = ctx->head->parent_offset + field->offset; if (ctx->fmt_offset != offset) { PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); return -1; } ctx->fmt_offset += size; if (arraysize) ctx->fmt_offset += (arraysize - 1) * size; --ctx->enc_count; while (1) { if (field == &ctx->root) { ctx->head = NULL; if (ctx->enc_count != 0) { __Pyx_BufFmt_RaiseExpected(ctx); return -1; } break; } ctx->head->field = ++field; if (field->type == NULL) { --ctx->head; field = ctx->head->field; continue; } else if (field->type->typegroup == 'S') { size_t parent_offset = ctx->head->parent_offset + field->offset; if (field->type->fields->type == NULL) continue; field = field->type->fields; ++ctx->head; ctx->head->field = field; ctx->head->parent_offset = parent_offset; break; } else { break; } } } while (ctx->enc_count); ctx->enc_type = 0; ctx->is_complex = 0; return 0; } static PyObject * __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) { const char *ts = *tsp; int i = 0, number, ndim; ++ts; if (ctx->new_count != 1) { PyErr_SetString(PyExc_ValueError, "Cannot handle repeated arrays in format string"); return NULL; } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ndim = ctx->head->field->type->ndim; while (*ts && *ts != ')') { switch (*ts) { case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; default: break; } number = __Pyx_BufFmt_ExpectNumber(&ts); if (number == -1) return NULL; if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) return PyErr_Format(PyExc_ValueError, "Expected a dimension of size %zu, got %d", ctx->head->field->type->arraysize[i], number); if (*ts != ',' && *ts != ')') return PyErr_Format(PyExc_ValueError, "Expected a comma in format string, got '%c'", *ts); if (*ts == ',') ts++; i++; } if (i != ndim) return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", ctx->head->field->type->ndim, i); if (!*ts) { PyErr_SetString(PyExc_ValueError, "Unexpected end of format string, expected ')'"); return NULL; } ctx->is_valid_array = 1; ctx->new_count = 1; *tsp = ++ts; return Py_None; } static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { int got_Z = 0; while (1) { switch(*ts) { case 0: if (ctx->enc_type != 0 && ctx->head == NULL) { __Pyx_BufFmt_RaiseExpected(ctx); return NULL; } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; if (ctx->head != NULL) { __Pyx_BufFmt_RaiseExpected(ctx); return NULL; } return ts; case ' ': case '\r': case '\n': ++ts; break; case '<': if (!__Pyx_Is_Little_Endian()) { PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); return NULL; } ctx->new_packmode = '='; ++ts; break; case '>': case '!': if (__Pyx_Is_Little_Endian()) { PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); return NULL; } ctx->new_packmode = '='; ++ts; break; case '=': case '@': case '^': ctx->new_packmode = *ts++; break; case 'T': { const char* ts_after_sub; size_t i, struct_count = ctx->new_count; size_t struct_alignment = ctx->struct_alignment; ctx->new_count = 1; ++ts; if (*ts != '{') { PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); return NULL; } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->enc_type = 0; ctx->enc_count = 0; ctx->struct_alignment = 0; ++ts; ts_after_sub = ts; for (i = 0; i != struct_count; ++i) { ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); if (!ts_after_sub) return NULL; } ts = ts_after_sub; if (struct_alignment) ctx->struct_alignment = struct_alignment; } break; case '}': { size_t alignment = ctx->struct_alignment; ++ts; if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->enc_type = 0; if (alignment && ctx->fmt_offset % alignment) { ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); } } return ts; case 'x': if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->fmt_offset += ctx->new_count; ctx->new_count = 1; ctx->enc_count = 0; ctx->enc_type = 0; ctx->enc_packmode = ctx->new_packmode; ++ts; break; case 'Z': got_Z = 1; ++ts; if (*ts != 'f' && *ts != 'd' && *ts != 'g') { __Pyx_BufFmt_RaiseUnexpectedChar('Z'); return NULL; } CYTHON_FALLTHROUGH; case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': case 'O': case 'p': if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { ctx->enc_count += ctx->new_count; ctx->new_count = 1; got_Z = 0; ++ts; break; } CYTHON_FALLTHROUGH; case 's': if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->enc_count = ctx->new_count; ctx->enc_packmode = ctx->new_packmode; ctx->enc_type = *ts; ctx->is_complex = got_Z; ++ts; ctx->new_count = 1; got_Z = 0; break; case ':': ++ts; while(*ts != ':') ++ts; ++ts; break; case '(': if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; break; default: { int number = __Pyx_BufFmt_ExpectNumber(&ts); if (number == -1) return NULL; ctx->new_count = (size_t)number; } } } } /* BufferGetAndValidate */ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { if (unlikely(info->buf == NULL)) return; if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; __Pyx_ReleaseBuffer(info); } static void __Pyx_ZeroBuffer(Py_buffer* buf) { buf->buf = NULL; buf->obj = NULL; buf->strides = __Pyx_zeros; buf->shape = __Pyx_zeros; buf->suboffsets = __Pyx_minusones; } static int __Pyx__GetBufferAndValidate( Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack) { buf->buf = NULL; if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { __Pyx_ZeroBuffer(buf); return -1; } if (unlikely(buf->ndim != nd)) { PyErr_Format(PyExc_ValueError, "Buffer has wrong number of dimensions (expected %d, got %d)", nd, buf->ndim); goto fail; } if (!cast) { __Pyx_BufFmt_Context ctx; __Pyx_BufFmt_Init(&ctx, stack, dtype); if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; } if (unlikely((size_t)buf->itemsize != dtype->size)) { PyErr_Format(PyExc_ValueError, "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", buf->itemsize, (buf->itemsize > 1) ? "s" : "", dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); goto fail; } if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; return 0; fail:; __Pyx_SafeReleaseBuffer(buf); return -1; } /* None */ static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; } static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { PyObject **dictptr = NULL; Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; if (offset) { #if CYTHON_COMPILING_IN_CPYTHON dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); #else dictptr = _PyObject_GetDictPtr(obj); #endif } return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; } static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { PyObject *dict = Py_TYPE(obj)->tp_dict; if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) return 0; return obj_dict_version == __Pyx_get_object_dict_version(obj); } #endif /* GetModuleGlobalName */ #if CYTHON_USE_DICT_VERSIONS static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) #else static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) #endif { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } else if (unlikely(PyErr_Occurred())) { return NULL; } #else result = PyDict_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } #endif #else result = PyObject_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } PyErr_Clear(); #endif return __Pyx_GetBuiltinName(name); } /* ExtTypeTest */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (likely(__Pyx_TypeCheck(obj, type))) return 1; PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", Py_TYPE(obj)->tp_name, type->tp_name); return 0; } /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { PyObject *runerr; Py_ssize_t key_value; PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; if (unlikely(!(m && m->sq_item))) { PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); return NULL; } key_value = __Pyx_PyIndex_AsSsize_t(index); if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); } if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { PyErr_Clear(); PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); } return NULL; } static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; if (likely(m && m->mp_subscript)) { return m->mp_subscript(obj, key); } return __Pyx_PyObject_GetIndex(obj, key); } #endif /* GetTopmostException */ #if CYTHON_USE_EXC_INFO_STACK static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate) { _PyErr_StackItem *exc_info = tstate->exc_info; while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && exc_info->previous_item != NULL) { exc_info = exc_info->previous_item; } return exc_info; } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); *type = exc_info->exc_type; *value = exc_info->exc_value; *tb = exc_info->exc_traceback; #else *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; #endif Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = type; exc_info->exc_value = value; exc_info->exc_traceback = tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } #endif /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; icurexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; if (unlikely(PyTuple_Check(err))) return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #endif /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) #endif { PyObject *local_type, *local_value, *local_tb; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE #if CYTHON_USE_EXC_INFO_STACK { _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = local_type; exc_info->exc_value = local_value; exc_info->exc_traceback = local_tb; } #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else if (s1 == s2) { return (equals == Py_EQ); } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) return (equals == Py_NE); ps1 = PyBytes_AS_STRING(s1); ps2 = PyBytes_AS_STRING(s2); if (ps1[0] != ps2[0]) { return (equals == Py_NE); } else if (length == 1) { return (equals == Py_EQ); } else { int result; #if CYTHON_USE_UNICODE_INTERNALS Py_hash_t hash1, hash2; hash1 = ((PyBytesObject*)s1)->ob_shash; hash2 = ((PyBytesObject*)s2)->ob_shash; if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { return (equals == Py_NE); } #endif result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { return (equals == Py_NE); } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { return (equals == Py_NE); } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } #endif } /* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else #if PY_MAJOR_VERSION < 3 PyObject* owned_ref = NULL; #endif int s1_is_unicode, s2_is_unicode; if (s1 == s2) { goto return_eq; } s1_is_unicode = PyUnicode_CheckExact(s1); s2_is_unicode = PyUnicode_CheckExact(s2); #if PY_MAJOR_VERSION < 3 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { owned_ref = PyUnicode_FromObject(s2); if (unlikely(!owned_ref)) return -1; s2 = owned_ref; s2_is_unicode = 1; } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { owned_ref = PyUnicode_FromObject(s1); if (unlikely(!owned_ref)) return -1; s1 = owned_ref; s1_is_unicode = 1; } else if (((!s2_is_unicode) & (!s1_is_unicode))) { return __Pyx_PyBytes_Equals(s1, s2, equals); } #endif if (s1_is_unicode & s2_is_unicode) { Py_ssize_t length; int kind; void *data1, *data2; if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) return -1; length = __Pyx_PyUnicode_GET_LENGTH(s1); if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } #if CYTHON_USE_UNICODE_INTERNALS { Py_hash_t hash1, hash2; #if CYTHON_PEP393_ENABLED hash1 = ((PyASCIIObject*)s1)->hash; hash2 = ((PyASCIIObject*)s2)->hash; #else hash1 = ((PyUnicodeObject*)s1)->hash; hash2 = ((PyUnicodeObject*)s2)->hash; #endif if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { goto return_ne; } } #endif kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; } data1 = __Pyx_PyUnicode_DATA(s1); data2 = __Pyx_PyUnicode_DATA(s2); if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { goto return_ne; } else if (length == 1) { goto return_eq; } else { int result = memcmp(data1, data2, (size_t)(length * kind)); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & s2_is_unicode) { goto return_ne; } else if ((s2 == Py_None) & s1_is_unicode) { goto return_ne; } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } return_eq: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ); return_ne: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_NE); #endif } /* None */ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) { Py_ssize_t q = a / b; Py_ssize_t r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* GetAttr */ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { #if CYTHON_USE_TYPE_SLOTS #if PY_MAJOR_VERSION >= 3 if (likely(PyUnicode_Check(n))) #else if (likely(PyString_Check(n))) #endif return __Pyx_PyObject_GetAttrStr(o, n); #endif return PyObject_GetAttr(o, n); } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } if (unlikely(stop <= start)) return __Pyx_NewRef(__pyx_empty_unicode); length = stop - start; cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* GetAttr3 */ static PyObject *__Pyx_GetAttr3Default(PyObject *d) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; __Pyx_PyErr_Clear(); Py_INCREF(d); return d; } static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { PyObject *r = __Pyx_GetAttr(o, n); return (likely(r)) ? r : __Pyx_GetAttr3Default(d); } /* SwapException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = *type; exc_info->exc_value = *value; exc_info->exc_traceback = *tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; #endif *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); PyErr_SetExcInfo(*type, *value, *tb); *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #endif /* Import */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; #if PY_MAJOR_VERSION < 3 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (!py_import) goto bad; #endif if (from_list) list = from_list; else { empty_list = PyList_New(0); if (!empty_list) goto bad; list = empty_list; } global_dict = PyModule_GetDict(__pyx_m); if (!global_dict) goto bad; empty_dict = PyDict_New(); if (!empty_dict) goto bad; { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_MAJOR_VERSION < 3 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, level); #endif } } bad: #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { while (a) { a = a->tp_base; if (a == b) return 1; } return b == &PyBaseObject_Type; } static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (a == b) return 1; mro = a->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(a, b); } #if PY_MAJOR_VERSION == 2 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { PyObject *exception, *value, *tb; int res; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&exception, &value, &tb); res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } if (!res) { res = PyObject_IsSubclass(err, exc_type2); if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } } __Pyx_ErrRestore(exception, value, tb); return res; } #else static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; if (!res) { res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); } return res; } #endif static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; assert(PyExceptionClass_Check(exc_type)); n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i= 0 || (x^b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("add", return NULL) result = ((double)a) + (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } #endif /* None */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* HasAttr */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { PyObject *r; if (unlikely(!__Pyx_PyBaseString_Check(n))) { PyErr_SetString(PyExc_TypeError, "hasattr(): attribute name must be string"); return -1; } r = __Pyx_GetAttr(o, n); if (unlikely(!r)) { PyErr_Clear(); return 0; } else { Py_DECREF(r); return 1; } } /* PyObject_GenericGetAttrNoDict */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'%.50s' object has no attribute '%U'", tp->tp_name, attr_name); #else "'%.50s' object has no attribute '%.400s'", tp->tp_name, PyString_AS_STRING(attr_name)); #endif return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { PyObject *descr; PyTypeObject *tp = Py_TYPE(obj); if (unlikely(!PyString_Check(attr_name))) { return PyObject_GenericGetAttr(obj, attr_name); } assert(!tp->tp_dictoffset); descr = _PyType_Lookup(tp, attr_name); if (unlikely(!descr)) { return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); } Py_INCREF(descr); #if PY_MAJOR_VERSION < 3 if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) #endif { descrgetfunc f = Py_TYPE(descr)->tp_descr_get; if (unlikely(f)) { PyObject *res = f(descr, obj, (PyObject *)tp); Py_DECREF(descr); return res; } } return descr; } #endif /* PyObject_GenericGetAttr */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { return PyObject_GenericGetAttr(obj, attr_name); } return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); } #endif /* SetVTable */ static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); #else PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); #endif if (!ob) goto bad; if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) goto bad; Py_DECREF(ob); return 0; bad: Py_XDECREF(ob); return -1; } /* PyObjectGetAttrStrNoError */ static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) __Pyx_PyErr_Clear(); } static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { PyObject *result; #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); } #endif result = __Pyx_PyObject_GetAttrStr(obj, attr_name); if (unlikely(!result)) { __Pyx_PyObject_GetAttrStr_ClearAttributeError(); } return result; } /* SetupReduce */ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); if (likely(name_attr)) { ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); } else { ret = -1; } if (unlikely(ret < 0)) { PyErr_Clear(); ret = 0; } Py_XDECREF(name_attr); return ret; } static int __Pyx_setup_reduce(PyObject* type_obj) { int ret = 0; PyObject *object_reduce = NULL; PyObject *object_reduce_ex = NULL; PyObject *reduce = NULL; PyObject *reduce_ex = NULL; PyObject *reduce_cython = NULL; PyObject *setstate = NULL; PyObject *setstate_cython = NULL; #if CYTHON_USE_PYTYPE_LOOKUP if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; #else if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; #endif #if CYTHON_USE_PYTYPE_LOOKUP object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #else object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #endif reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; if (reduce_ex == object_reduce_ex) { #if CYTHON_USE_PYTYPE_LOOKUP object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #else object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #endif reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); if (likely(reduce_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (reduce == object_reduce || PyErr_Occurred()) { goto __PYX_BAD; } setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); if (!setstate) PyErr_Clear(); if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); if (likely(setstate_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (!setstate || PyErr_Occurred()) { goto __PYX_BAD; } } PyType_Modified((PyTypeObject*)type_obj); } } goto __PYX_GOOD; __PYX_BAD: if (!PyErr_Occurred()) PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); ret = -1; __PYX_GOOD: #if !CYTHON_USE_PYTYPE_LOOKUP Py_XDECREF(object_reduce); Py_XDECREF(object_reduce_ex); #endif Py_XDECREF(reduce); Py_XDECREF(reduce_ex); Py_XDECREF(reduce_cython); Py_XDECREF(setstate); Py_XDECREF(setstate_cython); return ret; } /* TypeImport */ #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size) { PyObject *result = 0; char warning[200]; Py_ssize_t basicsize; #ifdef Py_LIMITED_API PyObject *py_basicsize; #endif result = PyObject_GetAttrString(module, class_name); if (!result) goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, "%.200s.%.200s is not a type object", module_name, class_name); goto bad; } #ifndef Py_LIMITED_API basicsize = ((PyTypeObject *)result)->tp_basicsize; #else py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); if (!py_basicsize) goto bad; basicsize = PyLong_AsSsize_t(py_basicsize); Py_DECREF(py_basicsize); py_basicsize = 0; if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) goto bad; #endif if ((size_t)basicsize < size) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); goto bad; } if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); goto bad; } else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { PyOS_snprintf(warning, sizeof(warning), "%s.%s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; } return (PyTypeObject *)result; bad: Py_XDECREF(result); return NULL; } #endif /* FetchCommonType */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); if (!fake_module) return NULL; Py_INCREF(fake_module); cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); if (cached_type) { if (!PyType_Check((PyObject*)cached_type)) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s is not a type object", type->tp_name); goto bad; } if (cached_type->tp_basicsize != type->tp_basicsize) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s has the wrong size, try recompiling", type->tp_name); goto bad; } } else { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); if (PyType_Ready(type) < 0) goto bad; if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) goto bad; Py_INCREF(type); cached_type = type; } done: Py_DECREF(fake_module); return cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } /* CythonFunctionShared */ #include static PyObject * __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) { if (unlikely(op->func_doc == NULL)) { if (op->func.m_ml->ml_doc) { #if PY_MAJOR_VERSION >= 3 op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); #else op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); #endif if (unlikely(op->func_doc == NULL)) return NULL; } else { Py_INCREF(Py_None); return Py_None; } } Py_INCREF(op->func_doc); return op->func_doc; } static int __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) { PyObject *tmp = op->func_doc; if (value == NULL) { value = Py_None; } Py_INCREF(value); op->func_doc = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { if (unlikely(op->func_name == NULL)) { #if PY_MAJOR_VERSION >= 3 op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); #else op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); #endif if (unlikely(op->func_name == NULL)) return NULL; } Py_INCREF(op->func_name); return op->func_name; } static int __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } tmp = op->func_name; Py_INCREF(value); op->func_name = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { Py_INCREF(op->func_qualname); return op->func_qualname; } static int __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } tmp = op->func_qualname; Py_INCREF(value); op->func_qualname = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) { PyObject *self; self = m->func_closure; if (self == NULL) self = Py_None; Py_INCREF(self); return self; } static PyObject * __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { if (unlikely(op->func_dict == NULL)) { op->func_dict = PyDict_New(); if (unlikely(op->func_dict == NULL)) return NULL; } Py_INCREF(op->func_dict); return op->func_dict; } static int __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) { PyObject *tmp; if (unlikely(value == NULL)) { PyErr_SetString(PyExc_TypeError, "function's dictionary may not be deleted"); return -1; } if (unlikely(!PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "setting function's dictionary to a non-dict"); return -1; } tmp = op->func_dict; Py_INCREF(value); op->func_dict = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { Py_INCREF(op->func_globals); return op->func_globals; } static PyObject * __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { Py_INCREF(Py_None); return Py_None; } static PyObject * __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { PyObject* result = (op->func_code) ? op->func_code : Py_None; Py_INCREF(result); return result; } static int __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { int result = 0; PyObject *res = op->defaults_getter((PyObject *) op); if (unlikely(!res)) return -1; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS op->defaults_tuple = PyTuple_GET_ITEM(res, 0); Py_INCREF(op->defaults_tuple); op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); Py_INCREF(op->defaults_kwdict); #else op->defaults_tuple = PySequence_ITEM(res, 0); if (unlikely(!op->defaults_tuple)) result = -1; else { op->defaults_kwdict = PySequence_ITEM(res, 1); if (unlikely(!op->defaults_kwdict)) result = -1; } #endif Py_DECREF(res); return result; } static int __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { PyObject* tmp; if (!value) { value = Py_None; } else if (value != Py_None && !PyTuple_Check(value)) { PyErr_SetString(PyExc_TypeError, "__defaults__ must be set to a tuple object"); return -1; } Py_INCREF(value); tmp = op->defaults_tuple; op->defaults_tuple = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { PyObject* result = op->defaults_tuple; if (unlikely(!result)) { if (op->defaults_getter) { if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; result = op->defaults_tuple; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { PyObject* tmp; if (!value) { value = Py_None; } else if (value != Py_None && !PyDict_Check(value)) { PyErr_SetString(PyExc_TypeError, "__kwdefaults__ must be set to a dict object"); return -1; } Py_INCREF(value); tmp = op->defaults_kwdict; op->defaults_kwdict = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { PyObject* result = op->defaults_kwdict; if (unlikely(!result)) { if (op->defaults_getter) { if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; result = op->defaults_kwdict; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { PyObject* tmp; if (!value || value == Py_None) { value = NULL; } else if (!PyDict_Check(value)) { PyErr_SetString(PyExc_TypeError, "__annotations__ must be set to a dict object"); return -1; } Py_XINCREF(value); tmp = op->func_annotations; op->func_annotations = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { PyObject* result = op->func_annotations; if (unlikely(!result)) { result = PyDict_New(); if (unlikely(!result)) return NULL; op->func_annotations = result; } Py_INCREF(result); return result; } static PyGetSetDef __pyx_CyFunction_getsets[] = { {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, {0, 0, 0, 0, 0} }; static PyMemberDef __pyx_CyFunction_members[] = { {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, {0, 0, 0, 0, 0} }; static PyObject * __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(m->func.m_ml->ml_name); #else return PyString_FromString(m->func.m_ml->ml_name); #endif } static PyMethodDef __pyx_CyFunction_methods[] = { {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, {0, 0, 0, 0} }; #if PY_VERSION_HEX < 0x030500A0 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) #else #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) #endif static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { if (unlikely(op == NULL)) return NULL; op->flags = flags; __Pyx_CyFunction_weakreflist(op) = NULL; op->func.m_ml = ml; op->func.m_self = (PyObject *) op; Py_XINCREF(closure); op->func_closure = closure; Py_XINCREF(module); op->func.m_module = module; op->func_dict = NULL; op->func_name = NULL; Py_INCREF(qualname); op->func_qualname = qualname; op->func_doc = NULL; op->func_classobj = NULL; op->func_globals = globals; Py_INCREF(op->func_globals); Py_XINCREF(code); op->func_code = code; op->defaults_pyobjects = 0; op->defaults_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; op->defaults_getter = NULL; op->func_annotations = NULL; return (PyObject *) op; } static int __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) { Py_CLEAR(m->func_closure); Py_CLEAR(m->func.m_module); Py_CLEAR(m->func_dict); Py_CLEAR(m->func_name); Py_CLEAR(m->func_qualname); Py_CLEAR(m->func_doc); Py_CLEAR(m->func_globals); Py_CLEAR(m->func_code); Py_CLEAR(m->func_classobj); Py_CLEAR(m->defaults_tuple); Py_CLEAR(m->defaults_kwdict); Py_CLEAR(m->func_annotations); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_XDECREF(pydefaults[i]); PyObject_Free(m->defaults); m->defaults = NULL; } return 0; } static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) { if (__Pyx_CyFunction_weakreflist(m) != NULL) PyObject_ClearWeakRefs((PyObject *) m); __Pyx_CyFunction_clear(m); PyObject_GC_Del(m); } static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) { PyObject_GC_UnTrack(m); __Pyx__CyFunction_dealloc(m); } static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) { Py_VISIT(m->func_closure); Py_VISIT(m->func.m_module); Py_VISIT(m->func_dict); Py_VISIT(m->func_name); Py_VISIT(m->func_qualname); Py_VISIT(m->func_doc); Py_VISIT(m->func_globals); Py_VISIT(m->func_code); Py_VISIT(m->func_classobj); Py_VISIT(m->defaults_tuple); Py_VISIT(m->defaults_kwdict); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_VISIT(pydefaults[i]); } return 0; } static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) { #if PY_MAJOR_VERSION < 3 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { Py_INCREF(func); return func; } if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { if (type == NULL) type = (PyObject *)(Py_TYPE(obj)); return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); } if (obj == Py_None) obj = NULL; #endif return __Pyx_PyMethod_New(func, obj, type); } static PyObject* __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromFormat("", op->func_qualname, (void *)op); #else return PyString_FromFormat("", PyString_AsString(op->func_qualname), (void *)op); #endif } static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction meth = f->m_ml->ml_meth; Py_ssize_t size; switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { case METH_VARARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) return (*meth)(self, arg); break; case METH_VARARGS | METH_KEYWORDS: return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); case METH_NOARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { size = PyTuple_GET_SIZE(arg); if (likely(size == 0)) return (*meth)(self, NULL); PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); return NULL; } break; case METH_O: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { size = PyTuple_GET_SIZE(arg); if (likely(size == 1)) { PyObject *result, *arg0; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS arg0 = PyTuple_GET_ITEM(arg, 0); #else arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; #endif result = (*meth)(self, arg0); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(arg0); #endif return result; } PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); return NULL; } break; default: PyErr_SetString(PyExc_SystemError, "Bad call flags in " "__Pyx_CyFunction_Call. METH_OLDARGS is no " "longer supported!"); return NULL; } PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", f->m_ml->ml_name); return NULL; } static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); } static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { PyObject *result; __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { Py_ssize_t argc; PyObject *new_args; PyObject *self; argc = PyTuple_GET_SIZE(args); new_args = PyTuple_GetSlice(args, 1, argc); if (unlikely(!new_args)) return NULL; self = PyTuple_GetItem(args, 0); if (unlikely(!self)) { Py_DECREF(new_args); return NULL; } result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); Py_DECREF(new_args); } else { result = __Pyx_CyFunction_Call(func, args, kw); } return result; } static PyTypeObject __pyx_CyFunctionType_type = { PyVarObject_HEAD_INIT(0, 0) "cython_function_or_method", sizeof(__pyx_CyFunctionObject), 0, (destructor) __Pyx_CyFunction_dealloc, 0, 0, 0, #if PY_MAJOR_VERSION < 3 0, #else 0, #endif (reprfunc) __Pyx_CyFunction_repr, 0, 0, 0, 0, __Pyx_CyFunction_CallAsMethod, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, 0, (traverseproc) __Pyx_CyFunction_traverse, (inquiry) __Pyx_CyFunction_clear, 0, #if PY_VERSION_HEX < 0x030500A0 offsetof(__pyx_CyFunctionObject, func_weakreflist), #else offsetof(PyCFunctionObject, m_weakreflist), #endif 0, 0, __pyx_CyFunction_methods, __pyx_CyFunction_members, __pyx_CyFunction_getsets, 0, 0, __Pyx_CyFunction_descr_get, 0, offsetof(__pyx_CyFunctionObject, func_dict), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 0, #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, #endif }; static int __pyx_CyFunction_init(void) { __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); if (unlikely(__pyx_CyFunctionType == NULL)) { return -1; } return 0; } static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults = PyObject_Malloc(size); if (unlikely(!m->defaults)) return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; m->defaults_size = size; return m->defaults; } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_tuple = tuple; Py_INCREF(tuple); } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_kwdict = dict; Py_INCREF(dict); } static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->func_annotations = dict; Py_INCREF(dict); } /* FusedFunction */ static PyObject * __pyx_FusedFunction_New(PyMethodDef *ml, int flags, PyObject *qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject *code) { PyObject *op = __Pyx_CyFunction_Init( PyObject_GC_New(__pyx_CyFunctionObject, __pyx_FusedFunctionType), ml, flags, qualname, closure, module, globals, code ); if (likely(op)) { __pyx_FusedFunctionObject *fusedfunc = (__pyx_FusedFunctionObject *) op; fusedfunc->__signatures__ = NULL; fusedfunc->type = NULL; fusedfunc->self = NULL; PyObject_GC_Track(op); } return op; } static void __pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self) { PyObject_GC_UnTrack(self); Py_CLEAR(self->self); Py_CLEAR(self->type); Py_CLEAR(self->__signatures__); __Pyx__CyFunction_dealloc((__pyx_CyFunctionObject *) self); } static int __pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self, visitproc visit, void *arg) { Py_VISIT(self->self); Py_VISIT(self->type); Py_VISIT(self->__signatures__); return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg); } static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self) { Py_CLEAR(self->self); Py_CLEAR(self->type); Py_CLEAR(self->__signatures__); return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self); } static PyObject * __pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type) { __pyx_FusedFunctionObject *func, *meth; func = (__pyx_FusedFunctionObject *) self; if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) { Py_INCREF(self); return self; } if (obj == Py_None) obj = NULL; meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_New( ((PyCFunctionObject *) func)->m_ml, ((__pyx_CyFunctionObject *) func)->flags, ((__pyx_CyFunctionObject *) func)->func_qualname, ((__pyx_CyFunctionObject *) func)->func_closure, ((PyCFunctionObject *) func)->m_module, ((__pyx_CyFunctionObject *) func)->func_globals, ((__pyx_CyFunctionObject *) func)->func_code); if (!meth) return NULL; if (func->func.defaults) { PyObject **pydefaults; int i; if (!__Pyx_CyFunction_InitDefaults((PyObject*)meth, func->func.defaults_size, func->func.defaults_pyobjects)) { Py_XDECREF((PyObject*)meth); return NULL; } memcpy(meth->func.defaults, func->func.defaults, func->func.defaults_size); pydefaults = __Pyx_CyFunction_Defaults(PyObject *, meth); for (i = 0; i < meth->func.defaults_pyobjects; i++) Py_XINCREF(pydefaults[i]); } Py_XINCREF(func->func.func_classobj); meth->func.func_classobj = func->func.func_classobj; Py_XINCREF(func->__signatures__); meth->__signatures__ = func->__signatures__; Py_XINCREF(type); meth->type = type; Py_XINCREF(func->func.defaults_tuple); meth->func.defaults_tuple = func->func.defaults_tuple; if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD) obj = type; Py_XINCREF(obj); meth->self = obj; return (PyObject *) meth; } static PyObject * _obj_to_str(PyObject *obj) { if (PyType_Check(obj)) return PyObject_GetAttr(obj, __pyx_n_s_name_2); else return PyObject_Str(obj); } static PyObject * __pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx) { PyObject *signature = NULL; PyObject *unbound_result_func; PyObject *result_func = NULL; if (self->__signatures__ == NULL) { PyErr_SetString(PyExc_TypeError, "Function is not fused"); return NULL; } if (PyTuple_Check(idx)) { PyObject *list = PyList_New(0); Py_ssize_t n = PyTuple_GET_SIZE(idx); PyObject *sep = NULL; int i; if (unlikely(!list)) return NULL; for (i = 0; i < n; i++) { int ret; PyObject *string; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS PyObject *item = PyTuple_GET_ITEM(idx, i); #else PyObject *item = PySequence_ITEM(idx, i); if (unlikely(!item)) goto __pyx_err; #endif string = _obj_to_str(item); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(item); #endif if (unlikely(!string)) goto __pyx_err; ret = PyList_Append(list, string); Py_DECREF(string); if (unlikely(ret < 0)) goto __pyx_err; } sep = PyUnicode_FromString("|"); if (likely(sep)) signature = PyUnicode_Join(sep, list); __pyx_err: ; Py_DECREF(list); Py_XDECREF(sep); } else { signature = _obj_to_str(idx); } if (!signature) return NULL; unbound_result_func = PyObject_GetItem(self->__signatures__, signature); if (unbound_result_func) { if (self->self || self->type) { __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func; Py_CLEAR(unbound->func.func_classobj); Py_XINCREF(self->func.func_classobj); unbound->func.func_classobj = self->func.func_classobj; result_func = __pyx_FusedFunction_descr_get(unbound_result_func, self->self, self->type); } else { result_func = unbound_result_func; Py_INCREF(result_func); } } Py_DECREF(signature); Py_XDECREF(unbound_result_func); return result_func; } static PyObject * __pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD && !((__pyx_FusedFunctionObject *) func)->__signatures__); if (cyfunc->flags & __Pyx_CYFUNCTION_CCLASS && !static_specialized) { return __Pyx_CyFunction_CallAsMethod(func, args, kw); } else { return __Pyx_CyFunction_Call(func, args, kw); } } static PyObject * __pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw) { __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func; Py_ssize_t argc = PyTuple_GET_SIZE(args); PyObject *new_args = NULL; __pyx_FusedFunctionObject *new_func = NULL; PyObject *result = NULL; PyObject *self = NULL; int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD; int is_classmethod = binding_func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD; if (binding_func->self) { Py_ssize_t i; new_args = PyTuple_New(argc + 1); if (!new_args) return NULL; self = binding_func->self; #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_INCREF(self); #endif Py_INCREF(self); PyTuple_SET_ITEM(new_args, 0, self); for (i = 0; i < argc; i++) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS PyObject *item = PyTuple_GET_ITEM(args, i); Py_INCREF(item); #else PyObject *item = PySequence_ITEM(args, i); if (unlikely(!item)) goto bad; #endif PyTuple_SET_ITEM(new_args, i + 1, item); } args = new_args; } else if (binding_func->type) { if (argc < 1) { PyErr_SetString(PyExc_TypeError, "Need at least one argument, 0 given."); return NULL; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS self = PyTuple_GET_ITEM(args, 0); #else self = PySequence_ITEM(args, 0); if (unlikely(!self)) return NULL; #endif } if (self && !is_classmethod && !is_staticmethod) { int is_instance = PyObject_IsInstance(self, binding_func->type); if (unlikely(!is_instance)) { PyErr_Format(PyExc_TypeError, "First argument should be of type %.200s, got %.200s.", ((PyTypeObject *) binding_func->type)->tp_name, self->ob_type->tp_name); goto bad; } else if (unlikely(is_instance == -1)) { goto bad; } } #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_XDECREF(self); self = NULL; #endif if (binding_func->__signatures__) { PyObject *tup; if (is_staticmethod && binding_func->func.flags & __Pyx_CYFUNCTION_CCLASS) { tup = PyTuple_Pack(3, args, kw == NULL ? Py_None : kw, binding_func->func.defaults_tuple); if (unlikely(!tup)) goto bad; new_func = (__pyx_FusedFunctionObject *) __Pyx_CyFunction_CallMethod( func, binding_func->__signatures__, tup, NULL); } else { tup = PyTuple_Pack(4, binding_func->__signatures__, args, kw == NULL ? Py_None : kw, binding_func->func.defaults_tuple); if (unlikely(!tup)) goto bad; new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL); } Py_DECREF(tup); if (unlikely(!new_func)) goto bad; Py_XINCREF(binding_func->func.func_classobj); Py_CLEAR(new_func->func.func_classobj); new_func->func.func_classobj = binding_func->func.func_classobj; func = (PyObject *) new_func; } result = __pyx_FusedFunction_callfunction(func, args, kw); bad: #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_XDECREF(self); #endif Py_XDECREF(new_args); Py_XDECREF((PyObject *) new_func); return result; } static PyMemberDef __pyx_FusedFunction_members[] = { {(char *) "__signatures__", T_OBJECT, offsetof(__pyx_FusedFunctionObject, __signatures__), READONLY, 0}, {0, 0, 0, 0, 0}, }; static PyMappingMethods __pyx_FusedFunction_mapping_methods = { 0, (binaryfunc) __pyx_FusedFunction_getitem, 0, }; static PyTypeObject __pyx_FusedFunctionType_type = { PyVarObject_HEAD_INIT(0, 0) "fused_cython_function", sizeof(__pyx_FusedFunctionObject), 0, (destructor) __pyx_FusedFunction_dealloc, 0, 0, 0, #if PY_MAJOR_VERSION < 3 0, #else 0, #endif 0, 0, 0, &__pyx_FusedFunction_mapping_methods, 0, (ternaryfunc) __pyx_FusedFunction_call, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, 0, (traverseproc) __pyx_FusedFunction_traverse, (inquiry) __pyx_FusedFunction_clear, 0, 0, 0, 0, 0, __pyx_FusedFunction_members, __pyx_CyFunction_getsets, &__pyx_CyFunctionType_type, 0, __pyx_FusedFunction_descr_get, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 0, #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, #endif }; static int __pyx_FusedFunction_init(void) { __pyx_FusedFunctionType_type.tp_base = __pyx_CyFunctionType; __pyx_FusedFunctionType = __Pyx_FetchCommonType(&__pyx_FusedFunctionType_type); if (__pyx_FusedFunctionType == NULL) { return -1; } return 0; } /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif if (unlikely(!__pyx_cython_runtime)) { return c_line; } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { __PYX_PY_DICT_LOOKUP_IF_MODIFIED( use_cline, *cython_runtime_dict, __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) } else #endif { PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); if (use_cline_obj) { use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; Py_DECREF(use_cline_obj); } else { PyErr_Clear(); use_cline = NULL; } } if (!use_cline) { c_line = 0; PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); return c_line; } #endif /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; PyThreadState *tstate = __Pyx_PyThreadState_Current; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( tstate, /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags); if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags); PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); return -1; } static void __Pyx_ReleaseBuffer(Py_buffer *view) { PyObject *obj = view->obj; if (!obj) return; if (PyObject_CheckBuffer(obj)) { PyBuffer_Release(view); return; } if ((0)) {} view->obj = NULL; Py_DECREF(obj); } #endif /* MemviewSliceIsContig */ static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) { int i, index, step, start; Py_ssize_t itemsize = mvs.memview->view.itemsize; if (order == 'F') { step = 1; start = 0; } else { step = -1; start = ndim - 1; } for (i = 0; i < ndim; i++) { index = start + step * i; if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) return 0; itemsize *= mvs.shape[index]; } return 1; } /* OverlappingSlices */ static void __pyx_get_array_memory_extents(__Pyx_memviewslice *slice, void **out_start, void **out_end, int ndim, size_t itemsize) { char *start, *end; int i; start = end = slice->data; for (i = 0; i < ndim; i++) { Py_ssize_t stride = slice->strides[i]; Py_ssize_t extent = slice->shape[i]; if (extent == 0) { *out_start = *out_end = start; return; } else { if (stride > 0) end += stride * (extent - 1); else start += stride * (extent - 1); } } *out_start = start; *out_end = end + itemsize; } static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, __Pyx_memviewslice *slice2, int ndim, size_t itemsize) { void *start1, *end1, *start2, *end2; __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); return (start1 < end2) && (start2 < end1); } /* Capsule */ static CYTHON_INLINE PyObject * __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) { PyObject *cobj; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(p, sig, NULL); #else cobj = PyCObject_FromVoidPtr(p, NULL); #endif return cobj; } /* TypeInfoCompare */ static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b) { int i; if (!a || !b) return 0; if (a == b) return 1; if (a->size != b->size || a->typegroup != b->typegroup || a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { if (a->typegroup == 'H' || b->typegroup == 'H') { return a->size == b->size; } else { return 0; } } if (a->ndim) { for (i = 0; i < a->ndim; i++) if (a->arraysize[i] != b->arraysize[i]) return 0; } if (a->typegroup == 'S') { if (a->flags != b->flags) return 0; if (a->fields || b->fields) { if (!(a->fields && b->fields)) return 0; for (i = 0; a->fields[i].type && b->fields[i].type; i++) { __Pyx_StructField *field_a = a->fields + i; __Pyx_StructField *field_b = b->fields + i; if (field_a->offset != field_b->offset || !__pyx_typeinfo_cmp(field_a->type, field_b->type)) return 0; } return !a->fields[i].type && !b->fields[i].type; } } return 1; } /* MemviewSliceValidateAndInit */ static int __pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) { if (buf->shape[dim] <= 1) return 1; if (buf->strides) { if (spec & __Pyx_MEMVIEW_CONTIG) { if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { if (unlikely(buf->strides[dim] != sizeof(void *))) { PyErr_Format(PyExc_ValueError, "Buffer is not indirectly contiguous " "in dimension %d.", dim); goto fail; } } else if (unlikely(buf->strides[dim] != buf->itemsize)) { PyErr_SetString(PyExc_ValueError, "Buffer and memoryview are not contiguous " "in the same dimension."); goto fail; } } if (spec & __Pyx_MEMVIEW_FOLLOW) { Py_ssize_t stride = buf->strides[dim]; if (stride < 0) stride = -stride; if (unlikely(stride < buf->itemsize)) { PyErr_SetString(PyExc_ValueError, "Buffer and memoryview are not contiguous " "in the same dimension."); goto fail; } } } else { if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { PyErr_Format(PyExc_ValueError, "C-contiguous buffer is not contiguous in " "dimension %d", dim); goto fail; } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { PyErr_Format(PyExc_ValueError, "C-contiguous buffer is not indirect in " "dimension %d", dim); goto fail; } else if (unlikely(buf->suboffsets)) { PyErr_SetString(PyExc_ValueError, "Buffer exposes suboffsets but no strides"); goto fail; } } return 1; fail: return 0; } static int __pyx_check_suboffsets(Py_buffer *buf, int dim, CYTHON_UNUSED int ndim, int spec) { if (spec & __Pyx_MEMVIEW_DIRECT) { if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { PyErr_Format(PyExc_ValueError, "Buffer not compatible with direct access " "in dimension %d.", dim); goto fail; } } if (spec & __Pyx_MEMVIEW_PTR) { if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { PyErr_Format(PyExc_ValueError, "Buffer is not indirectly accessible " "in dimension %d.", dim); goto fail; } } return 1; fail: return 0; } static int __pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) { int i; if (c_or_f_flag & __Pyx_IS_F_CONTIG) { Py_ssize_t stride = 1; for (i = 0; i < ndim; i++) { if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { PyErr_SetString(PyExc_ValueError, "Buffer not fortran contiguous."); goto fail; } stride = stride * buf->shape[i]; } } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { Py_ssize_t stride = 1; for (i = ndim - 1; i >- 1; i--) { if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { PyErr_SetString(PyExc_ValueError, "Buffer not C contiguous."); goto fail; } stride = stride * buf->shape[i]; } } return 1; fail: return 0; } static int __Pyx_ValidateAndInit_memviewslice( int *axes_specs, int c_or_f_flag, int buf_flags, int ndim, __Pyx_TypeInfo *dtype, __Pyx_BufFmt_StackElem stack[], __Pyx_memviewslice *memviewslice, PyObject *original_obj) { struct __pyx_memoryview_obj *memview, *new_memview; __Pyx_RefNannyDeclarations Py_buffer *buf; int i, spec = 0, retval = -1; __Pyx_BufFmt_Context ctx; int from_memoryview = __pyx_memoryview_check(original_obj); __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) original_obj)->typeinfo)) { memview = (struct __pyx_memoryview_obj *) original_obj; new_memview = NULL; } else { memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( original_obj, buf_flags, 0, dtype); new_memview = memview; if (unlikely(!memview)) goto fail; } buf = &memview->view; if (unlikely(buf->ndim != ndim)) { PyErr_Format(PyExc_ValueError, "Buffer has wrong number of dimensions (expected %d, got %d)", ndim, buf->ndim); goto fail; } if (new_memview) { __Pyx_BufFmt_Init(&ctx, stack, dtype); if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; } if (unlikely((unsigned) buf->itemsize != dtype->size)) { PyErr_Format(PyExc_ValueError, "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", buf->itemsize, (buf->itemsize > 1) ? "s" : "", dtype->name, dtype->size, (dtype->size > 1) ? "s" : ""); goto fail; } if (buf->len > 0) { for (i = 0; i < ndim; i++) { spec = axes_specs[i]; if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) goto fail; if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) goto fail; } if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) goto fail; } if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, new_memview != NULL) == -1)) { goto fail; } retval = 0; goto no_fail; fail: Py_XDECREF(new_memview); retval = -1; no_fail: __Pyx_RefNannyFinishContext(); return retval; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsdsdsdsdsds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; return result; __pyx_fail: result.memview = NULL; result.data = NULL; return result; } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* Declarations */ #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); } #else static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return x + y*(__pyx_t_float_complex)_Complex_I; } #endif #else static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { __pyx_t_float_complex z; z.real = x; z.imag = y; return z; } #endif /* Arithmetic */ #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); } static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real + b.real; z.imag = a.imag + b.imag; return z; } static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real - b.real; z.imag = a.imag - b.imag; return z; } static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real * b.real - a.imag * b.imag; z.imag = a.real * b.imag + a.imag * b.real; return z; } #if 1 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { if (b.imag == 0) { return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); } else if (fabsf(b.real) >= fabsf(b.imag)) { if (b.real == 0 && b.imag == 0) { return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); } else { float r = b.imag / b.real; float s = (float)(1.0) / (b.real + b.imag * r); return __pyx_t_float_complex_from_parts( (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); } } else { float r = b.real / b.imag; float s = (float)(1.0) / (b.imag + b.real * r); return __pyx_t_float_complex_from_parts( (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); } } #else static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { if (b.imag == 0) { return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); } else { float denom = b.real * b.real + b.imag * b.imag; return __pyx_t_float_complex_from_parts( (a.real * b.real + a.imag * b.imag) / denom, (a.imag * b.real - a.real * b.imag) / denom); } } #endif static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { __pyx_t_float_complex z; z.real = -a.real; z.imag = -a.imag; return z; } static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { return (a.real == 0) && (a.imag == 0); } static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { __pyx_t_float_complex z; z.real = a.real; z.imag = -a.imag; return z; } #if 1 static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { #if !defined(HAVE_HYPOT) || defined(_MSC_VER) return sqrtf(z.real*z.real + z.imag*z.imag); #else return hypotf(z.real, z.imag); #endif } static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; float r, lnr, theta, z_r, z_theta; if (b.imag == 0 && b.real == (int)b.real) { if (b.real < 0) { float denom = a.real * a.real + a.imag * a.imag; a.real = a.real / denom; a.imag = -a.imag / denom; b.real = -b.real; } switch ((int)b.real) { case 0: z.real = 1; z.imag = 0; return z; case 1: return a; case 2: return __Pyx_c_prod_float(a, a); case 3: z = __Pyx_c_prod_float(a, a); return __Pyx_c_prod_float(z, a); case 4: z = __Pyx_c_prod_float(a, a); return __Pyx_c_prod_float(z, z); } } if (a.imag == 0) { if (a.real == 0) { return a; } else if (b.imag == 0) { z.real = powf(a.real, b.real); z.imag = 0; return z; } else if (a.real > 0) { r = a.real; theta = 0; } else { r = -a.real; theta = atan2f(0.0, -1.0); } } else { r = __Pyx_c_abs_float(a); theta = atan2f(a.imag, a.real); } lnr = logf(r); z_r = expf(lnr * b.real - theta * b.imag); z_theta = theta * b.real + lnr * b.imag; z.real = z_r * cosf(z_theta); z.imag = z_r * sinf(z_theta); return z; } #endif #endif /* Declarations */ #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); } #else static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return x + y*(__pyx_t_double_complex)_Complex_I; } #endif #else static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { __pyx_t_double_complex z; z.real = x; z.imag = y; return z; } #endif /* Arithmetic */ #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); } static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real + b.real; z.imag = a.imag + b.imag; return z; } static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real - b.real; z.imag = a.imag - b.imag; return z; } static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real * b.real - a.imag * b.imag; z.imag = a.real * b.imag + a.imag * b.real; return z; } #if 1 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { if (b.imag == 0) { return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); } else if (fabs(b.real) >= fabs(b.imag)) { if (b.real == 0 && b.imag == 0) { return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); } else { double r = b.imag / b.real; double s = (double)(1.0) / (b.real + b.imag * r); return __pyx_t_double_complex_from_parts( (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); } } else { double r = b.real / b.imag; double s = (double)(1.0) / (b.imag + b.real * r); return __pyx_t_double_complex_from_parts( (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); } } #else static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { if (b.imag == 0) { return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); } else { double denom = b.real * b.real + b.imag * b.imag; return __pyx_t_double_complex_from_parts( (a.real * b.real + a.imag * b.imag) / denom, (a.imag * b.real - a.real * b.imag) / denom); } } #endif static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { __pyx_t_double_complex z; z.real = -a.real; z.imag = -a.imag; return z; } static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { return (a.real == 0) && (a.imag == 0); } static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { __pyx_t_double_complex z; z.real = a.real; z.imag = -a.imag; return z; } #if 1 static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { #if !defined(HAVE_HYPOT) || defined(_MSC_VER) return sqrt(z.real*z.real + z.imag*z.imag); #else return hypot(z.real, z.imag); #endif } static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; double r, lnr, theta, z_r, z_theta; if (b.imag == 0 && b.real == (int)b.real) { if (b.real < 0) { double denom = a.real * a.real + a.imag * a.imag; a.real = a.real / denom; a.imag = -a.imag / denom; b.real = -b.real; } switch ((int)b.real) { case 0: z.real = 1; z.imag = 0; return z; case 1: return a; case 2: return __Pyx_c_prod_double(a, a); case 3: z = __Pyx_c_prod_double(a, a); return __Pyx_c_prod_double(z, a); case 4: z = __Pyx_c_prod_double(a, a); return __Pyx_c_prod_double(z, z); } } if (a.imag == 0) { if (a.real == 0) { return a; } else if (b.imag == 0) { z.real = pow(a.real, b.real); z.imag = 0; return z; } else if (a.real > 0) { r = a.real; theta = 0; } else { r = -a.real; theta = atan2(0.0, -1.0); } } else { r = __Pyx_c_abs_double(a); theta = atan2(a.imag, a.real); } lnr = log(r); z_r = exp(lnr * b.real - theta * b.imag); z_theta = theta * b.real + lnr * b.imag; z.real = z_r * cos(z_theta); z.imag = z_r * sin(z_theta); return z; } #endif #endif /* MemviewSliceCopyTemplate */ static __Pyx_memviewslice __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, const char *mode, int ndim, size_t sizeof_dtype, int contig_flag, int dtype_is_object) { __Pyx_RefNannyDeclarations int i; __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } }; struct __pyx_memoryview_obj *from_memview = from_mvs->memview; Py_buffer *buf = &from_memview->view; PyObject *shape_tuple = NULL; PyObject *temp_int = NULL; struct __pyx_array_obj *array_obj = NULL; struct __pyx_memoryview_obj *memview_obj = NULL; __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); for (i = 0; i < ndim; i++) { if (unlikely(from_mvs->suboffsets[i] >= 0)) { PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " "indirect dimensions (axis %d)", i); goto fail; } } shape_tuple = PyTuple_New(ndim); if (unlikely(!shape_tuple)) { goto fail; } __Pyx_GOTREF(shape_tuple); for(i = 0; i < ndim; i++) { temp_int = PyInt_FromSsize_t(from_mvs->shape[i]); if(unlikely(!temp_int)) { goto fail; } else { PyTuple_SET_ITEM(shape_tuple, i, temp_int); temp_int = NULL; } } array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL); if (unlikely(!array_obj)) { goto fail; } __Pyx_GOTREF(array_obj); memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( (PyObject *) array_obj, contig_flag, dtype_is_object, from_mvs->memview->typeinfo); if (unlikely(!memview_obj)) goto fail; if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) goto fail; if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, dtype_is_object) < 0)) goto fail; goto no_fail; fail: __Pyx_XDECREF(new_mvs.memview); new_mvs.memview = NULL; new_mvs.data = NULL; no_fail: __Pyx_XDECREF(shape_tuple); __Pyx_XDECREF(temp_int); __Pyx_XDECREF(array_obj); __Pyx_RefNannyFinishContext(); return new_mvs; } /* MemviewSliceInit */ static int __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, int ndim, __Pyx_memviewslice *memviewslice, int memview_is_new_reference) { __Pyx_RefNannyDeclarations int i, retval=-1; Py_buffer *buf = &memview->view; __Pyx_RefNannySetupContext("init_memviewslice", 0); if (unlikely(memviewslice->memview || memviewslice->data)) { PyErr_SetString(PyExc_ValueError, "memviewslice is already initialized!"); goto fail; } if (buf->strides) { for (i = 0; i < ndim; i++) { memviewslice->strides[i] = buf->strides[i]; } } else { Py_ssize_t stride = buf->itemsize; for (i = ndim - 1; i >= 0; i--) { memviewslice->strides[i] = stride; stride *= buf->shape[i]; } } for (i = 0; i < ndim; i++) { memviewslice->shape[i] = buf->shape[i]; if (buf->suboffsets) { memviewslice->suboffsets[i] = buf->suboffsets[i]; } else { memviewslice->suboffsets[i] = -1; } } memviewslice->memview = memview; memviewslice->data = (char *)buf->buf; if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { Py_INCREF(memview); } retval = 0; goto no_fail; fail: memviewslice->memview = 0; memviewslice->data = 0; retval = -1; no_fail: __Pyx_RefNannyFinishContext(); return retval; } #ifndef Py_NO_RETURN #define Py_NO_RETURN #endif static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN { va_list vargs; char msg[200]; #ifdef HAVE_STDARG_PROTOTYPES va_start(vargs, fmt); #else va_start(vargs); #endif vsnprintf(msg, 200, fmt, vargs); va_end(vargs); Py_FatalError(msg); } static CYTHON_INLINE int __pyx_add_acquisition_count_locked(__pyx_atomic_int *acquisition_count, PyThread_type_lock lock) { int result; PyThread_acquire_lock(lock, 1); result = (*acquisition_count)++; PyThread_release_lock(lock); return result; } static CYTHON_INLINE int __pyx_sub_acquisition_count_locked(__pyx_atomic_int *acquisition_count, PyThread_type_lock lock) { int result; PyThread_acquire_lock(lock, 1); result = (*acquisition_count)--; PyThread_release_lock(lock); return result; } static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) { int first_time; struct __pyx_memoryview_obj *memview = memslice->memview; if (unlikely(!memview || (PyObject *) memview == Py_None)) return; if (unlikely(__pyx_get_slice_count(memview) < 0)) __pyx_fatalerror("Acquisition count is %d (line %d)", __pyx_get_slice_count(memview), lineno); first_time = __pyx_add_acquisition_count(memview) == 0; if (unlikely(first_time)) { if (have_gil) { Py_INCREF((PyObject *) memview); } else { PyGILState_STATE _gilstate = PyGILState_Ensure(); Py_INCREF((PyObject *) memview); PyGILState_Release(_gilstate); } } } static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) { int last_time; struct __pyx_memoryview_obj *memview = memslice->memview; if (unlikely(!memview || (PyObject *) memview == Py_None)) { memslice->memview = NULL; return; } if (unlikely(__pyx_get_slice_count(memview) <= 0)) __pyx_fatalerror("Acquisition count is %d (line %d)", __pyx_get_slice_count(memview), lineno); last_time = __pyx_sub_acquisition_count(memview) == 1; memslice->data = NULL; if (unlikely(last_time)) { if (have_gil) { Py_CLEAR(memslice->memview); } else { PyGILState_STATE _gilstate = PyGILState_Ensure(); Py_CLEAR(memslice->memview); PyGILState_Release(_gilstate); } } else { memslice->memview = NULL; } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* BytesContains */ static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) { const Py_ssize_t length = PyBytes_GET_SIZE(bytes); char* char_start = PyBytes_AS_STRING(bytes); return memchr(char_start, (unsigned char)character, (size_t)length) != NULL; } /* ImportNumPyArray */ static PyObject* __Pyx__ImportNumPyArray(void) { PyObject *numpy_module, *ndarray_object = NULL; numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0); if (likely(numpy_module)) { ndarray_object = PyObject_GetAttrString(numpy_module, "ndarray"); Py_DECREF(numpy_module); } if (unlikely(!ndarray_object)) { PyErr_Clear(); } if (unlikely(!ndarray_object || !PyObject_TypeCheck(ndarray_object, &PyType_Type))) { Py_XDECREF(ndarray_object); Py_INCREF(Py_None); ndarray_object = Py_None; } return ndarray_object; } static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) { if (unlikely(!__pyx_numpy_ndarray)) { __pyx_numpy_ndarray = __Pyx__ImportNumPyArray(); } Py_INCREF(__pyx_numpy_ndarray); return __pyx_numpy_ndarray; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CIntFromPy */ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(char) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (char) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (char) 0; case 1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0]) case 2: if (8 * sizeof(char) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) { return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); } } break; case 3: if (8 * sizeof(char) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) { return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); } } break; case 4: if (8 * sizeof(char) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) { return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (char) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(char) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (char) 0; case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(char, digit, +digits[0]) case -2: if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; case 2: if (8 * sizeof(char) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; case -3: if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; case 3: if (8 * sizeof(char) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; case -4: if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; case 4: if (8 * sizeof(char) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); } } break; } #endif if (sizeof(char) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else char val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (char) -1; } } else { char val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (char) -1; val = __Pyx_PyInt_As_char(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to char"); return (char) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to char"); return (char) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #if !CYTHON_PEP393_ENABLED static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; } #else static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (likely(PyUnicode_IS_ASCII(o))) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif } #endif #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { return __Pyx_PyUnicode_AsStringAndSize(o, length); } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { int retval; if (unlikely(!x)) return -1; retval = __Pyx_PyObject_IsTrue(x); Py_DECREF(x); return retval; } static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(result)) { if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "__int__ returned non-int (type %.200s). " "The ability to return an instance of a strict subclass of int " "is deprecated, and may be removed in a future version of Python.", Py_TYPE(result)->tp_name)) { Py_DECREF(result); return NULL; } return result; } #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", type_name, type_name, Py_TYPE(result)->tp_name); Py_DECREF(result); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x) || PyLong_Check(x))) #else if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; res = m->nb_long(x); } #else if (likely(m && m->nb_int)) { name = "int"; res = m->nb_int(x); } #endif #else if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { res = PyNumber_Int(x); } #endif if (likely(res)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else if (unlikely(!PyLong_CheckExact(res))) { #endif return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(b); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ ================================================ FILE: cs231n/assignment2/cs231n/im2col_cython.pyx ================================================ import numpy as np cimport numpy as np cimport cython # DTYPE = np.float64 # ctypedef np.float64_t DTYPE_t ctypedef fused DTYPE_t: np.float32_t np.float64_t def im2col_cython(np.ndarray[DTYPE_t, ndim=4] x, int field_height, int field_width, int padding, int stride): cdef int N = x.shape[0] cdef int C = x.shape[1] cdef int H = x.shape[2] cdef int W = x.shape[3] cdef int HH = (H + 2 * padding - field_height) / stride + 1 cdef int WW = (W + 2 * padding - field_width) / stride + 1 cdef int p = padding cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.pad(x, ((0, 0), (0, 0), (p, p), (p, p)), mode='constant') cdef np.ndarray[DTYPE_t, ndim=2] cols = np.zeros( (C * field_height * field_width, N * HH * WW), dtype=x.dtype) # Moving the inner loop to a C function with no bounds checking works, but does # not seem to help performance in any measurable way. im2col_cython_inner(cols, x_padded, N, C, H, W, HH, WW, field_height, field_width, padding, stride) return cols @cython.boundscheck(False) cdef int im2col_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, np.ndarray[DTYPE_t, ndim=4] x_padded, int N, int C, int H, int W, int HH, int WW, int field_height, int field_width, int padding, int stride) except? -1: cdef int c, ii, jj, row, yy, xx, i, col for c in range(C): for yy in range(HH): for xx in range(WW): for ii in range(field_height): for jj in range(field_width): row = c * field_width * field_height + ii * field_height + jj for i in range(N): col = yy * WW * N + xx * N + i cols[row, col] = x_padded[i, c, stride * yy + ii, stride * xx + jj] def col2im_cython(np.ndarray[DTYPE_t, ndim=2] cols, int N, int C, int H, int W, int field_height, int field_width, int padding, int stride): cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) cdef int HH = (H + 2 * padding - field_height) / stride + 1 cdef int WW = (W + 2 * padding - field_width) / stride + 1 cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * padding, W + 2 * padding), dtype=cols.dtype) # Moving the inner loop to a C-function with no bounds checking improves # performance quite a bit for col2im. col2im_cython_inner(cols, x_padded, N, C, H, W, HH, WW, field_height, field_width, padding, stride) if padding > 0: return x_padded[:, :, padding:-padding, padding:-padding] return x_padded @cython.boundscheck(False) cdef int col2im_cython_inner(np.ndarray[DTYPE_t, ndim=2] cols, np.ndarray[DTYPE_t, ndim=4] x_padded, int N, int C, int H, int W, int HH, int WW, int field_height, int field_width, int padding, int stride) except? -1: cdef int c, ii, jj, row, yy, xx, i, col for c in range(C): for ii in range(field_height): for jj in range(field_width): row = c * field_width * field_height + ii * field_height + jj for yy in range(HH): for xx in range(WW): for i in range(N): col = yy * WW * N + xx * N + i x_padded[i, c, stride * yy + ii, stride * xx + jj] += cols[row, col] @cython.boundscheck(False) @cython.wraparound(False) cdef col2im_6d_cython_inner(np.ndarray[DTYPE_t, ndim=6] cols, np.ndarray[DTYPE_t, ndim=4] x_padded, int N, int C, int H, int W, int HH, int WW, int out_h, int out_w, int pad, int stride): cdef int c, hh, ww, n, h, w for n in range(N): for c in range(C): for hh in range(HH): for ww in range(WW): for h in range(out_h): for w in range(out_w): x_padded[n, c, stride * h + hh, stride * w + ww] += cols[c, hh, ww, n, h, w] def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W, int HH, int WW, int pad, int stride): cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype) cdef int out_h = (H + 2 * pad - HH) / stride + 1 cdef int out_w = (W + 2 * pad - WW) / stride + 1 cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad), dtype=cols.dtype) col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride) if pad > 0: return x_padded[:, :, pad:-pad, pad:-pad] return x_padded ================================================ FILE: cs231n/assignment2/cs231n/layer_utils.py ================================================ # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** pass # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** from .layers import * from .fast_layers import * def affine_relu_forward(x, w, b): """ Convenience layer that perorms an affine transform followed by a ReLU Inputs: - x: Input to the affine layer - w, b: Weights for the affine layer Returns a tuple of: - out: Output from the ReLU - cache: Object to give to the backward pass """ a, fc_cache = affine_forward(x, w, b) out, relu_cache = relu_forward(a) cache = (fc_cache, relu_cache) return out, cache def affine_relu_backward(dout, cache): """ Backward pass for the affine-relu convenience layer """ fc_cache, relu_cache = cache da = relu_backward(dout, relu_cache) dx, dw, db = affine_backward(da, fc_cache) return dx, dw, db def conv_relu_forward(x, w, b, conv_param): """ A convenience layer that performs a convolution followed by a ReLU. Inputs: - x: Input to the convolutional layer - w, b, conv_param: Weights and parameters for the convolutional layer Returns a tuple of: - out: Output from the ReLU - cache: Object to give to the backward pass """ a, conv_cache = conv_forward_fast(x, w, b, conv_param) out, relu_cache = relu_forward(a) cache = (conv_cache, relu_cache) return out, cache def conv_relu_backward(dout, cache): """ Backward pass for the conv-relu convenience layer. """ conv_cache, relu_cache = cache da = relu_backward(dout, relu_cache) dx, dw, db = conv_backward_fast(da, conv_cache) return dx, dw, db def conv_bn_relu_forward(x, w, b, gamma, beta, conv_param, bn_param): a, conv_cache = conv_forward_fast(x, w, b, conv_param) an, bn_cache = spatial_batchnorm_forward(a, gamma, beta, bn_param) out, relu_cache = relu_forward(an) cache = (conv_cache, bn_cache, relu_cache) return out, cache def conv_bn_relu_backward(dout, cache): conv_cache, bn_cache, relu_cache = cache dan = relu_backward(dout, relu_cache) da, dgamma, dbeta = spatial_batchnorm_backward(dan, bn_cache) dx, dw, db = conv_backward_fast(da, conv_cache) return dx, dw, db, dgamma, dbeta def conv_relu_pool_forward(x, w, b, conv_param, pool_param): """ Convenience layer that performs a convolution, a ReLU, and a pool. Inputs: - x: Input to the convolutional layer - w, b, conv_param: Weights and parameters for the convolutional layer - pool_param: Parameters for the pooling layer Returns a tuple of: - out: Output from the pooling layer - cache: Object to give to the backward pass """ a, conv_cache = conv_forward_fast(x, w, b, conv_param) s, relu_cache = relu_forward(a) out, pool_cache = max_pool_forward_fast(s, pool_param) cache = (conv_cache, relu_cache, pool_cache) return out, cache def conv_relu_pool_backward(dout, cache): """ Backward pass for the conv-relu-pool convenience layer """ conv_cache, relu_cache, pool_cache = cache ds = max_pool_backward_fast(dout, pool_cache) da = relu_backward(ds, relu_cache) dx, dw, db = conv_backward_fast(da, conv_cache) return dx, dw, db ================================================ FILE: cs231n/assignment2/cs231n/layers.py ================================================ from builtins import range import numpy as np def affine_forward(x, w, b): """ Computes the forward pass for an affine (fully-connected) layer. The input x has shape (N, d_1, ..., d_k) and contains a minibatch of N examples, where each example x[i] has shape (d_1, ..., d_k). We will reshape each input into a vector of dimension D = d_1 * ... * d_k, and then transform it to an output vector of dimension M. Inputs: - x: A numpy array containing input data, of shape (N, d_1, ..., d_k) - w: A numpy array of weights, of shape (D, M) - b: A numpy array of biases, of shape (M,) Returns a tuple of: - out: output, of shape (N, M) - cache: (x, w, b) """ out = None ########################################################################### # TODO: Implement the affine forward pass. Store the result in out. You # # will need to reshape the input into rows. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N = x.shape[0] D = np.prod(x.shape[1:]) x_input = x.reshape(N, D) out = x_input @ w + b # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### cache = (x, w, b) return out, cache def affine_backward(dout, cache): """ Computes the backward pass for an affine layer. Inputs: - dout: Upstream derivative, of shape (N, M) - cache: Tuple of: - x: Input data, of shape (N, d_1, ... d_k) - w: Weights, of shape (D, M) - b: Biases, of shape (M,) Returns a tuple of: - dx: Gradient with respect to x, of shape (N, d1, ..., d_k) - dw: Gradient with respect to w, of shape (D, M) - db: Gradient with respect to b, of shape (M,) """ x, w, b = cache dx, dw, db = None, None, None ########################################################################### # TODO: Implement the affine backward pass. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, M = dout.shape dx = dout @ w.T dx = dx.reshape(*x.shape) D = np.prod(x.shape[1:]) x_input = x.reshape(N, D) dw = x_input.T @ dout db = dout.sum(axis=0) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dw, db def relu_forward(x): """ Computes the forward pass for a layer of rectified linear units (ReLUs). Input: - x: Inputs, of any shape Returns a tuple of: - out: Output, of the same shape as x - cache: x """ out = None ########################################################################### # TODO: Implement the ReLU forward pass. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** out = np.where(x<0, 0, x) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### cache = x return out, cache def relu_backward(dout, cache): """ Computes the backward pass for a layer of rectified linear units (ReLUs). Input: - dout: Upstream derivatives, of any shape - cache: Input x, of same shape as dout Returns: - dx: Gradient with respect to x """ dx, x = None, cache ########################################################################### # TODO: Implement the ReLU backward pass. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** dx = np.where(x<0, 0, 1) * dout # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx def batchnorm_forward(x, gamma, beta, bn_param): """ Forward pass for batch normalization. During training the sample mean and (uncorrected) sample variance are computed from minibatch statistics and used to normalize the incoming data. During training we also keep an exponentially decaying running mean of the mean and variance of each feature, and these averages are used to normalize data at test-time. At each timestep we update the running averages for mean and variance using an exponential decay based on the momentum parameter: running_mean = momentum * running_mean + (1 - momentum) * sample_mean running_var = momentum * running_var + (1 - momentum) * sample_var Note that the batch normalization paper suggests a different test-time behavior: they compute sample mean and variance for each feature using a large number of training images rather than using a running average. For this implementation we have chosen to use running averages instead since they do not require an additional estimation step; the torch7 implementation of batch normalization also uses running averages. Input: - x: Data of shape (N, D) - gamma: Scale parameter of shape (D,) - beta: Shift paremeter of shape (D,) - bn_param: Dictionary with the following keys: - mode: 'train' or 'test'; required - eps: Constant for numeric stability - momentum: Constant for running mean / variance. - running_mean: Array of shape (D,) giving running mean of features - running_var Array of shape (D,) giving running variance of features Returns a tuple of: - out: of shape (N, D) - cache: A tuple of values needed in the backward pass """ mode = bn_param["mode"] eps = bn_param.get("eps", 1e-5) momentum = bn_param.get("momentum", 0.9) N, D = x.shape running_mean = bn_param.get("running_mean", np.zeros(D, dtype=x.dtype)) running_var = bn_param.get("running_var", np.zeros(D, dtype=x.dtype)) out, cache = None, None if mode == "train": ####################################################################### # TODO: Implement the training-time forward pass for batch norm. # # Use minibatch statistics to compute the mean and variance, use # # these statistics to normalize the incoming data, and scale and # # shift the normalized data using gamma and beta. # # # # You should store the output in the variable out. Any intermediates # # that you need for the backward pass should be stored in the cache # # variable. # # # # You should also use your computed sample mean and variance together # # with the momentum variable to update the running mean and running # # variance, storing your result in the running_mean and running_var # # variables. # # # # Note that though you should be keeping track of the running # # variance, you should normalize the data based on the standard # # deviation (square root of variance) instead! # # Referencing the original paper (https://arxiv.org/abs/1502.03167) # # might prove to be helpful. # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Batch normalization algorithm rewritten in the way to store intermediate # values in "cache" for backpropagation. # Compute sample mean for each feature. xmean = x.mean(axis=0) xmean_diff = x - xmean xmean_diff_square = xmean_diff**2 # Compute sample variance for each feature. xvar = xmean_diff_square.mean(axis=0) # Compute sample standard deviation for each feature. xstd = np.sqrt(xvar + eps) xstd_inv = 1 / xstd # Normalize. xhat = xmean_diff * xstd_inv # Scale and shift. out = gamma * xhat + beta # Update 'running_mean' and 'running_var'. running_mean = momentum * running_mean + (1 - momentum) * xmean running_var = momentum * running_var + (1 - momentum) * xvar # Save intermediates needed for the backward pass. cache = { 'xmean_diff': xmean_diff, 'xvar': xvar, 'eps': eps, 'xstd': xstd, 'xstd_inv': xstd_inv, 'xhat': xhat, 'gamma': gamma, 'beta': beta } # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ####################################################################### # END OF YOUR CODE # ####################################################################### elif mode == "test": ####################################################################### # TODO: Implement the test-time forward pass for batch normalization. # # Use the running mean and variance to normalize the incoming data, # # then scale and shift the normalized data using gamma and beta. # # Store the result in the out variable. # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Normalize using 'running_mean' and 'running_var'. out = (x - running_mean) / (np.sqrt(running_var) + eps) # Scale and shift. out = gamma * out + beta # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ####################################################################### # END OF YOUR CODE # ####################################################################### else: raise ValueError('Invalid forward batchnorm mode "%s"' % mode) # Store the updated running means back into bn_param bn_param["running_mean"] = running_mean bn_param["running_var"] = running_var return out, cache def batchnorm_backward(dout, cache): """ Backward pass for batch normalization. For this implementation, you should write out a computation graph for batch normalization on paper and propagate gradients backward through intermediate nodes. Inputs: - dout: Upstream derivatives, of shape (N, D) - cache: Variable of intermediates from batchnorm_forward. Returns a tuple of: - dx: Gradient with respect to inputs x, of shape (N, D) - dgamma: Gradient with respect to scale parameter gamma, of shape (D,) - dbeta: Gradient with respect to shift parameter beta, of shape (D,) """ dx, dgamma, dbeta = None, None, None ########################################################################### # TODO: Implement the backward pass for batch normalization. Store the # # results in the dx, dgamma, and dbeta variables. # # Referencing the original paper (https://arxiv.org/abs/1502.03167) # # might prove to be helpful. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # In order to fully understand the backward pass, computational graph of # batch normalization layer must be drawn. N, D = dout.shape # Derivate from: out = xscaled * beta dbeta = dout.sum(axis=0) # Derivate from: xscaled = xhat * gamma dgamma = dout * cache['xhat'] dgamma = dgamma.sum(axis=0) # Derivate from: xscaled = xhat * gamma d_xhat = dout * cache['gamma'] # Derivate from: xhat = xstd_inv * xmean_diff d_xstd_inv = cache['xmean_diff'] * d_xhat d_xstd_inv = d_xstd_inv.sum(axis=0) # Derivate from: xstd_inv = 1 / xstd d_xstd = (-1 / cache['xstd']**2) * d_xstd_inv # Derivate from: xstd = sqrt(xvar + eps) d_xvar = (1 / (2 * np.sqrt(cache['xvar'] + cache['eps']))) * d_xstd # Derivate from: xvar = xmean_diff_square.mean(axis=0) d_xmean_diff_square = d_xvar / N # Derivate from: xmean_diff_square = xmean_diff ^ 2 d_xmean_diff_2 = (2 * cache['xmean_diff']) * d_xmean_diff_square # Derivate from: xstd_inv * xmean_diff d_xmean_diff_1 = cache['xstd_inv'] * d_xhat # Sum the two derivates. d_xmean_diff = d_xmean_diff_1 + d_xmean_diff_2 # Derivate from: d_xmean_diff = x - xmean d_xmean = - d_xmean_diff.sum(axis=0) # Derivate from: xmean = x.mean(axis=0) d_x2 = d_xmean / N # Derivate from: d_xmean_diff = x - xmean d_x1 = d_xmean_diff # Sum the two derivates. dx = d_x1 + d_x2 # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dgamma, dbeta def batchnorm_backward_alt(dout, cache): """ Alternative backward pass for batch normalization. For this implementation you should work out the derivatives for the batch normalizaton backward pass on paper and simplify as much as possible. You should be able to derive a simple expression for the backward pass. See the jupyter notebook for more hints. Note: This implementation should expect to receive the same cache variable as batchnorm_backward, but might not use all of the values in the cache. Inputs / outputs: Same as batchnorm_backward """ dx, dgamma, dbeta = None, None, None ########################################################################### # TODO: Implement the backward pass for batch normalization. Store the # # results in the dx, dgamma, and dbeta variables. # # # # After computing the gradient with respect to the centered inputs, you # # should be able to compute gradients with respect to the inputs in a # # single statement; our implementation fits on a single 80-character line.# ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, D = dout.shape # Unpack needed intermediates inv_var, xhat, gamma = cache['xstd_inv'], cache['xhat'], cache['gamma'] # Derivate from: out = xscaled * beta dbeta = dout.sum(axis=0) # Derivate from: xscaled = xhat * gamma dgamma = np.sum(dout * xhat, axis=0) # Derivate from: xscaled = xhat * gamma d_xhat = dout * gamma # Result formula from work-out the derivatives for the batch normalization # backward pass on paper, including simplification. dx = inv_var / N * \ (N*d_xhat - d_xhat.sum(axis=0) - xhat*np.sum(d_xhat*xhat, axis=0)) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dgamma, dbeta def layernorm_forward(x, gamma, beta, ln_param): """ Forward pass for layer normalization. During both training and test-time, the incoming data is normalized per data-point, before being scaled by gamma and beta parameters identical to that of batch normalization. Note that in contrast to batch normalization, the behavior during train and test-time for layer normalization are identical, and we do not need to keep track of running averages of any sort. Input: - x: Data of shape (N, D) - gamma: Scale parameter of shape (D,) - beta: Shift paremeter of shape (D,) - ln_param: Dictionary with the following keys: - eps: Constant for numeric stability Returns a tuple of: - out: of shape (N, D) - cache: A tuple of values needed in the backward pass """ out, cache = None, None eps = ln_param.get("eps", 1e-5) ########################################################################### # TODO: Implement the training-time forward pass for layer norm. # # Normalize the incoming data, and scale and shift the normalized data # # using gamma and beta. # # HINT: this can be done by slightly modifying your training-time # # implementation of batch normalization, and inserting a line or two of # # well-placed code. In particular, can you think of any matrix # # transformations you could perform, that would enable you to copy over # # the batch norm code and leave it almost unchanged? # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Layer normalization algorithm rewritten in the way to store intermediate # values in "cache" for backpropagation. # Compute the mean for each datapoint. xmean = x.mean(axis=1, keepdims=True) xmean_diff = x - xmean xmean_diff_square = xmean_diff**2 # Compute the variance for each datapoint. xvar = xmean_diff_square.mean(axis=1, keepdims=True) # Compute the standard deviation for each datapoint. xstd = np.sqrt(xvar + eps) xstd_inv = 1 / xstd # Normalize. xhat = xmean_diff * xstd_inv # Scale and shift. out = gamma * xhat + beta # Save intermediates needed for the backward pass. cache = { 'xstd_inv': xstd_inv, 'xhat': xhat, 'gamma': gamma } # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return out, cache def layernorm_backward(dout, cache): """ Backward pass for layer normalization. For this implementation, you can heavily rely on the work you've done already for batch normalization. Inputs: - dout: Upstream derivatives, of shape (N, D) - cache: Variable of intermediates from layernorm_forward. Returns a tuple of: - dx: Gradient with respect to inputs x, of shape (N, D) - dgamma: Gradient with respect to scale parameter gamma, of shape (D,) - dbeta: Gradient with respect to shift parameter beta, of shape (D,) """ dx, dgamma, dbeta = None, None, None ########################################################################### # TODO: Implement the backward pass for layer norm. # # # # HINT: this can be done by slightly modifying your training-time # # implementation of batch normalization. The hints to the forward pass # # still apply! # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, D = dout.shape # Unpack needed intermediates inv_var, xhat, gamma = cache['xstd_inv'], cache['xhat'], cache['gamma'] # Derivate from: out = xscaled * beta dbeta = dout.sum(axis=0) # Derivate from: xscaled = xhat * gamma dgamma = np.sum(dout * xhat, axis=0) # Derivate from: xscaled = xhat * gamma d_xhat = dout * gamma # Formula obtained by slightly modifying the one used in 'batchnorm_backward_alt' dx = inv_var / D * \ (D*d_xhat - d_xhat.sum(axis=1, keepdims=True) - \ xhat*np.sum(d_xhat*xhat, axis=1, keepdims=True)) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dgamma, dbeta def dropout_forward(x, dropout_param): """ Performs the forward pass for (inverted) dropout. Inputs: - x: Input data, of any shape - dropout_param: A dictionary with the following keys: - p: Dropout parameter. We keep each neuron output with probability p. - mode: 'test' or 'train'. If the mode is train, then perform dropout; if the mode is test, then just return the input. - seed: Seed for the random number generator. Passing seed makes this function deterministic, which is needed for gradient checking but not in real networks. Outputs: - out: Array of the same shape as x. - cache: tuple (dropout_param, mask). In training mode, mask is the dropout mask that was used to multiply the input; in test mode, mask is None. NOTE: Please implement **inverted** dropout, not the vanilla version of dropout. See http://cs231n.github.io/neural-networks-2/#reg for more details. NOTE 2: Keep in mind that p is the probability of **keep** a neuron output; this might be contrary to some sources, where it is referred to as the probability of dropping a neuron output. """ p, mode = dropout_param["p"], dropout_param["mode"] if "seed" in dropout_param: np.random.seed(dropout_param["seed"]) mask = None out = None if mode == "train": ####################################################################### # TODO: Implement training phase forward pass for inverted dropout. # # Store the dropout mask in the mask variable. # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** mask = (np.random.rand(*x.shape) < p) / p out = x * mask # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ####################################################################### # END OF YOUR CODE # ####################################################################### elif mode == "test": ####################################################################### # TODO: Implement the test phase forward pass for inverted dropout. # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** out = x # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ####################################################################### # END OF YOUR CODE # ####################################################################### cache = (dropout_param, mask) out = out.astype(x.dtype, copy=False) return out, cache def dropout_backward(dout, cache): """ Perform the backward pass for (inverted) dropout. Inputs: - dout: Upstream derivatives, of any shape - cache: (dropout_param, mask) from dropout_forward. """ dropout_param, mask = cache mode = dropout_param["mode"] dx = None if mode == "train": ####################################################################### # TODO: Implement training phase backward pass for inverted dropout # ####################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** dx = mask * dout # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ####################################################################### # END OF YOUR CODE # ####################################################################### elif mode == "test": dx = dout return dx def conv_forward_naive(x, w, b, conv_param): """ A naive implementation of the forward pass for a convolutional layer. The input consists of N data points, each with C channels, height H and width W. We convolve each input with F different filters, where each filter spans all C channels and has height HH and width WW. Input: - x: Input data of shape (N, C, H, W) - w: Filter weights of shape (F, C, HH, WW) - b: Biases, of shape (F,) - conv_param: A dictionary with the following keys: - 'stride': The number of pixels between adjacent receptive fields in the horizontal and vertical directions. - 'pad': The number of pixels that will be used to zero-pad the input. During padding, 'pad' zeros should be placed symmetrically (i.e equally on both sides) along the height and width axes of the input. Be careful not to modfiy the original input x directly. Returns a tuple of: - out: Output data, of shape (N, F, H', W') where H' and W' are given by H' = 1 + (H + 2 * pad - HH) / stride W' = 1 + (W + 2 * pad - WW) / stride - cache: (x, w, b, conv_param) """ out = None ########################################################################### # TODO: Implement the convolutional forward pass. # # Hint: you can use the function np.pad for padding. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Unpack 'stride' and 'pad' values. stride, pad = conv_param['stride'], conv_param['pad'] # Get different size information from 'x' and 'w'. N, C, H, W = x.shape F, _, HH, WW = w.shape # Define padding filter: Pad only the width and height of each 'x' sample. npad = ((0, 0), (0, 0), (pad, pad), (pad, pad)) # Apply the padding filter to 'x'. xpad = np.pad(x, npad) # Compute H' and W'. Hprime = int(1 + (H + 2 * pad - HH) / stride) Wprime = int(1 + (W + 2 * pad - WW) / stride) # Initialize the output. out = np.zeros((N, F, Hprime, Wprime)) # Maximum start point in width and height from which the convolution # can be applied, to not exceed 'x' datapoints size. Hmax_xpad = 1 + (H + 2 * pad - HH) Wmax_xpad = 1 + (W + 2 * pad - WW) # Loop over all datapoints (samples). # Track current sample number (xnum) and the sample itself (xsample). for xnum, xsample in enumerate(xpad): # Loop over all weights (filters). # Track current filter number (wnum) and the filter itself (wfilter). for wnum, wfilter in enumerate(w): # Loop over 'xsample' width, where the convolution can be applied. # Take into account the padding, move per 'stride'. for iout, i in enumerate(range(0, Hmax_xpad, stride)): # Loop over 'xsample' height, where the convolution can be applied. # Take into account the padding, move per 'stride'. for jout, j in enumerate(range(0, Wmax_xpad, stride)): # 'xsample' part on which 'wfilter' will be applied. xpart = xsample[:, i:i+HH, j:j+WW] # Apply the convolution 'wfilter' on 'xpart', and add the bias. out[xnum, wnum, iout, jout] = (wfilter * xpart).sum() + b[wnum] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### cache = (x, w, b, conv_param) return out, cache def conv_backward_naive(dout, cache): """ A naive implementation of the backward pass for a convolutional layer. Inputs: - dout: Upstream derivatives. - cache: A tuple of (x, w, b, conv_param) as in conv_forward_naive Returns a tuple of: - dx: Gradient with respect to x - dw: Gradient with respect to w - db: Gradient with respect to b """ dx, dw, db = None, None, None ########################################################################### # TODO: Implement the convolutional backward pass. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** x, w, b, conv_param = cache # Get different size information from 'x', 'w' and 'dout'. N, C, H, W = x.shape F, _, HH, WW = w.shape _, _, Hprime, Wprime = dout.shape # Unpack 'stride' and 'pad' values. stride, pad = conv_param['stride'], conv_param['pad'] # Initialize 'dx', 'dw' and 'db'. dx, dw, db = np.zeros(x.shape), np.zeros(w.shape), np.zeros(b.shape) # Define padding filter: Pad only the width and height of each 'dx' sample. npad = ((0, 0), (0, 0), (pad, pad), (pad, pad)) # Apply the padding filter to 'dx', as 'out' was computed using padded 'x'. dxpad = np.pad(dx, npad) # Apply the padding filter to 'x', which will be used to compute 'dw'. xpad = np.pad(x, npad) # Maximum start point in width and height from which the convolution # can be applied, to not exceed the 'dx' size. Hmax_xpad = 1 + (H + 2 * pad - HH) Wmax_xpad = 1 + (W + 2 * pad - WW) # Loop over the output (result of application of the convolutional # filters on 'x') derivative. Track datapoint number (xnum) to which # current output derivate (xdout) belongs. for xnum, xdout in enumerate(dout): # Loop over 'xdout'. for dnum, dfilter in enumerate(xdout): # Loop over 'dfilter' lines (height). for i, idx in enumerate(range(0, Hmax_xpad, stride)): # Loop over 'xsample' height, where the convolution can be applied. # Take into account the padding, move per 'stride'. for j, jdx in enumerate(range(0, Wmax_xpad, stride)): # Get the current 'dfilter' value. dfilterval = dfilter[i, j] # Update 'db', 'dxpad' and 'dw'. db[dnum] += dfilterval # Note that we update 'dxpad' instead of 'dx'. dxpad[xnum, :, idx:idx+HH, jdx:jdx+WW] += w[dnum, ...] * dfilterval # Note that we update 'dw' using 'xpad' instead of 'x'. dw[dnum, ...] += xpad[xnum, :, idx:idx+HH, jdx:jdx+WW] * dfilterval # Shrink the padding from 'dx' lines/columns, in order to match 'x' size. dx = dxpad[..., pad:-pad, pad:-pad] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dw, db def max_pool_forward_naive(x, pool_param): """ A naive implementation of the forward pass for a max-pooling layer. Inputs: - x: Input data, of shape (N, C, H, W) - pool_param: dictionary with the following keys: - 'pool_height': The height of each pooling region - 'pool_width': The width of each pooling region - 'stride': The distance between adjacent pooling regions No padding is necessary here. Output size is given by Returns a tuple of: - out: Output data, of shape (N, C, H', W') where H' and W' are given by H' = 1 + (H - pool_height) / stride W' = 1 + (W - pool_width) / stride - cache: (x, pool_param) """ out = None ########################################################################### # TODO: Implement the max-pooling forward pass # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Unpack max-pooling layer parameters: 'width', 'height' and 'stride'. pool_width, pool_height = pool_param['pool_width'], pool_param['pool_height'] stride = pool_param['stride'] # Get different size information from 'x'. N, C, H, W = x.shape # Compute H' and W'. Hprime = int(1 + (H - pool_height) / stride) Wprime = int(1 + (W - pool_width) / stride) # Initialize the output. out = np.zeros((N, C, Hprime, Wprime)) # Maximum start point in width and height from which the max-pooling # can be applied, to not exceed 'x' datapoints size. Hmaxx = 1 + (H - pool_height) Wmaxx = 1 + (W - pool_width) # Loop over all datapoints (samples). # Track current sample number (xnum) and the sample itself (xsample). for xnum, xsample in enumerate(x): # Loop over all channels. # Track current channel number (cnum) and the channel itself (channel). for cnum, channel in enumerate(xsample): # Loop over 'channel' width, where the max-pooling can be applied. for iout, i in enumerate(range(0, Hmaxx, stride)): # Loop over 'channel' height, where the max-pooling can be applied. for jout, j in enumerate(range(0, Wmaxx, stride)): # 'channel' part on which max-pooling will be applied. chpart = channel[i:i+pool_height, j:j+pool_width] # Get the maximum value in 'chpart' out[xnum, cnum, iout, jout] = chpart.max() # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### cache = (x, pool_param) return out, cache def max_pool_backward_naive(dout, cache): """ A naive implementation of the backward pass for a max-pooling layer. Inputs: - dout: Upstream derivatives - cache: A tuple of (x, pool_param) as in the forward pass. Returns: - dx: Gradient with respect to x """ dx = None ########################################################################### # TODO: Implement the max-pooling backward pass # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Unpack max-pooling layer cache. x, pool_param = cache # Unpack max-pooling layer parameters: 'width', 'height' and 'stride'. pool_width, pool_height = pool_param['pool_width'], pool_param['pool_height'] stride = pool_param['stride'] # Get different size information from 'x'. N, C, H, W = x.shape # Compute H' and W'. Hprime = int(1 + (H - pool_height) / stride) Wprime = int(1 + (W - pool_width) / stride) # Initialize 'dx' (which has the same shape as 'x'). dx = np.zeros(x.shape) # Maximum start point in width and height, to not exceed 'x' datapoints size. Hmaxx = 1 + (H - pool_height) Wmaxx = 1 + (W - pool_width) # Loop over all datapoints (samples). # Track current sample number (xnum) and the sample itself (xsample). for xnum, xsample in enumerate(x): # Loop over all channels. # Track current channel number (cnum) and the channel itself (channel). for cnum, channel in enumerate(xsample): # Loop over 'channel' width. for idout, i in enumerate(range(0, Hmaxx, stride)): # Loop over 'channel' height. for jdout, j in enumerate(range(0, Wmaxx, stride)): # 'channel' part from which the maximum coordinates will be retrieved. chpart = channel[i:i+pool_height, j:j+pool_width] # Get the maximum coordinates: Line (maxln) and column (maxcol) maxln, maxcol = np.unravel_index(np.argmax(chpart), chpart.shape) # Assign the current maximum from 'dout' to 'dx', based on # the 'maximum coordinates' retrieved previously. dx[xnum, cnum, i+maxln, j+maxcol] = dout[xnum, cnum, idout, jdout] # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx def spatial_batchnorm_forward(x, gamma, beta, bn_param): """ Computes the forward pass for spatial batch normalization. Inputs: - x: Input data of shape (N, C, H, W) - gamma: Scale parameter, of shape (C,) - beta: Shift parameter, of shape (C,) - bn_param: Dictionary with the following keys: - mode: 'train' or 'test'; required - eps: Constant for numeric stability - momentum: Constant for running mean / variance. momentum=0 means that old information is discarded completely at every time step, while momentum=1 means that new information is never incorporated. The default of momentum=0.9 should work well in most situations. - running_mean: Array of shape (D,) giving running mean of features - running_var Array of shape (D,) giving running variance of features Returns a tuple of: - out: Output data, of shape (N, C, H, W) - cache: Values needed for the backward pass """ out, cache = None, None ########################################################################### # TODO: Implement the forward pass for spatial batch normalization. # # # # HINT: You can implement spatial batch normalization by calling the # # vanilla version of batch normalization you implemented above. # # Your implementation should be very short; ours is less than five lines. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # N, C, H, W = Datapoints, Channels, Height, Width N, C, H, W = x.shape # Transpose 'x', from (N, C, H, W) shape to (N, H, W, C). Then, reshape it # to (N*H*W, C). That is, forward Spatial BN is applied per color channel. x = x.transpose(0, 2, 3, 1).reshape(N*H*W, C) out, cache = batchnorm_forward(x, gamma, beta, bn_param) # Reshape and transpose 'out' to match the 'x' shape. out = out.reshape(N, H, W, C).transpose(0, 3, 1, 2) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return out, cache def spatial_batchnorm_backward(dout, cache): """ Computes the backward pass for spatial batch normalization. Inputs: - dout: Upstream derivatives, of shape (N, C, H, W) - cache: Values from the forward pass Returns a tuple of: - dx: Gradient with respect to inputs, of shape (N, C, H, W) - dgamma: Gradient with respect to scale parameter, of shape (C,) - dbeta: Gradient with respect to shift parameter, of shape (C,) """ dx, dgamma, dbeta = None, None, None ########################################################################### # TODO: Implement the backward pass for spatial batch normalization. # # # # HINT: You can implement spatial batch normalization by calling the # # vanilla version of batch normalization you implemented above. # # Your implementation should be very short; ours is less than five lines. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, C, H, W = dout.shape # Transpose 'dout', from (N, C, H, W) shape to (N, H, W, C). Then, reshape it # to (N*H*W, C). That is, backward Spatial BN is applied per color channel. dout = dout.transpose(0, 2, 3, 1).reshape(N*H*W, C) dx, dgamma, dbeta = batchnorm_backward_alt(dout, cache) # Reshape and transpose 'dx' to match the 'dout' shape. dx = dx.reshape(N, H, W, C).transpose(0, 3, 1, 2) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dgamma, dbeta def spatial_groupnorm_forward(x, gamma, beta, G, gn_param): """ Computes the forward pass for spatial group normalization. In contrast to layer normalization, group normalization splits each entry in the data into G contiguous pieces, which it then normalizes independently. Per feature shifting and scaling are then applied to the data, in a manner identical to that of batch normalization and layer normalization. Inputs: - x: Input data of shape (N, C, H, W) - gamma: Scale parameter, of shape (C,) - beta: Shift parameter, of shape (C,) - G: Integer mumber of groups to split into, should be a divisor of C - gn_param: Dictionary with the following keys: - eps: Constant for numeric stability Returns a tuple of: - out: Output data, of shape (N, C, H, W) - cache: Values needed for the backward pass """ out, cache = None, None eps = gn_param.get("eps", 1e-5) ########################################################################### # TODO: Implement the forward pass for spatial group normalization. # # This will be extremely similar to the layer norm implementation. # # In particular, think about how you could transform the matrix so that # # the bulk of the code is similar to both train-time batch normalization # # and layer normalization! # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, C, H, W = x.shape # In spatial group norm, channels (with their height and width) are # devided into groups, each one contains C/G channels (integer value). # So, each group ('elsgrp') contains C/G channels with their H and W. elsgrp = C//G * H * W # Reshape 'x' to match the logic behind the spatial group norm. # Note that in the original implementation (https://arxiv.org/abs/1803.08494), # 'x' was reshaped into (N, G, C//G, H, W), however, my implementation is also # correct. It allows to lighten per-axis mean computations, as we perform it on # the 2nd axis only, instead of (2, 3, 4) as in the original implementation. x = x.reshape([N, G, elsgrp]) # Compute the mean for each group. xmean = x.mean(axis=2, keepdims=True) xmean_diff = x - xmean xmean_diff_square = xmean_diff**2 # Compute the variance for each group. xvar = xmean_diff_square.mean(axis=2, keepdims=True) # Compute the standard deviation for each group. xstd = np.sqrt(xvar + eps) xstd_inv = 1 / xstd # Normalize. xhat = xmean_diff * xstd_inv # Reshape 'xhat' to its original shape, from (N, G, elsgrp) to (N, C, H, W). xhat = xhat.reshape(N, C, H, W) # Scale and shift. out = gamma * xhat + beta cache = { 'G': G, 'xstd_inv': xstd_inv, 'xhat': xhat, 'gamma': gamma } # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return out, cache def spatial_groupnorm_backward(dout, cache): """ Computes the backward pass for spatial group normalization. Inputs: - dout: Upstream derivatives, of shape (N, C, H, W) - cache: Values from the forward pass Returns a tuple of: - dx: Gradient with respect to inputs, of shape (N, C, H, W) - dgamma: Gradient with respect to scale parameter, of shape (C,) - dbeta: Gradient with respect to shift parameter, of shape (C,) """ dx, dgamma, dbeta = None, None, None ########################################################################### # TODO: Implement the backward pass for spatial group normalization. # # This will be extremely similar to the layer norm implementation. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** N, C, H, W = dout.shape # Unpack needed intermediates inv_var, xhat, gamma = cache['xstd_inv'], cache['xhat'], cache['gamma'] G = cache['G'] # Derivate from: out = xscaled * beta dbeta = dout.sum(axis=(0, 2, 3), keepdims=True) # Derivate from: xscaled = xhat * gamma dgamma = np.sum(dout * xhat, axis=(0, 2, 3), keepdims=True) # Derivate from: xscaled = xhat * gamma d_xhat = dout * gamma # Similarly to the forward pass, compute number of elements per group. elsgrp = C//G * H * W # Similarly to the forward pass, reshape 'xhat' and 'd_xhat' to match the logic # behind spatial group norm. xhat = xhat.reshape([N, G, elsgrp]) d_xhat = d_xhat.reshape([N, G, elsgrp]) # Formula obtained by slightly modifying the one used in 'layernorm_backward' dx = inv_var / elsgrp * \ (elsgrp*d_xhat - d_xhat.sum(axis=2, keepdims=True) - \ xhat*np.sum(d_xhat*xhat, axis=2, keepdims=True)) # Reshape 'dx' to match original 'x' shape, from (N, G, elsgrp) to (N, C, H, W). dx = dx.reshape(N, C, H, W) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return dx, dgamma, dbeta def svm_loss(x, y): """ Computes the loss and gradient using for multiclass SVM classification. Inputs: - x: Input data, of shape (N, C) where x[i, j] is the score for the jth class for the ith input. - y: Vector of labels, of shape (N,) where y[i] is the label for x[i] and 0 <= y[i] < C Returns a tuple of: - loss: Scalar giving the loss - dx: Gradient of the loss with respect to x """ N = x.shape[0] correct_class_scores = x[np.arange(N), y] margins = np.maximum(0, x - correct_class_scores[:, np.newaxis] + 1.0) margins[np.arange(N), y] = 0 loss = np.sum(margins) / N num_pos = np.sum(margins > 0, axis=1) dx = np.zeros_like(x) dx[margins > 0] = 1 dx[np.arange(N), y] -= num_pos dx /= N return loss, dx def softmax_loss(x, y): """ Computes the loss and gradient for softmax classification. Inputs: - x: Input data, of shape (N, C) where x[i, j] is the score for the jth class for the ith input. - y: Vector of labels, of shape (N,) where y[i] is the label for x[i] and 0 <= y[i] < C Returns a tuple of: - loss: Scalar giving the loss - dx: Gradient of the loss with respect to x """ shifted_logits = x - np.max(x, axis=1, keepdims=True) Z = np.sum(np.exp(shifted_logits), axis=1, keepdims=True) log_probs = shifted_logits - np.log(Z) probs = np.exp(log_probs) N = x.shape[0] loss = -np.sum(log_probs[np.arange(N), y]) / N dx = probs.copy() dx[np.arange(N), y] -= 1 dx /= N return loss, dx ================================================ FILE: cs231n/assignment2/cs231n/optim.py ================================================ import numpy as np """ This file implements various first-order update rules that are commonly used for training neural networks. Each update rule accepts current weights and the gradient of the loss with respect to those weights and produces the next set of weights. Each update rule has the same interface: def update(w, dw, config=None): Inputs: - w: A numpy array giving the current weights. - dw: A numpy array of the same shape as w giving the gradient of the loss with respect to w. - config: A dictionary containing hyperparameter values such as learning rate, momentum, etc. If the update rule requires caching values over many iterations, then config will also hold these cached values. Returns: - next_w: The next point after the update. - config: The config dictionary to be passed to the next iteration of the update rule. NOTE: For most update rules, the default learning rate will probably not perform well; however the default values of the other hyperparameters should work well for a variety of different problems. For efficiency, update rules may perform in-place updates, mutating w and setting next_w equal to w. """ def sgd(w, dw, config=None): """ Performs vanilla stochastic gradient descent. config format: - learning_rate: Scalar learning rate. """ if config is None: config = {} config.setdefault("learning_rate", 1e-2) w -= config["learning_rate"] * dw return w, config def sgd_momentum(w, dw, config=None): """ Performs stochastic gradient descent with momentum. config format: - learning_rate: Scalar learning rate. - momentum: Scalar between 0 and 1 giving the momentum value. Setting momentum = 0 reduces to sgd. - velocity: A numpy array of the same shape as w and dw used to store a moving average of the gradients. """ if config is None: config = {} config.setdefault("learning_rate", 1e-2) config.setdefault("momentum", 0.9) v = config.get("velocity", np.zeros_like(w)) next_w = None ########################################################################### # TODO: Implement the momentum update formula. Store the updated value in # # the next_w variable. You should also use and update the velocity v. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** v = config["momentum"] * v - config["learning_rate"] * dw next_w = w + v # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### config["velocity"] = v return next_w, config def rmsprop(w, dw, config=None): """ Uses the RMSProp update rule, which uses a moving average of squared gradient values to set adaptive per-parameter learning rates. config format: - learning_rate: Scalar learning rate. - decay_rate: Scalar between 0 and 1 giving the decay rate for the squared gradient cache. - epsilon: Small scalar used for smoothing to avoid dividing by zero. - cache: Moving average of second moments of gradients. """ if config is None: config = {} config.setdefault("learning_rate", 1e-2) config.setdefault("decay_rate", 0.99) config.setdefault("epsilon", 1e-8) config.setdefault("cache", np.zeros_like(w)) next_w = None ########################################################################### # TODO: Implement the RMSprop update formula, storing the next value of w # # in the next_w variable. Don't forget to update cache value stored in # # config['cache']. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Each equation was written in two lines (note "\" in the end) for readability. config["cache"] = config["decay_rate"] * config["cache"] \ + (1 - config["decay_rate"]) * dw**2 next_w = w - config["learning_rate"] * dw \ / (np.sqrt(config["cache"]) + config["epsilon"]) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return next_w, config def adam(w, dw, config=None): """ Uses the Adam update rule, which incorporates moving averages of both the gradient and its square and a bias correction term. config format: - learning_rate: Scalar learning rate. - beta1: Decay rate for moving average of first moment of gradient. - beta2: Decay rate for moving average of second moment of gradient. - epsilon: Small scalar used for smoothing to avoid dividing by zero. - m: Moving average of gradient. - v: Moving average of squared gradient. - t: Iteration number. """ if config is None: config = {} config.setdefault("learning_rate", 1e-3) config.setdefault("beta1", 0.9) config.setdefault("beta2", 0.999) config.setdefault("epsilon", 1e-8) config.setdefault("m", np.zeros_like(w)) config.setdefault("v", np.zeros_like(w)) config.setdefault("t", 0) next_w = None ########################################################################### # TODO: Implement the Adam update formula, storing the next value of w in # # the next_w variable. Don't forget to update the m, v, and t variables # # stored in config. # # # # NOTE: In order to match the reference output, please modify t _before_ # # using it in any calculations. # ########################################################################### # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** # Increment iteration counter. config["t"] += 1 config["m"] = config["beta1"]*config["m"] + (1-config["beta1"])*dw mt = config["m"] / (1-config["beta1"]**config["t"]) config["v"] = config["beta2"]*config["v"] + (1-config["beta2"])*(dw**2) vt = config["v"] / (1-config["beta2"]**config["t"]) next_w = w - config["learning_rate"] * mt / (np.sqrt(vt) + config["epsilon"]) # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)***** ########################################################################### # END OF YOUR CODE # ########################################################################### return next_w, config ================================================ FILE: cs231n/assignment2/cs231n/setup.py ================================================ from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import numpy extensions = [ Extension( "im2col_cython", ["im2col_cython.pyx"], include_dirs=[numpy.get_include()] ), ] setup(ext_modules=cythonize(extensions),) ================================================ FILE: cs231n/assignment2/cs231n/solver.py ================================================ from __future__ import print_function, division from future import standard_library standard_library.install_aliases() from builtins import range from builtins import object import os import pickle as pickle import numpy as np from cs231n import optim class Solver(object): """ A Solver encapsulates all the logic necessary for training classification models. The Solver performs stochastic gradient descent using different update rules defined in optim.py. The solver accepts both training and validataion data and labels so it can periodically check classification accuracy on both training and validation data to watch out for overfitting. To train a model, you will first construct a Solver instance, passing the model, dataset, and various options (learning rate, batch size, etc) to the constructor. You will then call the train() method to run the optimization procedure and train the model. After the train() method returns, model.params will contain the parameters that performed best on the validation set over the course of training. In addition, the instance variable solver.loss_history will contain a list of all losses encountered during training and the instance variables solver.train_acc_history and solver.val_acc_history will be lists of the accuracies of the model on the training and validation set at each epoch. Example usage might look something like this: data = { 'X_train': # training data 'y_train': # training labels 'X_val': # validation data 'y_val': # validation labels } model = MyAwesomeModel(hidden_size=100, reg=10) solver = Solver(model, data, update_rule='sgd', optim_config={ 'learning_rate': 1e-3, }, lr_decay=0.95, num_epochs=10, batch_size=100, print_every=100) solver.train() A Solver works on a model object that must conform to the following API: - model.params must be a dictionary mapping string parameter names to numpy arrays containing parameter values. - model.loss(X, y) must be a function that computes training-time loss and gradients, and test-time classification scores, with the following inputs and outputs: Inputs: - X: Array giving a minibatch of input data of shape (N, d_1, ..., d_k) - y: Array of labels, of shape (N,) giving labels for X where y[i] is the label for X[i]. Returns: If y is None, run a test-time forward pass and return: - scores: Array of shape (N, C) giving classification scores for X where scores[i, c] gives the score of class c for X[i]. If y is not None, run a training time forward and backward pass and return a tuple of: - loss: Scalar giving the loss - grads: Dictionary with the same keys as self.params mapping parameter names to gradients of the loss with respect to those parameters. """ def __init__(self, model, data, **kwargs): """ Construct a new Solver instance. Required arguments: - model: A model object conforming to the API described above - data: A dictionary of training and validation data containing: 'X_train': Array, shape (N_train, d_1, ..., d_k) of training images 'X_val': Array, shape (N_val, d_1, ..., d_k) of validation images 'y_train': Array, shape (N_train,) of labels for training images 'y_val': Array, shape (N_val,) of labels for validation images Optional arguments: - update_rule: A string giving the name of an update rule in optim.py. Default is 'sgd'. - optim_config: A dictionary containing hyperparameters that will be passed to the chosen update rule. Each update rule requires different hyperparameters (see optim.py) but all update rules require a 'learning_rate' parameter so that should always be present. - lr_decay: A scalar for learning rate decay; after each epoch the learning rate is multiplied by this value. - batch_size: Size of minibatches used to compute loss and gradient during training. - num_epochs: The number of epochs to run for during training. - print_every: Integer; training losses will be printed every print_every iterations. - verbose: Boolean; if set to false then no output will be printed during training. - num_train_samples: Number of training samples used to check training accuracy; default is 1000; set to None to use entire training set. - num_val_samples: Number of validation samples to use to check val accuracy; default is None, which uses the entire validation set. - checkpoint_name: If not None, then save model checkpoints here every epoch. """ self.model = model self.X_train = data["X_train"] self.y_train = data["y_train"] self.X_val = data["X_val"] self.y_val = data["y_val"] # Unpack keyword arguments self.update_rule = kwargs.pop("update_rule", "sgd") self.optim_config = kwargs.pop("optim_config", {}) self.lr_decay = kwargs.pop("lr_decay", 1.0) self.batch_size = kwargs.pop("batch_size", 100) self.num_epochs = kwargs.pop("num_epochs", 10) self.num_train_samples = kwargs.pop("num_train_samples", 1000) self.num_val_samples = kwargs.pop("num_val_samples", None) self.checkpoint_name = kwargs.pop("checkpoint_name", None) self.print_every = kwargs.pop("print_every", 10) self.verbose = kwargs.pop("verbose", True) # Throw an error if there are extra keyword arguments if len(kwargs) > 0: extra = ", ".join('"%s"' % k for k in list(kwargs.keys())) raise ValueError("Unrecognized arguments %s" % extra) # Make sure the update rule exists, then replace the string # name with the actual function if not hasattr(optim, self.update_rule): raise ValueError('Invalid update_rule "%s"' % self.update_rule) self.update_rule = getattr(optim, self.update_rule) self._reset() def _reset(self): """ Set up some book-keeping variables for optimization. Don't call this manually. """ # Set up some variables for book-keeping self.epoch = 0 self.best_val_acc = 0 self.best_params = {} self.loss_history = [] self.train_acc_history = [] self.val_acc_history = [] # Make a deep copy of the optim_config for each parameter self.optim_configs = {} for p in self.model.params: d = {k: v for k, v in self.optim_config.items()} self.optim_configs[p] = d def _step(self): """ Make a single gradient update. This is called by train() and should not be called manually. """ # Make a minibatch of training data num_train = self.X_train.shape[0] batch_mask = np.random.choice(num_train, self.batch_size) X_batch = self.X_train[batch_mask] y_batch = self.y_train[batch_mask] # Compute loss and gradient loss, grads = self.model.loss(X_batch, y_batch) self.loss_history.append(loss) # Perform a parameter update for p, w in self.model.params.items(): dw = grads[p] config = self.optim_configs[p] next_w, next_config = self.update_rule(w, dw, config) self.model.params[p] = next_w self.optim_configs[p] = next_config def _save_checkpoint(self): if self.checkpoint_name is None: return checkpoint = { "model": self.model, "update_rule": self.update_rule, "lr_decay": self.lr_decay, "optim_config": self.optim_config, "batch_size": self.batch_size, "num_train_samples": self.num_train_samples, "num_val_samples": self.num_val_samples, "epoch": self.epoch, "loss_history": self.loss_history, "train_acc_history": self.train_acc_history, "val_acc_history": self.val_acc_history, } filename = "%s_epoch_%d.pkl" % (self.checkpoint_name, self.epoch) if self.verbose: print('Saving checkpoint to "%s"' % filename) with open(filename, "wb") as f: pickle.dump(checkpoint, f) def check_accuracy(self, X, y, num_samples=None, batch_size=100): """ Check accuracy of the model on the provided data. Inputs: - X: Array of data, of shape (N, d_1, ..., d_k) - y: Array of labels, of shape (N,) - num_samples: If not None, subsample the data and only test the model on num_samples datapoints. - batch_size: Split X and y into batches of this size to avoid using too much memory. Returns: - acc: Scalar giving the fraction of instances that were correctly classified by the model. """ # Maybe subsample the data N = X.shape[0] if num_samples is not None and N > num_samples: mask = np.random.choice(N, num_samples) N = num_samples X = X[mask] y = y[mask] # Compute predictions in batches num_batches = N // batch_size if N % batch_size != 0: num_batches += 1 y_pred = [] for i in range(num_batches): start = i * batch_size end = (i + 1) * batch_size scores = self.model.loss(X[start:end]) y_pred.append(np.argmax(scores, axis=1)) y_pred = np.hstack(y_pred) acc = np.mean(y_pred == y) return acc def train(self): """ Run optimization to train the model. """ num_train = self.X_train.shape[0] iterations_per_epoch = max(num_train // self.batch_size, 1) num_iterations = self.num_epochs * iterations_per_epoch for t in range(num_iterations): self._step() # Maybe print training loss if self.verbose and t % self.print_every == 0: print( "(Iteration %d / %d) loss: %f" % (t + 1, num_iterations, self.loss_history[-1]) ) # At the end of every epoch, increment the epoch counter and decay # the learning rate. epoch_end = (t + 1) % iterations_per_epoch == 0 if epoch_end: self.epoch += 1 for k in self.optim_configs: self.optim_configs[k]["learning_rate"] *= self.lr_decay # Check train and val accuracy on the first iteration, the last # iteration, and at the end of each epoch. first_it = t == 0 last_it = t == num_iterations - 1 if first_it or last_it or epoch_end: train_acc = self.check_accuracy( self.X_train, self.y_train, num_samples=self.num_train_samples ) val_acc = self.check_accuracy( self.X_val, self.y_val, num_samples=self.num_val_samples ) self.train_acc_history.append(train_acc) self.val_acc_history.append(val_acc) self._save_checkpoint() if self.verbose: print( "(Epoch %d / %d) train acc: %f; val_acc: %f" % (self.epoch, self.num_epochs, train_acc, val_acc) ) # Keep track of the best model if val_acc > self.best_val_acc: self.best_val_acc = val_acc self.best_params = {} for k, v in self.model.params.items(): self.best_params[k] = v.copy() # At the end of training swap the best params into the model self.model.params = self.best_params ================================================ FILE: cs231n/assignment2/cs231n/vis_utils.py ================================================ from builtins import range from past.builtins import xrange from math import sqrt, ceil import numpy as np def visualize_grid(Xs, ubound=255.0, padding=1): """ Reshape a 4D tensor of image data to a grid for easy visualization. Inputs: - Xs: Data of shape (N, H, W, C) - ubound: Output grid will have values scaled to the range [0, ubound] - padding: The number of blank pixels between elements of the grid """ (N, H, W, C) = Xs.shape grid_size = int(ceil(sqrt(N))) grid_height = H * grid_size + padding * (grid_size - 1) grid_width = W * grid_size + padding * (grid_size - 1) grid = np.zeros((grid_height, grid_width, C)) next_idx = 0 y0, y1 = 0, H for y in range(grid_size): x0, x1 = 0, W for x in range(grid_size): if next_idx < N: img = Xs[next_idx] low, high = np.min(img), np.max(img) grid[y0:y1, x0:x1] = ubound * (img - low) / (high - low) # grid[y0:y1, x0:x1] = Xs[next_idx] next_idx += 1 x0 += W + padding x1 += W + padding y0 += H + padding y1 += H + padding # grid_max = np.max(grid) # grid_min = np.min(grid) # grid = ubound * (grid - grid_min) / (grid_max - grid_min) return grid def vis_grid(Xs): """ visualize a grid of images """ (N, H, W, C) = Xs.shape A = int(ceil(sqrt(N))) G = np.ones((A * H + A, A * W + A, C), Xs.dtype) G *= np.min(Xs) n = 0 for y in range(A): for x in range(A): if n < N: G[y * H + y : (y + 1) * H + y, x * W + x : (x + 1) * W + x, :] = Xs[ n, :, :, : ] n += 1 # normalize to [0,1] maxg = G.max() ming = G.min() G = (G - ming) / (maxg - ming) return G def vis_nn(rows): """ visualize array of arrays of images """ N = len(rows) D = len(rows[0]) H, W, C = rows[0][0].shape Xs = rows[0][0] G = np.ones((N * H + N, D * W + D, C), Xs.dtype) for y in range(N): for x in range(D): G[y * H + y : (y + 1) * H + y, x * W + x : (x + 1) * W + x, :] = rows[y][x] # normalize to [0,1] maxg = G.max() ming = G.min() G = (G - ming) / (maxg - ming) return G ================================================ FILE: cs231n/assignment2/requirements.txt ================================================ attrs==19.1.0 backcall==0.1.0 bleach==3.1.0 certifi==2019.3.9 chardet==3.0.4 colorama==0.4.1 cycler==0.10.0 Cython==0.29.16 decorator==4.4.0 defusedxml==0.5.0 entrypoints==0.3 future==0.17.1 gitdb2==2.0.5 GitPython==2.1.11 idna==2.8 ipykernel==5.1.0 ipython==7.4.0 ipython-genutils==0.2.0 ipywidgets==7.4.2 imageio==2.8.0 jedi==0.13.3 Jinja2==2.10 jsonschema==3.0.1 jupyter==1.0.0 jupyter-client==5.2.4 jupyter-console==6.0.0 jupyter-core==4.4.0 jupyterlab==0.35.4 jupyterlab-server==0.2.0 kiwisolver==1.0.1 MarkupSafe==1.1.1 matplotlib==3.0.3 mistune==0.8.4 nbconvert==5.4.1 nbdime==1.0.5 nbformat==4.4.0 notebook==5.7.8 numpy==1.16.2 pandocfilters==1.4.2 parso==0.3.4 pexpect==4.6.0 pickleshare==0.7.5 Pillow==6.0.0 prometheus-client==0.6.0 prompt-toolkit==2.0.9 ptyprocess==0.6.0 Pygments==2.3.1 pyparsing==2.3.1 pyrsistent==0.14.11 python-dateutil==2.8.0 pyzmq==18.0.1 qtconsole==4.4.3 requests==2.21.0 scipy==1.2.1 Send2Trash==1.5.0 six==1.12.0 smmap2==2.0.5 terminado==0.8.2 testpath==0.4.2 tornado==6.0.2 traitlets==4.3.2 urllib3==1.24.1 wcwidth==0.1.7 webencodings==0.5.1 widgetsnbextension==3.4.2 ================================================ FILE: cs231n/assignment3/Generative_Adversarial_Networks_PyTorch.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Generative_Adversarial_Networks_PyTorch.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"widgets":{"application/vnd.jupyter.widget-state+json":{"8e750658b17c459bb5cf51c5003d720f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_91e4daecd23e44c8b1a9b09e33d6374d","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_9ac2fec7e4484b67ac2f8810c011dfcf","IPY_MODEL_9580e42645cf4ee5bf7e8bb19a3c4abb"]}},"91e4daecd23e44c8b1a9b09e33d6374d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"9ac2fec7e4484b67ac2f8810c011dfcf":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_64626cfcbbbf430196c40af4b403d5f6","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"success","max":9912422,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":9912422,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_a59bf855461645a5864e93cb422be73e"}},"9580e42645cf4ee5bf7e8bb19a3c4abb":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_636d33873c344fbdb9ab3be23d7fc8e2","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 9913344/? [00:04<00:00, 2217101.69it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_f42b554cfa724c21ac51c7b4cb2f6023"}},"64626cfcbbbf430196c40af4b403d5f6":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"initial","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"a59bf855461645a5864e93cb422be73e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"636d33873c344fbdb9ab3be23d7fc8e2":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"f42b554cfa724c21ac51c7b4cb2f6023":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"33196e91192f4fdfadfa20594f2d090d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_38f40a5ae32f4cee81129f8d9f6cb8fc","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_90bd85baab1d4bc084af23bd42b08c72","IPY_MODEL_fda75a2dfdd943c29a8803ffa8026d1a"]}},"38f40a5ae32f4cee81129f8d9f6cb8fc":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"90bd85baab1d4bc084af23bd42b08c72":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_a491ce2a459d42269f6c55374418d0f0","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"success","max":28881,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":28881,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_dc6a75650db84dd4b2fa80b8bec1912e"}},"fda75a2dfdd943c29a8803ffa8026d1a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_397267c630e14712b07c79924ed43f88","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 29696/? [00:02<00:00, 11299.60it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_d5eba6f607b543f78259bb4e1ed483b6"}},"a491ce2a459d42269f6c55374418d0f0":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"initial","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"dc6a75650db84dd4b2fa80b8bec1912e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"397267c630e14712b07c79924ed43f88":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"d5eba6f607b543f78259bb4e1ed483b6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"c6bca5af60e6415a9e0dcdbd6c9b30dc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_ca9b12fa0a5d45d48812eae260b3ae42","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_32c69b0f22c24f848a9954b5070fcc1d","IPY_MODEL_7a76b4bde55b46ce85960831e6f39f67"]}},"ca9b12fa0a5d45d48812eae260b3ae42":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"32c69b0f22c24f848a9954b5070fcc1d":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_e6df914dc85d455ebc86f7860c65d489","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"success","max":1648877,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":1648877,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_8da843d708e04170936cd82d4456edf6"}},"7a76b4bde55b46ce85960831e6f39f67":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_3f09655455064d0f96749a5d5d15ba5e","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 1649664/? [00:01<00:00, 1119171.07it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_58985674562c4844a94abb747f7487cf"}},"e6df914dc85d455ebc86f7860c65d489":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"initial","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"8da843d708e04170936cd82d4456edf6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"3f09655455064d0f96749a5d5d15ba5e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"58985674562c4844a94abb747f7487cf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"2839fd13ba8c4754aabd7e89126146fc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_9fd07df7da1a4782a2153bda7a3fb7f2","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_ecd931dee5e14c32b9fc7bbd9466a7bc","IPY_MODEL_d60c0a70bd004ddd8afd4254aa120dd9"]}},"9fd07df7da1a4782a2153bda7a3fb7f2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"ecd931dee5e14c32b9fc7bbd9466a7bc":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_ba0c2b165190484c825d82a473fd4224","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"success","max":4542,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":4542,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_a8d6f6ae44c74a859eff4642b784e1c9"}},"d60c0a70bd004ddd8afd4254aa120dd9":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_633951ccd67a44fcbd228a5c34b20a9e","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 5120/? [00:00<00:00, 11851.04it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_4adbedd731134f53bbf1835693b0b82c"}},"ba0c2b165190484c825d82a473fd4224":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"initial","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"a8d6f6ae44c74a859eff4642b784e1c9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"633951ccd67a44fcbd228a5c34b20a9e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"4adbedd731134f53bbf1835693b0b82c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}}}}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hlWfOTz08YVC","executionInfo":{"status":"ok","timestamp":1615292753916,"user_tz":-60,"elapsed":18992,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"fe0b787f-6a8e-4fb4-e9c3-9dad06fac7b2"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment3/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment3/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"4qDJ41gf8YVJ"},"source":["# Generative Adversarial Networks (GANs)\n","\n","So far in CS231N, all the applications of neural networks that we have explored have been **discriminative models** that take an input and are trained to produce a labeled output. This has ranged from straightforward classification of image categories to sentence generation (which was still phrased as a classification problem, our labels were in vocabulary space and we’d learned a recurrence to capture multi-word labels). In this notebook, we will expand our repetoire, and build **generative models** using neural networks. Specifically, we will learn how to build models which generate novel images that resemble a set of training images.\n","\n","### What is a GAN?\n","\n","In 2014, [Goodfellow et al.](https://arxiv.org/abs/1406.2661) presented a method for training generative models called Generative Adversarial Networks (GANs for short). In a GAN, we build two different neural networks. Our first network is a traditional classification network, called the **discriminator**. We will train the discriminator to take images, and classify them as being real (belonging to the training set) or fake (not present in the training set). Our other network, called the **generator**, will take random noise as input and transform it using a neural network to produce images. The goal of the generator is to fool the discriminator into thinking the images it produced are real.\n","\n","We can think of this back and forth process of the generator ($G$) trying to fool the discriminator ($D$), and the discriminator trying to correctly classify real vs. fake as a minimax game:\n","$$\\underset{G}{\\text{minimize}}\\; \\underset{D}{\\text{maximize}}\\; \\mathbb{E}_{x \\sim p_\\text{data}}\\left[\\log D(x)\\right] + \\mathbb{E}_{z \\sim p(z)}\\left[\\log \\left(1-D(G(z))\\right)\\right]$$\n","where $z \\sim p(z)$ are the random noise samples, $G(z)$ are the generated images using the neural network generator $G$, and $D$ is the output of the discriminator, specifying the probability of an input being real. In [Goodfellow et al.](https://arxiv.org/abs/1406.2661), they analyze this minimax game and show how it relates to minimizing the Jensen-Shannon divergence between the training data distribution and the generated samples from $G$.\n","\n","To optimize this minimax game, we will aternate between taking gradient *descent* steps on the objective for $G$, and gradient *ascent* steps on the objective for $D$:\n","1. update the **generator** ($G$) to minimize the probability of the __discriminator making the correct choice__. \n","2. update the **discriminator** ($D$) to maximize the probability of the __discriminator making the correct choice__.\n","\n","While these updates are useful for analysis, they do not perform well in practice. Instead, we will use a different objective when we update the generator: maximize the probability of the **discriminator making the incorrect choice**. This small change helps to allevaiate problems with the generator gradient vanishing when the discriminator is confident. This is the standard update used in most GAN papers, and was used in the original paper from [Goodfellow et al.](https://arxiv.org/abs/1406.2661). \n","\n","In this assignment, we will alternate the following updates:\n","1. Update the generator ($G$) to maximize the probability of the discriminator making the incorrect choice on generated data:\n","$$\\underset{G}{\\text{maximize}}\\; \\mathbb{E}_{z \\sim p(z)}\\left[\\log D(G(z))\\right]$$\n","2. Update the discriminator ($D$), to maximize the probability of the discriminator making the correct choice on real and generated data:\n","$$\\underset{D}{\\text{maximize}}\\; \\mathbb{E}_{x \\sim p_\\text{data}}\\left[\\log D(x)\\right] + \\mathbb{E}_{z \\sim p(z)}\\left[\\log \\left(1-D(G(z))\\right)\\right]$$\n","\n","### What else is there?\n","Since 2014, GANs have exploded into a huge research area, with massive [workshops](https://sites.google.com/site/nips2016adversarial/), and [hundreds of new papers](https://github.com/hindupuravinash/the-gan-zoo). Compared to other approaches for generative models, they often produce the highest quality samples but are some of the most difficult and finicky models to train (see [this github repo](https://github.com/soumith/ganhacks) that contains a set of 17 hacks that are useful for getting models working). Improving the stabiilty and robustness of GAN training is an open research question, with new papers coming out every day! For a more recent tutorial on GANs, see [here](https://arxiv.org/abs/1701.00160). There is also some even more recent exciting work that changes the objective function to Wasserstein distance and yields much more stable results across model architectures: [WGAN](https://arxiv.org/abs/1701.07875), [WGAN-GP](https://arxiv.org/abs/1704.00028).\n","\n","\n","GANs are not the only way to train a generative model! For other approaches to generative modeling check out the [deep generative model chapter](http://www.deeplearningbook.org/contents/generative_models.html) of the Deep Learning [book](http://www.deeplearningbook.org). Another popular way of training neural networks as generative models is Variational Autoencoders (co-discovered [here](https://arxiv.org/abs/1312.6114) and [here](https://arxiv.org/abs/1401.4082)). Variatonal autoencoders combine neural networks with variationl inference to train deep generative models. These models tend to be far more stable and easier to train but currently don't produce samples that are as pretty as GANs.\n","\n","Here's an example of what your outputs from the 3 different models you're going to train should look like... note that GANs are sometimes finicky, so your outputs might not look exactly like this... this is just meant to be a *rough* guideline of the kind of quality you can expect:\n","\n","![caption](gan_outputs_pytorch.png)"]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"NBYPplvA8YVL"},"source":["## Setup"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"XRMPAk1W8YVL"},"source":["import torch\n","import torch.nn as nn\n","from torch.nn import init\n","import torchvision\n","import torchvision.transforms as T\n","import torch.optim as optim\n","from torch.utils.data import DataLoader\n","from torch.utils.data import sampler\n","import torchvision.datasets as dset\n","\n","import numpy as np\n","\n","import matplotlib.pyplot as plt\n","import matplotlib.gridspec as gridspec\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def show_images(images):\n"," images = np.reshape(images, [images.shape[0], -1]) # images reshape to (batch_size, D)\n"," sqrtn = int(np.ceil(np.sqrt(images.shape[0])))\n"," sqrtimg = int(np.ceil(np.sqrt(images.shape[1])))\n","\n"," fig = plt.figure(figsize=(sqrtn, sqrtn))\n"," gs = gridspec.GridSpec(sqrtn, sqrtn)\n"," gs.update(wspace=0.05, hspace=0.05)\n","\n"," for i, img in enumerate(images):\n"," ax = plt.subplot(gs[i])\n"," plt.axis('off')\n"," ax.set_xticklabels([])\n"," ax.set_yticklabels([])\n"," ax.set_aspect('equal')\n"," plt.imshow(img.reshape([sqrtimg,sqrtimg]))\n"," return \n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lor12O3p8YVM","executionInfo":{"status":"ok","timestamp":1615293442254,"user_tz":-60,"elapsed":1069,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"538a31ee-cec4-4780-cc93-7dfe38d56d2f"},"source":["# Colab users only\n","%cd drive/My\\ Drive/$FOLDERNAME/\n","%cp -r gan-checks-tf.npz /content/\n","%cd /content/"],"execution_count":null,"outputs":[{"output_type":"stream","text":["/content/drive/My Drive/cs231n/assignments/assignment3\n","/content\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"JtLX5tPE8YVM"},"source":["from cs231n.gan_pytorch import preprocess_img, deprocess_img, rel_error, count_params, ChunkSampler\n","\n","answers = dict(np.load('gan-checks-tf.npz'))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"NCdKWeYW8YVM"},"source":["## Dataset\n"," GANs are notoriously finicky with hyperparameters, and also require many training epochs. In order to make this assignment approachable without a GPU, we will be working on the MNIST dataset, which is 60,000 training and 10,000 test images. Each picture contains a centered image of white digit on black background (0 through 9). This was one of the first datasets used to train convolutional neural networks and it is fairly easy -- a standard CNN model can easily exceed 99% accuracy. \n","\n","To simplify our code here, we will use the PyTorch MNIST wrapper, which downloads and loads the MNIST dataset. See the [documentation](https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py) for more information about the interface. The default parameters will take 5,000 of the training examples and place them into a validation dataset. The data will be saved into a folder called `MNIST_data`. "]},{"cell_type":"code","metadata":{"scrolled":false,"tags":["pdf-ignore"],"colab":{"base_uri":"https://localhost:8080/","height":1000,"referenced_widgets":["8e750658b17c459bb5cf51c5003d720f","91e4daecd23e44c8b1a9b09e33d6374d","9ac2fec7e4484b67ac2f8810c011dfcf","9580e42645cf4ee5bf7e8bb19a3c4abb","64626cfcbbbf430196c40af4b403d5f6","a59bf855461645a5864e93cb422be73e","636d33873c344fbdb9ab3be23d7fc8e2","f42b554cfa724c21ac51c7b4cb2f6023","33196e91192f4fdfadfa20594f2d090d","38f40a5ae32f4cee81129f8d9f6cb8fc","90bd85baab1d4bc084af23bd42b08c72","fda75a2dfdd943c29a8803ffa8026d1a","a491ce2a459d42269f6c55374418d0f0","dc6a75650db84dd4b2fa80b8bec1912e","397267c630e14712b07c79924ed43f88","d5eba6f607b543f78259bb4e1ed483b6","c6bca5af60e6415a9e0dcdbd6c9b30dc","ca9b12fa0a5d45d48812eae260b3ae42","32c69b0f22c24f848a9954b5070fcc1d","7a76b4bde55b46ce85960831e6f39f67","e6df914dc85d455ebc86f7860c65d489","8da843d708e04170936cd82d4456edf6","3f09655455064d0f96749a5d5d15ba5e","58985674562c4844a94abb747f7487cf","2839fd13ba8c4754aabd7e89126146fc","9fd07df7da1a4782a2153bda7a3fb7f2","ecd931dee5e14c32b9fc7bbd9466a7bc","d60c0a70bd004ddd8afd4254aa120dd9","ba0c2b165190484c825d82a473fd4224","a8d6f6ae44c74a859eff4642b784e1c9","633951ccd67a44fcbd228a5c34b20a9e","4adbedd731134f53bbf1835693b0b82c"]},"id":"oo-Y36xe8YVN","executionInfo":{"status":"ok","timestamp":1615293579982,"user_tz":-60,"elapsed":11951,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"969a1b37-55ba-4ca0-ee50-d905770bfcbd"},"source":["NUM_TRAIN = 50000\n","NUM_VAL = 5000\n","\n","NOISE_DIM = 96\n","batch_size = 128\n","\n","mnist_train = dset.MNIST('./cs231n/datasets/MNIST_data', train=True, download=True,\n"," transform=T.ToTensor())\n","loader_train = DataLoader(mnist_train, batch_size=batch_size,\n"," sampler=ChunkSampler(NUM_TRAIN, 0))\n","\n","mnist_val = dset.MNIST('./cs231n/datasets/MNIST_data', train=True, download=True,\n"," transform=T.ToTensor())\n","loader_val = DataLoader(mnist_val, batch_size=batch_size,\n"," sampler=ChunkSampler(NUM_VAL, NUM_TRAIN))\n","\n","\n","imgs = loader_train.__iter__().next()[0].view(batch_size, 784).numpy().squeeze()\n","show_images(imgs)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw/train-images-idx3-ubyte.gz\n"],"name":"stdout"},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"8e750658b17c459bb5cf51c5003d720f","version_minor":0,"version_major":2},"text/plain":["HBox(children=(FloatProgress(value=0.0, max=9912422.0), HTML(value='')))"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["\n","Extracting ./cs231n/datasets/MNIST_data/MNIST/raw/train-images-idx3-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw\n","Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw/train-labels-idx1-ubyte.gz\n"],"name":"stdout"},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"33196e91192f4fdfadfa20594f2d090d","version_minor":0,"version_major":2},"text/plain":["HBox(children=(FloatProgress(value=0.0, max=28881.0), HTML(value='')))"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["\n","Extracting ./cs231n/datasets/MNIST_data/MNIST/raw/train-labels-idx1-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"],"name":"stdout"},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c6bca5af60e6415a9e0dcdbd6c9b30dc","version_minor":0,"version_major":2},"text/plain":["HBox(children=(FloatProgress(value=0.0, max=1648877.0), HTML(value='')))"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["\n","Extracting ./cs231n/datasets/MNIST_data/MNIST/raw/t10k-images-idx3-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n"],"name":"stdout"},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"2839fd13ba8c4754aabd7e89126146fc","version_minor":0,"version_major":2},"text/plain":["HBox(children=(FloatProgress(value=0.0, max=4542.0), HTML(value='')))"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["\n","Extracting ./cs231n/datasets/MNIST_data/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./cs231n/datasets/MNIST_data/MNIST/raw\n","Processing...\n","Done!\n"],"name":"stdout"},{"output_type":"stream","text":["/usr/local/lib/python3.7/dist-packages/torchvision/datasets/mnist.py:479: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n"," return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n"],"name":"stderr"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAqoAAAJkCAYAAADZZwOuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeaBU4//HX1chpdWWtRCKkApJWSNbWUqkTZYSEQpfFaUsibIkogVJtqTIUpEsRYTsUWRtUdIihdTvj/m9zzP33Jm7zplzzu3z+mfqztyZ57nnzFnez/vz/uRs3rwZwzAMwzAMw4gaW4U9AMMwDMMwDMNIhV2oGoZhGIZhGJHELlQNwzAMwzCMSGIXqoZhGIZhGEYksQtVwzAMwzAMI5LYhaphGIZhGIYRScrm92ROTk6pyq7avHlzTvL/bX7xwuYXb2x+8cbmF29sfvFmS5tfMqaoGoZhGIZhGJHELlQNwzAMwzCMSGIXqoZhGIZhGEYksQtVwzAMwzAMI5LYhaphGIZhGIYRSexC1TAMwzAMw4gk+cZTGZmlQYMGAHTv3h2Ajh07MnbsWACGDRsGwMcffxzO4AzDiAX33XcfAFdddRUAX3zxBQBnnHEGAD/++GM4AzOMDPPGG28AkJOTSC464YQTQhvLgQceCLjvWZcuXQD48MMPAfjkk09yvf7ee+/ln3/+yeIISy+mqBqGYRiGYRiRJGfz5vSZsUEFypYpUwaAypUrp3xeimP58uU54IADALjiiisAuPvuuwFo27YtABs2bABg0KBBANxyyy1pPzeswNx69eoBMGPGDAAqVaqU5zWrV68GYIcddij258QhEPjEE08E4MknnwTg2GOPBeCbb74p8HejOL++ffsCbr/baqvEvd9xxx0HwFtvvVXo94ri/DJJ2POrWLEiANtvvz0Ap59+OjvttBMAQ4cOBeDvv/8u9vsHPb+aNWsC8NFHHwFQpUoVfS6QmA/A1KlTM/mxHkHPb//99wdg6623BuCYY44B4MEHHwRg06ZNBb7H5MmTATj//PMBiqRoZWv/1PwaN24MwO233w7A0UcfHcTHeYT9/SsK99xzDwCXXXYZgLfy2LVr17S/E+T8unbt6l176PhRECeccAJvvvlmpoYQq+1XHCzw3zAMwzAMw4gdgXlU99prLwC22WYbIHH32KRJE8ApAa1atSrwfX755RcA7r//fgDOPvtsANauXQvAp59+ChRNucoWRxxxBADPP/884BRkKSBr16717vilpDZq1AhwXtWgPC5SK/S5L7zwQiCf4+fwww8HnK8nzlx44YXccMMNQF61J7+VCiM7SIHUNjrqqKMAqFu3bp7X7rrrroDzfUaR5cuXA/D2228D0LJlyzCHkxEOOuggIPFdOvfccwG3KrHbbrsB7rtVmO+U/iYjRowA4OqrrwZgzZo1GRx1ydB5QGrb0qVLAahevXqu/2+JaGVUSuq///4LOK9qWDz33HMMGDAAKLyiOnHiRM477zwApk2bFtjYtgRMUTUMwzAMwzAiScYVVb8fM50PtTBs2rTJ8wD++eefgPM2LlmyBIA//vgDKJzHMWjKly8PQP369QEYN24c4NQaPwsWLGDw4MEAPP300wDMmjULcN7HO+64I5CxykO53377AcErqlJJ9t57bwBq1KgBuGrOOFKjRg3KlSsX9jCKzJFHHglA+/btAecTlrolevXqxeLFiwG81RDt03PmzMnKWItC7dq1AaeitWvXDoDtttsOcPvazz//DCRWNOrUqQNAmzZtAOeHnD9/fpZGXXjWrVsHlK6qfh3fTjvttIy+b8eOHQEYPXo04I6rUURKqimqbkVRPt53330XgGeffTa0MQGsXLmSfv36ATBkyBDAne9/+uknwK0iiypVqnDKKacAW46iqvO6jrmqJerWrZv3mpdffhmAzp07F/p9TVE1DMMwDMMwIknGFVXdXfz+++9A4RRVqTOrVq0C4PjjjwcS/swnnngi00MMjIcffhhwdxEFUb9+fc/vIo+tlM5DDjkk8wNMQorDe++9F+jnCKnKl156KeCUuSgqVwXRrFkzAK688krvZ5qHMvaWLVuW/YEVgPxSyuHccccdAac0zpw5E8CrhL/rrru839Vr9JyqqsNGx5c777zTm5+q+/0sWLAAgObNmwMJ1UbbTX8LPUYRefsPPfTQkEeSOaZPnw7kVlR/++03wKmhWo3x+8AbN27srQbEmTivKqVC9Q99+vQB3Plw5cqVaX9Hr5F//LvvvgMSqzpRQb5n+Wf1PczP//zAAw8EP7AQ0bnwnHPOAdx29NfjJCPVvCiYomoYhmEYhmFEkowrqrpruu666wCnMH3yySde5b6YN28eACeddBLgPFjyyvXo0SPTwwuMBg0aeDmG/jtkqaUvvfQS4LJgFy9e7HWzkNdWnTeCvsuWSpEtRo0alev/UrfihHyajz76KJB7tUDqY9T8g2XLJr7iDRs2ZOTIkYDzVql6fODAgYDzg2277bZAwhd28skn53q/uXPnBj/oIqAUkEsuuSTta6TO6Dgjj2qtWrUCHl1m0Xbze+GEEjWkEkdtX0zFQw89BMCkSZO8n6nSuyCvZqVKlbyuXEoIEHq/qO2vqZDqFEe/eyoeeeQRwNU/qKOTji+p6N27N+BSaLTyplSfKHHrrbcCTjFWXU4qlHpUmtC5/OCDD/aOOX6UyqSaIqX8PPXUU172fVEwRdUwDMMwDMOIJIHlqOqOVtX/a9eu9TwdF198MeCURSmp4ssvvwRcL90oo7up6dOnex2ndIf86quvAs63IT+VKvpHjRrlZSPqzlE+LKmzShBQrmomOOSQQ9hll10y9n6Fwe9VljctTnTq1AnIrd7I16nOKVFDlf3Jirb+9vJ0+j1W+nmymqo848cffzy4wRYDZW8m88MPPwDuLl45qlJShSr+44ISGB577DEA+vfvn+t5/V9e/zj44zZu3Ajk3TaFoXnz5lStWjXlc9pfS9JpLNs0bNgQgPfffz/kkZSMv/76CyicUqzzp6rFdf6Lsro8YcIEwCnEqug/+OCD87xW6mvr1q2zNLrMI5VbCR0XXXQRkFg9V5c85d9qhWP9+vWAq1kqKYFdqIrkk6DahArJ+8888wxQuBZ5UUHt/mRxqFy5MitWrABcdJZO6orWUiyDHvND8Q49e/YEXNROJjjttNO89w8aXRArlkr8+uuvWfn8TKACG31BtZ+uWrXKOxBFDS3na0lt8+bNXvSSbpTSFQFoSSsZBeHrxioq6BjSpUsX74SxcOFCwBXlpCPbN2uZQtvWf6G6paBCvksvvTTtcezmm2/O5pCKhC7OdT7UTfy+++4b2pgygfZLXbB9/fXXQPrl+woVKng3kbK16CJdF4NRROdiCW+pGoiI/OwOceGmm24CnMA4bNgwIHGe0LVN0NjSv2EYhmEYhhFJAldUk5EC0KBBA8AthSviIA6huCo0kW1BsSpr1671Ip9k4M+EapmucKIkHHDAAd6/ZbMICv2dpF59++23gDNbRxm14FQLXD/Dhg3z2iBGBSlJUlLVgnfq1KmeeqFlGaFlNi31a5/LycnxFOPJkycHPPLioeXw4qiLaqkaV9LFNpU2pGD973//A1wRnELhk1GBrgqyooisGe+88w7gCo7jzJ577umtbkgx7t69O5B+FWbo0KGedUff46OPPjrooRaL2rVre01xtP+pUDU/XnzxxUDHlUmkaus80aFDB8A1UNG5burUqQDFKooqLqaoGoZhGIZhGJEkq4qqiqZ056UCIcXm6IpdiuTw4cNTBsaGyWGHHQbkbfl35plnejFUcUIFJ5lAxWRqG9e+ffs88UbyMUlViDKah7/5whtvvAG44PwooDD4yy+/HHCFDLr7Peuss/L8jpQBRYhopUNMmDDBa/EbR+SrrVChQsrnk4sfZs+eDWSvAUYmkJIatWNkUdCqRYcOHbyVNT+KhUs1T/mspba+8sorQN5VAyMY5M984YUXPC+/PIzpzocK8b/wwgu9n912220BjrLk1KlTx6uzKIySKq655hogd3OYqKLaBSmqalurle5sKqh+TFE1DMMwDMMwIklWFVWhAG7dUSlAXZ4IPVaoUMGL/VElfdgMHToUcIH8umvMlJqabd9ZtWrV8n1elY05OTme4rHHHnsALsxYHjKNXWrGnDlzvHgY3YUqziLKSH1U5IZQBadiqvwpFmGibeFvASpVceedd6Zz584AtGzZEnBqiNr4SrHS47hx4/JEx0WV8uXLe8Hi/fr1A/KueqT6bskbp7/Nf//9F/hYDbfvycNXXC++fJ4KmY8zigGKMjqOK/Yuuc2tvlfyft94442AO2fqXCNfak5Ojnd+V/vxqPLCCy9w/fXXA4l2zVC4CC21Do8D2l46/j/11FNAuEqqMEXVMAzDMAzDiCShKKpCVXRqp6k7rxNPPBGA22+/3QsCloclrPxNVWYqoFh3HZmu6vP7zlTFmknWr1/vvf+IESMAVyXuR/7MnJwcr5pTgc5fffUVAGPGjAGct1jq8rJly7zgbSUgqL1jFCmoyv/7778HEvOKGqruV4XtTjvtBMCiRYuA1P4+qYny+enuX3nAavkbRVTxLc/4888/741fir7mJ9+pPMeqbgWnEJ1zzjmA8x3r72kEi1am8msZnd8qk47Lp556KuCarMQRrXREGWXYqoGIjiubNm3y8ovVuECPZ555JgC777474I4zy5cv97Kp44BawOt6RXUBQscSNdpQzUZc+OCDDwC33TQPHU/DbNJjiqph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HH300QD88MMPYQyrUJx++ukATJgwAcBT4fr06cNff/0V2rhKKxUrVmT77bcH8L4fQfydTzvtNI455hgALrnkEiBh5wDYuHFjxj8vW1x44YUAXHnllWzatCnXc0OHDgVg7NixAN6KQJznW5rRtcxtt90GwODBgwH43//+l9HPMUXVMAzDMAzDiCQ58kumfDJNi67BgwfTq1evjA9Gd1dfffUVkFDupN5lQtHIVgsyeVHffffdXD+XItm+fXvAKZOZIuj5lS9fHoBvvvkGgN133x2ALl26ADBq1KhMflwetrQWcpmY34477ggktk2LFi0AWLVqFQCzZ8/O9Vr5w6Quzp8/31PLM0HY208q6U477eT97I8//gDg+OOPB+DRRx8F3D5+xBFHALB27doC3z/b86tVqxYAn376KQDvvPMO4FY6/GpVSQl7+wVNYec3cOBAT0m67rrrALjnnnsyPp4mTZp4Cr+oXbs2AAsXLizy+4W9/aSkamVHajE4j6p/n9U+/uOPPxb4/mHPTxGT11xzDQCXX345ZcsmFq2ffvppAC644IJiv3/Y8/NTsWJF7zipepx///0XgCuuuAKA0aNHF/r9rIWqYRiGYRiGETuK5VE955xz0j4nz+Vnn32W9jW6Cpc3rkqVKgAcdthhANStWxdI+B70PlH2iAl5U8ePHw84BVXo7yYvbtyQD2vBggWAU1STFarSTM+ePQHYZpttAKhTp47nxRaK/znooIOyO7g0qAK8Zs2ann/orrvuAmDlypW5Xiu15oMPPgAS+/PNN98MwIABA7Iy3pKg48ZVV10F5G2ioe/nXnvt5f1s0KBBgPNZ6zsrT722dZQoV64c4FYwPv/8cwDatGkDZF5JDYtq1aoBLs6vd+/egFPGAfr27Qs472a26devHwDff/89kNlje/Xq1TP2XtlE53N54LVKodUd7b/gjpdSVPUdjROdO3cG4N577wXc+bFr167sueeegNtPdByNc0ycVOJu3bp5SqpQush7772X0c80RdUwDMMwDMOIJMVSVJs3b+7d+Xz77be5npPqVpS8NyUFSBlIVjxatmwJwMsvv1ycoWYVeW80/ldeeQWAyy67DMg/+SBOqBJTnsY6deqEOJrMc+yxxwJOodP/FZ6erJT7Pd777bcf4HzWmfR4FoWTTjoJcKsUzz77rOerS4fu8qUM9O3b11ML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q9CLN2z7xRubX8GofaaW+ceMGQPAyJEj+eWXX0o8xpJg2y/e2PzijSmqhmEYhmEYRuwwRbUUYfOLNza/eGPzizc2v3hj84s3pqgahmEYhmEYsSNfRdUwDMMwDMMwwsIUVcMwDMMwDCOS5NtCtbR7IGx+8cLmF29sfvHG5hdvbH7xZkubXzKmqBqGYRiGYRiRxC5UDcMwDMMwjEhiF6qGYRiGYRhGJLELVcMwDMMImYEDBzJw4EA2b97M5s2b+fHHH9l+++3Zfvvtwx6aYYSKXagahmEYhmEYkSTfqv9s89RTTwHQqFEjAM4//3zmzJkT5pAMwzAMI+OUKVMGgJtuugmAnj17AvDaa68BMGfOHPbZZx8APvvssxBGaBjRIFItVGfPng3AUUcdBcDChQs58MADAfj3339L/P7Zindo1aoVAOXKlQOgYcOGAFx99dUAvPnmmwCMHj2ar7/+GoCPP/64xJ+7pcVX2Pzihc0v3tj8Mku7du0AeOKJJwAYNGgQAL179w7k82z7xZstbX7J2NK/YRiGYRiGEUkioajuueeeAHz33XcAbL311t5z5cuXB2D9+vUl/pwg7ki22247AA444AAGDhwIwIknngjAtttuW+DvL1q0CIAZM2YAcMMNNwCwZs0aAP77779Cj2VLu+PK5Py22247mjdvDkC/fv0AqFevnj435e9cfPHF/PHHH7l+tnDhQgC++OKLIo+hOPM766yzALjyyisBOP744/W7es88vzNp0iQAXn31VQCmTZsGwA477ADAt99+C8Cff/5Z1Cnki+2f8Sbb89Nqmlaidt11VwDOOOMMACZPnuytwolHHnkEgFWrVhX587I1vyOOOAKAl19+GYAff/wRgKOPPhqAv//+O4iPtf0zILRi+uGHHwKwadOmPK/ROeXWW28t9udsadsvGVNUDcMwDMMwjEgSCUW1bt26AHz++ee5fj5p0iTP75nqLqWoZOKO5JBDDgGgadOmAJ4Kd/rpp5d4fMnccsstAEycOBEonEIXtTuuvfbai/feew9wf6fiKI2iJPM74IADAKdY+ylfvjznnntusccmvvzySwBat24NOHWyMBRlflJSx44dC0CFChWKOFLHggULALd6sWLFCgD++ecf7zXXXnstQB4FqyhEbf/MNDa/zDJ06FAAevToUejf0QpHnz59AHj44YcL/bvZmt+Y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pk2bAKhevTovvvgiAC+99BIA55xzTmjjMhLUrFkTgAEDBgDQrl07wG23o48+OpRxBYX2wRYtWgBw+eWXA/DQQw+FNqZMctBBBwFQtmzuw93atWv5/vvvc/2sfPnyAHTo0AEwRdUwjNxopU3HxwYNGgDw22+/ATB//nwAJkyYwNdffw3AH3/8ke1hlipMUTUMwzAMwzAiSSiK6r777gvA+PHjAahQoULK1z355JPeXUocqVKlCgAPPvggAE2bNk372g8//DArYzIKZujQoQCceeaZuX7+77//AvDKK69kfUxBsM022wBORZRi3KNHDyDx/VuzZk04gysBO+ywAwD33nsvAK1atQJg2223BWDz5kTnwZUrV3LEEUekfI8ffvgh4FEaBVGjRg0Axo4dC7jjp7ZfTk6Op1gdd9xxQHge/yeeeAJw+82kSZOK/B4//fQTYHUKUUfHSa223HbbbQCcfvrpgDvOtGvXzlNfGzVqBMB3332X1bEGTf/+/XP9Xx7//Dj++OMBmDlzZqE/xxRVwzAMwzAMI5Lk6O405ZM5OemfLAH3338/AFdccUXK52fMmAFAt27dWLhwYcY+d/PmzTnJ/w9qfkIpBmPGjAFg7733BtwdWSpat24NwOTJk4v8ecWZX7ly5QDYaaedcv1cPsycnMRb7rfffgV+vhTHcePGAYlUg//++6/A3yssQW+//fffH3CKqbaXUGV4UL7FbO+flSpVAuD1118HnNdK7Lbbbixbtixjnxf0/Jo0aQK4u3ypbEmfp3F4P6tXrx7gVneqV68OwAEHHAAUzVuW7e2n+ey6664AnHvuuYA7huy7776ekiO1riRka361a9cGnFKllQ3/9svJyfH+PX36dMDVPRSHksxPK2L169fPM0b9P9X4k///888/A7BixQog4ZOW3zETZGv7aYV04sSJAJx88slA3vPesmXLGD16dK6fjRo1CoAff/yxyJ8b5PyqVq3qHU923HFHwHnfr7zySgD+/vtvwHn9f/jhB958803A1djUqVOn2GPI9vElHTq+FkY9zQ/t/8I/v2RMUTUMwzAMwzAiSVY9qnfddRcA5513Xr6vO+mkk7IxnMCpWrUqkN6Dm4qHH34YcHefSgMIisceewyANm3aZOw9pYS8+OKLXHzxxQD8/vvvGXv/INhll13SKqmitPmItY/5Ve+BAwcC8apU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DjkEgGnTpgHw77//Jv3e/5ohsM2veLbbbjsAZs2aRZcuXTJ67y677MK3335b0iE42Pbzl6ZNmwIwfPhwAE466SSNA4C1a9dy4403AjBx4sQSf59tv/B5/fXXAZg6dSoA9957b9afFfb8KlasCMBzzz0HwMEHHxz3/LfffkvdunUB+Oeff0r8fbnafipUvOqqqwDo2rUrAE2aNHGu288++ywAs2fPzvp7wpqf5vPggw8CcMABBwCw8847F3nt8uXLAdhnn31K/L1m+G8YhmEYhmHkHZaj6iNSSnv27AkUrqjAVTj++OMPwM31ePbZZ7n99tvjnpMCMnjwYACnGGLOnDkA/PLLLyUep4ouADp37gzAoYceCsCFF15Y7PuVyyjrG/3/77//LvHYDH+oWrUq4G6bWDVVq+Bx48YBcOWVVwJQv379uM+45557nH11woQJwQ44YnzzzTcA1KhRI+7xfv36cf/99+diSA41a9YE4NVXXwXic/7A3Z5Tp07lq6++ysEIDVG+fHmgMKr23nvvZfTeevXq0bx5c4C8yhXX9UXnDK+SeueddwJw8803+6Kkhk29evUAaN26NQAXXXQR4BaL6XpfUFBA3759AZy/v/76K+AqrFGidu3aQGH0DeDAAw8s9j077LADAOeddx4A06dPB/y5T4nFFFXDMAzDMAwjkmSVo1qjRg1nNS/Fb/LkyVkP4uyzzwbclYiUyblz5/L9998D8OijjwLw/PPPZ/09Qed4bL311gD8+eefAI6aIZVy/fr1ALz55pvOe1SVu3nz5rjnWrVqBUCbNm0AVwVLRbrzKygowLvd9f/ff/897nFtC+WtJGL16tWAWx34+eefFzvWbAgrR0f79AknnABA//79AahTp07c68qUKeP8bo888gjg5iVnqp6Av/M755xzgPjcRK12lQ+t3MYzzjgj6ecoJ1pG8TfffHO2Qwp8+5UrVw6AY489FoAVK1YA8MEHH6T9GSeffDLgns90TOs81LNnz7jjN5ag56f98OKLLwbcPPZVq1YBcNdddwFuVMZvopjD6SdBzK9Pnz4ANGvWzDne0qVRo0YsW7YMcLf9lClTsh5LWNtPiv/XX38d97juGY488kjArcfwiyDn17x5cycCJeVUaqKYN28eAM888wxQGCWVA4fyyZcsWQLAQQcdlPEYgt5+r732GgBt27bN+jOkMr/99tsZv9dyVA3DMAzDMIy8I6sc1YYNG8blYQCcddZZcf+PrWzX/5M99/HHHzufG0vPnj2d12pFefzxxwOuwholHn/8cQDHG05jfeutt4p9b6VKlQA3V3T+/PlAekpqpmzcuNFRcq+77jrAVVLvueeeuNdWr14dgFNOOcV5bLfddgNcv0bl7IwfPx5wFa18Yu+993bUa3nCSaETyVRocOes/GS1qDzttNOCGXAStL3OPffcIs+p+lZKsZRUqYV33HEH4Hpt3n333WyzzTYAjjuFKImyGhQ6R2j76Rg65phjADc/LBE77bQT4FbuSkkVb7zxBkBSNTVopkyZ4uSiapsI+d4qH7m04VUipe5vt912jprsVRrl2fnRRx+FMMLkaN/bsGFDTscRBjpf6jzi5frrrwf8V1KDROfv66+/3jm3iqeeegpwc/0TnRtUW/LJJ58Arhp71FFHAfD0008HMOrMOfzww9l3333Teu1vv/0GwOLFiznssMPintN1QW5FfmGKqmEYhmEYhhFJslJUFyxY4HiDNmrUCIB27dqlfM+GDRuyUkHV1WLx4sVA0SrcKKHqRlW/f/fddwlfJwVy+vTpRVQ7IZU5CLwrw1T88MMPANx6662OyqRVYe/evQGoVasW4K608olTTz0VKKxElXrv3Sbq6rP77rsDhb8FFB4HCxcujHut3nvEEUcENuZUSMWX44QYMmSI4+HnzWFUDrVUYDF//nxHEZCXnpTVd955B3DzzoJCkQa5YiRjm222oXv37nGPKddKSmQqRVXnsz322AOAn3/+GXDzXLXNw0b5fm3btnX+rarqoUOHAjBjxoycjM1Ptt9+e8cHVj7UqjqWF3CiiIbOpcq7FurStddeewU36DRQpGXDhg0JoxypyPXYM+XSSy8FKHIcKtL24osvhj6mkqIWrzvuuKOjfqrdq86BqZwLdtllF8CN0KgWRfUquUbn11NOOYXKlSsnfI2ir7ruV6tWDQg3qm2KqmEYhmEYhhFJSuyjKsVBf/2mR48eQNHVdBTRCkvKqhQqb4WfFBBV9seinNRhw4YFNs5sqFChgqOmeb1WP/zwQ8D1k8snlJca6y2rqs3TTz8dcNU8rYqltm211VbO+6W6ClWAhoXU4MMPPzzh848++qjjxaixSn3Vfutl3bp1Tv6jcv7kCykvRPnwfvnllyWeQyKkrsnbz4vUtilTphTpvKX9ce3atUk/X/NR3qNQHq8q61955ZUMR14yFDl64okn4sYBrpJ62223AfnlsSmUo9esWTMABg0a5OQJ+8GOO+4IuKpsrnKLdVxmW62v95ctG21NqVKlSo6iKtTVTucKOYioY1XVqlWd67qfHfD8JPb317+9f5NRoUIF5zqu89TDDz8MJD/nhs2oUaOA+BoUL8p91z2eIqh+Hq/FEXnD/8svvxzIj5OxbDd++uknwL0RVfs7WTfEhnSUWK6L7NKlS+MejwojRoxI2gxANh1KpFZoORNboLBRyopuSGJR8ZvSHoRsx3QTMXPmzCLtccW7777r21jTQWb9KuYSOiFqnwTXSkt/U+EtwNJ7GjRoALhhvUS/ox8ku0FVQZFuAHr27OmE4GTTlE5IfODAgYBrrabwpG7Ac2XMrd9TqU/gXijSaaccFbTQ0DyOO+44AKd1pm5asmHZsmVJjz8ZjufqBlV4i44zoVmzZs77on79e/jhh50wso5DFTXKvlCL6JEjRwKFIoH3mFWoXWJArlFh2HXXXeekc+mvrtkvvfRSwvced9xxzg2g0gB1YxgVUqWoqfhNYoXQXEaPHu1sr6CJ9jLNMAzDMAzD+M8SaUW1UaNGzkpSK8u5c+fmckgpkcWT7Couu+wywG2f5uWPP/5wVpm5XvkXR9WqVZ2VlKxWVFy06667Am74oH379kChvdENN9wAuEnkUUGhbLUaXbNmjVOw9+CDDwLufNRkQrZcSiJXojy4hWRKFwg79J8MqXCpConSQa1U9RspOlClShWgaLFAUChUr3mp7d8///zDTTfdBLjHXXG0bNmyiFqgolAptWGH/EWHDh2A+PCirJa8Sn8yypYt6zTqUOGjio+UruMtoPMbNZlIVqiRCFn5qGHKiBEjEr5ur732cj7fSzKLpHxC4eIoo+iSCm0A3n//fQCuueYawI1OKMKh4kYoTJ8CtwWnCgaDitBkiiJIRx55ZJGCcTXeUNrTypUrATeNSCk64KYwBmE3mQ2KdCiMnwhZ9amYSiiSE2bxtCmqhmEYhmEYRiSJtKI6YsQIR1FQa0qZk0cZ5dUlU3ZkUn3WWWdFXkkVgwcPdlQKqVkqGlOx2IABAwDiLGNk/KtWgmqGkCuUW6lEcNkvDR482LEVU36wxqocXBVcxSqpQrk6UWtE4VcEQtGCBQsWAK6iqoiA2stq3/YbKXLKz5SSKjVj+PDhzJw5M6PPvPfeex1FWLz88suAq7iHjfY15VDH5jZK1U6GbOd0PDZq1MjJM/Oi+am4I5XFjh/ovP1/7Z15oFXj/sY/R6JBkikVLkmRSoYrQyQhFUU0GOpKuBlCMiUaZWpCt0IpZBYlyXylyZQx6SZT0UBSyJj0+2P/nvXus87eu33O2WuvtU7fzz+nzp7e96y11/C8z/f5yq+oY4nUtrfeestrF6qGE1JU0+FvaQyucE51AWGhCJ/SIm950Mp3cdHxU8VCu+66q3dekE9eirB8mclKKiT2Zx0/dJ6XMqv3TxfxmC/UDvy0007zjj0qBFTYvXz6q1at8p4LiZoGrQZEpXhKKyydO3cG3IoiuL+1mhxsbnXs008/9fbPXO3v6TBF1TAMwzAMw4gkkVRUpSaceuqpnqIQNaUqFapkVVKBYo3k8dAdpe7Mgg5LzzX+CDKpa/opv5g8uQMHDvQUE/l2FFWiO9V8o2QGKXRqWVu/fv0i1Zv+9nap2sJpHtqmYZEuXkQKVq6QzyzZfxUkUgDkGVWYuO72ta9pH8wGhbDLYw2uwcbZZ58NuISHfCMlye/pXLBgQVp1XH8DqVvVq1cHEpXTUpz96mPz5s0B5y9funRpLoZfBO2XK1asAIoqS+k8ptmgBgHgtpd8ylK3wkKqWia0uqPjir+y//TTT/e2edRSYKR8JkcSys+pbS2fqT+GUYH5gwcP9lqv/+c//wFcw43GjRsDm19FyBc//vgjF110EQCzZ88GXM2CKuf9reHHjBnjtSiPCvIUS1FNRkk12f7Np02b5q1+pIrazCWmqBqGYRiGYRiRJJKKqu5QKlWq5CkCmUK7o4Kqw+Xb0J1yvXr1AKdGqSp+6NChRSrq4oxUDFX6//zzz162qiok5V9VOHSuFb/NIa9X//79AadyP/bYY3z55ZeAy8X77LPPAKfCypOUjFprJueUhkEq32xZQPuNX6FSq9pkL6I8xlLt9Rr5WaV4SLVMzvCcNWsW4PI3w0LzlVojdtllF89P+8MPPwAwbtw4wCVNyGfasGFDILH/SpnyK5nKhw1KSRXTp0/P+XvecccdQOHvoyqUpcyFjVq4ap9r1aoVhxxyCOAye4VfiUtG+chSHqPM/PnzAff98jc5kFKndrd//fWXl58qorL9UiGlWPud2mcrqUBNGXROUF5slNBKSiq0zxYHvUYpIkFhiqphGIZhGIYRSSKlqMqbKrVt06ZN9OrVC4hutb8Uwssuu8zzpEqt++CDDwCXryYPiHyRTZs2TdvVoixw9913e0qO2pKqM438WPKZ5avzilr1qauI2lD+85//9CqupXxsjvXr13uZgWEjNaN79+6Ffq+OQFEZZ3FRVaq/XaHyF+VpS0Y+RT9SPLSvLV++3FMWleMYNula0e62226en1PKlLyp8gZOmDABcCsB4LIOlWDhr7yOA0rb0EpUt27dvN/LA5iug1lYaPXsqKOOAhIqt9R6ed+Vi5suoWDevHmRPT9oXskoMUPV/uoeJzSX5IQJqchaBYgDOuZov/R3D9OxOIqcf/75OX2/Pn365PT90mGKqmEYhmEYhhFJIqWoqhpXlWmrV6+OfLW/8iR79uzpVTP6q+aktA4bNgxwnY9at24d2TvmXPH2228DLlN21KhRgKsIlSqU717WGpd8jJ06dfK8U+pZLd/pAw88ACSyVpPp169fZJIbpGb4UYej++67r1Tvr5w8v/qjTivyTeaa8ePHA+n7aWfDySefDDg1QWM95phjQkufSIdU01Q9tKVi6acyUv1JGlJ6brjhBubNmwc4L7hWC4LKuw0CVZbr+ymmTp2atmtV2CgnVskSCxYs8LrVZZtIsHHjxsj0vPdz5JFHFvr/+vXrU3psk3njjTeK/E6Zq8rg1vHEnzATBeTvlHofdHZoPpk5c6aXlZ0thx56qHd+EVo5zTWRuFDVhalOJNrhFfIfRQ444ADAXXxu2LDB+3c6dMG6JXLvvfcCLkxYoeTa5mG1PFy5ciWQKNDQko0ikWQ3ufTSSwu95rXXXgOiFcKt5TTtY7rYVszR1ltvXapQdxUk+Zfo1FI1qEYOWh7Vz+KgokwVNaqNrI4rUbtIBbf0r4saf+FNMi+88ALg5qFtrm2iY1QyuvD3X/RFEZ0Etb10M6t9QXFBUUaxfMVBS+cqGIwDDz74oHfs8TfREIp+0z6+/fbbezY5XaDqpjJqxdM77bST1xyjLF2giunTp2fdZlvXa1OmTPGKeNUsIKiYRlv6NwzDMAzDMCJJJBRV3d0rMF93XFoijyIqwlE0xa233rrZOxLdKUtiDzvSKAx0VypFtUaNGmEOpxAKjVcBzy233ALAKaecAri7fhWAhd3eLxmpalLZ2rdvD7iA/Bo1aqQt1MmEvpNqNSukKpdEMQoafScVdaO4HLVrjHLbYsXVad/LpKjKFiXlXwpcciMD2RyeeeYZwNkFwmpokA06TmoZUUrqRx99BLi2q6tXrw5hdMGjYts4KXe1atXy9j+trvhXBbS8r+Ppzjvv7FmnLrzwQiB6SqqKUQcOHOhtDxUv6rpFtiQpjWWN8uXLAy5uS6t0NWvW9M6BKpJevnx5IGMwRdUwDMMwDMOIJJFQVFXQIm+qwrejGEnl9/6pWGHIkCGbfW2PHj2AondkWzKNGjUKewhF0N2hFAB5rxR7FCUlNVv23HPPYiuqTZs29Yqw6tSpU+gxKXNr1qzJzQBzgOJwFISv0HwV3ERZSfUjdV/xfNdcc02R1Qcp//4ILx1Hn3zySS6++GIgWtspHTq2Kih+m222AZwndfjw4UDZVVKFYg2LW9ySTxYvXgw4H3G7du2846MiCQ866KCUr5WvceDAgd45cHOFWGEhD23r1q29dqGKz5T3XUqq5hC1drfZ0LdvX6+ATQV8/u+hVteSUYGcmh8EhSmqhmEYhmEYRiQJVVGVL8V/RxLlan+105R3RYHTqSr6VT1+6623AlC/fn2gdFE7ZY2gWzgWh5NOOglwaqFQW0t/S8AoongjeVTF5MmTvSp4KTZ+pHToe9mnTx8vWF/7t4LxVVkeJdRGU/OUGqyWm3FC7WDVjvHee+/12mjKa9umTZuUr9Hj8+bN834XdapUqeIp4YosEmrJ/NBDD+V9XGGwxx57AE7JiiLTpk0D3KoTFE1HSYdWFO+4447IKqla5ZVivG7dOs8brXoA/0rwwoULATe/OFGtWrUStTseNGhQAKMpiimqhmEYhmEYRiQJVVH135E8/fTTQDTDfuVJVfi0SFan1AK2QYMGQKISEvB8YsowlAobV1RJrtzRFStWZP1af3vSqKjLlSpV8poRqLpT/mN/xXuUUbMJ5dZKHd111129x+TZ3HnnnQE477zzAOcRVNU8uG2sKvSpU6cGOv7iokrjIUOG0Lt3b8Dtj/qeqZI+zvz2229e0oh+lgWU9frwww97x015M1u0aAFEuyVlEMifrJarUUTH7auuugpIeDmV1iDki9bKhlJ8Fi1aBCQaGkQVVbhXrFgRSPg269atC7i2oZ06dSr0mnbt2uVxhCVD1yuHH354id/jxRdfBODMM8/0WjQHjSmqhmEYhmEYRiQpyOQRKSgoCMRAIu+m2ljuv//+gKucT9U+MBds2rSpIPn/xZmfshhV5aasQt1RfPfdd1SrVg3A+6mcVPnM5H0MqiqwNPPLBnUnmjlzJuA6/ajFaCZUvaz3UIWy2j1m46ULYn6qFJ80aZLn6wwrrzGX89PdvxI0SpLxN3/+fK/CVbmppSGI7Sd1eODAgfz555+AqzZWZXK+CPr7Fza5nJ+SCtSRrmPHjp7ao1Ur7bv5Imrb77vvvvPyb+VPLg1Rm1+uyeX83n//fcB14isoKEjrp1W+dtAJNrmYn1aGtbrboUOHzb5G5+Zu3boBrl33t99+W9yPz4h/fsmYomoYhmEYhmFEklA8qvJy1qtXD3CKlao+9XiUvKrKzmzZsiUAL7/8MuCyxbbbbjvP06hKOFVGR9lrVBy++eYbwN1lyvOo/LxskN/spptuAihV//lcoLvE9u3be9tLqRNxzmv89NNPgcJ+07KIkjTAeVLzraQa2SMfo5RUdSmaPXs2Xbt2BShRB7WyiO3H4dGzZ0/AdUfTKjC4qn51AYxTlb9WgDt37lzoZ9QJZelfBTVa+tcysEzWaqOmmJlcYUsfuUXRRdp+fho1auQZzEeOHAm4i/aSGOlzOb+mTZsChQ9EsqDoIi/f2P5ZfFSgUalSJa9RQ1hFGrb90qNCvQkTJgDQrFkzwJ0DolCIYtsv3tj84o0t/RuGYRiGYRixIxRFVa0NtdSqQg+Zkps3bw7kvoXqlnZHYvNLj5b1d9xxRwA+/PBDLyg9rHaTtv3ijc2vKAqtf+SRRwDXjEDHeLXbjAK2/eKNzS/emKJqGIZhGIZhxI5QFNWw2NLuSGx+8cLmF29sfkVRvFKNGjUAV3cQ1qpFJmz7xRubX7wxRdUwDMMwDMOIHRkVVcMwDMMwDMMIC1NUDcMwDMMwjEhiF6qGYRiGYRhGJMnYmaqsm3VtfvHC5hdvbH7xxuYXb2x+8WZLm18ypqgahmEYhmEYkcQuVA3DMAzDMIxIYheqhmEYhmEYRiSxC1XDMAzDMAwjktiFqmEYhmEYhhFJ7ELVMAzDMAyjBOy1117stddejB07lrFjx7JmzRrWrFlDq1atKFeuHOXKlQt7iLEnY2eqsh5/YPOLFza/eGPzyy1du3YFYN999wXgxhtvDPLjbPuVkr322guAzz//HIDatWsDsHTp0lx+TFqisv3q1asHwKJFiygoSAxJ1yEjRowA4Kqrrir2++Z7flttldD5Hn30UQA6dOhQ5DnVqlUD4Mcffyz15+V7fu3atQPgiiuuAODYY48F4O+//y7y3OOOOw6A119/vcSfZ/FUhmEYhmEYRuzIGPhvlIwqVaoAsMMOOxT6fZ06dQBYsmQJAN988433WKVKlQB4/PHHAWjWrBkARx99NAAffvhhgCPePFWrVqVLly6AU2523nlnwN1ZTp8+HYBp06YBMG7cuHwPMy/ozvmJJ56gR48eANx7772AUwYMI2jGjx9f6P8DBw4E4K+//gpjOEaWSJG65pprALjkkkvCHE7e6datG5A4Vup4uWLFCgCef/750MaVLRUrVgTg/vvvB4oqqVLMa9WqxQUXXADAsGHD8jfAElC/fn3+8Y9/eP8G6N+/P+CuTbTfpjrHTZkyBYDJkycDcOGFF+Z0fKaoGoZhGIZhGJHEFNUcstNOOwFOcezZsydQ9A5EiuqCBQs8f8s777wDwJ577glA5cqVAec/C0tRlQr8/PPPs/feexd6TPPSnVarVq0AaNy4MQDvvvsu7733Xr6Gmjeuu+46IDHvMWPGAE4JWLZsWWjjKi5SwqX877777gCcddZZ3nOk9my33XYA/PTTT4BTg+655578DNZIy9ZbJw7jZ599NgAPPPBAmMMxskRezS2FbbbZBnD7aTKdOnUCYN68eXkdU3HQ+CdOnAg4JXXt2rUAjB49GoABAwYA8Nprr3nfzahSq1YtAJ599lnPQ12SVcGqVasC7npB1y+//PJLDkZpiqphGIZhGIYRUUK93N92220BaNq0KQCtW7cGXHXZwQcf7D1XHsB///vfeRxh8ZBf8dJLL834PKmkdevW5cQTTwSgc+fOAF4VZNjobvG2224DEkrvmjVrAHjooYcAeOGFFwDnYfnPf/4DQI0aNQC47LLLOPfcc/M2ZiMzuutVNecJJ5wAFFZQ/ahaVasAUlRfeeWVwMYZBoqQ8SsgGzduBMz3GSY6JkrVb9OmDZDYf8877zzAHZNmzJgBuEpsI3z22GMPwCmRNWvWLPKcRYsW5XVMxaVChQreKlLHjh0LPTZhwgQA+vXrV+j3b775JnfffXd+BlhC5LeVPxXgk08+Adw1Vzp23nlnbrjhhkK/O+aYYwB3Tffiiy/mZJymqBqGYRiGYRiRJG+KaoMGDbw74ubNmwPQokWLQv8XuoNOzus6//zzgegqqmPHjuVf//pXod8999xzAFx88cUpX7N06VLvzl/+VlXchY3usPTzhx9+8HxEM2fOTPma9u3bA6k9SGWBBg0aAM7LCfDrr78CTnmLMsomvP766zM+b926dUBCRVWG3ptvvhns4PKA1FKpCJdccomXc3jQQQcBcPzxxxd6ze233w44X7IRDE2bNi2iVAl5A1NVEstPp2NOkyZNAKf4r169OudjzRXyqB511FEAzJ07N8zhBIYyNv3neXCV87/99ls+h1Rszj33XC9VQ/ucVhCvvvrqlK+59tpr8zO4UvDZZ58BziMM8NRTT2X12jp16hRRVIPCFFXDMAzDMAwjkgSmqF5++eWAu1I/4IADPEXV341CfPrpp4C7ypdnFeCxxx4LaqilIrliWp5bKalt27bN+NrHH3+cOXPmAE650d9m/vz5gMslyzdjx44FnC/srrvu4ocffkj53F133RVwiqrQHMoKUm2UHwvQq1cvAJYvXx7KmLJl3LhxRZTuP//8E3CKwMKFCwGnQn388cd5HGHuKF++PAAHHngg4LabKlLlcUwm3THpiCOOCGycWyLyr++3334AXjZz27Zt2XHHHVO+xr9tNmzYACRWpPR+qjLWNpYfO4qKqtI25NXUmMuaoirft84hfn7//XemTp3q/TuKKIVn+PDh3v4n32nv3r1DG1euyVZFBdhll10AuPPOO4s8ps5Us2fPzs3A/h9TVA3DMAzDMIxIEpiiOnjwYMDd6Sajq24pj1JL169fD7iuTMmKqt4vasjDucMOO3h3XJrX5rj44ot54403AKhevTrgVAN5rcJC+WfKhMuEFCpV/7/88suA8/CUFfyKz88//8yqVatCGk3xOPTQQz3FXyj/L47bSX5T3d3XqFGD7t27A06pUrpBaXjyySdL/R4GXHTRRYDzRyu/MRNSrv744w/AKY46T8yaNcurKpbPU8fTKH4vlRyh750sUQPdAAAgAElEQVRU33RKctzR9/Cuu+4q9Puff/4ZSHjmn3322byPqziokr9ixYreOVFJOFL2tzTUcbJly5be71TXoJVh1W7kisAuVLXsrSIFcC3/tKOmQxeqBQUFXtB9VJdWNb6ZM2d6y4QyGL/22muAszT4eeWVV7yoKhHVC/Jk6tatC7j2roqx0M6p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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"faSXT_yr8YVO"},"source":["## Random Noise\n","Generate uniform noise from -1 to 1 with shape `[batch_size, dim]`.\n","\n","Implement `sample_noise` in `cs231n/gan_pytorch.py`.\n","\n","Hint: use `torch.rand`.\n","\n","Make sure noise is the correct shape and type:"]},{"cell_type":"code","metadata":{"id":"sample_noise_test","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1615294363409,"user_tz":-60,"elapsed":738,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"22d5153e-2a55-410f-b08f-70b76828f59d"},"source":["from cs231n.gan_pytorch import sample_noise\n","\n","def test_sample_noise(): \n"," batch_size = 3\n"," dim = 4\n"," torch.manual_seed(231)\n"," z = sample_noise(batch_size, dim)\n"," np_z = z.cpu().numpy()\n"," assert np_z.shape == (batch_size, dim)\n"," assert torch.is_tensor(z)\n"," assert np.all(np_z >= -1.0) and np.all(np_z <= 1.0)\n"," assert np.any(np_z < 0.0) and np.any(np_z > 0.0)\n"," print('All tests passed!')\n"," \n","test_sample_noise()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["All tests passed!\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"Jzu5uOF58YVO"},"source":["## Flatten\n","\n","Recall our Flatten operation from previous notebooks... this time we also provide an Unflatten, which you might want to use when implementing the convolutional generator. We also provide a weight initializer (and call it for you) that uses Xavier initialization instead of PyTorch's uniform default."]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"CWnbSB3K8YVP"},"source":["from cs231n.gan_pytorch import Flatten, Unflatten, initialize_weights"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"qCeAVOAa8YVP"},"source":["## CPU / GPU\n","By default all code will run on CPU. GPUs are not needed for this assignment, but will help you to train your models faster. If you do want to run the code on a GPU, then change the `dtype` variable in the following cell.\n","**If you are a Colab user, it is recommeded to change colab runtime to GPU.**"]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"SMM8br5Q8YVP"},"source":["dtype = torch.FloatTensor\n","#dtype = torch.cuda.FloatTensor ## UNCOMMENT THIS LINE IF YOU'RE ON A GPU!"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"P3WzqJPF8YVQ"},"source":["# Discriminator\n","Our first step is to build a discriminator. Fill in the architecture as part of the `nn.Sequential` constructor in the function below. All fully connected layers should include bias terms. The architecture is:\n"," * Fully connected layer with input size 784 and output size 256\n"," * LeakyReLU with alpha 0.01\n"," * Fully connected layer with input_size 256 and output size 256\n"," * LeakyReLU with alpha 0.01\n"," * Fully connected layer with input size 256 and output size 1\n"," \n","Recall that the Leaky ReLU nonlinearity computes $f(x) = \\max(\\alpha x, x)$ for some fixed constant $\\alpha$; for the LeakyReLU nonlinearities in the architecture above we set $\\alpha=0.01$.\n"," \n","The output of the discriminator should have shape `[batch_size, 1]`, and contain real numbers corresponding to the scores that each of the `batch_size` inputs is a real image.\n","\n","Implement `discriminator` in `cs231n/gan_pytorch.py`"]},{"cell_type":"markdown","metadata":{"id":"-XOMndlO8YVQ"},"source":["Test to make sure the number of parameters in the discriminator is correct:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_YqQMXqB8YVR","executionInfo":{"status":"ok","timestamp":1615294991314,"user_tz":-60,"elapsed":731,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"36df9bb1-6af6-4ba0-f2ce-ee9d39e60a11"},"source":["from cs231n.gan_pytorch import discriminator\n","\n","def test_discriminator(true_count=267009):\n"," model = discriminator()\n"," cur_count = count_params(model)\n"," if cur_count != true_count:\n"," print('Incorrect number of parameters in discriminator. Check your achitecture.')\n"," else:\n"," print('Correct number of parameters in discriminator.') \n","\n","test_discriminator()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Correct number of parameters in discriminator.\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Sj9zzX8K8YVR"},"source":["# Generator\n","Now to build the generator network:\n"," * Fully connected layer from noise_dim to 1024\n"," * `ReLU`\n"," * Fully connected layer with size 1024 \n"," * `ReLU`\n"," * Fully connected layer with size 784\n"," * `TanH` (to clip the image to be in the range of [-1,1])\n"," \n"," Implement `generator` in `cs231n/gan_pytorch.py`"]},{"cell_type":"markdown","metadata":{"id":"Bqw2SpPW8YVR"},"source":["Test to make sure the number of parameters in the generator is correct:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Dq_X_Fj48YVR","executionInfo":{"status":"ok","timestamp":1615295222025,"user_tz":-60,"elapsed":1404,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"387abc2c-f341-4aa6-dcc4-71344f2b6807"},"source":["from cs231n.gan_pytorch import generator\n","\n","def test_generator(true_count=1858320):\n"," model = generator(4)\n"," cur_count = count_params(model)\n"," if cur_count != true_count:\n"," print('Incorrect number of parameters in generator. Check your achitecture.')\n"," else:\n"," print('Correct number of parameters in generator.')\n","\n","test_generator()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Correct number of parameters in generator.\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"-qz9eJDM8YVS"},"source":["# GAN Loss\n","\n","Compute the generator and discriminator loss. The generator loss is:\n","$$\\ell_G = -\\mathbb{E}_{z \\sim p(z)}\\left[\\log D(G(z))\\right]$$\n","and the discriminator loss is:\n","$$ \\ell_D = -\\mathbb{E}_{x \\sim p_\\text{data}}\\left[\\log D(x)\\right] - \\mathbb{E}_{z \\sim p(z)}\\left[\\log \\left(1-D(G(z))\\right)\\right]$$\n","Note that these are negated from the equations presented earlier as we will be *minimizing* these losses.\n","\n","**HINTS**: You should use the `bce_loss` function defined below to compute the binary cross entropy loss which is needed to compute the log probability of the true label given the logits output from the discriminator. Given a score $s\\in\\mathbb{R}$ and a label $y\\in\\{0, 1\\}$, the binary cross entropy loss is\n","\n","$$ bce(s, y) = -y * \\log(s) - (1 - y) * \\log(1 - s) $$\n","\n","A naive implementation of this formula can be numerically unstable, so we have provided a numerically stable implementation for you below.\n","\n","You will also need to compute labels corresponding to real or fake and use the logit arguments to determine their size. Make sure you cast these labels to the correct data type using the global `dtype` variable, for example:\n","\n","\n","`true_labels = torch.ones(size).type(dtype)`\n","\n","Instead of computing the expectation of $\\log D(G(z))$, $\\log D(x)$ and $\\log \\left(1-D(G(z))\\right)$, we will be averaging over elements of the minibatch, so make sure to combine the loss by averaging instead of summing.\n","\n","Implement `bce_loss`, `discriminator_loss`, `generator_loss` in `cs231n/gan_pytorch.py`"]},{"cell_type":"markdown","metadata":{"id":"EimPYVYf8YVS"},"source":["Test your generator and discriminator loss. You should see errors < 1e-7."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_lQITHqF8YVT","executionInfo":{"status":"ok","timestamp":1615298568823,"user_tz":-60,"elapsed":888,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"ceac8f1f-9f7c-4e75-9f22-ad8c7fa71de9"},"source":["from cs231n.gan_pytorch import bce_loss, discriminator_loss, generator_loss\n","\n","def test_discriminator_loss(logits_real, logits_fake, d_loss_true):\n"," d_loss = discriminator_loss(torch.Tensor(logits_real).type(dtype),\n"," torch.Tensor(logits_fake).type(dtype)).cpu().numpy()\n"," print(\"Maximum error in d_loss: %g\"%rel_error(d_loss_true, d_loss))\n","\n","test_discriminator_loss(answers['logits_real'], answers['logits_fake'],\n"," answers['d_loss_true'])"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Maximum error in d_loss: 2.83811e-08\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ETtGgbVI8YVU","executionInfo":{"status":"ok","timestamp":1615298573433,"user_tz":-60,"elapsed":750,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"49b1ba35-46b0-49f0-cc18-36eb19f7a45d"},"source":["def test_generator_loss(logits_fake, g_loss_true):\n"," g_loss = generator_loss(torch.Tensor(logits_fake).type(dtype)).cpu().numpy()\n"," print(\"Maximum error in g_loss: %g\"%rel_error(g_loss_true, g_loss))\n","\n","test_generator_loss(answers['logits_fake'], answers['g_loss_true'])"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Maximum error in g_loss: 4.4518e-09\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"EAv8RqN28YVV"},"source":["# Optimizing our loss\n","Make a function that returns an `optim.Adam` optimizer for the given model with a 1e-3 learning rate, beta1=0.5, beta2=0.999. You'll use this to construct optimizers for the generators and discriminators for the rest of the notebook.\n","\n","Implement `get_optimizer` in `cs231n/gan_pytorch.py`"]},{"cell_type":"markdown","metadata":{"id":"TsBzlktk8YVV"},"source":["# Training a GAN!\n","\n","We provide you the main training loop... you won't need to change `run_a_gan` in `cs231n/gan_pytorch.py`, but we encourage you to read through and understand it. "]},{"cell_type":"code","metadata":{"tags":["pdf-ignore"],"id":"k0eGTn7C8YVV"},"source":["from cs231n.gan_pytorch import get_optimizer, run_a_gan\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"scrolled":true,"colab":{"base_uri":"https://localhost:8080/"},"id":"fSILs_5j8YVV","executionInfo":{"status":"ok","timestamp":1615300006584,"user_tz":-60,"elapsed":284499,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"91da06d9-a1d7-4d33-c867-282afba19492"},"source":["# Make the discriminator\n","D = discriminator().type(dtype)\n","\n","# Make the generator\n","G = generator().type(dtype)\n","\n","# Use the function you wrote earlier to get optimizers for the Discriminator and the Generator\n","D_solver = get_optimizer(D)\n","G_solver = get_optimizer(G)\n","# Run it!\n","images = run_a_gan(D, G, D_solver, G_solver, discriminator_loss, generator_loss, loader_train)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0, D: 1.385, G:0.7186\n","Iter: 250, D: 1.23, G:0.9793\n","Iter: 500, D: 1.046, G:1.209\n","Iter: 750, D: 1.268, G:0.9514\n","Iter: 1000, D: 1.402, G:0.904\n","Iter: 1250, D: 1.432, G:0.8911\n","Iter: 1500, D: 1.338, G:1.024\n","Iter: 1750, D: 1.312, G:0.9227\n","Iter: 2000, D: 1.265, G:0.9955\n","Iter: 2250, D: 1.312, G:0.889\n","Iter: 2500, D: 1.376, G:0.9084\n","Iter: 2750, D: 1.286, G:0.8057\n","Iter: 3000, D: 1.32, G:0.9126\n","Iter: 3250, D: 1.444, G:0.3515\n","Iter: 3500, D: 1.411, G:0.7592\n","Iter: 3750, D: 1.39, G:0.7766\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Vh23cRVx8YVW"},"source":["Run the cell below to show the generated images."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"o1vrYMLC8YVW","executionInfo":{"status":"ok","timestamp":1615300057335,"user_tz":-60,"elapsed":9351,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f4cf4e3e-bd60-4f4e-ddee-6f3a0218e366"},"source":["numIter = 0\n","for img in images:\n"," print(\"Iter: {}\".format(numIter))\n"," show_images(img)\n"," plt.show()\n"," numIter += 250\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdabye49U3/hUVNYWYQiIi5qKEaIi55qHGloq2FDVV3aWU0qJUDVVCDUHUWEPUkKeKxhgqpsaUijGSkEgkQRIxNBJcz4s833Ve+0j29b/f/e99f871Zid7X9d5HtO5fuv3W+s4zk6NRiNqq622jmEL/f/dgNpqq+2/b/UDW1ttHcjqB7a22jqQ1Q9sbbV1IKsf2Npq60C2cKs/XnDBBY2IiEcffTQiIjbccMOIiBg1alREROy4446x5pprRkTEVVddFRERW2yxRURErLLKKhERceedd0ZExOjRoyMiYtttt42IiG9/+9sRETFr1qyYO3duRETMmTMnIiL69esXERGvvvpqRERsueWWERHx4IMPRkTEG2+8ERER66yzTkREvP766xER8d3vfjdWW221iIgYP358RERcfvnlERFx0003RUREz549OzX38dZbb21ERDz00EMREbHJJptERMSNN94YERHrrrtuHHzwwRERMXLkyIiI+PzzzyMiokePHhER8dxzz7Vp18orrxwREd/85jcjImKttdaKV155JSIiXnjhhYiI+M53vhMREbNnz46IiJkzZ0ZExDbbbBMREffcc0+bPhqjjTfeOLp16xYRkdf84IMPIiJi+eWXj4iIfffdN/s4YsSIRkTE2WefHRERu+yyS5uxXWKJJWKnnXaKiIjbb789IiJWX331iIjo06dPmzF87733IiLiG9/4RkREtmOTTTaJGTNmRERE165dIyJixRVXjIiI559/PiIi3n777Wx/RMTgwYMjImK77bZrMx6ff/553sf9R4wYEc126qmntpnDF198sRFRzYP5mTx5ckRELLzwwrH11ltHRMR9990XERHrr79+RES8++67ERHx8MMPu1ZEROyxxx4REdG3b9+8T6dOndq0xxpea621IiJiypQpERExbdq0iIh46qmnIiJiq622ioiIpZZaKiIi1lxzzVwjzzzzTJv7/uAHP/CdNn1kNcLWVlsHsk6t8rA//elPGxGRCPPhhx9GROU5hg8fHt/97ncjovKsPNUSSywRERG9e/eed6P/5538nhe8//770+tDjP333z8iIsaNGxcREf/+978jokKS7bffPiIqhHvnnXciIuKRRx6JJZdcMiIqDw/B/Lz99tvbeK5f/vKXjeZrvfzyyxFRefc33ngjvvzyy4ioIgwRxworrBARlSfnaRdaaJ4f5GmXX375RK1//vOfERGx2267RUTEm2++GRERiyyySERE/Otf/4qIedFLxLwIJKJC3scffzyR3mceeeSRiIiMdi699NLs46WXXtqIqBDOfBv/F198MXr27BkREXvvvXdEVNHIGmus0WbstEG/r7vuuoiI6NKlS3z88ccREfHVV19FRMSPf/zjiKginbfeeisiKpSxXvS/c+fOERExceLEHEe/mzRpUkREoviwYcPazOEZZ5zRiKjmR3vHjBkTEfMiI1HBz3/+84iIOOWUU5ovEV26dImIeRFVRIXAf/vb3yJiXuSoPa678847R8S8OYmoIhB9sk532GGHiIj4wx/+EBHz1vPmm28eERG9evWKiOq52WuvvSIi4sQTT6wRtrbaOrq15LCLLbZYRETccMMNEVFxMjxv1VVXjfXWWy8iIj799NOIiDj55JMjIuKOO+6IiEjPi7s+9thjEVHF9SNHjkwvg6v+4he/iIhI9ObpIQEPz5tvttlmETGPB+Icf/zjHyOiQnh8q7R//OMfERFx4IEHRkSFPDhGjx494j//+U9ERBxwwAERUfFQXphX3nXXXSMi4k9/+lNERGywwQYRMQ8lfeeQQw6JiIjf/OY3ERFxwgknRETE1KlTIyJi9913b9MOfJ53f/bZZ6N///4RUaHmYYcdFhEVP2s2ugBUPumkkyIi4qOPPsr+ffbZZxER8aMf/SgiKl7XvXv3iKj4syiJLqF/iy22WKy66qoRUUUZ5557bkRUkcrXv/71iIh4+umnI6KaQ+hjni644IJcM2PHjo2Iit/qQ2kir8suuywiKt4p2jr66KMzSoL45g4Pxd9/+MMfRkTEEUccERERZ555ZkTMm3MR5qmnnhoRERtttFFEVGvHfa3tZ599NiIipk+fHhGVNvDaa6/F4osvHhFV1OB+osz2rEbY2mrrQNaSww4cOLARUXGC5ZZbLiKq2Pzyyy9PlY83oWrilRMnToyIirtAQ6i50korxaGHHhoREb/61a8iouITuCKUWHbZZSOiQh/XgO5PPfVUejHemeF3JTc49thjG83XhJIQbdiwYemp9YHCuvDCC7dpF5TApXxuv/32y8gDoohe2NChQyOiilCo1hMmTMhxipjHqUQ1eBnUMBcHHnhg9vGwww5rRESq537y5D169IhPPvkkIqq5e+mllyKiUp1xr3333TciKvTE3TbeeOO49tpr24wbTcAY+bu1ZI71F3o+8cQTyf3N7/vvvx8REaeddlpERGy//fZt5vAHP/hBGx3CWBmPq666Kvbbb7+IqJCdLlJGJSIC0QPl/+STT04t5/vf/36bdhkv64CGQUcRQVrHjzzySGoW1i4TCZ555pk1h62tto5uLTmsvBKU3HTTTSMi4sILL4yIecomhZLHhGzDhw+PiMrrUb/uv//+iKjUt969eydf5KkgE3UQkvDO0Js6Sy1ddNFFU8EbMGBARET85S9/iYjKY5YGNb/44ouIqFRiHG+11VbLHJkcM4+JQy699NIRUfFeqEgZve2229Lri0S+9rWvRUTlpXH8v//979mXiIo3Gt9+/frld0UT/oaPNZtoCNLhh64/atSo5Ga8vnGWKxWduC8lu3m+8DR8mOoJtXFx4+xaxlku+Isvvsj51x7jbh2Udvrpp0fEvHGOqCIcY9ujR4/k3QcddFCbMRNxuLZ7vvbaaxFRRS/nnXdeRlDWgz7j+NBSrlmOVV9x3i222CLbSmmGyjh0e9bygbWYPRAGwEJZeumlm9MlbRorUY1cW9TCBuHWiBEjclI9oB5yg0kCl04SVhpUC2fdddeNI488MiKqhS7EEMYZIIb0W2gG1UJ//vnnM5TxAAqTFIdIUUjBaA8h5o9//GP813/9V0RUgo4FY1yEgcZPyLbMMstERBVObbDBBinoMffjYH//+9/n3/SLY9XGn/70pxExz8ESdS655JKIqJwrkdH8W7A+xwnefffd+cBxCBbg2muvHRFVeCskBQJ33XVXRFQP5YQJE/JBOPzwwyOimnehaFlIQTjkbD10ze32UBGmUEFCprGzbq1F8/Pss89m/wlo1hYBSzpH3zwnrqVfffr0yfHxMHP+UmXHHXdcLMjqkLi22jqQtURYsr6SL8IA2B43blwiKGkb4gq5ePQHHnggIiqxBaIsu+yymeqRVuC5hHHEDdeWGuA1pZmGDx8e119/fZvvEpOkZkoj4AhznnjiiexbxLwwV1+IT0JEnpXnFIFoj1TNgAEDYsiQIRERKX5AUggIeYX0rqWPShfnzp2baCQNBhXuvvvu+foH/Y2xVJnxmTVrVs6vlA+UJJqUZZVSEISkiCrUR5uOP/74iKjSa9bJFVdckWMSUSGbtTVu3Lgsz7NWXFObS4NkEE7pLMQ95JBD4q9//WtEVEhOXGKiJ2tLBGgs5syZk9dQWAL5ja2IA8WQdhTtWYN33HHHfOWf7qeEtz2rEba22jqQtUzrXH311Y2IymNAPumWHXfcMb0gT4l34mBSBn7iDBCt0Wikx4a6vB3SftZZZ0VEhdJ4XekF586dm54a/8ZFJcBHjRrVRi7//ve/34ioEEBaAq/ebrvtEoVFFtIFkAcvswlB4ry5XUQl3tl9iHRQkqClPVCNaPP222/Hk08+GREVAkqVEQNfe+217OP111/faG4r/nfsscfmGOJpEESEIHIQJTGfNw+vvvrqfGkK6wG64H1QCM8r00CTJk3KaxHx2M9+9rOIiJg7d26bObzooosaEZUY6Z7mbd11103OaA0pkSWCiXSIg+ZUxLPssstmRENDEPW4hj76vwiMLnLvvfdGxLwSUN+9+uqrIyIytWkOn3jiiTqtU1ttHd1acliI961vfSsiqsJ1PGD06NHpfXlW5Vk8+fe+972IqHgF46W7deuWHgt34bnxN4Xa7oFbU4SvvPLKiJjnyaCbtkI9amVpOKV0Ew5BYRw7dmxceumlEVGhNgQSefDolFzowUuvueaa6TkhKZRWxigiKTcS4LrQr1evXnldf4PG0HlBhhPj4dIus2fPnq9oXnpISaooylY5ZX6ilw022CD5GaRSLnn++edHRMWltUMfrCUq+pprrplI5b7abE5Ksx4o0TfffHNEVEp87969c/zpD9Dy//yf/xMRFbKaf2Nh3XzyyScZpVljtuANGjQoIqqIwBhY4yJBKH/HHXckH5cBsebbS12xGmFrq60D2X+r+F/5GGShvH788cdZzI6b4Vy8tDzbMcccExERt956a0RUnuXmm2/O7XX4nI3qjEr7y1/+MiKquJ9K95Of/CR/rxBfGaUcGKWxNH+HAOWWtcUXXzzbqshc3tM46Lt+aK9rz5w5M9FPHppnl8uFzrgc/u7v+vXmm28mOuP6EAjPbTZKtTYaKwhz3333JdfCvaC9MaScQhs5Q+p9z549s88+M3DgwIiooiLtEBXh0CIg3Hbu3LmZ/6X6uiZOXZrcKnQyLz5/yy235LY6fzMP5lZpqHv7nBzvUkstleNUahiQ0/oVecip+pw1dt9992X/tVF2oyxZLa1G2Npq60DWUiU+4ogjGhEVL4VovNKcOXOywgmi8qQ8OK8jJ+X/eFenTp0S1XgbnBB3xt9wSNyW0syzfuMb38gKFjwDajhy5Ywzzmijvu2zzz6NiKqwHbKpUpo5c2aWz0Ey3ARHwqHkcHlcHnXhhRdOVdJ3cTlqofGhpjO5RNy3b9++eV9cCXpT70866aTs40YbbdSIqKqEKNc48uTJk1O9pDarvtE2vE+u2BhbB5999lkiqcqx8sACyGUutcO1rJ9XXnkl1V2IhtcPGzYsIiKGDBnSZg5PPvnkRkQVpahEMy/LL798jrdqJQhq07nqLqqw0lrr+M0338zoQC7Zdks6Dl5OIReB0ElEZrvvvntqOrZTmn+lkw8//HCtEtdWW0e3lhyW8gcxVGdAnJkzZ6YXo8pCSflYqMNz4Fm42sEHH5zqnvvJw/E+F110UURU3g8f5bUpvGPHjk0kwknkZamApfHm7o0r6vP48ePzvtQ+1/IZfFSuFfeDeF999VVGKfqG8+HF5dY8Sizv7CC0nj17ZkWTKIAugO82mzmz6R36iIQGDx6cqC+vK5KiXIqGoLKoRSbgH//4Ryr8EMsRMXQHnNHxPzYQ0EWMYd++fROF8TlRD/W4NPcUIZTbIT///PNUvEUF8rFqdhX565v+UHPPPvvsHB9rWzWc8aJ4ewZEDbQGY37llVfOd4yQSEQlWntWI2xttXUga4mwuCIPJ88EYYYMGZLHueAIuAkOCVGpbbx287YqvNZP3ICiiQ/harYmuTaU6tmzZ5stVREVD24vv4U78Kx4EhQfPHhwbjPDTaAUbgelbY2jiOPFjz76aCIKxVP78FF8l8oOHXAdfPK6667LXSz6VObymg1yQ2WVRa7frVu3rMSxrQ2HhdiQznoQxaiDnTt3bo6Ja6k6MoeuQQ1V8aa/tiSOHj06Iy6829ipBioNStNCoLV1c8455+RRPMYb6kE6BxeoCbD9EwKfeOKJeb8999wzIip9ge5gzatEozEYG/Pz3HPP5RhCa9zfZ9uzGmFrq60DWUuVeOjQoY2IiofKTVLOFl100eQLPCYlDPfyXQgmJ4UzHHLIIel9VQ7hkTwrT8sLq7jBvaiXXbt2TS5g9wj0kzu84YYb2qhvN954YyOi8nD2eso9T506NZGdxxZx8Mq4Ca6r0ol6ePTRRyff4WUh3DXXXBMREfvss09EVGihHRAZ+m2yySZ5DdEMdKamnn766dnHs88+uxFRRQzqcaFzly5dUo3FVSGc/Cb+iZuLhPTpxBNPTH6Hv+mfqEQkYy8zpZVaqw2rr7566g7WA+0A3/vzn//cZg4vvvjiRkSV88WtRYJ9+vTJ9hkjlUzWrdw/HioSoY907949x8x1jX/ZTma86Cn+/umnn6a2YO3QOKDykUceuUCVuGVIfMstt0RENblCUKHS1KlTMxy1WEG8lIuQw3c9dBLlm2yySYZFwmQdJATp1HnnnRcRVWhugoTbl19+eS46m7I9iH6WJtQ06OUm6U8//TQdCqejL5yPdppIToyA1Llz53QYRCchmfBT6OpcK2GudjtX6e9//3sKVsa83LjQbJyMh0D/ms9rNo4eNoUB7iOcdGCAa9q0MXPmzAy5hYceWIvUglSCWLbZullkkUVSsLIRXwlme3MozOXsjDXH+cUXX+T4+p2+6bu+EPuEtc1bGM03IHEtphxTKavtivoKBG688cYUKNEt1zK27VkdEtdWWweylggLHZWPIdvChL333jsRlqcUAkEZp/8JX4VvPOpjjz2WHsj9hOnCWZ6Vp3Vt9xaiLr744olcwjVeV0hUGnkfOkICSLHDDjukt5VGEhIKp4ThhARFGlIpd999d4Z8wigo4GgVYSchSyQibQbBpk2blhumRT4ik/KkyIgKSYyHMZWGO+KII+Kcc86JiAr9bKZAawhIqIc5FnGMHz8+UU4/9Q8t0A8/RS1EQYj84YcfZjGONBIhxk8FDAwSa69IQanoWmutlWWORLHyOCJFDt5uYEz1cfbs2UlFoLV0kojTfFu/oiLPBlrTp0+fjMqMk3XXXvklqxG2tto6kLVEWO9/4dl4G0hzzTXX5PY5KMgLicV5sDI14Oeqq66an3UNCCpRDlF4H2iBdzYf7wF1cUHHn+BspeHFxDGcVkTw4IMPpmDDc/rJS/K02gnVm0+ULFMivgvJoZxEPWQUiUCuV155JYUJ7eKlFxRF6AdNAYduFkTwKf2C8vgcxHM/yX1n+k6cODHFJEgL3fA9/XdNa0p/iWtffPFFCoaK6EUS0n2lKaTHMcvNAv/85z9zXUrFQFx9h7yKUBRhWGO33HJLtsPfytMSCYXmTjRhPBW6vPnmm9lvR+WYO+1rz2qEra22DmQtEVby2NEwvDMP+Pbbb6enwucgB7meN3ItnpgnufPOO7MMDI8rz8nFnXhJCfsy7t92220TYaECbkR1LY2Hw8+hO5s8eXJ6UFxFkTfujGtRfCnM2vX2228nCiiEgPgQV3RB+fV7fTcHkydPnm9LmOilPFIlouKqriedICoZNWpUHocjuhAZULlpB7gbJIP0X375ZY6b6Mf7dR2nis9BH0Ul5lTKZtq0aRlNULalXHyXRsCkEo2d+aFLPPDAA5kq1H+6CX1GlNS8YT2iSgN98MEHuZbpHtaaqML69R3jJaX15z//OSLmRTI2KoigKMgOImzPaoStrbYOZC0RFuoo9+MFbQYeMmRIFjGUB3HzLnidQn6Ix8P8+Mc/TiTCqySv8U/IxvPyftRb6PPUU0/N5115UN65NMdxyhfiXI7/WHTRRbPIQ/SgsADHpzDKcUIm29bWWWed3AigrfiickaoBXnknnnt5pP1lU/KB9tgLqppNgen0wmo9BBx1qxZ8520j6u6vo0H1Fn8E5rutNNO821EN7/a5P/NR+RGVGos5Xn8+PHJFctifypwaeYKWpuvZjSV6zfOuKs1BSW1xzgZtyWXXDLVc2NaHr5XHspHITeO7vXkk08mCotu6B4iqvasRtjaautA9t86hA1a8lKQZskll0x1S94Q/xSb4w7QEsJQ/Dp16pToQUF0tAYUcn8cAj9yb3xsr732ymocuUPer73tdTy9e2s/XrTyyivnIeBQGFpCHJ6c0nvUUUe1ad+KK66YSIO7ikxwKZGHPkML/XHvLl26ZLQgxy23CvGbDdrIL1J2ffboo4/OAneKsnyig8IdEo+HUj31f7nllss2WTPmCFKpAhKBWUM0EMj24x//ONHH7+TnRRbeIsdweG2AdKKIr776KnWX8pUi8tu4qwiLrmK99ujRI6MdfZSJEBG6hjJTm+Ctg1//+tcRMa9+wf0dpaPMlY7QntUIW1ttHchaIizU4QV4J0rnHnvskdx17733joiq6oc3wjNt5sWH8NUll1wyFczytQ68MXTE1aiBPL1rv/HGG/NtJMCHeLvSIB1E1h98bpFFFknuxNtSdKEErmILli1azW8Ol5f0jlNoVm561lcv75KLpNSutNJKqWhCIujtre7NL4vC921zgwLafPjhh2ftMK1AzrZ8SZloyVhRpd99991sp0gKQkFYvFc0QvmFvBBn+eWXTz4p0nItOdLSRH7lK0ZoL3PmzMl6AevSZ+WUy4PERSJ0nIkTJ2YkIyqwLvBha0nWwOZ91Vwig6lTp+azZA5FNeX7akurEba22jqQtURYh03jO5Q+aPrSSy8lT8AvqITQCHJ4TyuP6trLLbdcehkVVLwyxUze1SHP2lHu/Hn66aeTA/hdeZhzadAKSvt+cx01VNAHnFolC8TXV7Wj8rRdunSJq666KiKqXSF2Z/DsIgGoQHF2bRHDU089lTlsaKCPooJmM4aOoy0R9oorrkgu6tBv0Q8uhue5PkTBCyOqbYLGz/yX6jdko0eo0jLn11xzTfJun6G2t7eThU6hFtr3jeXzzz+fYyTiUKUEDR1DROE3/vjqK6+8kuvP86ByyVhSwCn/DhrAi21wX2yxxTIKoyiLCsodQKXVCFtbbR3IWiIsb8NwGPxj5syZqWpCMIdQU0N5I7zHjhL7DD/77LNEEchdbnpmOKOqKl68WZHEuyi52uU7pZ166qkRUSEBFMF5V1999fwbJc8+YV4RB5en8zntW2655RJZVCfJyUEznpy3pny7Bo+82WabZU5bhMGDu2az8eD4les5RqVz5875CoryNZmuK8KgWOPMEOP4449Prucaxtt9IJp5wQf1X6TTu3fvrGBTHSfyguylQWfcm7osKunevXtGQyIa61HVEsXXgetqy/Xr3XffzTnSPmudwg/pjZPnx/ipmHvhhRcSwfFvUUF765TVCFtbbR3IWiKsChiKFuWSsta1a9dUL6GkIx/xIl6al8TreK4ddtghc4R33nlnRFSeEYJRPSEsTwvF8bR99tknUYdqif/yfqWpxLJ7ggIsj/zhhx/mtajjUKQ8BoUSy2vyrO+9914qnQ6Qo5q6jz5SC3E+qjf1vUuXLhkFiCaoteVrISOqccf7tdWYjxs3LtsgGuHtobMxoQuUR55ccMEF2T7RiJdP+T3Uw6FFJZDOXH73u9/NV7FYd9oH+UuTzRBFqERrrlaSeYCwIkMHu+GOanlpLFD7m9/8Zt6n+UViEdUuNkfqQE9rD39urnzDh2UJRFTWb3vW8oEVYlkYwgZku9FoZKoFlCumd2OpFw2y2IkTQ4YMyRDLd8jlBlFawQISVhN/tKdbt27pOCxqDqR84zazCIWxHhwP37333pvhkfY444lDc3+Ow98t3jFjxuRi0j4LQ/md8JLYRd4nvAhlV1hhhVzk5QKSRmo2abXyXS4c7WOPPZbjrv0eKovVw23cjZnCja5duyZ9UaZJxNMvvzeWHkL9lG55//33c4MIJ8pRtifICDWlBY0H5/fRRx/lONsUYk0RyzzIzk3mjK3bzp0753iU2xs5VQ4G0Gi/dFTzu3CtGXOojwsqfmm2OiSurbYOZC1PTbz88svbnCgIHYQaa6+99nwHeEEq4YJzaIUNiLik+OGHH56e3WZ3gk/zBoGIyksLrySkea7hw4dnGErkgcruf9VVV7XJDdx1112NiGpLmRCOB4yoPKpIwE8ellABVcrzfTfffPMMgaVkeFbI77NSXKiE0FEK5+WXX85+SzMRcNitt96afTz88MMbEZWAR9yBsGussUaGi9DHGHrfjLQO5DPXQtcLL7xwvkPYhOeESpSk3BQiirOmnn766Yw+HK5n7kR6F198cZs5vOqqqxoRldhjzqE2pIuI+TZOoDtnnXVWRFSpIdGRIomf/vSncfbZZ0dEhaTKWsvtdcbHuj766KMjoor2Ro8end8ReRlryP/HP/6xfrdObbV1dGvJYYknJHkmvh83blx6Bm+9JipJiDuNnbchKEklTJs2LbmJ5L7EcymC4KXQBiIr3lh77bVTEIHKPHt7ZN75uPpBuoeSPXr0yO1bF1xwQURUfNARlRAOUnmPkOMuR48enR5bMULJi6UKbIrGI50jDMEOPPDA3IygzNH8LOgY0PJ8Xcl8wszEiRNT+IA2kIpAhT/jczg0fjpixIjUJERYUn/WkLmCPngfBCbCnHjiiZlqc7gaXi8KKg0KEneMKdQeNmxYrkMRlMjQPNsyB42ln4zJfffdl9enyxhTc6b0UJ+hpWiPONj8/iBCrpJOY9ue1QhbW20dyFoiLMXMVjOeQvx9xRVXpCJK3VKuRkksywl9Hnfu3r178jQFEDwRhOWdeTheGdfVzrFjxyb/+tOf/hQRFVfzndIooHgSb8nTnnHGGempobD0Ez6On0Ik16BSLrrootl/nl3UgBdCBaowZISmfj958uREdIl7SCe6aTZISuGHVlJkp512Wm6bw8mVAIoYFIqYD9vEoNXTTz+d3FsJJm5um6DxVSiB1ylccJBAo9HIMcGpcdL2ShONFZRXbuj/b7zxRiIonmljCR5q7nBK7TNvb7/9dqaVjAcebFuf+ZCSo3VAcaWSM2bMyGdI5GWs/WzPaoStrbYOZC1V4tpqq+1/ltUIW1ttHchactjnnnuuEVEdkIyTieU//vjj5D2UMRwBV5Jv83/c0Hay9dZbLxUyZXSUxPLdqXKXuALVGC/ecMMNk5MoX7SJ2DEoW221VRsidNNNNzUiquNPyiqbKVOm5DtwHTqOn+FOcqvGBaeRc/z2t7+dPFe1kFwqTkdFLwQy9rIAACAASURBVDcfiICM/TrrrDPf6y4cn+mozF69emUfR44c2YioNg+UR/cMHTo0+0wdVhVEs5Bb1fZSEe7cuXP+joKP09IdqN70EPOES8rb7rDDDrmRnuqNX1pbm2yySZs5fOyxxxoRVc5ff2gN22+/fVbiGQdaBz3AOsEzqcOutcYaa6TuoI/m2TzISFjr8tQ2tWj/2muvPd9h43Lq+O+2225b52Frq62jW0sO+/3vf78RUaEBL6kC5Wtf+1qinyofOVToyCtRVCmLDonu27dvqmllLS4UcBiYo0x4S5+X7+ratWt+Ftr4jAO1H3/88TaeSyUQTwpFoPzrr7+eXlgE4B5+L3erveUxNT169MjcNRSmBuqLz6plVk2jAoqa+Pzzz6fCK6cr30ttHzJkSPbxyCOPbERUaG8eVN0MHz4867uNmSJ2NbH6J+pQ3O6+PXr0SCWXqlq+xV2/KLj6A33U226++eYZQVG4obJ8e1mtduihhzYiqqjNPKhTfuedd3J+rVM5f7+H5vLUIgAR4nrrrZe1BdYrFLa2ZDOMF5NBkccePHhwVm35DsQV1VxzzTU1wtZWW0e3lhzWUy++totGVc5HH32UVSYqSXhKeVheCS+CeOL8jz76KPmmiiLf5d1ULakwUfeJl0KaAQMG5LY+3kxNsM+UJkLAbdS2QqS11157vpcS64Pcor6rpsLnINejjz6aHhWHtNndsSJ4Il6oXhpiGaP3338/0Rovxr/lEJsNb5ILxJnUeh9++OFZXYNvyp2KKOx+8X/VZND6lVdeybERBYkQrBl5ZLu75NqtMUg7YsSIREo13NaDHHZpxo6mgMvKT2+11VbZf8gpd298zKmaa/lkR9aOGDEi1x8EV+km1y9aFQlov/XTfJi79YDnimrUD7RnNcLWVlsHspYcdtddd21EVKgApXiam266KfmmelOeu+QhPJs6W7tGNtxww0Rwx8bYGwidy11CvDKvji+NHTs2OQBkcn/K7tZbb92GG+y5556NiMqL4+k4+LXXXpsIStHlldWb4unGicfVzp49e+aGbhzOtSigxg0vVvlkXKHbY489lt8RRXg5lsqb/fffP/t4wgknNCIqhBXFGJcPP/wweZ2qI+OOs9Ib7HXGldVD//CHP4y77rqrzfhpoz2zIh1jIjqBvKKpOXPmZHTBjCckPfTQQ9vM4a9//etGc3v1DSK/9957ycdFPzIOIj/RCpUeilKEN99883yxlwPjtVmdt6N73Lc8XJB+MWHChNxba9+1+bfujj/++JrD1lZbR7eWHBYqietxHSrlKquskrE+BOE5xfEQQo5Kna3Duf71r3/l73gdpyRAPfenqPKWUJrC2rlz5+QNkEx+uDxQjokWcDtchpffdttt0/s60aF8cTCEguraRXFeaKGFsmaZgmgMRQ0ilfLVIlAbqkdUHFMfS5V6Qf3TVnlPvPSLL75IjiUXiseLbPQPSlJFrYcrrrgiIyomN9zMvZv7oQ8UYJxu+vTpOfb4sDy9o4lKUwsgitMu66dXr16ptZhDWgudAb/UTuvBWpw5c2auOxGHbIGoxREw8vbmVp+N6w033JDqsDWtDlwE2p61fGBJ8haoUEkosPfee6fw43caSVSymBRTO/tWWuOOO+6Y70zg8oxWUnuZwLdIhNJvvfVWFmbbvmcxWmQeHEZcEjIK2Tzgq6yySsr45dZB4g/nVI6XsOs///lPOhIpH+GSB0kiX6hMnDGONrSvvPLKuWBMugVuDoRgEdVi0WbFBM3nDXGYTik0Ju4tbDU/ts5Z1JMmTcoHkIO0UcI4lm/Ns7iNIcf+0UcfZRhtPFEehSs33HBDNBuHrh/WDfBYZJFFMuQ85ZRTIqLaTiec9TARODk0NPC6667LuTO/5kpqSHGL+6M35q75bfPmzHhw8rYQCpVLq0Pi2mrrQNYSYXlYCAMVhCDPPvtsQjpPKQzxWcKMUBMx9/tZs2ZleHL66adHROW5hTiS/Dyu0EwILdyZNGlSnHHGGRFReXoI5lqlab+yPEUhhIvHH388owFCio3jkID3RgukKFzjlltuyWhA/wk4yhoVFkATYyA0JsRNnjw5Q2HRgrY7qsYG+4hKRBHW8/IQ/+23307hRUqJiCVEttlaAQ3EhTi/+tWvkpbYEmesHGwA9UUwhBmFNt5LNHTo0Hz/MEGU6NTem92E1Q4jgJ7Nb6TzbyGwKE10ZxsoFLepX2g/e/bsjHqsPwcaWMsohKgOwkv3NQuyokjPDXR2dFKNsLXV9r/AWiIsb4zvkP150759+6aHcLgVyR/C8uRK1/ze5/baa6/kHmJ9n8EBeCqIiu94IxwE2HvvvbNMkQcj2vDk7Rmu7Zq89pFHHpmo65o2lRMq8EM8CD/xva222iqjA8eKKO7n8fWRF8b9XFup5F577ZWiirfVSTdAvGaDwuaBiUq23HLLFMu0SQGCeYa45hoia+u9996bIhqUgbDQUbrNtUUOjsBpfiNceRCddkhjlYana79iBFFNv379cszKYhd81O9FPOXmgM8++2y+N/S5pjmy9gh7IgRCF4Reeumls0SXtkOnMabtWY2wtdXWgawlwlJleWlxPq/UvXv3TEPgDbww3sn74WDUQtyqS5cuqZDhzDy62J/aCll5vfIAb0nniMpT4pHtvYGdskqapxbzwM2HYkEJZXfedQtZy+NG3HOPPfbII1p9Fy+G/NI6FE8RSfOb+SLmjSM000bo23ycJxMFaCNU9r7Uxx9/PAsg8Hn8H5/WbwinTQpGZs+enf0zN1IyygTxbmqydQCBqfhffvlllkg2vxM3olqPpUFkmxHwdW+XeO+99zKCMo64qzkT0ShnpETjo/vss0+in3GWRnOQGlT2TEBY0aSSztVWWy3vq5QWp1ey2Z7VCFtbbR3IWpYm7rzzzo2ImO99Nc2vHCh5JE6mEF3iWX4LYjUfQM5jy0lRpRVCi+95bdfyvhpe+8EHH0x0pijiCjjc+eef36bk69xzz21ERJbWQS38Z5VVVslNxT4jxyhxDulxwfJIzylTpuTvKLFQTXQBcZVbyse5NpR54YUXch4gn4hHH6+77rrs45AhQxoRldoJWdiXX36ZCiWvD2VEH5CVcm2OvSdooYUWSsT0XchOuYV2+L2ICyrheb///e/zkDdRmmNcjVW5vW7HHXdsRFSlf74PJd988808hE5UIBqjBt9zzz0RUXFIvFlkcM899+SGAZGgaMg1KeHmUq6ZBuTaI0eOzHVmrZsD2/wOOeSQujSxtto6urVE2IMPPrgRUXEbXAEvXGKJJdL7KkE76aSTIqLiSmJy6ijPhWcceuih6Y39DXcqjzOR0yvfRKb8rnfv3slBfYeHhAZnnXVWG8916qmnNiIq9MA/INunn36aCqIcIvTmUY2h8ZEXNU4zZszIvCuvW0YTcptUVqWb8rb62q9fv1RU8V5lfZT6k046Kfs4aNCgRkTFxegQqnTmzJmT1T4iGJFCiQIQwjXMV69evbI6SlRB0YdslGVRSfP7YCOqaGH11VdPRZ12YbudKOHcc89tM4cXXnhhI6JCMmoxzrvxxhunGnvMMcdERIX81gWF3RiaQxHPp59+mjqN6ED7RIjWpRwvHUWUp49HHHFEIrrvWn+ep8MOO6xG2Npq6+jWUiXGd3hnvIrHGzlyZP6O97VhGVfFKyhlvDL0vOSSS7Jyynd5Y68P9AoEyMJLli/peuaZZ1INpQbydu0ZnoSX6gfUf+mllzLvhrtRaSGun75rm5t7P/nkk9lG44DDqwuGapDPGONvvv/5558nX1RhA43pCc0GDRzrgrNBoUmTJmXEYNwVwOPskJw6SjOgNG+88cbJFyGrai8vtpJvpYdQ5eUu3fuOO+7IiAHie2UHDlmayKt8e7mIZ86cObne5Ha1y/31WdREC7E+hg0blnNnrowltPauWffVHvdSwfXAAw/kcyOakC3Aiw877LAF9rVG2Npq60DWEmGhlNwh9LIb4aOPPkovyDPhQ47W4DHsdMEt7YJ47LHHUgEtX+cISfELPM9xLq7Fq3fu3DnzuxRkPEZutDT8Aoq6Ny42bty4bIc8MBXywAMPjIgKBd2rrM19+eWXEzVEK8w4yF/LW5cbq7WnV69eOR70AuirYqzZRAPUem3ET6+88so84lM+Gyen7OLi+B3eaewGDBiQa0LO3pzIpYpY8EzRkc8176yhuoq48M/2Kp3cE/KJGPDPadOm5TXkY1UnUYshP95Jw/CKyddffz15rRprERSdpjw6B2d1lIx1/t5772V0AqWtIfn39qxG2Npq60DWEmEhRLmzQq1kly5dMk4v+a6XYvHoEER+k0fbaqut0hPyMrwetMPnKGnUQveAdNOnT08PquqFh+cVS7NhWF4UEvPWRx99dH5XDtFLf6E5dCkrg+y8OP7445O76wt1kEpJcSyvQXlsfpmTOmeKs3ZRxJvN9/FrOoBx6tevXyKXuRNJ8fZqpyEEJd087L333snF8HyRgRyxtaS+ulkVbr7XCy+8kNeC6NDOeJdmFxEtoUTCVVZZJbmqtWZ+aQjWL87K1ADsuOOOuS7NpTEUaUB2eXJ7j0Uu5mfddddNNJb7lg0Q6bVnLR9YD6qid4Mrob7WWmvlYDr1TdjoLFbpHm+mM2EKCTbddNMUUWzNKs/9MYG/+93vIqLammZADNg3vvGNLOqwmC1YoU5pHnoJf20Qyj/88MO52AgWFo7BRQssBtvcPJxLL710OioinAfVGCtRU8rXfCJhc5/HjRuXVECfjJfw8oADDsj+cajaIhQ0Ty+++GI+iBymvnvICUgcpgdJOLfKKqtkWG7jtzEy/taMfhNwyrO+Pv3003wAiV6EMw9CaeiWNQdQOJbhw4fnuWHSTB4Qa0/fjJcxJdZ17do1yyetR8KRh9/6JDr6v/YYk0mTJqUI59AAjqN+e11ttf0vspYIS+gok7wEpYUWWig/QyDg5RVKQAiICsl4tldffTW9m/SBkENyXUjhKBgeXmqAB7vjjjsypOSxnK8D2UojxpSbA6QwTj311BQXRBilwFKilrCa8DV69OgUkfRRWAuVhaUiBH0naEib7Lrrrhmiup9QixjXbEI8KCT008bLLrss50gqrjyowFwKvYXvxv3555/P/gmrjbf2Wx9Qz5gxn280GvlvgpkiE31xLaYvKJsUjhTZQQcdNN8phSIeVANa2nigDUSyiRMnJvpZr4Q0lEyaTXQkYhEJnXDCCRExb8MFOiGstpFEJNCe1QhbW20dyFoiLKFI6R8RiEDTaDSyaNlxKcQDCMrKt7PxcFOmTElhCneR1OetcQL8Em8uz77dYIMNkpNKsuNIC9p6FlF5NnxJBCC1MHDgwEQl6Q6chad1f7xHOoRn7d69e6KhPuK/UApfpxdIqWl383Yw/4YG5kWyv9mkD4w31JKqGTRoUM6h/pkjIgr+K0pSJtl8AqQxITqV2wJxV6jj2tonaomotjjSBrTdvJfmc1ALD20+mV8EZX3aDlgKSfruGs1inZSbObKV0LiVWwavueaaiKjSojjw2muvnf3FyyG6CLE9qxG2tto6kLVEWEXevA6vjK+8+uqrybnwOdwMajr8CkpTiSX5Z82alUUFvC7vg18ovcOhKHdQu7lgn6eU3Cef8/ylKRrgFZm+vvXWW4mO5btDbfTWd4jHa+vPO++8k9dX/M6D884OosO/8CL8EsqstNJK8/FeR6IcccQR8/UPkhhTZXIikdmzZ+f8KsiAoKIAarBrseaCAeorBKeo45+Q1jyICnzevb797W/nGhLJNW9UWJDhp1DdmHpv0cSJE3O94fsDBw6MiApZ8Xdll3i8Y5HefPPNPCRQcZD24OPmyth655FxFV2MGzcu+a8olrpuTbdnNcLWVlsHspYICxXL4yugw8yZMzNHJiEv6c7bQSXeyP+b37itiAJSyUkyx4dKYpeF/RBw6tSpmQ/Et/ANx4iW5p2o+gERoP7jjz+eiXjqKO+I70K/8i1mkGKVVVbJfytzxG8VGJToDD1xLwr1hx9+mF4f8tkcsSDvrPRRdKJfNuUPHjw4eRMeDeWhDQTBt2kL8s0nn3xytlvf8Ttz5afIC2qK4kRqX331VSrk1gMeKf9Zms9Ba1wX/582bVrqDNYfzliWc0J+qCjH/5Of/CTXgfVfHpov4hLx4KzGAvIecMABeV99la2gcbRnNcLWVlsHspYI2/wOnYiqYBvS9O/fP+N5+Vi5MpxArpR3kdvDw1ZYYYXkIJD84osvjohK4cVlVcfgezYcyDFOmjRpvvfu4NCU29K0s3wzHqW6X79+ic74Du8MccoN1v6PG37zm9/M6zs6B5eFrM2b8CMq5KVWG/tHHnkkTj311Iioiv6hmrxvs+FIOJnXbBjb9ddfPy666KKIqNBFlGEsoTT1FoJBgxVWWCHHTeSk0gxvM4eQ3eeMpfGePHlyXsvffBZKq2hiog+fk48VEa633nqJrPQX42E+VORBYm9ob95A4P7e8SN3qy7AYWyiGK+NMaeyGv/+978Tuc2h++tLe1YjbG21dSBreUTMdddd14iY/1UNza9bkNfilRV1M+hcqmHi+smTJydnxc14WzWxaoYV3Xt7uRpf3KJ3795ZSeQ1CrgVDvnyyy+3OXrj2GOPbURU+Tl9E0VMmTIlOR3vTEXFkXhLNbi4pHzptddem2q0tuP05WtH8DH5Yf2AxOPHj8/vQmEcVF709ttvzz4ec8wxjYhqKyIkx/+XW2655PtQl7pNKXddbaW8O8B8xIgRGW14VQqkMJ40DfxXFGVubZT48ssvE4lUFkE0nPnyyy9vM4ennXZaI6LSEow7Dj5+/PjkjKIF401zwT/pE6qWbMt7//33s9LOenPAgijSd0WR7kWR1p/megFVhJ4Hc/rAAw/UR8TUVltHt5YcFlf09FMacc1u3bqlF5N3w1nE7RBFtYddEq79+eefJzfi2csDreU9cQVcEv/AUz/44IOshlIDCv2aDxlvNtf0EiRch0ceM2ZMIk35Ckh9UmuLp+q7z8+ePTvHQQ7ZEa7QzfEuuJV8If4MoT777LOMQMyH78oDNhskdR/9Y0888UTOCVWT6i5aUd8q4qFOi7w++uijjEjkj/2/fKcqFIKCUArfXGONNbJ/og1oJ4IpTWQAvUV5zbl+EYp5MKfaqSrJWhc9mI/x48fn/c2/z1D81SmLBPFgn/fcDB06NCNNdccikbJCsLQaYWurrQNZS4QtDwzjce+7776ImJeroiRDMogAZVTAUCJ5UvH9yy+/nDwGF4Cg8m/yg7iadlA15Qlnz56ddbGQ3g4WXKU0OUwVWBRIedBtttkmq3DwMh6f4grN5dJ4Scr5mmuumTwQR8Ep9UleUt/1rTn/GjHPE+NV2oGfL2iDtzyuvCLeDZW++OKL5FgqpUQparjtVVUtJQJycN3111+faKZfrm/jOEWfsipnrT2QbMyYMdkee6hpBsagNChOnaX8+7nkkkumrgBZRXXWo+OHrHXoLnJcdNFFMxshIqHcmys5ZrqN9Wt9mvuDDz44oyKKPzVaTUJ7ViNsbbV1IGuJsGJzr1HAZahlPXr0mG83THnUCaRzjd/+9rcRUSm8+++/f1a5yFvhILgUj2sHDhWO4il3ts4668y3k8SBadCvNCjJo9q1g/M99NBDyUV4P57SThNemuIuH9iMkpROCqsco3ETCfgcHqQSCIdddtllcz8slBIJQYBmw/+p+KIFiPL8889n/yAGzoVHyy9rw1VXXRURVW51o402yten2LdLEYVo5kg04h7la0hXWmmlHJsyK2B3VGmuYS5FGjSGV155JdcjnlvqDSIc8yGnLW/84osv5piZfxqLyMRP4+TF2tarF4FPnTo1Ef+cc86JiCpCXdAxP83W8oFFwG0rUsws1OvWrVuGFhK/HhTigpCIjK28UGJ9v/32y+NDiE4Wop9EJX/30xEcwrBevXpl4YZJdP/2NrAbXMegEGWE50OGDMmFLKy2jY1w4GE3oeVRIh988EFu+tcu3xHuEx9MnIfdA6YQ5Ec/+lH2l2PwUC+oOL7cxqWow9xuuummmS5xT23gGKRzzKnwtjncdYJjufG7fFCE8R5G9Eoouv7662fRv89K8xC7SrP4y6IcTqFHjx55FIsHFa1y5rFrm0NrnrC50korZfmqVAxxTB+kPQGOcl2OXDu33377/Le1bA6cZtme1SFxbbV1IGuJsNBHuoC4wTbeeOMMtYQ0ZbmeMEVIDIEhzAsvvJClZAi4VAR0gDLl5m5hjLC7Oa0hiY74t/d+WOE9sYzXFO707ds3w2yeX5kjxNE+xSHkfwi44YYbZoitCKN8W3d50ryfEAFiPffccxlu2lbovgtKCfidsdQ/87bqqqvmXKBA2mornIIWEYaw0Yn3ffr0yT5rpzZCH8UxkAQFEJkJY994440MfQmBrlmuPwZJpbmkDM3txx9/nGuHOAb1RAZSVOU6JjodcMABGe6LEss0l++IhkQGaCLaMHfu3IzCICz6ZwsjoW++vi7wt7XVVtv/SGuJsAQYSWdyPg71wgsvJN+xCcCWM97O/3lgRQa2mY0fPz7L2SAXkQnKlKkNMrkkPaTbcsstc5Ox0jcCifRTaVIH+Afv3sw7eHjej+c0LjvssEN+NqLy+IpKrrnmmowGcFmpE9EFQc24QQLXpht84xvfyO/w8IQ/UUWz+V35RgH9GzRoUKbYoLD++Yl/+jvhzBsK//rXv2Zb9FPpn4IAhRMiHmKP/2vPXnvtlZoGBIe07YlOhJrmg9wiKhFt6aWXzrkwdtplLRPQCEqiKpHC/fffnwhq3hVO6JuDFhTpiGaItYTPrbfeOqMim+zNt00h7VmNsLXV1oGsZfH/IYcc0oiYf+MwJe2ggw7Kw7VwVYhL4pbGoUBKOuNw48ePz/jdVjJcCbpAZaoxr8wLUkd79+6dqRdqL44Aoa655po2RdWXXnppI6JCb5xPEvyMM87IPpTbC6VzeFT8B6fWrhVXXDF5DYP4UjKQT3uNAVSnzD7wwAOJeH4aP3zr4osvzj5eddVVjeb7iXSgxEUXXZQbDGgAZfkgtVPRO44rrTZq1Kj8m3SdogWoKHUH6f2+PED7iy++SGXW2vQdKaIf/ehHbebwhBNOaERUSrusAi3k4IMPzq1vriFaoCxDNgUmog721FNP5RxRi41PuRlEhGU9UI1lInbaaafc7GBNlW9zHzRoUF38X1ttHd1aImxttdX2P8tqhK2ttg5kLVXiQYMGNSKqHKXKIlui5s6dm+VfFD1xOkWZ4iu+xw2Vfn3rW99KvoObqkLBRymKlEfqsTybaqsddtghea48qiogvOvkk09uww3+8Y9/NCKqqh65Mrx5scUWy/vLw3lVhCoev8dlcSm8c+mll04Oiwf5v2vYdKDPuIzNDKqqvve972UOVV5YPlYxfv/+/bOP77zzTiOiyntT53HjWbNm5dwpQfQmcaq3CjfcDN8y/htuuGGqw9qC3xp/RsuQh9QuKu7GG2+cCi5eKw/c9NKxNnP4t7/9rRFRbZGjGtsMcNttt+XLpyjq7kezGDRoUJvfU22N6S677JJlhGoMcFh9MXc0HpkAc6xibJtttslraA/9QZVWydNZjbC11daBrCWH3XvvvRsR1TarslB74sSJ6XWpnZdccklEVHlNqjBllfeUm+rfv38qutCXZ4VsEB5yaTP1WqVRt27dUumkQlI4ofall17axnNddNFFjYhK3da+5lpe3lDOTlUMj6mKiprJw1MCm7e96ZvaXugBocr720pnw/sTTzyRCq9oQv7PeDUfEbPffvs1IirFnQpqzFZbbbWsjVWNpoZXP+SGKcDmkprbo0ePVP0p5+YKwlJWrQfKqrkUgQ0dOjTbqrLJ2FDFf/WrX7WZw913373x//oaEZUqq359pZVWyvm1Xt1XPhSiUpjl+q2f1VZbLfPS6r+tB0qvegEVY56BUl2/6667Utm3tmQHWK0S11bb/wJryWHVvYqzGZTo27dvIqUKnlNOOSUiKq+olhTiQR1caubMmVmzzGPhChDE33k4PJA353n/85//JCrgtQ4Kd3xHaTZU4zK2t6maWXPNNXNnCw7lb+6Lf+BtOI1a3BdffDEjEONw5plnRkSVb3UtaIanujb0HDVqVL5uw3ZE2+MW9NJq9cy4JXTGlT777LPcJqhyB0fFwR3Fqa22u+FwgwcPzm1oog6v+XT4HD6phhjSmi/j//DDD2fb6AiqkOT6S9NOkYF2ucf48eNzbYl2RGLWuLws5BMZuNbQoUMzwlD3raZYzUH5UmhrHX+2E+fll1/O8bAlUp/ljtuzGmFrq60DWUsOe/7557c5PlK9K09yyimn5E4F9bZifyqt3/OW9kHiMH369El1EqJSjXl6yMo72vFz3HHHtfn7bbfdll6MB4WOPOUGG2zQhhtQwkURjoyBSHfeeWcqhRDd3/Ab1TO4zYABAyKiesXIb37zm6y0we1UE4kE8F88B6eBrCKZddddN1ETsuCj9vDuuuuu2UdzaD+oml9tHjVqVBu09buI+Su2aA3G3VwvvfTSuUagMC5OKbWBHRqJJNTnOgyvX79+GcFoh/Wm1ny33XZrM4enn356o7m92gDp7rvvvtxvS9kuX8alFl67bTY3H19++WW+kFlEov+0HXXKlG/qMH5u3oYPH57RmO+qYRYRNiv9zVYjbG21dSBryWF5BCgKtahiffr0ScWYksxz4iS4GS/uGnJ8r7zyStb5Uh959PJ4UQjv83baUFKXX3759PQUO0gP/fBhxkvi3JRFXGLllVdOFRV6y6Hyjv6uJlfEoO833nhjem4c0p5N/EyfRRFyrFDPzqRJkyYl74FOEAXiNhu9wfyIqHj4q6++OscIqjiADhdXV2sOF/TiZyqriEG7RQgiHdET1DHOopHTTjst+44HG8f2XsrNIdHg4AAAIABJREFUKMFUYkjdr1+/VOOtSzlTfRWBWevmC+fu1atXjrP1JypTJy1rIXry/OC8IrSIKs/us82vBGllLUPiU045pRFRLTLSPch/7733slFCC2GTDvspNDaxfs6cOTNDBw9A8xE0EfMLM8IHk+3ec+bMyS1MHgQClYEo5XKFEwoJTKgF/dlnn+V3tVn6iTAhjLYohcoW3j//+c8UZTxAxumwww6LiGpxET+MgUUqhJs+fXo6HykBwhS77rrrso/nnXdem7QVAckcfvjhh7l4OS/URApE/wlnnCIn97e//S0XqwfWhnEPgtSXn7bQWVvGds0118w3pxMf0Slr9Q9/+EObOfzDH/7QiKgcaXlUztprr519QJ+0rzmsj6iENxREEcTnn3+eaSapsfL8Y+tVeuzmm2+OiEpwsxYXX3zxXG/NZ0ZFVMVDAwcOrEPi2mrr6NYyxlAW50xhngRaLrfccokECD7vDP14YwlqBQxCgscffzy3tklPKG8kVNjC5/5QB8IQFF566aX8Lm9HuBIdlCZR7jAuITOEHTNmTH4XWvCUZXjNS4oEhOWTJk1Kb0t0007IiipAWNfgiQlKjz32WKaeoCaqoJCh2aRNvKtH6IXWjB8/PlNIKIgUiOubK/SHCKegZc6cOVmeqXCmLCpQTgrJRDLENXRjp512yiIRCC+dRhgqTWRDpCrXx4wZMxJZzaGojAiFZkBW6Sl9Hjp0aI4TUVGEYYO9cUKNzItnQD8uu+yy/JuQXGmqlFl7ViNsbbV1IGvJYXfbbbdGRIWoUACydOvWLb0Z4QUHIHFDqnJDM8Hiq6++yt9JT/BkvG/Jf4lTvCAv9fWvfz35BcFE8pyY9Je//KUNNzjzzDMbEZUggFviJ9tss02iBLTDUYhhPDzxhifFDT/44IPcKI0H6QvPD7XwUZxQMQS0WHbZZVPYg6juL9108803Zx/33XffRkQV+YiIjPmAAQMSIfRZZGVTgDJKZp5ws1GjRs0372WqQxEJLgmBtQv33XzzzTMaEB0pWDjrrLMiImLs2LFt5vDss89uRFRrrTyD+pe//GUWyIjGaBx0COWD5p9YJlJ79913E40haPP7jiKq9ehe1qK15Vr9+/fPNJbnx5p3pNGECRNqDltbbR3d/lvv1sHZ8A8x+Q9/+MM8kAvnKpPX4nwqJxQojwyJqDiUZLVrl8iKz0E0PzfddNPkw1RA911Q2V5EhU4QTTlZ8/YwCA6BoCW1FpJCPtwbinTq1CmjE4iiL1ID7uG+0l7+Tz18/fXXc0wpruWxqs2GK4lWILwC+yeeeCIRAnJ67wsODhkcbKf4Q+TRfGwn1IWoIivzAsGgOFQSvTz22GMZUVHZm7feLcisNRzWOFi/Tz31VI6R9edwQOk1aS9r3dE1to9269Ytx8cbCCn+ojd9M+/0AtGM0skxY8bk2PmJw5dH05RWI2xttXUga4mwvDzPIc5uPrhbnorKBoV5ct6HtysPrJo9e3byKt6WV4Yk1DeeS/mWhHRzbg/fgSi8bXsHM+OBvJ82UG/XXXfd3NSOj+Hr8rHQRaE7bqsNn3zySarokIZqKsKgyPLwNsP7nnuOGDEi85TmwU9j22y4GbQyhtByrbXWSkT1GWNG33BcJ2QVTVHFF1988ZwDhQB4sQhCjtRmeGoyTgsBR48enXNIK8BvjVFpxtI9RQ82niy++OIZaYjeREVUY+tXZKDv1vH06dOzj5TjMmoQDSldFK2pRRBB/v3vf08Oba24H2W8PasRtrbaOpC1RFhe0RYknq45/yhH6kBkKqcSLx6D98MdqHPLLbdcVt3wspBCrg4fVfJXvksTD916660TlXlKiFlWAzHt42nLozUnTZqU1UHl+z61G6flcaEaW2211bJPEAivwdf00b1wblwXn+zbt29ydnxRXnBB7081Pzw67YCSPWPGjMynioLkjCnXqpIgCd6lFHL27Nk5XrbAmWeI7hhR5aQQz/+h6qabbprrQERXviKkNP0WReHDIrBPPvkkIz05dboIPcQ9jbfoSdXUV199le2Auq4vEsV36RHMnFLO99prr6xHkCfH01X9tWc1wtZWWweylggLURSe89bQ6KGHHkrvBhF4JCobzymvxdtAyQcffDC9vqojyq4aUgoa9IQOUFpt8ZQpU5IPq6zCCRf0oqiI+d8Yz9PhIyNGjMg+le8HVZEjTwkltVeO9dFHH83KJgeF4aFeLWKTM8+uPlnlE2V+7bXXTg5lHrwDd0EIxJNDA3oAnvriiy/m9fTDfHglqCjF9jZzLc84cODA5G3mBoKZQ2MhUjCmtvuZh48++ijnrHxbenvVaj5v3EVJqu1GjhyZEY6KIlES9d6car+okuJ//fXXZ1bAWoHGxoviTAHHeVWm0Ulmz56dUZgognqNY7dnNcLWVlsHspYIS6mkwonV8YFRo0blMaZqM8X3NirzjjiCShN/nzZtWnpjHhTPo17yYLx4uc2PSrvxxhtnVQleW1bvlMaTQiJ10yqkpkyZkkeBQHTts9NCJELx9H8q5wcffJCKJV5InXZfqnT5dm88ESefOnVqfsf9IOCC+qg6h0Fs87DMMsvkXFB0tQ2C4qHUYuvCfEyZMiVfZ6J/OK28In4MUURaEN/n33777eSCJd/X79JwVt9T6QShu3Tpkkq/cS0PRoPK1qIojzK+3XbbZQQoSqCW+44IRT5etOQVm6K2G2+8MdeU+1CSjW17ViNsbbV1IGuJsLyl+Jrn5dG32mqrRA6eSK7MnlBKMy/EW9oVsdRSS6V6pl6WZ4JUEBZXwSX8HseeMWNGXouCzMv6f2knnnhim7/jPdD0qKOOStSD1u4hqoAWvCUvKdfYv3//+dRZY4hz89rM/SmOOPiWW26ZFT0OF6d0Qulm88JkY1kewv71r389lXL5S2qwnLr+mENo6OC9AQMGZOYA2qkcK2uY6RD6hXf7/qRJkzIqE605dE6/6SJMzbN8tHwyRB4wYECuXWNFj7BOIZzcOQ3EK1f79++fx5YaL3MCnbVb9kD7rQtr/wc/+EFGR9Y89L766qsjoorwSmv5wNrORCASoipc3mGHHfJvigqEqeVZxsJHwhWBZv/9989T1y04AgVh4Oyzz46Iamsa8UOYxUnMmDEjQzCLycIpz31lTlnwjlphrBD++uuvzxMtTAAnYBH6rjBTiM6++c1vZijobwQrbRf62qZGHBEWOnP32muvzbcmKEIX3mmzFE5EJYRwqE5xsIB79uyZApBQkliiP0JidAN1Ib6svPLK+TDph7OSfVbYbVN6eYYzwei+++7LNnoDAQfts6VxpB4kJ1JKGS2++OKZdizfBsiBeUCEs9YisW6LLbbI0kSO2vp0fydzem/uscceGxFVqgateeaZZzJ8N9/muS6cqK22/0XWEmEVN9sKRxrnOd57770MaRBuXrkMI3kw1xIC3nvvvRnSCmWUa5HDIYhkPDn9zjvvjIhK2Hj//ffzvT9QmvjUfPp+s0mG2xLF8xFYjjrqqPR6wkgnEAqrzj///IioUIKwISJ47bXXMiySTuHJ9V1I5v5QT8gmLbTBBhskSoteRBHa3GxCO+8OMncinunTp2daR8hXlmn6rqJ3KRjh9vXXX58RjdAftdBuCEIYIza5NvReffXVM5rQRiG5c5iPPPLINn0si++JZcLLcePGZSpKlAh9HdGj9FNkY60rAHr11VfzuiIs65Jwicop4DB3ohvz9eWXX+bahdKiCNdoz2qEra22DmQtEZYQIHnslD5cbuzYsSlMQRCG3/BUPAohgEDQuXPn9ESQggctpW5eGdeCFtBqscUWy9QTztLM1RZkztjFlwgI+OBrr72WUYRi93LroL6Wb98jQjzxxBMpOEApXBlqENQgFG6Fa7nX888/n+PB0xODyhRORIX6xpa4htPffffd6fmlOMqN+opjlJcS6rxjaN11181UG0QvDwSwRU+kI4Vk4zuhZujQodkOOoc2W3+l4YYiNGIQnWDmzJmZUjHOUjIEw/KNgD4PAS+++OJMYxGICIiEVZ+1eYUoKDK0jqytiKpwxjpobwshqxG2tto6kLVEWB6UGos7UuuGDh2ayhiuiveWG7DF5lRlifZFF100fwfR8Qmxv+JzXtt3eUXbmLbeeuv5TouHyhTd0pzmjjNqP6X0lltuyaQ7dRo/hlJlIYOCfgrtu+++m0iu3A9Phzw8P7XdhgI8WTu//e1vJ9IzyKoMsNkUtuCOIhvcfvjw4Xn2Lm6Mkxk7aRPcvUT/s88+OzUK37VR4+c//3lEVNvXIKvPGzO8v1u3brmWjJWIznoozWYFHFOqRGQwYcKE5OMiGOtE6soYWiciLZHZ2LFj54uc/ISKIizzowxVdOnz/fr1ywIW/RehUKcp5aXVCFtbbR3IWiIszwvxmg8mi5jHHctjLSEFb4SzQB3eUp72888/T56JmykILw+3grC2yuEhkP/ZZ59N/gMx/aSAltasMDe3F6878MADE2lwbUquKEI7cEroDoHXX3/9zLdBcPk9Hp/CK+dbvjcVL/vnP/+Z6G8e5Mu1o9mot7w/RHf9gQMHJteyXY+CD9GoxuU7bB3Jueuuu2a+FbopvdNu+XkRA9VYO6yxddZZJ+cZRzS/7ekQCitoGb5PV9l0002Tf2uP4gtRmjcDlNkOefrbb789N7TgpCJNGzNEKCIy2o/221gybdq0XEuUdmOOt7dnNcLWVlsHspbHnJ522mmNiMqzlrbxxhtnrhGy4XeUUyoytKQiyju9+eabyV0hOBVYLs82Mt5b/C9/yPP1798/q1AgCU4CaZtfYxER8fLLLzciKv7HK/PSSy21VJZR4mfu4ae+iipEGTjeO++8k21W2YTDul95ODd0w22MyUEHHZTIDhGhE3T4r//6r+zjlVde2YiYP7+sjVtssUVu7TPPogzzImKQW5dnhFovvvhiqt/aS32V34aCri2iMS6U1k033TTRDRqaQ1HSUUcd1WYO77zzzkZEpTu4p5zru+++m8eHig7wW6hHR8HPy1zv3Llzs+36ptJMZGVMvftYSS9uLTJcb731kqsq0TQHEH/PPfesjzmtrbaObi0R1iHbPAU1TL4J4kRUXAtvo3J6P6jvyvGpIHn22WezvpRC6iBpyAq5cAfez0+Is+qqqybSUwEhJTR4+OGH23iuX//6142IyrOVBe5du3ZNhRvPgIJQ47LLLouISkXmNZtfjqW/FE28uDzSBtLK9VHqefcVV1wxr69e13dV77z++uvZx+OOO67NO361UcXVIossklEPBdnf8CsqPaRVWUStv+6665JPyyeWr8bw01xBevyuOROhKonOQUuhqA4fPrzNHH73u99t837Y8o30Sy+9dKK0yM64q/MVgclqqJc3xw888EDmTEsEVdsNeaEldd24yYUvv/zyuT6Ztltbw4YNqxG2tto6urVE2JVXXrkRUR3fCRUonePGjUu1U46OGsxj4Sb4BU+r/rZXr16Jvjhpuambp4Xs5SsyeMVnn302FU81rJRTCDty5Mg2nuuwww5rw9MhNNSZM2dORg/UUvW/2ifX6agWvBR6/OMf/8iqIX0VeVCjRSbG1lhojzH55JNPckx5ZdEAZPz973+ffdx5550bERWCqeRRYTRs2LDM0aq99Vm/11bXlxPG+5daaqlUobUbysm/QhnzUR67CnlHjhyZeUxcGQeUTbjnnnvazOHhhx/eiKjGXXWX+fnwww+To2qzcZYlkMun0pa/79GjR85VWQ8Pyf3enNndI9dLxZ4+fXpGKbY0MtHcDTfcUCNsbbV1dGuJsCeddFIjovIM0EEutdFoJK+ws4LqJy8HBXghFSXqcTt16pRemQejDvJC7gH1eHoeFV/6wQ9+0MarRlRKqv//9re/XSDCUm+hNRWzS5cuqdDKkUIN7cXHeFxVPJC5uV7azh/thNp2iYgetEO78PtjjjkmVWneHzeSxz7hhBOyj4MHD25EVEomjy5K6NKlS/I6aAcZ3FskI8/oADmoOH78+MwCiCrUy2obrkjBtS783vxsttlmmbNVQ6y/7nfJJZe0mcNddtmlEVGp5FBclDdq1KhUh2UPVFy5vwwElfjUU0+NiOp4lxkzZuR6M1fly6shrGfAHFvrOO6KK66Y+Xc82LowbrfeemuNsLXV1tGtZaUThZUKiQdCyaeeeirVQUqiCha/xyl5JTyY95k8eXLulHEINT4EsXghlS5yirgO1HjppZfm49D4D89fmmvxwCpe9PHVV19ND8nj+6zPOM6FZ6featcyyyyTHA7SymnizpAW95PTgwBUxUmTJmXEg6tBJFyp2Xh197H/03cnTpyY/1bz6t70Bvs+6QJet6EibebMmZlzLl/fSHcQYTm+FSLjbCqgFlpooVxDIioRF0QrjaLuWsYWD504ceJ8L/ZShSSbIaeOv6twcnrHeuutl+vPOpDDtcahpBw6xIfMopzll18+5xWimrtSPS6t5QNrsIkaxJ/mckMhtdBTeKjowUB5+KV1yOxf+9rX8j0vUgLSBeWb2/xUKGGAhHS77rprigruJ5xt79R4DkTfhIpSGo888kie6yNEd20LnIAjnCrPVe7Tp0+Gmc3he0QVehsv17AILTCLYLfddsuUAyoh9SMl5NruHVE9EOZSSLbNNttkKsFDJ1zlhKXTylBPMcKqq66aDkdYjiKhTxwmOlFumDC3e+65Z46rENhaEbKXpkSQsETg5Nh69eqV4+uh86AKtzn45nLGiKoQZOGFF87+E8xQH28xsBnfvZTUmmM/t91221wPnBKn294GB1aHxLXV1oGsJcLy7grXeS5o1KdPn/kKnwlT5cZwnkOIoQyxZ8+euQ0Nurkm5LRxmaclOvGoBIQll1wyBQDCiHZArtKkU7yLVrgLCbp27ZooBUWgtZD4wgsvjIhKnBHCQaJ33nknQy7pBKhWphdsySrfcQpdXn755QxvbZRGWRR9NJt+CwEha3PoDRWFz5DhlFNOiYiKqph/BTMioYEDByb6GD8hsLBRIT+U8XeI79qXXXZZzjPRq5Uw2txeqCWKQ0kajUZeA3oTmcqTL5vD6IgK+dZff/1cI6ID4WxZkigSEwEZc20YNWpUhsQiUlShfC9TaTXC1lZbB7KWCOtp5zUJBTzHrFmz0rvhAjgC/gaFeLDyHaaPPvpoIjlhCu/E93Ar6E38WtB5xYoK8C8CRHvmXgpAtI/nHzNmTJZAujbPLzLQLmkevAfyd+/ePVFZpIGfQ1JoaTxxa9wKF9x5550TJWwOh6LmpdlwR2PkJ9Ts1q1bRjC4scS/ggmGU0InPHXChAn5t1/96lcRUZUT0hlwcghGt1DuZ30cddRRefSPw9jwXGhYGrRWskkk9Pn1118/+b2xa/6bcYioxpmgqd0zZszIfiv6V0KrNNXcKXMVKeC6zW9u1A5ryzi1dxwvqxG2tto6kLVEWKekk+p5Xl7otttuy+S9WJ+Xx6ekMfBe3tKBVp988kl6IslqfA3fhUp4GM5VHrMyYMCAvBYP1lwAsSBTMuga2gfx7r777kSl8tgZW8qUzCkW8fmzzjorIualpXh0XF8EYCM1XoiXKzjAx7xfdfjw4Xl9PNi4LOigbVvM8Cp8HPqfeeaZWXpaHslj/kUMxhJi+H+j0cgowwYE809BNf54JmQRiTUXH0gXSXGIftpDWHNVbqIXGf7iF7/IubAerS0Rjr7gpebBnD///PMZ7YgKbPezxRQfpTswWQ3Kc0Q1V/6Gb2tze1YjbG21dSBrWZpYW221/c+yGmFrq60DWUsOe++99zYiKjUUD1UQvcceeyT3U5xug7RjK1WwUAFVnzjoe/HFF09OSH2V56IS4844iuMv5b1Up/Tp0yeVOsppuZn8+9//fpui6osvvrgRUeWalSqq5po2bVpuPtdv+WFVXEriqNa4tc3Pa621VqrV8rs4G77T/H7UiEqRNb746s9+9rNUo/FB35Hr3HvvvbOPDz/8cCOiyisaf28d3G233VIpdfC2bW2iL7+XM6ZkepXKO++8k1ychkFdVbZHiTbXeL8KOdyte/fumWc2r9YObWPAgAFt5vCyyy5rc8yPfD4u3rdv3+TQ5lmfaSmXXnppRFRKufwxfnrooYdmbh8PVlFGH8BLzYdshrXevG710XdUT5nDrl271sX/tdXW0a0lh4U+PLrKHTnFIUOG5HEYUAaClHklCpn8ozzg+uuvnzlcyiXvBkFsvXJfeVleUzH2H/7wh8wNyv9CEijZvLk7otpeB1GpghDugw8+SOVQMbzowf19lmosX2sr2SGHHJLenhqshlS+z/1VSannNfYQ+q233so2QjxjLs931VVXZR9//vOftzkCx1hff/31ETEPtSjjcqSUS9VoohPqtKokh9OpU46ojgct33erjfqpMF7eGxIvueSSqfRrq0jL2inn8E9/+lMjoqoBsBZFZKNHj85owRZJrxuxLvXRGhcJqEh64YUXUn02LqIx97Mu9M3/y5e63XLLLbkRgPJMvXftyy+/vEbY2mrr6NaSw5YvQcItId33vve99Fw8hqMcVS15gTMvbIeHXNv999+fW4t8xtYmHpNnw3fkhSGMo0z69OmTR3Nqh+9C79Lk9kQEvLktXtoZUfFh99Ce3//+923GwLGj+PQ999yTHA4KqnG2Jc81myusIipU0Y9PP/00eZVKpzKn2Gw8Ns6If8shbrvttplDx59wMDXKxltuGBcTcdxzzz2Z73VMDr3D/+UZoR7Nw+9d64svvshtdCIn0UZ7pm8iGmOqvccdd1yuB5wRr6Sb6LNaANzWGH/11VfJO6E0vcZha/4ub+3+5kBe+8EHH5zv+bADzNppz2qEra22DmQtOezuu+/eiKgUPNUsUOmhhx5KL1O+1l4dKi+D9+AMNqXvu+++qfbytipXKHlqRSGAGk6oQ6G84oorEkmhLk5i8/Wxxx7bhhv87ne/a0RU3lz7qJx33nln8kjoi2PZM4vz2SyPY0PJI488Mn7zm99ERFUfqxIIt6Om48uQ2PgZz5VXXjm5vfpYiOT/+++/f/bxvPPOa0RU1VBNR6FGxLxdSpRoPB+von5CH5wSUlA2jz322DyYzRqhpDK83r2gJh5InX366acz0oI6VHeo1HxQekTEfvvt14io9AeRDy75zDPPpHrtmg4NFNFY48ZfH2kw++yzT75+BDpTsc0/ncKrOspDCtx74sSJ+V0cHgq7xxZbbFFz2Npq6+jWksOqGaX8lS9DmjNnTvKGk046KSKq/CcFlUdVq8ljOcXh6aefTqSUI8SZoBAexyuWB2m59oYbbpioBiEhfnsvA4aa1Fnfpxr27t07P4P3NSvIEZVnF0XgRVDkySefTHXUQeI+I7cI8fB5CAUZ1N7eddddqTQbL1xf3W6ziRwoldoMladPn54oo0bcPJevCBXx4KEQ5JhjjkmkhMrm2U+qsbpgPE+0Zq31798/x0J0JArEtUuDeBDf+pRbbVaeRTjWtL67J6XcHIvuOnfunPfHmfFi+oMI0b0ck0T7gPx33XVXZglwf1ElHaQ9a/nAWqgK0IU7BqRnz575Gcl1D6oHwMNEvFGELYw1cRFViOHhIlwomHf2kBDNRncPWdeuXXMCPBAKsoWcQk1Wvr9W6GYj+bLLLtvm7ef6HVE9kEJh7bdwhJZHHHFEikzGh+TPoVhItsMR/MqtY0sssURupOdAfOfss8+OiKo4PaLaAidtIgQ3TgceeGC2V0inP9pvbI444oiIqEQWTm327Nn5EHNe+ukzRDxt5dzMJVtooYXyYSGmuZa1Vhra4KFXHNEc6ttIYPtf2T7On4NEO8zPMccck7SKuOfB5EBRJ05IIU35oPft2zdBSTs8wNaJ42ZKq0Pi2mrrQNYSYcv3vijN4wX+/e9/Z8gDDSEnj6ZwwRu5eXzo+Prrr2c4QlRQisgz8UKQgPFgUGjMmDFx3nnnRcT8R738f6UGhPa8MsFi5MiRWXRQHogmhNQuqaFSiLvrrruy/9CACOX/wn2ih5QQROL533jjjSyJM/aiCajQbOZB+KwggADy2muvZdgsciA+CYWFftosjHO/hx56KPsqPBXaazeEdS0hMqQhKN577715siORSxmnFEhp1o+5h5ba+9xzzyU6K1Cwpn3WnJlT4X/zxnzXt6aJfNKe1rRxFKmgKuZi7NixWYSi/1C6vXfgshpha6utA1nLtM6tt97aiKi4DV4Kvfbdd98sMVRcjiv6DMkb8uI4uO3HH3+c3h7xJuOXghEJnFckYECPqVOn5v3xLkKA4obmN7tFVO/AVYQhoc/T/ehHP0qejXcSBqAVJIJURDScZbXVVkthQtGBsYRMeLh0gt8rUoG8SyyxRKKU9ohMFvT+oNNPP70RUQke5ksUc+CBBya/hS7K8UQZjtHB0XFn/584cWJycIUxPuOaeJ9+S2PY/KBg4JxzzsnDzkRHJ598ckRUBQsTJkxoM4eHHnpoo3kcjI/IaMstt8zxhI6iJVEKEc46ZdZkp06dcp6JbaIg88wIWlDbvIgiRo0alYgv3SYCw5O/+uqrOq1TW20d3VpyWCgJtaRsIMxbb72V6qCCfR6TUleerE61hRgHHXRQnpTPg1H7eGseirIJAXA3Hni77bZLPmuLFU+OK5bG0+GKkJ8iPnTo0ERwPAO/kXop3ykrquBpZ82alfzf2FGrqdHSPiXKKQDRr4iKK/HYrkl5bTbjb5OB8RDpvPbaa3k9iCRFN2jQoIioCkGgoH6JcNZdd91UriESNHRAmTErj3uxScO6uOiii3ItaTvuiveVpqzRGNqKKLX37rvvJme2XnFZWQFjqf3lu3/mzp2bkaboi5bh+B7r0fjQNGwKcRTPjjvumMUhohRquXFqz2qEra22DmQtEbbcsE2VbT7mU+5PLE6xwyF5dJ4Ed6CYXXvttclRoa732/iO4gI8E7KLatEQAAATJUlEQVTx6pTJKVOmZLG2HBn0K/OvTPso4uXhW++9916igEQ+D8uT8sbaKzKBFBMmTMgxU8545ZVXRkSFXvpmLPA40QXF9Lnnnsv7y5PiVOWWtojqUDmHflNOqdI9evTIcjiRjvEXlXj1hEwAvk3hXGGFFTKficu6hv5SjY2r9/PglAoWbrrppowUrIfyQPn2+qh8E0+G0G+//XbOCXXYBgH3uvvuuyOiKv6XNaBfdO/ePa+hpkDEYX2K1qjCttPRCGRIHn300RgwYEBEVGulLHBpz2qEra22DmQtVeKDDz64EdH2PacRleI4ceLERCgKLq/I41IjlazxOvjgkksuOd/rEXBGyEU5xa14WjwI/9xss82yKqqsHOJ9yzdbn3vuuY3me+HrvPoyyyyTh2JTf1WlQEfowUtSb+Ugd9ttt+QzIg98zDVxZ4oj5dzncNAtt9wyowcqLs8uujn33HOzj/vvv38jouJbIpvml3EZG5GEKitoZJzLrWDyo1//+tczAvBZY2O+oZ0if7zZ2BnvI488MrME1pC1osJq8ODBbebw+OOPb0RUJYzWqWt/+umnudleBCX6oSzjthDXunaM73e+8535/mbNaB8TXeDJoqvml2QZD3leOoQswqmnnlqrxLXV1tGtJYeldto6Ba14sHfffTeVM96ZB+fJIIS/y03xsOedd16qzzy2mlWHgfus2lLX9HkIcdxxx+WGaXyMlV6QQU/3xIdwLdw8okJHuTuqJE4pEqG2OqT8nnvuSeUbOuLUdAIbpiFuma9kgwcPzppqijJOuSAVFcL94he/iIgK9fHtYcOGJSr6PrWbVqAN2qwSyvq47777sr3y3lRt3JCWIPqAwNaDLZPvvPNOIpT7WAeQvTSRjQjMvSjPI0eOzPnHw6G4tSNK8ZoQc22r3F133ZX6iAo80eMll1wSEdWhgCIfuWdKM776/vvvp7KsGkq9fnsH3rMaYWurrQNZS4TFS+SMKMK4wS233JKqY+mVeRfVShRd6IMHb7311olQKkeonnJi8lh4B57qe67Zr1+/VPXUeUKHBb2KMaLiF7y0Kiqcr1OnTnnsJ/SF+BRv3AkfkcOV2xs+fHiiobHTR3lWdblyiu6Fl+rHt771rew3hDc/VNtms8VLBZf7Urz//e9/5/ddF1dU04vTig6gESSZPn16clBtwgn1j/mOKM0Ruv5/7bXXpjotgnI0kfEsDSrpk4it+S3vkN94iJKsKYq7qi4Rl/48+uijqezTUNRHyzlbr3QQ0ZK+0XEWWWSRrFcoX/9SvuajtBpha6utA1lLhJXflLMrX9J7/fXXJxKoxYSocpQ4IhSEgNTCffbZJz2pz/CC5cFp1FlormbU97/1rW+lV4WCeI/vlEat40nxQR53+eWXT3RS5wmtfQY3oSLqG1TdbrvtkkNRg6GZVxfaAA4tKIqQAcIOGzZsvtdKyr8u6FWF+iVawsnxr8022yzHT4Tz05/+tE37IWt5ZA/V+IADDkgeLOqgeuLQUFL1kXWgXtj47LLLLnk/e6dxWevQEaXs+OOPj4gKwfBT39too41ybkQh5sxcWrdqvuVYcctTTjklNQrjbNxECdpl95ZqP5GBzMX999+f2RTf9fLsW265JSKqSKu0lg+scMyikdwX1v3rX//KRWuQLDwPk8Q56PeAC4n79u2byXOLyANCoLCdy/Ym2/s4BaHK5ZdfnouKmON+QjQiAlMSpt3EH4ty/PjxeX9hvSILoSIBhZAjrOE8FltssXQEwjbOybUk3xUUEEc8AB7w3r17Z2G9FJCfCwqnyjOTFUkIwTfccMOcV0KIhWXOPGRlW9CeHXbYIUU+i1kBggfAYjeHyvQ8KOeff35EzJsn6T3FC9ZFe07Xg835ShPaBL755ptnoQTBSDuFt2iMexsfIlTXrl3TgVnzNlKYOwBz6KGHtvlJzJMmmzBhQs6hZ4yzAXztWR0S11ZbB7L/VlpHiCIs45WaT/ATlvjOhRdeGBHV0THQEMJIeTQajRQieHrfESbxnKWA5e9SOdtss00WGBAAfKe9N1sLjXy+3JY3ffr0LOSQ1oDKiiGUnvGgxkT6ZerUqZnWEjUQ8Ag70Fh7eWWfJwxttNFGOYa8stSIdkgvRFQIZ5OBtosallhiiQxPha2OmBE+G1+pOuvAfUePHv1/27uf0CivLgzgVyiktLXQRbSlCxdCmhgrId2U0lXbncUi3VVsBRuycCGFIuhG66KIaVralbqTKpYYQqmQNgsLJdCkWUgISsSmDS4kkmjsH4IkNsy3+p135vpluv3m456NJpl5571/5jznec65541IwX2LNkQS5pkQI7xVFGP8y8vLkRqUCnNf1j03kYC/OyIHHVdXVyNkJ45ZZ2gplYQ6QM36QyveYz/Wly2mVAmXShDtOXtSFPfss89GTzPUwb9FdCpW7P/ImiIs5IM+uAsEWV9fD16Bw3qN1AvRh4cll/NWS0tLIXvzagreCVYS5zzu2bNnU0qVx9dI7ebNm8EjoB0Bi3iQmxQCPoafu87Y2Fjw3jytkz9zBkrwkl7/1FNPxfXcM94F8YhRuJakv/QSkWJ6ejpQAkrz7HhRvZkHHNNr3NszzzwT90TMgrCKCohR0IjIVX/oAUfFNx2r83vH2LwH8to/orilpaUo0BFBWRv6Qm6EtYMHDzbcp+cHtbW1ReRir+RPyCPyuT9aCJRcXFx8rFBGRAid/Sytg/sTpzTSW1lZCd1GUzh759+sIGyxYi1kTRGW16GsKT9TajUyMhKpHx4JEkgq41Ckbh4MDxoeHo7yNaog9Y1JDZDgFUXgOu5rYWEh5HuqMLWYR82NjI5jQjQI9+DBg+AxxqKdZd6vGaeBDBTamZmZKL4YGhpKKVWeG8JTCynPClJ4ZXx5fX09ij20FVGcQJmvNyV/efpKscfk5GREP3QFaChywOvwLOtjLcfHxwPdFFVAdIgmgvCvVAfNw556/fXXI/ViL1kLc+VoGjMfeYMFSDg5ORm81jVEPAp98E73Zxyiye+//z7KO0V+FF3H7RSlMBqGtWWvvvrqY0cyFatImW5kBWGLFWsha4qw+A5OgLvJ6S0vL8ffoIscHi8snpcbw4cd0O7t7U2ff/55SqnKPVKhcQIeVzJZvJ/nhe/duxecUNM1yCa/lpunpFNhjRFvffrpp0OpxaXwtJxvUmehhvvct29f8HJIx+MbmygB/9WeBZrjdS+//HJ4dsgKaam29WY98CjIAmnGx8eDE0N/3JymIDoSRTk2Jlfd3t4e6GKdjQNy2h84NU7pfZDl2rVrEX1BO3uM1pGbpyKcPHkypVTtOU/56+joeKxQQzSRN/vGqUUgClmOHz8eaOsQijl1TVGlCMBROdGR/dDT0xN7ViRIhxDhbWQFYYsVayFreoB9YGCgllJVEggNeJY//vgjcoE8JI/KO0ISuUPKM4/y5JNPBoL5HPzHvUEJf8freFL//vXXX8EzeUzeGWfq6+trOBh84cKFWv018CDq8vXr14NvqChS8QPh8UKfJUKAIqurq1FU7nPwGserKK95pZUyR6/r6uqKzxWtUGKty4kTJ2KMnk7uPSIIvPutt95Kn376acOcUfatoRI7RymhAqX3iSeeCEUUmrz//vspparSDaLnGgeEq1fJRRA52mng1t/f37CGH3/8cS2lKoswOjqaUqrWoaOjIyImURruiJ9bb5GQ/DC0//vvv4Pr+51cqnU2Ni1izKfxyJzs2bMn9jxdRq7ZGPfu3VsOsBcr1urWFGE/+OCDWkoV78kfTrRz585QePEeyMljyH/iPXJWEOWVV14J5GQqnTyJXSE2L6j9KS8O3efn58NzQ0qIL+/4yy+/NHiut99+u5ZShSo4Fl43OzsbFU5QQBtNY+JBoQnFT550eno6rsvLqiLSdAt68c6ecqdda71abCzWzpip+uPj4zHGDz/8sGF80JFnf/fdd+M6lGvoT2WFjnLnlGwK8PT0dKyVPDvEpR14LxSUIxVx5VVUKVVqtXvFAb/88suGNRwcHKylVEVA1kHG4IUXXgjNhC5jz1CDIa5orr+/P6VU6TW//vprOnDgQEqpUpRdg0qtPl4098UXXzT8LM9dX79tnd2z+ueJiYmCsMWKtbo1RdjOzs5aSlV7EUolrzQ3Nxeem9flZaAPpIMQPBcUamtri7wZfofvyWdq0ckb4W68FOX1559/jlwuz02Nw79HR0cbPNdLL71US6lSNY3D+5aXlyNacG2ellqshpWKaIxQs7u7OziouYPgeE/+BHaoYm7w6O3bt4cCL3qwBq7x9ddfxxj3799fq3+tpmP47sWLF6PGVbUapMb38GhzJFqQ952ZmQk1W901Rdm8O5pI88DvzIt9MzExEWtAbZUHdxTxzp07DWvY09NTS6lS+u0LaH7t2rU4IA7loC9ln8JO5VZL7vRUd3d3RByiQ/dpLiGttYOWUJvWcffu3YhMfb49ZKzDw8MFYYsVa3VrirD4HRUS6vDAnZ2dUe3jNU4mUM54Obw0f7Dx2NhY8AfN3nhlVUrQUuWQ3B0lj/f87bffIu/KG+d1sj/88EOD5+rr66ulVCEDLyki2L59e+RIcSh/o7TyvLi2k0rm9saNG1GtBaXoAlDYmVpjVGVERa1/EJWzm+bUaRHnNWdnZ2OMWtXm6iwEmZubi/XMFXYRFYPA5pj2sLi42PBIi/pxiELyJ91bFzXEtI+UKnR2ogeiy3ePjIw0rOGpU6dqKVURAfWWmr+wsBBjcn/5A55xbHXq9p77u3XrVuxLa2Xez58/n1KqNB5Ks/kxr9B6YGAg9pCMiCjHuekrV64UhC1WrNWtaaUTpQ+yyqWK97/77rto/ahdCCTgwXlafJTCine9+eabUTGk0obqSiXEleTVDh06lFKqPBk+snv37jj3SUF2bR4+N+iY81Rc7/Lly9E5IH/8h6oUnBqXxvnrK2Lk13j6vPIJwlAL5fx4ft5669atgeSUeRwKatVb/uBiqj2U2LJlS1RMUa7Nv5+pncZDS6B+vvjii6G+Dg4OppSq9T937lxKqeLQzsNSpI3BGv7zzz+B+HmNrkq43EQ+KovsG+r29PR0KLv+pmrNvhB5aLCuEkrr1Oeeey64KJ4JyUURX331VcN7cWprpw3Mpk2bgru7vkqsf3sYVtMvrJBIMl/JndTDrl27IgQWutk8xCYb38QoLrDpR0dH4//Cal8E4aMNJGwV7gpJJL/X1taiNYnwkBDkvbn5vUkdGBhIKVXiyCeffBKfz9n4kvu9LztRQRrIl+3hw4cRtks9WDwpFNcSsnk9gUMIVavVwnFxoDYb0anebGbhojmt76Us1WTtOCBtWwhf5siXzrpdvXo1CuKZcj3O1X5QbO9a9gUqsnnz5kiX5E+f36gJgXn25Sfk+CLt2LEjDnmgKRxlfj+cMgdkfz///PNxj1JEgMs1OVJpN2Wy1tyX9KOPPorCCffOQRPvNrISEhcr1kLWVHQ6ffp0LaWqTYlwjYDS3t7+GEIJn6GAwmzH8JBqofOuXbsCDZnkvqS1cAn6bIR0a2tr4QV9DjIvOshFp2PHjtXqx8QLQpHe3t5AIB7evTtSJqxRBOH+hL9dXV2BpOYBAok4RCLCUIIW9IQy27Zti/kQKhL+oHB90v2zzz5rSOso5NdRcMuWLeHlNWETygmBhZHGL5qCHEePHg0xEUoTfEQKhDLljOZDOgdFGh0dfayIwFqIYPLCiW+++aaWUlWUYw+KvN54441ogkAAQhGk4ITy9osxu4fDhw+HQJQ/RdH8e689ZD6F8sTTqampGJMIMC+zvXTpUhGdihVrdWvKYfEOUrweqjjst99+GwQbSuIREsP4L6/Ns/LEf/75Z6C0w9aeVeLYGK8IeQkGhATiwv379+P6EMwxOwJabjyaz1A47uepqamIFvBB/Jb31fmdx8VHINGdO3fCy4oKFLZLvuNF7odYp3gAWjx69CiiBX8zL//tuSxQF0Ir2DAfk5OTwdfMJxNZQDbIotxQNHPmzJkolCFyEVEgu4hBVOAahBzo/c4778TYiV15H+TcoKOoIZ+HoaGhaHrgaXREt/xZxJDVWEUGP/30UwiY3iuCcuDBujtgQX9QaEOk6u/vj72u7ax5MdaNrCBssWItZE0RVjkZ5YwaCk1///334D+8DK+Ce/E2rgGttdmcnJwMb+bAsff6fN6YzO8avBHPtrKyEm05NDlzbYpqbhQ9HMoxLKmkiYmJUB15fiipuMG16QGQB6edm5sLroLvOEjgNXg4ZROiaqruMPnWrVujKZpGXtI5rl1v+BxEx5XN3djYWHymzxA5HDlyJKWUosGA61PxRR7z8/OxRu4Jv8fn8qfTa4GDW+Kyr732WmgACkNENtY2NwcOIB51Vtuf9957LxBWBKhwgsaC24vMRESOh/74448RQeVtf+01ayV7IZVnf0if3b59O8pvFc5osL5RKyNWELZYsRaypipxsWLF/resIGyxYi1k5QtbrFgLWfnCFivWQla+sMWKtZCVL2yxYi1k5QtbrFgL2X8A1CqAJ+zQOn4AAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2daYBU1ZmG36ruhmaN6Dg6Ok6GxERlErdRXNsF3NDRRI37EjVG1LibiEvGJC4RtxiNENfgjonGQXRQMyouQc3iEiaIGRxRXFACOEDT3XTTXfOjfM459VXdquruqobqnPdPdVfduvece26d99u/VCaTUURERG0gvaYHEBERUT7iDzYiooYQf7ARETWE+IONiKghxB9sREQNob7Yh6lUqt+ZkDOZTCr8v7/PsZrzS6ez+31XV1ePz1FXV5fzf2dnZ8nv2DUcPnx4RpJWrVqVM55BgwZJkgYMGKD29vacMbe2tkqS6uuzP4FUKnvKlpYWSVJDQ4Mkadttt5Ukvf/++1q5cmXOd5YsWSJJamxszBk7/+OBWb16tSTpq1/9qiRp7ty57joDBw7MOYbvLlu2LGeOIDJsREQNoSjDRvQ/wCSh/73Qe6W+I/WOWUE5jFoKjIPXddddV5K0aNEiSVkWW2+99SR5ZoXJ+B+mHzBggCQ/1w8++ECS9Omnn7qx8hkMbscB03PfYPePP/7YfQ6zdnR05Iyn1D2NDBsRUUOIDPs3AnQydvSefKcUE4coV78t55yljoGdAv0vZ/yrVq1y7IgeyrnWX399SdJf//pXSdIGG2wgSWpra5MkLV68WFL2HsCKfJe5MT5eLTjn//3f/7nvcw5eR4wYIUlavnx54n2QIsNGRNQUIsP+jWDIkCGS/C4PG6TT6Tw9En0OyyWADWAyWCiEZVb+57uc2+qDxVDqGPTQv/u7v8s5fvjw4ZKyDLt06dKccX3hC1+Q5PVcvgPDbbrpppKy1mHOsWLFCkmeuZkbVmMkEXToTz/9VJJnfD6vq6vT5z73uZyxMw7OnYTIsBERNYRUCd2hT3yU7PabbbaZJOmtt97KeR9UIrOokn5YyxZrCwr5YbujKzIvq6vZ78Iw//zP/+x0wMsvv1ySdP7550uShg4dKkmOnew5sN7i08xkMoljDZg/Zw3XX3/9HD8sr+iOixcvdmO1PlLYcdiwYZI8o8J0XHPnnXd2DM45nnvuOUned4t+zHcYB+cKpQ6ub1mauX/yyScFFeI19oO96aabJEmXXHKJW1QUfEzr3AjM54g4mMd7gr4MnNhoo40kZcf9P//zP5Iq4wophe4GTvBAsfHYMZb6Ae2111564YUXJPmH9B/+4R8kSV/84hclSRtvvLEkv3YvvfSSJC92h+cudY/sGo4YMSIjeXGW54VxDxw40KkE/KgYJz8+XC9ce8MNN5Tkxexp06bp17/+tSTpiSeekCR96UtfkiQdfvjhkqRf/vKXkqS3334755XNKAza4NnmmeY+sAbNzc0xcCIiotZRcYYt1/Q/ePBgSVkWxaSN2HTHHXdIkiZMmCBJmj59uiRpxx13LOvcxVBNhg13dMnPsb6+XltttZUk6eWXX5bkd1QMN5tvvrkkrw70BoUYtjthhFZMBTAxrHDnnXdKyq7Tf/3Xf0mSDjzwQElZMVmSe3/BggWSpObmZknSBRdcIEn6/e9/L8kz3+LFi/PW1z5TSQyLsQemxcDW2NiY586CHd977z1Jfq3+8R//UZI0evRoSdL+++8vKcvaY8eOleQNRP/7v/8rSfrP//xPSdI555wjSXr66acleYb9j//4D0nShx9+6O4B6490ydwY5/LlyyPDRkTUOtYKoxO45557JHmT+pFHHinJ64Ls0hg4uhMEACrJsNZlwf/rrLOOJL/DX3bZZY51t9xyS0le70GXsXOBzdCtuoNKBf+z+6PvYZiBlZ588klJ0tixY91n6LXTpk2TJG299daSpLvuukuS9J3vfEeSZ0N7jXQ6XVKHtms4bNiwjJR/rzDkrF692q0N4+P66NhIOn//938vSbr22mslSc8884wkady4cU7fRQL5wx/+IEn6y1/+Ikn605/+JEn6+te/LskbvVhrXDgLFixw68t1GQ9SZltbW2TYiIhax1rBsOygWOTYiT766CNJXmcKd8yeohpunQMOOEBSfkrWlClTJGV1Wpj1Jz/5iSSvKx133HGSPAMVC0ooF91h2FQqlWgT4H7ffPPNOa+/+tWvJHmL77rrruv0NOwOMC4BCyeccIIkb5949913JXmWnjhxoqQsw5SygySl11nJBn154MCB7lycG5bkmTv77LMlSf/93/8tyTP/rrvuKkmaPXu2my/69xZbbJEzduaGrgurv/jii5L88/zB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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2de6ClY73HP/syY4wZaojTTKkpcg6DmZBLkjCUIiS6J0VGSVQUKd0UKl1kXIcUopNKiOjmltuUkkoTYkqOM4Zp4rjN7PPH7vM873rWetd619pr75m9Pd9/Zva6vO/zvO+7ft/f/dczMDBARkbG6EDvil5ARkZGdeQfbEbGKEL+wWZkjCLkH2xGxihC/sFmZIwi9Dd7s6enp2MXcm/voCxYvnx5p4cYEqZMmQLA4sWLa14fGBjoKf49nHvs6enxnDX/L/sMQF9fX82/Tz75JADjx4+v+bvZ+Yt7HMr+ytbc6P2q99t9+fmnnnoKgDXWWAOAJUuWMGHChJr3li1bVnOMbt7DlRXpHkVm2IyMUYSeZnHY4ZBcraT2cB2rv39QmXjqqadWKuncDou1giz8xBNP1DGsxxHtXP8qa0g/498yqSwpw/q37/u9KudYvnz5SnUPhwOZYTMyxgCa2rApXv/61wPwwx/+sPQzZdI4laxi8uTJLF26tOF3X/SiFwFw9913NzxXOxL/6aefLv1sEWuuuSYADz30UKXPF88lWxSYIKzBdcycOROAe++9F4DnPve5APzhD38AYOLEiQA89thjNesvIrUXPV/Rvk3hcVZddVUA/u///q90H+k5x40bB0Sb0vP7b/HannHGGQD85Cc/AeCf//wnAFdddRUA66+/PgB33nlnwz1A1BQ8XxX2XZmQXq9uIjNsRsYowojZsEpQ/9Ur+PDDDzeV+tDYQ9rqPO7riiuuAODVr361rze0fzqxrVO7UHZcZZVVAILm0N/fz5ve9CYALrzwQgCe/exnA/DAAw8AUfPQQ/r4449XXkeKRl7ioXjt1Y5WW201APbYYw8ALrroIgB233135syZA8C5554LwPTp04GoURxyyCFA1Jquu+46oJ61q6xvRXmJX/ziFwNw1113AeVMWqZNtoNsw2ZkjAE0Zdhp06YNAPzjH/8AmrNPmYTshlc4lVh//vOfAXjJS17S9jlSyTVx4sQBiIzWyTrLJG3KwI3eqxLDbYX02hf32N/fX3OAKlLfc6sxlMWCtb/XWmutcA3+93//F4CpU6cCcMcddwBRe3KNrqPRetLrpoe/8J0V6iXuZqSjDGUM29TpdP/997c8cPrgpZsphBpaHmv11VcHosNlrbXWAqID6MorrwRg1qxZNcdWVXv44Yfrzt9K1fKH2s5NSD9b9kNV0MyYMYNHHnmkZi9FdRnKnWLN1tXqRw/t/UDTkMyjjz5a8zn3OWnSJCA6kE444QSe9axnAXDDDTcAcPDBBwOw0UYbATB//vya9XjPPEfx+fGeKQS8R74+knjhC18IDD5bZ555JgAXX3wxABdccMGIryerxBkZowjD7nRK1ShTBl/72tcCg46L448/vuY7//M//wPABz7wAQBe+tKXAvD3v/8diKqax1INe/rppzn11FMBeO9735vuBWgddG8WyE8lfPoZ2XK99dYDYPPNNwdg7ty5HHjggQC8853vBODHP/4xEJ00ru9f//pX2EvxmP772GOP1amI6T1s5HRKWb/Rd31PtktVfR1iOo7e9773ATBnzhx++ctfAvCc5zwHgH333ReAv/3tb0BkydRx6PPhOp588sngkFMrcT068x5//PFhV4m9xmoTDz/8cLg3vvbzn/8cgB122KHbp89Op4yMsYBKDKstuWjRopYHVApqsyqNlbCf//znAdhtt92AQZbU/pFVtG/e+MY3ApGFlixZAkQG+9a3vgXAy1/+cmBQuj/44INN19dJSKCqm37GjBkAfO973wPgM5/5DDAYwnAvv/3tb4F4Lf3b66Y2ccsttwAx/NVqX0UU99jb29tQgyjupar97hpNZLGw4pZbbmHatGlAtF3vueceoN63seGGGwLRkSlrpUkSxe+kf4+E0+k1r3kNAB/+8IeBQcbdbrvtAFi4cCEAW2+9NRA1v24iM2xGxhhA123YMml9zDHHAJFhxWqrrRaY0zCNnkOTCpTSprPNnTsXgK997WsA3HfffQBMmzYtMLoSvpl912iPqa339NNPl3q+UxtWL/eee+4Z9gYwe/bswLCtvNK+Xmb7L168uCUTNiuvc1+utZFnPUWaevmGN7wBiH6Ctddemy233BKIHv4yeCztQO+19vKTTz5Zc+1b7a/RHtNzdZIMY/rtJptsAgymrB533HEAnHzyyUD09A8HMsNmZIwB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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dZ4BdVb32f5NMJgQiIUhooVyCyKVdLoSONBGR3nsRBaQp0rtKky5FQCmCdJAeQLpUAemdUKVdEKQnQELavB/G3177rDn7lJkzMznzrufLJOfss/dae+29nn//t7S3t5OQkNAcGNDXA0hISKgd6YVNSGgipBc2IaGJkF7YhIQmQnphExKaCK2VvmxpaWkqE/IMM8zAxIkTy343YEDH3jR16tSW6PN2AK3lLS0dX48aNQqAf/7zn6y11loA/P3vfwdgwoQJ5H8z88wzAzBu3DgAWls7buugQYMAWHDBBXnhhRdKxjFw4EAApk2bBsDdd98NwBprrAHAkCFDSq7l8f4FmDJlSsk5xeTJk7M5Fq3hRhttBMCYMWNYdNFFAXjppZfKHVoVLS0tne5f7H2Iv692PoBZZpkFgM8++yw+V9k1jK+VP188rng8rpnr4d/8OfzMNZg6dWrJOVxv1yW+Vn6d4vPHiOeYzbXirxISEqYrtFTyw07vDOuOld+tZpppJgC++uqrsr+Jd66hQ4e2Q2fWHDx4MAATJ07sxIbLLrssAM8//3zJ5+6s/n/YsGEAfP75553GseWWWwKBtf/973+XXH+eeeYB4F//+hcAkydPBmDhhRfm5ZdfLjmXO7zjrIVhK+GEE04A4JBDDql43JVXXgnANtts0+k75yFzzTnnnAC89957AMw777wA/N///V/J8cOGDeOLL76oeN14DYvmmGfVmGGr/V/813/9FwDvvPNOtq4e698itmxrawPC2nnugQMHdmLneBzTpk1LDJuQ0OzoNsMW7UzTK+LdeeDAgWX1H/WRWWedlU8++aTksxlmmAEgY4JvfetbQGBSdV710llmmSU71t34j3/8IwB77LFHybm9vmzt/d1xxx0BuOSSSxg5ciQA77//fjw3r1Ezw84666x8+umnJZ+Vk1wqfT9o0CAWXnhhgExXHzNmDBB0ZX+z3HLLAfCPf/yj5JwyzmyzzcYNN9wABOZWysjNsyLDlnsmi57TIoaba665gHCP83q6UsOll14KwKGHHgrAW2+9BYTn45tvvik5XrvEuHHjss+cd25uZecoEsMmJDQRmlqH7QqKdmd3PCETPPLII9lns88+OxCsl6+++qrnLPntt7/9bYCMudrb2xkxYgQAH330kdcFYP/99wfgd7/7HRCYSB06tg7n9eHY4irLjR07tirDquPPNNNM2TXVub7zne8AgS1jKDn84Ac/yD6bb775gA5dL48jjzyy5K/wfitJrL766gDcd999Za8JwYJ+zz331KTDOp9JkybljwU6SwnxGirxyICVrLoxS8fW4pyHovAc8bmSDpuQ0A/Qawx7xx13AEG/Ey+88EKmA26//fYAPPTQQwAZK6lDxrucTOb3eT2jCDHDDho0qB06+9Ty13LHlBXUTdw53UmXX355AJ588kkgMPIXX3zBSiutVDK3r7/+uuI4xayzzgoEtm5ra8vG6Dhiq2Xe19zINVxzzTUBuOeee4DA+t98800mOahr33nnnV2+TjlmhGA5f/fdd0vWcMiQIe2OAzqz5YABAwr9r9WsxHkfazyeepFn9aI5iiIdtuEvrIPygZxxxhmBID7ddtttJceVw4cffgiEl2bVVVcF4MEHHwSCIUOxTsf6e++9V9UxH9+IESNGtAN8/PHHJcf5cuad7prnHXu8yLH4eskllwBw4oknZuLlBhtsAMBNN91Ucp0iN1SMmWaaKQsOcRybbLIJAFdffXWnOd57773tAN///vdrOn8e8UYgDCp5+umnARg/fnwmjr/44osArLDCCkAw2sQiaDXDVv66eRdbPD+Atra2dgjrUwu8frzpek03StdlypQp2TrXItrmzx3PecYZZ+TLL78Eghsy3sCTSJyQ0A9QMTSxHqy33npA2GHHjx8PhJ1DESDeUadOnVoSbgcdpv38sa+99lrJ/xUPZdyNN94Y6NgdFV9r3W11t8ThZu6422+/fSbOK/Y5DtlRhnfOnnOhhRbKPlcq8H5cf/31JePQFRCHVsZGkq+++qoTsyuCl8Paa69dafoV1Qg/dz4XXnghEJh16NChQAeLGpYptttuOwDOPfdcgE7f1wKvr6hbhJgdy4Uhev/8zOfR9d5iiy2AYPTae++9Adhrr70A+J//+R+uvfZaALbddlsgPIcG3fjM/fjHPwbCGvu99+uzzz4rWc96kBg2IaGJ0C0ddvjw4Rm7qKu6m6gDyLiGpml8Oeqoo4AOdvAzd2V3dMP13MlkH3UaAwjycKe85ppryo451n8WWmihdoA33ngDCEzrrj148GB++tOfAmFnXXnllUvGpfHL38i86invv/9+liCw7777AsEFs8466wBBx1enidlc1ph//vl59913S8aq4aKcS2DkyJHtjqEI/s41MlzQ68w///wl87/iiivKzjeP8847DyALozzttNMKr18v4jVcaqml2gGeeeaZwt84xjgxQ6ZdcMEFgRDc8POf/xwIz/NCCy3Es88+C4RAmV133RUIa/fXv/4VCO+C0pTPh89z/rpx2GJy6yQk9CM0zEps+JghXUVwh1tllVWADn1oxRVXBOD2228HgkXTXdAwN3elDz74AAgMm9eLZV+Dy19//fWS6xcFTvg7WcNdcsCAAZl7SV36T3/6EwA777wzEHZh9VB3SfWTm266KbNCe6zShIEQnuvhhx8G4PzzzweCDpVz2WSMJ2vGVstybh0TEdQly617vMtvttlmALz99tsAPP74451+4/dLLbUUAPfeey8ASy65JBBcdQcccAAASy+9dOH1a0VReKnMFycP5PV0Ldy6AnUVue4Gjfzv//4vENbw7rvvzoJClPR8RuLf+n+lC8/15ptvAh1rELsRy4QoJoZNSGh29JgfNk72PeaYYwA47LDDPDfQ4WD/4Q9/CIRE8CeeeALoSB6HEGwRn1OdS79tLShiWMMN1Tudx+KLL87pp58OdOjsfgZhV3Q8/lYW8/gBAwZkY5SltRgahKDOd9ddd5WMV91KCWDAgAEceOCBQNAlvU9KJJMmTaorcCJeM63v2gE233xzIEhFMU499dQstFIL/29/+1sgpBEqWcSYe+65gco6doxa0+ty33fy+yudxSGVv/71r4Fga3Dcs802Wye7gvfb51ApM06Gj0MUW1tb8z7lbIz5c37zzTeJYRMSmh0V/bBzzDEHUBuDxX7MuMSJVlh3MnXMZZZZJvNzylD6L03BcvfxN/oBy42rKIKmWgSUek9cluSWW27JxmHiehzZpKXPa6rHX3XVVUBH1I+fGa4oY6ofm6LluU30Fq+88goAhx9+ePZbrbjOzZ28XsT3Sh39z3/+c8n5Y8hSW265ZRbVpUVUKUQfsVbxP/zhD0AIXbzxxhuBoH9OmDChy/qtz5zslffH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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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SxeJYRMSOghNNxJvFu+//36/2SyOSbjpppsAmDx5ctvX1Qhk1tgDWeoBztNo9JIq8eNREXrG53d4zbYN1abVD9EK5Nn9pXFQ3yPD33rrrUCYouh848985jMATJgwoc//99prrywW7lykn//85wB8//vfB2DJJZcEgmdZe9l4banWIbNWK0aIkRg2IaGDMOAMC2FKnUyk3fCDH/xgwNbUCJSOjYyakJ2N5Slxjf0Za+7p6SkkjbJoOEHedRtn3X777du2hjy2mjNnTva7movrMzZqtpL26C677AIEz+4yyyyTaQ2+5qxe927atGlAyHiKSzMrFYHEBSR5SAybkNBBGHCGHTFiBJtuuinQ3wP6k5/8BICNNtqo7etqBJVKtvxfPBrCa3aI1KmnngoEj6PeYeOBa621VgtW3hy6uroyj2nsHdbrXYR3OA95HtdyDdTiAnXvs1peXHTusV944YXsGGYuuRcbbrghQFbg4Wec5VsuMpBns1aL1yeGTUjoIAxYHNZhRC+++GI2UT2Wzq2w1QaiCdu8efMyqasE//3vfw8Er6SvO35yypQpANx77711n69dcdhSGzEv/3sg9jDO0x0+fHgWB44nwsdxY78Pflbv/AILLJDFai2FfOaZZwC4+uqrAbjnnnsAmDp1ap9jVfmOlX1PisMmJAwCtN2GVWKNHj26dwFDh/aTzvUOimo1qtWuqiHMmjWrz+tKz66uroxh9Ryuueaaff72vmgXmZ+63HLLAfPXPfG61lhjjT5/l6IVDdKrIS8f+8MPP+xn58YVPe6heb8ysf//8MMPs+fULDRzyc1sOuOMM4CgLWkfl7NTfc111Vqt1TaV2HIlDXGN+lIVxRtgmVorOgc0ohLHHQXcMKelxyjXp2n99dcHQuK4KtoyyywDhGR5Ew3iL2i1VLZStEslLrc/7m8zBeo1nLeuPSwtTohVYO+rBLLooosCoQBFtfcvf/lLVsDwxz/+EYDLL78cCGEcyy1PO+0011n1WmKVuOQLnFTihIROR9tUYiVvOaieXHHFFUBgY5MF2jl7tBxkVrUCEzvyILPusMMOANx888393mOYI24rkuekaSQZYyCwySabtP2c1Z6PuXPnZvdP7UdGU1t67bXXgNCe6P777wdg4403BnrTC+01ttdeewEh3fK5554DQnFKLb2N85xN1fY5MWxCQgehbTasqV9KFpmltEerLCyDxXp9ESzTTFgntrt1FOlAmjlzJhDK7JTaU6dO5cgjj6zpHLWEQWJ/QIxW27A64UpT79wrtSJT/1qBRmzY2HY1MV/H0KGHHgqE53KPPfYAgtNvxowZWd9jtSMdVAcddBAQnoPjjz/edeauKRWwJyR8DNA2ho17D3vef/zjHxmjysJ6iR988MGiTp8hTzrH6xOnnXZa1vLj5ZdfBkIpllIyvqZrrrkG6NuJPi+xQHe+bXL0EjeDdnuJ33///Yz14yT2dnr64/BbPWvwvdq0po7aluiwww7jwgsv7PM/n9eLLroIgGOOOQboW6iRd/5qE+7S9LqEhEGAAUtN1P569913M5tv3XXXBYKnTsml968VXeOrXePIkSNz26i6Lv9vuqUJFKeccgrQa8/Z3jQPepaV2sZphXHNWlq6tpth33zzTc4880wgtPz0OmwCX/B5K+5hPcwae5jj9qYWsv/tb3/LEkX0NJ9zzjlAuMavfe1rQGhzGmtr5ZBXZpcYNiFhEKDtqYm215ApPvnJT2YFwEo7i4yVdtoM7YTS8rzzzsu0AdcTM75saJxODcG2rcsuu2wWu7ONiF5KPY6ez3PFNm89zdJbDT2oelgXW2yxjFlFO2zZGI0UGsSxW++/+2KRxuabb55lMpkN9bnPfQ6A1VdfHQhtfprJF0jldQkJgwgtZ1glldJIj+vjjz8OwD777JPFuiwAduiVJWYOyWonzjvvPAD222+/fvHfl156CQgT6JZYYgkgNI62KbUM9Nhjj2XviUsJtZUuu+wyILTQ/MMf/gCE2N5AtoVxre6dTbZLC7pdn2NLjEFbPlhtvEiR69TutLF3PZ/1mvQZGGu97bbbMu1QW/aRRx4Bep9hCPnf5hrHxy43NK1ezSMxbEJCB6FlXmKliAwrGz355JNAyCgZNWpUJhF33XVXAI477jhgYKt1tFPeeeedzEaNW9hUa6Dl30suuWQWU/70pz8NBAZX86i1SXp3d3eWr/u73/2u7HuK9hK7ZitYbrnlFiDEO7u7uzNNwBi0zcxagVY2ITAebxbXV77yFaBXI7RdqV5hK630R9x3332uB+jPrOVa1uQhZTolJAwCtIxhzToxp9SKBm047cBlllkms9viVpPm5haJWqWz0nHIkCGZLWSzrbzsFOOwsUd31VVXzeoqq+VFe9+MSVs/Ww+KYlhboXz7298GQqOykvN4jszWM2vNfW5nHDavoVkpo+XFPd0X7//ee+8N9A4yg95m4VaTacM//PDDAEyfPh0IGocZcfow/Fmy3sSwCQkfB7TMSxwPKlZaK1ls53nqqadmXmLt3TjLZyBQGkvT/j788MMBOPvss4HgSTR2lyc1ZVeoXnFkHnUjzFo03Idzzz0XgKOOOgoI1+ngqPXWWy/TjoqsrKoXFSpfct8Tj1Nx3bbq8TkYO3Zs9rtRi9133x0I2qIjZ4wIvPjii33OVcS9aXtqojfIYPPMmTP7zZFpJYpwWHjD3QBRrfcTwPXXXw+EzRZxG5pm0K7UxIkTJwK9qmE7v6D1qsTlIDmorkowcVfFI444AuhVjTXdvvzlLwPBcRiHa0ygcapAmfXnJpSUFL8nlTghodMx4PNh242B6EvcbgzkfNh2oNY9LKfx2AzPlEM1A98rZLqtt94a6DUPnB4fM7nvXXrppYHgdIpDRPUUtCenU0LCIEBi2EF+jYP9+gCGDRvWA/19B+XsxDjJRfszr/hdx+IiiyySpVvmwZCWKYq1FAGkzv8JCYMYiWHbdI2GtfI8h53oJR4oNLOHzbTMjRvE5xVkVEuKKJf8n2zYhIRBiIoMm5CQMH8hMWxCQgehYmpiu+2fdozkSF7izsfHbQ9LkRg2IaGD0PYmbJUQM2s7G3gltAa15Fcn1I7EsAkJHYSGGLaREQj1vFdY/G41j/+PBxk1e96E1iGPWW1d28qhWYMRiWETEjoIFeOw5mha0VAEW8XtJLfbbruspefmm28OwO23397nPWYB2ajZnE3bkpQ7fp6nOfa+rbDCCj1QzBCq+QUfNy9xd3d3DwzcwO9WIHmJExIGAVre5jQ+vqMqbBl54YUXZq0+n3jiCSC0/Bw9ejQQmlNXG1ex4IIL9hv9GOPjFsNrxfXZecEm4X/9618zrUdtzNGMBx98MBBqRTfeeGMApk2b5lrrPn+9e1hL07P5DXkM2/QXNk5atz+TX674/z/60Y+A0Lto7NixmePBth1nnXUWADfddBMQutNZtqTa67lUZxdYYIHciWF5U8HSF7a/GXHiiScCvZ0CIfS0snukX8461wTA1VdfDcDkyZOB0G7lpz/9KdAryO0PVeFYHb2HqWtiQsLHBIWpxDaesqO/k96U3rKo3eMvv/xyoLfDnO067ENsT1iD7nE5k0zs65UagFUrW2ploznP2dXVlXXGV+1X89hhhx2AMJen2rFqQaMq8ec///k+a/E+22zOHsO1zPmJy8aEYR73XE3LSQu1XGcr97DS/ba9jDN1hM5SJzG4t17r8ssvD9Tn2EwMm5AwCFBYaqLMKuzVayMqmcQJdUqymTNnZjN1TJBQusmgwtc9di1oh7PB2TO2/bznnnuAXmcM9E7i9np12Nh6RA1Eu1Dt4qqrrgLam/hxww03AGFv9EPceOONQHAC2tX/1ltvBXonzjupQKfiU089BYTQmyzj9dgidPz48X1eH2g4mU472inrSy21VKZhfPGLXwRg5ZVXBuDII48Ewv47F9jnusiQYWLYhIQOQstSE00fdKamtsrdd98NwIEHHgjAJptsknWYl1HzWk7OLwnkdsJ35qnT0510VmkmkG1G/Ol9itttDmRqZXzOSZMm9fnbNjdqFqVQq7jjjjuAwEJCDWPfffcFwr1rN2LbepdddgHgO9/5DhDmKKn1Lbzwwtnz52zjr371qwCsvfbaADz77LNAaJLfCiSGTUjoILS8CZuMoRTSJnAOyU477ZTZSkrfVqJID6PM7/plS2Eq5Z///GeOP/54IEyV12bdYost+nwm9jA2gqISJ5phednX6W/auN4z58+88cYbdR+7FV5ifSvmAGh7qwmOHj2a+++/Hwg5BWoaahXeJ/02Re1hKRLDJiR0EFpWwC6z7rfffkDwmG255ZZAsGlfe+21ury+0Jjkj+3iIuD5Y2Zdb731gDDdraurK8siev7554FgG2nvzpo1CwgZQMapBxKNMKveb8dVGF/91re+1eeYcYpiLVBjKRI+SzKrMJWyXDrsbrvtBoSZx16rWmMRWlIeEsMmJHQQWsawyyyzDBBK5TbaaCMgeI2dVl6OXZVQZk9pIzTTbqQV0s5jaq9tv/32QGBWUVr2pSdcBtXeeeyxx/q83qkwVhlrNOeffz7QXOG6dm+RnnP3ylmuMm6l7Dlz29WsLFYxB7tSY4VmkRg2IaGD0JSXuFLVgbnEe+21FwBPPvkk0L8yZNasWdnvVuOsssoqQMjZtEpkwoQJfT4bT8+uBUV6GM3q0Q496KCDgFB5IkqriMyh1Wseo5Y83WpodXmde2s1z5QpU3LXrZfYKeVHH300UKwHtZlr3GOPPYCQnbTpppsCcN999+V+xnLPV199FQh2rjnX3p9mkLzECQmDAC2Lw5qLafzRuOPpp58OkFWvjB49OqsSOfvss4Fg/yjtjOGdfPLJAFlLGSWZuZqV7A5RpHQ+4YQTADjuuOP6nD/OXuru7s4YJe9+W3NaRN5p0QyrjfbKK68A9VWfqFnceeedQIgW5NUt14Ii91Abdp111gGC9iZbqjmU7qGZef7Pa9Hn0sy1iZYVsJf5DBCcTDpTVHNNJDdh+pVXXuHUU08Fws1SXbziiiuAoFZb3mS3CtVrv7g6p8qtp8jyOo9p0N/JdEKngxu88sorZ2rzNttsA4QUTTfXNLdLL7203uX0Q6tUYsvtvD6vf4klluhnpvhzgw02AGCzzTYD4Mwzz2x6HUXsoaRg8oOE4nMSO8cWWGCB7DW/mDpMFUZTp04F4IILLqh3Of2QVOKEhEGAwhlWyaXq+7Of/QwIbnPVRZl2+vTpmfNC1feHP/whEJhzxRVXBIJkM3FeKR47qSqta/bs2U1LZ1PTVJtkds0ASw1lzzlz5mTagSz1+uuvA0Ft9ppqUeuroV1dE2XVjz76KEviV0OQjWRh+z/JWLJ0I9dbBMMafpJZXY/Pp8+WKYpvvfUW48aNA8K+qhr7WZMtTIppBolhExIGAQpnWFlHR8WXvvQlIKSgWdhsCtu//vWv7Hc/a6G0SQYmWWgPn3TSSUBvT2MIZW1PPvlkVYldhHQ2gK87X4n661//GgjlaErphRZaKAsBxA3MZFzt3SISPOaHvsSxTeve2U7Fe9dIL+Ei9lCmHzNmDADPPPNMn/+rLanVTZ06NdPgDjnkkD7vnT59OhCaDvizGSSGTUgYBCicYePO/iZE21bE0MD+++8P9KasmdL3wAMPAKG42QKBI444Agg2rbaEdmA95XkD1SJTu/yoo47q87pr1v4pIu1ufmBYbT+ZTK3EIm+1KBm20SZz0Nw11pPuaspsXtgmLvpoBolhExIGAQpP/o9tF2OmetJk2p133hmAa665JrNvbIClF1Z7x0QJPc0WgVuiJWu3owC+URiHjdt/aiPNL03ImkXcVE4Y79SzWoQ3vAjU4zPwufQZ91qF6ZetRGLYhIQOQuEMK3NYNqYHWFvh6aefBkIZ2RZbbJHFZJ3DMnbsWCDYDDLsJptsAsCOO+4IwC233AL0tmDx3PMjU51yyilZJlOceWX8dX5AvLZGGgXktXx59NFHgdY2KGs1fIZjZlV7ilv9tgKJYRMSOggtS/43vqjnTFvBsiVHdqy99tpZvqksdO+99wJkU+2U2n7GuGcrYniWThVpD3d1dWU2vFqD7T9tlVoyrKvp89XrJdZjqy9BDceSM223ffbZBwh7WcrAagraqHkw1h7bgfVcd7U9jAewFYXY0++ajVLsueeeQGiw3gySlzghYRCgcBs2jlXJhtdccw0Qckq1SxdZZBF++9vfAvDQQw8BgUnNLJGB47Yj2sm1lDPVWhheJLO63iuvvLJfKxiZpqSKqLDz1gv3qJrH2pafVlfptbcsshLy7n8rpqYXzazQqwnYClUtwj117EgRzFp1HS0/Q0JCQmGoy4aN7Y2hQ4fmxrH0DpudpNRzlKFMfO+992aZIZdddhkQbCRjtvG4yXjNleygavWwXV1dPeWO2Qzic7799ttZu0/hWh2s5KDjIlCPDTt+/PhsBKaainulH6IZ2NbW+t8iEO/h0KFDe6C1sd2FFlooa2EUwxa1aihFINmwCQmDAC3zEuexoVLb4UPvv/9+Fk/VO6lXOG4X2YhHMUY7colt8aqtt/fee/eLbW677bZAGBpVJOr1EmuLmamjpzzeu5tvvhkIcfBSqAWZQ7zccsv1eV14byoNDKuGgcgHf++99/o1V9MPs9VWWwGBaYtA21vEVFMxy73P0ICqWTNqahzcLkkyb9sEdlW08ePHZwULtr3xS9IKp0u9X9hYEJqwbxF63vts83PjjTdmEw3irvetcKa18wurI3TChAkccMABAFx00UVAuE95qnIzSCpxQsIgQMun11U4NtD6cEaRTdhqVcl1lpmqNmfOnCw5wWKIVl7//FBe10q0k2EtB1xppZWyMJ37b/G7JlyRe5kYNiFhEKAwhtX+jJ0MVRfQ5oT9ItucVlu3iR9TpkzJivPzUIRDTSSGHRi0ag/7nKPpIyckJLQNA2bD5pwPaK1dO1DSuUjpWw2JYVsDmwG2wiscIzFsQsIgQEWGTUhImL+QGDYhoYOQvrAJCR2E9IVNSOggpC9sQkIHIX1hExI6COkLm5DQQfh/aV3H45trMd8AAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dd5gUVdaH3xlmCIoBAyIqYMAcV0UUMwYEFTGsec05YVj9FBUjymPWBXXNmHUNuIYVcwQTiBEUFF0DiKAYkDj9/TH7q9t9p6u7urs6et7n4QFmuqtuVXXf3z3nnlCXSCQwDKM6qC/3AAzDiI59YQ2jirAvrGFUEfaFNYwqwr6whlFFNGT6ZV1dXWQXcl1dHQCl9Do3NDQPf8GCBZHfk0gk6pL/n8s1tmrVCoCFCxdGPt//zhHrfcl2r5OvMZfrqxYKeYbVgn+NwhTWMKqIjAoroqhnOfZzc1HWqCy77LIATJ8+vcXv6uub57empiYA2rZtC8Aff/yR8Zhx3xvbO//zYgprGFVEXabZupZsA60SmpqaKsL+6dmzJwBjxowBoHXr1gDMmzcPgEGDBgFw6aWX5nxss2GrH7NhDaMGqEiFla246KKLAvDrr79qPEBhNly22dlXusUWWyw4v0/79u0B+O2337Ke17d/i4kpbPVjCmsYNUAkL3Eh+MrSpk0bADp16gTAFltswV133QXAnnvuCcBzzz0HOOWKqqz19fUFK5iUVYSpK8Bmm20GwAsvvJD1uLreNdZYA4D3338fgCeeeAKAp556CoDrr78egNmzZwO5rSoaGxuzvqZc6LonTpxY5pFUN7EtiTfYYAMAxo8fD7ggg/XWWw+ATz75JOXnm266KQAvvfRScAyN5bXXXgNgv/32A2DatGlRh5GVqMupQpbf/nsbGxuZMGECAB07dgTcclrLfl2j7uMXX3yR93mTHWvlXi76909jLPCYtiQ2DKPyiW1JLGUV7dq1A+DDDz8EYPHFFwdckMHSSy8NNG9rbLHFFoBbAmv5uOWWWwJu2Th//vyUc6y55poAgXpBS3XLVylzeb1WDf4YFNgxb948+vbtC8DTTz+d8trff/895f833HADAP369ctpvAB77LFHzu+JGznt5s6dm/b3SyyxBACzZs0q2ZjioEOHDiyyyCKA+2z83//9HwAnnngiAB988AHgTCXdg169egHwxhtvFDwOU1jDqCJysmGjBL9LXZZZZhkA1l57bcDNqL/88gsAF1xwAQDHHnssb731FuAcPN27dwdg6NChAFx55ZUpx/ZVU46tKEH5cdo//v2QQ23JJZcE4N///jfg7PV8UICFnFTplMu/H+XY1tG9yBYuqtWQnGxnnHEGQKBecrZlohg2rP/Z0spH4aeTJ09mxRVXBNwqwrfHL7zwQsB91m+66SYge+hqOsyGNYwaoOiBE1I/2bCyU6VKyyyzDKNGjQKch3SttdYCYOrUqYCbsXwl0Qx27LHHRh5PMT2M++67LwD3338/4GzuxsbGFrOxtp90Lb4d7JOsANns63IGTsyZMwdwqw1x0EEHAXDnnXcCbguqW7duAEyZMiXyOYr5DM866ywALr/8csB9Xr/44gsOP/xwAA499FAATjnlFMCtCtZff30AVlppJSDadl8YprCGUQMUpLDJs70fIOGroW+j6PUXXnghJ5xwAgDPPvss4GawjTfeGIA333wTcLOy7y1ebLHFgMxBDiNHjgRg9913z3t2ludbNon2iy+66CKAYKXgs3DhwuB6dR80+8pD7qMADtlLYtlll+XHH39M+57HHnsMgD322KNsCptN/WWD6z7kE+hSDIWVz0X74Xpeu+22G9D8GZw5c2ba9+pZffnll4B7pjNmzMh5HOmeYTKmsIZRRcRuw0oR5C30Z1ApryJ+pk2bFvzML/kiO0h2kX+MTGMPC7YPm53DktP9cydz9tlnAy4FTuNS8vvBBx8MNEdzaaz+6kDeSCmOCFPYrl278u233wLhXvFi27CZSvMccsghAFx77bWA85iHPeN8iFNhNS6t5t5++23ArQS0qsrEZ599Bri4AFFImKzZsIZRA0RS2EIULQzZpccff3zwM826H330UaRj5EM+s7OUXuM7+uijAfj73/8OwMorr5zyeu3XHXDAAQBcccUVoceWgkp5/fv3zDPPALDTTjsBcNddd3HEEUdkHG85vMQ9evQA4PPPPwdoYe/FEUMs4lRYRdzJD6JoJCUp9O7dW+ds8d7ll18egP/85z8AfPzxx4B77oVgCmsYNUCkWGJ/rzCd7ZTrel2etN12242BAwcCcMwxx6S8xo8+KUXyt88iiywSeLblpZbC+coqNOMqUykTfjqflLRPnz4AnHbaaYB7BsOHD89p/KWgVatWQbSaz/7771/i0eSGbFX5Be677z4AjjzySCD96lLfA71Ge8mKIygmprCGUUXklK2TawHtdGjGUgTJCiusEGTlbL/99gBMmjQp5T2lUNaw1UNybKtslNVWWy3tMd59910Attlmm5zPr/ty9913A7Dccsul/H7s2LHBOaT0xSjzmg+K/U7HAw88UMKR5E6HDh0AuOWWWwDYddddAee3UL7yjBkzgn//8MMPgPus3HvvvUBpiumXvKaT75zq0KFDsHWi5YluVj5B09nIx2GhL/Onn34KuA+orkHXpC+3Hmw+PP/884BzdviMGTOGzTffPOMxSuV0kmNJH/pkZA4Uw4EYh9NJz1ShkgorlBNQ93jvvfcGYMCAAcFkqutWpRRN4H6qZCGY08kwaoCyVU3UhvqcOXOCDWctOZVKpiRuBYYXs2ri5MmTAVh11VVbnEv/1qzsBz8IhbflE5KmRAZds7aGhNT86KOP5rbbbst4rGIrbJT7H+c2TprzF6ywWhUpoX7IkCEA3HHHHYC7319//TXQnKS+8847Ay7oR84mrbh8U64QTGENowYoetXEMH7++WegeYZTCJ+2MISSnRUmKIpR49d3JCUnZMtBJodEGL4S5+KkO/3004GWW1tC6YnJdlIcYX5RUFCBig5kWukUU1njwN8i1P8vu+wyAL755puU36vXUmNjY1D6xb/ucePGAe4+FRNTWMOoJhKJROgfIJHuT11dXeJ/dkPefxobGxONjY2Ja665JjFv3rzEvHnzEj5z585NzJ07N9GxY8dEx44dczpvfX19or6+vsV7ol6j/kydOjU4xpw5cxJz5sxpMU6fKONraGhINDQ0JI477rjEcccdF8sx011jIc8o7E9TU1Oiqamp4HHm+yfXZxjXn3bt2iXatWvX4vM6c+bMxMyZMxOdO3dOdO7cuSjXqD+msIZRReRlwyZi2BiW3TVp0qTAFvNRGcnzzjsPgJNPPjnrcRUsv8suuxQ8RmguuTps2DDABbj7JV1l/4YFVPTs2TMI3ZP9HeZpFio8pwSDTJSqb4//3JVeePnll1e87RoHChdVvIACWJ588kkg3n3YMExhDaOKKNs+rGanpZZaiu+++w5wESSaqeR1e/XVVwGXthSWVB5F+RMF7OGpBIj23zTTyoMr1dRertptLLnkkkH5mr322gtwhdrCkIdcBemi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MVZzY8UkX3311YDzeueT3ij/g1YIundhXvsosc25Kuyyyy7bIgpMz0q7FUcffTTg7rtiifVZHDx4cBAHrr9l68t3oGep1VohHdpNYQ2jBsgpllhk2gdde+21Aecx04wqb+dJJ50EuGJkhx9+eKAQsgWkxrIVZWco/lR7mYpKKSSxXaqsY+j/OvfPP/8cjE/7jbJRNDu/9957gIvWkeJutNFGQHOO61577RX8G+CSSy4BCKJn5GGWamqlor2+5Bhkeal1HzTjyz+QCf+ZLViwIPC2S/W1YunTp0/KvYmCnr88yNqnlz9CKy8hFT/ttP+ZXxQAABEoSURBVNPSji8O0sVY6xnJA/3FF18AbkWQLjZAqx/he4HHjBkDuJiDM888E2hpvxdC7Ol1emD6UCmNTilheoD6Epx88snBjdDPll9+eQDOPffc4DXgNtcVuK3JIJf6RGEVJ/y6wXpwHTp0CLaeFMihLQt9cbW82myzzQC44447Ul7funXrYCmqzfU111wTgPPPPz9lfMcddxzQnM4F7oOjezNr1qwgrUvLeP1OS7LffvutoAR2LQM1aeWDtmf69+8POIeVnyrnf/46deoUmDphxOF00uR66KGHAu6zlgl9QfVM/AASffklOLqP/ucnCrYkNowaIHaFVWKwlnZykGhJJKWRSmy44YbBtoGcS88880zKex966CHALbO02T5gwADApXRFIUxhpahSTSltu3btWmzbSNEUHKLlnFYVWsJLeQ8++OBg5aEAiNtvvz3lmlRbWMkSSvRXQoECC0488cRg20VKpPHI2TF9+vQWCqttNK104q5hpFXR4YcfDrglv567HDNaFfhhlbkQh8JqlaTnLmeTXzQhuZSRltG77rprpHNss802gAuGyWWbxxTWMGqAohVh0wylzeWHH34YcLaCNp/nzJnTwsBXaKJsqJtvvhlwwQaataVOSl2L4kYPC03UfZAdmFyJUCF7spl1HqmGQtOkogqCUCkRgB133BFwQeeayVWRUZUQdU06h5RXoZ+DBg0K/i1nl59+mG5bxy/ZItq1a5d15t99990BF2qpAHmtksDZa36itwISpOxx1JouRRG2KCsQdQ+Uv8FPTtC1yjmqraMomMIaRg2Q17ZOJvxiYnvvvTfggtl79erV4vXJJUXBzdKaoVQYTRv48kBKNbKlXWVC55Bq+1sbrVq1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Ilol9enTJ3AcCoUA3njjjSUfVz7suOOOgFshpDNZsimlnE6iGPWtTGENo4oo2rbOLbfcAsCRRx4JuPIjcr6kO28xtwJEMbd1VlllFcB1YtdmfKtWrYLr1criiiuuAFxSws477xzXMEq+rVNXV8dRRx0FwE033RT8DODmm28G4Nhjj43tfOUupCdUaG7AgAGA87n4DkaRSykZ29YxjBqg6MH/qu+qcpKaeeUtVvGx5N8Vk1LMzrLT/XDE/50PgF69egHQpUsXAB588EEgnjS0UimsrmX+/PmBR1ShpyoRo4J52uaLg0pRWJ9sW3WjRo0Coq2mTGENowYoWXqdX9ZFNm0ikaBv374AocnncVKK2XnrrbcGXCA8uD05FVvzi3splTB5xRGGglCmTZuW9veltmFbt24dhOOprKk85FJWFRKfOXNm1uMpcSCsBFClKqzS7r755pu0v89lBWkKaxg1QNEV1p9VdD7tyypJoFSUYnZOtu2geU/aV1SlYkmNd9ppJyBcNXOhVAqr/fI//vijRWL4jBkzAFdydMqUKYArflYIcTxDjVPjiSMZQ/dDK4OwUqlRlNYU1jBqgKIXYdOsss8++wAwcuRIAAYNGgRA3759g32rQppcVRK6nrfeegtoTrfad999AZdyJa/wNddck/LzakI229ixY4OA948//hhwPgulpfXv3x9we5HlihNXbPvLL78MuDKnuXzm/Pdqb13POGxVabHEhvEno2ReYtkImpVfeukloLmF5NChQwHXeiOOvcgwSmHDqn9tcsMl7TsrCkqeUCVKx0mxbVjFCT/77LNAc3qdvOBSMKF2k3recRDHM5Qqyisv5dd1aKWgz2KPHj2C18ruVQaaUvKEPOHylF966aVAbnvRZsMaRg1QMi+xZi4VcJ48eTIA2223XdAoqRR2TTEVVuVG1H5D17jPPvuw6667Aq5E69SpUwFYccUVgfC9u3wotsJqz1UJ223btg08o/o8aa94+vTpGkds54/zGWq8ishKF52WjV9++QVwJWzl6VcJW606crGTTWENowYousIqL3aNNdYAYPTo0QAsvvjiQHMETJTol7gohsIqSkmrCM2wUpUhQ4YwduxYwKmw32YkToqtsN26dQNcm4s33ngjKFUrX4Vvy8ZJPs/Q34GIYydCz1B2rvbd1XImn2LlIkxhK6p7XSmo1LC2OCln5f9SUMgzDOv1E+ULrPf4k5FEKayDfT7YktgwaoCSd68z0pNLcHw1MmTIEMDVpy412VQwzCkWpftenMqaDVNYw6gizIat8Wus9euDP8c1ClNYw6gi7AtrGFWEfWENo4rIaMMahlFZmMIaRhVhX1jDqCLsC2sYVYR9YQ2jirAvrGFUEfaFNYwq4v8BhFYLfO9U4IQAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"cts99h238YVW"},"source":["**Please tag the cell below on Gradescope while submitting.**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":265},"id":"LXCqUCIT8YVW","executionInfo":{"status":"ok","timestamp":1615300061942,"user_tz":-60,"elapsed":1338,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"d3659038-69ba-4c86-b2f1-a6730e942e54"},"source":["print(\"Vanilla GAN Fianl image:\")\n","show_images(images[-1])\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Vanilla GAN Fianl image:\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-ignore"],"id":"ub_dwaY48YVW"},"source":["Well that wasn't so hard, was it? In the iterations in the low 100s you should see black backgrounds, fuzzy shapes as you approach iteration 1000, and decent shapes, about half of which will be sharp and clearly recognizable as we pass 3000."]},{"cell_type":"markdown","metadata":{"id":"3CGtMV_b8YVW"},"source":["# Least Squares GAN\n","We'll now look at [Least Squares GAN](https://arxiv.org/abs/1611.04076), a newer, more stable alernative to the original GAN loss function. For this part, all we have to do is change the loss function and retrain the model. We'll implement equation (9) in the paper, with the generator loss:\n","$$\\ell_G = \\frac{1}{2}\\mathbb{E}_{z \\sim p(z)}\\left[\\left(D(G(z))-1\\right)^2\\right]$$\n","and the discriminator loss:\n","$$ \\ell_D = \\frac{1}{2}\\mathbb{E}_{x \\sim p_\\text{data}}\\left[\\left(D(x)-1\\right)^2\\right] + \\frac{1}{2}\\mathbb{E}_{z \\sim p(z)}\\left[ \\left(D(G(z))\\right)^2\\right]$$\n","\n","\n","**HINTS**: Instead of computing the expectation, we will be averaging over elements of the minibatch, so make sure to combine the loss by averaging instead of summing. When plugging in for $D(x)$ and $D(G(z))$ use the direct output from the discriminator (`scores_real` and `scores_fake`).\n","\n","Implement `ls_discriminator_loss`, `ls_generator_loss` in `cs231n/gan_pytorch.py`"]},{"cell_type":"markdown","metadata":{"id":"8rykTJkQ8YVX"},"source":["Before running a GAN with our new loss function, let's check it:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0_k3XCi48YVX","executionInfo":{"status":"ok","timestamp":1615300817292,"user_tz":-60,"elapsed":698,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"ea202c2e-f836-4be2-af1f-9d0f9da9da5a"},"source":["from cs231n.gan_pytorch import ls_discriminator_loss, ls_generator_loss\n","\n","def test_lsgan_loss(score_real, score_fake, d_loss_true, g_loss_true):\n"," score_real = torch.Tensor(score_real).type(dtype)\n"," score_fake = torch.Tensor(score_fake).type(dtype)\n"," d_loss = ls_discriminator_loss(score_real, score_fake).cpu().numpy()\n"," g_loss = ls_generator_loss(score_fake).cpu().numpy()\n"," print(\"Maximum error in d_loss: %g\"%rel_error(d_loss_true, d_loss))\n"," print(\"Maximum error in g_loss: %g\"%rel_error(g_loss_true, g_loss))\n","\n","test_lsgan_loss(answers['logits_real'], answers['logits_fake'],\n"," answers['d_loss_lsgan_true'], answers['g_loss_lsgan_true'])"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Maximum error in d_loss: 1.53171e-08\n","Maximum error in g_loss: 3.36961e-08\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"RPxi7X7a8YVX"},"source":["Run the following cell to train your model!"]},{"cell_type":"code","metadata":{"scrolled":false,"colab":{"base_uri":"https://localhost:8080/"},"id":"WU6prEnC8YVX","executionInfo":{"status":"ok","timestamp":1615301114040,"user_tz":-60,"elapsed":288220,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"244ca810-a7c1-4115-9834-575b34bf89d0"},"source":["D_LS = discriminator().type(dtype)\n","G_LS = generator().type(dtype)\n","\n","D_LS_solver = get_optimizer(D_LS)\n","G_LS_solver = get_optimizer(G_LS)\n","\n","images = run_a_gan(D_LS, G_LS, D_LS_solver, G_LS_solver, ls_discriminator_loss, ls_generator_loss, loader_train)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0, D: 0.2874, G:0.4841\n","Iter: 250, D: 0.1501, G:0.257\n","Iter: 500, D: 0.1601, G:0.3123\n","Iter: 750, D: 0.2216, G:1.592\n","Iter: 1000, D: 0.1791, G:0.2856\n","Iter: 1250, D: 0.1731, G:0.2328\n","Iter: 1500, D: 0.2912, G:0.01791\n","Iter: 1750, D: 0.1807, G:0.2163\n","Iter: 2000, D: 0.2378, G:0.1873\n","Iter: 2250, D: 0.2219, G:0.146\n","Iter: 2500, D: 0.2183, G:0.2347\n","Iter: 2750, D: 0.243, G:0.1994\n","Iter: 3000, D: 0.2345, G:0.1837\n","Iter: 3250, D: 0.218, G:0.1808\n","Iter: 3500, D: 0.2246, G:0.1635\n","Iter: 3750, D: 0.2545, G:0.1654\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"N_3hxVPF8YVX"},"source":["Run the cell below to show generated images."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"DFaVznq08YVY","executionInfo":{"status":"ok","timestamp":1615301126341,"user_tz":-60,"elapsed":9079,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"fb8fcfef-7938-4aa7-e602-58ca72ca5590"},"source":["numIter = 0\n","for img in images:\n"," print(\"Iter: {}\".format(numIter))\n"," show_images(img)\n"," plt.show()\n"," numIter += 250\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdebxWZdUH/CWoDDIjguKAGg44oZhjiqI4pU9iauaQw6OGPlbmWGYpZpqp4Yil5hAkpmZqKqnknJaIIzklAgEyJCIggwLe7x+837Xvs+HcT/+9z3k/e/1z4Jz73ntfw16/9futdV3XarVaLSqrrLKWYa3+v36Ayiqr7D+36oWtrLIWZNULW1llLciqF7ayylqQVS9sZZW1IFu90R+PPvroWkTExx9/HBER//Vf/xUREY899lhERAwePDjWXXfdiIh46623IiKiY8eOERExY8aMiIjo3bt3RER8/vnnUX+tvn37RkTE7Nmzo23bthER8dlnn0VExJe+9KWIiPjwww8jIuKll16KiIijjjoqIiKmTJkSERFz5sxpcq3XX3897r333oiI2HnnnSMi4uCDD46IiAcffDAiIkaPHr1afRt/+ctf1iIiRo4cGRERP/7xjyMi4o477oiIiB122CHWWmutiIh4+eWXIyJi3333bdLGb3zjG64VERHt2rWLiIgNN9wwIiJee+21+NrXvhYREX//+98jImLx4sUREbH11ltHRMSiRYsiImK99dbL70REzJs3LyIiunfvHhERnTt3jjfeeCMiIp577rmIiDjiiCOa9Nupp56abbzoootq9X14yCGHRETEww8/HBERW221VXTt2jUiIpYuXRoREX369ImIiEmTJkVERIcOHSIiYvXVV2/S7lNPPTUiIq6//vrYbbfdmrRrm222iYjI+fGXv/wlIor5YQ7ttNNOERGx5ZZbRkTE/fffH2+++WaT+3z961+PiIj58+dHRMQvfvGLJmN41lln1SIiZs6cGRER66yzTkRE/OEPf8g2brHFFhFRzMNtt902IiI+/fTTiIj45z//WX/J7GNtHD9+fAwYMCAiIt59992IiNhoo40iImL58uUREfHKK69ERDEfbrzxxiZt+853vhMREbfeemvcfffdTdrfuXPniIhYuHBhRETcdtttTdrIKoStrLIWZA0RtlevXhER6Z0mT54cERF77LFHRETUarX485//3OSzL774YkQUXvGDDz6IiMLb8bzQ8o477ohBgwZFRIGozz//fEQU3oYXgjpQ+5NPPomIAhn69u0b5557bkREjBkzJiIi/va3v0VEgcZlmzBhQkREfPvb346IAkW32267iFiBGLyy5/vrX/8aERHHHntsRERcdtllTZ7jnXfeiYiIgw46KK/5r3/9KyIKxJw6dWpEFFHFLrvsEhERs2bNiogVyF7ff1tttVVERHTp0iU22GCDJs/473//OyIikaneRAdDhw6NiALpBg8enO3Tr/369WvyXfc0Htp93nnnRUTE2LFjIyJiyZIlGRksW7YsIiJuuOGGiIj44osvIqJAneuvvz4iIvbbb7+IWIFcEQVKff3rX8/5Nn369IiIaN26dUQUEUvZlixZEhERRx99dEQU6N2/f/+IWBERvf322xFRRDjqD771rW81uUa5f/TxE088EZtuumlEFJHH008/3eRaoiXRy0UXXRQREaNHj46IiAceeCCfB4I/9dRTERGJ3u7XnFUIW1llLcgaImyXLl0iovCsvD6usGDBgvTcH330Uf4uouCq//jHPyIi4phjjomIwhu5xuqrr57eFf854IADIiLimmuuiYgC2eu5akSBSrz0Mccck9/hpfEZbSkbLsMr45J77713RESsueaayT3wMV4a/+GdfZeXnDZtWrZ5jTXWiIjCC+O0uDWk79SpU0QUEYk+F8F8/PHHceKJJ0ZExOWXXx4RET169GjyHPUGwV0PAmrf66+/HldccUVERLz//vsREfHHP/6xyWcg3CabbBIRBb87/vjjI2IF72zVqlWTNmvH7NmzI6KIHCCdcdl+++2b3HujjTZKfqddIjDIVjZje/PNN0dExPrrrx8RRR/PnDkz/73XXns1eU6Rj+hps802i4iI1VZbQSFFHzvuuGO8+uqrTb773//93xFRRBPmtsjwBz/4Qbap/h7t27fPuUJToA94F5qzCmErq6wFWUOE5TUhG1TEw7bZZpsYPnx4RERsvvnmEbHCe0REdOvWLSKK2JxKufbaa0dEgZJbbLFFclGe/PHHH4+IiLPPPjsiIn71q19FRMTGG28cEQVX5LX32WefiFiBxBQ8yieuiM+UDTpDSxyb0jtnzpxEMtfghSE/Dkk9pqr+9re/jYgVSjWuz6PiLngi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KCGryajTH3744QzJCGnle0i6WyIlhcPB7b777ikUeebyiej6z305EIJX/QTiODgMTmBVbRSeCSeVjiqBu/vuu/NlNs5ERmKga6AN7msi7rbbbkkH0ASOhgMSgppDxBzClpfyn//8ZwpC+tniEMvlymauEccsRDAvbrnlllycrw3GQemhdJr5AGiEteeee246HW1RBOO5vJD+bqknAUso/bvf/S4FLONucUw5PVa2KiSurLIWZA0RlmdF3oURfg4ePDi9GITiwXim8q5/yLxUyPvvv5+hXLnQXckc1ObFeWXhl8917do1BSLorDRuVefORBSF2lIywkxLzubMmZPhC4+vLcJLAouQDEIog3vhhRcSUYRAQh8FDeXd7okz2lp/ninEueiiiyKi6OtVle6hGeiN+/n91772tdxlUJpGyqF8WjmxSQGBIpmbb745l9opkCfQONPVs7mvFKFwnjjVt2/fLKQppwAhe9kINfqQgKPwpkePHhm9GSMiH5T0U5RB8JTK++CDDxJhITnaIkryHOa8KEMUai7uu+++2U+2hlFQsqqN9OqtQtjKKmtB1jCtc/TRR9ciCsSDEmL0jTbaKD0Rz13eghPvg0JEBsLNkCFDEm3xLAKNn7grL8jT8vzuscYaaySSQChigu+edtppTeTy9ddfvxZR7GVbv8FcxAr+LAWDj/P4+DjkP+644yKiQHzIt/feeydH04dEMW0UAeCw2kTwqz/fVvoL1yyfXle/b+9hhx1WiyiEMCgBaTp16pT9T/jyDNDFdRVklNNcAwYMSFSBtNAOjxMhmC8iGUiHB+63335ZOOFZ8UzzbsSIEU3GsG3btrWIAslES4TOnj17Zj+XUy+iRSKckxRxSuO2//77J0qLDkQcrm2szG3jZJ7ip4ccckgiqYhKeosucsEFF1Rpncoqa+nWkMN66ylnPIiF5J999lmmXCh1jNe2TIlH5dkg32abbZZqKt5JJYZgFE3qNBkdCuKW22yzTarCogLciCpYNlxC2kdaCk9s165denyJcpvQ2S0ep+WNfQ6ff+yxx/L60EKaQYqG14Zm7onbQPf11lsviwz0F2V2Vad322YFL7T8ED/t1KlTXs8zKb6nbNsqBmLpb/byyy/n9SGtwgDXNv6QxXyBTpTvDTbYIMcfYio9NQ/KpvwRqkNCXPPII4/MiEI6kQq///77N/lp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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dd5xU5bnHfzNbWGBRpFyILRo1er1YYsnFaBKRKwixd4loULFHo7FgsPcW7CXWXLtoNKhBEyVgVwyKvZdrQKOgovSyO/eP9fu+Z56Zc+bM7OzKbt7f58Nn2Z2Zc8573jPP7+lPJpfLKSAgoGMg+11fQEBAQHqEL2xAQAdC+MIGBHQghC9sQEAHQvjCBgR0INQmvZjJZBJdyPX19VqyZEl1r6iNkcvlMtHfS63x2/fw2cT31da23M5ly5ZVfH3VQHSNpdaXy+Xc+r5LpL3H376n7D3saLBrBIFhAwI6EFr1he1o7FopcrlcKsm/bNmyouw6YMAA9/9VV11Vq666auwxamtrHVO3B5LYNZPJpGLf8ePHl/zMCiusoBVWWEEPPPCAHnjggYLXo/e4pqZGNTU1aS7/3w6BYQMCOhAySczRFrZBNtsiI5qbm6t96FRoD/tn8uTJkqRBgwaVfC9M0tTUVLXzl2PDVgL2jr0sB9XY//bYw3Js6rZAsGEDAjoB2p1hv2t8Vx5GJDb26dKlS9vsXGkYNg2DNDY2SpLmzZtX8pyHHnqoJOnaa69NPH59fb0kr1Gk0Sys9z14iQMCAjoG8M4V+ycp19b/NttsM/f/oUOH5oYOHdqm5yu1xkwmk/tWYpf8l/a906dPr+j4knJdu3bNde3atazPVWsPs9lsLpvNxv7OtX3yySfu+pqbm3PNzc25bt265bp165arra3N1dbW5mbNmpWbNWtWrqGhIdfQ0ODe/8knn+Q++eQTd8y6urpcTU1Nrqamxh2/3D2s5j/WfPHFF7u/rbLKKrlVVlml4uehkueUf8uFSty3b19J0ieffCJJWrBggSRp4cKFkqR+/fpxPa0+V1p1qphKt+KKK0qSvv7666LH7t69uyRp/vz5eX/PZrO66667JEl77bVX3mtHHnmkJOnmm2/OO+/cuXPz3ldOUkYalTiNs2uttdaSJL3//vuSpIaGBknSokWL8t5XX1/v9uydd96RJK277rqSCh1Ts2fPzjs26/zNb34jSbr88sudQyru2WxLldjue8+ePSW1mAf33HOPJOlHP/qRJOmll16SJL333nuSpGHDhkmSVlllFUnS4sWLK76OoBIHBHQCtDvDIsFgqzlz5ujPf/6zJGnnnXeWJJ122mmSpNNPP12S1KVLF0nStttuK0n6y1/+EnvsUm74cqXzRhttpJdffrnoazhQSCCpq6uTJP3jH/+Q1JIsILWw46uvvipJuuKKKyRJf/3rXyV51oJB0SrinFJpUgnLCetE71mpkAvrJfEDbWHUqFGOMb/55htJ0v/93/9JkjbccMO8Y3IOjoVWwuvffPONWx8/YbmvvvqqYH1p1pgGPGMHHHCAJOmss86S5Pdl0qRJ+ulPfypJ2mCDDSRJf/vb3yRJa665piRp9913lyR99NFHkry2YZHNZkuGtQLDBgR0AiwXNixS19pT2Fn//Oc/JXnboDUoJZ2L2XawI5KV98AA2JVoCKQinnzyyZK89Ja8zdajRw9JnlleeeUVSdJrr70mSVpjjTUkSfvvv78kfw+WLl0aaysXW2Mahn3iiSckyTHIf/zHf0iSPv/886KfgXVY5wknnKC9997bHS+6LqsNwD6w0ogRIyRJN910kySpT58+TsuIY6FqMOzIkSMlSbfeeqskrx2xl2hz06dPl9Riwx500EGSpN/+9reSvDaxzz77SJKOO+44SdLw4cMTrz8NAsMGBHQCLBcMC5DoF198sSTpggsu4DokSf3795ck/etf/6r4HJVIZzQAmBIGsDYfdhuawKeffipJecn+M2bMyHuPtX9hze9973t5r8Oqf//737XJJptIklZbbTVJnn2LrfHbMExVUuzYB+4DPx977DGtv/76kqRu3brlXTe2KufnGNjoaCuvv/66JOnxxx/XUUcdJcnfI+5ZsfV9e8yqPadx3vOamhq3z6NHj5bk9wifC/eD60abqASBYQMCOgGWC4blGqytiDS+7777JEm77rprNc5VsXS2MTpsvalTp0qSNttsM0me8fAAL1682DHN9ddfL0kuLosHmvgka7/lllskSZtuumnBNXB+4tOfffZZ7Bpbs4ddu3aV5DUKCxhn8eLFbq3Y6GgMHIN7ss4660jymsRVV10lye/9nXfeWTIVsj1TE6NaFHbt008/LcmvFa2CqMZJJ53EdXG9ZZ83MGxA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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dd7RU1fXHP8Mr9DxA7FJEVFAIGFCxodiWEAuKKGAs2A2KoqiJ0Z819kRjNCoqFowGl8ReEF0aDYggRmIDpFqwIELUh/CQN78/nt+5M2fmTr1T2Z+13npr2r3n3HPv2Wfvs0soHA5jGEZ50KzYDTAMI33sgTWMMsIeWMMoI+yBNYwywh5YwygjqpN9GAqFKs6EHA6HQ9GvK72Pld4/2Dj6KEzCGkYZYQ+sYZQR9sAaRhlhD6xhlBH2wBpGGWEPrJExzZo1o1kzu3WKgV11wygjku7DBkmLFi0AWLt2LQAzZswAYM899yQUatpy0qxdU1MT812jtGhsbEz5nQ0bNgCw7bbbArB06VKAspPMzz33HAC//vWv4z7TddD9K/S6qqoK8K5FEISShddlsyHdsWNHAL755puk39N5n3zySYYOHZrwO3pw16xZA8C5554LwJ133gl4F0I3w3bbbZeyfYXYdP/lL38JwNy5c3WOoE+RlHw5Tuy5556AN9lGoxv72GOPBWDChAkAjBw5EvAeVPd+02u/zxNRKo4TF198MQDXX399ws/VJ78HOxnmOGEYFUDgEjZdsgmcb2hoAKB58+a5nDew2VlS5OqrrwZg2bJlQPyyb/z48dx8883ZniaOzTffHICvvvoq4eeFck2UmvPjjz/y+uuvAzBw4EAANt10UwBWrFgBeGM2adIkwBvL448/PuaYVVVV1NXVAfDtt98mPG+pSNhf/OIXAPzvf/9L+HkuKyuTsIZRAeQsYf/v//4PgKuuuirp91q2bAnADz/8AMRKIemorVq1AmDlypUAbLLJJgmPdcghhwAwffr0mGNCciMBZDc7n3DCCQA89NBDMe+rT506dQJgyJAhANx6662AJyHee+899t1331SnSRuNmd8MXigJG33vaMxWr14NePaE/v37A/DAAw8A8O9//xuA4cOHA7DbbrsBniRevXp15N5Ip38/f6+ozv9t27YF4Lvvvot5X7qrjE+ZYBLWMCqAvOuwmiVfeuklALp06QLAlltuCcBRRx0V+Uxss802AHzxxReAZw1WWyW5ZJHOhFxmZ/VFUmKfffaJ+VztnDx5MgAjRoyIPi8Ao0ePBuD+++8HvJWGfvvZZ58B0Llz53SbFUe+JOw777wDwC677BLz/m233cbYsWMBT5o8+eSTABxzzDFAk56bCL0v6bTFFltEVijnnXdewt8UW8LKWq4VnotWGe3bt/c9ht+qTZiENYwKoGBW4h49egDeLC2r4vr16znrrLMAT7q4nH322QDccMMNALRu3TrrduQyO0t6SB/TLOnnSLDZZpsBnn4WTffu3QFYsmQJAD/99BMAffr0AeC///1vus2KI2gJ63ePrF+/HoDa2lratGkDQH19fcLfuK9nzpwJeBZvOVikY1ktloRVf6urk/sbBbHvbhLWMCqAgu/DavbR//Xr18dZ0SRtNJM98cQTABx55JE5nz+b2Vkzq/Ydo9vuHCvh76uqqiI6qquz6jepLL+ZEJSE1Z6p9kqnTZsGwIEHHggQ0Vv/+te/pjyWvL7kBab+y7I+depUtTflsYohYZs1a8aYMWOAJp09EUF6tJmENYwKIHAJ6+fwLJ1l5513BojoPOeccw633347AFtttRXg+SFLgk2ZMgVosijnShCzs3vNtCJ48MEHAW9FoD3haNRHWcDXrVsHwJdffgl41mFX8mbYvpwkrHtOtUX9HDVqFACPPfZYxm3TsaT3u4EeqfTDn9tXMAkrD61169ZFrL7apdCqQXYHk7CGYcRQMB1W59F/zdY1NTV06NAB8GYuzbrynjnuuOMAePbZZ4NoR9az8+WXXw7AFVdcAXh7qvfddx/g6afy3EpkzZaX1osvvgjER3JkErXiR7YSVtJE0q5fv36AJ0nlvZSJJNGKS+Ot/mn1pM+vueYaAC677LKIlNVvXIqhw55++umRcZcPQT6jsEzCGkYFUDBPJ3evUjpuOn6WOkY6sbb5nJ3V1q5duwKeJ472id326ntLly7lV7/6FeDtQ6eSoPJPjfaTFpn0MZP+6bip9Mmnn34agMMPPzzdQ9OuXTvAi9L5/vvvY84lf+xvv/024n/89ttvJzxWISSsG8uaaLyKIWELtiT2e3CToRtGm/Hz588HPGVfjguZkA+jk24+GdLUV92coVAosm1x6KGHZnSubG6KbB9YTTBy5lD7FZQRROaEVatWAURC6LLJQFGMJXGpPLC2JDaMMiLvOZ3c7YmPPvoIgLvvvhuAt956i7vuugvwzONCLn1ya/zkk0+AzKR0PpDz+/vvvw/AHXfcAXhbM0oZoiX8p59+GncMd8Z2QwqTuV/KKOc6bmSLtphk/BMyQmUjBdU2tVVoa8Qdw2h1Y9GiRRmfL1/o3ovGNRAW8n40CWsYZUTeddh58+YB3kyl88mY0rFjx4jhQTrSsGHDAM9dTSFYmtHkGN+7d++M2xOE/qM+7bjjjjHvK+GYHCjkJLJkyRL22GMPAF5++WXACyeTu6OMTK5bZiF0WElWpZzRuRWMoW0MvS+HEDmyrFu3LrIykEHQr92uLUNOGAo3nD17dlzYYrL+pdvHTHFdSJ3zBX26OEyHNYwKIO86rKsDaHYaN24c0OSEoPfc3MXi+eefj3mt8LZc3PdyQX1ydRjpZ4mSxCnoXX10WbBgAeCFmYlUWzhBoIQBOpekv96XfqnwRjf9TlVVVcT6646JdFi1X8fSNVNAga5LfX194Dp6NhT6nkoXk7CGUUYUbB9WCcs0k8pavMUWW8R9V9bV8ePHA/C73/0urXOEQqGUM2M+9R9Zu88888yMfyvJ07NnTwAWL14MeG6OmZCJDtu9e3c+//xzwJPykqyyXGt/2V056HU4HI5ITFfnU7DD8uXLY95X0EM2KWvzMYbpSNRCJoQ3HdYwKoCCSVg37K62thbwvGmiiQ5piv6NJK/0pWwodgIvP6TjuXVZsiFTK7Gc+1WC47rrrgP892G18pk4cSIQm5o0ibuk2gPA448/DsDRRx+dukPxx8p4DLVq8EtD5LbTvQfHjx/Pn/70p4zbmujY0SvBdFO5CpOwhlFGBC5h5aEjS5/+y2tJM5YskbNmzYqEnMmZXh5Er776qtoBZFdUyKUYEjYUCsX1QY7zCrPTdXFxA97TIRMJ27x588i5Fd4oa7f2yqXD7r333oBn8Y7GDQt0S3VoL1d760oVk42lP9MxbN++fdyqTOdV0IFSk/qV3YD0Qx+DqFpnEtYwKoDAJKyrk8oafNJJJwFE1v+K/Ijew5RH0AcffKDzAv5RMLlQbB129913B5p8qH9uT8znmpXTSZXiR6Y6rF9Rp1mzZgFeOQ2XV155BYADDjggsp960EEH6bwx3x00aBDgrZpyIZsx1P14wQUXAPDHP/4x5nNZxF1/6qhzZNPOrI9hEtYwKoCcJawbmK20InPmzAFSr/dnz57Nrrvu6nd+wNP3FDjtfp5P/Sdo3La6+o4kq/TIVIWxfc6RkYRVm6TLSt+U3qcoqv/85z86ZszvQ6FQZOWk2GUdy8+zKxeyGUPXKqu+6TqrPIgksFseJs30q2l/N41jmYQ1jHIncCuxWypQM5U8XTR7i4aGhoheI19VoRldFjx3bywbCilhdW0ff/xxTjzxRMCz9koS6XrIuq7YWb9Sm2meN6c0pxo7V2oqGkl7qIl8fRcuXAh4pUjyQZBj2LdvXwDefffdmPdfe+01wPMbT+SR50cQvtBFSxGjG1UhZ1HHBpqcv7W1oSrl+XTqL8aSuFevXpGtKl0HpbfxWz7lEhxdqPqwolOnTgmD9PNFkGOoe8yt5SojqgROEOlxMmyXLYkNo9wpeBK2Yoct5VPCulJxwIABQFPVA2UN1PJedYJUJSBIgpawWq4rEEFjWIwUKT+fP+cx1JJdS/hSwySsYVQABa9eV2zyIWFLIeA6mkLrsIWm2FtzhcAkrGFUAHlPEbMxUCqS1ah8TMIaRhmRVIc1DKO0MAlrGGVEUh12Y7C+VXofK71/sHH0UZiENYwywh5Ywygj7IE1jDLCHtgAiU62Zhj5wB5YwygjzNMpQGxP28g3JmENo4womoSVNHr66ae59tprAS/1p9J19OrVC8gt5WcheeONNwAiBYmVpaCqqiqSimTfffcFYPTo0QD85je/AaB///6AV0qzHEgnxlnfUUJ0Fd4qFzROKjhdbAoeXjdmzBjAywu7fPlydtppp5jvuLl7gySITXdVgFf2eqH8vgr0VlDAihUrIpnwXZTH96WXXgLg66+/BrwcQhofVUdPJ7dQoRwnBg8eDMALL7zA7NmzAXwzYPqhPNZKyZIOhXCcULskLNz6QvnGHCcMowKwAPYCZE1MhNKq+NVrUTKwbAxZ+ZKwfilhwuFw3Gf53N7KRxI2V9Kr/frfsmXLrGr1+pFKnTAJaxgVQNGtOXV1dUkrhmVKPhKDKfu+6tP6sfnmmwPwr3/9K+6zyy67DICrr74agMsvvzzmtVvd7rTTTgO8KnDRtWA00ytvcKHYZZddAJg3bx7gVbeDwLPeB3YsMW7cOMAzDC5ZsgSA+fPnA17Nn9/+9rcxv/vyyy8B6NKlS2BtgexXIiZhDaOMKAkdVm3QDO5mYQ/4XDnrP67+oddDhw4FPEl88sknAzBkyJBI7VUhHVUzrY6l/0uXLgWgW7dumTYvbzrspEmTAE/qq65vMlR7aebMmQBcc801AFx11VVZtyOXMayrqwO8CguqdXvKKacA3rZTIquwxua9994DvKoARx11FAAPP/ww4I2/XzX6dDAd1jAqgJKQsNqvlITV7BekbivyaSWW1LzrrrsAT+8877zzmDt3LuA5RrjXXZX5DjjgAMBL3p0NQUtYObCofq/GSRUL02xTzP9c9jVzGUPVupXEX7x4MQDbbbcd4FWxW7BgAQATJkwAEpfq0OrooosuAuCmm25Se9Jtji8mYQ2jAii6hK2uro6s9XOpWJ0uhdiHjd67g6ZK8pK+QhXhJEkPPfRQAJ599tmczx+UhH3ooYcAr3BXJqgu7Nq1a9UmtSfb5kTIZgxXrFgBwPDhwwE47LDDADj//PMBz3VS1QWTcfrppwNw9913A14FQv3WJKxhGEAR9mEldaTD1NfXRxysRakHgcvS6OrYL7/8MgB77bUX4EmZaF1P+3nunu6OO+4IBCNhc0VtHDhwYNbHkGTV6unRRx/NvWE5sNlmmwGepNe+q1BfJ0+enPJYsg5rdaSCZvmoNu9iEtYwyoiC6bA6j7xz2rdvDzRF62hmkoeQonXyQRA6rCI43H021xIavVLQnuWTTz4JeCsNzfTSf0aNGpVpc+LIVYeVdHQlRjZ6aD7sErmM4ccffwx45Sbd9qi906ZNA7xxi/acc/Vz2Sd0b3///ffpNscX02ENowIompVYOsXXX38dmdUkufJZnj4fVuI2bdoA8TNrJhJJ31F8rGb4RHTq1Anw9qtd8uXp1LZtWyC5BNHKwY1sWbRoEQAXXnghkFsh62zG0G8MNEaKce7du3fM96Ov9Zw5cwDo169fzG+jExUArFq1CoAOHTqk16HE7UrY4KJv66xcuTJyI8gQlc8ME0E+sK6LojbfM6nqve222wKeM7rfOTIh1wdWy3ZtfWhi6Nq1K+AZzBQUMXLkSAYNGgR4QQtCbozaVhFSJ1RbNxOCGEPda1tvvTXg9VFusdOnTwfg3HPP1TkjY5FutUIFGmRjvLMlsWFUAEWXsInIR3hV1LEDXxJrS0ahWkrzMmTIEADmzp0bmZU1k2+zzTYx39Wyav/99485VjEC2BX6d+WVVwLxwd1yGDj11FMBYpxC/vCHPwCek7+YOHEi4EnUbJwxRKnU1nHHRts8corJ5f41CWsYFUDRA9hDoVDEZP7RRx9F3otGhgo5V5cKClhXQLekh/S2GTNmAE3bAJqNpdf06dMn5lgrV64EvMRmfteiEDz44INAfL+ku8o1TyRbBXTu3BmATz75BPAMV82bNwdg3bp1QTU7J+69917AWzWkg4IiZIySZJUe76YBiibbbIwmYQ2jjCi6DturVy+GDRsGeOFouQT+piJI/efAAw8EPJdEl/POOw+AN998M5KyVfqedFZZEOU0ohlXM/B+++0X83k6ZKvDDhgwAPBCz/y2LaSPR1t4d955Z8ALwXPtEPo/a9YswAtbk2SLam9Kvb1UdFgXtVv3r3Y75FDx448/Rr5rSdgMYyMg7xJWYUvLly8HvHV9dBpPdzbWzO3ud6WTaT4Vmc7OLVu2jMyMckmTHqa9Re2/vvLKK4AXFCCpk2hfWYHsspZKz1Fy8g8//BCIX23U1tZGrLZ+BO04IYu2n6NGVVUVF198MQDXXXcd4O3lyoLes2fPXJsRIZ8SNpN7zHVRlSSVLivnIHcPOh1MwhpGBVB0Hfann36KSJdckmenSzazswIVJDk1C7sulNHuluBJXrnlgVfOQ8fQMdVnJWvbZJNNfNvj6sEuuUpY9VdpTLXS0Qpj7NixANxzzz1AkxuiLMiPPPII4NUQEroGso5Hp0jNlFLTYbU/LYu33BzdnYBMMAlrGBVA0SVsovP7la9QBTjt6bmpQ9M8X0azc9euXSMpR6WjSJdTkmk5iLdr1w7wJJ8k06OPPspxxx0HeH7GSqep8C2FFGqfVhJKrzNZdeQqYeXAH23VTIT2WJctWxa3SpLju1YbQtJZ/Z8yZUqmzSsZCZvumMjmoL3nNI9tEtYwyp2S8HQSCsnym7ncBON+1uQgWbp0aaSNSmcp/dL1dElk0YWm/khiaj9VaUak9+i7ih6RVd0lnX3KXEklWeVLfMYZZ0TaJOQdpQBxIQmsJNxuipZywt3VcMcjiFSufpiENYwyoug6bDTSCd2ixdIhFY+ZC9noP24hq3/84x8AjBgxQsdM+DtJ3JYtW/quAqTzKXB96tSpMZ9Lb86k1GGhCjon4ogjjgDgqaeeyts5iq3D+qW90fufffYZADfccAMAt99+ezbnMB3WMMoeeRol+gPC+foT+TyHz3kz7mPz5s3DzZs3j7yura0N19bWhmtqasI1NTWR9w8++ODwwQcfHF64cGF44cKFkT4OHjw4XFVVFa6qqor8plmzZuFmzZqFBw4cGB44cGDkGH379g337ds3sD4W+vqW6hjmcK5wOBwO//3vfw937tw53Llz58h7d9xxR/iOO+6IvJ46dWp46tSpgdzbvs9ksR7YShrsUCgU/nlZlvCvdevW4erq6nB1dXXB+1js610uY5jq79xzz41MuuvXrw+vX78+8mBqEtbn+eij/mxJbBhlREkZnQpBsQ0WhaCYRqdCUMgxjDYoua6nboK5IIJThBmdDKMCMAlb4X2s9P7BxtFHYRLWMMoIe2ANo4ywB9YwyoikOqxhGKWFSVjDKCOShtdtDNa3Su9jpfcPNo4+CpOwhlFGVPwDGwqFilLuwjDyQcU/sIZRSRQsRUy3bt0AWLx4ccrvBuyTmfMxDKNUMAlrGGVEwX2JX3zxRcBL79muXbtIGkglJFPyKqVVOfLIIwF44okncj7/xmZhrPT+QfH66EbrBIlZiQ2jAihatE502k+/UoUJ2hPzOlXJikQUcnbWSkEFwAqFSdjgiC7KPGjQIMBL0Tpy5EgAnn/+ecAruxIEfhI28Ac23azx0YYlVTL/6quvAC/j3nfffQfAySefDHgZ1F2jVCbbNvkcbGW7V0WC6Pa51/kvf/kL4NWQ3W233QCvfmpUewHvZlB1gWTk+4FVFYM777wT8OoFFYpCPrCJno9CbBPaktgwKoCiB7DX1NREjEtr164FvCppdXV1gFeTRDVtlPE/UWZ1fVcGLJdiz85Cmf5dg5tyMKsygFuDNM3zBiJhtRyUBP3+++91zGwPGQhBjmEaldBT/jbIbcio85qENYxyp+i1daINMpKsQnqbJOmqVasAr6p369atAbjvvvuApkz8d911FwCjR48OrI2SgpKKfqgvX3zxRdrHlOS84oorAK+C+V577QXA9OnT436bje6eCbreO+ywA+BVH3DPp1VB27ZtU1aFz4R89y/RudJ5X0ZOVZdPdYx0zptpH03CGkYZUXQdNhmyHqvmjqRR27ZtAc/54oUXXgCaZvxi6rDutVSltnnz5jF8+PCYz6S3R1e4S3SsbCqg5arDanutd+/egLdycNsU3WbVe1X1PdkbTjjhBMBbOQwYMCDT5sSRjzGUpPPbgguFQhEdXvdfPjEd1jAqgJKWsEJtzEXqRB0r8NlZ0lIWXSG9bosttmD16tU6f8JjuMmpc9HfspWw2uOVdFTVvltuuQXwpI+kaZcuXXS+uGNpP1m1dBX8EYRems9V0v333w/ASSedpGMHdeiMMAlrGBVASUrYN954A4B99tkHiHUPS4TqtKpuazKCnJ1dLyTVtT388MMBz+vrgQceiJup3b27U045BYCJEyfGvJ9luzKSsNr/ltVd1voffvgBgL/97W8AjBkzJpM2AF5NX+0vl5qEPfbYYwGYPHlyzPsdO3YE4Jtvvsn20DlhEtYwKoCCS1jN5prBNIsn4rTTTgM8vSITbx8/gpidM5V+hdaDcrUSu/0bN24cALfeemvK37qeWTqWqpJ36tQp0+Ykal/OYyi7w6hRowDo3r07ADfddBMQzL2WCyZhDaMCKJink+vZkY7UOf744wGYMGFCzG+0d6lZslhpYFL5kGo1EY17HdzfFtNPV+Fiwm1LOt45rmS65557ADjrrLOCaGJg9OzZE4CFCxcCcOGFFwLePSX7g0LqtNcPni+7vtu/f38A3n777Xw32ySsYZQTeddhNRsPGzYMgGnTpgGJg33dmVvW4QMPPBDwPHC0Z5lNYHgQ+o8rHVNJ+BYtWkSkrZ+UcmfpIUOGALEzu1AAtWZ/l6DjYa+++moALr30Uh0z7jtu9JHfNZEVXFbxbMjHPqw8tKRry7tO7zc2NkbuN79ECu5uRi6JC/IewK5OKHuE3PJmzpwJwB577AHA7NmzAdh1110BOPHEEyPbCHIyl+P+mjVrYo7Zpk0bwLsQulCZEMRg66bU0ki88sorABxwwAFpHyuVK2U2S+SgHlg3GYEeyhtvvBHwgu/B275ZsmRJ0mNq4tKxsyEfD+yDDz4INN2P4GUxid5K9JtsXVfNxx57DPAcT+bPn59xe8zoZBgVQOAS9pNPPgGgc+fOAHHLCM3OUvJ79OjBggULAM+ZXzlyBg8eDBD5XGF1iZaJ6ZKP2Vl9VCicjGXLli3TOSPflWrw+OOPJzyWG8RfTAmbC37GtCBC5/Ixhu3btwe8EM6XXnoJgEmTJgHw8MMPR7as5GaqFaFWRxozuWOuXLky6/aYhDWMCiCwbR3NnDLju5kM/RT2efPmxR1LTuWS1pI6c+bMATydQZK40Ns6CrOSTi0GDhwIeH2VPtetW7e4LR5X79F/N4i/FJgyZQrgrQ6S4ec+6krWPn36ADB37twgmpgzSpyn9h100EGAN8aTJ0+OszNonGfMmAHE91FJBRUmGgQmYQ2jjMhZwspSq01khVX5Obsnww3f0owli6K2c6T/KRxMM19tbW2gqUr8UACzdGzp1NKDEvU1leQ87LDDAHjmmWdi3td1dS3ShSQdySrcrQ2NoRwqhg4dCnirp1JBY6b2uWPYr1+/OD1coZDaotp///0Br1KFpHSQ+alNwhpGGZGTlbhXr14RS6h0VjlEyMomB4BkaK2/5ZZbAl6S7XPOOQfwHMpVl+fggw8Gsk5+lfcUMZKGep1JZQKRbuI3n3YU3UrsJ1U+/PBDAHbaaaesj12IVLXyH5BdoqGhIbJK0P2o8dXrbMbZD7MSG0YFkPM+rCSAZlS3RIdmnWReSe7M5eoP0hG0hyvdQbN3dEhXqopipVL5zCXIIIBSkLAu9957L+CFTAYVoA+F6WMoFOKSSy4BYPny5QBcdNFFgBdIoHt/u+22i/leNpiENYwKICcJGw6HI5Jg9913B7y1v8s777wDeLNRtC+pikjJU6hXr15AvP4jHVe4CbsHDBjge/6oNuc8O6t0hYp1jR07FoDbbrtN5wC8Pcaffvopsu8o/Vb9lxVY/4WbBjUTSkHC6hrIp1wpU11kcU+WyCDBsQsuYdMp2aGxdSWrVn0Zns8krGGUOzntw4ZCIY4++miASIkMN2HXqaeeCnjeQUqUpiiVRYsWRfw3U1kOtQ/rZ41LJV1zRTOpJKuQ5dOdhdXegw46KCJRUwWw63uJgt/LAb/+afdA+9Gl6NGVjGbNmkVWO66/t/Tzs88+G8hOoqbdjrwd2TCMwMnZSqxZRrOOG/VQamSj/7jxt35lNfxIVNA5+jPwopuC8AAqpg6bbpROLiUai2Xpnzp1KuD5AUSdP/BzmQ5rGBVASSYSzydBzM5ucmwhzyxZi6ORXvP+++8DXtJxSVTF0CrGMqiY30IUrN5+++0je4/yRvOTqEEUlCqkhI32I1DbZWfQmOZjNeknYQmHw75/QLjS/vLRx1AoFP75pkn4N2XKlJTfyVcfC3G+jz76KNK/xsbGcGNjY1iUyxhWV1eHq6urfT9fsWJFuL6+PlxfXx/u2rVruGvXruG2bduG27ZtW5A+6s+WxIZRRtiSuML7WKj+XX755QBceeWVOq/aEvi5NrYxjMYkrGGUESZhK7yPld4/2Dj6KEzCGkYZYQ+sYZQR9sAaRhmRVIc1DKO0MAlrGGVE0vC6jcH6Vul9rPT+wcbRR2ES1jDKCHtgDaOMsAfWMMqIgj2wUZEVhmFkiUlYwygjAis3mYogC/oaxsaKSVjDKCMKrsOGQiFCoRDdu3ene/fuMd/p0qULXbp0YcOGDWzYsIF169axbt26stV/x44dG0kyXs5UVVUlLbWSiA4dOtChQwfq6+upr6/P6hilgO49pTKNpqampuBlQAMPr/vggw8A2HnnnZN+b7PNNgOacvcee+yxgCl5cYUAAAn3SURBVJfx/9JLLwW8CuYPPfQQAJdddhngZVhXvh3lE1q8eHHK9gWx6T5o0CAAXn311YSfP/fcc4BXuS8UCjFt2jTAqxmaLjvssAMACxYsSPs3peg4oTzUqnSu7Jqq7ZuJilQIx4lPP/0UgG222QZoqsSQTRWGbDHHCcOoAIoewB6ds1f/6+rqAC9bvCTw5MmTAa/aXaLliGbGTp06JTxfkLOzsibef//9AIwfPx6IzwgYDocj1f3WrFkDeJn36uvrAejRo0dM+3OhlCSsO7auJJWEVbbIxsbGlFXnC+maqPbW1dWxevVqILZaYr4wCWsYFUDO2zqpJJofhx12GADPPPNM5D3NZmeccQbgSSrlgz3qqKMA+Oc//wnEz9pffvklm2++eeadSMHnn38OwNZbbx3z/rbbbgvA+eefH9MeoYoBTz31VOSz6Kp9AK1bt475379/fwDefvtt3/aUw9aY7gu1UfYGt83SbVURcPXq1REJVgroHvz2228jq6QgJGu2Y2gS1jDKiMB12IaGBsC/rqn0EukDnTt35ptvvon5jqqA/fnPf056LFmiVT3u5zYD/uk1g9B/lLVf1el0Ts28am90zVdVHpdePmnSJMCr2Ldw4cKYc2g2z7X2TCF02IaGBl99UxJUuqrL6NGjAc8OEAqF6Nu3LwDvvvtuwt8UUocdPHgw0FSJoZArG9NhDaMCCExZ2HvvvQH4/e9/H/O+O8Pq9TXXXAN4e5bgWV1vueWWpsb56DKSPokqoRXCwUISwK0jo/Zef/31AFx44YWR39xzzz0xx3jssccA73qIUaNGxRyzFJkxYwbQVPEeYiXO/PnzAfj4448Bf31PvznllFPiPvOTrMVAFeugNGwGJmENo4zIWYeVtJs9ezYA/fr1S/p9uSMuW7YMaNJ/NHNNnz4dgD333BOATTbZBICVK1cCnvR59NFHAc8LxbVIJiMb/UcudW7l91x0Gv3WPXYQs3ihdFhZvNesWRNpt6Tum2++CUCbNm0Az9Kv+0VstdVWgDeG6bgvlkqKmCOPPBKAJ554IvBjmw5rGBVAzjqs9holWWUtjLaQAnTr1g3wdBzNtNF1UPfaa6+Yz2Rt1TkkWYUsroccckiu3UiKK1nVnmwYMWIE4FVcl/+z/KVLid133x2At956C/D6nSxUsmPHjgm/49bSlSRdvnx5zOtyIh+SNRUmYQ2jjAhsH1ZS0U8X03natWsHeHuYrVq1ipNgQlZXSWv3mNmUNMxF/5E3jiS7Xx+TRQ+5UslteynpsBpTRVHNnTs35nNZgFu3bh3Zfy90/34+ZmA6bKl4kZkOaxgVQGD7sK5+4yLPpqeeegrwInISSddx48YBnqfTlltuCaQ3W1977bUAXHLJJZl1IA2+++67hOd19U9J1uioI0mgnj17Akk9sRKeoxhoTF3JqhWPxq6hoSESdST8+qffJNNZjzjiCMC7VwpJsuuezyLV6RK4a6I6JUPFbrvtFvO5nCL0UDY2NsaZ+ufNmwfAjjvumNa5MiGI5dTIkSMBePjhhwFo0aIF4AVALFq0CIDtt98eaHIi8LtR9VC41yCqfZk2L+cl8aabbgp4aovGQQbDICnWGOZCly5dAM/5R1XnXffSXLAlsWFUADlLWNfQIqd2bdEkOGbM75Id08+Aoc35WbNmxf22Q4cOgJeKJMGxc56dJVHXrl0LeMHXP/74I+BtbclopqB1px0xr+fMmQPALrvsEvPbUnD+V3oaqSa67vvvv3/cd2WIct1KXUmqFUU2W2TFlrBR7QA891KpPQEd2ySsYZQ7gUlYzaDDhg0DoE+fPoCXOE2f77fffgB89tlnQPJ1v9s2bVTLJSyR/vPGG28AsM8++/gdM+fZ+ZhjjgHghhtuAKBr165AfGob0bp164jRTQH7cr+Uc4JcNSW1JcWLocPqnLk4iPhteen91157DfDuh0zIh4T1cz+NRiun119/HYA99tjDbZfak2tzTMIaRiWQ87aOZqR0dS3NrGPGjAFiJaxmMD9dQJJVaFaMPrcbrpYPFBonPUwpTCU9NcMq5LBVq1YpU2TqOrrfU4CDViT5RO3WNXQt2NqSkhU/0Zjr2ri4KYRuvvnmAFocHMkkq9B2lp9kVcogkYue7odJWMMoI3LSYcPhMIceeigAzz77bMxnsozKguoiaZoowNltk6sbSLK6M1eLFi0iOmCSNufdrU0O7dqfmzBhQtrHkM7/9NNPA/FOC2m2I20dtrq6OmVSMWW9TxRsHn0cSE9S5Uo+xtCVhhMnTgTg5JNPjnxHieOVSN5PZ505cybg7WZkg+mwhlEBBGYldlFKGFlO9VqBysOHDwe82SjZsYQ8cNykbZlQKnt4Luq79KRcykJkaiWWhHDdOt3xUJu0Ovrhhx+AprFVILrf/ncmlFIStmiU5lZpb4Wk80033QTABRdckPO5TMIaRiWgxGWJ/oBwsr9McH/T2NgYbmxsDB9zzDHh6urqcHV1ddxvGhoawg0NDeFly5aFly1bFvlNVVVVuKqqKtyjR49wjx49Isf+xS9+kbS9P58/oz4m+guFQuGfZ/Ws/2pqasI1NTWR1+qbS//+/cP9+/fP6NiZjuH69evD69evD9fV1YXr6urCI0aMCI8YMcK3v+4YhsPh8IYNG8IbNmxIp20x90Oia1uIMcz078wzzwy3atUq3KpVK997W/dlbW1tuLa2NmVfM+mj/kzCGkYZkbMOK++joUOHAp5eIz1He3raR9S+YrR/sGuh02f6rspOBlGLM1wA/Ue6nvaTq6qqfK2nbnGsqHZlff5wlp5O7733HgC9e/eOeV8lL7X/qnQ/8jGuqalJ2d4bb7wRgIsuuijm/UInIQgCtVVtV+nMVatWBXkO02ENo9zJydOpTZs2nHTSSQB89dVXgFfUyZWasjy6s3coFIqLBT3++OMBL/LHT7IWKqA4HT/TaFxPrejfKdBb+9NuH+RDXEjc6ydpr+gjSVKNk+JjM7Fkq7xJqnOXE66k9SuaFiQmYQ2jjMhZh3WjLlwvpExmUMXUKmODi5JRuwWTM6EQ+o+kp/aclRAd4qW1rs+uu+4KeAnZi6HDCjeBu5BE1SpBffHLlpGIIPxrC6nDJmqvVpFuWpwg8dNhi16BPRGu22KQy6ZiGCyaN28ecRzRTa7lZi4OEn7k+sC6aJmuPqQzHn75qYOg2EanQmBGJ8OoAIomYeWy2NjYGFlu5HOJITa22Tmb/rnLwEceeQTwks9pua5tnh49euTS3IzZ2MYwGpOwhlFG5F3CpqrAXWg2ttk5iP4prO6+++7L9VCBsLGNYTQmYQ2jjChJK3E+2dhm50rvH2wcfRQmYQ2jjEgqYQ3DKC1MwhpGGWEPrGGUEfbAGkYZYQ+sYZQR9sAaRhlhD6xhlBH/D1JrkWZhHSU/AAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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40ZoAR47dmzmqP/c5z4HwGWXXQaEbt6f/vSnK467nr4ujfph7TC3ySabAP3+1Tz++7//G4A999wTCN3TZ8yYka2Z+nucACHb2AtY/2wjKMIO4bOjzq1UpJQRS3MzZ87M1j8+h8fEXf88l16DeoroJ4ZNSOgCFGYljndfd5NY3zToXYtqHvXqPa1kWHHjjTey2WabAYEV11tvPSAwbcy4+hZ33nnnQee7//77gZC+ZzKA98lrxHMzseC6666rNFyg+UgnmWTmzJnxeQH40Y9+BIR+sc8880zda6dFtd6ewB+MozAddvz48UCQ7v72t78BIfxQC3mp+blGWpg/85nPAEFauuaaawb8Vn25kuSo1PKvf/0rMWxCQqejMIaNg76NP9WyJtsYDVLJv1giNrbk942g3t25p6eHvffeGwjW09hHZ9d59TijelZbbbV6xlXxe+e86KKLZlE4Fc7VEMParf25554DgpSkHhpLSwb0X3311Zm1u8KYHA8A6667LgC33377gO9rQZEMe/fddwPBlrDDDjsAIcrrpz/9KdBv+dXCP23aNCDEBvv5vPPOCwRPyZ133tnosJIOm5DQDWhbLHEticELL7wwEOJMhXqeEUWtZNg47SoPI4LilpDutDZSiqOWKiGOitGaqv6ov9ZY3SWWWIKHH3644jnrYdje3t6MSdWrtXYbaWa6WJwy5xjnmmuuQeur//L666/PjoHARn/6058GzLeZKKAiypwa5aUf1rmff/75QL9ko49cSUvEEpZW4XqegxiJYRMSugDDKlvHGFX9miKO9mmnDjv33HNnTFIu2miNNdYA4J577ql5HFqWtUoaVRTr7dOnTweCBXL06NGZBBJbKUWzVmLPK0vqdy+Ht99+O9PfvFfxGhkBZU6pSfCyunmo9fqZP7hWVTuE5zVLSlZUL9emcu655wLBP7vSSiuVnE+560DwXx900EFVf1MOwzqBXTeCTvdyN6eI6hX1LnZeZCx3r3xhFIVqgZuQwRWxK8VqBSeeeCIQEqofffRRDj/88IrnrveFddxuCqoFl19+ORBCRm+55ZaSvx89enQm8voilkvQVmw0reyMM84AgrHnqquuyoxZ5VCkSHzwwQcDMHnyZCC4qrbddlsgVNMYN25cvmYWENbQDduKm6pM5TbUWpBE4oSELkDbGbZS2li5sRRZF6oRhr3kkkuA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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 2750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dZ4AUVdaGnxkGBkFUUBAxYcaAWVfXiChGzAkzJhTWiPkzru6aAHNAMYsoigEjghjQRdYAmBETqJgwsoiS5vsxvnWrb+fuqu7p5jx/oHu6q251dd/3nnNPqGloaMAwjMqgttwDMAwjd+wHaxgVhP1gDaOCsB+sYVQQ9oM1jAqiLtMfa2pqElzI7777LgBdu3aNcUjx0tDQUBN+7F9jTU2NXlf0uZZeemkAfvzxx6KPlQ/ha/SvrxrIdg+rAf8ahSmsYVQQNZmUZFGYuaK8Rqmz/l24cGHwuJT73aawlY8prGFUARltWCM/pKL6t3fv3gDcddddZRtTnNTWNs73WknE9R7DYQprGBWE2bBN5BpbtWoFwO+//57w/A8//ABA+/btcz5WqW3Yzz77jFVXXVXnA2CttdYCYMqUKQAsscQSAPz6668ArLvuugC8//77eZ+vqd7DKDEb1jCqAFPYMl9j69atAVhllVUA+N///gfAF198UfAxS62wdXV1gXJ26dIFgK+++gqACRMmALD55ptHdr6mdg/jIJ3CxuZ0qq+vB+DPP//M+lotoxZbbDEA/vjjDyC7Y0KTjd5ficyePRtwS8Vvvvkm4e/NmjUDYMGCBUDjtfrbRuXitttuA+D4449n8cUXB9y9GzhwIADdu3cH4NtvvwWgY8eOpR5mVWFLYsOoIEq+JG7evDnglOWkk07illtu0flSvkfqoi0B/VsITW051alTJ8ApU7du3QB4/PHHAbdCWX311QEYMmQIO+64Y8ZjxrUkPvDAAwF46qmnALecnzFjRqD2M2bMAAicUCuvvDIA06dPB6JZFZTyHiq8tKamhu+++w5w37/XX38dgC233DLjMQrZyjKnk2FUAbEprGZfKemcOXMA+OWXXwBYbrnlgMKC7DfccEMA5s2bBxAozvXXX5/1veVQ2DPOOIMBAwYkPLfnnnsCMGvWLABee+01AD799FMA1l57bQDuuOMOADbYYAOg0amTLUEhLoW96aabABg9ejRAsDLq2LEje+yxBwAvvPACAGPHjgWgR48egHOmRUGc91AqKFUMf8b+33xatGgBwNy5czUuwN27yZMnB6/1fRM+prCGUQVErrCaORQAIG+xePrppwHYbbfd8j10WjST1dXVMX/+/IyvLYXCymO60korAY2KtNRSSyWMVYESoXEA8MYbbwCw8cYbJzwf9iIfe+yxgFNln6gV1rfB/O9MQ0NDVr/CO++8A8D6669f7HBivYefffYZ4LbZwvgKK7/CSy+9BMDMmTMBtwIUJ5xwAgC33357wnEyYQprGFVA0QqrjfKPPvoIcMqhpG15hevqGrd8U53v4osvTvg3X8Le5WweuShnZ3lA99prL8DZ0Dq37Pawmur6tT/53nvvAbDeeusBzvbTSqFfv34APPHEE0Cjqvbt2xeA559/PuW4wtdYW1vbED5vMciT7a+aZs2aFVzrvvvuC8DHH38MOG+xrtP/bAohynvofy7XXnstAKeeemrSa/U9W3LJJQG36lFyx1FHHZXyHD///DMA7dq1y2dcprCGUekUpbCdOnUK9t3EWWedBcADDzwAuBn166+/TnscqbC8vptuuikAb775ZsbBi1QePR/NfnfddVdks7OuVVE9Up4111wTgLffflvnCN4jD6KvUrJLL7roIgCuvPJKAL788ksAXn31VaDx89xkk00AGDNmTMpxRW3DyrMvZUmFv4eufVeFJMqLrGQGrRgKIUqFPffccwG45JJLAOfp9b9LNTU1aRM0QuNKeDxy5EgAtthiCwCWXXbZnMdlCmsYVUDkXuJcbSXNyL179w5sAD0n+9df82uG14yvvT3NXOlmPm98Rc/OssevuuoqwO2dSlWefPJJAL7//vtgnMcffzyQrIq6Zl2LZnHZsIouUuRTfX19YEumI2qF1cpH1+2TKkKtTZs2QLIvQysu7SYUQpQKq3FpPzRc1gcIvPuyQ9OMJ+XzOlbLli0B9znmgimsYVQBRWXrtG7dOlCGww8/POFv6aJCNBvJvtN+I8A222wDJCurZjspq46tpO4PP/wQaNw7K7ZMqf/+2tra4HzDhg0DoE+fPgAcd9xxCa/VbPzQQw8ljG/xxRdn/PjxgItckuI+99xzQPK+7I033gg4RQ5HjikZ/LfffivoGvMlnbKmQrsFWvVIwYRWBzpmtn3zuEmnev4uQ6pV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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2de7xVY/7H3+fsk9RBEUVSkinkNoMplGsRXk1ChNS4y62YIY37fUpC5W40iDCE3EpukVAZjVyKRqFEiEnl18U5vz9On/Ws/Zy99nWtffO8X69ep3P22ms9az9rP9/ne6+ora3F4XCUBpWFHoDD4Ugf94V1OEoI94V1OEoI94V1OEoI94V1OEqIqmQvVlRUlJ0Juba2tsL/e7HeY0VF3TCzseL777FY7y8XSmUOc8G+R+EkrMNRQiSVsI7w2WmnnQD4+OOPkx5XCv7xXHYBUZDJeCor62RVTU1N0vdWV1cDsHLlSu9vVVV1X5t169ZldI0wcBLW4SghKpKtRr8F3aBY77Fhw4YArF69Ou7vX331Fdtss03S9zodtnQIkuxOh3U4yoCCS9iamhpvrx8GiXQOP+W0OgfhJGz2FIte7iSsw1EGRC5hgyxq/pVs3333BeDee+8F4MMPPwSM/nbSSSflOgyPXFbnBg0aALB27drQxhMFYUvYTKSO5vnrr78GYJ999gFg0aJFuQ7DIwoJ27hxYwBWrVqV66kCyeT5CZKwkbt1ZDzRRP7666+AMXk/88wz9OrVC4AFCxYAsNdeewGwww47RD28jMj2i7rRRht577WNSKVAqi9qLBZj4cKF3v8BzzC2+eabA+F+YbPBNuLZLhf7i/ryyy8D8NhjjwHw0EMPea/93//9X1ZjCGOhd1tih6OEiGxL/PjjjwMwatQoAN5//30AunXrBsBzzz0HwM8//8zGG28MmNVuyy23BPBWba2OYRClwaJp06YA/Pjjj2m/57bbbgNg8ODBYQ0j9C3xtttuC8CXX34JmHn685//DECbNm0YMmQIAI0aNbLHAkCTJk2AuvnOlaA5zMZgpGdL29U//OEPAOy6665A3b0BdOzYkWuuuQaADTfcEIDvv/8egLlz5wKpAykywRmdHI4yIHKj08knnwzA2LFjARg4cCAADzzwAJBYyR8wYABg9IbOnTsD8PbbbwO5mdyjkLA5jkfjiPuZ43hykrDSQ2VvsJE0+uijjwDo0KGDJ2Xat2+f8D3SGcNwl2Qzh/pcN9hgg7hx6Pe//vWvADz66KMA/Pvf/wbMZ7FmzRrPMCVJqvfqGW7WrBlgdhPffvttyntxgRMORxmTt8CJMAKht99+ewDmz5+f9TnClLD67KR/3nrrrQmPW7t2LbvssgsA8+bNA+pCDAFatWoF1FmSAX755Rcgt8+pEIETkhSSPprv3/3ud0Buc2aTi4QV0rXHjx8PwEEHHQQYd5TGrXlYsmSJNzeyscj2onv7+9//DsCUKVPiXtdOJBOchHU4yoC8pdflIjH2228/AN58882whhMKTz/9NBAsWUUsFuOEE04A4MorrwSMn1JSesWKFYBZvZcuXRr3erFz1llnAUaf045Blv5C4Pe96nM8//zzAbjnnnsAM74DDzwQMJ+3YgJOOeUUoM6eIuu/nuVNN90UgHPOOQcwng9JVun1tnTPZU6dhHU4SoiCB/8n4+abbwaMBW/kyJEAXHjhhUDu5VMgu3vUiikrqhINJFWEpKZWXD/S8WxLrCyNy5Yty3RYHoXQYaW7yqoqiXv11VcDZucQBrnosHpmjj/+eABatGgBmHgBO6FdPxs2bOjpsGKzzTYDYI899gBg6tSpABx22GFAXRRftjgd1uEoA4q6RIz8sFrlLrjggqzPJctdELa/OBlape20QP1d0iaRZBVBPs6ffvop5fWDWLNmTdbvzRVbT2vevDkAd911V2jXSJWGafuP/VLV9nfLOhyEjtdPv3TVOfr06QPAI488ApjPX/HT2bDbbrslfd1JWIejhChKHVYrqWI2w0x5iiLSSSmEI0aMAGDQoEE6d7JxJPx7MUQ6ZYMsprbuLet4KomWCbnMYceOHYHMfaOxWMyT3O3atQOMLz3Tnc1WW23FkiVLABfp5HCUNUUpYW0USyzfmKyvQWVgkhGGhFUMqVbc7t27AzBx4kQAli9fDpjV/KijjuKOO+5Ies4gyaqIHNtCmYxCSFg9R127dgWMXte6desorpXxHCr+WfYF7YpyyVG1paN0V2XxBB1fWVkZaMMQQRK2KL+wurGtt94aMOFiQ4cOBeD666/P+txhbok7dOgAwOLFi4H6qWPaKukLnohUW2Al92fiIsj3F3b33Xfn+eefB6Bly5a6bmTXK7a6XLpnPafpkCoV0G2JHY4yIHIJq7Ct22+/Pe33KABhwoQJAAwbNgyAa6+9FjB1grIhzNVZJWy+++47AH744QddI+V7tSXS1kxbtmOOOQYwRhp7JV67dq13bBD5krAyDvoTtzVOuViiIJctcRT1uOS+Szc5v2/fvl4aXxBOwjocZUBkElZGkkmTJgHGyWyX0Vi1ahWbbLJJwteESpSEEUgehoS1UwXtz1BuKCU8+5FeK4OZ7l2B6p9++ilgeu/07NkTMC6EVFX/148nrzqs//6j1F191ysqHTaKWsZOwjocZUBkoYlyR3Tp0gUwuoOCIWTxbdSokafPaYV69dVXATj44IOB3CSrHNRbbbVV1ucQclFonErJskkkWYWKlSnpWQkNSs5v27YtYCSrHVLnZ7vttgPgv//9b+AxUSLLMMB//vMfIPl4s2X33XcHYPbs2aGdMxdU5khhrHbpWlviBvVJ8qPP8ogjjkh6bSdhHY4SIjId1l5l9LuKhM+YMcM7VtbfJ554AjCrtUi3H2c6hKH/HHLIIXovYPT0FNcFTPnX4447DjBdDlT0q3///nHvy0ZS5UuHfeONNwATLAEwbdq0en8Lm0znsLKy0rM35PIsyZ9+5JFHAvDkk08CxuIve4QCZ2wSzaXzwzocZUxkOqy9cuy4444AHHrooYCRsFVVVZ7EuvzyyxOeK8wCzWHw0ksvAWZnkA4Kq+zbty9gVuETTzwRMD7cLbbYAggObysmPv/8cyBemqqcTz5JZaX1lydKVapI51Ji+zfffAPUPadqNyIfuRLWNVe2ZLXHFYYV2UlYh6OEyFsssa4ji98rr7wC1KWivffee4ApWiXki1TUjGJ3c/F7RenD03hUJF0F0QHGjBkDwHnnnRf3HvlsZT23C1zbQeJNmjThf//7X6pxRKLDqhSKUuZUqmf9NYH6Seb58FGmo8Mq0kl+8KDxqOyLypwqPriystKzregZ1jzISt+7d2/ASF5dU1I9VcC/H6fDOhxlQN5KxKjNxhlnnAEY/e/hhx+ud6xWZUlhSaVi6Y5to0LiWkHVJErRTIqn9qMMj8MPPxwwq7IaTulcL7zwQtxxiaRrGEXa00ENza666qp6r8nfLmT1VnOpKAl6LvzpbpKsQccqbuDUU08FTGFx7YyGDx/u+b2VpK9nWD50O3nfLtan32OxWNZ2GSdhHY4SInIdVquKinKpyNjZZ58N1BXh1hjU6kBRULY+F0aRsXzEoWaSHyndNdsmwYmISoeVD1P+17333rveMf4kbTBSP8z7tOcwFovV+q8VNKb17034moqfST+dPHkyYHZ5Xbt29XZMdilURTBlU2wgCKfDOhxlQFFWnPBdHyishTFq9t13X8BEd6n8TS5EHekkn7K/KdSNN94IwEUXXRR3bJiZViLMYvD6qcJ5999/PwD7778/YGwvK1eu9CKZ5Hc9/fTTAeOXzaREbSq7Q0mViImSQn1hlRAgN44q78klECb5Tq8bPXq0V8pGxQUUZBAF2cyhHZKoNMZOnToBxjCknzvvvDNgDG0XXHCBF0Sh+tgyqMmoOHr06OxuKAFuS+xwlAFOwpb5PZb7/UH9e0ymSr322mtA/dRIFfZTdzsZx1Rgr1evXp7LzTeOLO8gNU7COhxlQElL2HPPPRcwzu10KDUJm01QxG9dwtpUVFQESkOFvepzVqGFZFI60zmxj/en+wXhJKzDUQ6os1eif0BtKf1bv9Im/Vfq99i+ffuM7rHQ443inz2HlZWVtZWVld7rPXv2rO3Zs2dk16+urq6trq7O+v2TJ0+uraioSPq8Bn0nnYR1OEqIpDqsw+EoLpyEdThKiKTpdUH+LX+n66Bg6nQld0VFhVcG0g4MtztqJ3pv0N8S9NvUz6K2EmdigUynt2i+7k/J2k2bNgVM+5Jc+PbbbwFTrkUUeg5TPZdh4KzEDkcZkJYfNmhFadCggRebGXQeSU/5t+yypzU1NZ5UUVkOxXn6j7HGFfczUZGroDKrNTU1BV2dTzvtNADuu+++yK5RSD9sFIXEE1yjoHOYj0IKTsI6HGVATpFO/ggSe9WRVLalYyarktpOBqWcJSvMbF+/VHTYMHCRTqWPk7AORxmQ9AtbUVGRVBepra31jkl1bBAtW7b03ltZWRlXJnPlypWsXLmSWCxGLBajUaNGXhkOXd//L9/NoDbccEOv9ImjPNGzl6zBWTZcf/31XoZQJjgJ63CUEGnpsEEW1/VxnECwJVevB/msYrGY9161qVi6dGncOWzsMWv1++WXX+q9Zlu4S13/SZZ5IpwOmzkqdyPfrz5jPVvr1q1jp512AkzZXVWlUKneUaNGAeEUnAulRIxdZsP/ZUvXmFRdXQ2YL1CjRo1o0qQJYGrybrzxxoCp66ttsD4Au6arfyHRGIPSpIr9C6sFRpUXtXj5e4tuuummAPz4448Jz1EMbh2hipe2W0/k2p1v/TmyvkeN79JLLwWMu81OVl+9erXnovSNAzDzEdSRIdcUybhzpX0Gh8NRcNKq/C+pZddjrampCZSs9pZY2wRV1dN2okuXLl4i+vHHHw+YQl5z5swBTJdyu4O1pJEkbnV1dT0XUD4c+elgS/r27dsDptKeqsqry7hqNPfr1w8wn9uIESMiDYlLxhdffAHAxIkTAbM1TLa7SlVLWl0S/vnPf+Y+wCxQYTV1M9AzvueeewLmGRw8eDDDhw8HYKuttgLMnNqS1ybMjgxOwjocJURSHXZ9UrBHMqOT0Goi3UC1W9VLVDVcpZ+2aNGinqSURH/mmWcAuOyyy7xjAV599dW4ayYKSUz02vrfI9dhFQgvva1bt2689dZbcX9TpXmZ9tU3VxJWElefr/R6a+xA9MH/dknWXELyXn75ZaDuM/GTyQ4ojDm0y85qV/fOO+8A0L9/fwAefPBBoO6ZTLVbkKTVTtD+PROcDutwlAE5hSb6paudeqeu3Oq3Kal50kknAfDHP/4RgGnTpvHZZ58BpuOZVjVZ6jp27AiYXi4ffPABYLqW+/twptLv8mkl1mfRsWNHb8y+6wJGaqmqvKrqqxfrcccdB5heufvttx/33nsvENyZPiwJK4u+dkP23/32gptuugkwunbbtm2B+hX/ZdlWGp645557ADjzzDNTjqtYLf2aU3Wh17P/1FNPZXwuJ2EdjjIgKwmbyK+kv+l8bdq0AaBZs2YAzJs3DzD+V0mQhg0beul0X331Vdx1pAOoP4tWenWFa9WqFWCk04cffpjsXjTmyFdn3Y/GV1VV5en0NldccQUAV199NWB0qoEDBwJG55cOe//993udvkW+E9jlF9dY118n4bHSCTt37qyxJTwuXzpsFMnn0vFlcZ4wYQIAt99+O2Cs6pngJKzDUQakZSXOJFFcjYLU/Vr+RLtnpqTPsmXLWL58edxrWgUlVfT6IYccAsCUKVMA03NWHeBeeukl79ggC12U+s8nn3wCmI7c0tPGjRvn7TAuueSSuPdol6LVWZZw6YmyVj766KNA3ecoS3MQUUvYZAncmv9bbrkl7u+2Dz/onOlQbDqsihLcfPPNgEkL1Q4kkYU/FU7COhxlQFo6rC2t/BZhf1wxGGknCTFjxgzASFgdr59+PVjnUCC24mhlBdY4FLOpcUinWrdunSd9pKPomAEDBgAwduzY0FZnWa9lAbZ90vq8EqXgyUqu96o/rDqA2zuSP/3pT0CdPmT7eYVvLiOVsJl0mJfuHuSLLHQscTbYHhH5ZyVh9axpB5gJ8nxsttlmTsI6HKVORjpsophIvabmttLj/I1/wEgMxWFKZ6utra0nQXWsLSXt6+vcilrp1q2bFx0lwox0sq3jffr0AeCxxx6LG6dQFpKto/uP1U/p59otTJo0CTCfRSYZH1HpsKeeeipgMlrs7K1MUAPoMCyo+Zawmle747rm8NlnnwVMhN6IESMyvobTYR2OMiAjP6y9yldUVHg+KCX+qlHurFmzAPj+++8Bo4fKlyoL6po1azydSCxbtgwwuqotVSSFpBdJX169enU9PVv350ukz3h1vvbaawG8CCONV/HBtrQU48aNA+p0GiXn63PS/Sta6M033wSM5FFS9ODBgwGYO3euxh84Tp++GImEfffddwGjf2eDMl6GDBkCZJfsHYaEzaVUqTLNNFf6uddeewHw4osvAsYP+/zzz2d8jVAS2H1/10m9v+mD1828//77gPmyyRglQ4nCEDt06MD8+fPjjrW3wtpy+StLgAmY0PvWrFnjvSfoAchlsrXoKBhk7NixgAkc15ZeAf2nnHIKUNfVW9skG31xf/75Z8B8cXv06AGYBS4TR39UW+JBgwYBcOutt6b9HvtZ0WeYzTZa5GNLrMVPhiXbCAgmHfSRRx4B8J5jqXsnnHACUD8gKB3cltjhKAPSSmAXiWo7bb311gAsXrwYMOGBOlaGiWnTpgFm+yoUUAD13RR6r7azWp212kn6aBW8/fbbOeOMMzK5pZRMnDiRiy++GDDbUm1r5dY5++yzARNGKEmkwHf/Vtl2/TzwwAMAHHPMMYApVSL3zhtvvBHi3WSGHP/a2Ug1SAc7VPWwww4DcpOsUWKHLGq3pKCHZs2asWjRIsDM5wEHHBB3Dqkxkrw6PkychHU4SoicdFjAk7CSOnYvHa3OSqvS63530HvvvQfUD6awHdQaq45LZOzR/209ONsibBtttJGX/nf00UcDplSKdBWRrMueri+pJcOZjHMK6dNOJBeiDk1Mx52jXZAdNBJGqZ4wdVi7u0QmyQFHHnkkYMIwtVuU/SEXnA7rcJQBqfrDxv2eyHmv8LQjjjgCMCZsHaNVuEOHDgC0bt067vhZs2Z5ydmylMr6K7eOVnQVLvvoo4+AxEEYNn379gXgiSeeSHargaxYscK7joJDpK8L+3NKUAvZe81euXfdddesxuXHDlIJG+2SFCgivTsZpdIRwZas22yzDVA/8d5P0K5USfvZENQL18ZJWIejhEgqYe2VxC4a3qhRI8/fucMOOwDw3HPP1Z14vVTUsQrPU+mYa665BqiTwNLnpPf6E6PBBCrISis9eMmSJXHHbbDBBvUKZSktLQzkZ7Pp1KkTYJK1E+k/+jykM2k3ofHmorvmKln1ucsKr5KfCq1TKF46klXBJTaSYIUiVaCEnu1kklX3oMCe6dOnAzBmzBggdYH3ZKSSrMJJWIejhMiqzKn35vUd58Cszuo/onQxJbJrVbrjjjsAU4R677339kpevvbaa4CRNlr5leyuomzScWWJlJSKxWL1rMN24kA2FkaVa7nzzjvj/q40wO+++w4wxacVwicaNGjgWYN32WWXuHHpHsLsjpatlVifr0ry2Dq4gv4T+bql19thpjaFsBIn2nkJ6ayKRgoqPFdRUeE9u0owefLJJwFT7kg7wDBwVmKHowxIS4cNWhWbNWvmWXK1sqq1gSSrzqHOXooGUSHtmTNnetJPkkkr+4knngiYWF219JDFWZEk0mV//fXXwOTubFf2du3acddddwEm6kX6p6zTOreS9YXSraZPn+7tPDQuHSudvlAk2mHp81cJVpW8CWLt2rWejh5EmLaEIGwvhn5v27atZ4XVa7Kp2HG+KnyveGntFN9++22vBOvkyZMBM+/yuyrRRT+jwElYh6OESEuHtY9RDOXrr7/uSTT5KqXPSWeQfqoi4MrikTRt2LCh58uV9JFeIX1CxbV1Lf3UKpmoOZfd31OW52x0WOluKrYVhCx9iv7SSjt16lRvrPJTP/7444BpzREmmeiw/rm9++67geBi3ipdK11X85CshYXmpnv37oApoJcLmc5hLBZj5syZgPGlp7IaaxenXd348eOZOnUqUNfADcwc7r///kByC3OmOB3W4SgDMurAbq9KfqusbS2WtNRKJSmq1VhtDL7++mtP/7EtqLK6qQi1Mldsy69fXw0aaxgNnZUjacc8S8fWLmLo0KGAyZtdu3atp9Pr/nPpzp2KTK3EqUqQZkI+2npmM4d6LvW8KsNKurX843rmtDNUfvLy5cu9qDR7RxgFTsI6HGVAUgkbi8VqIbjwV2Vlpfea3fRZvyv6QzqcfKgqYPXrr796x0jqqGKD/F56r/RjrWyJ8nNtS6Ft6U7VqiPROfV/+Selq9iZR7akUmTQwIEDvfvNpVVjumTrh9XYdB9q6qQYYuX52nTv3t1rI5kPwsjWsf2vNsmeg3yQU4mYZNscO9ROJm5tXxXOpa2xgsJlpLrwwgu9IAr1SJXZXEH+dnkObU1tY4f/Q02nd6r/Hm1sY1Wi17Q11jjsz0nb/pUrV0a6BbYJK73O/ixPPvlkwHRLD3MrneG4iqryfxS4LbHDUQZklMBuh235V1b1MbUd5CoNovIiCj9U4PTEiRPrSUFtp+3QOHu7bSdQV1ZW1jMyJUh1y3p1TncbpTI5MqItXrzYqzSYTUGuVCRL0o9C+ti7pjlz5uQ1uD8fElY7QaWBKgwxXzgJ63CUARkFTthpXBUVFfVKkfpf87/HNgKFge1C8hvBbCSV165dW9T6Ty71ckXUErbQlJoOG2RzSYaTsA5HGZD0C1tZWRknVdu3b0/79u2pqamhpqaGiooKfv3116QFq/R6LBYjFovVOycYSV1VVUVVVZX3u1+C+4/Tv3Xr1sVJ9t69e9c7v45NNU4d169fP/r165fsY4mU2trapNJVriRH6bBmzZo46ZqLVd1JWIejhEiqwzocjuLCSViHo4RIVeY0ZTOsMKyaQb1Ps7GuJRqjn1KzMGaDsxLnl0x696aLsxI7HGVAVq06ssFehRJJT7WrUOuDdM+VCfnsLZpLh/JccBI2WtQi1O7AHiZOwjocZUBkEjaMfX2m+rE/oT6IQq/O+cBJ2PyiMrxhtpd0EtbhKAMi12FTSdotttjCS0xPRVAJU1FVVZVSXyy21TkKnIQtfZyEdTjKgNAkbKICbf6fQc2a8x1pVejVOZOGwdniJGzpEyRhk5drt7Ar31sXSPgeO+hBiew33HADAAcffLBX5/aDDz4ATGkVXUfuEX3JE5Vt0ev2OJSInM8SLRqnL6XP6wD3r3/9C4CePXsCsHr16ryNy1H6uC2xw1FCpLUlVufzTz/9NOUJZRiSlFGtXhXuUvV4fykX9dNUrxr1oVEpmvvvvx+A0aNHA6bni02yLmUiiu3UpEmTAHPv6qmjkjKDBw/2esvqHoQkrIrZhRFk4bbE+UFdDH7/+98Dpp9UGDijk8NRBuRkdPInmNvnUZlT9SEJ6oSn5PZkx6iwmwxWSjDPxmAV5eqscEuFrKmz/MiRI7nwwguTvldd0nbfffecx5EvCevfJaWblF2I/rDZcPzxxwPwyCOPpDxWz++wYcMAuOiii3K+vpOwDkcZkJGV2MYv4RQgIUuydNegwt76/aSTTvJKn6qHpwIjtHJNnDgRMNJaZVJk+VUw9vLly0NNcUpF8+bNgbrgDzCFz9UzV2VOv/nmG4YMGQIYvVzSWJ9HGJI1bNLdwWQiNe1z5rsIeSqCxnP66aczYMAAwHSrk2tu2bJlgHkOo3RZOgnrcJQQWUlY/wpiS0z5PWVRVtjhiy++CBh9VNbRJUuW1FuR5L9Uv1J1Grv66qsBs5Jdd911QF3vGgg3gTgdli5dGvdTqA1JImQNzqdfOF1kfW/btm3k1ypW/7OeQe0U1fN3yZIlXl+ooBYlQTaYMHES1uEoITKSsMn25vIfqrO6fJD77rsvUD/Zd8stt/TOaZ9Pq5sklxLbt9tuO8D4a8866ywAunbtCtR1hE/VDKvQaDz33HMPYO5BqEO9fHv5pF27dkDwZybdXFFb/jBL2TD0XtvOYKOdWLHxl7/8BcDrtq4YgWStSLTz0zPXunVrwHSqD7OEjJOwDkcJkZYfNp0VQqtLr169ACMdJWHHjBkD1G8d6Ue6q3QF/a732DHMuuZuu+0G1DVlCgqqVyftLl26FDRKRs3B1PtWPWeDOsdnQ9h+WEVpbb/99oDRw/VZJ5pTu2du0OuZoGi5AQMGJJzDnXfeGTDNyPKFOrJrVyRvRzZopxqLxZwf1uEodUJLr1MX9RUrVgBmz3/JJZcAcNVVVwF1fleAhx56yHuv9Bmtun379o07JlV8rUp0bLTRRsydOzfpsYWOQw36vMO0LBZDLHHQfS5ZsgSAli1b5nLurOdQ0WfJdnqQuliCH+1AP/nkE8DEC6RbmCERLtLJ4SgDcop0AiMdFfXzwgsvAKYB7oQJEwBjWZTU9FsYlWGz6667AvDAAw8Awau0/Jzff/993U2s13WDsniKAa3sdn6u8oKL1aqdLcqwOuWUU+L+rrl75513AOjcuXNexjN79mwgOKLMLiwgyeqfF+Vp77fffoB5tocOHQqYBtd23nbjxo1Du4/Qazqp07iS0fVgKq1MhoM5c+YAdUEQMlAFOaKF3fVu3LhxAN42+I477vCup625TaG2xPqiais2fvx4AE444YTQr1XILbG2uosXL074usI4tdhmQxRzKEOnXFdyHWqBWbp0qSeUghZX+xxybclN+cMPP6Q9HrcldjjKgJy2xJWVlTRr1gwwAdBamaS0K8j9vPPOA8zWWOb+n376iUMPPRSAyZMnJ72eVjadc/jw4QDsueeeQN0qaEvhYmDVqlX1HO9RSNZiQJJV28WjjjoKKHyQf5BUVLEEFSHQcQqgqK6uBuoMmto9yI1jozmeNWsWYJ5TW7IOHDiQO++8M6v7KL6n2+FwBJKzDqswrK+++goweqYUbRmfVDZFKxrHVOcAAA76SURBVJgk8LBhw7wg/lR7fNvULkOOys7MnTvXWzE//vjjhOfIhw5rr+bqVu9/LUoKocNqBzVq1KiEr0fltlp/7pT3eN999wFw2mmnAUZyao60M9COUTvATp06AXVGslT3IHfO9OnT486RDU6HdTjKgIwkbDLXg6SfVhX9tIuyyYUjXbZp06Z88cUXgef1o4QBhX499dRTgCkZs2rVqnqr2owZMwBjvc6nlVihcrKIW9cN7Tq2S6IQEjZo7uTeOfXUU3M+t+/5y3oO582bB9R3wcycORMwobQK1pGlt3fv3jz88MNx5wrqTmiHcqZDqnsUTsI6HCVEzkXY9H75qxR6Jv1SflElsCux/eKLLwbq/JPyU8nSLGmo0jEK7lcJloMOOijudX9CcTH11unRowdg7t26blSXzbuEXblyZb3gAD0XUVjto5jDMDoy6DNQgYUga3I6OAnrcJQBoRVhk2SVbqrVRona8jvKmjxy5EgABgwY4Pm85Fd97rnnALPqKSRMq9/NN98MmFQ1XbtVq1YsXLgwl1sKBenUiuryU6yJ29mgqKVEoXeao1LBlqyZJJ0r3FG7O0U85SJhg3AS1uEoIXKSsJ07d/aCuO0YUa1Ysg7q79JTlVA+btw471j5ypSW9NJLLwEmMXiHHXYA8KSodEMlDSxcuLAgza+E/MOyHiaiWIuPZYNdfM5PMex0ciGTLotKmLfj5hXxlKp9TCY4CetwlBBZSVjFVL7zzjueRJOlV9ko8r9KH9UKpX39559/DtRJ3GOOOQYwccjSad966y0Ajj76aMBIJ/n2pGfoWhtuuCHLly+PG2s++rHa10qELIflQKJ2o6LQMcN+UsX+pkMyySrdXRJUOysVHFTxwDBxEtbhKCFy8sM2atTIk3ra88v/Kn1O+qXyU9UUSjmsd955p2ftPf/88wF49tlnAaMLqASMJLCuqcgnWYnTIQofnkq6KmLLljILFiygd+/egGl6FSVR+WFVfC2RhNUuJ4x2makodJmfIPQ86jnNBeeHdTjKgJysxIkKWelv0i8XLVoEmILMY8eOBcyKHIvFvAz9yy67DIAzzjgDMLGY0v/kw9WuIJFkDbNoc7po/AsWLABMwXNZ0NUYrNRRRo7Nfffd5/ldBw0alM8hFRXybgTFGIdBWlviZKZt+7VzzjkHgHvvvReAY489FoDnn38eMFtj9W+54IILPKVdriF1tlZvTtsVkklFO5tCbaeinESbqEMTNddK0J4/f76XZum7LlDX9Q3M8xDS9SOfwzDmK5c6XW5L7HCUAaGl16m/yJVXXhn392uuuQaABx98EMBzu2gbmSiQIMwKgva5itVgESZRSdhk82H31omS39oc+nES1uEoIXIuESM9xg6/kmTTyhtF4ILKeeRSPrLcV+dc7k/JCyNGjADS61mjYIFbbrkl28um5Lc2h36chHU4Sgl1UU/0r7KysraysrIWqAVqp0yZUjtlyhTv92L799lnn6U8xr7HQo85in+/pftLdI8VFRW166VuUf578MEHM75H7zuJw+EoGZLqsA6Ho7hwEtbhKCGShib+FqxvxXqPYUXJFOv95UKpzGEuOCuxw1EG5NwfNkzymWyeDxTrrNjnTCikbSFd6b755psD8a0jVXi7nErh2KRbhmifffYBTOuOMHAS1uEoJZL5YSkCn1XY/0r9HocPH57RPRZ6vJn+a9y4cdnPYTr/nB/W4SgDco4lLjXyaWHMJpk+jDIj+bIS+4vOhWV3aNCgQco8Z2cldjgcJUFJSNgw82PDXJ3t0jUq9SqCMpmiJiwJq8996623BozUVxWGRPOi0p92cb4wrd6/ZQlb1F9Y+4HQw7Bq1aqszxnmZKvyozoSCLlx7r77bgD69OnjVRwUcoWoH6m6+oVBpl/YoHIoQX9X2ZfjjjsOqKsfLRfG448/DpjyPkJzVmyLbrHitsQORxlQ8MCJyy+/3CsfI8mkTtfqqaPV+qqrrgJIu2N72KijugrJqYu33YclHRR0oJrGYUrYTLGNYpoH1ZgeMmQIYLqyaezqCVxVVeXNkXr3qv509+7dgboesuVGmKpaujgJ63CUEHnXYbVKq4tdsn40NhqrugmkU7IkwTly1n/U80c6tcaTS7dxhfSFYaDKVIe1JYXdJ0n9T9Wr5tFHHwWMJO7Xr5/XpVAdB6+77rq4a2jew76/9eMP/Tn95JNPgPr2iXSQiytZF8NUOB3W4SgD8qbD7rTTTgBMnToVSCxZ1WVMK7k48MADAXjttdcAU2E9X4Hm+++/P2DG3rdvXwC+/PJLwEgadTeQRXjatGlAXbe9999/H4BDDz0UML1V//GPfwD5d/34qa6uBsznqN450j/ffvttAFq0aAHAJZdcApjOBrNnz+axxx4DjN6rMrZyfRXy/pJxxBFHAPW7LGbThc9O9tC5wiwB6ySsw1FC5E2H1Yolf5xSlMD4+ew0NK1M8neq147Kmspa2bx5c8BI3mTkov/YgRDqa/v6668DxrdqtxKpqKhg8uTJABxyyCEaR9y5w+yrmo4Om8jCad+fdkH6aQdM+MMRbf39qaeeAqBr166AKUlbbH5YWwoGhZHW1NR4n492IG3atAGCO9Hr3NqZaaeY5ricDutwlDqhS9iglUqr8gEHHADAq6++CtSt3qmC4zt27AgYq7C98mfSFCufUTJq7vXdd9+x2WabAcY6bn/uWr2zafBlE3Xwf6IIKOmuanL2zDPPANCuXTvAPBdhdBcMYw6HDh0KwE033QSYe2nfvj0A8+bNA4w9Ys2aNfXmRvcsv7y9y8hl1+QkrMNRBqRlJc5kVQw6RpbI2bNnA9CkSZOU59RKbvtbtXJlIo2y8aflil+nlmSV1LWtkdLTJZGy4ZVXXsn6vZmQqAWjLMy77bYbAJtuuikAixcvBnJrESoUdx0GN954Y9zv8qkr4iwd6Xj44YcD5t4lcXNh2LBhSV93EtbhKCHyHukkqSNJkwhJI+kXN9xwAxCOP6sQmR6NGzf2urLPmTMn4TFh+uqi1mFtC3NVVVU9C6ruR9FSkmBhEOUcplMIUPaIoCZsYVj8nQ7rcJQBkUU62atw//79ASNZpat1796dDz74AKiLCAITHSPJ+t577wGwxx57APDtt98CsGjRorhrFCu//PKLJ1m1ctuRXsV+D37sVqItWrTwdFbNmTJ8LrroIqB0StiOHDkSgEGDBgUeox1gIcjbllhfQgU5yL1z2223edsoBULogZCxqXXr1gCcddZZAIwfPz7rceRzS6z+qgMGDAg8JpvtU1DivMjXlljb4E022cRzbcyYMQOABQsWANCrVy+NKePzB70nH3MowaKFxl9jK2hcuvdOnTrlfH23JXY4yoCct8RKxZKUDOKnn34CzOozadIkoM4xLcOETP7a6kq5l3ROlYrXtGlT7zqFRMna/vBLm0wlq46vqakJNYwxG+y0sWOPPdaTSDKu7bLLLlmdu3nz5oGhfvkkUZirbTCUG0fPbxiSNRVOwjocJUROEraioqJeaputfyi0SzqO0uxUoGzhwoWe5Dz22GMBePLJJ4H6ro5EDns/xSBdwQSDJEpoTyUd7c9LXHnllWm9Px9oHnR/LVu29CSqjE+ZVoyU1C4G6ZqIBg0aeM+uGDhwIJDfOXES1uEoIbKSsH4pqhVUllzV6BXS5/Se3r17A6bWrV8KTZgwASgdF0AQ119/PVA//A3qhyTqXiWVbcmq46XPJ3pN5Gul15x16dIFgM6dO3vpg8uXLwdMB4N0JWyi3ZNsACrSpx1YIVi7dm29HdMtt9yS93E4CetwlBBZSdhEld61kuo1FZbec889ATj33HMBk/T78ssvA9CjR496UqcY9LRMmDhxIgA9e/YE8MrBJCOofIgkjXYqtiT2k+/PybYOL1myBKjzl/fr1w+Aa6+9FghOr8zEH6v+q4WUrKJYAluchHU4SoicI53s1Dslm8tHNXPmzLjj5a+VNbS2ttaTJttuu20mY69HdXV1yoLVYUbJaHeha8pfnMxaLT39qKOOAoyeq5A+FZZT6VSlpb355puA8fklI+xIJ1s6duvWDaiz8EPdPckmoZ2VCtRp5xWmPSLKSCeFzKrcT7K5jHKH4yKdHI4yICcJ26ZNG0+vGTFiBGAkh/Q6Sd4ePXoAplmSYonbtWuX1xKYUa7O6eg5O+64I2BiU1UaVYwZMwaAVq1aAXDkkUdqnN4xmcTahnl/p512GmCk5ahRo4C6XYF0b0U8adchnVZB9fb9Jio3E9SES0Q5h/pslWCSKA1Uno6nn346rMvWw0lYh6MMyErC+ld4rYYqkK02FvIbfvbZZwBcdtllgCmB8dBDDwFw4okn5nYHGRLF6ty5c2fAFNxORpB01O+yBut3Ox0vFoul1Aej0mFln9AuQO03VqxYwQsvvACY+dX8a6wqLG57BBL5koP8y/p7PrJ1En0vFIGn8rZR4iSsw1EG5OyHlZ6hci7a86v4lhg9ejRgsnvyLVmjRC0rZs2aBRjfs/T5008/3YsAklVdn5OskUHMnz8/7ve2bdvW+1tU2D5gtduU5VSZOaNHj/akr6zakqh2kXhlZAXt7DbYYIN68en58IHKOq95sunfv7+3KywkTsI6HCVE6BUnFF86ffp0wFjS1Jy5T58+gJFK+SYf+o/dOtKv69uWT/lf//a3v4V2/aisxMrAOfroowGYMmUKUBeRJD+sCnArDliNzT7//PO0r6OSuEE+9SjmUGVflG0kJHFVljdfBOmwoX9h9bBq+6QK/+oXesUVVwBma5xvClE1EeDMM88ETFphlOT6hU3lNtL2VotPu3btvKIDKvOj36MgijlUGOSll14KGDfluHHjgLoyP3JR5qPzujM6ORxlQGgSNqiyu1wdduhalCtwMgolYfNJthI2Vb/doFC8sCVNlEXY7HPrd6UHqieuUNHAZcuW5TXd00lYh6MMiKzMqb0aF0t6kpOwxUU2+mCYc/juu+8CxkUld1s+9NRkOAnrcJQBee+tEyWJwtpsfusS1k6HTOczyyfZzGFlZWXt+r9HOLL84iSsw1EGJJWwDoejuHAS1uEoIdwX1uEoIdwX1uEoIdwX1uEoIdwX1uEoIdwX1uEoIf4fJLAKuRYxIFoAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 3750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"CQqfZXgw8YVY"},"source":["**Please tag the cell below on Gradescope while submitting.**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":265},"id":"PuoR9gF88YVY","executionInfo":{"status":"ok","timestamp":1615301207853,"user_tz":-60,"elapsed":1286,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"310c6988-a81e-48aa-a09c-1b99e296f1d8"},"source":["print(\"LSGAN Fianl image:\")\n","show_images(images[-1])\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["LSGAN Fianl image:\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"RfhB4K2y8YVY"},"source":["# Deeply Convolutional GANs\n","In the first part of the notebook, we implemented an almost direct copy of the original GAN network from Ian Goodfellow. However, this network architecture allows no real spatial reasoning. It is unable to reason about things like \"sharp edges\" in general because it lacks any convolutional layers. Thus, in this section, we will implement some of the ideas from [DCGAN](https://arxiv.org/abs/1511.06434), where we use convolutional networks \n","\n","#### Discriminator\n","We will use a discriminator inspired by the TensorFlow MNIST classification tutorial, which is able to get above 99% accuracy on the MNIST dataset fairly quickly. \n","* Reshape into image tensor (Use Unflatten!)\n","* Conv2D: 32 Filters, 5x5, Stride 1\n","* Leaky ReLU(alpha=0.01)\n","* Max Pool 2x2, Stride 2\n","* Conv2D: 64 Filters, 5x5, Stride 1\n","* Leaky ReLU(alpha=0.01)\n","* Max Pool 2x2, Stride 2\n","* Flatten\n","* Fully Connected with output size 4 x 4 x 64\n","* Leaky ReLU(alpha=0.01)\n","* Fully Connected with output size 1\n","\n","Implement `build_dc_classifier` in `cs231n/gan_pytorch.py`"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_GESo5Us8YVY","executionInfo":{"status":"ok","timestamp":1615305946307,"user_tz":-60,"elapsed":1103,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"4b7353b5-d9e5-4e25-f620-0f36ca73fd2d"},"source":["from cs231n.gan_pytorch import build_dc_classifier\n","\n","data = next(enumerate(loader_train))[-1][0].type(dtype)\n","b = build_dc_classifier(batch_size).type(dtype)\n","out = b(data)\n","print(out.size())"],"execution_count":null,"outputs":[{"output_type":"stream","text":["torch.Size([128, 1])\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"sH7yjIbP8YVY"},"source":["Check the number of parameters in your classifier as a sanity check:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H7raFWo68YVZ","executionInfo":{"status":"ok","timestamp":1615305948089,"user_tz":-60,"elapsed":717,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"3fb680fa-b511-4614-9558-9406a7b8954d"},"source":["def test_dc_classifer(true_count=1102721):\n"," model = build_dc_classifier(batch_size)\n"," cur_count = count_params(model)\n"," if cur_count != true_count:\n"," print('Incorrect number of parameters in generator. Check your achitecture.')\n"," else:\n"," print('Correct number of parameters in generator.')\n","\n","test_dc_classifer()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Correct number of parameters in generator.\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"dBAxG05-8YVZ"},"source":["#### Generator\n","For the generator, we will copy the architecture exactly from the [InfoGAN paper](https://arxiv.org/pdf/1606.03657.pdf). See Appendix C.1 MNIST. See the documentation for [tf.nn.conv2d_transpose](https://www.tensorflow.org/api_docs/python/tf/nn/conv2d_transpose). We are always \"training\" in GAN mode. \n","* Fully connected with output size 1024\n","* `ReLU`\n","* BatchNorm\n","* Fully connected with output size 7 x 7 x 128 \n","* ReLU\n","* BatchNorm\n","* Reshape into Image Tensor of shape 7, 7, 128\n","* Conv2D^T (Transpose): 64 filters of 4x4, stride 2, 'same' padding (use `padding=1`)\n","* `ReLU`\n","* BatchNorm\n","* Conv2D^T (Transpose): 1 filter of 4x4, stride 2, 'same' padding (use `padding=1`)\n","* `TanH`\n","* Should have a 28x28x1 image, reshape back into 784 vector\n","\n","Implement `build_dc_generator` in `cs231n/gan_pytorch.py`"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"cQhujzmQ8YVc","executionInfo":{"status":"ok","timestamp":1615307498038,"user_tz":-60,"elapsed":845,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"cdff3420-be7f-479a-f186-25c148ecf0b5"},"source":["from cs231n.gan_pytorch import build_dc_generator\n","\n","test_g_gan = build_dc_generator().type(dtype)\n","test_g_gan.apply(initialize_weights)\n","\n","fake_seed = torch.randn(batch_size, NOISE_DIM).type(dtype)\n","fake_images = test_g_gan.forward(fake_seed)\n","fake_images.size()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["torch.Size([128, 784])"]},"metadata":{"tags":[]},"execution_count":116}]},{"cell_type":"markdown","metadata":{"id":"Fpxbynen8YVd"},"source":["Check the number of parameters in your generator as a sanity check:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"s8eGxTD18YVd","executionInfo":{"status":"ok","timestamp":1615307467007,"user_tz":-60,"elapsed":715,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"f61a4349-4087-4bf6-ee85-644634aecf05"},"source":["def test_dc_generator(true_count=6580801):\n"," model = build_dc_generator(4)\n"," cur_count = count_params(model)\n"," if cur_count != true_count:\n"," print('Incorrect number of parameters in generator. Check your achitecture.')\n"," else:\n"," print('Correct number of parameters in generator.')\n","\n","test_dc_generator()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Correct number of parameters in generator.\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"scrolled":false,"colab":{"base_uri":"https://localhost:8080/"},"id":"QGKbn3yo8YVd","executionInfo":{"status":"ok","timestamp":1615309675054,"user_tz":-60,"elapsed":1884753,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"37c3fd80-ce1a-427f-9d32-ed4785f6d18e"},"source":["D_DC = build_dc_classifier(batch_size).type(dtype) \n","D_DC.apply(initialize_weights)\n","G_DC = build_dc_generator().type(dtype)\n","G_DC.apply(initialize_weights)\n","\n","D_DC_solver = get_optimizer(D_DC)\n","G_DC_solver = get_optimizer(G_DC)\n","\n","images = run_a_gan(D_DC, G_DC, D_DC_solver, G_DC_solver, discriminator_loss, generator_loss, loader_train, num_epochs=5)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0, D: 1.483, G:0.3735\n","Iter: 250, D: 1.197, G:1.004\n","Iter: 500, D: 1.113, G:0.9634\n","Iter: 750, D: 1.213, G:1.202\n","Iter: 1000, D: 1.238, G:0.9249\n","Iter: 1250, D: 1.252, G:0.9412\n","Iter: 1500, D: 1.116, G:1.029\n","Iter: 1750, D: 1.15, G:1.073\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"A4Tz4Sph8YVd"},"source":["Run the cell below to show generated images."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"ugcDCt3n8YVd","executionInfo":{"status":"ok","timestamp":1615310042040,"user_tz":-60,"elapsed":5294,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"e4bc0493-2bea-4819-e743-8bfcbb601745"},"source":["numIter = 0\n","for img in images:\n"," print(\"Iter: {}\".format(numIter))\n"," show_images(img)\n"," plt.show()\n"," numIter += 250\n"," print()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Iter: 0\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdedyWYxo//oNkYpAtu8FMmEH2hoxlCmVfx86IiCgMg8JEqZAKaTBJhcYuUSKkprEztuyMMZZkT5Hd8/vD731c93PVc3/nv9/3+b2u45+Hp/u57+s6z/M+PstxnOe1SENDQ1RRRRXNIxb9//oCqqiiiv89qi9sFVU0o6i+sFVU0Yyi+sJWUUUziuoLW0UVzSgWq/ePp5xySkNEBCf517/+dURELL744hER8Ytf/CK+//77iIhYccUVIyLiu+++i4iIkSNHRkTEMsssExERa6+9dkREbL755hERMXr06IiImDNnTpx44okREbHqqqtGRMR1110XERGvvvpqRER07NgxIiLWWmutiIhYbbXVIiKibdu2ERHxr3/9KyIiPvjgg/ybN954IyIiunTpEhERH3/8cUREnHnmmYvU3uOwYcMaIiJmzpwZERG/+tWvGr333XffHVtuuWXeb0REv379IiLiqquuioiIF198MSIi1ltvvYiIuOeeeyIiYq+99oqIiKFDh8aRRx6Z1xgR8c4770RExPbbbx8REW+++Wajz1hhhRUiIuKBBx6IiIiVVlopIiI+++yzePnllyMiYpNNNomIiJtvvjkiIv74xz9GRMSxxx6b93jdddc1RER8+umnERGx7bbbRkTEvffeGxERO+ywQ87nlVdeGRER++yzT0REtGrVKiIiZsyYERER6667bkREzJs3LyIiVl555YiIWHLJJXN+n3jiiYj4aV4jinkfMWJEo/vYcMMN828jivnZeeedY9lll42IiPfeey8iIm699daIiFhnnXUiIqJ///6N5vC8885riIj45S9/GRHFPDz99NM5psbMe8+ePTsiivXaoUOHiIh47rnnIiLivvvu81kREbHooovGhAkTIiJijTXWiNox/f3vfx8REf/5z38iIuKuu+6KiIh99903IiK+/fbbRp85Z86cOPjggyMiYvjw4Y0+31oaMWJEo3sUFcJWUUUziroI+7Of/SwiIj766KOIKDKFTLbddtvFHnvsERERSyyxREREXHPNNRERsc0220RExPjx4yMi4oQTToiInxAiIhK15s6dG9dee21EFMj0pz/9qdFrdtxxx4iIROI77rgjIiLGjBkTEREPPvhgRPyEeJ07d46IiEcffTQiioz+1FNPLfQeocjZZ58dEQUS7LDDDhERccopp8TDDz8cEREXXnhhREScf/75ERHxzDPPNBqf6dOnR0TESSedFBERF110UUT8hKobbbRRRERcdtllEVFk7quvvjo/J6JgHsbzxx9/jIiIww47LN/LPf3www8REfnenTp1WuD+5s+fHxEFkp977rmNxmzZZZeNf/zjHxHxExOIiNhqq60iIuJ3v/tdRERceumlERHRsmXLiIi44YYbIiJi1113jYiIAw44IE477bSIKFjHJZdckv8WEdG3b9+IiDj88MMjIuL000+PiIgNNtggIiJWX331iIjYeOONkyV9/fXXERFx7LHHRkTE+++/v8D91d63zzYvWMS55567wFhhZdjjhx9+GBGRjBGbNLePPfZYMozXXnstIgoEhdL3339/o/do06ZNRET8/e9/j4iI8847L39/0003RUTBKjGf9u3bL/QeRYWwVVTRjKIuwtIQdIhMBi0nTJiQWeWTTz6JiAIl586dGxFFRuvTp09EFNlHRn377bdTN+y///4RETFs2LCIiPjLX/4SEYVmOuOMMyKiyLT//ve/I6JAjwkTJqTOkN0wgKYyF3RxfdCFhmzdunW0bt06IiJ+/vOfR0SB2rLjxhtvHBGFPocQGMH111+f4/TII49ERMTnn38eEUUGh0Bdu3aNiIivvvqq0WceddRReR+uEWrst99+ERHRrVu3iCiQPqLwGx5//PGIiHj++ecjopivO+64IxEAgvAKrrjiiogo5uNvf/tbRBTa7Ygjjsj7w2BatGgRERGjRo2KiIhjjjkmIgqtyo8wNrfccktERLz77rsREXHwwQcnQrpWa+a3v/1tLCwgK1bEh+jVq1dEREyaNCnvn2Z0Xa+88kpEFGvcPBg3DOyee+6Jgw46KCIKf+PMM89sNB677757o7/BSC+++OKIiNhpp50i4qf5Gjx4cEQUDGTq1KkREfHCCy80Gr9yVAhbRRXNKBap10t85plnNkQU2Qjvpm3nzZuXrhtE9X5nnXVWRESsssoqERGpU//whz9E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lsy73oOmokLYKqpoRlEXYXXsyDIyLH36yCOPZCalM/UF69yxC4ULZyO7rH3++efnwWzcSpmM68eBplG8F9dO99TYsWOz3xM6q7M1dUQmZKMd6DUadr311kunlhPKWaQzoaY9l7KkDc9ff/11fg6WwEVV/8MiICkXl8tO+37//feJJNBS5ube14ZdIHS32iof4pBDDsmaL9RTE+VP0ORquOZJ3XHMmDHppNN55oGnAGWgjtovBmQ31a233ppsTHcWrWyNlQMbUnvXxcXzGDJkSI4ndsYN1n1EZ3KH+STmq3Xr1umO81zsc8XSoDM2g4la85jaRhttlPeLjfFtMICmou4XVhM+2mZCGUvjxo1Loa0hXCO+ViulIYsJdXYu0fTp05NOKdxbEOz98hOuUXWlEgP0z3/+M2mddjDWvqTT1D2ibigaejt48OA0TFyzxelL6MQMn60UQEqcdtppmXyMg+RjATNDymc7aY1zP1OnTk0KbOOFLxJDrza060kMKLIFsuGGG6ZMICc0pvtSSQjuG+VjhC2zzDLZxGHB+7L7GwnKF4RccH/oZKtWrfJLIiG61nJJTjCQNGlYT6jzpZdemiU2Zp8x1FxhfXgvCU0iHTJkSM6npASsvIZZBmAAie+P863atm2b46KM571QZSBRjooSV1FFM4q6CIvaye4yMSq0++67Jwo6URCiMWhkdEircVw714orrpgthrK0v0WnfR666vgZGRdVWW655RJ1ZHon/zFZyqF0wHJHX5Q/Zs+enWjn+mRHSK90IVtjGcyZ0aNHJ3oxQlBUCINul58yz9ippX0yurICpqGkouwTUSAaduSESfRt1qxZSUEdNWM83Yf79b5QACV///33U3J4rZZVssU1mzvXUX720QorrJDlJBQSJUafy4GduNfaclrET+uW7EJ1NbeQTuZf+2D5YIMBAwakCcaQUvoxHgw19249KDNp4ll88cWzVOi15CdjramoELaKKppR1EVYOkvmlnmhxU033ZS6snxci6zv97IxE0ijQq0OhgK0IpSDlgQ6rUg3027t27fPTE6LMBsYNeWAcBobtDQq7wwePDiRRhmFNoEqro/2gxqu/x//+EfetxIKraplsvykcna/ZgXad/LkyanRoLX5KZesIopNDdDexg3tnqNGjUqDiGmmiQDiagxQxnJftObcuXPz+oyF8TMWPsPc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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dZ7gURdqG7zmBYJbVFRfFAJgjhsWIoq45gDnnHDBnxbBrzhjRS8W8ZldFzFlEzKKY0VVXdAXxkyRwznw/zj5dPTXdPd3TPYmrnj9zzkxPd1VXTz1vfnP5fB4HB4fGQFOtB+Dg4BAf7gfr4NBAcD9YB4cGgvvBOjg0ENwP1sGhgdAS9WGvXr3yAN9//z0A7e3tBa+tra3MnDmz4DvlWJ1zuRwA88wzj3degMmTJxd8rnM3NXXsM7Nnzy55TqFTp04AzJgxo+CDueeeOw8wbdq0xONOAo3HHpfupcbX1tZW8Ln9fy6Xo6WlpeAznUPvz5o1y7vIXHPNlQf4448/Cq6vexm0XmFraI89zlprrezvht2PpqYm717odcEFFwSge/fuALz66qsFX+rRo0ceYMqUKQDMmjULKLw/Gqt9XV3DHudCCy0EQLdu3YCO34CeR51X59R91/Oo9Yi6xzZ0/a5du/K/ueQCjyt5JgcHh7pBLurXv9RSS+UBvvvuO6B456jYoCwWyBL5fL5g5+ratWseYMaMGZlfq1bwz9Fm2CS7vo1yGDbuOf1rLrYRxGCdO3cG4LfffisYSJcuXfJgGM5mUz23QXNobm4u+F/H6loay7Rp0wrOUynoem1tbY5hHRwaHZE67E8//QSYXcne+cDsSEG7WbmoZvSVrYPPabDXR4hzj2328+nImY0viPHtsdnMaUPjsT+Pc+6w+yNIh/3jjz8qyrBxpUrHsA4ODYRIhpU1TDucGFZyf1tbWyqdKCkqodvO6bHUYZbLOPfStoKGMVkW8DNc2DMVxnBhx4exZtQ59Iz36dMHgJtvvhmASy+9lIcffhgottynQZIxgmNYB4eGQqSVuLW1NQ/FfqdqQbtPly5dCv5P4zO1rcS5XG6Oo1j/HJubm/P/ew//a70hiGnCGLO9vT31GupcvXr1AowkcuyxxwKw3377ATD//PMXjefLL78EYJlllkl62djjsucoRIrEtV7cvn37AvDss88C8Le//Q2Ad955B8jWrVDrue6www4ALLLIIgDccccdAEyfPj3VeetlfmHQZqwfTJJgmHIgdW611VYDYNiwYQD8+uuvgHF//f777wDMPffcQIdaoOtLXNZayTibBmGBJDacSOzg0ECIFIltcUqoVuDEK6+8AsBKK60EmF3x22+/LfuctqjR1NRUMJlqM5GMHF999RUAL774IgAHHXQQUJ6bLEgkrobTPwkUhqrQwN9++w2INuiEBRXEEYm1/mJYsaNEYjH9Rx99BBhReP/99wdg0KBBLLXUUgXn+OWXXwBYbrnlAJg4cWKpYZQcnxAmEjuGdXBoINQlw+66664A3HLLLQDcdNNNAJx44omJz2UHdc+ePbuujE5rrrkmAOussw4AN9xwAxCty5WCn2FbWloKGLZWuqxcQyussAIAu+22GwBXXXUVAD///HPJc5SSkqLmFleXF3uKYXXfZs+ezSOPPALAJptsUnCua665BoDjjz8+1jWiUMro5BjWwaGBEGklti1XldaDevbsCRiWkfXtggsuKPucdqBAvWDhhRcG4OqrrwbM7pylU94PO8hdSMPkfr1Q1lSlwi2wwAIATJo0CTCpcSeffDJgXCL33HMPEI9h0yAu62lO8803H1CY+CJvRf/+/QGT/nnZZZclukaacTqGdXBoIMTyw1aaWZXKdN111wHGYifdQDtZOajWHOJCTPTvf/8boCgZPWvYkoWss0suuSTQIcVIkrHvkcYmdlx66aUBOO+88wD485//DMDiiy/uMamCWt566y3ASEdiUOmGkjA23XRTAMaOHZtilumhoglLLLEEYKzWQktLC5988gkAd999NwD/+Mc/APjxxx+rNUzHsA4OjYRIhi2HlaQr+XxmBe8HpUr16NEDgL/85S+AKUnzxBNPFB1bLmod6SOm22abbQBzPz788EMAvv7664pc115DpROK4f/4448iH6VSym699VbARPbofR2vKKyff/7ZC9d75plnALjtttsA+L//+z/ASBYqvfKnP/0poxlmY5XV+CRN7LPPPgBsueWWQIevVfM94YQTgOLCDtWAY1gHhwZCJMMmgSJWRo0aBcDyyy8PGP3z1VdfBczOpZhNMCwsneill14CDNPWmh0F7cabb745AGuvvXbB5yNGjADg448/BgrjgGU9veiiiwAT2bTZZpsBJpY1C7bwww76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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1000\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dd7gU1f3GP3urIJKIKBoNiooVRSUqiQW7iQVrLDESg92ALVF/gt3EqMSSBKxEjSZGsbfYWzT2jsYUQaxELBElgMi9+/tj886ZPTuzM7szs3cHz/s8PJdtM+fMmTnvt38LxWIRBweHfKClpwfg4OAQH+6BdXDIEdwD6+CQI7gH1sEhR3APrINDjtBW7cOOjo4iwJdffglAoVAAQJZlva4G+zdBVmn7OHptvx9m0W5paSn7C9Dd3V32nba20lTnzZtXdtD29vYiQFdXV6xzpYW4c6vlGJrjggULvA+0hgsXLgw9Tth66nq2trbiP4Y91kKhELk2+txelzjQvPr16wfABx98UDbQvn37FgG++OKLst9pTQuFgnfesPPb92k9sO9De+6aR3t7O/PmzQOgo6MDgCWXXBKAnXbaCYCLL7448OFyDOvgkCMUqu0ora2tRai+K4X9Po0dKy78zBB2Ph9LFKz3q84xT9CO3tXVVfC9V4TK66Lv+tkniDn9sD9vb28HSiwhxtCx0pAg7HF0dnYClVJSZ2dnmRQRNNckDF/rOPU3zrn0XVuK+Pe//+0Y1sEh70j0wBaLRQqFQuC/YrHYEHbVOKLO193dHbjjabzVEOc7zYCga6Cxt7S00NLSQmtrK62trXR2dtLZ2UlHR4f3nj1P/3UNurZtbW20tbUxduxY+vXrR79+/SrWP437QMdYsGABCxYsqPjcXttq8wiDrk8aax12rwXBPt9nn33GZ599Fj7ORCNzcHBoKKpaieMgL7HIYeOMM/48z9G2zms3l+W/paUlVIeNwumnnw7AkUceyYsvvgjAAw88AFRa3dNAGGvZ4w/Sn6PmFuYBqeWa1HOf6DfVrPh+OIZ1cMgR6mLYRlqAs0aYZbTRc0vTqhrn+GKlrq6ums+lY+2///5AyQL/97//3TteNchaLwuzzSxxmcYPmxXruZa6HhpftXno+Laf1fZb9+nTB4CPP/44xiwo+20YYj2w9oVI+2bSIGXaXmyxxQAjts2dOzfV8zUafsOCPddevXoBsMEGGwAwf/58AP76178CtV3rIGNJmBPf736pdT0POOAAAJZddlmgtD4fffRR1TEpQGDppZcGYMMNNwRgpZVWAuDmm28G4K233go9b5gxyB8wA8mCULQ+tvjd0tLC4MGDAbj66qsBmDNnDmBcMQMHDgSgb9++Zce45557ADjooIMAmDVrVsVYdf6oDc+JxA4OOUJVhq3VkV4N2gX79+8PwFlnnQXAnnvuyRJLLAGY0DKZ7l977TUAttpqq7LPG41aJQvN9ZRTTgFg7NixHpNqbpIeZs6cCcDyyy8PGCbabLPNAHjppZdqHme1sQcFNkTNT5+LHc8+++yyzz/99NMKUVdMofe1xuuttx4A3//+9wH473//C8D111/vfd8ehy1yho1P56xHKvn6178OwKqrrgrAJ598AkDv3r2B0j14+OGHA/CNb3wDMIEc/iAU/2v93WGHHQB4+umnARg0aFDFODRm3RdhcAzr4JAj1MSwUe8HQTvu6NGjATj//PMBo6d2dXVVyO3audZff33AsI1cBmkiTnJC3PmKRa699loAtt9+e++ze++9FzC77HXXXQcYfeeGG24AjE63++67A7UxbDXYrg//3zBjjfTsTTfdFICTTjoJMDqbpIUpU6aEMrn+Khhg6NChAAwZMgSAJ598EoDPP//c+37Y9Y7r1okDjVf34V577QXAHnvsARh2/OY3v+mdQ2wr3fWdd94BzHV44YUXALOm+u2aa64JwAcffBB7fGFwDOvgkCNUZdg4OmuYw1k71H777QfAr3/9a8DoaNpRx48fzzXXXAMY/eHoo48GYJdddgHgwAMPBODBBx8MHUe9SCMYXHraUUcdBRhGkh60ySabMG3atKrHmDx5MgBnnnkmEKznRCFoLnpP6xHERvb1FOtsscUWgFkPWbKlZ2lOZ511lsegYWuj30hakkVVFld5AupZ23rWUGu2zjrrAOY+3WijjYBKvfTdd9/1LOHPPfdc2Rykl99xxx0APPbYY4CxuXzta18rO1cSOIZ1cMgRagqcqLb7aSeSzip2PPXUUwFjDT3iiCMA45vyH1Phbeeccw4AK6ywAgA33XRTLcOsCWn4lqWzfO973wPgX//6F1BiVoi2/IHZlaUP/e1vf6t7PH5EJW4HQTqqWGfjjTcGYPHFFwdKVmEwOu3HH38cef3029VWW63sfb/uGoU0JSvZScaMGQMYPVPQeN577z2gtD4PP/wwYNZGUoGCPd54442y14LmuM8++wAla7ski1rhGNbBIUdILfhfMv8JJ5wAGGYVY/zkJz8BgplV0K4nZn333XcBeOaZZ0J/k9b464H0IOkwivyRjzkOswqau66XSob0RCEARSFpXvIhC//+978BIxVUY0dZmiVt6FhKeNffRs1T59lyyy0B4w+WZCi989FHHwVgwoQJADz77LPeZ7Wsq//Y/mfAMayDw1cANTFs0C5ol7jwB4SDCXy+6qqrKn5rY+WVVwZK0U9gdEHpv0mQRQK65rj55psDRnepJfZZkskqq6wCGLZae+21gdqYJ+kcdQ4xglhf70ufkyVbumwQNC9ZmseNGwcYyeHDDz8EYMUVVyw7Z9bRbLpGkgTltVAswK233goYi78/cL/eJAklRiy33HIAHHfccXWNHRzDOjjkCjUxbJCuYu868j1KzlekThwLs5h1rbXWAuCuu+4qO1YSZKn/KqJFsbZbb701YKKZqp1bfj/pSvKBvv7665G/DRtPUii+Vzq5JIdzzz0XMP7wsJI7UOkt0DzFaEo9a0RxND8UYfXtb38bMJKALLli1rDsoziQRXzSpEmAiV576qmnAKO31wPHsA4OOUIsho2zc4sFxRQXXHBB2ed2pE3Q8RUN9atf/arsmM0K6T3yLYo1pH9Ww4ABAwATdyxmVYaSIp96Aquvvjpg2FK6qiLSqunodgyufLhiVkHxuNLrxMhZr7kybuxEdVm8Z8+eXfMxNfaRI0cCRj/WdRRsy389SOzWEfTQKUD/5ZdfBoxrQIaK0047DQhemGpGjGroqSoR2nwmTpwIwLrrrguYB1fB4nPnzvUWS4nactQrSEE38A9+8APAhP1VCymMg3quzXbbbVf2WokJdu3hIEiMPuywwwAzT3scEhu1cel1VsUKZBTVZmqncJ544olAPNFcD7vCR3/+858DMGLECMDM9e233wbMnHWfDB06lOeff76ueTiR2MEhR6gp+N9G0K4t5V3mcQWMH3vssYBJG7v00kuBUvC3DFXaucRMEpcU8hW2+/V0bSkFg5x33nkAHHLIIYBJv/r4448994XmqDGLtSQ+yd0hpO2OisO4YiOxu6SlauwjqWLHHXcE8Mqp6DwyZMmApdePP/44YIyVWUEqhxhcDKtADhmGpk+fXvY9PyT67rvvvoAJhJBL7v333wfg1VdfBcx9oWPKkDhnzpy6pULHsA4OOUKsBPawintB0Ge/+93vAKPMX3jhhYAp9yKj1Nlnn+055KXwa9f72c9+BhiGbQTsIlxxdkDtxnIFqNyIWKdv377eju6vVggmSd9fmMuPtKWHOMdTcLsCQpQWFsYKiy++uCdB7bbbboC5Fv/5z38AE4SheSuhY8qUKWXvZwUxqO4trYNccRq3wi5feeUVwEgEHR0dnitIwUEqFaP7V8EhKlJgdylQgb0vv/yy7nV1DOvgkCPE0mGT7PL//Oc/Adh5550BY/ree++9gZLOJv3liSeeAIy1TeU6FIjw05/+NPF4olCtVEwYxKSy7Eq3WWONNYASuyj4XVZKlUZppPQQBa23JB2FCer6y+L75ptvln1/zTXX9Kz+jzzySNlnSt6WlVzzVYKErbNngUKhwDbbbAMYaUF2EtkQtt12W8Do1nIxLrXUUkDJHaQ1lItKIYdKB1XCgFg5rABEnCCiMDiGdXDIERpW+V86yi233FL2Nwj3338/AJdddhlgfHrSL6UvNbJ/SxBkTZUeKmlCoXvC0KFDveR2lVKRvpM16ukVI7uDyrnICnrjjTcCpV46YKyhCxcu9Cyg+q7YSKmS0udkSQ/T2euB1iEsWb9Pnz4MGzYMMMUG7KQVWZElEUjXlbV7yJAh3nt2oQXprHbiej3XPuo7jmEdHHKEuhg2a7+ndkilIf3oRz8CjG44Y8YMoDL8sVHQjik9aOrUqYCxiGr88tutsMIKFdEvskI2GnbvFr+UIr+rInjEjnpfbTSU7qjfDho0iPHjxwMmcUNWYbGO/PIPPfRQmtMBjA1BMQB22da5c+d6vlAbsmaLJS+//PKyccviP23aNM+vqqLnkqii+gGl+bw4hnVwyBFSiyXOAmIsxSfLD6ZY19/+9rdAvI5nYW0e6oGOJYui4oDtNhhimWHDhnm6kcrdNCqxIcyHHrTr67PbbrsNMLHRKhkjHW7XXXcFTPzvqFGjvBhiu+nWFVdcARjpKIs0OunH9pz851IxBJt9VdxbzC/GVdKCrPpdXV2eVVhejUalBPrhGNbBIUdIXEi8Efjzn/8MmB1NSca19BJNYzeM2xJQUMmb/fbbz2vjoSLUjb6WtVgoxTKygsparMgn+Sz9/VD1W1nB9V3FIWcJ+YurrXFYmxexptp7KlVSDCuf86uvvupZwqUr2wUIG8G4jmEdHHKEQrWdt6WlpQjh/qR6mgHXAu1cYlTFg/7yl78EjI5bS+GuYrFYJjYUCoXYE4jrT5N1WHmkO+ywgxdvPHz4cMDs7FnAP8da5hcF6eSSFqTDbrDBBp6+qzIyScqgCLa+qb8LFy6seQ11L1100UWA8Z2rSZtK6sryLyi2OOhYgn6j+0I6tSSxWuLSNcfu7u7AkCfHsA4OOUJN7SZtpi0UChW7TVjzJRu+nST0/Nq5lGeonFKhWUvIyHenzKT29nYvA6aZYodrhSQZ/VUJ0JkzZ3L77bcD9UefKeKomvU6iTSnY4wdOxaotM+IFeOUiLHnqCwc+bh1X9Yz3qjfJAqc8PcWtbtO2w56vVYImDrVzZw50zOt2w+vxEjdDCrnoYvaaMNNXJFY9YzkBlm4cKHXjb0WQ1mzw981POla+EnADjEMS/MUajH6ZLHJ65ha20zVxMyO7ODgkDpSD5ywy4v4DAWAMYkrNK+7uzuys7YMGBIr7TSlLIqw+XfzsOPb0oVeK6FZ3c6WWmopz6jhEAxblaoHkuLsIgTV7rE00QiJzzGsg0OOUJNbp+LHPhbSziiGVZKvwvd6IowrCLZbR3O0EaRTRe2gNhNrpw/Sy7JEVm6dMCRx79lSSrXO8D6jTtkatrW1Ff2f9+/fHzDGoE8//bRp7r8oOLeOg8MihKo6rAIAwhJzW1tbvV1N3/WzSqPgP1eYnhk2Ho1bpvqg8dsO8LDz67e6Xv5kgLhurjT61foRxFxJz2NLUQsWLKiQIKLCWm1m9Vfit5PL9R2l0dlYZpllAFOUXcXRlHDx5JNPep6INKz0Ufd22D1XrY+Q5qhSOmFwDOvgkCNU1WEdHByaC45hHRxyhKo6bK9evYpQWRC5lnKNUSGIQRZGWycUbF9dUJSVHXGl3+hYs2fPLlMs+vTpUwRjUaw2tyhrebXPUy0TYul9duf0uXPnenOUBTXrQt31wtbzqt0P0pnnzZtX9qPevXsXoTIJpBbLsH0v6VoqMq9YLFbcG7r+ihNQxFMSi7TO39XV5azEDg55R1Udtr29vWx3bjZ9N8gaF1YSRRbHBQsWlH2ho6Oj6hz9O36zzt9OpPbvzq2trUVoHj94Evis8AXr/bJ4gSTrZN9Tfq+BLaXonpLlOU0pxo4XEBzDOjjkCDWl1zUbgnbUMN9XvbtfHB9vT12nOL7VRYFZhbDrnKYEZB/Df9/Y17In1t0xrINDjlCVYdNIHG40onZhG7buauuD/jjguMf8KqIR0kYjr3ccD4jtxUhThw6DY1gHhxwh1zpsGohiz2b1XzYT2traPL9lGsXXbIh1dI4kxxDi3tv+nGtZhRWzrMoiOrYqomRxDYSmrvyfJsJEjaBKkP7XaZ07bqVFBbirImQzQmNV0P1yyy3n3axZImzztINksiCalpYWrx7zb37zG8AE26hvkOp1ZfnAOpHYwSFHSI1h7QR2hXSp8qFKw9h9UJqlfIfNwP5SJfUaExRKt+GGG/L8888DZlcW1KX9uuuuA0xnuB122KGuc2aJ5ZdfHoCrr74aKNUjhlJV/DPOOAMwXeDUASAJwoJgor4XFFCT1CDU0tLCnnvuCcDAgQPLxqNeT5MmTarr2H64/rAODosQUmNYfy9UgO9+97sAbL311oCpYbvRRhsBJb0HSqVMxSqCOomp89m0adPSGmZsBJWIEaKSADQ3zb1///5ejxnbJaASrurJ2ohSmXGhsarPjDoZqFOdPl9ttdU46KCDANMN4P777weMPlePFGVfg6gCbWH2h7QCKiQ1+pPtwXSsb4TdwTGsg0OOUDX43y7gFWQal86qwlf77rsvgFc4W2U6wqy0XV1dXlqUercI6nCtCvpBfU786Ozs9HbTsFIgdtpSVBE2P8L0IO24+++/PwDjxo0DTMe0k08+2ZMwfOcFTElUdQvYfffdAbj77rsDx18NQQW8khRhk6Sg8rJ9+/YFDLPMmDEDgDFjxnid5e1C3er+loadIiz4X0kqYZJQGgzbt29f3nnnHcD0FpJdZsSIEYDp1JcSo7vgfweHvKMmHTZo59Bu++GHHwJGnpfuIoa1vz9r1iygpJ+KSdXZTQ5p7fBHHHEEAKeddhoQvlt3d3dXWAijdruwgP5aGEEdytVPVcc4+eSTASrYFYw0oaJb6uot/b0nIT30hRdeAMwaqmStbAq77LILUJrfpptuChhp6IknngAMCydBVCE9+3tZFJQ//fTTveuie/i+++4DTHf3RsAxrINDjpDYSmyH8Enfue222wCjkymC56677gIMW86aNcuzOsq/p11NLLTeeusB0ayXRqOjWnZn6aGyiMvveuGFFwKGNYOg6yIbgHS9JHNIyiyaz9lnnw2UWoyAWVu1HpF+LcYZPnw4J5xwQtl7Ct+79957gcoSPPUgqqVLWNOsNAqd77HHHt7/P/30U8BENqmxm6SJOXPmANmEtTqGdXDIEVKPJZbuOnnyZAAvwke7jyJhFPHU2dnpFX7WTmXrCnfeeWfaw0wFslp+5zvfAQxL/vrXvwaqs8nRRx8NGFaTz7knE85l6d9rr72AyhIol156KWDGvPrqqwOw0047MXjwYMCs3UorrQQYv/wdd9wBmPtBkphailYr8B1l7a23OF4cSH/v27evZ4tQUfLtt98egJVXXhmAq666CoAHH3wQcAzr4PCVR2bZOtOnTwcMs8pnpd1OOu2uu+7KscceC5jd2W5RKV9ls0FzkJVYDCtrahAUj7v++usD5noo4qknoOu99NJLA8bfLd+wpCHp6NKzNd/p06d7zavtkqTbbLMNAFtssQVgJAid4+CDDwbgkUceAZKxUhbtYRQv7U+vkyQoCUsRTq+//jqQTdNowTGsg0OOkBnDSpcNKw2pbJQLLrjAswZr9xWzapeeOHEiYPxeWe5gtUCsIcng8ssvB4LHJ51OTKLdWRZFG1H5u35U03vj6HH6TAyhea299toAfPTRR4BhVDve+bXXXvN01LFjxwImZlwShdZS41EWl/4m0d3D/LRp5McqNqCjoyO0YbR0/0Yg9QdWN68MEnbHLgVDTJgwASgp8xK5FPqlG143uX6jgAqJ22nA7u5WS+DEkUceWfZbubJsLL300l4ggeYi6GHQQ/KXv/wFMOmJdle4Dz/80Ls+tdyIcR5cnUMi3uOPPx7r2N3d3Tz33HMAHHDAAQCsuOKKgAkmkdqgh33q1KmAcRUleahso1SaorGMaR0dHd7xdf1lhHr22WeByg4ZWcCJxA4OOULqCeybbbYZAL///e8BE/wgM75S6fT+/PnzPbeNSm8ozG38+PEAnkFDjCaXSBqQiC7YBq/u7u7Q3V/GBwUF2L1dFCx//PHHewYqHVfnldtj8803B4zYKaOMnPQ69sKFC+ti1ka5i5RmucoqqwDw1FNPlX0uKeqaa64Bqhvo6kUac9X9vOWWW3rvaS1sdU9M24jUSMewDg45QmoMK8bYe++9AeMiEIYNGwYY/UgO9BtvvNFjY+kATz75JGDKp+y3335AyUEPeG6gNHZSW0e0368GOcqPO+44wLCJ2FEhlbNmzfKCDnbbbTfAONsleRxzzDFAOh3CewJaf10LGWIkMahkjFx0KtpWj7TQCCi0UoXmisWid39KcpLUYydHZAnHsA4OOUJqDKvdR/qlGFWB/UpBOvzww4FyJ3NYPxMlgCsxfMCAAUC6O61tYaxlxz/33HMB2GSTTQDjBtGOK3YZNWqUl344cuRIwDCp0tGyYlbbCp6FfvX1r3+dm2++GTDr/uKLLwJm/eW+UumYLCWJavdH3PnLtuB3MYp17ZBNSYS2DaMeuMr/Dg6LEFL3w8qSts4665ROYFlha9lZ11xzTaCs7ymQLkskOZbCLcWS1XydKiviLz4HMHv27LrPHwfSxbNM7j7wwAM9ZrUT82UVVmBFI5O9hWr9kYK+C8aP7L9/7eJrssP8+c9/Lns/CVyZUweHRQiZt+pIoquoTKh2naBSK2kjCRNV+41S8BTBdP311wPZW4Wz6GmrYyg5YNSoUd5nthSkUExFTWURDRSmpyeZo/RVf3ij5iZr8Pnnnw+YQgWNKE3rGNbBIUfIRTMs7Vzyc2axk2W9Oyp6S3GoJ510UqbnE8IYth4ogF8pZz/96U+BUsy3dFf5Wy+55BIApkyZAhhWSjv+GaI7o9dzTrGpX4fVceQ71/3YyA6HjmEdHHKEpmZY6RHa2VRCNU02bISfEow/Ugwr62maiMOeSean6CVlWsmS2t7e7jGo4r3ll43SWYNYtNZStUIaa6dzqii42Lujo8Pzs6p8bdYW/iA4hnVwyBGakmHl71L+q16r+FU9CGMfW/+pt1N3FPbZZx/AFFzPInsmaz3cbikq3/IHH3zgxVXHZVYbflbVeeotBp8EWhfppf6u78rSkf81DUt7rcdwDOvgkCM0JcOq0oRdOuaVV15J/VxhDJvmrr3YYot5Ob0qPp0EWYyxFiimWyx04okneg2p48LWU/2tJO2IonqR5DpJuvND/lZFqSVBVGnWMDTlA6uuALaJXTd9HMTtx2Iji4egT58+njj16KOPJj5evYtdL/QwqQ6XUiQvuugiAG666aa6j21XWSwUCt61sku+xJ1fkuugcz7zzDMAXHnllQCsu+66HHjggUA26kzQxhUEJxI7OOQINfWHbRTU00WJ4HIZKHBeO3AQ7A7n9vsLFiwoWO9nPseOjg7WWmstwIhV7777LpDubu1Lkij43itCOu6cU089FTApcnaX9XrGaieHdHd3exKVzTr67rx58wJ7/IYVYUsydxmdOjs7vVJA9YaT+iWFsDFprnYPXO/zus7s4ODQI6jKsGnszkmgEitK1ZL+F6cOr+0a6EmGDRpHFoEaQR3Y7Q7z9XTnUwE59UCS4SxJ4oKOHZQ6GabPiWHnz58fyLBCtXDMqFDNWjrgRV1Le8399YzD0h59dhvHsA4OeUdVK7Hkd3snDQoj0+5h75xyoNdiotdv//73vwPGQR/H+qfvaDfWuFTg3EaUC6FQKESeN4wt/b+z2SLMApqkE5utD4KZn13QPejY9rVTsTGFU9p6d9B1sedlV8kX7JBQ/1j0mT9oAUyXABt2zx97XC0tLRXlXnVencO+X3TP23+Djh+2lvY10Ln8pXPtdVX6ZRgcwzo45AhVdVgHB4fmgmNYB4ccoaoO27dv3yKYVhRBRdBsvcdnjS07lh3R4tdTwnRknTfKoiodwW/Jk64ivUEWzjfffLNMAVlsscWKkE6Jyp6Gru0XX3zhzXGJJZYoglkPfwsSG2F6pa1/p9EVztbv/Lqc/m/rlyof+/bbb5etYWtra9E/rkYjid/XvrZaQ9vX7H2/1sE5ODj0HKrqsL169SrbnbPawRqRRO6z/jXV7pwFisWiN8d+/foVwZSfbRabhVhJCR6S3vzW+jD2+e9//1s10inPCIpWK/u8oaNxcHBIhKo6rJg1zIeY1o4WxW62XysOG2rMUd9dlJg1CCp23qzQPeb3S9prp8/CIqsWBWYVXCFxB4dFCFUZ1rZ+yVqniJJGoRZGt+NQw9pJflXQrO0rw9bUL83Za5ZFEfJmg2NYB4dFCFUZ1o53DCqn0mz6Q5S+49DcSKMotx2/3Gz3aBJUfWBtcdIOVG5vb/e6o8u4oU5eCkSoRRTt6VpFPQndZApwHzFiBAAvvPACAO+//35dx/0qXtNF8UEVnEjs4JAj1FSEzd6xuru7vXIuhx12GAB33nmn95kfCjNTeJk60RWLRS9B+ve//z1gSsRss802QDribU/vtnYI58orrwzglY456qijABNCqes1ZswYoH6GrWXeqhQYtytBs7J3FkUBwKzJ+uuvD8ANN9wAmHrZxx9/PAB/+ctfgGx67jiGdXDIERIXYRNj/N///R8AP//5z6t+b/jw4YApsDZgwADGjx8PwLbbblv2XbH1eeedB5heo0ngD9uDbEvEaHfeZJNNGDduHABDhw4FTG9Vucjs5ANJGa+99hpgdvU4NgH/HOPMT13o1DNHRdfmzJkDmAICkgLUxWCZZZYBSknXuo8uuOACwHRal9SUhlstqATO/95PbQ21Lquuuipg7skxY8Z4/ZHCAolULFCJ/upYWE9fY/s+FRzDOjjkCKmVObWLngn28bWDaRd/6623vN139dVXB0zvEkFpdiqrqY7fdnnNOLpLIxhW12Dw4MEAXHbZZd5uG9Y3xk57k7706quvAqYgXa1zjJrf1KlTGTJkiP17gIqynuoL9MADDwDm+n/++f+zDMcAABatSURBVOfsuOOOAKyxxhqAKfquY2y//fYAPP3000BlSGIcZMmwugZPPPEEYEq1+EsI2ddh2rRpgGFUSUVbbLEFAB999BFgrkkt5WAdwzo4LAKoyrBtbW1FiGft0o60ySabAKZLt1odqIC24A9Ns5OZtSPdddddALz99tuAScWSxVQ6xR/+8AcAJk6cGDnOLBhWrCmdbp111gHMrj169GhvTvqudFf91e6tOepaSI/fc889Nf7I8fjn2Lt37yJU7u6yCOva+qH1lg6rtXv88ccBY7lWt3X/eA8++GDArIXmK/1uxowZAOy2225Abb2GsmBYSXoPPvggYO49rYf6OU2ZMoXf/e53QGVCheaufrlPPvkkYMrDfuc73wHgpZdeij0ux7AODosAUiskLv+hrIJXXHEFALfccgtgdJkkkPX46quvBmCzzTYDjL43aNCgSD0hC4aVFXW77bYDYIUVVgAMA3V3d7PrrrsCxmL43nvvAcaSuPbaawNGx1eHNEWS3X333bHHE0eH9Us1KmdqS0FJoDXZfffdAdOZXZKX+sj+6Ec/AmrztaexhmLFO+64AzDeC7HnmWeeCcC1114LlHTusDFKilB02u233w6YhPuNN94YcAzr4PCVQ6zg/zgYOHAggOdTFaOmmRKlHW7//fcH8HQKMe0SSyxRV2OmeiGWWmWVVQCjq0j3k0X03Xff5Z577in7TBZxRTqJpXXNf/GLXwB4v0sbfut0mswqSDeXDn766acDlaVheipKSpLMt7/9bcCw5B577AHE67JuewPUflOSoPTzqVOnpjZux7AODjlC4obO0gWkg/3xj38Esi3cJivmww8/DMDIkSOB0q4Y1Dk7K/jaHwJGf5f/bfbs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FvNil3XPyHYgNrShcWrtp02b5umd6vX75ptvAvD222+XfVdSxaGHHgqYtqO6By6++OIKJtV1iLoPHMM6OOQIif2wNnMpounGG28EjD9rt912A8zuox2lV69eXt6rshyStCaMGmfcZli15NhGYfjw4V4BcUViqfmzImzSjItOKx9W10C+Uq2tWEDRQLW0XZQuu+2225YdqxbYfthevXqVraGY379ukgAlzal069prrw0YSeCNN94A4LHHHgOMfzQNCchvA/AX+QuCa+js4LAIoOEVJ6RnSJcrFose6yZpJhQXtebDJikk7j+GWEjZKspISjM+Vki74oSgtVPxbRVKX2KJJSqievRdRZxJn5NkkQT2GnZ0dBTBsGCzFHyrB2GSoPd5T5eISSNBvBb0VPJzI5HVAxuGoASJLCs52mvY3t5e9sA2a03kWuAS2B0cFgEkcuu0trYmVsazZtWovjNhwQBpGp3SQLONx49isZiK2uA/Xr2/zRvCCieEwTGsg0OOUJVho9gnq52+1uP7d6U4jFnt/aBz2t/Ra7kCZGjJWG+r63e1XMtak/zTRBrnyPq+TBMaqwKM4pYhcgzr4JAjVGVYOZvt3p/+nczWEcOshHFKoyh8TZZjJRTY39XndtX0tra2ijBCnc/uwBZ3jq2trRXhijqfjqnAcoVf2kHh3d3d3nsKOlfgiF3xPbI/aEtLRWkYISgZISz0Ueft6OjwXGwar66F5q11SFJQvZ6evlHHEBSaaIeK6hwtLS0V9121It/+71XTKe1rW801aB9T97pd0CEqcd4xrINDjlDVD+vg4NBccAzr4JAjuAfWwSFHcA+sg0OO4B5YB4ccwT2wDg45gntgHRxyhP8Hqx3pMYdgXh8AAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1250\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1500\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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sVqmkxs8/5FHHgmE6/PAAw8AYVcfOXJk9tnZZ58NzLccA9x7770AHHXUUUDoF+s1qEfny6s/7AorrACEechC2h30qVbCsssuW/RbfeetgHqn94+v9d+/8847LLroogAstthiQLhnZMu4oJreDe+5cePGcfLJJwMDvRjGSX/zm98E4MILLywaTyWUKxpYDolhExK6CDWl1/k3TrydM2cON998MwB33303EFjOXSdm5XrikV9++WUg7IKyjeyj3ueOWolh8+xOLmscd9xxQLBiOz5Z8qc//Skwf1f3O3Gs6vrrrw/A4YcfDsD5558PhEOmxaMAABXDSURBVMyketCsnqtEYLzvQgstBITralyw7UArjeGf//xn0TG1WbQCXnfP7XgLrbj6fU1x06Kvnm5Ek43WvKe85z/4wQ9y1113AbDhhhsCMHHiRGBg3LwNx/fbb7+iccjafX19A9i31rVLDJuQ0EWoK4G91C7g7hbrWrKkO5W7kLuMLDVhwoQs08M4VM8jw2qlnDBhQtExzDttF5yTPjx9jFpPHZc7sO8vtNBCRU2nC/+qZ6277roAnHLKKUWftwNx1M+kSZOAsA76kV2HWrDiiisWHfv222/PZ7AlUMt9KpTKrrnmmqL3jXGuB+q3xhI7Z9nayDdjjLUJVLJLVGPa3Gs6eWN6I+pc33TTTQH42Mc+BgTDxvjx47MH9aSTTgKCoUrRy4vssRWzfKAVvyshD7eID5FikpuQN6XjU5TUAPfGG29k39El5XVQvDf4w7C/drpxPJeuptiI53V2vqVC8eL5WahAcdDiBEMJBgEZlquxybVVhTjzzDOB2u7TakgicUJCF6Gp0MRS3zW511CvPffcEwhMqxghs4wcOTILiFCU0EXk7uzOXhiIDXDRRRfVPL48YfKB5V4U1WVJRaErr7wSmL8Te3323ntvAE499dSiYxreFwdM1INmDWuPPPIIEIILNJ4svvjiAPzHf/wHEERkDWkTJkzIVB/dVYqHd955J9BaEX+wai97PiVEy76YmqcKpfqXBxLDJiR0EXKrmqhjeq+99gJC0LS7jSF4pY5d0FkOCCGIOt8/9alPAWEnVWm3zEq7EHcPOOusswC45557gJC4rI5bilU0PMSBEbpBmmHJUt0N6mEfx7LLLrsAweVk4IpGqcsvvxwIutqMGTO49tprAfj85z8PBGPj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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n","Iter: 1750\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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0rRpU5577rms72ku2jXYFudiiPu++C3/9rXLyWEOuk4l2HTTTYHsfnHFFM+ePbvk8xc7t9h/sAoYqKmpAdJD9GSo6Nu3LwCTJ08GosncjxJtc7p16wbUu61UHV7oQSkUUcYmubKSUINKc2jfvr03ZwX969+kovmo8II/WELPZtCgQUC8C4rbEjscCSJ2CauwPQUQ+HnmmWcAeOmll4DkbH21Szj77LMBuPrqqwGz/a+qqsro+zJv3jwABg8eDJi55wvSr66ubjDSV+N4/fXXOe644wDjnooi2SBOo5rKvnTt2jXjPQVKKGU0TpyEdTgSRGwSVjqAinT5dQKtygqir6QZvxiUbnXttdcCmQEfIpVKeSVUpNstXrwYMPp5viB9SeuOHTt6RQFk7Ki0vuivfD937lygvKQDOyQ1zr5Hmst1110HpBubtKNQamiUKYtBOAnrcCSIguoShyHpDjjgAMBYicXMmTO9kC4FVay77rqAWa0bGkpCUFnToGR0UVdX54VRKsFB7oInnngCMLuMV199FYBTTz0VMLqUPte5c2dPx7f75lSKQw891Pt/mHWIbckax45LoaMHHXQQkK43aydz0kknRT6OIJyEdTgSROTd66SPPPLII1nPfccdd3DUUUcBsM466wCmjIykUkPTZU877TQgv2QVTZo08ZLuVfpSElM6k0IW999/f8AkyQvpS8uWLWPrrbcGKt/TVtKnR48e3jN66qmnyj5vUMf3OLrEqZq/XfYnlUoxbdo0wBRaqAROwjocCSJyHVbSwC53qbCuiRMnsvfeewOw++67AyaCZNKkSYAJjG8oKKyyUOrq6pg5cyZgrMLSTaW7anchqW37HCWB58+fnyF9c2EXuQ5ztyILak1NjRelFmbKoz3WKHdasvBfeOGFQObuafny5dx2221AZXc2TsI6HAkicj/skCFDgMxi29J1NthgA09nlTR49NFHgfIC4W3CjJJRtzJZiaVfytqt+GBFc73xxhu8+OKLgClzqh2HxrXnnnsCJhJMqYZazWV9Pe2004qKdIpSKmlX0LRpU2/OYURhBY05iggv7Vxuv/12wBS6t685efLkUPTzcnES1uFIEJFZiSU5pMPqXNLh1l9/faC+NKQyd+TnUpZOJSJJCkFzuPHGGwHTUlMxxF999RVgCqOnUikvyVvFxyU5JUklgaXTyhIp3VB6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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"stream","text":["\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_5XKAbjz8YVd"},"source":["**Please tag the cell below on Gradescope while submitting.**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":265},"id":"FafPL-Om8YVe","executionInfo":{"status":"ok","timestamp":1615310107475,"user_tz":-60,"elapsed":1238,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"94dc1d7d-27e7-4446-f388-6c611f5ac8ee"},"source":["print(\"DCGAN Fianl image:\")\n","show_images(images[-1])\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["DCGAN Fianl image:\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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0rRpU5577rms72ku2jXYFudiiPu++C3/9rXLyWEOuk4l2HTTTYHsfnHFFM+ePbvk8xc7t9h/sAoYqKmpAdJD9GSo6Nu3LwCTJ08GosncjxJtc7p16wbUu61UHV7oQSkUUcYmubKSUINKc2jfvr03ZwX969+kovmo8II/WELPZtCgQUC8C4rbEjscCSJ2CauwPQUQ+HnmmWcAeOmll4DkbH21Szj77LMBuPrqqwGz/a+qqsro+zJv3jwABg8eDJi55wvSr66ubjDSV+N4/fXXOe644wDjnooi2SBOo5rKvnTt2jXjPQVKKGU0TpyEdTgSRGwSVjqAinT5dQKtygqir6QZvxiUbnXttdcCmQEfIpVKeSVUpNstXrwYMPp5viB9SeuOHTt6RQFk7Ki0vuivfD937lygvKQDOyQ1zr5Hmst1110HpBubtKNQamiUKYtBOAnrcCSIguoShyHpDjjgAMBYicXMmTO9kC4FVay77rqAWa0bGkpCUFnToGR0UVdX54VRKsFB7oInnngCMLuMV199FYBTTz0VMLqUPte5c2dPx7f75lSKQw891Pt/mHWIbckax45LoaMHHXQQkK43aydz0kknRT6OIJyEdTgSROTd66SPPPLII1nPfccdd3DUUUcBsM466wCmjIykUkPTZU877TQgv2QVTZo08ZLuVfpSElM6k0IW999/f8AkyQvpS8uWLWPrrbcGKt/TVtKnR48e3jN66qmnyj5vUMf3OLrEqZq/XfYnlUoxbdo0wBRaqAROwjocCSJyHVbSwC53qbCuiRMnsvfeewOw++67AyaCZNKkSYAJjG8oKKyyUOrq6pg5cyZgrMLSTaW7anchqW37HCWB58+fnyF9c2EXuQ5ztyILak1NjRelFmbKoz3WKHdasvBfeOGFQObuafny5dx2221AZXc2TsI6HAkicj/skCFDgMxi29J1NthgA09nlTR49NFHgfIC4W3CjJJRtzJZiaVfytqt+GBFc73xxhu8+OKLgClzqh2HxrXnnnsCJhJMqYZazWV9Pe2004qKdIpSKmlX0LRpU2/OYURhBY05iggv7Vxuv/12wBS6t685efLkUPTzcnES1uFIEJFZiSU5pMPqXNLh1l9/faC+NKQyd+TnUpZOJSJJCkFzuPHGGwHTUlMxxF999RVgCqOnUikvyVvFxyU5JUklgaXTyhIp3VB6c7HPJMoO7LJ4p1KpRGUZ+dF92XLLLYHMEqa6/8cee2yD8Hs7CetwJIjIdViVNbU7oR922GEZx0oKyYIcJlFImLfeegsw0VtK2pb1dMqUKUB9mRHtHpSlIymtXYTakIRNlDqspH5tba3nt/Q1HYvsumGiHcGqq66a9X01F1+4cGFsY8qFk7AOR4KIvBmWIpzUmiMbsgYr3jjKPMMwmwFLmmj3IGlZ6cgs/xyjbHasec+ZM8eL/5bNIspooDCfoebw3nvvAUaXVTaVLOGyLcRFUDOsyH+w2h4+/fTTgHmgqvZ/1113eYER2jZGYbgIs3tdQyfuDuw1NTVeN3KpOkonjAL7yxzmHBUwUektvete53A0AnJK2Lj6bkaJJKuCMsrpwJ4U4paw/70OEK1b5391l+THSViHI0EU5dZJSukWhyHfs6qqqsoIGy0Wf7BBlN+RONLr4iLoPuULoXUS1uFIEDklrJ2apb8VVte0aVNvhdBrWiHsAlrFrLhasYNW1ELcJ/Y47JAzYc9R+JOoo5AWUUiibHO052cf07JlS88yquQFjUluq3z3u7q62uveoOctN0i+znO2jaGurs67rp0SaKdo2nMMSntr0qSJN2/NVYESSlqwPRSFfLeKlY7+94PGHNR7STgJ63AkiJxWYofD0bBwEtbhSBD5dNg0H162PXuxFsZKWZqluyxfvjxN0ejatWsKTElV6WvSJfwhabY+HEepEDv8Mdt9tnW8X375xZtj69atU2B0NPv+19XVZbwW5TPSufU8NB/969fzdJ+VMKLPfP/992nPsEWLFikw0UnZvq9Bcyz0/VQqFdr98J87SA+2fc3CSViHI0HklLD5pGYpq06ldOag2FBJUDu4O1uwt71yxxF3akse/z2XBNLf2Vp2aB7ZJJiIs9iZ7VWwvQv+YzRmNZ8K8hro/uf6vuabYyXuQbHvgZOwDkeiiK0ZlnSxUvyyUVJKOxBJ1qA5hKkD5pIahejQcUqOYrD9woXonUHE2Yay0jgJ63AkiMjzYRsaYSY/V5ogCVSJbJ048Fnn056hvBlJKwCXC5et43A0AmLTYSvNaqutFvs11Y5jjTXW4IMPPgDC9d2WIjUbY8ZVY5Ks+fif+cGG2UWgUC644AIAzj//fO+1Z555BoC+ffvGPp5SsRMGunXrBpj57bbbbrRu3RqAW265BYBbb70VCLe2dBxGvoaO2xI7HAmi0ZeIEXK6r1y5Mnajk//+ffPNN4Dp9B0m2eZoz68YaaQx/vvf/wZgrbXWAkxhPVFbW+tJYQU5SArPnz+/2GkEEmR0ivIZqj/SsGHDOPzwwwHzDLVLmjNnDpAZ8GGHsvpfzxXu+99jndHJ4Ug6FdNhteqsv/76XnD3Z599BuTvB6NVTyve3/72NwA6duzoHaMOc3/84x+ByhomfvvtN68y/hprrAGEq3fpXLovYXHkkUcCpqOerqNQwO+++w6Am266yetcvu222wJGb1e/1TCIM0Di4IMPBmD06NFAfUd2XV+7B5V21TEff/wxAJtuuilgOuFJv//Xv/4F1N83nWvWrFlA4d9PJ2EdjgRRscCJ/fbbD6i3Jsr9MWzYMAAOPPBAwKw+KkJ+yimnALDLLrtofIHn14old466kNnpdXK6258Lk1mzZrHRRhsBRqIGlawpBemumuvChQtDqfy/ySabAKYTg8Y8ZswYwPRUnT9/vieNR4wYAeB1nN9ss81KvXwGceiwnTp1Akx/J4XUjh492uvAri4Heu/HH38EoE+fPgBsv/32Gidgugo8/vjjQP39kvVcRfT1/fTpwU6HdTiSTkE6bJj61l577QXAk08+CaRbHC+77LK0Y3v27AkYXTUfS5Ys4csvvwTMapevgFgcPrwFCxZ4EjaKpPf27dsDpnteWKhj26OPPgrAxhtvDOB1Ilc7jmbNmrHvvvumfTaoYFo5RPmMJL2ff/55wIz/3nvvBeDkk0/2jpXE1M5GklbScurUqYDpgfzYY48BxmJeTjqmk7AOR4IoSML6/HslX0jneOGFF/IeaydkS2caN24cYHRb9ZP96aefSh5XIWUty8Xvcy1nrDbaHUiHClt6S6/S/ZfF3e4Bu2LFClZfffW0MSWt6PdOO+0EmO51upfnnntu4GfsJHzpvbIKT58+HTB+20LsI66QuMPRiMgpYbWSSs8sJ/lcvlKbZcuWMWTIEAD+8Y9/AOFKoXzEEcX15ZdfelK2pqYmtPMGFXEPC3WJV+KCOs3vvvvugJEgI0eO9KStxnLfffeFOhaI5lmpoLhivHUP582bB5hC47nQZ8444wwANtxwQwDOOussIFzPg5OwDkeCKKgIm3TJctK5pNPYZSR///137rzzTiBeyRonL7/8Mr179wbC9b/aZJOwYVjBZX3ef//9AROxI+t9v379vGg1SVr51Bsqeg6KaLJ3Pg888EDB59piiy0AuOiiiwBzX0qxKbgibA5HIyL0bB17lZdk3XzzzQF47rnnADKsimBW56233howscVhYpfeUKSTXRy83BaMfgYMGOBZWlV21M54CRP/HPMVgy8FSVP5FRUzC+b+HXrooYCJUguTMMv8yD/+/vvvA6bAnnYVn3zyCVBvLdb3sUOHDgAMGjQIMBF4ixYtAozELcdqH1QiJueWuJTtlH2sXEEKjO7RowcAW221FQA33HCD9wOVkUs3SQH8xx57bMHXLxZ7vHYVvzC61/m3W7oPcRHmD1VIRbr77rsBOPPMM71np/unbfOnn34KmHA9GbJKIYrgfwXa6EenwH0ZkHbeeWeg3sCmeyjBou+2FnWFLpbzQ3VuHYejEVFW8H+2fpd2r5Rsx/qprq5mn332AWD8+PFp72kllyM6jO1p0JZYRBH8f9FFF3HttdcCMHHiRMAkP4SJerQuW7YsY0scxby0rT/qqKO8Z6VwvCuvvDJtTK+88gpgQlNLkfhRBv/r+6trtGvXDoCBAwcC9WmDkr4KBdUxCkk86KCDAHj33XfLHoddaEE4CetwJIiiEtglJddcc00g3XAiPU3hbAofFEEram1tLRMmTADg888/B6Br165p55dzu5xCalrpbWRAsfvShJkU4L+25hImmkO2ypB2J/owdVnpalOmTMlIxFZQhZ6tUiJ33HFHwKTsFYI9hyiwwwxlQNLOCIz0HTp0KGBsKwoSke2lHJwO63A0IkrSYbUKHHHEEZ5lTJJVoVwybReD0rckabVaK9UpW0e5fMh6KfP9p59+mraEtWnTJgWwdOnStGuGKZF69erFm2++CZhVWG6uctAYJWH196+//hqLDqt0yKVLl3LTTTdlPUY6+9577w0YV5BCNYsZV5AOG1exQCX0S0dV8TUlDoQR+ON0WIejEVGSH1Z/P/74416ZkJEjRwLQv39/wOhthUhFrZzSd4T0iVIkq5C+LYe4jVb4oHSwMFZtpb9BepBBuWj3oDGqDKmfKKSOdkKDBw8G4K9//WvgsTfeeCOA5wnQGPv16wfAE088UfB1g+ZiB71EQXV1tZfcru+Syr9qdxYGLjTR4WhE5JSw+RLXW7Vq5flItcpptXn44YcBk/Ss11WKU3rpdtttx/333w8Y6SOpV04AuaSPQsxU4NpGOwFZpHV8mJJpnXXW8f6v+1WOjqznon8V5inrup8w56F7pSgm3VOV+8yGrMWywkvfllRWqaBCxhl0TBwlbNu0aeOV0dWOT+mg+aK3bMtvrrnmm4uTsA5HgigogT0ocb179+7eayrIpVVHxavkz5oxYwZgijBLwqZSKW/llpVNes0ll1xS2qx8Y5XEDEprk5SwC2pppQujmZNS6yCcoH+VhZVurLEvWbKk7HPnQoUGVLq0kBI9kqwaq61nF1N+KMhHGUcRgquvvtrTXa+66irAFGPLRzHjy5d+6SSsw5EgckpYxU7+8MMPAMydOzft/fbt23utGZSFolVQxau0osovq7hL6QGzZ8/2pPJrr70GmBYQ5egmtsUw6Fx6XcdLwobJSy+95Ekn27JbCipfotVYRb50b8NG11GGlR15lMtKqtYk0t01b425GMtuJZqyKV64X79+LF68GDBZOZXASViHI0HkFCeKygnaV48bNy7QAqb8R+mnOk6S1f85e5WNcyW180XLKTQXhKQJhCPBg0qzhtk82Y+elaLY9LeaZE2bNs3Lc9bYtKN65JFHAOMd0BinTZuWdq6G2tK0V69eQP1uUrmzUdoKnB/W4WhE5FzuC4k0yucbs7NgGhp2lEwUPj3pnNmuW07sso6VpTUoI6lcdG+OOuoowLSSVCbL5ptv7lVhsCPH9LdizSVZ77jjjrQ5+AnatcXZblLXUrx08+bNvQoo5bTasM8fFEUY+LlcB3Tp0iUFxphRSI3Whk5QAnvUzvcbbrgBMG4theYFYT9QuRRWrlwZ2LVbhp0lS5aE0r0uH1ogFixYkBFyqTHJraZACdVFkpvPTrqoqanx5id3kQITdL2lS5dG3oFdSepyXS1btswLc41SCLkO7A5HIyLnltjuitbQDQSlENdcCu1Erq2yvaXMha+naMZ7UT4zqUodOnTwQg71mr2N1b+Skhqr5qvUtY033tiTwpKwOnccaDyXXnopYAJdfvrpp7KSUIq9fuD7kY/A4XCERk4JK2NJHCtLpWhouwXpqhqXVnh/yKR0OhmDtCq3atUq43xxzK+urs4zKuXD7tcryaswv/feey/DEBdnJzztAFTCVe6phx56KJYkg3w4CetwJIicVuKNNtooBWZVlDlblr1K9cIpJQg8WwlQgGbNmqUguANc8+bNvfnbgQl2n1R7fH49VKuzPmOfS8eqSJvmYqfjtWnTxtPpFCqqRAoFJ8ycOTOw8n+QO8l/jD2mQkrX5utwr3/t6+f6fFCQyfLly4uy9OdyB2kHY5cjsi3B/l1mvrkGWfH979v3Q//K2r5w4UJnJXY4kk5OCetwOBoWTsI6HAkip5XY1u+yUWi4WBRNmWzdoFmzZhnJBdJRlOY3e/bstAG3atUqBUZnsc9ZW1sbS+K07X/NFSpp6z/2mP06nq3D2vj1qXy6mf8zpVKKX1j3RBZ0O9IpqFRttuva1w9jLqKULo92uR/p0D/++KPTYR2OpBN6f9hKo5VKktW2/tqrc/PmzVNgLL3+mF2Ip8BX2Pjjpe042zClZaWw48GbNm2adyfY0PHvEiHTmyGchHU4EkROHbZQnaaQz4SB/I8qszl8+HAAXnzxRaBep1NZm3POOQeA8847DwhOibIlaJRpdpXA1tlsXa6uri7UZ6ZoK7t9YzmNzPKRxF2CjV1AIQgnYR2OBFFWM6zq6uqcmSLlsvvuuwMwadIk73oAU6dOBUzrwkJW2KA8wyTq6fnw63j2/HQP/RLXL2397xWDIslUSK979+6AiRHeddddgXDK2FQqpzlO7DkKJ2EdjgRRVEUwxXZGpf/IsrvbbrsB8NRTTwGZUkHNgUsppxJElHr5qquu6mV9qFVhUHxyOeSag627+nXbciQr1H8v1OR4u+22Szu/CrVHKf2C4pOjRrHbso/YucBRUFBvHe9gqyp+KpUKZXD6MqsbmIxLOrdK06imUBTVAW2jTCnz0v1RzaPTTjsNgHXXXTejE4G2kJrbBhtsAOTv01LqmOyEcf+Xu9xn2L17d8444wzA3D/NY/To0RnXC5u4fqi6d+oHq55CKqF02GGHAXjVFWVoC9Pd5LbEDkeCKGhLHGSUCEO6tmjRwut0py2GwgTlvlGP0U8//bTs69mUMgfdD4U7Xn311YBJjVK3cfUbOuSQQxg3blzW66m2ryoQfvDBBwCMGjWq6HFlm0shdZbtNLpC74lKCD3wwANeSJ12DNoiqztdlEQR7ippqs4WtbW13i5IuwkFOcycORMwz1KFH6II5HAS1uFIEAUFTtj6XblGCjB66tChQ72O3jrv+++/D5iasOq101DQvHv27AnAEUccARjjg8ZdSH/br776CjAGNgWBqK/uAQccAJSu2wbthrK9XmgnOenFDz74IFDfg0nj027opptuKuhcYVDO91CSdMMNNwRMOdb+/fsDpoBAbW2tt/OTjir3ovpKyWiqTn1R4CSsw5EgcgZOKKhax8iyKUlSyh5d+/79998fgDFjxnjSVrrAXnvtBRgdMExsh3QYRahfffVVwFi7tVrLIlwI0gHVKVD3fPz48YCR4gWWPfXmqGcosnU6kGTVDipIKur9s88+G4BrrrlG1/AKg++zzz5A5P1nQnuG6667LgCPPvooYHZNkpaa84oVKzxr8IQJE9I+q+/pyJEjAZgyZQpQnsXfBU44HI2AogIntPKWIlm1Um255ZZAeqFmSZUjjzwSiEayRon8b/PnzweMHnfKKafk/awkq4pnSz+026LU1NQAxRe+s33p2QqE+ZP1c6FWFccffzxgvg/Tp0/3fORRd4EPC81ZFv2NNtoIMHOSvirPxMcff8zYsWMB0ydXobMdOnQAoHfv3gC89dZbkY3bSViHI0HklLBBJTFLiQaS7irL6TbbbAPUr+rqISodNmksWrQIMNJs4MCBAFx00UWA0UsB1l9/fQCef/55wLSo0L2UfUCWR52j1JKy9jMThZQ5FXp22gFJR9f3Y9SoUV53ct0Du0SpXRhd0rzQAuRhI5+5OsRr/EoPfOaZZwB4+umnAejSpYsXEit7gnYckrB6/a677gKimZuTsA5HgshXhA3IDFQvpdjUBRdcAJg4TL0+ZcoU770kl/gAI0lXW201wKSW9erVy7OE33///YCxICrKS7uMdu3aASZN7YsvvihrTHakUzZ9NV8hPUnFPfbYAzBSSL1epduB0bUHDx4MwEEHHQQYKaT5Kcb4zDPPzBhPsRSz45Pk107g5ZdfBkyUnfziel3RXB07dqRTp06A8cOq6Pvqq68OQNeuXQETS37llVcCJgGiEFwzLIejEZHTD6sSoHarjmLo0aMHYKJCJGnk0+rSpUusjaKj8MMKrbSKB9bKP2HCBE9KyUd3++23A9FkmvjnqORu33tp//rHGfRdkCT56KOPAKP3nXrqqUB9lJZ0wuuuuw4wklW7NPta/t0HFCdhy3mGto6t56LUOLvxm3YMnTt39izHkroqQyTdXui7LZ1XHoBc3eazRBM6P6zDkXRy6rDlRDTJv3jnnXcCRrJKopxwwglAcfv7KAiz4bEsjUrAnzhxIgADBgzwJI0sibIsS3eNKum5kMyqfNdeZ511ADwdTrHdKt2zcuVKbrnlFgD2228/wBT1vvfeewGj1/ft2xcwUipuu4VdZC9fNJKs8z/99JOnX0rfXbhwYdbP6HcjK3Ex9z7fs8j5gy1nu6aHK0VcyDCjcL6WLVuy9tprA2YbJQe0tiAjRowATIJ7mBRTD6rQH9UOO+wAGBeO35CgLdlDDz0EmHA23YOwqwuGUZ3+//7v/wATmqpwSaWR7bTTTt4PUV9She3pb92LQw45BAi352spi24pC6R+D1J9+vXrl/U4PcMouju6LbHDkSAKCk0sZVWWtLS3PieddBJgpM6gQYO8lHWg4BcAABCcSURBVCZto+2eMYcffjhgumKffvrpBY+nXKqqqgqev8YrqemXrNdffz0A3377LQA333wzYFwk2nnsvPPOALz55psljdWmnGIDMrj06dMn7XU7bfC4447zpI8SIOyggXvuuQcwqtHnn39e9HiCCFOtKQSlFWrX4OtpBOAVK5BaECZOwjocCSKnW8fufFaMvien8cUXXwyYfb10Hek4w4YN85T0t99+GzCuANWyVRKxDFRyvpdisIjSraPdhD8UEeoNG5IsQm4QSRoFFij5WTqt7WYohFy9dYqhS5cuaWOU3qmyKV9//TVQb4/Q7kfGJ6HPyHUnPVjB9gpCKIZK9daRe0sGQ7t7u3R77QjtLu7F4NLrHI5GQFElYgpBx9oF07SyHnPMMYCRnvPmzeOSSy4B4IUXXgDMSqbwMKUzaSVT0LWslA0FBYnYqL+PH+04ZEWfO3cuYHYPcpkoHLDUUivl6HeS9pKOcmdcddVVgHlO33//PWPGjEn7rCSrnqkCFeTGKkWyBhFHmdOqqiovjNSWrLNmzQJM2mE5kjUfTsI6HAmiqAT2Ypg+fXra31qdFTChEL199903Q3ooQUCSVVJCSdINTbIK6eU20m2yIUuyVm1JJoXsqZSq9MViCaqK75e8QdJXJW4UICDprzIwsj2ce+65Xjiezqvgf+2kvvnmG8CkHoZJHNbhXr16efMWCrq49dZbgWj8rjZOwjocCSKyDuzyqWp1loSVNFUf19mzZ3ufkQ9SEU2SDtJ3lDhdTvFvO6g6TCuxwu8kbUS/fv08KWvvJrp16wYYnV/j1JyV4F6MtdhvYWzWrFmaBdUOMve/FsTJJ58MmDBToVS0XXfd1XvOJ554IgC33XYbYKSQLOhhtCKJ0tJvox3ChAkTPJ+57pfSCxXkX0pyTBDOSuxwNAJySlitzqW06NAKrtX5jjvuAIyOppSjm2++2fPV2pEjihSRTqvOb+UQ5epsF1oXPXv2zBi7jtUOQ20gFCGkv4MCzHPhn+Mqq6ySliJpXz/beG1k4Zce3bFjR8BIbUVvgdHjdf4BAwYAJnY6DOxnGEWPX+0A33nnHYA0P7p0exXfkyU8TJyEdTgaAZHpsDay+KoEpFZtf39S6QD33XcfYEqh2pFD5RCH/iM9TXM866yzvNIwspIq+Vm7CklAteh47LHHgPKjuZo3b54Cc2/LeZZq9qSINEVngZHSKlGrYvAqJhcmYTxDPRu7YLgizBTLrYg0MP5olbV54IEHgOiLEPhxEtbhSBCxSVihOGFJmjZt2nglP2UpDbupsZ84JKwim5SRkwvNVYnf8k/bFsdiVvFCrMTlIOk0fPhwoD7B/e9//ztgIrSiiOsNsvQX8z3VOWS1vvzyywGTXSYdXJJX/PLLL549Ro3LosjGEU7COhyNgNglbKWJQ8IqxlY6Tt++fTMaTanixoEHHggYP2u+e11dXZ1X2vrn+L/wDEvJ1pG34oorrgDgz3/+M5BZNE4ZYrvssotXOC4OgiRszh9slA7pShGn0926jq5f9nnynSOs9LqGiv0M5boqJXBB4Yba0svoJPeaStpMnjy51OEWhaua6HA0IpyELWCOcZcgyUV1dXXeAJbGKmGDpI+2xHaAj/9z+foGqbCaJKw6EfqDQuLASViHoxGRSKNTOaU7S5GwMlAEpajZrweltMVFYzM66T7rOaxYsaIgCevv3FepZ1EsTsI6HI2InAnsKn4mi1k5q1RQh7Rc/UbslVVIgumzGldtbW2gvhlUuFo6TFBgQVVVVVoYJRjXjC1J9a9933K5G3R9+xzlpBD60bzDDJwIA3us/uemMetfu+K+jcrPaI72cymlTG+Y98neoaVSqYxSvsLuq2vjJKzDkSBy6rAOh6Nh4SSsw5Egcm6Y27Ztm4JgXSxbj1FbB9D+PVvnb71eaqB4iU2Q0pSGli1bpsCEBkZtTYzDp+ufYxRFtu1n3bx5c0+v179hzM++V9L7amtr056h+hjbzzBPjEHaMVE+l1wd7vWe5iYddunSpc5K7HAknYJadUQhdcLwkdnW4kJWxzjKi1SaqP2w2az4YUrWfNcNinSKu9dsFGhHunLlSidhHY6kU1Ah8Wx+JFFqVE85bRCjOIejcKRn+X3YlbyPSYliKoR8c3ES1uFIEAWVOS21EVNUaIW3I51K0WHjzmaxo3KikExRW4krTaWfYRy4EjEORyMgpw7bUHUDtQFRmU0VuG6oUqS6upprr70WgNNOOw0wFQ5UyjUqGuozTBpNmzb1Sv/oe6bWHSr2Hsa9zuWzhQq6dcph7NixgOmduuWWWwKFJRtXYjtVU1Pjde1WIoESpJUwHSaNLb3OJk7XnDoAvPnmm9TU1ACZP6rFixcDpqu8OgOUg9sSOxyNgMj6wxaDtrbqrxm0te3evTtQ3w0OzEpXTh3jOEIF+/fv70lWIVeZXCNhdj7z09Akq+ar7aWkUUMzbKri/9SpU4H61D7tNFVJUf121MUvjnvtJKzDkSAqZnSSZGvZsiU9evQA4LXXXsv5mbPOOgsw0kmS9ccffyx7HFEGgWfrOq7+r1EbysKYj85h96rdd999AVhzzTW9Dm7q3qBntP322wNwzTXXANC1a9e0c/Tp0wcwPYEbCupvq6T5FStW8Kc//QmAl156CYAzzjgDwLNPxGHrcRLW4UgQseuwW2+9NQCjR48G6iWMOrWpGr6NVvg//OEPaX8//fTTQDila+wSMuWUahE6pyST/3ySMJUu2FYIxx9/PABXXXUVYPrOqON8VVWV557SPILKtmj+n3/+OQBvvPFG2eOLovfTAQccAJhxT5482fNO7LDDDgBss802gNn5SbeNEidhHY4EEVshcRVqnjlzJmAKlT311FOcdNJJgOm/abPOOusAMGfOHMCserLSFWJhDErNkq/ZJozEAjnWv/3227Q+o2Asi9LpwrQSh1VIXPdM0nC99dYDyFpATPYEvSaruI61j1P38meffbbocUXpS5cn4v3339e1AOjdu7f32qxZswAjjddcc00gumfox0lYhyNB5NRhyynYLdq1awcY6Sirm6TivffeGyhZpQe98soraX9/9tlnaecoh2xlTbO9XgrdunUDMnuNQmYJz4aIeqiqS7zuv/TvJ554AoDTTz/ds9Rr16Ndk3rkSho9/PDDADz33HORj78UFAtgf7fq6urYeeedAbN7mDFjBhCdDz0bDffb4nA4MijISlyKtNl4440B+PDDD4FMKSOr4sSJEwPPcdlll6WdS2y77bZ5r19sMekwdFabo48+GiAjygnMSi5pFQb5AseLRTq4pI2soMOGDQNgyJAhQPo9+/333wHT91ZSWZ8999xzgdL8z3HsRubNmweYXZ3i1SdOnOiNWd+pbP71csn3DJ2EdTgSRE4JW4p+17lzZyBTsuozAwYMAOChhx7K+KzOL71Xq7HQqhek8/rPUay0iSLCaaeddsp4Tec/77zzQr9e2LGskjaKVlKGkfTVbNdba621ANMoWVLp1ltvBcLJZLEJ89npHBr/u+++C9RnhNmx63G3ogQnYR2ORFGUlTjXSiY9TXqN3UBK1mEVJc92XuUbnnPOOWl/6xzy3QXRrFmzjOtmu56fKDMssmURSWdVFkhDRvdGu6Vcz1+WZPnZhSypkrDl3O+gaLAoM6569uwJwP33388xxxwDmO+2rMYvv/xyaNfLN4eCjE4aYC43iowL/fv3B8xNnDZtGhD8w2nbti377bcfUO8eANhll13SziFDhn7IJ5xwAmDS8uQyuuCCC/juu+8As53L94ONkmzuHM0lTldAWAR9mVq2bMn06dMBM2cZ1c4///y0v6MgyrBOzfnEE0/0QhI33HBDAB555BHAFCEIw83ojE4ORyOiIKOTtna5zOra6slBLhQwLWkoV41qG9XV1XnXkRvBvr4Uf0lvnUvXUujcpEmTvHpPWunDdnUUgh066b9vP/zwQ8XGFRUDBw70Qk/1zJSCpu10GGmEQfcs35a4qqqq7O1ybW2tt/VVKRgZR7W7jCMJ30lYhyNBhB78P378eAD23HNPwARRv/766wB88cUXgJE+9913H2effTZgpK90Ein8H330EZBZh7gU4ijgpcQGJal36NDBG/OECRMAU+YmCv0rrOD/fOgZLly40Cv5omRuhWWGobvarjq7e50SOOzgl7DDTCVhpbNq1yCddu7cuWVfJyhJRTgJ63AkiNAS2LUyDB48GIBTTjkFMM5l6bKy6PpXPZUJEZMmTQKMdE4a0uckdfw61A033AA0vOJoxaDE9VGjRgHpBcruueceIFyrcKFhpSJMyaok9b/85S+efUTY9YnDwFmJHY5GRGgSVqvZxx9/DJiwwnwlUKqqqthqq63SXrvwwgvDGlZFkG7nD/qXP1j+4SgkbNTB8QpkUdK5bAypVIrvv/8eqE+XjIo4UxE333xzAK677jqgPhzW1pH1nd5iiy0AEzQS5e7JSViHI0FEXoQtnxV00KBBfssYYKRQofh1llL1lzD1HiVt+8+psiJRBIxL8mSTQGHMS+e94oorALwdkc65ePFiL/RQXoAoyBeaWI7FXXNUyR6VcNV82rZt6/n9NW9ZhVXiNQ6chHU4EkTFWnVoVfzrX//qvSYLsqKBCkW6oj9qKsr+q0EoukqWRV17xYoVXqHsKKJh7Dlne68c1GxMhbR1HdkrRo4cyYMPPghUplxrOX5XfUZFEs4880zApHDKp77JJpt4tgmlCEoKh5kymG/sTsI6HAmiYhJWpUs7duzorSpDhw4FMldpSVCtcHZsswqa/f777965FN+ZLysmTAksP52d4tekSRNvTlFk6US1i1DRd2WlaOxLliwBzD3u3bu3Vxg+SoLmWc78O3bsCNT7WcH4j5UOqtKu66+/vidJL7jgAsBEsoWJk7AORyOioAT2MKxwQlJRzYaqqqo8iak4ZBtdVxlBkmAqw6nSJbW1td5YK9G+0C6m7W9PYWfpNORIJ2WhqDmZdjBqdKVYWjUxW3fddSNv6hUVI0aMADJjuzUfzX358uXcdNNNAIwZMybuYXo4CetwJIicElarS5jSStJRRa7q6uq46667AJPpYaPr619JMpXO9EegxJmbaKNVWeNSe47Fixd7MbYNWbKKgw8+GDB6nFBLCklg3eNevXolsoIG1GcaQaYv2y6aPnz4cM8PXcnGZbH11hFyPqtUCpgvxtKlS3N+1u40JzeKbmBVVZX3xdGXyTb522lLUcxRlQOVdjVjxoy8cwuTXOl1hWzJO3XqBBhVw5fWlva3Ej1uueWWcAZeIGH21tEPUyGIMrSNHDkSwOusGGb96EJwvXUcjkZASRI2jJ6mCtVbsWIFm222WVGf1Qqv1TFbdX87UFtjtpOfo0hgrzT+1dmen33Pcj1DudG0K9K/kja56kNHSRxFCCqNk7AORyMgp4SNcuWSHrrKKquUrN+V4iL5X1udVT5FktTuhG7/Pwk05mfoSsQ4HI2IggInoli5ZHHMJV0V6qeq8uoLm6vTnN0d3NZhbeRmsq2A/s8F3YegDnl57AJZjynmXtvH2l3P/Wgno2NkWdf9b9GihRdy11AllD12G/s5ZPu70C6GcWMHJ8nGEISTsA5HgsipwzocjoaFk7AOR4JwP1iHI0G4H6zDkSDcD9bhSBDuB+twJAj3g3U4EsT/A2qrjiONOSUFAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"qJXCFG6A8YVe"},"source":["## INLINE QUESTION 1\n","\n","We will look at an example to see why alternating minimization of the same objective (like in a GAN) can be tricky business.\n","\n","Consider $f(x,y)=xy$. What does $\\min_x\\max_y f(x,y)$ evaluate to? (Hint: minmax tries to minimize the maximum value achievable.)\n","\n","Now try to evaluate this function numerically for 6 steps, starting at the point $(1,1)$, \n","by using alternating gradient (first updating y, then updating x using that updated y) with step size $1$. **Here step size is the learning_rate, and steps will be learning_rate * gradient.**\n","You'll find that writing out the update step in terms of $x_t,y_t,x_{t+1},y_{t+1}$ will be useful.\n","\n","Breifly explain what $\\min_x\\max_y f(x,y)$ evaluates to and record the six pairs of explicit values for $(x_t,y_t)$ in the table below.\n","\n","### Your answer:\n","We have $\\frac{\\partial f(x_t, y_t)}{\\partial y_t} = \\frac{\\partial x_t y_t}{\\partial y_t} = x_t$, and learning rate = 1. Since $y$ is maximized, we use **gradient ascent**:\n","\n","$$y_{t+1} = y_t + x_t$$\n","\n","Using alternating gradient, we have $\\frac{\\partial f(x_t, y_{t+1})}{\\partial x_t} = \\frac{\\partial x_t y_{t+1}}{\\partial x_t} = y_{t+1}$, and learning rate = 1.\n","Since $x$ is minimized, we use **gradient descent**:\n","\n","$$x_{t+1} = x_t - y_{t+1}$$\n","\n","To see what $\\min_x \\max_y f(x, y)$ evaluates, we replace $x_{t+1}$ and $y_{t+1}$ by their formulas in $f(x_{t+1}, y_{t+1})$:\n","\n","$$\\min_x \\max_y f(x_{t+1}, y_{t+1}) = x_{t+1} * y_{t+1} = (x_t - y_{t+1}) * (y_t + x_t) = - x_t y_t - y_t^2$$\n","\n","Explicit values are recorded for $(x_t, y_t)$ in the table below.\n","\n","$y_0$ | $y_1$ | $y_2$ | $y_3$ | $y_4$ | $y_5$ | $y_6$\n","----- | ----- | ----- | ----- | ----- | ----- | -----\n"," 1 | 2 | 1 | -1 | -2 | -1 | 1 \n","$x_0$ | $x_1$ | $x_2$ | $x_3$ | $x_4$ | $x_5$ | $x_6$\n"," 1 | -1 | -2 | -1 | 1 | 2 | 1 "]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"cad_895g8YVe"},"source":["## INLINE QUESTION 2\n","Using this method, will we ever reach the optimal value? Why or why not?\n","\n","### Your answer: \n","**No**, using this method we will never reach the optimal value. This is due to fact that $(x_t, y_t)$ value ends up over again to the initial value after some iterations.\n","From the table above, we notice that we start with (1, 1) and we end up with (1, 1) in the 6th iteration."]},{"cell_type":"markdown","metadata":{"tags":["pdf-inline"],"id":"1KwzHDXt8YVf"},"source":["## INLINE QUESTION 3\n","If the generator loss decreases during training while the discriminator loss stays at a constant high value from the start, is this a good sign? Why or why not? A qualitative answer is sufficient.\n","\n","### Your answer: \n","**No**, this is not a good sign.\n","\n","Since the role of the discriminator is to distinguish between *real* and *fake* samples, which is not the case (i.e. he does not do his job well) if the discriminator's loss stays at a constant high value from the start.\n","\n","It can be interpreted by the fact that the generator manages to fool the discriminator (since the loss of the generator decreases), but this *fooling* is not well evaluated (i.e. we are not sure that the generator really fools the discriminator, since the loss of the discriminator stays high)."]}]} ================================================ FILE: cs231n/assignment3/LSTM_Captioning.ipynb ================================================ {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"LSTM_Captioning.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LviLNq2-FfBI","executionInfo":{"status":"ok","timestamp":1614087106952,"user_tz":-60,"elapsed":24038,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"5d606972-0d9c-4419-b0f5-45be1fea6268"},"source":["# this mounts your Google Drive to the Colab VM.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# enter the foldername in your Drive where you have saved the unzipped\n","# assignment folder, e.g. 'cs231n/assignments/assignment3/'\n","FOLDERNAME = 'cs231n/assignments/assignment3/'\n","assert FOLDERNAME is not None, \"[!] Enter the foldername.\"\n","\n","# now that we've mounted your Drive, this ensures that\n","# the Python interpreter of the Colab VM can load\n","# python files from within it.\n","import sys\n","sys.path.append('/content/drive/My Drive/{}'.format(FOLDERNAME))\n","\n","# this downloads the CIFAR-10 dataset to your Drive\n","# if it doesn't already exist.\n","%cd drive/My\\ Drive/$FOLDERNAME/cs231n/datasets/\n","!bash get_datasets.sh\n","%cd /content"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n","/content/drive/My Drive/cs231n/assignments/assignment3/cs231n/datasets\n","/content\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"tags":["pdf-title"],"id":"7YL4kjk5FfBM"},"source":["# Image Captioning with LSTMs\n","In the previous exercise you implemented a vanilla RNN and applied it to image captioning. In this notebook you will implement the LSTM update rule and use it for image captioning."]},{"cell_type":"code","metadata":{"collapsed":true,"tags":["pdf-ignore"],"id":"A3siGSe4FfBM"},"source":["# As usual, a bit of setup\n","import time, os, json\n","import numpy as np\n","import matplotlib.pyplot as plt\n","\n","from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n","from cs231n.rnn_layers import *\n","from cs231n.captioning_solver import CaptioningSolver\n","from cs231n.classifiers.rnn import CaptioningRNN\n","from cs231n.coco_utils import load_coco_data, sample_coco_minibatch, decode_captions\n","from cs231n.image_utils import image_from_url\n","\n","%matplotlib inline\n","plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n","plt.rcParams['image.interpolation'] = 'nearest'\n","plt.rcParams['image.cmap'] = 'gray'\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2\n","\n","def rel_error(x, y):\n"," \"\"\" returns relative error \"\"\"\n"," return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"y0H-AlMKFfBN"},"source":["# Load MS-COCO data\n","As in the previous notebook, we will use the Microsoft COCO dataset for captioning."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"K6TVVBjsFfBN","executionInfo":{"status":"ok","timestamp":1614087152700,"user_tz":-60,"elapsed":13137,"user":{"displayName":"Soufian Benamara","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj7-UwGIuLvBwNdi62Q2pMRjoHrgtEm3LZkyGEWZw=s64","userId":"08596286217915945464"}},"outputId":"19c496a5-aeb1-4fb5-90ce-0ca382035d08"},"source":["# Load COCO data from disk; this returns a dictionary\n","# We'll work with dimensionality-reduced features for this notebook, but feel\n","# free to experiment with the original features by changing the flag below.\n","data = load_coco_data(pca_features=True)\n","\n","# Print out all the keys and values from the data dictionary\n","for k, v in data.items():\n"," if type(v) == np.ndarray:\n"," print(k, type(v), v.shape, v.dtype)\n"," else:\n"," print(k, type(v), len(v))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["base dir /content/drive/My Drive/cs231n/assignments/assignment3/cs231n/datasets/coco_captioning\n","train_captions (400135, 17) int32\n","train_image_idxs (400135,) int32\n","val_captions (195954, 17) int32\n","val_image_idxs (195954,) int32\n","train_features (82783, 512) float32\n","val_features (40504, 512) float32\n","idx_to_word 1004\n","word_to_idx 1004\n","train_urls (82783,) (40504,)