diff --git a/README.md b/README.md index e22b0a35..9989fe78 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,9 @@ -# RAPIDS Notebooks-Contrib +# RAPIDS Community Contrib --- ## Table of Contents * [Intro](#intro) -* [Installation](#install) -* [Exploring the Repo](#explore) - -Notebooks: -* [Getting Started](#get_started) -* [Intermideate](#middle) -* [Advanced](#advanced) -* [BLOGS](#blogs) -* [Conference](#conference) +* [Exploring the Repo](#exploring) +* [Great places to get started](#get_started) --- @@ -18,151 +11,165 @@ Notebooks: Welcome to the community contributed notebooks repo! (formerly known as Notebooks-Extended) -The purpose of this collection of notebooks is to help users understand what RAPIDS has to offer, learn why, how, and when including RAPIDS in a data science pipeline makes sense, and contain community contributions of RAPIDS knowledge. The difference between this repo and the [Notebooks Repo](https://github.com/rapidsai/notebooks) are: -1. These are vetted, community-contributed notebooks (includes RAPIDS team member contributions). -1. These notebooks won't run on air gapped systems, which is one of our container requirements. Many RAPIDS notebooks use additional PyData ecosystem packages, and include code for downloading datasets, thus they require network connectivity. If running on a system with no network access, please download all the data that you plan to use ahead of time or simply use the [core notebooks repo](https://github.com/rapidsai/notebooks). +The purpose of this collection is to introduce RAPIDS to new users by providing useful jupyter notebooks as learning aides. This collection of notebooks are direct community contributions by the RAPIDS team, our Ecosystem Partners, and RAPIDS users like you! +### What do you mean "Community Notebooks" -## Installation +These notebooks are for the community. It means: +1. YOU can contribute workflow examples, tips and tricks, or tutorials for others to use and share! [We ask that you follow our Testing and PR process.](#contributing) +2. If your notebook is awesome, your notebook can be featured -Please use the [BUILD.md](BUILD.md) to check the pre-requisite packages and installation steps. +There are some additional Community Responsibilities, as the RAPIDS team isn't maintaining these notebooks +- If you write an awesome notebook, please try to keep it maintained. You'll be mentioned on the issue. +- If you find an issue, don't just file an issue - please attempt to fix it! +- If a notebook has a problem and/or its last tested RAPIDS release version is in legacy, it may be removed to archives. -## Contributing +### RAPIDS Showcase Notebooks +These notebooks are built by the RAPIDS team and will be maintained by them. When we remove the notebooks, it will become community maintained until it hits `the_archive` + +### How to Contribute Please see our [guide for contributing to notebooks-contrib](CONTRIBUTING.md). Once you've followed our guide, please don't forget to [test your notebooks!](TESTING.md) before making a PR. -## Exploring the Repo +## Exploring the Repo ### Folders - `getting_started_notebooks` - “how to start using RAPIDS”. Contains notebooks showing "hello worlds", getting started with RAPIDS libraries, and tutorials around RAPIDS concepts. -- `intermediate_notebooks` - “how to accomplish your workflows with RAPIDS”. Contains notebooks showing algorithm and workflow examples, benchmarking tools, and some complete end-to-end (E2E) workflows. -- `advanced_notebooks` - "how to master RAPIDS". Contains notebooks showing kernel customization and advanced end-to-end workflows. -- `blog notebooks` - contains shared notebooks mentioned and used in blogs that showcase RAPIDS workflows and capabilities -- `conference notebooks` - contains notebooks used in conferences, such as GTC +- `community_tutorials_and_guides` - community contributed “how to accomplish your workflows with RAPIDS”. Contains notebooks showing algorithm and workflow examples, benchmarking tools, and some complete end-to-end (E2E) workflows. +- `community_archive` - This contains notebooks with known issues that have not have not been fixed in 45 days or more. contains shared notebooks mentioned and used in blogs that showcase RAPIDS workflows and capabilities +- `the_archive` - contains older notebooks from community members as well as notebooks that the RAPIDS team no longer updates, but are useful to the community, such as [`archived_rapids_blog_notebooks`](community_relaunch/the_archive/archived_rapids_blog_notebooks), [`archived_rapids_event_notebooks`](the_archive/archived_rapids_event_notebooks), and [`competition_notebooks`](the_archive/archived_rapids_competition_notebooks) - `data` - contains small data samples used for purely functional demonstrations. Some notebooks include cells that download larger datasets from external websites. -### Lists -- `multimedia_links.md` is a [list of videos](multimedia_links.md) by RAPIDS or our community talking about or showing how to use RAPIDS. Feel free to contribute your videos and RAPIDS themed playlists as well! -- `competition_notebooks.md` - contains archived notebooks that were used in competitions, such as Kaggle. Some of these notebooks were blogged about and can also be found in our `blog notebooks` folder. - -# Our Notebooks -Below is a listing of the notebooks in this repository. Each row will tell you the notebook's -- Location in **Folder** -- Notebook Title and Direct Link in **Notebook Title** -- Description in **Description** -- Design is for a `Single GPU`(SG) or `Multiple GPUs`(MG) in **GPU** (don't worry, you can still run the multi-GPU notebooks with a single GPU) -- Data can be found in **Dataset Used** - - -## Getting Started Notebooks: - -| Folder | Notebook Title | Description | GPU | Dataset Used | -|-----------|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|------|--------------| -| basics | [Getting_Started_with_cuDF](getting_started_notebooks/basics/Getting_Started_with_cuDF.ipynb) | This notebook shows how to get started with GPU DataFrames (single GPU only) using cuDF in RAPIDS. | SG | Self Generated | -| basics | [Dask_Hello_World](getting_started_notebooks/basics/Dask_Hello_World.ipynb) | This notebook shows how to quickly setup Dask and run a "Hello World" example. | MG | Self Generated | -| basics | [Getting_Started_with_Dask](getting_started_notebooks/basics/Getting_Started_with_Dask.ipynb) | This notebook shows how to get started with multi-GPU DataFrames using Dask and cuDF in RAPIDS. | MG | Self Generated | -| basics | [hello_streamz](getting_started_notebooks/basics/hello_streamz.ipynb) | This notebook demonstrates use of cuDF to perform streaming word-count using a small portion of the Streamz API. | SG | Self Generated | -|basics -> blazingsql| [Getting Started with BlazingSQL](getting_started_notebooks/basics/blazingsql/getting_started_with_blazingsql.ipynb) | How to set up and get started with BlazingSQL and the RAPIDS AI suite. | SG | [Music Dataset](https://github.com/BlazingDB/bsql-demos/blob/master/data/Music.csv) | -|basics -> blazingsql| [Federated Query Demo](getting_started_notebooks/basics/blazingsql/federated_query_demo.ipynb) | In a single query, join an Apache Parquet file, a CSV file, and a GPU DataFrame (GDF) in GPU memory. | SG | [Breast Cancer Diagnostic](https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29) | -| intro_tutorials | [01_Introduction_to_RAPIDS](getting_started_notebooks/intro_tutorials/01_Introduction_to_RAPIDS.ipynb) | This notebook shows at a high level what each of the packages in RAPIDS are as well as what they do. | MG | Self Generated | -| intro_tutorials | [02_Introduction_to_cuDF](getting_started_notebooks/intro_tutorials/02_Introduction_to_cuDF.ipynb) | This notebook shows how to work with cuDF DataFrames in RAPIDS. | SG | Self Generated | -| intro_tutorials | [03_Introduction_to_Dask](getting_started_notebooks/intro_tutorials/03_Introduction_to_Dask.ipynb) | This notebook shows how to work with Dask using basic Python primitives like integers and strings. | MG | Self Generated | -| intro_tutorials | [04_Introduction_to_Dask_using_cuDF_DataFrames](getting_started_notebooks/intro_tutorials/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb) | This notebook shows how to work with cuDF DataFrames using Dask. | MG | Self Generated | -| intro_tutorials | [06_Introduction_to_Supervised_Learning](getting_started_notebooks/intro_tutorials/06_Introduction_to_Supervised_Learning.ipynb) | This notebook shows how to do GPU accelerated Supervised Learning in RAPIDS. | SG | Self Generated | -| intro_tutorials | [07_Introduction_to_XGBoost](getting_started_notebooks/intro_tutorials/07_Introduction_to_XGBoost.ipynb) | This notebook shows how to work with GPU accelerated XGBoost in RAPIDS. | SG | Self Generated | -| intro_tutorials | [08_Introduction_to_Dask_XGBoost](getting_started_notebooks/intro_tutorials/08_Introduction_to_Dask_XGBoost.ipynb) | This notebook shows how to work with Dask XGBoost in RAPIDS. | MG | Self Generated | -| intro_tutorials | [09_Introduction_to_Dimensionality_Reduction](getting_started_notebooks/intro_tutorials/09_Introduction_to_Dimensionality_Reduction.ipynb) | This notebook shows how to do GPU accelerated Dimensionality Reduction in RAPIDS. | SG | Self Generated | -| intro_tutorials | [10_Introduction_to_Clustering](getting_started_notebooks/intro_tutorials/10_Introduction_to_Clustering.ipynb) | This notebook shows how to do GPU accelerated Clustering in RAPIDS. | SG | Self Generated | ---- +### Additional Resources +- [Visit out Youtube Channel](https://www.youtube.com/channel/UCsoi4wfweA3I5FsPgyQnnqw/featured?view_as=subscriber) or see [list of videos](multimedia_links.md) by RAPIDS or our community. Feel free to contribute your videos and RAPIDS themed playlists as well! +- [Visit our Blogs on Medium](https://medium.com/rapids-ai/) + +## Great places to get started + +### Topics +Click each topic to expand +
+ RAPIDS Libraries Basics + +##### Getting Started Document +* [Intro to RAPIDS](getting_started_materials/README.md) + +##### Teaching Notebooks +* [Intro Notebooks to RAPIDS](getting_started_materials/intro_tutorials_and_guides)- covers cuDF, Dask, cuML and XGBoost. +* [Learn RAPIDS Getting Started Tour (External)](https://github.com/RAPIDSAcademy/rapidsacademy/tree/master/tutorials/datasci/tour) +* [Hello Worlds](getting_started_materials/hello_worlds) +
+ +
+ Cloud Service Providers + + * [AWS](https://rapids.ai/cloud#aws) + * [Single Instance](https://rapids.ai/cloud#AWS-EC2) + * [Multi GPU Dask](https://rapids.ai/cloud#AWS-Dask) + * [Kubernetes](https://rapids.ai/cloud#AWS-Kubernetes) + * [Sagemaker](https://rapids.ai/cloud#AWS-Sagemaker) + * [Video- Tutorial of RAPIDS on AWS Sagemaker](https://www.youtube.com/watch?v=BtE4d0v6Css) + * [Azure](https://rapids.ai/cloud#azure) + * [Single Instance](https://rapids.ai/cloud#AZ-single) + * [Multi GPU Dask](https://rapids.ai/cloud#AZ-Dask) + * [Kubernetes](https://rapids.ai/cloud#AZ-Kubernetes) + * [AzureML Service](https://rapids.ai/cloud#AZ-ML) + * [Video- Tutorial of RAPIDS on AzureML](https://www.youtube.com/watch?v=aqTmVVFnEwI) + * [GCP](https://rapids.ai/cloud#googlecloud) + * [Single Instance](https://rapids.ai/cloud#GC-single) + * [Multi GPU Dask (Dataproc)](https://rapids.ai/cloud#GC-Dask) + * [Kubernetes](https://rapids.ai/cloud#GC-Kubernetes) + * [CloudAI](https://rapids.ai/cloud#GC-AI) + +
+
+ Multi GPU + +* [Hello Word to Dask](getting_started_materials/hello_worlds/Dask_Hello_World.ipynb) +* [Intro to Dask](getting_started_materials/intro_tutorials_and_guides/03_Introduction_to_Dask.ipynb) +* [Dask using cuDF](getting_started_materials/intro_tutorials_and_guides/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb) +* [Learn RAPIDS Multi GPU Mini Tour (External)](https://github.com/RAPIDSAcademy/rapidsacademy/tree/master/tutorials/multigpu/minitour) +* NYC taxi on Dataproc +* [Weather Analysis](community_tutorials_and_guides/intermediate_notebooks/examples/weather.ipynb) + +
+
+ Streaming Data + +* [Chinmay Chandak's cuStreamz Gists (External)](https://gist.github.com/chinmaychandak) +* [Using cuStreamz to Accelerate your Kafka Datasource (Blog)](https://medium.com/rapids-ai/the-custreamz-series-the-accelerated-kafka-datasource-4faf0baeb3f6) +* [GPU accelerated Stream processing with RAPIDS (Blog)](https://medium.com/rapids-ai/gpu-accelerated-stream-processing-with-rapids-f2b725696a61) +* [Hello World Streaming Data](getting_started_materials/hello_worlds/hello_streamz.ipynb) + +
+
+ NLP + +* [NLP with Hashing Vectorizer (Blog)](https://medium.com/rapids-ai/gpu-text-processing-now-even-simpler-and-faster-bde7e42c8c8a) +* [Show me the Word Count (Archives)](the_archive/archived_rapids_blog_notebooks/nlp/show_me_the_word_count_gutenberg) +
+
+ Graph Analytics +
+
+ GIS/Spatial Analytics -## Intermediate Notebooks: -| Folder | Notebook Title | Description | GPU | Dataset Used | -|-----------|------------------------|-------------------------------------------------------------|------|--------------| -| examples | [linear_regression_demo.ipynb](intermediate_notebooks/examples/linear_regression_demo.ipynb) | This notebook demos how to implement simple and multiple linear regression with cuML to predict median housing price on sklearn's Boston Housing dataset. With corresponding [Medium Story](http://bit.ly/cuml_lin_reg_friend). | SG | [SKLearn Boston Housing](https://scikit-learn.org/stable/datasets/index.html#boston-dataset)| -| examples | [umap_demo_full](intermediate_notebooks/examples/umap_demo_full.ipynb) | In this notebook we will show how to use UMAP and its GPU accelerated implementation present in RAPIDS. | SG | [Fashion MNIST](https://github.com/zalandoresearch/fashion-mnist)| -| examples | [rf_demo](intermediate_notebooks/examples/rf_demo.ipynb) | Demonstration of using both cuml and sklearn to train a RandomForestClassifier on the Higgs dataset. | SG | [Higgs Boson](https://archive.ics.uci.edu/ml/machine-learning-databases/00280/HIGGS.csv.gz) -| examples | [weather](intermediate_notebooks/examples/weather.ipynb) | Demonstration of using Dask and cuDF to process and analyze weather history | MG | [NOAA Annual Weather Data](ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/by_year/) | -| examples -> blazingsql| [BlazingSQL vs Spark](intermediate_notebooks/examples/blazingsql/vs_pyspark_netflow.ipynb) | Analyze 73 million rows of net flow data. Compare BlazingSQL and Apache Spark timings for the same workload. | SG | [University of New South Wales LanL Dataset](https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/) | -| examples -> blazingsql| [Taxi Fare Prediction](intermediate_notebooks/examples/blazingsql/taxi_fare_prediction.ipynb) | Build & test a cuML Linear Regression model to predict the cost of a ride from 20 million rows of NYC Taxi data. | SG | [NYC Taxi Dataset](https://blazingsql-colab.s3.amazonaws.com/taxi_data/taxi_00.csv) | -| examples -> custreamz | [parsing_haproxy_logs](intermediate_notebooks/examples/custreamz/parsing_haproxy_logs.ipynb) | This notebook builds upon the weblogs streaming notebook and demonstrates more advanced features for parsing HAProxy logs. | SG | Self Generated -| examples -> cugraph | [MG Pagerank](intermediate_notebooks/examples/cugraph/multi_gpu_pagerank.ipynb) | Analyze a Twitter dataset (26GB on disk) with 41.7 million users with 1.47 billion social relations (edges) to find out the most influential profiles. | MG | [Twitter](https://s3.us-east-2.amazonaws.com/rapidsai-data/cugraph/benchmark/twitter-2010.csv.gz) | -| E2E -> taxi | [NYCTaxi](intermediate_notebooks/E2E/taxi/NYCTaxi-E2E.ipynb) | Demonstrates multi-node ETL for cleanup of raw data into cleaned train and test dataframes. Shows how to run multi-node XGBoost training with dask-xgboost. **Please Note: requires Google Dataproc to run!** [Blog](https://medium.com/rapids-ai/scale-out-rapids-on-google-cloud-dataproc-8a873233258f) | MG | [Google Dataproc Hosted NYC Taxi Data](https://console.cloud.google.com/storage/browser/anaconda-public-data/nyc-taxi/csv/?pli=1) | -| E2E -> synthetic_3D | [rapids_ml_workflow_demo](intermediate_notebooks/E2E/synthetic_3D/rapids_ml_workflow_demo.ipynb) | A 3D visual showcase of a machine learning workflow with RAPIDS (load data, transform/normalize, train XGBoost model, evaluate accuracy, use model for inference). Along the way we compare the performance gains of RAPIDS [GPU] vs sklearn/pandas methods [CPU]. | SG | SciKit-Learn's demo datasets | -| E2E -> census | [census_education2income_demo](intermediate_notebooks/E2E/census/census_education2income_demo.ipynb) | In this notebook we use 50 years of census data to see how education affects income. | SG | [Custom IPUMS Data pull](https://rapidsai-data.s3.us-east-2.amazonaws.com/datasets/ipums_education2income_1970-2010.csv.gz) -| E2E -> mortgage | [mortgage_e2e](intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb) | This notebook demonstrates multi-GPU ETL and XGBoost for data preprocessing and training on 17 years of [Fannie Mae’s Single-Family Loan Performance Data](http://www.fanniemae.com/portal/funding-the-market/data/loan-performance-data.html). | MG | [Mortgage Loan Data](https://docs.rapids.ai/datasets/mortgage-data) -| benchmarks | [cuml_benchmarks](intermediate_notebooks/benchmarks/cuml_benchmarks.ipynb) | The purpose of this notebook is to extensively benchmark all of the single GPU cuML algorithms against their skLearn counterparts, while also providing the ability to find and verify upper bounds. **Note: Best on large memory GPUs** | SG | Self Generated | -| benchmarks | [rapids_decomposition](intermediate_notebooks/benchmarks/rapids_decomposition.ipynb) | This notebook benchmarks and visualize RAPIDS decomposition methods against each other. You have the opportunity to self-compare it to CPU speeds and methods | SG | SciKit-Learn's demo datasets | -| benchmarks -> cugraph_benchmarks | [louvain_benchmark](intermediate_notebooks/benchmarks/cugraph_benchmarks/louvain_benchmark.ipynb) | This notebook benchmarks performance improvement of running the Louvain clustering algorithm within cuGraph against NetworkX. | SG | Sparse collection | SG | SciKit-Learn's demo datasets | -| benchmarks -> cugraph_benchmarks | [pagerank_benchmark](intermediate_notebooks/benchmarks/cugraph_benchmarks/pagerank_benchmark.ipynb) | This notebook benchmarks performance improvement of running PageRank within cuGraph against NetworkX. | SG | Sparse collection | -| benchmarks -> cugraph_benchmarks | [BFS benchmark](intermediate_notebooks/benchmarks/cugraph_benchmarks/bfs_benchmark.ipynb) | This notebook benchmarks performance improvement of running BFS within cuGraph against NetworkX. | SG | Sparse collection | -| benchmarks -> cugraph_benchmarks | [SSSP_benchmark](intermediate_notebooks/benchmarks/cugraph_benchmarks/sssp_benchmark.ipynb) | This notebook benchmarks performance improvement of running SSSP within cuGraph against NetworkX. | SG | Sparse collection | -| benchmarks -> cugraph_mg_hibench | [MG pagerank_benchmark](intermediate_notebooks/benchmarks/cugraph_mg_hibench/multi_gpu_pagerank.ipynb) | This notebook runs cuGraph's multi-GPU PageRank on a dataset of 300GB. It designed for DGX-2 machines. | MG | [HiBench](https://rapidsai-data.s3.us-east-2.amazonaws.com/cugraph/benchmark/hibench/HiBench_300GB.tar.gz) | ---- +* [Seismic Facies Analysis (External)](https://github.com/NVIDIA/energy-sdk/tree/master/rapids_seismic_facies) +
+
+ Genomics -## Advanced Notebooks: -| Folder | Notebook Title | Description | GPU | Dataset Used | -|-----------|------------------------|----------------------------------------------------------|------|--------------| -| tutorials | [rapids_customized_kernels](advanced_notebooks/tutorials/rapids_customized_kernels.ipynb) | **Archive Only.** This notebook shows how create customized kernels using CUDA to make your workflow in RAPIDS even faster. | SG | Self Generated | ---- + * [Video- GPU accelerated Single Cell Analytics](https://www.youtube.com/watch?v=nYneL_uif3Q) +
+
+ Cybersecurity +* [RAPIDS CLX](https://docs.rapids.ai/api/clx/stable/) + * [CLX API Docs](https://docs.rapids.ai/api/clx/stable/api.html) + * [10 Minutes to CLX](https://docs.rapids.ai/api/clx/stable/10min-clx.html) + * [Getting Started with CLX and Streamz](https://docs.rapids.ai/api/clx/stable/intro-clx-streamz.html) +* [Learn RAPIDS Cyber Security mini Tour (External)](https://github.com/RAPIDSAcademy/rapidsacademy/tree/master/tutorials/security/tour) +* [Cyber Blog Notebooks (Archives)](the_archive/archived_rapids_blog_notebooks/cyber) -## Blog Notebooks: -| Folder | Notebook Title | Description | GPU | Dataset Used | -|-----------|------------------------|------------------------------------------------------------|------|--------------| -| cyber | [flow_classification_rapids](blog_notebooks/cyber/flow_classification/flow_classification_rapids.ipynb) | **Archive Only.** The `cyber` folder contains the associated companion files for the blog [GPU Accelerated Cyber Log Parsing with RAPIDS](https://medium.com/rapids-ai/gpu-accelerated-cyber-log-parsing-with-rapids-10896f57eee9), by Bianca Rhodes US, Bhargav Suryadevara, and Nick Becker. This notebook demonstrates how to load netflow data into cuDF and create a multiclass classification model using XGBoost. Uses [run_raw_data_generator](blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py) | SG | [University of New South Wales LanL Dataset](https://iotanalytics.unsw.edu.au/) | -| cyber | [lanl_network_mapping_using_rapids](blog_notebooks/cyber/network_mapping/lanl_network_mapping_using_rapids.ipynb) | **Archive Only.** The `cyber` folder contains the associated companion files for the blog [GPU Accelerated Cyber Log Parsing with RAPIDS](https://medium.com/rapids-ai/gpu-accelerated-cyber-log-parsing-with-rapids-10896f57eee9), by Bianca Rhodes US, Bhargav Suryadevara, and Nick Becker. This notebook demonstrates how to parse raw windows event logs using cudf and uses cuGraph's pagerank model to build a network graph. Uses [run_raw_data_generator](blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py) | SG | [University of New South Wales LanL Dataset](https://iotanalytics.unsw.edu.au/) | -| databricks | [RAPIDS_PCA_demo_avro_read](blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.ipynb) | The `databricks` folder is the companion file repository to the blog [RAPIDS can now be accessed on Databricks Unified Analytics Platform](https://medium.com/rapids-ai/rapids-can-now-be-accessed-on-databricks-unified-analytics-platform-666e42284bd1) by Ikroop Dhillon, Karthikeyan Rajendran, and Taurean Dyer. This notebooks purpose is to showcase RAPIDS on Databricks use their sample datasets and show the CPU vs GPU comparison for the PCA algorithm. There is also an accompanying HTML file for easy Databricks import. **This notebook is for illustrative purposes only! Do not expect this notebook to successfully run on its own- this notebook's code is replicates a workflow meant to run on a specific platform, `Databricks`** | SG | [RAPIDS Toy Data](https://s3.us-east-2.amazonaws.com/rapidsai-data/datasets/mortgage/mortgage.npy.gz)| -| plasticc | [rapids_lsst_full_demo](blog_notebooks/plasticc/notebooks/rapids_lsst_full_demo.ipynb) | **Archive Only.** This notebook demos the full CPU and GPU implementation of the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). [Updated notebooks found here](conference_notebooks/KDD_2019/plasticc/) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| plasticc | [rapids_lsst_gpu_only_demo](blog_notebooks/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb) | **Archive Only.** This GPU only based notebook shows the RAPIDS speedup of the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). [Updated notebooks found here](conference_notebooks/KDD_2019/plasticc/) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| santander | [cudf_tf_demo](blog_notebooks/santander/cudf_tf_demo.ipynb) | **Archive Only.** This financial industry facing notebook is the cudf-tensorflow approach from the RAPIDS.ai team for Santander Customer Transaction Prediction. Placed 17/8808. [Blog](https://medium.com/rapids-ai/financial-data-modeling-with-rapids-5bca466f348) | SG | [Kaggle Santander Customer Transaction Prediction Dataset]( https://www.kaggle.com/c/santander-customer-transaction-prediction/data) -| santander | [E2E_santander_pandas](blog_notebooks/santander/E2E_santander_pandas.ipynb) | **Archive Only.** This This financial data modelling notebook is the Pandas based version the RAPIDS.ai team's best single model for Santander Customer Transaction Prediction competition. Placed 17/8808. [Blog](https://medium.com/rapids-ai/financial-data-modeling-with-rapids-5bca466f348) | SG | [Kaggle Santander Customer Transaction Prediction Dataset]( https://www.kaggle.com/c/santander-customer-transaction-prediction/data) -| santander | [E2E_santander](blog_notebooks/santander/E2E_santander.ipynb) | **Archive Only.** This financial data modelling notebook is the cuDF based version of the RAPIDS.ai team's best single model for Santander Customer Transaction Prediction competition. It allows you to compare cuDF performance to the Pandas version. Placed 17/8808. [Blog](https://medium.com/rapids-ai/financial-data-modeling-with-rapids-5bca466f348). | SG | [Kaggle Santander Customer Transaction Prediction Dataset]( https://www.kaggle.com/c/santander-customer-transaction-prediction/data) -| regression | [regression_blog_notebook](blog_notebooks/regression/regression_blog_notebook.ipynb) | This is the companion notebook for the blog [Essential Machine Learning with Linear Models in RAPIDS: part 1 of a series](https://medium.com/rapids-ai/essential-machine-learning-with-linear-models-in-rapids-part-1-of-a-series-992fab0240da) by Paul Mahler. It showcases an end to end notebook using the Bike Share dataset and cuML's implementation of ridge regression. | SG | [Bike Share Dataset]() | -| regression | [regression_2_blog](blog_notebooks/regression/regression_2_blog.ipynb) | This is the companion notebook for the blog [Regression Blog 2: We’re Practically Giving These Regressions Away](https://medium.com/rapids-ai/regression-blog-2-were-practically-giving-these-regressions-away-932669f52d3b) by Paul Mahler. It showcases an end to end notebook using the Black Friday dataset and cuML's implementations of L1 and L2 regularizations using Ridge, Lasso, and ElasticNet regression techniques. | SG | [Analytics Vidhya Black Friday Hackathon Dataset](https://datahack.analyticsvidhya.com/contest/black-friday/) | -| NLP | [show_me_the_word_count_gutenberg](blog_notebooks/nlp/show_me_the_word_count_gutenberg/show_me_the_word_count_gutenberg.ipynb) | This is the notebook for blog [Show Me The Word Count](https://medium.com/rapids-ai/show-me-the-word-count-3146e1173801) by Vibhu Jawa, Nick Becker, David Wendt, and Randy Gelhausen. This notebook showcases NLP pre-processing capabilties of nvstrings+cudf on the Gutenberg dataset. | SG | [Gutenburg Dataset](https://web.eecs.umich.edu/~lahiri/gutenberg_dataset.html) | -|cuspatial | [accelerate_geospatial_processing](blog_notebooks/cuspatial/trajectory_clustering.ipynb) | This is the notebook for blog [cuSpatial Accelerates Geospatial and Spatiotemporal Processing](https://medium.com/rapids-ai/releasing-cuspatial-to-accelerate-geospatial-and-spatiotemporal-processing-b686d8b32a9) by Milind Naphade, Jianting Zhang, Shuo Wang, Thomson Comer, Josh Paterson, Keith Kraus, Mark Harris, and Sujit Biswas. This notebook showcases cuSpatial benchmarking of directed Hausdorff distance for computing trajectory clustering on a large dataset. | SG | Trajectories Data and target_intersection.png | -| randomforest | [fruits_rf_notebook](blog_notebooks/randomforest/fruits_rf_notebook.ipynb) | This is the notebook for blog [GPU-accelerated Random Forest]() by Vishal Mehta, Myrto Papadopoulou, Thejaswi Rao. This notebook showcases how to use GPU accelerated Random Forest Classification in cuML. The fruit dataset used is Self generated and used as an example in the [Blog](https://medium.com/rapids-ai/accelerating-random-forests-up-to-45x-using-cuml-dfb782a31bea) | SG | Self Generated -| mortgage deep learning | [mortgage_e2e_deep_learning](blog_notebooks/mortgage_deep_learning/mortgage_e2e_deep_learning.ipynb) | **Archive Only.** This end to end notebook for the blog, [Using RAPIDS with PyTorch](https://medium.com/rapids-ai/using-rapids-with-pytorch-e602da018285), by Even Oldridge, combines the RAPIDS GPU data processing with a PyTorch deep learning neural network to predict mortgage loan delinquency. | MG | [Fannie Mae Mortgage Dataset](https://rapidsai.github.io/demos/datasets/mortgage-data) -| svm | [svc_covertype](blog_notebooks/svm/svc_covertype.ipynb) | This notebook provides supplementary information for the Benchmark section of the [RAPIDS cuML SVC blog](https://nvda.ws/3c3Qy8H) post. | SG | [UCI Forest covertype dataset](https://archive.ics.uci.edu/ml/datasets/covertype) ---- +
+
+ Past Competitions + +- [RAPIDS.AI KGMON Competition Notebooks](the_archive/archived_competition_notebooks/kaggle)- contains a selection of notebooks that were used in Kaggle competitions. +
-## Conference Notebooks: - -| Folder | Notebook Title | Description | GPU | Dataset Used | -| ----------- | ------------------------ | --------------------------------------------------------------- | ---- | ------------ | -| GTC_SJ_2019 | [GTC_tutorial_instructor](conference_notebooks/GTC_SJ_2019/GTC_tutorial_instructor.ipynb) | This is the instructor notebook for the hands on RAPIDS tutorial presented at San Jose's GTC 2019. It contains all the demonstrated solutions. | SG | [Analytics Vidhya Black Friday Hackathon Dataset](https://datahack.analyticsvidhya.com/contest/black-friday/) | -| GTC_SJ_2019 | [GTC_tutorial_student](conference_notebooks/GTC_SJ_2019/GTC_tutorial_student.ipynb) | This is the exercise-filled student notebook for the hands on RAPIDS tutorial presented at San Jose's GTC 2019 | SG | [Analytics Vidhya Black Friday Hackathon Dataset](https://datahack.analyticsvidhya.com/contest/black-friday/) | -| | | | | | -| KDD_2019 | [Cybersecurity_KDD](conference_notebooks/KDD_2019/cyber/Cybersecurity_KDD.ipynb) | Using RAPIDS on network traffic and metadata, we demonstrate how to: 1. Triage and perform data exploration, 2. Model network data as a graph, 3. Perform graph analytics on the graph representation of the cyber network data, and 4. Prepare the results in a way that is suitable for visualization. | SG | [IDS 2018 dataset](https://www.unb.ca/cic/datasets/ids-2018.html) | -| KDD_2019 | [MiningFrequentPatternsFromGraphs](conference_notebooks/KDD_2019/graph_pattern_mining/MiningFrequentPatternsFromGraphs.ipynb) | This notebook uses PC failure metadata, turns it into a coordinate list, and uses cugraph to find frequent patterns about the population that has failed | SG | [Microsoft PC Failure Metadata Graph](https://s3.us-east-2.amazonaws.com/rapidsai-data/datasets/fpm_graph/coo_fpm.csv.lzma) | -| KDD_2019 | [Part 1.1 RNN Feature Engineering](conference_notebooks/KDD_2019/plasticc/Part_1-1_RNN_Feature_Engineering.ipynb) | Part 1.1 of this GPU only based notebook shows the RAPIDS speedup of the the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). - [Introduction found here.](conference_notebooks/KDD_2019/plasticc/Introduction.ipynb) - [Exercise Answers found here](conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb) - [Original submission found here](competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| KDD_2019 | [Part 1.2 RNN Extract Bottleneck](conference_notebooks/KDD_2019/plasticc/Part_1-2_RNN_Extract_Bottleneck.ipynb) | Part 1.2 of this GPU only based notebook shows the RAPIDS speedup of the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). - [Introduction found here.](conference_notebooks/KDD_2019/plasticc/Introduction.ipynb) - [Exercise Answers found here](conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb) - [Original submission found here](competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| KDD_2019 | [Part 2.1 Feature Engineering](contrib/conference_notebooks/KDD_2019/plasticc/Part_2-1_Feature_Engineering.ipynb) | Part 2.1 of this GPU only based notebook shows the RAPIDS speedup of the the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). - [Introduction found here.](conference_notebooks/KDD_2019/plasticc/Introduction.ipynb) - [Exercise Answers found here](conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb) - [Original submission found here](competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| KDD_2019 | [Part 2.2 Train XGBoost & MLP](conference_notebooks/KDD_2019/plasticc/Part_2-2_Train_XGBoost_&_MLP.ipynb) | Part 2.2 of this GPU only based notebook shows the RAPIDS speedup of the the RAPIDS.ai team's model that placed 8/1094 in the PLAsTiCC Astronomical Classification competition. [Blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). - [Introduction found here.](conference_notebooks/KDD_2019/plasticc/Introduction.ipynb) - [Exercise Answers found here](conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb) - [Original submission found here](competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb) | MG | [Kaggle PLAsTiCC-2018 dataset](https://www.kaggle.com/c/PLAsTiCC-2018/data) | -| | | | | | -| SCIPY_2019 | [SCIPY_2019 Tutorial Index](conference_notebooks/SCIPY_2019/index.ipynb) | This index outlines the "getting started" style tutorials within the folder. The tutorials cover cudf, cuml, and cugraph. These tutorials were presented at SCIPY 2019 | SG | Various Self Generated datasets and Zachary Karate Club Data Set | -| | | | | | -| ASONAM 2019 | [Cyber](conference_notebooks/ASONAM_2019/Cyber.ipynb) | Example notebook using RAPIDS to let an organization's security and forensics experts collect vast amounts of network traffic and network metadata and perform fast triage, processing, modeling, and visualization capabilities. | MG | [IDS 2018 dataset](https://www.unb.ca/cic/datasets/ids-2018.html) from the [Canadian Institute for Cybersecurity](https://www.unb.ca/cic/) | -| ASONAM 2019 | [Spotify Playlist](conference_notebooks/ASONAM_2019/Spotify_Playlist.ipynb) | Shows how you can quickly use RAPIDS to explore the Spotify Million Playlist Dataset, which was created for the RecSys 2018 competition, and build a playlist recommender **Note: this dataset requires an independent user download and cannot be pulled from the notebook** | MG | RecSys 2018 competition | -| ASONAM 2019 | [Weighted Link Prediction](conference_notebooks/ASONAM_2019/Weighted_Link_Prediction.ipynb) | This notebook uses cuGraph for Weighted Link Prediction to mitigate uncertainty on the Epinions Trust Network Dataset to predict the likelihood of trust or distrust between vertices. **Note: this dataset requires an independent user download and cannot be pulled from the notebook** | SG | Epinions Trust Network Dataset | -| | | | | | -| KDD 2020 | [KDD 2020](conference_notebooks/KDD_2020/README.md) | Conference material for the KDD 2020 hands-on tutorial | SG | | -| KDD 2020 | [Taxi](conference_notebooks/KDD_2020/notebooks/Taxi/NYCTax.ipynb) | Analysis of the New York City Taxi dataset​. Introductory notebook showing ETL, Statistical Analysis, Machine Learning, Graph, and Visualization | SG | 2016 New York Taxi Data | -| KDD 2020 | [Tabular](conference_notebooks/KDD_2020/notebooks/nvtabular/rossmann-store-sales-example.ipynb) | Perform store sales prediction using tabular deep learning​ | SG | [ Kaggle Rossmann Store Sales competition](https://www.kaggle.com/c/rossmann-store-sales) | -| KDD 2020 | [Cell RNA](conference_notebooks/KDD_2020/notebooks/Lungs/hlca_lung_gpu_analysis.ipynb) | Single-Cell RNA Sequencing Analysis​​ | SG | human lung cells from [Travaglini et al. 2020](https://www.biorxiv.org/content/10.1101/742320v2) | -| KDD 2020 | Parking | Analyzing Seattle Parking data and determining the best parking spot within a walkable distance from Space Needle​​​ | SG | | -| KDD 2020 | CyBERT | Cyber Log Parsing using Neural Networks and Language Based Model​ | SG | | +
+ Benchmarks + +* [MultiGPU PageRank Benchmark (Archived)](the_archive/archived_rapids_benchmarks/cugraph) +* [RAPIDS Decomposition (Archived)](the_archive/archived_rapids_benchmarks/rapids_decomposition.ipynb) + +
+
+ Random Tips and Tricks + +* [Synthetic 3D End-to-End ML Workflow](community_tutorials_and_guides/synthetic) + +
+ +### How-Tos with our Ecosystem Partners + +- [BlazingSQL](#) - these notebooks supplement app.blazingsql.com and provide tutorials for local BlazingSQL workflows. Make List. +- cuStreamz +- [LearnRAPIDS](https://www.learnrapids.com/) +- Graphistry ## Additional Information * The `data` folder also includes the full image set from the [Fashion MNIST dataset](https://github.com/zalandoresearch/fashion-mnist). -* `utils`: contains a set of useful scripts for interacting with RAPIDS Notebooks-Contrib +* `utils`: contains a set of useful scripts for interacting with RAPIDS Community Notebooks + +* For our notebook examples and tutorials found on [github](https://github.com/rapidsai), in each respective repo. -* For our notebook examples and tutorials found in our standard containers, please see the [Notebooks Repo](https://github.com/rapidsai/notebooks) diff --git a/intermediate_notebooks/examples/blazingsql/README.md b/community_tutorials_and_guides/blazingsql/README.md similarity index 100% rename from intermediate_notebooks/examples/blazingsql/README.md rename to community_tutorials_and_guides/blazingsql/README.md diff --git a/intermediate_notebooks/examples/blazingsql/taxi_fare_prediction.ipynb b/community_tutorials_and_guides/blazingsql/bsql_taxi_fare_prediction.ipynb similarity index 87% rename from intermediate_notebooks/examples/blazingsql/taxi_fare_prediction.ipynb rename to community_tutorials_and_guides/blazingsql/bsql_taxi_fare_prediction.ipynb index 483b325e..59b90e59 100644 --- a/intermediate_notebooks/examples/blazingsql/taxi_fare_prediction.ipynb +++ b/community_tutorials_and_guides/blazingsql/bsql_taxi_fare_prediction.ipynb @@ -21,7 +21,7 @@ "metadata": {}, "source": [ "#### BlazingSQL install check\n", - "The next cell checks that you have BlazingSQL installed, and offers to install it if not (making sure the notebook will run as expected)." + "The next cell checks to determine if you have BlazingSQL installed. If you do not have BlazingSQL installed, please first install RAPIDS and BlazingSQL via your preferred installation method (Docker or conda) from our [Release Selector](https://rapids.ai/start.html#rapids-release-selector). " ] }, { @@ -42,10 +42,10 @@ ], "source": [ "import sys \n", - "# point import path notebooks-contrib/utils\n", - "sys.path.append('../../../utils/')\n", + "# point import path notebooks-contrib/utils\n", + "sys.path.append('../../utils/')\n", "from sql_check import bsql_start\n", - "# check that BlazingSQL is installed\n", + "# check that BlazingSQL is installed\n", "bsql_start()" ] }, @@ -118,12 +118,12 @@ "import urllib.request\n", "\n", "# relative path to data folder\n", - "data_dir = '../../../data/blazingsql/'\n", + "data_dir = '../../utils/blazingsql/'\n", "# does folder exist?\n", "if not os.path.exists(data_dir):\n", " print('creating blazingsql directory')\n", " # create folder\n", - " os.system('mkdir ../../data/blazingsql')" + " os.system('mkdir ../../utils/blazingsql')" ] }, { @@ -135,13 +135,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "Downloading https://blazingsql-colab.s3.amazonaws.com/taxi_data/taxi_00.csv to ../../../data/blazingsql/taxi_00.csv\n", - "Downloading https://blazingsql-colab.s3.amazonaws.com/taxi_data/taxi_01.csv to ../../../data/blazingsql/taxi_01.csv\n", - "Downloading https://blazingsql-colab.s3.amazonaws.com/taxi_data/taxi_02.csv to ../../../data/blazingsql/taxi_02.csv\n", - "Downloading https://blazingsql-colab.s3.amazonaws.com/taxi_data/taxi_03.csv to ../../../data/blazingsql/taxi_03.csv\n" + "blazingsql __pycache__ sql_check.py\n", + "env-check.py rapids-colab.sh update_pyarrow.py\n" ] } ], + "source": [ + "!ls ../../utils/" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], "source": [ "# download taxi data\n", "base_url = 'https://blazingsql-colab.s3.amazonaws.com/taxi_data/'\n", @@ -169,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "colab": {}, "colab_type": "code", @@ -277,7 +284,7 @@ "4 -74.012459 40.713932 1.0 " ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -307,7 +314,22 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# delete used dataframes gdf00 etc \n", + "del gdf_00\n", + "del gdf_01\n", + "del gdf_02\n", + "del gdf_03\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -438,7 +460,7 @@ "max 3.537133e+03 2.080000e+02 " ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -459,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", @@ -470,25 +492,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2 µs, sys: 1 µs, total: 3 µs\n", + "CPU times: user 3 µs, sys: 1e+03 ns, total: 4 µs\n", "Wall time: 6.2 µs\n" ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "%time\n", "# make a table from the combined df\n", - "bc.create_table('train_taxi', gdf, column_names=col_names)" + "bc.create_table('train_taxi', gdf)" ] }, { @@ -503,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -615,7 +627,7 @@ "4 1.0 " ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -649,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -710,7 +722,7 @@ "4 10.5" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -735,7 +747,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -751,20 +763,20 @@ "output_type": "stream", "text": [ "Coefficients:\n", - "0 -0.027290\n", - "1 0.003329\n", - "2 0.106803\n", - "3 0.637564\n", + "0 -0.027293\n", + "1 0.003330\n", + "2 0.106819\n", + "3 0.637570\n", "4 0.000871\n", "5 -0.000516\n", - "6 0.092400\n", + "6 0.092438\n", "dtype: float32\n", "\n", "Y intercept:\n", - "3.3568549156188965\n", + "3.356637954711914\n", "\n", - "CPU times: user 689 ms, sys: 590 ms, total: 1.28 s\n", - "Wall time: 1.28 s\n" + "CPU times: user 421 ms, sys: 120 ms, total: 541 ms\n", + "Wall time: 540 ms\n" ] } ], @@ -796,31 +808,31 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "--2020-01-21 17:21:52-- https://blazingsql-demos.s3-us-west-1.amazonaws.com/test.csv\n", - "Resolving blazingsql-demos.s3-us-west-1.amazonaws.com (blazingsql-demos.s3-us-west-1.amazonaws.com)... 52.219.120.105\n", - "Connecting to blazingsql-demos.s3-us-west-1.amazonaws.com (blazingsql-demos.s3-us-west-1.amazonaws.com)|52.219.120.105|:443... connected.\n", + "--2021-04-09 07:34:59-- https://blazingsql-demos.s3-us-west-1.amazonaws.com/test.csv\n", + "Resolving blazingsql-demos.s3-us-west-1.amazonaws.com (blazingsql-demos.s3-us-west-1.amazonaws.com)... 52.219.112.217\n", + "Connecting to blazingsql-demos.s3-us-west-1.amazonaws.com (blazingsql-demos.s3-us-west-1.amazonaws.com)|52.219.112.217|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 982916 (960K) [text/csv]\n", - "Saving to: ‘../../../data/blazingsql/test.csv’\n", + "Saving to: ‘../../data/blazingsql/test.csv.5’\n", "\n", - "test.csv 100%[===================>] 959.88K 2.56MB/s in 0.4s \n", + "test.csv.5 100%[===================>] 959.88K 2.64MB/s in 0.4s \n", "\n", - "2020-01-21 17:21:53 (2.56 MB/s) - ‘../../../data/blazingsql/test.csv’ saved [982916/982916]\n", + "2021-04-09 07:35:00 (2.64 MB/s) - ‘../../data/blazingsql/test.csv.5’ saved [982916/982916]\n", "\n" ] } ], "source": [ "# do we have Test taxi file?\n", - "if not os.path.isfile('../../../data/blazingsql/test.csv'):\n", - " !wget -P ../../../data/blazingsql https://blazingsql-demos.s3-us-west-1.amazonaws.com/test.csv" + "if not os.path.isfile('../../utils/blazingsql/test.csv'):\n", + " !wget -P ../../data/blazingsql https://blazingsql-demos.s3-us-west-1.amazonaws.com/test.csv" ] }, { @@ -832,16 +844,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'/home/jupyter-winston/notebooks-contrib/data/blazingsql/test.csv'" + "'/rapids/notebooks-contrib//data/blazingsql/test.csv'" ] }, - "execution_count": 13, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -849,47 +861,36 @@ "source": [ "# identify path to this notebook, !pwd returns SList w/ path (str) at 0th index\n", "path = !pwd\n", - "# extract path notebooks-contrib then\n", - "path = path[0].split('intermediate_notebooks')[0] \n", + "# extract path community_tutorials_and_guides/blazingsql then\n", + "path = path[0].split('community_tutorials_and_guides/blazingsql')[0] \n", "# add path to data from there\n", - "path = path + 'data/blazingsql/' + 'test.csv'\n", + "path = path + '/data/blazingsql/' + 'test.csv'\n", "# how's it look?\n", "path" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": { "colab": {}, "colab_type": "code", "id": "yRM5PosNiuGh" }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# set column names and types\n", "col_names = ['key', 'fare_amount', 'pickup_longitude', 'pickup_latitude', \n", " 'dropoff_longitude', 'dropoff_latitude', 'passenger_count']\n", "col_types = ['date64', 'float32', 'float32', 'float32', 'float32', 'float32', 'float32']\n", "\n", - "# create test table directly from CSV\n", - "bc.create_table('test_taxi', path, names=col_names, dtype=col_types)" + "# create test table directly from CSV - this doesnt make sense\n", + "bc.create_table('test_taxi', path, names=col_names, dtype=col_types)\n" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": { "colab": {}, "colab_type": "code", @@ -997,7 +998,7 @@ "4 1.0 " ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1031,7 +1032,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": { "colab": {}, "colab_type": "code", @@ -1041,71 +1042,21 @@ { "data": { "text/plain": [ - "0 12.854630\n", - "1 12.854605\n", - "2 11.256927\n", - "3 11.811884\n", - "4 11.811888\n", - "5 11.811880\n", - "6 11.222965\n", - "7 11.222733\n", - "8 11.222973\n", - "9 12.239309\n", - "10 12.239325\n", - "11 12.239347\n", - "12 9.696036\n", - "13 9.696022\n", - "14 11.468582\n", - "15 11.468594\n", - "16 11.460928\n", - "17 11.460958\n", - "18 11.460936\n", - "19 11.460926\n", - "20 13.485119\n", - "21 12.707811\n", - "22 12.707788\n", - "23 12.707800\n", - "24 12.707800\n", - "25 12.707785\n", - "26 12.707952\n", - "27 12.707806\n", - "28 12.707804\n", - "29 12.707785\n", + "0 12.854544\n", + "1 12.854520\n", + "2 11.256961\n", + "3 11.811929\n", + "4 11.811933\n", " ... \n", - "9884 12.643631\n", - "9885 12.643671\n", - "9886 12.643652\n", - "9887 12.643633\n", - "9888 12.643650\n", - "9889 12.643656\n", - "9890 12.643648\n", - "9891 12.643673\n", - "9892 12.643652\n", - "9893 12.643667\n", - "9894 12.643648\n", - "9895 12.643719\n", - "9896 12.643631\n", - "9897 13.454716\n", - "9898 13.212105\n", - "9899 14.138895\n", - "9900 13.368757\n", - "9901 13.635015\n", - "9902 14.171509\n", - "9903 13.832354\n", - "9904 13.669437\n", - "9905 13.259691\n", - "9906 14.138172\n", - "9907 13.452593\n", - "9908 13.717201\n", - "9909 13.714552\n", - "9910 13.157532\n", - "9911 13.419586\n", - "9912 13.657433\n", - "9913 13.259361\n", + "9909 13.714720\n", + "9910 13.157619\n", + "9911 13.419721\n", + "9912 13.657573\n", + "9913 13.259460\n", "Length: 9914, dtype: float32" ] }, - "execution_count": 16, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1120,7 +1071,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": { "colab": {}, "colab_type": "code", @@ -1168,7 +1119,7 @@ " -0.008110\n", " -0.019970\n", " 1.0\n", - " 12.854630\n", + " 12.854544\n", " \n", " \n", " 1\n", @@ -1179,7 +1130,7 @@ " -0.012024\n", " 0.019814\n", " 1.0\n", - " 12.854605\n", + " 12.854520\n", " \n", " \n", " 2\n", @@ -1190,7 +1141,7 @@ " 0.002869\n", " -0.005119\n", " 1.0\n", - " 11.256927\n", + " 11.256961\n", " \n", " \n", " 3\n", @@ -1201,7 +1152,7 @@ " -0.009277\n", " -0.016178\n", " 1.0\n", - " 11.811884\n", + " 11.811929\n", " \n", " \n", " 4\n", @@ -1212,7 +1163,7 @@ " -0.022537\n", " -0.045345\n", " 1.0\n", - " 11.811888\n", + " 11.811933\n", " \n", " \n", "\n", @@ -1227,14 +1178,14 @@ "4 21.0 1.0 12.0 12.0 -0.022537 -0.045345 \n", "\n", " passenger_count predicted_fare \n", - "0 1.0 12.854630 \n", - "1 1.0 12.854605 \n", - "2 1.0 11.256927 \n", - "3 1.0 11.811884 \n", - "4 1.0 11.811888 " + "0 1.0 12.854544 \n", + "1 1.0 12.854520 \n", + "2 1.0 11.256961 \n", + "3 1.0 11.811929 \n", + "4 1.0 11.811933 " ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1246,6 +1197,20 @@ "# how's that look?\n", "X_test.head()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1270,7 +1235,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/intermediate_notebooks/examples/blazingsql/vs_pyspark_netflow.ipynb b/community_tutorials_and_guides/blazingsql/bsql_vs_pyspark_netflow.ipynb similarity index 60% rename from intermediate_notebooks/examples/blazingsql/vs_pyspark_netflow.ipynb rename to community_tutorials_and_guides/blazingsql/bsql_vs_pyspark_netflow.ipynb index e50b7fb1..dd8a7760 100644 --- a/intermediate_notebooks/examples/blazingsql/vs_pyspark_netflow.ipynb +++ b/community_tutorials_and_guides/blazingsql/bsql_vs_pyspark_netflow.ipynb @@ -21,7 +21,7 @@ "metadata": {}, "source": [ "#### BlazingSQL install check\n", - "The next cell checks that you have BlazingSQL installed, and offers to install it if not (making sure the notebook will run as expected)." + "The next cell checks to determine if you have BlazingSQL installed. If you do not have BlazingSQL installed, please first install RAPIDS and BlazingSQL via your preferred installation method (Docker or conda) from our [Release Selector](https://rapids.ai/start.html#rapids-release-selector). " ] }, { @@ -43,7 +43,7 @@ "source": [ "import sys \n", "# point import path notebooks-contrib/utils\n", - "sys.path.append('../../../utils/')\n", + "sys.path.append('../../utils') \n", "from sql_check import bsql_start\n", "# check that BlazingSQL is installed\n", "bsql_start()" @@ -66,17 +66,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "--2020-01-21 17:27:12-- https://blazingsql-colab.s3.amazonaws.com/netflow_data/nf-chunk2.csv\n", - "Resolving blazingsql-colab.s3.amazonaws.com (blazingsql-colab.s3.amazonaws.com)... 52.216.115.3\n", - "Connecting to blazingsql-colab.s3.amazonaws.com (blazingsql-colab.s3.amazonaws.com)|52.216.115.3|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 2725056295 (2.5G) [text/csv]\n", - "Saving to: ‘../../../data/blazingsql/nf-chunk2.csv’\n", - "\n", - "nf-chunk2.csv 100%[===================>] 2.54G 43.5MB/s in 56s \n", - "\n", - "2020-01-21 17:28:14 (46.0 MB/s) - ‘../../../data/blazingsql/nf-chunk2.csv’ saved [2725056295/2725056295]\n", - "\n" + "You've got the data!\n" ] } ], @@ -84,7 +74,7 @@ "import os\n", "\n", "# relative path to data folder\n", - "data_dir = '../../../data/blazingsql/'\n", + "data_dir = '../../data/blazingsql/'\n", "# file name\n", "fn = 'nf-chunk2.csv'\n", "\n", @@ -97,7 +87,7 @@ "# do we have music file?\n", "if not os.path.isfile(data_dir + fn):\n", " # save nf-chunk2 to data folder, may take a few minutes to download (21,526,138 records)\n", - " !wget -P ../../../data/blazingsql https://blazingsql-colab.s3.amazonaws.com/netflow_data/nf-chunk2.csv\n", + " !wget -P ../../data/blazingsql https://blazingsql-colab.s3.amazonaws.com/netflow_data/nf-chunk2.csv\n", "else:\n", " print(\"You've got the data!\")" ] @@ -166,8 +156,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.75 s, sys: 1.19 s, total: 4.94 s\n", - "Wall time: 4.93 s\n" + "CPU times: user 1.63 s, sys: 236 ms, total: 1.87 s\n", + "Wall time: 1.86 s\n" ] } ], @@ -194,19 +184,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 4.11 ms, sys: 23 µs, total: 4.13 ms\n", - "Wall time: 3.32 ms\n" + "CPU times: user 1.36 s, sys: 43.5 ms, total: 1.4 s\n", + "Wall time: 545 ms\n" ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -232,8 +212,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.98 s, sys: 514 ms, total: 2.49 s\n", - "Wall time: 1.95 s\n" + "CPU times: user 567 ms, sys: 52.4 ms, total: 619 ms\n", + "Wall time: 290 ms\n" ] } ], @@ -307,152 +287,152 @@ " \n", " \n", " 0\n", - " 172.10.1.162\n", + " 172.10.1.33\n", " 10.0.0.11\n", - " 87\n", - " 39628\n", - " 53983\n", - " 24\n", - " 2013-04-03 06:50:13\n", - " 2013-04-03 14:58:35\n", - " 87\n", + " 110\n", + " 49886\n", + " 69630\n", + " 0\n", + " 2013-04-03 06:51:58\n", + " 2013-04-03 14:45:47\n", + " 110\n", " \n", " \n", " 1\n", - " 172.30.2.60\n", - " 10.0.0.9\n", - " 82\n", - " 34839\n", - " 47716\n", - " 134\n", - " 2013-04-03 06:48:47\n", - " 2013-04-03 12:12:37\n", - " 82\n", + " 172.30.1.126\n", + " 239.255.255.250\n", + " 9\n", + " 2275\n", + " 0\n", + " 12\n", + " 2013-04-03 06:35:52\n", + " 2013-04-03 12:05:31\n", + " 9\n", " \n", " \n", " 2\n", - " 172.30.1.56\n", - " 172.0.0.1\n", - " 25\n", - " 3330\n", - " 3240\n", - " 67\n", - " 2013-04-03 01:59:09\n", - " 2013-04-03 22:05:39\n", - " 25\n", + " 172.30.2.133\n", + " 239.255.255.250\n", + " 5\n", + " 1225\n", + " 0\n", + " 6\n", + " 2013-04-03 06:36:08\n", + " 2013-04-03 06:36:15\n", + " 5\n", " \n", " \n", " 3\n", - " 172.10.1.234\n", - " 10.0.0.5\n", - " 104\n", - " 47287\n", - " 64750\n", - " 18\n", - " 2013-04-03 06:53:55\n", - " 2013-04-03 15:11:07\n", - " 104\n", + " 172.30.1.149\n", + " 10.0.0.9\n", + " 78\n", + " 35309\n", + " 48556\n", + " 30\n", + " 2013-04-03 06:48:27\n", + " 2013-04-03 11:52:55\n", + " 78\n", " \n", " \n", " 4\n", - " 10.1.0.76\n", - " 172.10.1.82\n", + " 10.0.0.13\n", + " 172.10.1.81\n", " 1\n", " 633\n", " 392\n", " 0\n", - " 2013-04-03 09:55:05\n", - " 2013-04-03 09:55:05\n", + " 2013-04-03 09:48:26\n", + " 2013-04-03 09:48:26\n", " 1\n", " \n", " \n", " 5\n", - " 172.30.1.85\n", - " 10.0.0.8\n", - " 84\n", - " 37828\n", - " 52864\n", + " 172.10.0.5\n", + " 10.247.58.129\n", + " 3\n", + " 1617\n", + " 108\n", + " 4\n", + " 2013-04-03 10:16:11\n", + " 2013-04-03 11:37:15\n", " 3\n", - " 2013-04-03 06:48:21\n", - " 2013-04-03 12:06:53\n", - " 84\n", " \n", " \n", " 6\n", - " 172.30.1.10\n", - " 10.0.0.12\n", - " 69\n", - " 31042\n", - " 43044\n", - " 25\n", - " 2013-04-03 06:48:01\n", - " 2013-04-03 12:11:40\n", - " 69\n", + " 10.0.0.14\n", + " 172.10.2.143\n", + " 1\n", + " 571\n", + " 108\n", + " 0\n", + " 2013-04-03 10:13:57\n", + " 2013-04-03 10:13:57\n", + " 1\n", " \n", " \n", " 7\n", - " 172.30.1.201\n", - " 172.0.0.1\n", - " 29\n", - " 2610\n", - " 2610\n", - " 0\n", - " 2013-04-03 00:26:46\n", - " 2013-04-03 23:06:00\n", - " 29\n", + " 172.10.1.2\n", + " 10.0.0.10\n", + " 97\n", + " 44092\n", + " 61401\n", + " 2\n", + " 2013-04-03 06:48:54\n", + " 2013-04-03 15:05:37\n", + " 97\n", " \n", " \n", " 8\n", - " 172.30.2.125\n", + " 172.10.1.212\n", " 10.0.0.9\n", - " 69\n", - " 30701\n", - " 41558\n", - " 341\n", - " 2013-04-03 06:50:50\n", - " 2013-04-03 12:12:37\n", - " 69\n", + " 102\n", + " 46260\n", + " 64410\n", + " 23\n", + " 2013-04-03 06:50:02\n", + " 2013-04-03 14:31:50\n", + " 102\n", " \n", " \n", " 9\n", - " 172.10.1.89\n", - " 10.0.0.5\n", - " 112\n", - " 51222\n", - " 70260\n", - " 24\n", - " 2013-04-03 06:48:24\n", - " 2013-04-03 15:17:39\n", - " 112\n", + " 172.30.1.160\n", + " 10.0.0.12\n", + " 65\n", + " 29402\n", + " 40520\n", + " 16\n", + " 2013-04-03 06:55:18\n", + " 2013-04-03 11:52:13\n", + " 65\n", " \n", " \n", "\n", "" ], "text/plain": [ - " source destination targetPorts bytesOut bytesIn durationSeconds \\\n", - "0 172.10.1.162 10.0.0.11 87 39628 53983 24 \n", - "1 172.30.2.60 10.0.0.9 82 34839 47716 134 \n", - "2 172.30.1.56 172.0.0.1 25 3330 3240 67 \n", - "3 172.10.1.234 10.0.0.5 104 47287 64750 18 \n", - "4 10.1.0.76 172.10.1.82 1 633 392 0 \n", - "5 172.30.1.85 10.0.0.8 84 37828 52864 3 \n", - "6 172.30.1.10 10.0.0.12 69 31042 43044 25 \n", - "7 172.30.1.201 172.0.0.1 29 2610 2610 0 \n", - "8 172.30.2.125 10.0.0.9 69 30701 41558 341 \n", - "9 172.10.1.89 10.0.0.5 112 51222 70260 24 \n", + " source destination targetPorts bytesOut bytesIn \\\n", + "0 172.10.1.33 10.0.0.11 110 49886 69630 \n", + "1 172.30.1.126 239.255.255.250 9 2275 0 \n", + "2 172.30.2.133 239.255.255.250 5 1225 0 \n", + "3 172.30.1.149 10.0.0.9 78 35309 48556 \n", + "4 10.0.0.13 172.10.1.81 1 633 392 \n", + "5 172.10.0.5 10.247.58.129 3 1617 108 \n", + "6 10.0.0.14 172.10.2.143 1 571 108 \n", + "7 172.10.1.2 10.0.0.10 97 44092 61401 \n", + "8 172.10.1.212 10.0.0.9 102 46260 64410 \n", + "9 172.30.1.160 10.0.0.12 65 29402 40520 \n", "\n", - " firstFlowDate lastFlowDate attemptCount \n", - "0 2013-04-03 06:50:13 2013-04-03 14:58:35 87 \n", - "1 2013-04-03 06:48:47 2013-04-03 12:12:37 82 \n", - "2 2013-04-03 01:59:09 2013-04-03 22:05:39 25 \n", - "3 2013-04-03 06:53:55 2013-04-03 15:11:07 104 \n", - "4 2013-04-03 09:55:05 2013-04-03 09:55:05 1 \n", - "5 2013-04-03 06:48:21 2013-04-03 12:06:53 84 \n", - "6 2013-04-03 06:48:01 2013-04-03 12:11:40 69 \n", - "7 2013-04-03 00:26:46 2013-04-03 23:06:00 29 \n", - "8 2013-04-03 06:50:50 2013-04-03 12:12:37 69 \n", - "9 2013-04-03 06:48:24 2013-04-03 15:17:39 112 " + " durationSeconds firstFlowDate lastFlowDate attemptCount \n", + "0 0 2013-04-03 06:51:58 2013-04-03 14:45:47 110 \n", + "1 12 2013-04-03 06:35:52 2013-04-03 12:05:31 9 \n", + "2 6 2013-04-03 06:36:08 2013-04-03 06:36:15 5 \n", + "3 30 2013-04-03 06:48:27 2013-04-03 11:52:55 78 \n", + "4 0 2013-04-03 09:48:26 2013-04-03 09:48:26 1 \n", + "5 4 2013-04-03 10:16:11 2013-04-03 11:37:15 3 \n", + "6 0 2013-04-03 10:13:57 2013-04-03 10:13:57 1 \n", + "7 2 2013-04-03 06:48:54 2013-04-03 15:05:37 97 \n", + "8 23 2013-04-03 06:50:02 2013-04-03 14:31:50 102 \n", + "9 16 2013-04-03 06:55:18 2013-04-03 11:52:13 65 " ] }, "execution_count": 7, @@ -478,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", @@ -490,18 +470,17 @@ "output_type": "stream", "text": [ "Collecting pyspark\n", - "\u001b[?25l Downloading https://files.pythonhosted.org/packages/87/21/f05c186f4ddb01d15d0ddc36ef4b7e3cedbeb6412274a41f26b55a650ee5/pyspark-2.4.4.tar.gz (215.7MB)\n", - "\u001b[K |################################| 215.7MB 77.0MB/s eta 0:00:011\n", - "\u001b[?25hCollecting py4j==0.10.7 (from pyspark)\n", - "\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n", - "\u001b[K |################################| 204kB 72.4MB/s eta 0:00:01\n", + " Using cached pyspark-3.1.1.tar.gz (212.3 MB)\n", + "Collecting py4j==0.10.9\n", + " Downloading py4j-0.10.9-py2.py3-none-any.whl (198 kB)\n", + "\u001b[K |████████████████████████████████| 198 kB 27.8 MB/s eta 0:00:01\n", "\u001b[?25hBuilding wheels for collected packages: pyspark\n", " Building wheel for pyspark (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pyspark: filename=pyspark-2.4.4-py2.py3-none-any.whl size=216130387 sha256=7879a54a037a812709763c4abf7d3d85b5b9b9f8ac6278785942767dc8032f54\n", - " Stored in directory: /root/.cache/pip/wheels/ab/09/4d/0d184230058e654eb1b04467dbc1292f00eaa186544604b471\n", + "\u001b[?25h Created wheel for pyspark: filename=pyspark-3.1.1-py2.py3-none-any.whl size=212767604 sha256=f924906e4f699df53b02459122288353d7e6790a0d5cb0181040406516c56b44\n", + " Stored in directory: /root/.cache/pip/wheels/43/47/42/bc413c760cf9d3f7b46ab7cd6590e8c47ebfd19a7386cd4a57\n", "Successfully built pyspark\n", "Installing collected packages: py4j, pyspark\n", - "Successfully installed py4j-0.10.7 pyspark-2.4.4\n" + "Successfully installed py4j-0.10.9 pyspark-3.1.1\n" ] } ], @@ -523,7 +502,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -538,8 +517,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 73.4 ms, sys: 27.2 ms, total: 101 ms\n", - "Wall time: 6.59 s\n" + "CPU times: user 39.5 ms, sys: 39.9 ms, total: 79.4 ms\n", + "Wall time: 6.87 s\n" ] } ], @@ -573,7 +552,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -588,8 +567,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 20.4 ms, sys: 33.4 ms, total: 53.8 ms\n", - "Wall time: 48.8 s\n" + "CPU times: user 27.5 ms, sys: 33.8 ms, total: 61.3 ms\n", + "Wall time: 40 s\n" ] } ], @@ -601,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -616,8 +595,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.87 ms, sys: 0 ns, total: 1.87 ms\n", - "Wall time: 28.6 ms\n" + "CPU times: user 1.21 ms, sys: 283 µs, total: 1.49 ms\n", + "Wall time: 155 ms\n" ] } ], @@ -629,7 +608,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -644,19 +623,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "+------------+---------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", - "| source| destination|targetPorts|bytesOut|bytesIn|durationSeconds| firstFlowDate| lastFlowDate|attemptCount|\n", - "+------------+---------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", - "| 172.10.1.13|239.255.255.250| 15| 2975| 0| 6|2013-04-03 06:36:19|2013-04-03 06:36:27| 15|\n", - "|172.30.1.204|239.255.255.250| 8| 1750| 0| 6|2013-04-03 06:36:13|2013-04-03 06:36:20| 8|\n", - "| 172.30.2.86| 172.0.0.1| 1| 540| 0| 2|2013-04-03 06:36:09|2013-04-03 06:36:09| 1|\n", - "|172.30.1.246| 172.0.0.1| 29| 2610| 2610| 0|2013-04-03 00:26:46|2013-04-03 23:06:00| 29|\n", - "| 172.30.1.51|239.255.255.250| 16| 3850| 0| 18|2013-04-03 06:35:22|2013-04-03 06:44:08| 16|\n", - "+------------+---------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", + "+---------+------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", + "| source| destination|targetPorts|bytesOut|bytesIn|durationSeconds| firstFlowDate| lastFlowDate|attemptCount|\n", + "+---------+------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", + "|10.0.0.10| 172.20.1.73| 1| 571| 108| 0|2013-04-03 10:08:30|2013-04-03 10:08:30| 1|\n", + "|10.0.0.10|172.30.1.221| 1| 633| 392| 0|2013-04-03 10:10:39|2013-04-03 10:10:39| 1|\n", + "|10.0.0.10| 172.30.2.67| 1| 633| 392| 0|2013-04-03 10:43:48|2013-04-03 10:43:48| 1|\n", + "|10.0.0.11| 172.20.1.55| 1| 571| 108| 0|2013-04-03 10:11:52|2013-04-03 10:11:52| 1|\n", + "|10.0.0.11|172.30.1.245| 3| 1837| 892| 0|2013-04-03 09:45:12|2013-04-03 11:27:32| 3|\n", + "+---------+------------+-----------+--------+-------+---------------+-------------------+-------------------+------------+\n", "only showing top 5 rows\n", "\n", - "CPU times: user 12.1 ms, sys: 11.2 ms, total: 23.4 ms\n", - "Wall time: 21.1 s\n" + "CPU times: user 33 ms, sys: 24.3 ms, total: 57.3 ms\n", + "Wall time: 38.8 s\n" ] } ], @@ -712,7 +691,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/community_tutorials_and_guides/census_education2income_demo.ipynb b/community_tutorials_and_guides/census_education2income_demo.ipynb new file mode 100644 index 00000000..f724a6d0 --- /dev/null +++ b/community_tutorials_and_guides/census_education2income_demo.ipynb @@ -0,0 +1,1496 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Census Notebook\n", + "**Authorship**
\n", + "Original Author: Taurean Dyer
\n", + "Last Edit: Taurean Dyer, 9/26/2019
\n", + "\n", + "**Test System Specs**
\n", + "Test System Hardware: GV100
\n", + "Test System Software: Ubuntu 18.04
\n", + "RAPIDS Version: 0.10.0a - Docker Install
\n", + "Driver: 410.79
\n", + "CUDA: 10.0
\n", + "\n", + "\n", + "**Known Working Systems**
\n", + "RAPIDS Versions:0.8, 0.9, 0.10\n", + "\n", + "# Intro\n", + "Held every 10 years, the US census gives a detailed snapshot in time about the makeup of the country. The last census in 2010 surveyed nearly 309 million people. IPUMS.org provides researchers an open source data set with 1% to 10% of the census data set. In this notebook, we want to see how education affects total income earned in the US based on data from each census from the 1970 to 2010 and see if we can predict some results if the census was held today, according to the national average. We will go through the ETL, training the model, and then testing the prediction. We'll make every effort to get as balanced of a dataset as we can. We'll also pull some extra variables to allow for further self-exploration of gender based education and income breakdowns. On a single Titan RTX, you can run the whole notebook workflow on the 4GB dataset of 14 million rows by 44 columns in less than 3 minutes. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Let's begin!**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import cuml\n", + "import cudf\n", + "import dask_cudf\n", + "import sys\n", + "import os\n", + "from pprint import pprint\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get your data!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 1
  • \n", + "
  • Cores: 1
  • \n", + "
  • Memory: 16.48 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import urllib.request\n", + "import time\n", + "\n", + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "\n", + "cluster = LocalCUDACluster()\n", + "client = Client(cluster)\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ipums dataset is in our S3 bucket and zipped. \n", + "1. We'll need to create a folder for our data in the `/data` folder\n", + "1. Download the zipped data into that folder from S3\n", + "1. Load the zipped data quickly into cudf using it's read_csv() parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "creating census data directory\n" + ] + } + ], + "source": [ + "data_dir = '../data/census/'\n", + "if not os.path.exists(data_dir):\n", + " print('creating census data directory')\n", + " os.system('mkdir ../data/census/')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading https://rapidsai-data.s3.us-east-2.amazonaws.com/datasets/ipums_education2income_1970-2010.csv.gz to ../data/census/ipums_education2income_1970-2010.csv.gz\n" + ] + } + ], + "source": [ + "# download the IPUMS dataset\n", + "base_url = 'https://rapidsai-data.s3.us-east-2.amazonaws.com/datasets/'\n", + "fn = 'ipums_education2income_1970-2010.csv.gz'\n", + "if not os.path.isfile(data_dir+fn):\n", + " print(f'Downloading {base_url+fn} to {data_dir+fn}')\n", + " urllib.request.urlretrieve(base_url+fn, data_dir+fn)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def load_data(cached = data_dir+fn):\n", + " if os.path.exists(cached):\n", + " print('use ipums data')\n", + " X = cudf.read_csv(cached, compression='infer')\n", + " else:\n", + " print(\"No data found! Please check your that your data directory is ../../data/census/ and that you downloaded the data. If you did, please delete the `../../../data/census/` directory and try the above 2 cells again\")\n", + " X = null\n", + " return X" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "use ipums data\n", + "data (100, 45)\n" + ] + } + ], + "source": [ + "df = load_data(data_dir+fn)\n", + "# limit\n", + "df = df[0:100]\n", + "print('data',df.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " YEAR DATANUM SERIAL CBSERIAL HHWT CPI99 GQ QGQ PERNUM PERWT ... \\\n", + "0 1970 2 1 NaN 100 4.54 1 0.0 1 100 ... \n", + "1 1970 2 1 NaN 100 4.54 1 0.0 2 100 ... \n", + "2 1970 2 2 NaN 100 4.54 1 0.0 1 100 ... \n", + "3 1970 2 2 NaN 100 4.54 1 0.0 2 100 ... \n", + "4 1970 2 4 NaN 100 4.54 1 0.0 1 100 ... \n", + "\n", + " EDUCD_POP EDUCD_SP EDUCD_MOM2 EDUCD_POP2 INCTOT_HEAD INCTOT_MOM \\\n", + "0 NaN 30.0 NaN NaN 12450.0 NaN \n", + "1 NaN 60.0 NaN NaN 12450.0 NaN \n", + "2 NaN 60.0 NaN NaN 9050.0 NaN \n", + "3 NaN 70.0 NaN NaN 9050.0 NaN \n", + "4 NaN 23.0 NaN NaN 7450.0 NaN \n", + "\n", + " INCTOT_POP INCTOT_SP INCTOT_MOM2 INCTOT_POP2 \n", + "0 NaN 3450.0 NaN NaN \n", + "1 NaN 12450.0 NaN NaN \n", + "2 NaN 0.0 NaN NaN \n", + "3 NaN 9050.0 NaN NaN \n", + "4 NaN 650.0 NaN NaN \n", + "\n", + "[5 rows x 45 columns]\n" + ] + } + ], + "source": [ + "print(df.head(5).to_pandas())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "YEAR int64\n", + "DATANUM int64\n", + "SERIAL int64\n", + "CBSERIAL float64\n", + "HHWT int64\n", + "CPI99 float64\n", + "GQ int64\n", + "QGQ float64\n", + "PERNUM int64\n", + "PERWT int64\n", + "SEX int64\n", + "AGE int64\n", + "EDUC int64\n", + "EDUCD int64\n", + "INCTOT int64\n", + "SEX_HEAD float64\n", + "SEX_MOM float64\n", + "SEX_POP float64\n", + "SEX_SP float64\n", + "SEX_MOM2 float64\n", + "SEX_POP2 float64\n", + "AGE_HEAD float64\n", + "AGE_MOM float64\n", + "AGE_POP float64\n", + "AGE_SP float64\n", + "AGE_MOM2 float64\n", + "AGE_POP2 float64\n", + "EDUC_HEAD float64\n", + "EDUC_MOM float64\n", + "EDUC_POP float64\n", + "EDUC_SP float64\n", + "EDUC_MOM2 float64\n", + "EDUC_POP2 float64\n", + "EDUCD_HEAD float64\n", + "EDUCD_MOM float64\n", + "EDUCD_POP float64\n", + "EDUCD_SP float64\n", + "EDUCD_MOM2 float64\n", + "EDUCD_POP2 float64\n", + "INCTOT_HEAD float64\n", + "INCTOT_MOM float64\n", + "INCTOT_POP float64\n", + "INCTOT_SP float64\n", + "INCTOT_MOM2 float64\n", + "INCTOT_POP2 float64\n", + "dtype: object" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1970 100\n", + "Name: YEAR, dtype: int32\n" + ] + } + ], + "source": [ + "original_counts = df.YEAR.value_counts()\n", + "print(original_counts) ### Remember these numbers!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ETL" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cleaning Income data\n", + "First, let's focus on cleaning out the bad values for Total Income `INCTOT`. First, let's see if there are an `N/A` values, as when we did `head()`, we saw some in other columns, like CBSERIAL" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "df['INCTOT_NA'] = df['INCTOT'].isna()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False 100\n", + "Name: INCTOT_NA, dtype: int32\n" + ] + } + ], + "source": [ + "print(df.INCTOT_NA.value_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Okay, great, there are no `N/A`s...or are there? Let's drop `INCTOT_NA` and see what our value counts look like" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9999999 21\n", + "0 14\n", + "250 4\n", + "4050 3\n", + "5050 3\n", + "350 3\n", + "2050 3\n", + "9050 2\n", + "4850 2\n", + "650 2\n", + "2150 2\n", + "1250 2\n", + "22150 1\n", + "5650 1\n", + "17850 1\n", + "1050 1\n", + "11250 1\n", + "5550 1\n", + "50 1\n", + "16850 1\n", + "11150 1\n", + "4350 1\n", + "7450 1\n", + "13350 1\n", + "6950 1\n", + "25050 1\n", + "1850 1\n", + "2450 1\n", + "17150 1\n", + "6150 1\n", + "12450 1\n", + "11450 1\n", + "4550 1\n", + "50000 1\n", + "550 1\n", + "8850 1\n", + "8050 1\n", + "6050 1\n", + "19350 1\n", + "2950 1\n", + "150 1\n", + "1150 1\n", + "2750 1\n", + "7150 1\n", + "15050 1\n", + "7750 1\n", + "3450 1\n", + "5350 1\n", + "7050 1\n", + "950 1\n", + "12050 1\n", + "Name: INCTOT, dtype: int32\n" + ] + } + ], + "source": [ + "df=df.drop('INCTOT_NA', axis=1)\n", + "print(df.INCTOT.value_counts().to_pandas()) ### Wow, look how many people in America make $10,000,000! Wait a minutes... " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not that many people make $10M a year. Checking https://usa.ipums.org/usa-action/variables/INCTOT#codes_section, `9999999`is INCTOT's code for `N/A`. That was why when we ran `isna`, RAPIDS won't find any. Let's first create a new dataframe that is only NA values, then let's pull those encoded `N/A`s out of our working dataframe!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data (100, 45)\n" + ] + } + ], + "source": [ + "print('data',df.shape)\n", + "tdf = df.query('INCTOT == 9999999')\n", + "df = df.query('INCTOT != 9999999')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "working data (79, 45)\n", + "junk count data (21, 45)\n" + ] + } + ], + "source": [ + "print('working data',df.shape)\n", + "print('junk count data',tdf.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're down by nearly 1/4 of our original dataset size. For the curious, now we should be able to get accurate Total Income data, by year, not taking into account inflation" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "YEAR\n", + "1970 5503.797468\n", + "Name: INCTOT, dtype: float64\n" + ] + } + ], + "source": [ + "print(df.groupby('YEAR')['INCTOT'].mean()) # without that cleanup, the average would have bene in the millions...." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Normalize Income for inflation\n", + "Now that we have reduced our dataframe to a baseline clean data to answer our question, we should normalize the amounts for inflation. `CPI99`is the value that IPUMS uses to contian the inflation factor. All we have to do is multipy by year. Let's see how that changes the Total Income values from just above!" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "YEAR\n", + "1970 4.54\n", + "Name: CPI99, dtype: float64\n", + "YEAR\n", + "1970 24987.240506\n", + "Name: INCTOT, dtype: float64\n" + ] + } + ], + "source": [ + "print(df.groupby('YEAR')['CPI99'].mean()) ## it just returns the CPI99\n", + "df['INCTOT'] = df['INCTOT'] * df['CPI99']\n", + "print(df.groupby('YEAR')['INCTOT'].mean()) ## let's see what we got!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cleaning Education Data\n", + "Okay, great! Now we have income cleaned up, it should also have cleaned much of our next sets of values of interes, namely Education and Education Detailed. However, there are still some `N/A`s in key variables to worry about, which can cause problmes later. Let's create a list of them..." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "suspect = ['CBSERIAL','EDUC', 'EDUCD', 'EDUC_HEAD', 'EDUC_POP', 'EDUC_MOM','EDUCD_MOM2','EDUCD_POP2', 'INCTOT_MOM','INCTOT_POP','INCTOT_MOM2','INCTOT_POP2', 'INCTOT_HEAD']" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CBSERIAL -1.0 79\n", + "Name: CBSERIAL, dtype: int32\n", + "EDUC 6 22\n", + "2 15\n", + "10 8\n", + "3 7\n", + "4 7\n", + "11 6\n", + "8 5\n", + "7 4\n", + "1 3\n", + "5 1\n", + "9 1\n", + "Name: EDUC, dtype: int32\n", + "EDUCD 60 20\n", + "26 9\n", + "100 8\n", + "30 7\n", + "40 7\n", + "111 6\n", + "80 5\n", + "70 4\n", + "25 3\n", + "23 2\n", + "14 2\n", + "65 2\n", + "90 1\n", + "50 1\n", + "22 1\n", + "17 1\n", + "Name: EDUCD, dtype: int32\n", + "EDUC_HEAD 6.0 13\n", + " 11.0 12\n", + " 8.0 10\n", + " 2.0 10\n", + " 7.0 9\n", + " 10.0 9\n", + " 4.0 6\n", + " 1.0 4\n", + " 3.0 3\n", + " 5.0 2\n", + "-1.0 1\n", + "Name: EDUC_HEAD, dtype: int32\n", + "EDUC_POP -1.0 68\n", + " 8.0 3\n", + " 7.0 3\n", + " 2.0 2\n", + " 11.0 2\n", + " 10.0 1\n", + "Name: EDUC_POP, dtype: int32\n", + "EDUC_MOM -1.0 64\n", + " 6.0 8\n", + " 10.0 3\n", + " 3.0 2\n", + " 7.0 1\n", + " 2.0 1\n", + "Name: EDUC_MOM, dtype: int32\n", + "EDUCD_MOM2 -1.0 79\n", + "Name: EDUCD_MOM2, dtype: int32\n", + "EDUCD_POP2 -1.0 79\n", + "Name: EDUCD_POP2, dtype: int32\n", + "INCTOT_MOM -1.0 64\n", + " 0.0 4\n", + " 650.0 3\n", + " 2050.0 2\n", + " 4850.0 2\n", + " 1150.0 2\n", + " 7750.0 1\n", + " 1250.0 1\n", + "Name: INCTOT_MOM, dtype: int32\n", + "INCTOT_POP -1.0 68\n", + " 12050.0 3\n", + " 50000.0 2\n", + " 8850.0 2\n", + " 7050.0 2\n", + " 17850.0 1\n", + " 13350.0 1\n", + "Name: INCTOT_POP, dtype: int32\n", + "INCTOT_MOM2 -1.0 79\n", + "Name: INCTOT_MOM2, dtype: int32\n", + "INCTOT_POP2 -1.0 79\n", + "Name: INCTOT_POP2, dtype: int32\n", + "INCTOT_HEAD 12050.0 5\n", + " 50000.0 4\n", + " 9050.0 4\n", + " 8850.0 4\n", + " 5050.0 4\n", + " 7050.0 4\n", + " 11250.0 3\n", + " 17850.0 3\n", + " 13350.0 3\n", + " 8050.0 3\n", + " 2150.0 3\n", + " 25050.0 2\n", + " 4850.0 2\n", + " 250.0 2\n", + " 4050.0 2\n", + " 22150.0 2\n", + " 6150.0 2\n", + " 7450.0 2\n", + " 2450.0 2\n", + " 7750.0 2\n", + " 11450.0 2\n", + " 11150.0 2\n", + " 6950.0 2\n", + " 15050.0 2\n", + " 19350.0 2\n", + " 12450.0 2\n", + " 16850.0 2\n", + " 6050.0 2\n", + " 2050.0 1\n", + " 0.0 1\n", + "-1.0 1\n", + " 1250.0 1\n", + " 17150.0 1\n", + "Name: INCTOT_HEAD, dtype: int32\n" + ] + } + ], + "source": [ + "for i in range(0, len(suspect)):\n", + " df[suspect[i]] = df[suspect[i]].fillna(-1)\n", + " print(suspect[i], df[suspect[i]].value_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's get drop any rows of any `-1`s in Education and Education Detailed." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDUC\n", + "EDUCD\n" + ] + } + ], + "source": [ + "totincome = ['EDUC','EDUCD']\n", + "for i in range(0, len(totincome)):\n", + " query = totincome[i] + ' != -1'\n", + " df = df.query(query)\n", + " print(totincome[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(79, 45)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
YEARDATANUMSERIALCBSERIALHHWTCPI99GQQGQPERNUMPERWT...EDUCD_POPEDUCD_SPEDUCD_MOM2EDUCD_POP2INCTOT_HEADINCTOT_MOMINCTOT_POPINCTOT_SPINCTOT_MOM2INCTOT_POP2
0197021-1.01004.5410.01100...NaN30.0-1.0-1.012450.0-1.0-1.03450.0-1.0-1.0
1197021-1.01004.5410.02100...NaN60.0-1.0-1.012450.0-1.0-1.012450.0-1.0-1.0
2197022-1.01004.5410.01100...NaN60.0-1.0-1.09050.0-1.0-1.00.0-1.0-1.0
3197022-1.01004.5410.02100...NaN70.0-1.0-1.09050.0-1.0-1.09050.0-1.0-1.0
4197024-1.01004.5410.01100...NaN23.0-1.0-1.07450.0-1.0-1.0650.0-1.0-1.0
\n", + "

5 rows × 45 columns

\n", + "
" + ], + "text/plain": [ + " YEAR DATANUM SERIAL CBSERIAL HHWT CPI99 GQ QGQ PERNUM PERWT ... \\\n", + "0 1970 2 1 -1.0 100 4.54 1 0.0 1 100 ... \n", + "1 1970 2 1 -1.0 100 4.54 1 0.0 2 100 ... \n", + "2 1970 2 2 -1.0 100 4.54 1 0.0 1 100 ... \n", + "3 1970 2 2 -1.0 100 4.54 1 0.0 2 100 ... \n", + "4 1970 2 4 -1.0 100 4.54 1 0.0 1 100 ... \n", + "\n", + " EDUCD_POP EDUCD_SP EDUCD_MOM2 EDUCD_POP2 INCTOT_HEAD INCTOT_MOM \\\n", + "0 NaN 30.0 -1.0 -1.0 12450.0 -1.0 \n", + "1 NaN 60.0 -1.0 -1.0 12450.0 -1.0 \n", + "2 NaN 60.0 -1.0 -1.0 9050.0 -1.0 \n", + "3 NaN 70.0 -1.0 -1.0 9050.0 -1.0 \n", + "4 NaN 23.0 -1.0 -1.0 7450.0 -1.0 \n", + "\n", + " INCTOT_POP INCTOT_SP INCTOT_MOM2 INCTOT_POP2 \n", + "0 -1.0 3450.0 -1.0 -1.0 \n", + "1 -1.0 12450.0 -1.0 -1.0 \n", + "2 -1.0 0.0 -1.0 -1.0 \n", + "3 -1.0 9050.0 -1.0 -1.0 \n", + "4 -1.0 650.0 -1.0 -1.0 \n", + "\n", + "[5 rows x 45 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(df.shape)\n", + "df.head().to_pandas().head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Well, the good news is that we lost no further rows, start to normalize the data so when we do our OLS, one year doesn't unfairly dominate the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Normalize the Data\n", + "The in the last step, need to keep our data at about the same ratio as we when started (1% of the population), with the exception of 1980, which was a 5% and needs to be reduced. This is why we kept the temp dataframe `tdf` - to get the counts per year. we will find out just how many have to realize" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Working data: \n", + " 1970 79\n", + "Name: YEAR, dtype: int32\n", + "junk count data: \n", + " 1970 21\n", + "Name: YEAR, dtype: int32\n" + ] + } + ], + "source": [ + "print('Working data: \\n', df.YEAR.value_counts())\n", + "print('junk count data: \\n', tdf.YEAR.value_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now, so that we can do MSE, let's make all the dtypes the same. " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "YEAR int64\n", + "DATANUM int64\n", + "SERIAL int64\n", + "CBSERIAL float64\n", + "HHWT int64\n", + "CPI99 float64\n", + "GQ int64\n", + "QGQ float64\n", + "PERNUM int64\n", + "PERWT int64\n", + "SEX int64\n", + "AGE int64\n", + "EDUC int64\n", + "EDUCD int64\n", + "INCTOT float64\n", + "SEX_HEAD float64\n", + "SEX_MOM float64\n", + "SEX_POP float64\n", + "SEX_SP float64\n", + "SEX_MOM2 float64\n", + "SEX_POP2 float64\n", + "AGE_HEAD float64\n", + "AGE_MOM float64\n", + "AGE_POP float64\n", + "AGE_SP float64\n", + "AGE_MOM2 float64\n", + "AGE_POP2 float64\n", + "EDUC_HEAD float64\n", + "EDUC_MOM float64\n", + "EDUC_POP float64\n", + "EDUC_SP float64\n", + "EDUC_MOM2 float64\n", + "EDUC_POP2 float64\n", + "EDUCD_HEAD float64\n", + "EDUCD_MOM float64\n", + "EDUCD_POP float64\n", + "EDUCD_SP float64\n", + "EDUCD_MOM2 float64\n", + "EDUCD_POP2 float64\n", + "INCTOT_HEAD float64\n", + "INCTOT_MOM float64\n", + "INCTOT_POP float64\n", + "INCTOT_SP float64\n", + "INCTOT_MOM2 float64\n", + "INCTOT_POP2 float64\n", + "dtype: object" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "YEAR 1970 79\n", + "Name: YEAR, dtype: int32\n", + "DATANUM 2 79\n", + "Name: DATANUM, dtype: int32\n", + "SERIAL 18 5\n", + "14 4\n", + "37 4\n", + "31 4\n", + "32 3\n", + "39 3\n", + "16 3\n", + "10 3\n", + "5 2\n", + "26 2\n", + "25 2\n", + "20 2\n", + "38 2\n", + "13 2\n", + "21 2\n", + "4 2\n", + "36 2\n", + "1 2\n", + "19 2\n", + "33 2\n", + "22 2\n", + "7 2\n", + "17 2\n", + "9 2\n", + "27 2\n", + "2 2\n", + "15 2\n", + "34 2\n", + "29 2\n", + "23 1\n", + "28 1\n", + "6 1\n", + "30 1\n", + "24 1\n", + "35 1\n", + "11 1\n", + "8 1\n", + "Name: SERIAL, dtype: int32\n", + "CBSERIAL -1.0 79\n", + "Name: CBSERIAL, dtype: int32\n", + "HHWT 100 79\n", + "Name: HHWT, dtype: int32\n", + "GQ 1 78\n", + "3 1\n", + "Name: GQ, dtype: int32\n", + "PERNUM 1 37\n", + "2 29\n", + "3 8\n", + "4 4\n", + "5 1\n", + "Name: PERNUM, dtype: int32\n", + "SEX 2 42\n", + "1 37\n", + "Name: SEX, dtype: int32\n", + "AGE 32 4\n", + "54 4\n", + "14 3\n", + "40 3\n", + "36 3\n", + "31 3\n", + "15 3\n", + "23 2\n", + "64 2\n", + "61 2\n", + "25 2\n", + "20 2\n", + "77 2\n", + "66 2\n", + "62 2\n", + "35 2\n", + "47 2\n", + "43 2\n", + "41 2\n", + "55 2\n", + "16 2\n", + "56 1\n", + "38 1\n", + "52 1\n", + "63 1\n", + "65 1\n", + "44 1\n", + "86 1\n", + "30 1\n", + "59 1\n", + "21 1\n", + "75 1\n", + "49 1\n", + "37 1\n", + "19 1\n", + "39 1\n", + "98 1\n", + "79 1\n", + "70 1\n", + "18 1\n", + "22 1\n", + "17 1\n", + "51 1\n", + "27 1\n", + "57 1\n", + "68 1\n", + "74 1\n", + "78 1\n", + "82 1\n", + "Name: AGE, dtype: int32\n", + "INCTOT 0.0 14\n", + "1135.0 4\n", + "18387.0 3\n", + "1589.0 3\n", + "22927.0 3\n", + "9307.0 3\n", + "5675.0 2\n", + "22019.0 2\n", + "9761.0 2\n", + "41087.0 2\n", + "2951.0 2\n", + "681.0 1\n", + "12485.0 1\n", + "19749.0 1\n", + "227.0 1\n", + "4313.0 1\n", + "35185.0 1\n", + "227000.0 1\n", + "32461.0 1\n", + "31553.0 1\n", + "25651.0 1\n", + "76499.0 1\n", + "113727.0 1\n", + "8399.0 1\n", + "68327.0 1\n", + "54707.0 1\n", + "5221.0 1\n", + "2497.0 1\n", + "56523.0 1\n", + "4767.0 1\n", + "60609.0 1\n", + "40179.0 1\n", + "51075.0 1\n", + "27921.0 1\n", + "25197.0 1\n", + "77861.0 1\n", + "81039.0 1\n", + "36547.0 1\n", + "13393.0 1\n", + "32007.0 1\n", + "11123.0 1\n", + "87849.0 1\n", + "15663.0 1\n", + "24289.0 1\n", + "20657.0 1\n", + "100561.0 1\n", + "33823.0 1\n", + "27467.0 1\n", + "50621.0 1\n", + "51983.0 1\n", + "Name: INCTOT, dtype: int32\n", + "EDUC 6 22\n", + "2 15\n", + "10 8\n", + "3 7\n", + "4 7\n", + "11 6\n", + "8 5\n", + "7 4\n", + "1 3\n", + "5 1\n", + "9 1\n", + "Name: EDUC, dtype: int32\n", + "EDUCD 60 20\n", + "26 9\n", + "100 8\n", + "30 7\n", + "40 7\n", + "111 6\n", + "80 5\n", + "70 4\n", + "25 3\n", + "23 2\n", + "14 2\n", + "65 2\n", + "90 1\n", + "50 1\n", + "22 1\n", + "17 1\n", + "Name: EDUCD, dtype: int32\n", + "EDUC_HEAD 6.0 13\n", + " 11.0 12\n", + " 8.0 10\n", + " 2.0 10\n", + " 7.0 9\n", + " 10.0 9\n", + " 4.0 6\n", + " 1.0 4\n", + " 3.0 3\n", + " 5.0 2\n", + "-1.0 1\n", + "Name: EDUC_HEAD, dtype: int32\n", + "EDUC_POP -1.0 68\n", + " 8.0 3\n", + " 7.0 3\n", + " 2.0 2\n", + " 11.0 2\n", + " 10.0 1\n", + "Name: EDUC_POP, dtype: int32\n", + "EDUC_MOM -1.0 64\n", + " 6.0 8\n", + " 10.0 3\n", + " 3.0 2\n", + " 7.0 1\n", + " 2.0 1\n", + "Name: EDUC_MOM, dtype: int32\n", + "EDUCD_MOM2 -1.0 79\n", + "Name: EDUCD_MOM2, dtype: int32\n", + "EDUCD_POP2 -1.0 79\n", + "Name: EDUCD_POP2, dtype: int32\n", + "INCTOT_MOM -1.0 64\n", + " 0.0 4\n", + " 650.0 3\n", + " 2050.0 2\n", + " 4850.0 2\n", + " 1150.0 2\n", + " 7750.0 1\n", + " 1250.0 1\n", + "Name: INCTOT_MOM, dtype: int32\n", + "INCTOT_POP -1.0 68\n", + " 12050.0 3\n", + " 50000.0 2\n", + " 8850.0 2\n", + " 7050.0 2\n", + " 17850.0 1\n", + " 13350.0 1\n", + "Name: INCTOT_POP, dtype: int32\n", + "INCTOT_MOM2 -1.0 79\n", + "Name: INCTOT_MOM2, dtype: int32\n", + "INCTOT_POP2 -1.0 79\n", + "Name: INCTOT_POP2, dtype: int32\n", + "INCTOT_HEAD 12050.0 5\n", + " 50000.0 4\n", + " 9050.0 4\n", + " 8850.0 4\n", + " 5050.0 4\n", + " 7050.0 4\n", + " 11250.0 3\n", + " 17850.0 3\n", + " 13350.0 3\n", + " 8050.0 3\n", + " 2150.0 3\n", + " 25050.0 2\n", + " 4850.0 2\n", + " 250.0 2\n", + " 4050.0 2\n", + " 22150.0 2\n", + " 6150.0 2\n", + " 7450.0 2\n", + " 2450.0 2\n", + " 7750.0 2\n", + " 11450.0 2\n", + " 11150.0 2\n", + " 6950.0 2\n", + " 15050.0 2\n", + " 19350.0 2\n", + " 12450.0 2\n", + " 16850.0 2\n", + " 6050.0 2\n", + " 2050.0 1\n", + " 0.0 1\n", + "-1.0 1\n", + " 1250.0 1\n", + " 17150.0 1\n", + "Name: INCTOT_HEAD, dtype: int32\n", + "SEX_HEAD 1.0 71\n", + " 2.0 7\n", + "-1.0 1\n", + "Name: SEX_HEAD, dtype: int32\n" + ] + } + ], + "source": [ + "\n", + "keep_cols = ['YEAR', 'DATANUM', 'SERIAL', 'CBSERIAL', 'HHWT', 'GQ', 'PERNUM', 'SEX', 'AGE', 'INCTOT', 'EDUC', 'EDUCD', 'EDUC_HEAD', 'EDUC_POP', 'EDUC_MOM','EDUCD_MOM2','EDUCD_POP2', 'INCTOT_MOM','INCTOT_POP','INCTOT_MOM2','INCTOT_POP2', 'INCTOT_HEAD', 'SEX_HEAD']\n", + "df = df.loc[:, keep_cols]\n", + "#df = df.drop(col for col in df.columns if col not in keep_cols)\n", + "for i in range(0, len(keep_cols)):\n", + " df[keep_cols[i]] = df[keep_cols[i]].fillna(-1)\n", + " print(keep_cols[i], df[keep_cols[i]].value_counts())\n", + " df[keep_cols[i]]= df[keep_cols[i]].astype('float64')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "## I WANTED TO REDUCE THE 1980 SAMPLE HERE, BUT .SAMPLE() IS NEEDED AND NOT WORKING, UNLESS THERE IS A WORK AROUND..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the important data now clean and normalized, let's start doing the regression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ridge Regression\n", + "We have 44 variables. The other variables may provide important predictive information. The Ridge Regression technique with cross validation to identify the best hyperparamters may be the best way to get the most accurate model. We'll have to \n", + "\n", + "* define our performance metrics\n", + "* split our data into train and test sets\n", + "* train and test our model\n", + "\n", + "Let's begin and see what we get!" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# As our performance metrics we'll use a basic mean squared error and coefficient of determination implementation\n", + "def mse(y_test, y_pred):\n", + " return ((y_test.reset_index(drop=True) - y_pred.reset_index(drop=True)) ** 2).mean()\n", + "\n", + "def cod(y_test, y_pred):\n", + " y_bar = y_test.mean()\n", + " total = ((y_test - y_bar) ** 2).sum()\n", + " residuals = ((y_test.reset_index(drop=True) - y_pred.reset_index(drop=True)) ** 2).sum()\n", + " return 1 - (residuals / total)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from cuml.preprocessing.model_selection import train_test_split\n", + "trainsize = .9\n", + "yCol = \"EDUC\"\n", + "from cuml.preprocessing.model_selection import train_test_split\n", + "from cuml.linear_model.ridge import Ridge\n", + "\n", + "def train_and_score(data, clf, train_frac=0.8, n_runs=20):\n", + " mse_scores, cod_scores = [], []\n", + " for _ in range(n_runs):\n", + " X_train, X_test, y_train, y_test = cuml.preprocessing.model_selection.train_test_split(df, yCol, train_size=.9)\n", + " y_pred = clf.fit(X_train, y_train).predict(X_test)\n", + " mse_scores.append(mse(y_test, y_pred))\n", + " cod_scores.append(cod(y_test, y_pred))\n", + " return mse_scores, cod_scores" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Results\n", + " **Moment of truth! Let's see how our regression training does!**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "median MSE (20 runs): 0.0373372816561586\n", + "median COD (20 runs): 0.9951869736898369\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "n_runs = 20\n", + "clf = Ridge()\n", + "mse_scores, cod_scores = train_and_score(df, clf, n_runs=n_runs)\n", + "print(f\"median MSE ({n_runs} runs): {np.median(mse_scores)}\")\n", + "print(f\"median COD ({n_runs} runs): {np.median(cod_scores)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Fun fact:** if you made INCTOT the y axis, your prediction results would not be so pretty! It just shows that your education level can be an indicator for your income, but your income is NOT a great predictor for your education level. You have better odds flipping a coin!\n", + "\n", + "* median MSE (50 runs): 518189521.07548225\n", + "* median COD (50 runs): 0.425769113846303" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next Steps/Self Study\n", + "* You can pickle the model and use it in another workflow\n", + "* You can redo the workflow with based on head of household using `EDUC`, `SEX`, and `INCTOT` for X in `X`_HEAD\n", + "* You can see the growing role of education with women in their changing role in the workforce and income with \"EDUC_MOM\" and \"EDUC_POP" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/intermediate_notebooks/examples/cugraph/README.md b/community_tutorials_and_guides/cugraph/README.md similarity index 100% rename from intermediate_notebooks/examples/cugraph/README.md rename to community_tutorials_and_guides/cugraph/README.md diff --git a/intermediate_notebooks/examples/cugraph/get_data.sh b/community_tutorials_and_guides/cugraph/get_data.sh similarity index 100% rename from intermediate_notebooks/examples/cugraph/get_data.sh rename to community_tutorials_and_guides/cugraph/get_data.sh diff --git a/intermediate_notebooks/examples/cugraph/multi_gpu_pagerank.ipynb b/community_tutorials_and_guides/cugraph/multi_gpu_pagerank.ipynb similarity index 100% rename from intermediate_notebooks/examples/cugraph/multi_gpu_pagerank.ipynb rename to community_tutorials_and_guides/cugraph/multi_gpu_pagerank.ipynb diff --git a/intermediate_notebooks/examples/cugraph/twitter-2010-spark.png b/community_tutorials_and_guides/cugraph/twitter-2010-spark.png similarity index 100% rename from intermediate_notebooks/examples/cugraph/twitter-2010-spark.png rename to community_tutorials_and_guides/cugraph/twitter-2010-spark.png diff --git a/intermediate_notebooks/examples/custreamz/.dockerignore b/community_tutorials_and_guides/custreamz/.dockerignore similarity index 100% rename from intermediate_notebooks/examples/custreamz/.dockerignore rename to community_tutorials_and_guides/custreamz/.dockerignore diff --git a/intermediate_notebooks/examples/custreamz/BUILD.md b/community_tutorials_and_guides/custreamz/BUILD.md similarity index 100% rename from intermediate_notebooks/examples/custreamz/BUILD.md rename to community_tutorials_and_guides/custreamz/BUILD.md diff --git a/intermediate_notebooks/examples/custreamz/Dockerfile b/community_tutorials_and_guides/custreamz/Dockerfile similarity index 100% rename from intermediate_notebooks/examples/custreamz/Dockerfile rename to community_tutorials_and_guides/custreamz/Dockerfile diff --git a/intermediate_notebooks/examples/custreamz/Makefile b/community_tutorials_and_guides/custreamz/Makefile similarity index 100% rename from intermediate_notebooks/examples/custreamz/Makefile rename to community_tutorials_and_guides/custreamz/Makefile diff --git a/intermediate_notebooks/examples/custreamz/parsing_haproxy_logs.ipynb b/community_tutorials_and_guides/custreamz/parsing_haproxy_logs.ipynb similarity index 100% rename from intermediate_notebooks/examples/custreamz/parsing_haproxy_logs.ipynb rename to community_tutorials_and_guides/custreamz/parsing_haproxy_logs.ipynb diff --git a/intermediate_notebooks/examples/custreamz/scripts/entry.sh b/community_tutorials_and_guides/custreamz/scripts/entry.sh old mode 100755 new mode 100644 similarity index 100% rename from intermediate_notebooks/examples/custreamz/scripts/entry.sh rename to community_tutorials_and_guides/custreamz/scripts/entry.sh diff --git a/community_tutorials_and_guides/linear_regression_demo.ipynb b/community_tutorials_and_guides/linear_regression_demo.ipynb new file mode 100644 index 00000000..91b86ff1 --- /dev/null +++ b/community_tutorials_and_guides/linear_regression_demo.ipynb @@ -0,0 +1,770 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2tZ3RLnlkrkg" + }, + "source": [ + "# Intro to Linear Regression with cuML\n", + "Corresponding notebook to [*Beginner’s Guide to Linear Regression in Python with cuML*](http://bit.ly/cuml_lin_reg_friend) story on Medium\n", + "\n", + "Linear Regression is a simple machine learning model where the response `y` is modelled by a linear combination of the predictors in `X`. The `LinearRegression` function implemented in the `cuML` library allows users to change the `fit_intercept`, `normalize`, and `algorithm` parameters. \n", + "\n", + "Here is a brief on RAPIDS' Linear Regression parameters:\n", + "\n", + "- `algorithm`: 'eig' or 'svd' (default = 'eig')\n", + " - `Eig` uses a eigen decomposition of the covariance matrix, and is much faster\n", + " - `SVD` is slower, but guaranteed to be stable\n", + "- `fit_intercept`: boolean (default = True)\n", + " - If `True`, `LinearRegresssion` tries to correct for the global mean of `y`\n", + " - If `False`, the model expects that you have centered the data.\n", + "- `normalize`: boolean (default = False)\n", + " - If True, the predictors in X will be normalized by dividing by it’s L2 norm\n", + " - If False, no scaling will be done\n", + "\n", + "Methods that can be used with `LinearRegression` are:\n", + "\n", + "- `fit`: Fit the model with `X` and `y`\n", + "- `get_params`: Sklearn style return parameter state\n", + "- `predict`: Predicts the `y` for `X`\n", + "- `set_params`: Sklearn style set parameter state to dictionary of params\n", + "\n", + "`cuML`'s `LinearRegression` expects expects either `cuDF` DataFrame or `cuPy`/`NumPy` matrix inputs\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "N20le3_KlP3O" + }, + "source": [ + "## Load data\n", + "- for this demo, we will be utilizing the Boston housing dataset from `sklearn`\n", + " - start by loading in the set and printing a map of the contents" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "RFE-nxxlTajg", + "outputId": "04f89e88-61a3-4dd2-9088-123b410e508c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])\n" + ] + } + ], + "source": [ + "from sklearn.datasets import load_boston\n", + "\n", + "# load Boston dataset\n", + "boston = load_boston()\n", + "\n", + "# let's see what's inside\n", + "print(boston.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "wmcO8dxO0uOB" + }, + "source": [ + "#### Boston house prices dataset\n", + "- a description of the dataset is provided in `DESCR`\n", + " - let's explore " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 923 + }, + "colab_type": "code", + "id": "c3kLHAsP-Al2", + "outputId": "02518c3c-7767-42a7-b6f4-6756ace741cc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ".. _boston_dataset:\n", + "\n", + "Boston house prices dataset\n", + "---------------------------\n", + "\n", + "**Data Set Characteristics:** \n", + "\n", + " :Number of Instances: 506 \n", + "\n", + " :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n", + "\n", + " :Attribute Information (in order):\n", + " - CRIM per capita crime rate by town\n", + " - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n", + " - INDUS proportion of non-retail business acres per town\n", + " - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n", + " - NOX nitric oxides concentration (parts per 10 million)\n", + " - RM average number of rooms per dwelling\n", + " - AGE proportion of owner-occupied units built prior to 1940\n", + " - DIS weighted distances to five Boston employment centres\n", + " - RAD index of accessibility to radial highways\n", + " - TAX full-value property-tax rate per $10,000\n", + " - PTRATIO pupil-teacher ratio by town\n", + " - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n", + " - LSTAT % lower status of the population\n", + " - MEDV Median value of owner-occupied homes in $1000's\n", + "\n", + " :Missing Attribute Values: None\n", + "\n", + " :Creator: Harrison, D. and Rubinfeld, D.L.\n", + "\n", + "This is a copy of UCI ML housing dataset.\n", + "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n", + "\n", + "\n", + "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n", + "\n", + "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n", + "prices and the demand for clean air', J. Environ. Economics & Management,\n", + "vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n", + "...', Wiley, 1980. N.B. Various transformations are used in the table on\n", + "pages 244-261 of the latter.\n", + "\n", + "The Boston house-price data has been used in many machine learning papers that address regression\n", + "problems. \n", + " \n", + ".. topic:: References\n", + "\n", + " - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n", + " - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", + "\n" + ] + } + ], + "source": [ + "# what do we know about this dataset?\n", + "print(boston.DESCR)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "wI_sB78vE297" + }, + "source": [ + "### Build Dataframe\n", + "- Import `cuDF` and input the data into a DataFrame \n", + " - Then add a `PRICE` column equal to the `target` key" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "colab_type": "code", + "id": "xiMmIZ8O5scJ", + "outputId": "fd09db1f-fb41-4494-bb8b-eab6e18c258f" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATPRICE
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9824.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1421.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0334.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9433.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3336.2
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n", + "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n", + "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n", + "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n", + "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n", + "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n", + "\n", + " PTRATIO B LSTAT PRICE \n", + "0 15.3 396.90 4.98 24.0 \n", + "1 17.8 396.90 9.14 21.6 \n", + "2 17.8 392.83 4.03 34.7 \n", + "3 18.7 394.63 2.94 33.4 \n", + "4 18.7 396.90 5.33 36.2 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import cudf\n", + "\n", + "# build dataframe from data key\n", + "bos = cudf.DataFrame(list(boston.data))\n", + "# set column names to feature_names\n", + "bos.columns = boston.feature_names\n", + "\n", + "# add PRICE column from target\n", + "bos['PRICE'] = boston.target\n", + "\n", + "# let's see what we're working with\n", + "bos.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "r2qrTxo4ljZp" + }, + "source": [ + "### Split Train from Test\n", + "- For basic Linear Regression, we will predict `PRICE` (Median value of owner-occupied homes) based on `TAX` (full-value property-tax rate per $10,000)\n", + " - Go ahead and trim data to just these columns" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "spaDB10E3okF" + }, + "outputs": [], + "source": [ + "# simple linear regression X and Y\n", + "X = bos['TAX']\n", + "Y = bos['PRICE']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "4TKLv8FjIBuI" + }, + "source": [ + "We can now set training and testing sets for our model\n", + "- Use `cuML`'s `train_test_split` to do this\n", + " - Train on 70% of data\n", + " - Test on 30% of data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 86 + }, + "colab_type": "code", + "id": "1DC6FHsNIKH_", + "outputId": "4c932268-7a82-4ac3-c7b9-9966ffc2b12e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(354,)\n", + "(152,)\n", + "(354,)\n", + "(152,)\n" + ] + } + ], + "source": [ + "from cuml.preprocessing.model_selection import train_test_split\n", + "\n", + "# train/test split (70:30)\n", + "sX_train, sX_test, sY_train, sY_test = train_test_split(X, Y, train_size = 0.7)\n", + "\n", + "# see what it looks like\n", + "print(sX_train.shape)\n", + "print(sX_test.shape)\n", + "print(sY_train.shape)\n", + "print(sY_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "ZLVg44gAmJG7" + }, + "source": [ + "### Predict Values\n", + "1. fit the model with `TAX` (*X_train*) and corresponding `PRICE` (*y_train*) values \n", + " - so it can build an understanding of their relationship \n", + "2. predict `PRICE` (*y_test*) for a test set of `TAX` (*X_test*) values\n", + " - and compare `PRICE` predictions to actual median house (*y_test*) values\n", + " - use `sklearn`'s `mean_squared_error` to do this" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "ZGMPloJxGtK3", + "outputId": "664b54fe-16d5-4140-a657-3dc782574da9" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/cuml/internals/api_decorators.py:410: UserWarning: Changing solver from 'eig' to 'svd' as eig solver does not support training data with 1 column currently.\n", + " return func(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "68.1957092816923\n" + ] + } + ], + "source": [ + "from cuml import LinearRegression\n", + "from sklearn.metrics import mean_squared_error\n", + "import cupy\n", + "\n", + "# call Linear Regression model\n", + "slr = LinearRegression()\n", + "\n", + "# train the model\n", + "slr.fit(sX_train, sY_train)\n", + "\n", + "# make predictions for test X values\n", + "sY_pred = slr.predict(sX_test)\n", + "\n", + "# calculate error\n", + "mse = mean_squared_error(cupy.asnumpy(sY_test), \n", + " cupy.asnumpy(sY_pred))\n", + "print(mse)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "T7BXjkPSGwqd" + }, + "source": [ + "3. visualize prediction accuracy with `matplotlib`" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 305 + }, + "colab_type": "code", + "id": "pp9RNPt_Iemk", + "outputId": "22a22472-50ad-4bb3-d104-35e9e100b8b6" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# scatter actual and predicted results\n", + "plt.scatter(cupy.asnumpy(sY_test), cupy.asnumpy(sY_pred))\n", + "\n", + "# label graph\n", + "plt.xlabel(\"Actual Prices: $Y_i$\")\n", + "plt.ylabel(\"Predicted prices: $\\hat{Y}_i$\")\n", + "plt.title(\"Prices vs Predicted prices: $Y_i$ vs $\\hat{Y}_i$\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "8MqX73B4s5tv" + }, + "source": [ + "## Multiple Linear Regression \n", + "- Our mean squared error for Simple Linear Regression looks kinda high.\n", + " - Let's try Multiple Linear Regression (predicting based on multiple variables rather than just `TAX`) and see if that produces more accurate predictions\n", + "\n", + "1. Set X to contain all values that are not `PRICE` from the unsplit data\n", + " - i.e. `CRIM`, `ZN`, `INDUS`, `CHAS`, `NOX`, `RM`, `AGE`, `DIS`, `RAD`, `TAX`, `PTRATIO`, `B`, `LSTAT`\n", + " - Y to still represent just 1 target value (`PRICE`)\n", + " - also from the unsplit data\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ZtQK5-f4M0Vg" + }, + "outputs": [], + "source": [ + "# set X to all variables except price\n", + "mX = bos.drop('PRICE', axis=1)\n", + "# and, like in the simple Linear Regression, set Y to price\n", + "mY = bos['PRICE']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "RTYG4-UwNDsK" + }, + "source": [ + "2. Split the data into `multi_X_train`, `multi_X_test`, `Y_train`, and `Y_test`\n", + " - Use `cuML`'s `train_test_split`\n", + " - And the same 70:30 train:test ratio" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 86 + }, + "colab_type": "code", + "id": "EsKxK8u_F7t8", + "outputId": "673a1a44-4d2f-4a45-8333-8f29782eaf65" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(354, 13)\n", + "(152, 13)\n", + "(354,)\n", + "(152,)\n" + ] + } + ], + "source": [ + "# train/test split (70:30)\n", + "mX_train, mX_test, mY_train, mY_test = train_test_split(mX, mY, train_size = 0.7)\n", + "\n", + "# see what it looks like\n", + "print(mX_train.shape)\n", + "print(mX_test.shape)\n", + "print(mY_train.shape)\n", + "print(mY_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "_Y40R17LGHsI" + }, + "source": [ + "3. fit the model with `multi_X_train` and corresponding `PRICE` (*y_train*) values \n", + " - so it can build an understanding of their relationships \n", + "4. predict `PRICE` (*y_test*) for the test set of independent (*multi_X_test*) values\n", + " - and compare `PRICE` predictions to actual median house (*y_test*) values\n", + " - use `sklearn`'s `mean_squared_error` to do this" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "N7qm1HuVO-1k", + "outputId": "7e291cec-e602-4ad9-a5b3-b70d7261f63d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23.854861810847016\n" + ] + } + ], + "source": [ + "# call Linear Regression model\n", + "mlr = LinearRegression()\n", + "\n", + "# train the model for multiple regression\n", + "mlr.fit(mX_train, mY_train)\n", + "\n", + "# make predictions for test X values\n", + "mY_pred = mlr.predict(mX_test)\n", + "\n", + "# calculate error\n", + "mmse = mean_squared_error(cupy.asnumpy(mY_test), \n", + " cupy.asnumpy(mY_pred))\n", + "print(mmse)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "jTdmleXCM_Xb" + }, + "source": [ + "5. visualize with `matplotlib`" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 305 + }, + "colab_type": "code", + "id": "Q83NFMK1JKvL", + "outputId": "569cfa77-a66e-4b1b-9d70-ae4ef8e7936e" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# scatter actual and predicted results\n", + "plt.scatter(cupy.asnumpy(mY_test), cupy.asnumpy(mY_pred))\n", + "\n", + "# label graph\n", + "plt.xlabel(\"Actual Prices: $Y_i$\")\n", + "plt.ylabel(\"Predicted prices: $\\hat{Y}_i$\")\n", + "plt.title(\"Prices vs Predicted prices: $Y_i$ vs $\\hat{Y}_i$\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2X1RA6sgtZQ6" + }, + "source": [ + "## Conclusion\n", + "- looks like the multiple regression we ran does provide more accurate predictions than the simple linear regression\n", + " - this will not always be the case, so always be sure to check and confirm if the extra computing is worth it\n", + "\n", + "Anyways, that's how you implement both Simple and Multiple Linear Regression with `cuML`. Go forth and do great things. Thanks for stopping by!" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "LOCAL_intro_lin_reg_cuml", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/multimedia_links.md b/community_tutorials_and_guides/multimedia_links.md similarity index 100% rename from multimedia_links.md rename to community_tutorials_and_guides/multimedia_links.md diff --git a/advanced_notebooks/tutorials/rapids_customized_kernels.ipynb b/community_tutorials_and_guides/rapids_customized_kernels.ipynb similarity index 100% rename from advanced_notebooks/tutorials/rapids_customized_kernels.ipynb rename to community_tutorials_and_guides/rapids_customized_kernels.ipynb diff --git a/intermediate_notebooks/examples/rf_demo.ipynb b/community_tutorials_and_guides/rf_demo.ipynb similarity index 94% rename from intermediate_notebooks/examples/rf_demo.ipynb rename to community_tutorials_and_guides/rf_demo.ipynb index 43cdc165..585ced1d 100644 --- a/intermediate_notebooks/examples/rf_demo.ipynb +++ b/community_tutorials_and_guides/rf_demo.ipynb @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -84,14 +84,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "data_dir = '../../data/rf/'\n", + "data_dir = '../data/rf/'\n", "if not os.path.exists(data_dir):\n", " print('creating rf data directory')\n", - " os.system('mkdir ../../data/rf')" + " os.system('mkdir ../data/rf')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "!ls ../data/rf" ] }, { @@ -107,7 +116,7 @@ "col_names = ['label'] + [\"col-{}\".format(i) for i in range(2, 30)] # Assign column names\n", "dtypes_ls = ['int32'] + ['float32' for _ in range(2, 30)] # Assign dtypes to each column\n", "data = cudf.read_csv(decompressed_filepath, names=col_names, dtype=dtypes_ls)\n", - "data.head().to_pandas()" + "data.head()" ] }, { @@ -243,8 +252,15 @@ "# Predict\n", "\n", "print(\"cuml RF Accuracy Score: \", accuracy_score(cu_rf.predict(X_test), y_test))\n", - "print(\"sklearn RF Accuracy Score: \", accuracy_score(skl_rf.predict(X_test), y_test))" + "# print(\"sklearn RF Accuracy Score: \", accuracy_score(skl_rf.predict(X_test), y_test))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -263,7 +279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/intermediate_notebooks/E2E/synthetic_3D/Dockerfile b/community_tutorials_and_guides/synthetic_3D/Dockerfile similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/Dockerfile rename to community_tutorials_and_guides/synthetic_3D/Dockerfile diff --git a/intermediate_notebooks/E2E/synthetic_3D/README.md b/community_tutorials_and_guides/synthetic_3D/README.md similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/README.md rename to community_tutorials_and_guides/synthetic_3D/README.md diff --git a/intermediate_notebooks/E2E/synthetic_3D/dataset.png b/community_tutorials_and_guides/synthetic_3D/dataset.png similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/dataset.png rename to community_tutorials_and_guides/synthetic_3D/dataset.png diff --git a/intermediate_notebooks/E2E/synthetic_3D/fig_helpers.py b/community_tutorials_and_guides/synthetic_3D/fig_helpers.py similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/fig_helpers.py rename to community_tutorials_and_guides/synthetic_3D/fig_helpers.py diff --git a/community_tutorials_and_guides/synthetic_3D/rapids_ml_workflow_demo.ipynb b/community_tutorials_and_guides/synthetic_3D/rapids_ml_workflow_demo.ipynb new file mode 100644 index 00000000..65dc4a03 --- /dev/null +++ b/community_tutorials_and_guides/synthetic_3D/rapids_ml_workflow_demo.ipynb @@ -0,0 +1,1538 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

RAPIDS Demo - End-To-End ML Workflow

\n", + "by Miro Enev" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> 1. Motivate rapids [ show coverage of modern data science tools ]\n", + "\n", + "> 2. Generate a synthetic dataset\n", + " * 2.1 - Split into train and test set\n", + " * 2.2 - Visualize sub-datasets\n", + "\n", + "> 3. ETL\n", + " * 3.1 - Load data [ csv read ] \n", + " * 3.2 - Transform data [ standard scaler ]\n", + "\n", + "> 4. Model Building \n", + " * 4.1 - Train CPU and GPU XGBoost classifier models \n", + " * 4.2 - Use trained models for inference\n", + " * 4.3 - Compare accuracy\n", + " * 4.4 - Visualize sample boosted trees & model predictions\n", + "\n", + "> 5. Extensions \n", + " * 5.1 - Create an ensemble with a clustering model [ DBScan ]\n", + " * 5.2 - Export data to DeepLearning Framework [ PyTorch ]\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Note**: for interactive 3D plots using ipyvolume, change the flag below to False \n", + "> ```useMatplotlib3DFlag``` = ~~```True```~~ ```False```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd, numpy as np, sklearn\n", + "from sklearn import datasets\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.cluster import DBSCAN\n", + "from sklearn.metrics import confusion_matrix, accuracy_score\n", + "\n", + "import xgboost\n", + "from xgboost import plot_tree\n", + "\n", + "import cuml, cudf, numba, scipy\n", + "from numba import cuda \n", + "import time\n", + "\n", + "useMatplotlib3DFlag = True # False \n", + "if useMatplotlib3DFlag:\n", + " from mpl_toolkits.mplot3d import Axes3D\n", + "else:\n", + " import ipyvolume as ipv\n", + "\n", + "from ipywidgets import interact \n", + "import matplotlib.pyplot as plt\n", + "from fig_helpers import *\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "------\n", + "# 1. Motivation: Kaggle [2018](https://www.kaggle.com/surveys/2018) and [2017](https://www.kaggle.com/surveys/2017) Data Science Surveys\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "

RAPIDS accelerates datascience:

\n", + "
    \n", + "
  • it maps to core datascience tasks

  • \n", + "
  • covers popular methods

  • \n", + "
  • delivers on dataset sizes typically used

  • \n", + "
  • uses familiar python API

  • \n", + "
\n", + "
\n", + " \n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8d7f8b1a3d754c699fc9d5c07a3f19c2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Dropdown(description='figure_choice', options=('activity breakdown', 'datasize', 'method…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# use the dropdown below to browse through Kaggle survey results \n", + "interact(display_selected_figure, figure_choice=['activity breakdown', 'datasize', 'methods used', 'language used']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# 2. Generate Dataset [ X: features, y: labels ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set the size of the generated dataset -- the number of total samples is determined by this value" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "nTotalSamples = 5000000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we'll use sklearn.datasets to build synthetic sub-datasets of the size we specified above. We'll build three sub-datasets and combine them together and then use a trained model to see if we can determine which of sub-dataset a sample belongs to. The three sub-datasets are built using the moons, blobs, and swiss-roll generators. These sub-datasets were selected for their distinct visual features." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.09 s, sys: 156 ms, total: 1.25 s\n", + "Wall time: 1.25 s\n" + ] + } + ], + "source": [ + "%%time\n", + "nSamplesPerSubDataset = nTotalSamples//3\n", + "\n", + "swissRollDataset = datasets.make_swiss_roll( n_samples = nSamplesPerSubDataset, noise = .005)[0]\n", + "\n", + "moonsDataset = datasets.make_moons(n_samples = nSamplesPerSubDataset, noise = 0)[0]\n", + "moonsDataset = np.hstack( [moonsDataset, np.zeros( (moonsDataset.shape[0], 1) )] )*4\n", + "\n", + "blobsDataset = datasets.make_blobs( n_samples = nSamplesPerSubDataset, centers = 5, n_features = 3, \n", + " cluster_std = 0.25, random_state = 0)[0] + [0, 1.5, 0]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X = np.vstack([blobsDataset, swissRollDataset, moonsDataset])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# generate labels for classification \n", + "blobsLabels = np.zeros(blobsDataset.shape[0])\n", + "moonsLabels = 1 * np.ones(moonsDataset.shape[0])\n", + "sRollLabels = 2 * np.ones(swissRollDataset.shape[0])\n", + "\n", + "y = np.hstack( [blobsLabels, sRollLabels, moonsLabels])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((4999998, 3), (4999998,))" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X.shape, y.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1 - Split Train (75%) and Test (25%) Data \n", + "We split our combined dataset into two portions:\n", + "* **train-set** - which we'll use to optimize our model's parameters [ train-set = randomly selected 75% of total data]\n", + "* **test-set** - which we'll use to evaluate how well our trained model performs on unseen data [ test-set = remaining 25% of data ]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size = 0.25, random_state = 0, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3749998, 1250000)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(X_train), len(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2 - Visualize Data\n", + "We define a function for plotting using either matplotlib Axes3D [ default ] or ipyvolume for WebGL based 3D plotting -- we restrict the maximum points to plot to `maxSamplesToPlot` which has a default setting of `100000`" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def mpl_plot_data( data, colorStack = 'purple', \n", + " maxSamplesToPlot = 10000, \n", + " ax3D = False, markerScale=1):\n", + " \n", + " nSamplesToPlot = np.min( ( len(data), maxSamplesToPlot ) )\n", + " if not ax3D:ax3D = plt.figure(figsize=(12,12)).gca(projection='3d')\n", + " \n", + " if isinstance(colorStack, np.ndarray):\n", + " colorStack = colorStack[0:maxSamplesToPlot,:]\n", + " \n", + " ax3D.scatter(data[0:nSamplesToPlot,0], \n", + " data[0:nSamplesToPlot,1], \n", + " data[0:nSamplesToPlot,2], s = 20*markerScale, c=colorStack, depthshade=False)\n", + " \n", + " ax3D.view_init(elev=10, azim=95)\n", + " \n", + "def ipv_plot_data( data, colorStack = 'purple', \n", + " maxSamplesToPlot = 100000, \n", + " holdOnFlag = False, markerSize=.5):\n", + " \n", + " nSamplesToPlot = np.min( ( len(data), maxSamplesToPlot ) )\n", + " if not holdOnFlag: ipv.figure(width=600,height=600)\n", + " \n", + " if isinstance(colorStack, np.ndarray):\n", + " colorStack = colorStack[0:maxSamplesToPlot,:]\n", + "\n", + " ipv.scatter( data[0:nSamplesToPlot,0], \n", + " data[0:nSamplesToPlot,1], \n", + " data[0:nSamplesToPlot,2], size = markerSize, \n", + " marker = 'sphere', color = colorStack)\n", + " \n", + " if not holdOnFlag: ipv.show() " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "if useMatplotlib3DFlag:\n", + " plot_data = mpl_plot_data\n", + "else:\n", + " plot_data = ipv_plot_data " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sub-Datasets [ moons, blobs, swiss-roll ] " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvkAAAL5CAYAAAAqvDt4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACwIUlEQVR4nOzdeZgcZb02/nv2NbNnnUz2bbLvAUWCCELOCUcUBeSnqAjH5UWReATf9+K8xu0IKvGAetBXMXpENIIKLiyiLEfWBJLJPpPJ7HvP0tMzvXdX1e+PoTs9Pb1UdVd1VVfdn+vKBdNdXfVMd0/V/Tz1radyJEkCERERERGZR67eDSAiIiIiInUx5BMRERERmQxDPhERERGRyTDkExERERGZDEM+EREREZHJ5Cd5nlPvEBEREREZV06sBzmST0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMgz5REREREQmw5BPRERERGQyDPlERERERCbDkE9EREREZDIM+UREREREJsOQT0RERERkMvl6N4BIK36/H6IoxnwuJycHOTk5CV+fzvNaPCfneSIiIiKAIZ9MSJIkCIIAr9eLYDCI3NzcGc9HixeeJUlSFKzb29vR0NCAgoICZY2Wsd14bZH7mJLl470+0WsjnxMEAXl5eTOWM2LHKt3XEhERGRFDPpmKJEkIBoMIBoMAgNzc3BlhU0sejwcANNtmrA6K0temsg6lr3nrrbewbdu2hK9Xq2OllngdK0BeJyjWY3a7HZWVlTG/D2p3rBK9Vo8OEDtWRET6Ysgn05AkCYFAAIIgyBo1zkbp/E6ZfD9ycnIy2rnSUjodq87OTqxbty7l916NTl0kvTpWo6OjKCwsxKxZs5JuN92OVbLnIh83W8cqndeacX9JZHUM+WQKkiRhcHAQ+fn5mDVrlm4HrJycnLSCGRlPuh2r3NzcGSVjVuN2uwHIP8Ol1xkrtbYdKfL7I4oiTp8+jQ0bNhjqjFW8x5V2rOS8JvT/fr8fAFBYWJj0dWbtWMl5nigdDPmU9SRJgt/vx9jYGMrKylBRUaF3kwj6ld1Q9suWM1apCAaDhjzLle7ghNLO1eDgICRJQn19vWnOWCkVas/Y2BhKS0tRXFysaccqUmtrKzo7O3HttdcqbzhlDYZ8ymqiKMLv90OSJEOMlnIkn4gSMVLIjJRuu5S+PlRSaYT9tl5Cx4qxsTHk5+ejtLQ0pdencszp6OjAa6+9xpBvcgz5lLUEQYDf7w8fKBiwjSP0WRg10BAR6S1y/xg6hqX6eqUkSUJ+PiOg2Vm3C01ZLRgMhgN+oh1dpkM/OxoUjd8Hopk4CDBdpt8LURQNWTZG6mI3jrJKaA78QCAwI+BHB2weQEhv/A5SJHb4KBY9vheiKFq6VMoqGPIpa0TOgR9vBF/vgyhH8qfwfSCKjR2/C/heTNHjrEasGxaS+TDkU1aQMwc+DxhERNmBgwD6Ysi3Bp6rIcOTJAljY2NJb3JlhNFjI7SByGj4N0EUnx4j+azJtwaGfDK00Bz4x48fl3UXW4YJImPimTbunyLxwtsL9CrXYU2++bFchwwrcg58OQHfCKPoRmiDEfB9IIqNwZaMgOU61sBuHBmSIAjw+XwAIHu0wQiz6/AATpH4fSCKjSP5F/DCW9IKR/LJcILBYMwpMuUwwuixEdpAxsHvAxEZjSRJDPkWwJBPhiFnisxEjDAqZIQ2GAHLdYhm4t/EBRzJv4A1+aQVfsJkCOkGfCB2sNTjIMIDORHFw2BL0ViuQ1rhSD7pLjSDjiiKKQd8o+AINhFRchzJ15cgCMjPZwQ0O47kk66UBPxk4ZkB2zj4WRARycN58kkrDPmkG1EU0dnZCafTmTTgywmNsZZh0CQio+Do9XR8L6awJp+0wk+YdBGaA398fBx+v980O3uOYE8xy+dJRNrgflJfrMm3BoZ8yrjoOfDl7OxTHckn/fCzYGeHiJJjuQ5phVddUEalOgd+toR8I7SBjIXfB6KZWLp0gR77CI7kWwNDPmVEvCkyGYqJiMjq9BjJZ02++fETJs0lmgNfbsjnSH524Qgd0UwcvZ6O78UUluuQVjiST5pKNkWm3B1btoR8uoCfBRHFw/2DvliuYw0cySfNyJ0DX+5IvlJ6jBKxo0FERErwjrekFY7kkyZCU2SGdl7xdmBKQjFH8rMHP4sL+D5QCL8LF7B06QK9ynVYk29+/IRJdYIgoLW1FS6XC7m5uWnf5EruckYIlkZoAxkHQ8wU/k1cwO8EGQFr8q2BIZ9UFQwG4ff74XQ6IQiCauvlgZEou/FvmCJxJH86luuQFliuQ6qQJAmCIEybA1+tEfrIbai1Lq0YoQ1GwPeBiMi4GPKtgSGf0hZriky1Q77cch29MdwSUTzcN0xnhH22VbEm3xoY8iktkiQhEAhAEISUbnKl5hSaofYQERkVg+0U7qv1xZF8a2DIp5QlmyJTrTIcuYwwim6ENhgB3wciSoYdHv0w5FsDz9VQSjJ5kyu5yzFYEhFlB+6r9cWQbw0cySfFIufAj1fTx5p8oin8PlAIvwvTGWGfbVWcQtMaOJJPigiCAJ/PBwAJL9rRK+zyIGoMPHhP4ftA0fidmMJ9tb544a018BMm2YLBINra2hLewTbEquU6RmiDUfB9ICIyJpbrWANDPiUVmiIzEAigr69PdoDPdLlOrNcQEZHx8GZY+mLItwaGfEooMuAr2SGreZMrLbapFSO0gYiMifsGMgrW5FsDL7yluOLNgS+HHvPkM2AbBz8Lotg4ej2FI/n6Yk2+NTDkU0zJpshUi5blOnrIlnYSEZF1sVzHGtiNoxnUCPhaTKGp1rqIiEh/HMnXD0O+NXAkn6aRMwe+HGqX6wDJ61mNEPKN0AYj4PtwAd8HCuF34QK+F/piyLcGjuRTmNw58OVQ+8JbhkbKRhyppGj8TpARsCbfGjiSTwAwbQYdtQ5CVizXMUIbjIBBhogS4YW3+uJIvjUw5FtcaIrMYDCoasBX+2ZYQGrlOgzc+uF7TyH8LhAZC6fQtAaeq7GwUMB/4403FM+Dn4zaI9qpri/TI0UcySeKjaO2FI3fCf1wJN8aOJJvUZEz6GhBi9l1suHCW5rCgzfRTNw/XcD3Ql+sybcGhnwLip4iMzc3V/Udrh7z30evS5IkjI6OhsuQIsuRoh+L9Xis5ZItE9ou8X0gioUd4Av4Xui3n+RIvjUw5FtM5BSZWt7kCpB/4a0cSjsDkiThzJkzCAaDKC0tDb9WkqTwv+if5SwT6zWRjwcCAYiiiOHhYdltjXwPoj+XdDsdcjsmoREdtdbt8/ngcrnCBxGl64l+jIjMhYMA+mLItwaGfAuJNwe+FmUuekyhGVpGFEWcOnUKJSUlWLBgAQoKCmS1Qw0jIyOYmJjAsmXLUl6H0k5Gqo/JfV0qHSG32w1RFDExMZHW9tUQ2XFKtZOhpMMU+bPL5cLAwACKi4vT7qyp2aljx4mMgN9D/WYZYsi3BoZ8ixAEAX6/Hzk5OTPq8PQM+WpuOycnB6Io4sSJE5g1axaWLVsGj8ejyrozyQyj162trairq0N1dbXeTUm7k5HOa/Ly8pCXlxcuiRNFUfWOmNLXRL4vcqV7tsnlcsHhcGBoaCjuMpk+25TuMqmcbdIr0BkRR/L1xZp8a2DIt4Bkc+BrEfLlUrMzIIoi3G435s+fj6VLl+ryO+n5XlJsenaaxsbGMHv2bJSXl+uyfa0o7WR0d3dj1qxZqKysTHjGSM664r1W7c6aFmebBEFAIBDAxMTEjPdTr7NNai6jZF2iKCIQCCTsvFmBXh0/TqFpDQz5JiZJ8ubAVxpM5eyU1A67ydYXGsHPy8vD0qVLVdsuEc2ktONUUFCA4uJi03V2lHI4HBgcHMTq1aunPS63I6LF2abox0Jnm+SsJ52zTU6nEy0tLTF/fzliLRf6TqZytkmLzpOc5UKdnchJItRqY7KzTVbpSFkZQ75JyQ34QPaX6wiCgKamJtTV1cHr9U57LtOj6hzJn8L3gUg+q41eA8CxY8ewfv16za6Z0rIjpLQjlmgZQRAgCALGx8c1aWPosb/85S/405/+FH5/RkZGUFFRAafTifz8fNTW1mL+/Pnh7+C3vvUtvPe9753xvjocDnzhC1/AE088AVEUsXfvXjz44IOora2N+Tk88cQTeP/7349t27bhzTffVPgpUroY8k1IkiRMTEygsLBQ9VKFUHhTayQ/3eUEQcCxY8cwd+5cNDQ0oK+vL+m6iIj0oFdphhFp/V6ofezTSiAQwOTkJJYvX67pdnbs2IH9+/cDAOx2O5YvX47du3fj7rvvRltbG774xS/ik5/8JL7xjW8kXM8NN9yAlpYW/PSnP0Vubi7uvvtuXHvttfjHP/4xY1mv14t9+/Zh7ty5WvxKJANDvslI0tQc+G+99Rbe8Y53yNrJKRl1zeQIfbL1BYNBHDt2DAsWLEB9fb1q20oHR7CJiMjIfvazn0GSJPz+979HRUUFrrzySkxMTGD//v246667UFFREfN1r732Gp599lm89NJLuPTSSwEA9fX12LVrF/72t7/hiiuumLb8d77zHdTX12P58uU4deqU5r8XzcRLq01EFEX4fL7wTa7kjmJoEfLlUtJpiBQMBnH06FHU19cbJuDTBezsEFEy2TDSrjU9zu4899xzqKiomBbmb7zxRng8Hrz00ktxX/f0009j7ty54YAPADt37sTSpUvx9NNPT1u2u7sb3/72t/HAAw+o/wuQbAz5JhGaIlOSJMXTYmVLTX5ouUAggLfeeguLFi3CggUL0mqn2hhuKRq/DxTC78IFfC+m6BHyz507h6KiommPLVq0CKWlpWhubo77uubmZqxZs2bG442NjTNe98UvfhHXX389tm7dqk6jKSUs1zGByCkyU5n3Vs9yHaXL+f1+HD16FEuXLmWdHxkeRyopGr8TpLfx8fGYx8/q6mrY7fa4r7Pb7aiqqor5uvb29vDPL7zwAp599lmcO3dOlfZS6jiSbwJyZtBRS6rlNWpsNxgM4q233sKyZcsMG/A5kj+F7wMRJcKLkKfo9T7E2qbcSTUSvS4YDOLzn/887rnnHsybN0+dxlLKGPJNTIs6+1TKa9RYXzAYRHd3N1asWIE5c+bI2r6SdhAREWWaHiG/qqoKgiDMeNzhcMQcqQ+prq7G+Pj4jMfHx8fDr/vJT36C8fFxfOxjH8P4+DjGx8fh9/vD04QGAgGVfguSgyHfpLQK7nqU63i9XnR1dWH27NmYPXu2rHaG1p1pHMEmoni4b7iAI/n6WbVq1Yx7yvT09MDlcsWsuQ9Zs2ZNzJr9yFr9lpYW9Pb2Yt68eaiurkZ1dTV+/etfo6mpCdXV1Th06JC6vwwlxJBPul54m4zX68XRo0cxf/58lJaWqtAyIso0htsLGGwpkh6dndCUmZOTk+HHDh06hJKSEuzevTvu6/bs2YPBwUG8/PLL4cfefPNNtLe3Y8+ePQCA22+/HS+88MK0f1dddRVWrVqFF154AVdeeaV2vxjNwAtvTUrvkXy5Eq3P4/Hg2LFjaGxshMfjgc/nU227WuFI/hS+DxSN4Zai8Tuhj1tuuQXf/OY38YEPfAB333032tvbsX//fuzbt2/atJorVqzA7t278fDDDwMALr74Ylx11VW4+eab8d3vfjd8M6xLLrkkPEf+ihUrsGLFimnb+/nPf46RkRFcdtllGfsdaQpDvkkpDe5qrzfd5dxuN44dO4Z169ahqqoKXq83pdDIgwgRERmVHiP51dXVWLlyJQRBwDXXXIOqqirceeed4TvihgSDwRm1+7/5zW9w55134pZbboEoiti7dy8efPDBDLaelGDINymlI6l61uRHc7lcaGpqwvr161FZWalofXrLlnZS5vD7QCH8LlA0va5NKCkpwfPPP59wmc7OzhmPVVVV4eDBgzh48KDsbf385z9X2DpSC0O+SWlZgqPVTa4AwOl04vjx49iwYUPcW2uT8bGzM4VnkigavxNkBNw/WwNDvklpWZOv5jojl5ucnMSJEyewceNGzJo1K+U26ilb2klERPrjLEOkJYZ8k8q2C28nJiZw8uRJbNq0CeXl5Zpvl4iISG96HdfYsbAGhnzSfZ78QCCAkydPYvPmzSgrK5PVDqNiZ2QK3wciInkYuEkrnCffpLQKWWqHfIfDAbfbjS1btiQM+AyNRJTtuA+jaHqU6/B7aB0M+SalZwlOaJ3J2O12NDc3o6ysLOmNrrIl5GdLO7XG92EKR+goGr8TFC3T3wlRFJGby/hnBfyUTSDWDsIINfmJlhsbG8PZs2exZcsWWTs4HhgpW7GzQ0Tx6LF/EAQBeXl5Gd8uZR5r8k1K75CfaLnR0VG0tLRg69atKCwslLVdIDvCEkewiYhILj3KdRjyrYMh36SMGvKHh4dx/vx5bNu2DUVFRZAkSfV59/XEMw5EFE827MPI/BjyrYMhnxRL9UBls9nQ1taGbdu2hUfwlcy7r6R9oeX1CN08kGdPp4wo0zgQQJH0GMlnTb518FM2KaPdDGtoaAjt7e3TAr5Sckf89aT39omIKHuwXIe0xJF8kzJSuc7g4CC6urqwbds2FBQUyNpOOm3U+w6CHMEmIiKjEkWRId8iGPJNyighv7+/H729vdi2bRvy81P/uqk9P79W9N6+UfB9IJqJfxMUjSP5pCWW65iUEUK+z+dDX18ftm7dmlbAVyLWzpIHVtILy7coGr8TpDfW5FsHP2UTyOQ8+XL19fXB5/OpFvDVmp9faxzBpmj8PhBRPBzJJy0x5JuUVmFTznq7u7sxPDyMsrIy1XYk2VKuQ1P4OVAkva+TITIqhnzSEkO+SelVrtPZ2YmRkRFs3rxZ1vrUpneQYLgloni4byAjYMi3Dl54axKxRgMyHfI7OjowPj6OzZs3qx62Uy3X0Tv0ExFF4j6JInGefNISP2WTUrLTUCPkt7W1weFwYNOmTeGdh5qjVtlSrqP39o2C7wMRUXJ6hXyO5FsDR/JNIN0Lb4HUA7kkSTh//jw8Hg82btwYDvhajOSruRwRUaax40tGIAgCR/ItgiHfpLS4i230eiVJQmtrK3w+HzZs2KB5wObsOpSN+H2gSByIoEh6XXibqWmtSV/8lE1K6wtvJUlCS0sLBEHA+vXrNd9JZUu5Dk3h5zCFgY6IEtEr5HMk3xoY8k1Ky5AviiLOnj0LAFi7dm1GdlDZUq6j9/aJiIgSYU2+dbArZ1JahXxJkjAwMIDc3Fw0NjZmNNRmQ7kOEVE83DdRNM6TT1piyCfZIT8y4K9evTqjOyaW6xAREaWPId86WK5jUmqP5EuShJMnT6KgoAC1tbUZH3lgGUx2YWeLKDbuyyiSJEkZr49nuY51MOSblJohSxRFnDhxArNmzUJxcTECgYAq61WKI/lERGQmvBkWaYmfskmpNZIviiKOHz+OiooKLF++XLcQnWq5DkfNiIiMhQMx+mK5jnVwJN+k1Aj5oiiiqakJNTU1WLJkicotVIYj9NmFn9cFfB8ohN8FisYLb0lLHMk3qXRDviAIOHbsGGpra6cFfK3Cm1rrZLgkI+GZJIrG78QUvg/6Yci3DoZ8E1MSdiOXDQX8OXPmYPHixdOW0yJEy1knZ9fJLvwciCge7hsuYE0+aYnlOialZKcRuWwwGMSxY8ewYMEC1NfXx1zWyDX5sfCAQkRERsRyHdISu3ImEGsHkUq5TjAYxNGjR1FfXx8z4Ctdr1xqrpMjyERkVNw3TdEj2BqVHt8JTqFpHRzJNymlIV8QBLz11ltYvHgx5s2bp3HrZm6f5TpE5sVQdwHfB4rGkXzSCkfyTUpJ2A0GgxgfH8eSJUuSBnw9a/Ipe7CzRUTxsNN3AWvySUv8lE1Kbsjy+/04efIkSktLMXfuXNXWq4SaOziGSyIiovg4km8dDPkmkGpNvs/nw1tvvYWlS5eioKBA9rY4hSaRfPw+Ugi/CxdwJH8KL7wlLTHkW5TX68Vbb72FVatWoba2VtFrjXzhLRkDP9MpDDIUjd8JdnYiMeSTlhjyTSpRyPJ6vTh69CjWrFmD2tpaxRfpKpHpi2UZLomIiOJjTb51cHYdk4oXdj0eD44dO4bGxkZUV1cnXFbJehMtm8lRiuj2cdSMiMhYeOHtBXpdeMuRfGtgyDepWGHc7Xbj2LFjWLduHaqqqhIuq2S9iZZVe51KORwOjI2NITc3Fzk5OTH/hdqg9Ll4z4uiCL/fH/f50GNmxjMqRDPxb4KMgOU61sGQb1LRIcvlcqGpqQnr169HZWVlwmWVrFeNZbUq1xkfH8e5c+ewcOHCaY9LkgRJkiCKYvj/ganRjcjnI//FezzW816vF2fOnEn42ljtlfv/of8q7ZgACJ+iVatDE+85p9MJr9cLh8OhWpuIzIDfZY7kR9KrJl/uZBuU3RjyTSoyGDqdThw/fhwbNmxARUVFRtshN+SrJbQup9OJ06dPY/369SgsLMzoqMWRI0ewefNmTdadasdDjdfJ+Rd6rdvths/nw+DgYNptivzdAWWdoRCtz97Ee35ychKiKCIQCABIvZOVSpuIyPh44S1piSHf5EIBf+PGjZg1a1bMZfQeyQfUPY3t8/nQ2tqKTZs2obCwEIIgqLZuvWVLgBsbG8PY2BhWrFihazu07Owkej5y24IgwO/3Z6QDFvm83A5Q9HulRcfD4XAgGAzCbrcrep3WZ5yiH6fM4futH9bkWwdDvknl5OTA5/Ph+PHj2LRpE8rLyxMuq2S9aod8JetMRhAEtLe3h39nv9+vynopO+kd4Hw+HyoqKlBXV6fL9lOhRcfD7XajrKwMpaWlCV8bKqFTY5tKnwfkfU+iO05KOh4ejwe5ubmw2+0ZPaOUSodHzutSpeagTrbjSD5piSHfpFwuF8bGxnDRRRehrKxMtfWqGcjVXmcwGMTAwADq6+unXVhMRPJpcbZoZGQElZWVpvy7lHN2JnS9T19fHwoKClBbW6vaGaPIa4vkvjayTal2kuS8L0DskjpJksI3Y9T77E0mO1Hx3qdMh3yO5FsHQ74JORwOtLe3o6amRtWAH6L2SL4aBEHA0aNHUV1dnfCsBWVGJj97yg5mLc9Q0ikqLCxEYWGhpfdRkiTB4/Hg/PnzWLdunaZnZ2I9F6tTFO+1arYpHo/HA4fDkTR0p9PxcDgc+MlPfoK8vDzk5eWhvb0d586dw8c//nEUFxdj+/btuPLKK1FQUIC8vDysWrUKe/fundEGh8OBL3zhC3jiiScgiiL27t2LBx98MHxDTUEQ8N3vfhd//vOfcebMGQDAtm3b8M1vfhM7duxI+PuRNhjyTcZut+Ps2bNYs2YNBgYGVF+/kgO13KCXbiAURRHHjx/H/PnzEQwGGS6JiAwqMnxyNBk4c+YMFi1alLDjl27Ho7q6GjfeeCOCwSDGx8fx+9//HnPmzMEdd9yBvr4+HDx4EDU1NfjgBz8IQRDituWGG25AS0sLfvrTnyI3Nxd33303rr32WvzjH/8AMNVhuffee/GJT3wC//t//2/k5OTgBz/4AS655BK8+uqr2LZtm8rvHiXDkG8CoeA9NjaG5uZmbN26VbOwqySQZyLkS5KEU6dOoaqqCg0NDejs7ExpPWrT4xQsEVE24P5RmXRL6CoqKjB37lwAwP333w9RFPG1r30NH/3oRwEAS5cuxf79+3Hw4MG4M/C99tprePbZZ/HSSy/h0ksvBQDU19dj165d+Nvf/oYrrrgCJSUlaG9vD99oEwDe8573YNWqVfjBD36AgwcPpvw7UGp4X2OTGB0dDQf84uJiANpc3KQ05GtJkiQ0NzejqKgIy5Ytm/Y4EZHRcN9E0TLd4XnuueewbNmyabPt3XjjjfB4PHjppZfivu7pp5/G3LlzwwEfAHbu3ImlS5fi6aefBgDk5eVNC/jAVInaunXrYLPZVP5NSA6GfBOQJAmDg4PYtm1bOOBrtdNQOuqu5Uh+e3s7gsEgVq1alXBdmT6wsh6d7wFRPBzB5kh+pEy/F+fOnUNNTU34nh0AsGjRIpSWlqK5uTnu65qbm7FmzZoZjzc2NiZ8XegC67Vr16bXcEoJQ74J5OTkYP369SgqKpr2mN4hS8tyne7ubkxMTGDdunXTdpDRO0seSEhvev8dGgHfAyJjGB8fj3mDyOrq6vB9LGKx2+0xZ8dK9rpvfvObsNvtuPXWW1NuM6WOId8kog+iWoV8I9TkDwwMYGhoCBs3bpw2GhGid6AwQgdLb+xcTeH7QJGsvl+IxL+NKXqc1ZAkaUbIl9OOWM8net1f/vIXfPOb38R9992H1atXp95gShlDvkkZJeSrbXh4GF1dXdiyZUvMmRkYsI2DnwPRTAy33DdEynTIr6qqgtfrnXH8dDgcCe9jUV1djfHx8RmPj4+Px3zdkSNHcMMNN+BTn/oUvvCFL6TXaEoZQ75JGSHkA+rW5AeDQbS2tmLr1q3Iz489MZQRDqDsaBARkRGtWrUKo6Oj00J+T08PXC5XzJr7kDVr1sSsvY9Vq3/u3Dn88z//M97znvfg+9//vnqNJ8UY8k3KCCFfzXKdyclJeL1ebN68GYWFhQmXZcDWnxE6W0RkTLzw9oJMvxdXXnklurq64PV6w48dOnQIJSUl2L17d9zX7dmzB4ODg3j55ZfDj7355ptob2/Hnj17wo8NDAzgqquuwvLly/HrX/+a90LQGefJNzG9w66SDkGi5dxuN06cOIHS0tLw7EFqbFMrRmiDEfA9IJqOfxMUSyZD/i233ILvfOc7+MpXvoLCwkK0t7dj//792Ldv37Q58lesWIHdu3fj4YcfBgBcfPHFuOqqq3DzzTfju9/9bvhmWJdccgmuuOIKAFM3w9qzZw/sdjt+8IMf4MSJE+H1FRUVYcuWLRn7PWkKQ75J5ebm6j6Sr2Sd8fh8PjQ1NWH9+vXh22QrWRdHi4jISLhP4kh+pEx3/Kqrq7F3716cP38e11xzDaqqqnDnnXdi//7905YLBoMQBGHaY7/5zW9w55134pZbboEoiti7dy8efPDB8PNDQ0M4fvw4AGDv3r3TXrt48WLD3KzSShjySZFMlusEAgEcPXoUq1evRmVlpez16T1axpF8vgdERHLo0eGpqKjAf/3Xf2HXrl1xl4kVyKuqqnDw4MG4d65dsmQJ9/sGw5p8k8q2mvxogiDg2LFjWLZsGWpra2WvzwjhkiNUFEnv7yOREXE/qR9RFGNOP03mw0/ZpIwSdlOpyRdFEU1NTViwYAHmzp07bX1ytinnMa3p/d6TMTDIUCTuF6bwfbhAj5F8URR5QaxFMOSbQLxgq3RHmuqoe7oi2ypJEk6ePImamhosXLgwpTbqfQBhsCOieLh/mML3YYoeIV8QBIZ8i2DINymlOw2tLqhVUpMvSRLOnj2LkpISLF26NKX1GeEMBqB/R0NvRvkciMh4uG/QF0O+dTDkk2aUhvy2tjaIooiVK1fGXU7OuqJl+oDCgEtERHLoNZLPmnxr4Ow6BEDfkXwAGBkZgSiK2LRpU8IdXjaU6xDRTCzP4L4phFNo6os1+dbBrhwByPz895EmJiYwMTGBjRs3JnxNtpTrGKENeuN7QBQbwy1F4oW3pCWGfAKgXShLts7h4WGMj4+joaEh6elDHhyJiLIfR/Kn44W3pBWGfAKgT7mO3W5Ha2srFi5cKGuHk00j+UQhen8fiYgisSbfOvgpk2YSBe7JyUmcOXMGW7duRUFBQUrz6SvdZiYZoQ16MsrnoDd2+CgS/yamcCRfXyzXsQ6GfAKQ2VDmdrtx4sQJbN68GcXFxYpn4VGCBxIi/THcXsB9EumN5TrWwZBPADJXruP1enHs2DFs2LABZWVlqm/bCCPIRmgDERFRLAz51sGQTwAyE/IDgQCOHTuGxsZGVFRUpL2+VJch7fFzIKJ4WK6jL1EUWZNvEfyUCYD2IT8YDOLo0aNYvnw5ampqUtp2tgTHbGknERFZD2vyrYMh30TSCZZaBlNRFNHU1ISFCxdizpw5mm6bAZuMht9HCuF3YQpH8vXFch3rYMg3AbV2llqM5IuiiBMnTqCurg719fVpry8bynWM0AYj4HvAiyxpJn4nSG8M+dbBkE8AtDvw9Pf3o6ysDEuWLEm4bbOV61gd3wMiSoT7CP1wnnzr4KdMALQJ0CMjIwCAFStWqLJtOQcFo3QEjNAGIiIj4v5RX6zJtw6GfJNId1RE7XDc2dkJn8+HefPmJW2bkrZnS7mO1fE9IJpJ730TEcByHSthyCcAysNxomX7+vowMjKChQsXqrK+ECMEeLmypZ1a4ntANBM7wLzwVm+cQtM6+CmbXKaDls1mQ29vLzZv3oy8vDxVw3u2lOsYoQ1ERETxsJNlDQz5JqYkbKqx7NjYGNra2rB161bk5+drckFtNpTrEA8gRBQfR/KJMoMh38QyGfInJibQ3NyMLVu2oKCgQHFbzVSuky3t1BrfA34XaDqGWzICfgetgyHfxDIV8l0uF06ePInNmzejuLhY8Trl7nBSKdfhzozIGPi3SCHs7BBlBkM+AUh9xNHr9aKpqQkbN25EaWlpSutUu1xHbxy95XtA0/G7QGQc/Hu0DoZ8E9N6JN/v9+Po0aNYu3YtZs2aFXM5NbctdznuwIiIjIsj+USZka93A0g7ak6LGb3eQCCAkydPYuXKlaiurlZl+3K2mw0X3hqhDURkPAy3RJRJHMk3MaWj80qcOnUKDQ0NmD17dsLlMn1BLQ+gxsGODhGR8fA4aR0M+SamRbmOJElwOp2oqanBggULVFmn2cp1OJLPgwgRxcczGlP0Ok5Y/fhkJQz5JqZ2yJckCadPn0ZeXp6su9lqMbtONpTrEEXi95FC+F2gSOzskNYY8k1M7ZDf2tqK3NxclJWVqX6wUvOOt3pjR4NCjPB9JGPhd4LhlihTGPJNQusdZkdHBzweDxobG5Gbm6tLGQ4grzMQvQwDd+axo0NElJhenR12sKyDId/E1BrJ7+3txdjYGDZs2ICcnBzdau1TLdfJ9A6NAZeIKD6O5OuLxyfrYMg3MTVC/tDQEPr7+7F582bk5l74umR61pzQ+tRYhohIDwxXFImdHdIaQ76JpRvyR0dH0d7eji1btiAvL2/asnq1k7PrZAe+B0REiTHkk9YY8k0snZDvcDjQ0tKCrVu3oqCgIKX1GqFchztQIjIS7pMYbvXG9946GPJNLNWQ73Q6cerUKWzevBlFRUUpr1eLKTTVWpeWOIpNRETJ6NXZ4fHJOhjyaRqPx4Pjx49j48aNKC0tjbmM2uEdkL/TyYZyHWJHJxLfB6LpOJJ/Ad8H0hJDvknE2lHk5ORAFEXZrw8EAjh27BjWrl2LWbNmqdImPcp19MaASyFG+D6ScXC/QJH0+D6wg2UtDPkmpuQPWRRF9PT0YOXKlaiurk66XjVH3rWYT19pG4iIMoEBi0EzRI/3QRCEaRNpkLnl690A0o7cUCwIAnp6elBdXY3Zs2ertl4jjGg7nU40NTVNm/4zltCONnQfgHT+TU5OIicnBz6fL631hNoTanu668kkHsCJiBJjyCetMeSbmJyQLYoiTpw4gcrKSpSXl6u2Xj2XC/H7/Thx4gRWr16NqqqquMuF1ilJUkr/gKn3MfT/wWAQAFBeXh73NaHlk6031TZFrydVsToMubm5sjpFXq8Xra2tcTsecteTSodGyfKUGXy/KYQj+foRBCHpoBeZB0O+iUTvOJOFYkmScPr0aVRUVKCkpAQ+n0/RttSiRcgXRRFNTU1YuXIlysrKkq438r/p8nq9EEVR1lkRI0u30zE2Noa6ujpZHSMlnR8568l05yfeP4/HAwCYmJhQrQOT7pkdOZ0itel9Rs8o+D5QJD06O6IociTfQhjyTSxZKD537hzy8/OxbNkyDA4Oyj4Ayd0pKQnvapIkCadOncLcuXMxe/ZsuN1uVddvFekGvvz8/KTXd2QjJR2JoaEhSJKEOXPmpHwmJnTxvBpndSI7Q/HWm454nQmn0wmfz4eCggJVz8RkYl2R61EDR7BJTyzXsRaGfJOIdeBIFLLb29vh8/mwYcOG8AFMSchXe+RdzfX5/X7k5+dj8eLFuoycKfm9KXu4R9z43XW/w/Cx4bjL5M/Kx0V3XYSdd+wEgPB9JtSYrcrIkp1JOXfuHBYsWICSkhLVzsgkO+sjdz1yO0WpiuwguN1unD17Fnl5eVlzVkfOa5TSYwTbiPR4HxjyrYUh34J6enowPj6OzZs3T9tR6xXy1VxucHAQwWAQa9asSbo+MpenP/M0zv7mLCCouNJcAPJmoQUABCeDePnfX8bL//7yzCeLAPgAFAJ5+XkQRAGQ3n5MpsKqQuz84s5wJ8IokgW+vLw8FBUVxb33hllFdxjOnDmDxYsXx+3sqHE2xuglb5Ikwe/3w2azoaurK+NnYzLVuZL7XmQ65IuiyJp8C2HIN7FYoXhwcBADAwPYtm3btD90LUJ+Ou2Mt1wiDocD7e3tKC0t1XUnxpH89LlH3HjuzufQ9uc2dUO7UgoCflKhMO8HBH9qv5R/3B+/ExEltzgXm/91My77xmUpbYvSFx34cnJyUFBQgMLCQh1bpb/z58+jqqoK1dXVqnY6MvFPTpvkEgQBfr8fR44cCQf+VDoeySYxeOqpp2Cz2ZCfn49gMIienh6sWbMGHR0dKC0txWWXXYYPfehDKCwsRF5eHt73vvfFPIY6HA584QtfwBNPPAFRFLF37148+OCDqK2tnbbck08+iXvuuQetra1YtmwZvvKVr+CGG25Q/kWhtDHkm1h02BwZGUFHRwe2b9+ekdN1aoX3SPHW5/V6cerUKWzZsgVNTU0z1s3Tw8by3L7ncPqR0xC9aqZoiiR6RRx98CiOPnj0woOFQE5uDnLzcpGDHNSurcVl37wM9RfV69dQi+F+6EIQtXrZyOTkJHp7e9HY2JhWpyb0unjX2TQ0NKCkpATBYBBDQ0Noa2vD8uXL8a//+q+w2Wx44oknMDk5iSuuuALBYBD/8i//ErO9N9xwA1paWvDTn/4Uubm5uPvuu3HttdfiH//4R3iZl19+Gddddx0++9nP4sEHH8RTTz2FD3/4w6iursZ73/tejd9RisaQb2KRIXt8fBznzp3Dtm3bUFBQkHBZJetVYzkgvZr8YDCIpqYmrF271hDlAFYfyXePuPHIZY/A2e3EP3Bh548cTJWnkH78gAQJwtunR4aODOHQew/NWKygogDv+uq7sPmTmzPcQLICDrrMlM41DslEhvb/+3//LwDgjTfeQEVFBQDg29/+Nvbv34/f//734ceivfbaa3j22Wfx0ksv4dJLLwUA1NfXY9euXfjb3/6GK664AgDw9a9/HZdeeikefPBBAMC73/1unD59Gl/72tcY8nXAkG9iobDpdDpx+vRpbN26NXwhYLxllaxXznJar0+SJJw8eRINDQ2mnMnFyJ7b9xxO/vwkEJT5Agb8rBGYCOD5O5/H83c+P+3xnMIcXPVfV2Ht9Wt1ahmReejR2fmf//kfzJkzZ1qYv/HGG3H33XfjpZdewjXXXBPzdU8//TTmzp0bDvgAsHPnTixduhRPP/00rrjiCvh8PrzwwgvhgB+5/k984hNwOByorKzU5hejmBjyTSwnZ+quq8ePH8emTZtQUlKScFk9R/Llil5fa2srysrKUF8fv9wg0ztRs43k/+GmP6Dj6Q59a+PJECS/hGdufQbP3PpM+LHcoly84553GO5iYCMy036B0qdHyO/o6MC8efOmPbZo0SKUlpaiubk5bshvbm6OOaFFY2MjmpubAQBtbW0IBAIzlmtsbIQoijh37hx27Nih0m9CcjDkm1gwGERvby82b96c9G62Wl14q+WIf19fH1wuFzZv3izr9ZTYaMsoXv2PV9HxXAeCzqDimWVMKeo9SDa7zYv3vIijDx0FAjGeVGF2HSMSfeKMi4FL5pbg+j9fj9rVtQleaU0sU2G5jp4mJyexePHiGY9XV1fDbrfHfZ3dbo955/jq6mq0t7eHlwEwY7nQWfZE6ydtMOSbVDAYRF9fH+bNmxfzDzOaFqPPWszCEzI2Noaenh5s377dcAeLbBjJb3q4Ca984xX4RhMkzCwM+Ev3LsX7H32/btu/7BuXTZvNpr+/H6IoYuHChaqs//HrHkf3c92qrEtLniEPfrHjF+Gfc8tysfu+3dhy8xYdW0VkLHp0duJtU05b5L4u+ufQ8dBox2orYMg3IUEQcPToUdTW1qKsrEz19etdrhO6ocy2bduQn8+vcDKjLaN4/AOPw9Xj0rspii26chE++LsP6t2MtKj5N6DkvfjTJ/6E1t+1Tn/w7dl1JG9mO6GiS8QLt7+AF25/AcDU9J7v/cF7WdtvURzJn6LH+1BRUQFBmFl76XA4Eg4IVldXY3h45o0Ax8fHw68LjdiPj4/PWAaYOcJP2mNCMhlRFHH8+HHMnz8fgPyAoec8+XLl5ORAEAQ0NTVh/fr1KC4uzngb5NB7JP+V/3gFb/3gramSGyOJmF2nuK4Yl917melDnp5B5pqD1wAH4z9/6JpD6HupL3MNiiB6xXBtv5Vm8mG4Jb0tWrQIDodj2mM9PT1wuVwJbyK5Zs2aaVNlhjQ3N+Paa68FACxfvhwFBQVobm7G7t27py2Tm5uLVatWqfNLkGwM+SYiSRJOnz6NqqoqNDQ0oLe3NzxvbjLZcuHt8PAwGhsbeYV+hD/c9Ad0PNVhuPKauvfW4ebHb9a7GRTHDX+Kf3OaTJYFRc/kM2f7HHzk+Y9kZNukD3Z2pujxPlx00UU4ePAgJicnMWvWLADAoUOHUFJSMi2YR9uzZw++/vWv4+WXX8Yll1wCAHjzzTfR3t6OPXv2AACKiorw7ne/G4899hg+9alPhV976NAhXHzxxTxu64Ah30TOnTuHoqIiLFu2DID+o/Nq77y6urpQXFyMuXPnqrpetWk9kv/Kf7yCI987AtGnf6ovrCrE5d+9POaI/JEjR3RoEakhVllQ3+t9+Mu//gXOTqem27a9acOBigMAgPrd9Qk7I0SkzDXXXIP//u//xgc+8AHcfffdaG9vx/79+7Fv375p02quWLECu3fvxsMPPwwAuPjii3HVVVfh5ptvxne/+93wzbAuueSS8Bz5APDv//7vuOyyy/CFL3wB1157LZ566ik89dRTeOaZZ2a0hbTHkG8SgUBgxukwrUK+HuUoXV1dEAQh6SxBZnT4gcN4+SsvZ36kPmJmmbKGMux9eC/vjGph9RfV419P/Ou0x9wjbvz5lj+j98VeTbbZ91JfOPDXbarDzf/gmSGz4Ei+PiP5paWluOaaazA8PIxrrrkGVVVVuPPOO7F///5pywWDwRm1+7/5zW9w55134pZbboEoiti7d++MOfEvueQSPP7447jnnnvw0EMPYenSpXj00Ud5IyydMOSbRGFhIVauXJmRHUZOTo7sMiA1DA8PY2hoCCtXrkRfnz41xEqo0QnSq146vzwfF919Eec8J1lK60px/R+vn/bYo1c9isHXBlXf1sjxERyoOIDC6kLs+fEeLL96uerboMww+uxjmaJHyBcEAbW1tTh0aOadriN1dnbOeKyqqgoHDx7EwYMJLvYBcO2114br9ElfDPkmZoaR/MnJSbS2tmL79u3weDyyX5dtNZ/uETd+d93vMHxs5uwFWskpycHOO3binf/nnRnbJpnfTc/eNO1ntUO/3+7Hk9c/CQCoWVeDj7/2cdXWrbVs2y+R+UiShLy8PL2bQRnCkG8SsQ4c2R7y/X4/Tpw4gU2bNqGwsBBerzcrRoDkvj8v3vMiThw8geBkZmbB0XsOebKmm569CadPn8aSJUtQVlY2dcOw/3cU8Ka/7rHTYzhQcYC1+1mGnZ0peo3k5+bmZnSbpB+GfBMzYnCXSxAEHDt2DKtXrw7X4Sud1ceIB5FMTW9ZXFeMq/7rKpY0GICR/q6MIPKGYU0PN+H5Lz+f9l1/Q7X7VaurcMuRW9JvJFEG6BXyeX8Z6+AnbWLZOpIfmgp0/vz5qKurm7ZdOZLdfU9r0e/PaMso/rH/H2j/S7tm28wvz8cV/3mF6eedzzZG7GgayeZPbg7Pjz/aMorHrnkM7kF3yusbbxnHgYoDmHfxvBllQ0bADt8Uow7CWAFH8q2FId/EsjXkt7e3o6CgAIsWLZrxnNzt6nkwzcnJwWjTKH78vh/D1afRXWbzgUu+cgkvkCXTqF1di0+f+zSAqRH+V775CnwjqQ3xD742iAMVBww55z7DLYXo0dkRRZE1+RbCkG9yWoRdLUP+4OAgxsfHsWXLlpS3q2fpkZaz4my4dQOuPHClJusmMpLIEf4X73kRRx88mtJ6QnPus4zHWDiSP0Wvch2GfOtgyDcxJTsPpSP5WnA4HOjo6MD27dtjnk5MtVxHa23PtOFvX/wbXD0qjtrnA/O2zcNVP7gKtatr1VsvUZaJrOFPdaaeUBnPvol9KreOKLsw5FsLQ76JaVmCo/ZIuSiKOHXqFLZs2YKCgoK0txu9nBYjJv9v4/9T/e6fnAGHKL5Qnf2Z357BM7cqv4PmgYoDWHTloph39M0E1uRTJL3KdViTbx0M+SaWLTX5wWAQHo8H27dvR2lpadrb1bJcp+/1Pjxx4xPwjaU5HUhIDtB4UyP2PLRHnfWRap7+zNNofaIVpXNK8e773s2Zigxk7fVrsfb6teh7vQ+/u+53iqah7X6uW9dRfZapsFxHT6zJtxaGfBPLhpAvSRJOnDiBwsJCVFdXJ92uHFocPM789gye/fSzkIIq/N75wNbPbg2XIJDxHKg4EP7/iY4JPHn9k6hdW4uPvf4xxevi6K126i+qx+f7Pg/3iBs/WvYjRa89UHEAl3ydF6+TfliTT1pjyDcxrUa01VzvuXPnMGvWLHi98u6Mk+nZddS6W2deeR52f313+GJCMq6nP/N0zMdHz4yi7Zk2RSP6HK3MjNK6Uuyb2Ie2Z9rCd8OV4+V/fxkv//vLrNXPMI7kT2HIJ62xMMvEjDQtZiy9vb3weDxYsWIFgOTBPNVynVR2oo9c/ggOVBxIO+BXra7Cvol9uKP/Dgb8LHH2V2fjPtf257YMtoSUWn71cuyb2IfG/69R0esiz9xoiWd1SG+cJ99a+EkTgMx3CMbGxtDb24sNGzYgJydH1jqVhPxUhcK97U1byuuo2VCDdz/1buyb2Mdp+7LMo1c9mvD55XtZl58N9jy0B/sm9mHldStlvyZTQZ8j2NYbyW96uAm/ufo3aHq4adrjHMknrbFcxyRi7SiMWpPvcrlw9uxZbNu2TbOdjdL2/fe7/hsjx0dS32DEzalcLhc6OztTXxfpJtmZG158m12uOXgNcFB+gOc0m6S2Hyz+Afx2PwCg/9V+vPy1l3F71+26tYcX3loLR/JNTKu579MJ+YFAAMePH8eGDRtQXFysaJ1azK7z3L7ncKDiQMoBv25zHT7d/mnsG9sXvoBPz5txkXbmbJ+jdxMoRfsm9qGwulDWspka0bc6K4zkNz3cFA74IX67PzyizzvektYY8k1MywtvUyGKIpqamrB8+XJUVFTMWGcmy3VGW0ZxoOIATv70ZNJlY1m6dyn2TezDzf9zM0rr4k/7Sdnjx+t+nPD5jzz/kZTWyw6fMdzedTtu+OsNspbVKujzuzDFKu/D83c+n/Bxvcp1WJNvHfykTSR6Z6HliLLSG2dJkoSzZ8+irq4Oc+fO1aRN0duM5/uLvo9f7PhFSuvd9eVd2DexL+ENqziSn50S3bG4eHZx3OcSscJoZTapv6hedjmOVkGf34kpfB/0wZp8a2HIN5HoYGmEKTRDy3Z1dUEURSxZsiTldaZbrvPiPS/iQMUBBMYDstoe6fLvXY59E/vwzv/zTsWvpez32bbP6t0EUpHcoP+nT/xJ45ZYkxUGQdqeST4Tl17lOvn5vBzTKvhJk2JKQ/7w8DBsNhu2b98ed4emZblO3+t9eOzqx2S1d/qKgEu+pvxmORzJJ5rJaCO3+yb2JR2tb/1dK3AwQw0iU5FzvwbOrkNaY8g3MSOM5AuCgPPnz2PHjh0J6wDl7OiU7AxD7ft2zbchukXZr5vaEPCxwx9D7epaZa8jopiM2umVE/TVnHHHqO9DplltCs1o5UvKdds2a/KthZ+0iek9ouzz+eB2u7F+/XoUFiaf2UJOW+WO5I+1jOHe4nsVB/yrf3o19jn2pRXw9X7fiUg+OQH+8eseV217Vg63VpGs4/ivJ/4VAGfXIe1xJN/E9BzJFwQBTU1NKC0tRWlp8tln5JbryPHih1+E63z8iyhj2fXlXay3J7KoZCP63c91Z7A15mfmkfzDDxxO+HxOyYXfmyGftMaRfBPTK+RLkoRTp05hwYIFKCwsVH1u+0TuLb5XUcBfdOUi1S+o5Uj+BXwfKFvMu3hewucPXXMoQy2hbPbyv7+c8Pk7h+7MUEtiY02+tTDkm5heIb+trQ2FhYVoaGhQbZ1y3Ft8r/yF86ZG7z74uw+mtU2iZNjRyQ43PXtTwuf7XurLUEsoWyUr06lZVzPtZ47kk9ZYrmNietwMa2BgAA6HA1u3btW0DdGUBPz3/fZ9WH71cs3awpF8CjFrSYJZVSyvwETbhKbb4HfCnOU6cu6r8PHXPq59Q5LghbfWwk/axDJ9M6zx8XF0dnZi06ZN4R14unPbJzPSPKIo4O+b2KdpwKcLzNTZefSqR/VuAmXArcduTfj8gTptbpBF2U1OwL/6p1fPeIwj+aQ1juSbRKwdRSbLdTweD06fPo2tW7dOu9GG3B1YKm39r8b/wkSHvFG3d+x/By7ad5Gi9afKTOGWpgy+Nqh3EyhT8gEE4zznz2RDzMtMI/ly74y89vq1Mx7jPPmkNY7kk2LRITYYDKKpqQnr1q1DSUlJwmXVcm/xvbID/p2OO7Hjjh2qt4HMJdmFl32vsybbCm546ga9m0BZQm7AV+s+C2pgyLcWhnwTy8RIviRJOHHiBBYvXoyqqqqYy6tdriO7PKcQ+LL3y/KWVRFH8qdk2/uQ7MLLQ+/l7CpWUH9Rvd5NMD0zjOSrEfD1KtdhTb518JM2Ma12HpHrbWlpwaxZs7BgwYK4y6oZ8v/nn/9HVhsLqgvw5YnMB3zKboXViW/a9oeb/pChlhCREfW93qfqCD5r8klLDPmUEkmS0NPTA6/XixUrVsRdTknIT+bUr08BnuRt2/rNrfjYyY8lX1Aj2TaCTRfc3nV7wuc7/tyRoZYQmVs2juR/f+H3ZZ/RkxPw9ThOsFzHWhjyaRq5gdzv96O/vx8bNmxQbWedbNt//sSfk67jy94vY8k1SxiyDSBbOzvFs4sTPi93FC8kG98DIpruQMUBBCYCspaVW4PPC29Jawz5pJjb7YbH48HmzZuT7izUKtd56WsvJV1HqP4+el2Z3olma7ilKZ9t+2zSZeQG/WwcrSSiC/5w0x8UdeyVXGSrV8hnTb518JOmMDnh1O/34+TJkygtLUVRUZEq65SzXPNjzQlfr8cFtmRel3z9kqTLKB3RJ6LsEaq9V1KiZ6RZdOLhSL61MORTWLKgLYoijh8/juXLl8seCVBrVHvNh9bEfe6631+nyTZTxdHbC7L1jMbOO3bKWo5B33xe+Y9X9G4C6ezA7AOKZtPKK81LKeDzZlikNYZ8CksUjiVJwpkzZ1BXV4e5c+dmdNsAsPv/7kZOwcydYd36Oqz8p5WK1kWZke2dHbkHbQZ9c3nj3jf0bgLp5MV7Xpz6e/bJf837fvs+3DF4h3aNUhlDvrUw5FNYonDc2dkJAFiyZIlq61S63N2Td2PhRxaibH4Z6jbU4brfX4db30x8G3qidCgJ+md+e0bj1mS3bO/0Ackvyqbs9Ny+53Cg4gCOPnhU0ev2TezD8quXp7xd1uST1vL1bgAZn81mw8jICLZt26Z4h6TmFJoAsOyWZXjHT9+hyjZJe2b4HPZN7JM1Wv/Mrc/gmVufyYq63Ewzw/cAkHdRNmWPpoeb8Pydzyt+3SVfv0R2SV8inF2HtMaQbzLp7DRiheOJiQmcP38e27dvT6n3r6QtagUBhnxjMMPIbYjcoA9Mjerf8NcbeOfULJVXlgfBJcR8nMzhkcsfge1NW0qvzfZOPMt1rIUh3yTUCFTR4djn8+HkyZPYvHkzCgsT3wk0ETXveJuK4eFhDA0NITc3Fzk5ORn5JwgCJiYmYj6XqB2h94KMR0nQP/TeQ0ARcPPZm9nhzDJ3DNwR83O+YyB76q4pthfveVFxSU7I0r1L8f5H369qeziST1pjyKewyKAtCAKampqwZs0alJWVqbJONZZTus3JyUl0dnZi9erVyM3NhSRJKf8TRVH2soFAAH19fSltR+nZj1Q6IZno8AiCAKfTicLCQtN0cpQEffiA/17235hz2Rws/2PqdbuUefsm9uGB+Q9AcAnIK8tjwM9i7hE3Hr3iUUy0T6T0+rL6Mnzq7KdUbpV+RFFkTb6FMORTWCgcS5KEkydPYsGCBaitrVVlnZkU2mYwGMTJkyexdu1aFBcXZ3T0wuFwoLGxMSPbylTHRcmykiTB6/Wiv78/bucq1vpS+d0z3cm56dxNOLT9EISJmSUdsdhetOFAxQFs+NQGXPK1S7K6k2MlDPbZ7cV7XsTRHxwFxNTX8en2T6O0rlS9RkXhSD5pjSHfRNLdWYTC8fnz51FcXIyGhgZV2qT2SL6cHWOoo7J06VKUlZVBEOQFsmwUGRCNxOv1YuXKlbJumpYOPTo5175yLRxtDvzt2r/JbufJH5/EyR+fxPz3zcfaf1sbdzup0OJMjJpne4LBIDwej+y2EqVitGUUT9z4BBxtjrTWc/n3LsfmT25Wp1EJ6BHyWZNvLQz5NI3NZsPk5CS2bNmS0e0q7Qwk2jHm5ORgZGQExcXFmD9/Pvx+f8bPJlDmRqR1C4aLgY0TGxXPkz/w5AAGnhxQdYYOLf5Fd4CUnsmJ/Od2u9HT0yOrZC4VRu/khP4JggCv18tOjsoev+5xdD/XnfZ6Nty6AVceuFKFFhkXR/KthSGfwkJ15Lt27VLtQKMkvMtdXzJutxuTk5PYtGmTonWT+qzQudo3sS+lC/pe/veX8fK/v4zG/68Rex7ak/L2syEYnjx5EitWrEBJSYnq69aqk5Os45NKp8fn8+HcuXNZ2cmJ3k46nSBRFOH3+9Pq5DQ93IRX/+NVeIe9Kb1nkdTqcCulx0g+58m3FoZ8C5CzI/F4PJiYmMDmzZuRn6/e10JuyAfkB8JEy3m9XgwODqKhoYE7MsqYy75xGS77xmUp3f327K/O4uyvzmLWkln4wGMfQO3q9K6DsZps6OSEHDlyBBs3blR1ndnUyQn983q9OHPmjOJOjqvLhbPfPAtPm0eV96724lq84wfvQE5ODtra2jJ+pkcQhPC/TJ3JiTeS/5Of/ATf/va30dPTg3Xr1uHb3/423vOe9yRd3yuvvIJ9+/bhxIkTmDdvHu688058/vOfDz/f0tKCBx98EM8//zy6urowb948XHPNNfjqV7+KqqoqNX81ioEhnxAMBtHU1ISqqirV66eVjNDLHfGPt5woiuEdjZodFUqdFUbyI+2b2Ifn9j2Hkz89qfi1k52T+MWOXwB5wNU/vhprr1+rQQvJbLKpkxNy5MgRbN68WdayTQ834bV7X4NnSJ1gXzS7CHt/uxdVK6rS6uSosbzL5cKZM1N3ytbqTM7Ro0fxxBNPIC8vD/n5+ejv78e//du/oby8HPn5+cjPz0drayv+8pe/4NJLL8Vdd92Ff/zjH9i7dy+OHDmC9evXx93u+fPncdVVV2Hv3r341re+hcOHD2Pfvn0oLS3FrbdO3Y3+ueeewyuvvILPfOYz2LhxI9rb23HPPffgtddew+uvv87BOI0xCZlcKBTHOwhIkoTjx49jyZIlGB4e1qQN6Yb36OXiOXfuHOrq6lBUVIRAIKCojaS+bAsearnywJW48sCVqc/JLVy4e25ecR52f2t3Ri4CJDKK5/Y9h5M/PwkE1VvnoisX4YO/+6B6K1TB0aNHsXHjxrQGpULHzXgdifnz52Pnzp0IBAIIBoPYv38/brnlFpSUlCAYDCIYDOIjH/kIrrzySnz+85/Hxo0b8clPfhLHjh3Dvffei0ceeSTutr/zne9gwYIFeOSRR5Cfn4/LL78c3d3d+OpXv4pPfvKTyMnJwYc//GH8r//1v8LHg8suuwwLFy7EVVddhX/84x/YvXt3yr87JceQb3LJwnNzczMqKysxf/58jIyMqD7yqqRcJ531DQ4OwuPxYPXq1ejv71dte0Spuuwbl2Hjvo14/OrH4Wx2prQOwSvg+Tufx/N3Po+6TXX455/+M8t5yHTcI2788eY/ov+VfkDFQ1BeeR52f93YneR0B0Mir5eIZfbs2Zg9e3b4Z1EUsXXrVlRUVAAA2tvb0dvbi5/85Ce4+uqrw8t96EMfwgMPPJBw208//TRuuummaZ2UG2+8EQ899BBOnTqFDRs2xJyGOzSxh82W2l2HST6GfJNLFLK7u7vh9/uxZs2apMtqsf1UlgNmnhlwOp1ob2/Hjh07wqcorVYmYlT8HIDLH70cK1aswB9u+gM6/tyR8npGjo9MlfMAyJ+Vj4vuukiXiwWJ1PDiPS/i+MPHIbjUn9546+e34rJvXKb6etWmx/4xuia/ubkZAMI5IKSxsRFjY2MYHh6e1kkIcblc6Onpifm60Ho3bNgQsw2vvvoqAGDtWpYkao0h3+TiBd6RkREMDAxg+/bt00YCtAj56bQz2fqCwSBOnDiBDRs2oKCgQNE2SVv8HKZ7/6PvBwAcfuAwXv73l9NaV3AyGJ6dJ7coF++45x0M/GRo6XZyk8kpycHOO3binf/nnZptQ216zK4TPU++3W4HgBkXwVZXV4efjxXyx8fHk74uFrfbjS9/+cvYvXs31q1bl8qvQAow5JtcrPDsdDrR0tKC7du3T/tj12oEXM3ZdSLbKEkSTp8+jcWLF2PWrFlx18WwSUay846d2HnHThx+4DDe+M4bCEykd/2I6BPDgR8AKpZWYM+P96D+ono1mkuUklf+4xW88d03VK2rj5ZfkY9Lv3qpoctx9OBwODA0NBTzOafTidbWVhQUFEwbhY8+ToaOocmOn/Gej/W4JEn45Cc/CZvNhr/85S8J10vqYMi3GL/fjxMnTmDjxo0zZtLJtnKd7u5u5Ofno75+ephhuQ5lg1DYB4BD1xxC30t9qqx3omMCh957KPzznG1zsOdHe1jLT5o589sz+J97/gfuYTeQC0DLeQ9ygUu+qs+89mrTaiT/iSeewOc+97m4z4emcZUkKTzyPj4+jsrKyvAy8UbqQ0KPh5YLiXdmAADuvvtu/OEPf8Bzzz2HZcuWyfhNKF0M+SYXGXhFUURTUxNWrFgxY+Q7REk4lrODUhLyRVGUtZwkSbDb7RgYGMDOnTN39LHaxNH8zGNnS74b/nQDgLdLeb72sqohyfaWLVzLjwKgrK4Mu+7alfHRT/4NmkPbM2346+f+Gn9KS/VL7IF84JKvmCPYR9Pi7+JjH/sYPvaxj8V8bvfu3XjrrbfC2w2N5jc3N2Px4sXh5Zqbm1FTUxOzVAcAysrK0NDQEK7pj3xd5HpDvve97+G73/0ufvOb3+Bd73pXar8YKcaQb3KhoBUqbZkzZw7mzJkTd1ml61Uz5Mtdzu/348yZM9i6dWvcOXYZLskolHwXI0f3X7znRRz9/lFVZxtBAHANuMIz9oSwxIdieW7fczj9yGmI3uQDMKrKA2pW1uBdX3sXll+9PLPbtoDI4/ayZcuwatUqPPbYY7jqqqsATA0IPvbYY9izJ/GduPfs2YM//OEP+MY3vhEu/T106BAaGhqmza//6KOP4otf/CLuv/9+XH/99Rr8RhQPQ76JxArKocc6OzuRm5s7racu5/WJllWT3PVJkoSzZ89i9erVKCkpibsuhnwygnT+TkJ30QWAP33iT2j9XatKrZopusQHAJALrHz/Slxz8BrNtkvG0Pd6H575X8/A0erQtR11m+pw8z9u1rUNVrR//3585CMfwZIlS/DOd74Tv/jFL9Da2opHH300vMxLL72E97znPfj73/8entv+S1/6En71q1/hox/9KG677TYcOXIEP/7xj/HQQw+F930vvfQSPv7xj+O9730vLr74Yrz++uvhdS5cuBALFy7M7C9rMQz5JpeTk4Ph4WGMjIxg27ZtCUOH0pCvZhkOIG/E0+Vyoa6uDnV1dQm3mcq6SV3sbKnnmoPXAAen/v/Mb8/gb1/4G4JODa9oBAARaP1dKw787sC0h2saa/CuryobYeX3wBie2/ccTv38FKSgAT6PImDXnbuyajYcs/rwhz8Mp9OJ++67D1//+texbt06/PnPf542Gi9JEgRBmPa3vGLFCjzzzDPYt28f9uzZg3nz5uH+++8P3+0WAF544QUEAgE8++yzePbZZ6dt9ytf+Qr279+v+e9nZQz5JhcMBtHd3Y1du3YlvX200lCmdhlOsuVsNhuCwSAaGhpUaRtRNlp7/VqsvX5qfukzvz2Dl/7PS/DY4tRHa2Ds7BievP7JmM9VLq/EZd+6jCUWOml7pg0v3fMSxtvHNZ3VJlX1u+txw59uwJEjR7Bjxw69m0MRbrvtNtx2221xn7/ssstiHlcvueQSHD58OO7r9u/fzyCvI4Z8E/N6vXA4HNi0aVN4Dnm1pDqvfarrc7vdaG1tjXulfyptI8p2kYEf0L6sJxlHmyNuB+Bv+BsKKguw6992mfICSq2NtoziTx/7E8bOjk2/TiO0a9dyRpsULbtmGd77wHtRWleqd1OILIkh36QEQUBTUxMqKiri1q5H06JcB0h/VF0QBBw/fhzr169HV1dX0vUZZRYPPW50YiTsbGVeZFkPMDVX+eEHDkPyGONzCDgCF+b0LwTgT7x85cpKXP3Dq017QfBz+57DqV+cghSQkFOSg7y8POVlWHqH+xwA0tTNqN75f97JDhyRgTDkm5AkSThx4gQWLlyIsbExTYK7FneyjbVcaFaghQsXorKyUtEFukRW987/885pNc9tz7Thje++gaGTQ/oH/yQBHwAcrY4LFwTnYSpQRmbgPFyYsrEAiQNvghHv/PJ8bLt9G8rmluHI947AM+pB0B+cWrYEgCdiHbG2UYCp0fXofB5aPgdT88dLwMtFL8d87yWPhKARa2yi5QDFtcXYfsf2lAI9981EmcOQb0Lnz59HaWkpFi5cCLvdrlnIz0RNfm9vL3JycqZdgS9nJF/vA4ncKUaJMmn51ctn1MvrXeIjW6z51yMfSzaineD5oDOIN+59I/aTkZc7xFtHssclhNuqe+dKobL6MlzxvSt4nQVRFmLIN5GcnBz09fVhcnISW7ZsCT+mRcgH5F94myqHw4He3l7s3LkzvB45bWSwNg69O1tGYPT3ILrEB3i7/vvmt+u/ydQKKgqQX5oPSZCw6ZObNJ/txuh/D0RmwpBvIuPj4+ju7saOHTsUheIQI43k+/1+nDp1Clu2bAnfZCO0nByR69Ij9BvhbILe2NnK3vegdnUtPv7Gx2c8/uI9L+Lofx015MwtJM/i9y7Gnh/t0fVi2Gz9uyDKNgz5JlJeXo4tW7YgP//Cx6rF6LzS9SoN+ZIk4eTJk1i5ciVKS0vjLqdG24hIvsgbdEU7/MBhvPIfr2RdOUrWi77WIBdo/HAj9jyU+G6lRGR+DPkmkp+fH3MufC3uYqvlhbdtbW2YNWsW5syZE3PZbCjXMUIb9Mb3wFp23rEz7oWYJ06cQENNA166+yW0P90+VZ9eAFkX31qFnNl1SuaUYPd/7J42bWq24bVKRJnDkG8y0TtQI9TkK1nn8PAw7HY7tm/fHnd9arVNa0Zog974HlBISV0Jrv3VtbKXP/PbM/jHV/4B15DrwrzwGs2uk5DKs+vkFOVcONtRADRez1F3ItIGQ77JKR2d16pDIGd9gUAA586dm3ZNQSzZUK7DkSqi6ZT+TUTf6Esr7hE3/nrHX9H+XDvy8vKw6NJFuPRrl6J2da3q2zp8+DB27rT2PPIcySfKHIZ8E4m141Qa3EVRlL2smiP5kiRheHgYW7duRWFhYVrrM8oBRO+Oht6M8jkQJVJaV6roDEM6+DdBRJk0s4CbTEXLC2/V3H5XVxfKyspQVVWlyvr0Dtg8mE/R+3PQG78HRESkF4Z8k9PiLrZK1itnnX19fRAEAWVlZbK3n2ybRgiXRmgD6Y/fA6ILWK5DlDkM+San94W3yZabmJhAd3c3li+XdzdFowT4ZHgQy57PioiIyIxYk29yRr4ZViAQwKlTp7Bx40aIoqhajb9RwqUR2kBEZCQcydePKIoxp9km8+KnTWGZDPmhG14tW7YM5eXlimr81WqblngQIyIiIxEEgSHfYvhpm5yWI/npLNfR0YHS0lLMmzcv/Jiad9A1gmxpp5b4HhDA7wFdwJH8KXr8TQiCgLy8vIxvl/TDkG9yetfkx1rn6OgoRkZGsGrVKsXbTqVcR48DihHOJuiNB3IiIuMQRZEh32IY8k1Oq7CpZL2Ry3m9XjQ3N2Pjxo0zThuqNVsPAzYRkXFxAECfMxocybcehnyTM9KFt6Io4vjx42hsbERxcfGM5eTKhgDPjgYBDDN0AfcHU/g+TNEr5LMm31r4aZuckUJ+S0sL5syZg5qaGlXWl27bSFv8HKbwPSC6gDX5+uFIvvUw5FuAnhfehgwMDMDr9WLJkiVprS9bynWM0AYiIjImPTo7rMm3HoZ8E4m1w1C6E9HiwttAIICOjg5s2LAhYXvMNrsOEVEI91sUjSGftMaQb3Jajc7LXa8gCHA4HNiwYQPy8+Pfe81s5TpGaIPe+B4QTccyFZbrhHAKTcoEhnyT07MmX5IknDt3DqWlpZg1a5Yq286Wch0iIqJ4eOEtZUL8oVUyBT1vhtXV1YWCggLVt51KgM906GdHg4hoJo7kX8ApNElr7NKZSLyafD1G8u12O4aGhrBy5UpVw262lOsQPweA7wFdwO8BRdLj+8CafOthyDc5Pe546/P5cObMGWzcuBF5eXmq1drLXS7WMpkeMWG4I5qOo7d8DwB2diJxJJ+0xpBPKYkXYkVRxIkTJ7B69WqUlJQomhqTO38iIvNjZ0e/kXy+99bCkG9ymS7XaW1tRU1NDerq6hSvU602Ri+jx06NnZYpfA+IiGbS68LbRLPckfkw5JtcJi+8HRoagtPpxLJly6Y9nulyHTIGjhgRXcD91hReeDuFN8OiTGDIN7lM1eS7XC6cP38eGzdunLbjUju8y51CU2/sjBBRNCPsm8i6WJNvPQz5JpeJcp1gMIgTJ05gw4YNM6bMVDO8hzA8Zw9+VkQUiSP5UzhPPmUCP22T02pEObReSZJw5swZNDQ0oKKiIq11mqlcJ1vaqSUeyKdY/XtARMbAkXzrYci3AC1H8nt6epCbm4uFCxemtU4ls/CkgkGL9MCOzhT+/VEk/l2wJp8ygyHf5JTsRJSGfI/Hg/7+fjQ2NqqyfbnbzYbAkC3t1BLfA6IL+Lcwhe/DFIZ8ygSGfJPTqiY/GAxicHAwfMOrTOJBgoiyEUewp/B90IcgCHzvLYYh3+S0CPmhMp3a2lqUlpam20RFsmUHxVFsIqKZuF+cwnnyKRMY8k0k1g5Di7B5/vx5lJaWoqysTNX1ysWDRHZgR4eIKD6W65DW2KUzObVH8oeHh+FwOLBw4UK4XC41mqhIKsFREAScO3cufEvv6H+5ubkxH09nOZ/PB5fLhcLCQsXrISLzYYd3CqfQnKLH94Gz61gPQ77JqRny3W43zp07hx07dmB8fFyXnVQqB4eWlhaUlZVh7ty54Wk/o/+JoijrObnLuVwu+P1+uFwuRdsKHQBD722y31fNjkk6y8R6LhAIQJIk+Hy+uMsRWQm/8xTCefIpExjyTSadnUaikC8IAk6cOIF169ahsLAQgH4jU0q2a7PZ4PP5sHjxYhQUFGRsp9rR0YHy8nLMnj1bs20k6ijI6UzIWSb0fCrrcrlcyMnJgd1uj/l6pb+r0o5Jus+r0QESRTH8uzPgEXEkP4Sz61AmMOSbTPSOQ62R/LNnz2LBggWoqqpSvF41Kdmu1+tFa2srduzYgUAgoHHLMs/oo+G9vb3Izc3FggUL0l5X6DOX2+FQ0oGR+3Mq2wkGg/B6vXjzzTcV/Z56n5lRo6NERMbCch3rYcg3OTVCfm9vL0RRRENDQ0rrVZPc7UqShFOnTmHNmjUoLCzMeMjX6/0xq1BoDAXLbOFyudDZ2Yl169Ypel2qnQolHZNgMKjZ2aBobrcbx44dC392kZ2Z0MCEnqVl6XSmQr+HnM+UnR++DyEcyadMYMg3uXTD5sTEBHp6erBz584ZZwj0IHe7fr8fdXV1qK2t1bhFlAg7Oqkx22h4U1MT1q5dGy71iySnU5LumRW519Wksp1Yvw8wfd8bKt3yer04cuSIqmdM9DiDQ9mJNfnWw5BvckpH8iMFAgGcPHkSmzdvjtn71yvAJdvuxMQEgsEgVq5cGX4s0wcmjuTzIkOaLt73wSrB0efzobm5GRs3blTtjInSTowaJWixRHZmokV3EILBIILBYPiaHbXPrKj9eq3oMZLPch3rYcg3uVTDpiRJOHHiBFasWBFzPny9Qmyy7QaDQZw6dQrFxcW6jlhYIbQQkXJW6dQAsc/SjI6OYmJiAg0NDaqcwUlncoBkz4V+ByD5Pj0U2uV2LPx+PwKBQPgutFqddWltbUV+fj4KCgowMjICl8uF4eFh5Ofnhx//+c9/jvvvvx89PT1Yt24dvv3tb+M973lP0s/3lVdewb59+3DixAnMmzcPd955Jz7/+c/HXf7aa6/Fk08+ie9///u4/fbbFXyTKFUM+RaQShhvb29HeXk55s6dG/N5PUN+Is3NzVi0aBG6u7sz1KL4rD6ST0QX6DFyq7dYHZpQuCwpKdGpVdqI7BTI6XCMjY3B5XJhzpw5sjseSicHEEUR9913X/jsidPphMvlwuHDh8OPDQwM4Ny5c5g/fz6uvvpqVFRUYO/evThy5AjWr18f9/c9f/48rrrqKuzduxff+ta3cPjwYezbtw+lpaW49dZbZyz/17/+Fa+//rpm7z/FxpBvcqmE8ZGREYyOjmL79u0J16uXeL/P0NAQAoEA6uvrdQ/5VjuYx5KTM1WHTMQOL4WYtbMT+p1Co+vJeDweCIIQnrFOK4cOHQr//69+9Sv4fD7ccccd4cdWr16NT3ziE/jZz34GYOri3GPHjuHee+/FI488Ene93/nOd7BgwQI88sgjyM/Px+WXX47u7m589atfxSc/+clpn3EgEMAdd9yBb37zmzE7AKQdXoFhckp3pqIooqWlBZs2bUq4ozJauY7X68X58+exbt06wxxAGGwI4PeAiIwhuia/vb0d586dw/XXXx9+LDc3Fx/60Ifw9NNPJ1zX008/jQ984APIz78wVnzjjTeit7cXp06dmrbsAw88gJKSEnziE59Q6TchuRjyTU5JGBdFER6PB2vXrkVRUVHS5Y1SriNJEk6ePInGxsaYs3fowSgdDdIXvwcUws7eFL4PU4xw4W1zczMAYM2aNdOWa2xsxNjYGIaHh2Oux+VyoaenJ+brItcLAIODg/j617+O//zP/+TMPjrgO24i8WY2kLtTbW5uRn5+Pqqrq2VtS6+ddfR2Ozo6UFlZiZqaGl3aE4/VD2acYYhoOnb6pvB90G+e/MiRd7vdDgAzSoZCGSD0fLTx8XHZr7vrrrtw1VVX4dJLL02n6ZQi1uSbnNyg1d/fD7/fL3sk3CjlOg6HAzabDTt37pyxrFlrP4mIKPtpcXxyOBwYGhqK+dzAwAAqKirQ3Nw8bRQ+uh1yZxRKNC0uALz22mt4/PHHcfbsWdntJ3Ux5JucnDA+OTmJzs5O7Ny5E4cPH5a9Xi0kC+aRzwWDQZw+fTrm9QOh31uvkM9RbCKimTj4MkWr48MTTzyBz33ucwmXueeeeyBJUnjkfXx8HJWVleHn443Uh4QeDy0XEn1m4Atf+AI+9alPobKyctqyHo8HDodj2jZJGyzXMTk588qfPHkSGzdunHYaTw4lOyk1d2ihdZ09exaLFy+OOY8/6Y8dHaIL+LdAkbTq7HzsYx/DxMREzH//8R//gf/+7/8OfxdDo/mRNfShn2tqajB79uyY2ygrK0NDQ0PM10Wut6WlBf/5n/+J6urq8D9gqoSHd6PPDIZ8CwtdsLp06VKUl5creq2SACd3WTnLhZYZHByEIAhYsGBB2u3Tgt7bJyIyIo7k60eSpGkX3i5btgyrVq3CY489Fn5MFEU89thj2LNnT8J17dmzB3/4wx8gCEL4sUOHDqGhoSE8v/6f//xnvPDCC9P+AcDnP/95/P3vf1fzV6M4WK5jcol2pp2dnSguLsb8+fNTWq+SkK/WOnNyciAIAtra2rBz586ENYGR6+JBhYj0xv0QhRhhdh0A2L9/Pz7ykY9gyZIleOc734lf/OIXaG1txaOPPhpe5qWXXsJ73vMe/P3vf8fu3bsBAF/60pfwq1/9Ch/96Edx22234ciRI/jxj3+Mhx56KPx7XXLJJTHbsXLlyvB6SFsM+RY1NjYGm82GHTt2pPR6pTsnuSP5ctYzMTGBrVu3oqCgQFEbMokj+VP4HvA9IIrEkfwL9Aj50devffjDH4bT6cR9992Hr3/961i3bh3+/Oc/T7vbrSRJEARh2r5sxYoVeOaZZ7Bv3z7s2bMH8+bNw/3338+bXRkMQ74Feb1enD17Ftu2bUt53lotynWA5IGou7tb1jSfDNn644Gc7wERxabH8UkUxRkj+QBw22234bbbbov7ussuuyxmey+55BLZk3WE8LicWazJtxhRFHHixAmsWbMGxcXFaa0r0+U64+PjsNvtKCkpSXtdWtN7+0RkLNwfTOFI/hS95smPFfLJvBjyLebcuXOoq6tL+8r2TF94GwwGcebMGaxduzblHSMPspnFjg7RdAy3pKdYNflkbgz5FjI4OAi3242lS5emvS6lAS7dsHfmzBksWbIEJSUlqs3UoyW9t09ERMal14W3qZboUnbip20RTqcT7e3t2LBhQ9Idi1oXyUYum04w7+/vBwAsWLBA1ek4taT39omIjIjlOlOMMrsOmRtDvglFh0tJknDixAmsX78+6Yw0WoTodNbpdrvR0dGBtWvXhpeh7MCODkWy+t8u/xZIb6zJtx6GfBOJdRCVJAkejweLFy9GRUWFrHWoNRNOonbJWU4URZw8eRJr166ddjfeVDoMmQ4YDLhEFM3qHR2AI/khvPCWMoEh3+S6u7uRk5OD+vp6WcvrOZIPTA/wbW1tqK2tnTZdZraU6xCF8HtIRNFYk0+ZwE/bxMbHxzEwMJD2VJmxaHHhbeQ67XY77HY7li9fPmOZbMBOxhSrvwfZ8n3VmtW/B3QBvwv6YU2+9TDkm0woVPj9fpw+fRobN27U7CJZLdYpSRICgQDOnDkT9yJhjuRnBwZcogu4P7qA+wZeeEuZwZBvQpIk4fjx41i1ahVKS0sVvVbPmvzQOs+cOYNly5bFvOmV0nXphZ0MIorGcEuRWJNPWmPIN6Hz58+juroas2fPVvxaLUbyAfmj70NDQ8jNzcX8+fMVrT/Wukh/7OgQUSReeDtFj30ja/Kth5+2ydhsNkxMTMyoZZdLixFouesUBAH9/f1obGzM2Da1ovf2jYAHciKi2Di7DmUCQ77JFBQUyLrhVSbJaYsoihgfH8fy5cunTZdJlM2M9HdI+rJ6pz+EI/n6YU2+9TBNmUzkdJOR5O5Y9RrJP3/+PIqLi1FeXp6xbWpJ7+2TcfB7QCEMtxTCkXzKBI7kW4BWc9orkWidY2NjcDgcmDVrlmrbZsjWHz8DIorGkfwLOE8+aY2fNk2T6ZH8QCCAs2fPYsOGDcjNzTVNKGTAJSKiePQ4PnAk33oY8i1A75H8eOuUJAmnTp3C8uXLUVxcrOqoRvQ2OXJERHriCPYUvg9TOE8+ZQJDvgUYIeTH0tfXh4KCAsybNy/8mFnKdfTevhHwPSAiio81+aQ1hnwLMELYit6+y+VCd3c31qxZE37MCO0kIiLSGufJp0zgp20BRhjJj1ynKIo4efIk1q1bN2O6TI7kExGZF8t1prBchzKBId8CjBbyW1tbMXfuXFRWVs5YTqttApzKMNPY0eG1IERkHAz51sOQbzKxQoURQn7I6OgoJiYmsGTJkoxsWy9m+l0oPfweEMAR7BC+D1M4Tz5lAkM+TaPlPPl+vx/Nzc1x78ir5rYZsomMhcGO6AK9Qj5r8q2Fn7YF6B14c3JyIIoiTp06hZUrV6K4uDgj29T7d7Z6J4PvARFF40i+fliuYz0M+RZghHKdkZERFBUVYc6cORndNhGREXDfRpF44S1lAkO+Begd8gOBAEZHR6dNl6n1tvXuMOi9fSIj4d/CFI5gUySGfNIaQ74F6BnyRVHE0NAQGhoaku5c1A75pC92dIgoGst1puixb+SFt9bDkG8Beob8c+fOYdasWRmpw48W+Xtk+qDCgEsh/B4QUTS9ynV44a218NM2mUzvNBIFmJGREbhcLlRXV8sKOmYq1yECeEaJLuD+aApH8vXDkXzrYci3gNDsNnKXVWPU3+fzoaWlBevXr5c9cmCmch12MvgeEEXTe79ExqFHZ0eSJI7kW0y+3g0g7SnZkSgN+bFIkoRTp05h1apVKCoqCj+mJjk7yMhtCoIAQRBkd3bkbjO0jZycnGnPCYIASZIQDAanLS/ns5C7DAMDEWUbjuRfwPeBtMaQbwFa1eTHW7a7uxulpaWYPXu2onUqXS7RDjJyXYIgAAAKCwunvSbRtiKfS9amWM+PjIygvLw83JbQcrGWTaUDFPn7q3XQjF5PZLuUnI0JEUURkiSF3/9Yy8TD0SYiMjOe5aRMYMg3oeiwpuWFt9HLTk5Oor+/Hzt37lS8TiXLyV1GFEUEAgHk5eVlrBbR7XZjZGQEO3bs0CysyjkjIacTI+f9lvt9iO7ETE5OorCwUPHZE61G+tLtxMhtU6yOTvR7wE6M9TDUXcARbJ7RoMxgyLeATI3kC4KAU6dOYf369SkFaiUhSm44DZXLZCrgS5KE5uZmrF69WtMgZ/SQKAgC+vv7sX37dhQUFCh+vVE7MUpf6/F4kJeXN+1sRqY7MXJLu9RaBjD+91MvDHXs7IQw5FMmMOSbTKI6eS22FbnelpYWLFiwALNmzUq4XCJqLZeTkxOuw8/Pz9zXfGBgAKWlpaiqqsrYNo2os7MTCxcuTCngA+YJiefPn8fixYunTSEr98yGGp2YZOvQupQsRBAEBIPBtK6JibUdgJ2YbMOQT5Q5DPkWkJubq9lIfsjw8DA8Hg8aGxtjLifn4K5muU6oRCI/Pz9jB2S/34+uri7s2LEjI9szKq/Xi+Hh4WklW1bk8Xjg8XhQU1Mz7XGzB8Tov3Wn04ni4uJpHR0tr4eJfC5TnRg5AoFAuHxQzjrN3InhCDZH8ikzGPItQstyHZ/Ph3PnzmHHjh0xd1pKwrtanYHCwkK0t7ejv79f1vpycnKQm5sb/v9Ufh4aGkJFRQX6+/tjLhO9fDrPG1lbWxuWL19u+jCbTEdHB5YsWWL4z0tt0Z97f38/Fi5caJrvQ6qlZJOTk6iurp52ZtHonRgtLuoXRRHBYBB+vx+AOTsxREbBkG8BWk2hCUztsE+fPo3Vq1ejsLAw7e2rUa4TDAZRU1OD2bNnJ92Zhw6Okf9CF0tG/3+i5x0OB/Ly8lBTUzPt+VCJQrzXy9lGrJ/lStQpUaNjE/2z1+vF5OQk5s2bB7vdntI6zBCKQ+9DrDNbViIIAux2O1avXq13U1STSkCUJAl2ux0rV640/M2I1LoeJt5yXq8XpaWlyM/PN2UnJrpd8b4voihOu1ZHrU4MOzAUiSHfApQGdyUj+b29vSgvL0ddXV3a61Ry4W08odPhcst01AiVwWAQbW1t2Lp1a/i+AEaRbucl0fOhEbnIx/r7+1FTU4ORkRHFHZfQz0qofYZErec7OjqwcOFCBIPBGc9bydDQEObOnWu53zva5OQkysvLDR/wAW1DYuj+IaWlpZptIxmjXNQfuvts6PgcvawWpWRdXV2K10nZjSHfApSEfCXLBoNB2Gw2XHzxxaqsM93lQgE/Nzc3o6MZ58+fx6JFiwwX8IHpnRitA8bw8DC8Xi/WrVun6XZC1DoLE+v56P8q6agIgoDx8XF4vV4MDg5mzVkYNTo30QGjr68PGzZsUPujzzpDQ0OYM2eO3s3Q3fj4uO6TEhhhpFsUReTm5mpyzIjXifF6vVi+fLnq2yNjY8i3AKUhX85IhyAImJiYwObNm5PuNJWEd7lirS80SpTJ0TKHwwGXy2WqcoRUiKKItrY2bN68OWPbNOrIeGtrK+bNm4cFCxaktZ5Uy7tSPQujxvojiaIIn8+HpqammL9fup0MPTo6qX6Oo6OjWLZsWUqvNxO73Y7q6mq9m6E7l8uFsrIyTdYd73jc09PD76AFMeRbgBYj+c3NzSgtLUVJSYmsdcqV6kh+KLRkcjYdURTR3NyM9evXGzJsZlJvby9mz549bQYVKwoEAhgZGVFlxCwyaGajs2fPYvbs2TFL+VIt5dL6LEyydskV2TEIdXZOnDhh2PKyTHWY7XY7Fi1apPl2jE7LkB9PR0cHR/ItiCHfAtQO+TabDX6/H6WlpbLXq3a5TiS9ynQ6OzsxZ86cjO+sjSYQCKCvr8/yU2YCU6NlDQ0NWRvM1RIMBjE+Po41a9bEfN6oZ2HUEtlJaG9vR0lJCWbPnp3WGZjQz/HOwKh5FiaZVC+md7vd6O7uzshZGSNfC+N0OlFZWZnRbXZ0dHAk34IY8mmaZEHb6/WitbUVO3bsQHNzs+rhPZVOgx5lOi6XCyMjI9i+fXvGtmlUHR0dWLx4cVZcVKilYDCIoaEh7Nq1S++m6G5wcBDz5s0zXLjKlMigabfbsWzZsozelE9LqZ6FmZiYQGVlJSorK5N2QlLp/CTr7Mil1RmUyJ9HRkZQVFSE4eHhtMvL5HZiOjs7cd1116Xz0VMWMsdehxJSayRfkiScPHkSa9asQWFhoewDuNohP3I5Pcp0JEnC2bNnsXr1asuP2LrdboyPj2PlypV6N0V3vb29WLBggeW/E8DU3PibNm3Suxm6c7lcKCwsNE3AB1I/CzM2Nob58+dj9uzZGrRKPamcZZH7fOgsjM/nQyAQgN/vT7njEvlzLG+88QYOHjwY/tnpdOLFF19EWVkZCgoKkJ+fP+2/n/nMZ3D11Vdn6m2mDDHPnofiUhLyE+ns7ERFRQVqa2tVXa9SoQOMXmU6fX19mDVrVsZPtxpRa2srVqxYYdkR2xBBEDAwMMCSJUxdjF5cXGzI2aYyzWazYe7cuXo3wxDsdjsaGhr0bkZSWl8LIwgChoaGNC+dueiii3DHHXeEf77kkkvwxhtvhDsbgUAg/N9AIKD7rEekDYZ8k4kVttQYyXc4HBgaGpoRYvQo1wktp0eZjtfrRW9vL3bs2JGxbRrV+Pg4JElCTU2N3k3RXX9/P+bNm2f5kiVgqhO8cOFCvZthCMPDw9iyZYvezdCdIAgIBoNxb5hoJW63O+P3CQiN+BcUFAAAPwcL4XllC0g35AeDQZw+fRobNmyYNrqhZRlOMqEynby8vIyO4re0tGTFXSu1JkkSWltbWaaDqe9ib28vgy2mLsKemJjgNIkAPB5PuBTC6kL1+DRVNlNeXp7RbYaukSHrYci3gHRDfnNzMxYtWjRjFhktwrtcepTpDA0NIS8vL1yuZGWDg4OYNWuW5WcWAoCBgQHMnj2bYQ684DYSb4B1AefHv8DpdGZ8v9nZ2cmZdSyK5ToWoSRkRy47ODiIQCCA+vr6GcspufBW7nJy22m32+H3+8O3BU82E0Gs55S0LRAIoL29Hdu2bZO1vJkJgoDOzk6+F5j6W+np6cHWrVv1boruJElCf38/y1PeNjw8zIuP32a322MeQ6zI6XRm/Kxfe3s758i3KIZ8k4lXk5/K671eL9ra2rBz586460hlystE2062nCiKmD17NiYmJjAxMaF4FoJUb27j9XqRn5+P48ePK5rmTOldO1N9LpPzQnd3d2PBggWs68RUJ7impobvBaau2yktLeV7gan9RW5uLt8LXJgggRdiT/H5fBm/aWBnZycnBbAohnwLSKVcJzRdZmNjY9wyBC1q8hMJHSxqamoyehrcbrejvb0dmzdvTnmKs0RTrAWDwbTWFetnJZR0LkRRxMjICObPn4/W1ta0OyOp3p3TCCRJQnd3NzZv3qx3UwyB1yVcYLPZWKrztomJCVRUVOjdDEMQBCG8T8ukzs5O3HjjjRndJhkDQ74FpBLyOzo6UFlZmXDmFC1q8hMtp8dsOoIgoKWlBZs2bTLlxbaJ5naO1bno6OjAokWLUFVVlbTzEfq8Uu2oKJkTOpZEHQ01zppMTk4iPz8fDodDUUcl0XPZKhAIwOl0chq+t9lsNqxfv17vZhgC6/EvcLlculzHxLvdWhdDvgUoDflerxcTExNJp4lUa4Rezvr0uOkVMLVznD9/PkpKSjK2zUxSEi6dTieCwSCWLl2aFYFU6RkVJZ2NQCAAm82GefPmwel0pt1xSeXsi9rlXemsa3BwELNnz4bf7zf02ZdM8Pl8kCQp4yUZRmW327F27Vq9m2EIesysA0xN28lJEqyJId8ClIR8URQxNjaGiy++OGmYVnLgTmfEX6+bXk1OTsJut2P79u0Z26aRnTt3DitXrsyawBYZSNU2OjqKmpoaXaYQje6kpHOWRMnZl0Q/j46OorKyEg6HI62zLwB066ikWkYWbXh4mKU6bxNFEX6/nx2etzmdzozfV8TlcmV8Xn4yDoZ8C1AS8js7O1FeXi57p6B2uU4soVuBZ7JcRpIkNDc3Y82aNVkTarU0MjKCgoICznX9to6ODjQ2NuqybaONjNvtduTl5WHdunVpryuVjovcszOh/Ug617tEPhbv7Ivb7UZxcTEGBgamPW7kjkq85dM1MTGBWbNmpb0es3C5XFi0aFFGt6nW9JkTExO4//778fTTT6OlpQUlJSW4+OKLcd9992HVqlUqtJS0wJBPYQMDAxBFUXbAV1Kuk+pyoihCEISMl+n09PSgurqaByhMBa+2tjZs3LhR76YYgt1uR2FhIU9/v623txcNDQ2qrCsyXGbjNTB+vx9NTU0x7wyu5OyL0k5Oqh2VRMsrEa/D4Ha7kZeXh1OnThnq7IxefD5fxmcZUivkd3d34yc/+Qk++clP4pvf/Cbcbje+9a1vYdeuXThx4oRq+wBSF0O+BcgJ2R6PB+3t7WhsbERfX59q61Uien2hU72ZLtPxeDzo7+9Pek2CVfT19aGmpsa01yUo1dHRwTv9vs3v98PtdvMMz9uGh4cxe/bsGY/rHS61lKhDcfLkSSxbtgxFRUUpnZ0JXYul1rU0SsvH1OhchH4OnU3q7e3V7OxMrO9Ye3s7VqxYkfbnvHTpUrS1tU07DrzrXe/CokWL8LOf/Qxf+cpX0t4GqY8h3wKShfHQznjt2rXIz8+XvROUe9BSMpIfSc8ynVWrVmXlSKLagsEgenp62OF5m8PhQG5uLs/wvK2/vx8LFiwwbYBVymazYfXq1Xo3I6PinX0JBfRsvUN46JiVanlX9HMulwtFRUXIycmZ1olJpaMSr9MDACdPnsQPf/jD8O/h9XpRUlKCBx54YNrvV1BQgIKCAlxxxRWyAnqsM5c1NTVYvHgxbDZbOm81aYgh3wKShey2tjZUV1ejuro6PFOIGutVuhwwfceqR5nO4OAgioqKMn5xlFF1dnaioaEB+fncVQBTo/hLly7VuxmGIEkSBgcHeWH62wKBAPx+Py9yfNvk5GRWz4+vdtlYX18f5s6dq/m9JC666CLcdttt4Z8/8IEP4ODBg5g/f374sVAHLBgMprWt4eFhnD9/Hp/97GfTWg9pJ3PpiXSTKGTb7XaMjo5Ou+W1ktOZqYzQJ1ouNCKhR5mO3+9HZ2cnSzHe5vF4MDo6igULFujdFEOYnJyEKIosTXnb2NgYKioq2AF828jISMxSHavi/PjTOZ1OXa7jGRwcxLx586Y9Frobc2lpaVqd0i9+8YsoLy/njbYMjHtnC4gX8oPBIM6cOYMtW7aEw7SS0+5aXXgbGl3IZMAHpqaIXLZsWdw7/FrN+fPnsXz58ox/DkbFUfzp+vr6sGTJEr2bYRhDQ0Oq1D6bhd1ux5o1a/RuhmG4XK6M/72IopjwDrsOh2PGLFCxxPocH3roITzyyCP43e9+l7UlWVbAkG8ySkL6mTNnsHTp0mk9eSWlNamU4chZTo8yndHRUQSDQc5v/TaHw4FAIIC6ujq9m2IILpcLfr+fI5Nv8/l88Hq9WV2OoaZgMAiv16vLjY6MSJIkeL1ezo8fwe/3o7CwMKPb7O/vR319fdznH3vssWmlPfFEH7//+Mc/4nOf+xzuu+8+vP/970+7naQdDtFZQKww3t/fDwAzSjGUhvxUtx+LJEnw+Xxwu91wu91wuVzweDzwer3w+XwIBAIIBoMQBCGlad7iEQQBra2tnBP/bZIkobW1lXMfR+js7OQofoTQBbc0ZXR0lB3iCJOTk5g1axb3p28LBALIy8vL+PvR0dGRcPrMW2+9Neb0rtH/Ir366qu48cYb8elPfxpf+tKXtP4VKE0cybeA6JDtdrvR2dk5Yy7nWMsmo2a5Tm5uLsrKytDb2wsAMWcgiP5ZrkRTkjmdTuTn5+P8+fOypy9Tay5no83jDEzNEFJaWspRybd5PB64XC5ejP220AW3nHHpgqGhIXYCI7AefzqXy6XL/rS9vX3a9XbpOn36NPbu3Yurr74aDz74oGrrJe0w5FtAZMgWRXHadJmJllWy3mTLJSMIAgCgsbFRkzKdeJ2FyclJtLe3Y926dbKmK4tehyAIqkyvls48zmreLAaYGrVevHgxBgYG0uqoyJnDORt0dnZiyZIlWdt+tY2OjqKqqooX3L5NEATdQpxR2e12ngmMoNdFt52dnbj00ktVWZfNZsPVV1+N8vJyfP7zn8fhw4fDz1VUVGDt2rWqbIfUxb20BUSG8ba2NtTV1aGqqirpsnLWG+/W7tESrVMURQQCAU1n08nJyZkxFZooiujo6MD69euz8u6lseZJTrVTEfp5ZGQEFRUVyMnJgd/vl71OOetXQo2zJmp0foLBIMbHx7FkyRL4fL6YN6OxWvjv7e1VdXQw24VKdaz2PYhHkiR4PB7ePC+Cy+XSZealzs5OfPzjH1dlXWfOnAmfZX/3u9897bndu3fjxRdfVGU7pC6GfAsIBfexsTHY7XbVTrOrNbuOXrPpdHV1oa6uLisDPqD+XTT9fj+6urqwc+dOXW8EpsWZEVEUU7oBjcPhQH5+PpqbmzUtGVO7E6NVyZjX60UgEODNwCLYbDY0NDTo3QzDcDqdKC8vZ6cngtPp1KWcq6urS7XtXnbZZapdB0eZw5BvEYIg4OzZs9i6dWvCna/SkXy5y8VbpyAIusym43a7YbPZWFccoaOjA0uWLNH9Tr+RIVPPtvj9fhw9ehQ7d+5UJbCkczYk0XOplowlWzaW0NmM119/PfyY2iVjSl+nZP1qB89QyR9nGbqA9fgzBQKBjM+sA4AzHBFDvlVMTExgzZo1SU+hKgn5QHo3w8pEmU4skiTh7NmzWL16NeeAf5vL5YLD4WAdbYTu7m40NDSoFgwjQ2c2EkURb7zxxrQzPdElY+mWdEX+NxgMqlaGplXJmM/nAwC0tLSoenZFSefHaCVjdrud9wuIEAgEdLl+ZWJigmfciCHfCmw2GwDMuOtdLEpH8uUuG2u5UJlOpneA/f39KCsri3tdghW1trZi5cqVhgoLegoEAhgeHsauXbv0bophjI6OoqamZtrZFaMFTLXI7VScP38eDQ0NKC8v16xkTM6ycmWiwzExMQGn0wm3253S2RajzDKmllD5UqZ1dHSodu3MoUOHcOjQIbz22msYHBzEwYMHVav1J20x5Jucy+VCf3+/7J2MFiE/1nKRZTqZ5PP50N3dzTKdCGNjY8jJyeEp9gi9vb1YuHBh1o66a6G3txcrV67UuxkZIadkTBRFeDwe1NfXZ00g1apkLNSB8Xq9yM/Ph9Pp1KxkLBYtysDUKhlzOBwoKSmBKIoZ7bx0dnYmnCNficcffxydnZ3Yu3cvfvrTn6qyTsoMhnwTC02XuWrVKvT09Ki+frk7q+jl9CrTAaZOq69YsYLT/70tNBq5fv16vZtiGIIgYHBwMOZ9JKzK4/FAEAROExnBbrejqqoqawI+oH3JWE9PD0pLSzN6IbIWJWOh/w+VjKWzTqfTiYKCAgwNDWk6y1hXVxf+8Ic/ID8/HwUFBRgYGEBpaSnuu+8+FBQUoKCgIPxcQUEBqqur8S//8i+y2nHo0KHwPWUY8rMLk46JnT9/HnPmzEFlZSW6u7tlvUaLmvxoepXpDA8PA4AuU5kZ1cDAACorK1FaWqp3Uwyjt7cX8+fP1/0CZCPp6+tDfX293s0wFJvNhrlz5+rdDEOx2+2qjR7LZfTSnjfffBObNm1CQUGBotfJ7YyEfi4pKcH73vc+BINBBAIB/PGPf8TWrVuxZMmS8GOBQAB+vx9utzt8bxo5eEYzezHkm9To6CgcDge2b9+OQCCgqARHLqUdAkC/Mp1gMIjz589j69atGd2ukQmCgK6uLmzfvl3vphiGKIro7+9nOVcEURQxPDyc8fBmZJIkYXx8HKtXr9a7KYYhSRJcLlfWTkmslWAwqDjgA8pnGausrJw2XeYvf/lL3HLLLZgzZ47ibZN5sHtmMjk5OQgEAmhubsaGDRvCO4lURtzlbEvJevUs0zl//jwWL16MoqKijG7XyLq6ulBfX5/SAcis+vv7MXfuXJZzRRgeHkZtbS1H8yKMj4+jsrKS70kEl8uF0tJSQ4+qZ5rf79dt/zo8PMyz1sSRfDM6e/YsVqxYEZ4fN5URdzmUrlevMp3x8XG43W6OukXw+Xyw2WysO48giiJ6enp4ZiNKX18f/3ai2Gw2jpBG4fz4MzmdTl3ObASDQeTl5cXtcDkcDgwMDCRdz5o1a9RuGmUYQ74JrVixYtoFclqNrChZryRJupTpiKKIlpaWaWc1aOrMxrJlyzgSGWFwcBB1dXU8sxHB7XZDkiSWYESQpKm7h1tlpiG57Ha7Lnd1NTKXy6XLxeq9vb1YtGhR3Ocfe+wx3HbbbUnXo8XgIGUWQ74JRV9EqdVIPiBvJxAq0zl37lx4dCGVqchSeU1XVxdmz56N4uJiSJLEoA9gcnISXq+Xp3IjSJKE7u5uXrMRpa+vDwsXLtS7GYYSuskQO8gXhOrxOfvSdE6nE/Pnz8/4djs6OhJeQ3Prrbfi1ltvzWCLSC8M+Ragd7lOMBjEpk2bAED2HMmheZeDwaCi10RPfxa6Ecnw8HBKN41RszOS6tzNyf5fCUmScO7cOd74KorNZkN1dbUut543KlEUMTIyotoNdcxiaGiIpTpR3G436/Fj0OtCZDXnyKfsxpBvAXqG/NBsOuXl5Rkd+ZIkCW+++Sa2b9+OiooKxa9NZd5lOZ2R6E5Lqh2YVG8YIwgCAoEAWltbM9IBSfX1mSRJEjo7O8MdUZpis9lQV1fHEesIkiRhdHSUHZ8orMefKbS/16P8r6OjA1deeaVq6ztz5gzOnDkDr9cLYGpa0PLycsyePRu7d+9WbTukPoZ8C9CrJj9UppOXl5fxoNDb24vKykrFAR8w/rzLqQhdE3HkyBFs27YNhYWFSTsacjojoTMuqXZ6Yq1PCTU6I263Gzk5ObDZbGmXhyV6fbbp6+vD2rVr9W6GoUxOTqKsrIz3UIhit9uxZMkSvZthKH6/X7czg8nKdZT67W9/i69+9avhn3/4wx/ihz/8IXbv3o0XX3xRte2Q+hjyKWXJRvJDs+lk+oDo9XrR19fHuc4j5OTkYGBgAHPmzDFN3azSMyCxOjChefEXLlyIvLy8cGco2bqVdmCUiNWZUPtalWSv8Xq9EEUROTk58Pl8MV+TjR2XdPEGWDNJkhQui6QL9JpZBwC6u7uxePFi1da3f/9+7N+/X7X1UeYw5FNa4oV8vW56JUkSmpubsXLlSo62RQgEAujt7TVVxycyaKb6WY+OjqKyslLVA2I61C4PS/X6FofDgYKCAjQ3N8d9jVyZvD4lnZKyUFsTfTYjIyOcQSaKx+NBSUmJJTt9ieh5IXIgEOD1RQSAIZ/SEG8kP1Smk5+fn/EyHZvNhoKCAtTW1mZ0u0bX2dmJRYsW8SZPUTo7Ow01F3R06NSDIAg4fPgwtm/fnnY7QvsHpZ0WI17fIooifD4fjhw5oltnJJXXaI31+LE5nU7U19dnfLupfh5nzpzB5z73Obz22muoqqrCrbfeiq985SscLMtyPOJTyuKF/GAwqEtQCQQCaG9vx7Zt2zK6XaPzeDwYGxvDihUr9G6KoYyPj6OgoIBzwEex2WyYPXu2Kn+/6Z5pMZK2tjaUlpZi3rx5KV1rIrcETMk1MXpc3xJd3jUyMoLKykp0dHRoVlKWjde36DWzTkdHh+ILw+12O6644gqsXbsWTz75JNra2vDFL34RoijiG9/4hkYtpUxgyKeUxdrZhkbX9Dionzt3DkuXLuVpyiitra1YsWJF1hwcM6Wjo4Mdnxj6+vqwbt06vZthOCMjI9i2bVtWBU250rm+ZXBwMHzmNHo5Ode3KO3QKKHXlMfA1F3FvV6vrNer+X1K5aLbH/3oR/B4PPj973+PiooKXHnllZiYmMD+/ftx1113pTSBBRkDQ75JSVJmbvwUOZIfqvvVYzadsbEx+P1+XhQXZXx8HIIgsHwpysTEBABg1qxZOrfEWJxOJ/Ly8lBSUqJ3UwzF5XKhsLDQtOVukUFTyQCNx+NBeXm5Ife7el7fEggEIIoiOjs7ZW1Hrlgdi+PHj+Oxxx5Dfn4+8vPzMTk5ieLiYvT29qKgoGDGv6KiItx1113T1vv000/jqquumhbmb7zxRtx999146aWXcM0116j2uVBmmXOPZWGZHGGKLNcJ1eHrUaYjCALOnTuHTZs2mW6ELR2SJKG1tZXTIMbQ0dHBCyhj6O3t5R1uY+CsOrEZuR5fz+tbRkdHUVRUhFWrVqm2znjXtyxevBjveMc74Pf74ff78dBDD+Hqq6/GqlWrEAgEZvwTBGHGupubm3H55ZdPe2zRokUoLS1Fc3MzQ34WY8inlEWG/NBpWT3KdNrb27FgwQKOPkYZGhrCrFmzWHMexel0IhgMoqqqSu+mGIogCLDb7Vi9erXeTTGc4eFhbNmyRe9mGI7dbmenMAYtphSNd6alqKho2pnagYEB7N27FzU1NbLXbbfbY+4Pq6urYbfbU2swGQJvZUgpC+109CzTmZycxPj4OBoaGjK6XaMTBEH1G6KYRWdnJ0fxYxgcHMTcuXN5NiyKx+NBfn6+LncuNbqJiQmWvMWg5xz5drtdUcAPifV3n6myX9IOQ74JqfFHKadOMCcnJ1ymk5ubm/GAL0kSzp49i8bGRu6IovT09GD+/Pm8CDmK2+2Gx+MxbImBnvr7+7FgwQK9m2E4NpsNc+bM0bsZhuP1elFUVKTrdK9Gpdcc+X6/P6XOaHV1NcbHx2c87nA4eMYzy/Gvk2aINzVmLKHaQD129N3d3aipqeGdFqP4/X4MDAzw7EYMoVF8dgqnm5ycRGFhIYqLi/VuiuEw5Mdm5Hp8PYVq5fUoXe3p6Unpxn5r1qxBc3PzjHW5XC5D3UeElGNNPqVMkqZuZ97Z2RlzqjI5U5OlMkVZTk4OPB4PBgYGTHUHV7W0tbVh6dKlppibXE1erxdOpxONjY16N8VweMFtbKEpEHlGbCa73c4zPzGEznDoob29XfEc+QCwZ88efOc738Hk5GS4/OrQoUMoKSnB7t271W4mZRBDPs0gZyRfFEXk5ORgzZo14bKdRFOOybkJjNypzICpsouioiIcOXIk4e+hdN7jdOdMTmWOZTVHlZ1OJ5xOJ0dfYujs7MTixYs5ih8lGAzC4XDwOxMDR/Hjm5iY4HcmBr1KdYCpfVwq12F9+tOfxoMPPogPfOADuPvuu9He3o79+/dj3759nCM/yzHk0wxyQn5oGq7a2tqMl+oMDAxgfHw84YhsZEchlbmS4/1/5M1d1FqnXHI6DmNjY6ioqEBLS4tqN3ZR2mExYoj2+XwYHx/nzDEx8ILb+Gw2G9avX693MwzH6/WioKCA9fgxaDGzjlwdHR0pTXdZXV2Nv//977j99ttxzTXXoKqqCnfeeSf279+vfiMpoxjyaYZkIT80m05+fn7Gd/J+vx+dnZ3Yvn17wuWMGjZTJafDYrfb4fP5sHTpUllnSiJv7KK0c5Lo7ItcmTxr0t/fj7q6OjgcDsWvNTNJktDf349Nmzbp3RTD8fv9kCSJ1ynEwHr8+FwuV0qz26gh1ZF8AFi7di2ef/55lVtEemPIpxkShXw9Z9MBgJaWFixfvtxy09lFdlpi1dpLkoRTp05h48aNWXG/AC3OssS7G2UwGMTY2BgKCwsxMDCgaJ2pdloycdZESelZ5P9HmpiYQHFxsW41xEbGUp347HY75s+fr3czDMnlcuk2fWZvby8nXKBpGPItRI05b/W86dXIyAhEUeSBN4b+/n7U1NRkRcAHknda1NTW1oYVK1ZoemFprE6L3E5EojMl0R0WOa9NtM5oobKL119/fcZzqV5Mn+n/14rNZuNF2nGwHj+20N+ZHsfH0P4iP5+xji7gt8EiQqPzcg6K8Uby9SzTCQaDaG1t5V0nYwgGg+ju7k5awmRFwWAQNpsNu3bt0nQ7mey0qCUQCOCtt97Crl27ZuwXtDjLkqzTorRTFKvTkoiSMyWSJGFychK9vb2an32JXsbofD4f6/Hj8Hq9upV3jYyMYPbs2Ypfd/78eXznO9/B66+/jlOnTuFd73oXXnzxRfUbSLpgyLeIZHX2yZbVu0ynra0NDQ0NrI+NobOzEwsXLrRcCZMcvb29qK+vZyCJYXBwEPPmzYsZLCODqBkovb5keHgYdXV1qK6ult1pUeOMi1xKOw5qnkEZGxtDaWkpXC6XrI6Nleh90W0q02eePn0aTz31FC666CL4/X4NWkZ6Ysi3iHRDvp5lOg6HA5OTk1i1alXGt210Xq8XIyMj2Llzp95NMRxBEDAwMMD3JobQBbdWOTOmtNPS0dGBVatW6VZbnYwWZ1nkTHcsSRLGxsZQXFyM9vb2pB0buZKd+VDrehc560yn0+J0OnX7znR0dKR00e0111yD973vfQCAD37wgxgZGVG7aaQjhnyaITrk61mmI4oimpubsX79esuNCslx/vx5LF++3DQjrmrq6+vDvHnzsqZ8JpMcDgdKS0t5k6cYgsEg/H6/YQM+MLWP1ut7/frrr2Pz5s2qbT+yY6CkQyJnWS3u0ZKIx+NBYWEhuru7Nb8epbOzE93d3SgoKEBBQQEOHz6MJUuWoKmpCQUFBcjPzw8/F/pXU1Mz4zjKY4e5MeRbRKoj+XqX6XR1dWHOnDmGPuDqZWJiAn6/H3V1dXo3xXBEUURfXx/viBwH73AbX6hUh2by+/3Iz89XtYNhprKeN954A9u3bw8fQ9U84xJ9j5bOzk68+uqrCAQCCAQCaGtrw/DwMFpaWsKPBYPB8P8HAgH88Y9/zJrJGUgdDPkmFCvQKwn5AMLLhuZQ12PUyOVywWazMajFIEkSzp07h9WrV5vmAKmm/v5+zJkzhzNNxBAIBOB0OlFVVaV3UwzJZrOlVNtsBZwfP75QAM/UsXLZsmW44YYbwj9fddVVePjhh1FZWZmR7VN24Hkai1A6kg9MjYYKgoC8vLyMj+JLkoTm5masWbOGpxNjGB4eRklJCWbNmqV3UwxHFEX09vZi0aJFejfFkPr7+7FgwQJ2DmMQBAEej4dnDuNgyI/P4/HoOko+OTnJgE8zMD1ZhNKQLwgC/H6/bmU6fX19KC8v504rBlEU0d7ejhUrVujdFEMaGhpCbW0tZxuKQZIkDAwM8EZGcYyMjKCuro4doDgcDgf3yXHoedGtnlN3krEx5FuE0pAfKtPRI+D7fD709PTwlHkcvb29mDNnDu9SGoMkSejq6uIofhx2ux2zZs1iByiOoaEh3mwvjtCgDy9kj83lcuk2fWZXVxeWLFmiy7bJ2BjyLUJpTb4gCLrMpgMAzc3NWLlyJeupYwgEAujr68PixYv1booh2Ww2VFVVsQMUR19fHy+4jUMQBLhcLpbAxTE+Ps5SnQSycY58Mj+mKJpGFEUUFhaipaUlbsBXawqwWI9NTk7C7/dDkiSMjIykvD6znm5vb2/H4sWLOZoWQ2gUf+PGjXo3xZD8fj/cbjcqKir0boohjY6Oora21rT7jnTZ7XbOOpSA2+1GaWmpLttOdY58YKrdTz31FICpQYCJiQk8/vjjAIB/+qd/0u13InUw5FuE3JH8YDCIxYsXY9myZTFDfip3cZQzT3EwGEQwGMTAwAAWLFgAh8OR1rqVvC9adVjUWkcodLjdbjgcDt4ULI7R0VGUl5ezNjUOXnCbmM1mQ0NDg97NMKzx8XFeBxRH6Pij1yQRnZ2duO6661J6rc1mw4c+9KFpj4V+7ujoYBlQlmPIN6FUp9AUBCFpmU5k6FR7NPns2bNYuXIlFixYoOp649Gyw5LuOmLdgCV0o5U33ngj5u+jd4dF7p0otfosOzo6sG7dOk3Wn+0kScLg4CC2b9+ud1MMSRRFTE5O8ixHHKF7pfAMYmwej0fXEe90ynWWLFmiqJSXsgtDvkUkC/l63/TKbrfD4/FgzZo1Gdumlh0WtdntdnR1dWHz5s0xnzdKhyXZ83Ip7WD4fD4EAgH09/en3GFR2rnJphHxsbExVFRU8DqXOMbGxmLeDZSmjI+P874KCeg5sw5w4SwdUTTu8S0iWcgPBoMA9LnFtSiKaGlpwaZNm3iQjUGSJLS2tiYcpc6mDksyqXRYWlpasGjRIhQVFSnusKTaEZJLyzMscl/f2dmJRYsWwefzZX2HRQs2m43TiiZgt9tRU1OjdzMMS8+ZdTJ9Ey7KLgz5FpEo5Msp09FSR0cH5s2bx9ttxzE4OIjKykrL3KBHaYfF4XCgpKTEkLPGZOIMS7LXBINBTExMoK+vD729vVnfYVH7DIsoinA4HGhsbFT68VrG+Ph4yhd2WoHT6cTcuXN12fbg4CDmzZuny7bJ+BjyTUqSpBkHu1gHc73LdJxOJ0ZHR1krHIcgCOjs7OT7k0B7e7thp48zwhmWjo4O1NXVpd0JUqPDEq8Tku5ZlXQ6LMFgEIFAAE1NTaqVdunVYdFCIBAAAJZ6JeB2u3UbpOrs7EypA/bYY4/hl7/8Jd566y04HA6sXr0a//Zv/4YPf/jDGrSS9MK/WouIN5KvZ5mOJEk4e/YsGhsbdZuVwOi6urqwYMEC3rwojsnJSQDgBZNxhC643bFjR9rrMkKHRS2RHZbm5mbU1dWhqqoq7WtO9O6waNHxcDqdKCwsxPDwcNZ3WLQQms1Nr2NYqoMcBw4cwNKlS/G9730PdXV1eOqpp3DTTTdhZGQEn/vc5zRoKemBId+EYu1MYz2md5lOT08PqqqqePOZOHw+H2w2G3bu3Kl3Uwyro6MDS5cu1bsZhjU6OoqqqiqOwkYJhU5JkjAxMZHVAw3JzrCk2sEIdVjGx8dRXFwcntZYrw6LUaY6ju6w6Dk/PjA1kp/KMeJPf/rTtPseXH755ejv78eBAwcY8k2Ee36LiB7J17tMx+PxoL+/X5URRrNqa2vD0qVLszZ8aM3lciEQCHDWjwR6e3sNW8pkBOPj46ioqMjqvzGtz7DYbDasWbMmI2cTY3VY1DgjouUZlmAwCEEQ8Prrr8/4fbToYBw5cgQ2mw2FhYUoKChAU1MTFi9ejBdeeAEFBQUx/8U6jsS6sdmWLVvw5JNPqvuhkq4Y8i0iOuSHynT0GOELnSJftWpV1p/218rk5CTcbjcvBkyAN2pJzOv1IhAI8ExZAjabTbcLJrNB6DiRqXLBbCwJa2trw6xZszBnzpxpj2vVYXE4HOjv70cgEEAgEEBfXx9aWlrQ0tISfiz63y9/+UtZNwl89dVXsXbtWq3eKtIBQ75FRIb8yDIdPQwNDaGwsJBTssUhSVNTZq5cudK0dazp8ng88Hg8/A4l0NfXh/r6er2bYViSJGFsbAwrV67UuymGNT4+jsrKSr2bYWhOpzPm7DZadVg+/vGPT/v5He94B+6///601/v3v/8dTz75JH72s5+lvS4yjuw9R0mKhEK+3mU6fr8fHR0dWLVqVca3nS1GR0dRWFjIg2sCnZ2dWLJkCTtBcYiiyFHqJCYmJjBr1qysLtXRmt1uR3V1td7NMDQ973brcrlU2XZnZyduuukmvO9975vRiaDsxr2bRYRCvp5lOgDQ2tqKpUuXcraYOERRRFtbG1asWKF3UwzL6/ViYmIiZk0pTRkZGUFNTU3WlDzowWazzSixoOnGx8cZ8hMQRVHXmYNSnT4z0tjYGPbs2YNFixbhkUceUallZBQM+RYSKtPR68A/OjoKv9/P0cUE+vr6UFtbK6t+0qq6uro4ip8ES3USkyQJIyMjqK2t1bsphiUIAkRR5IBMAmqNpKcq3ZDvdruxd+9e+P1+/OUvf7HMDRethCHfQoLBoG5lOoIgoLW1FY2NjQxncQSDQfT29vJi0gT8fj/sdjtHYBPweDwQBAHl5eV6N8WwnE4nysrKeKYjgfHxcc5clYTL5dL176y9vT3ls77BYBAf+tCH0Nraiqeffpr7VJPihbcWkZubi46ODvT396t+90Y5j3V3d2P27NkApuZ/j/Uaq+vo6EBDQwPnNE+gu7sbixYt4vclAY7iJzc0NMQzikmwHj85p9Op67VTnZ2deOc735nSaz/72c/iqaeewgMPPICxsbFpU4Bu2bIFRUVFajWTdMQ0YQGCIGD+/Pmor6+fdgGunOm9Ej0md+5hv98Ph8OB6upqNDc3x11WDrVugKLFrerT6ax4PB6MjY3xxlcJBAIBDA8PY9euXXo3xbBEUcTw8HDadbpmNzIywjNmSdjtdixatEjvZhiay+XCggULdNt+R0dHyvfB+Otf/woAuOOOO2Kul38f5sCQb3Kh2XTy8/N1OTUtiiLefPNNbN++XZXTmkrnFFbaWUn1rpGpdlZCnQOn04mSkhKcOHFCl45JrDs6Gm20vKenBwsXLuRsKAkMDw+jtraW71ECTqcTxcXFPGOWQKgev7CwUO+mGJrH40FJSYlu2x8cHIw5faccnZ2d6jaGDIl7OZMLzaajV+1pd3c3amtrVatbzMnJMUUdbWQnweFwoLOzE+vWrUupsxL6fzmdFSUdF7kyccZEFEX09fVh7dq1cDgcsl9vxM6Klvr6+rB69Wq9m2FonFo0OYfDwSl8kxAEQdf9iyiKLHWlpBjyTSj0R6/3Ta/cbjcGBwdZghJDZABtb29HY2NjVs6oo7QTIeexYDA443G73Y6SkhIMDw8r3qZcepwxUXp2JRG32w1JkjhDRhLDw8PYunWr3s0wNNbjJ+d2u3X9W+vv7+e1N5QUQ75JSZKEQCCAvLw8XU7dS5KEs2fPYs2aNSwdSMBms6G8vDxrZ0KJDKNaEQQBNpsNO3fu1Owsjhqdlejn5Z5dkft8Mj6fD3l5eTh8+LBhOibxzq7oxe12o7CwkNNCJmG329HQ0KB3MwzN6XTqut/u6OjgtTeUFEO+SeldpjMwMIDS0lJOwZaAKIpob2/Htm3b9G6KofX392PevHmafpcz0VnRkiiKeOONN7Bz507k5OTE7CSk2tkQBEHVUjC5tOiYjIyMoKioCENDQ2lfsG/WMonQ5816/MScTqeux7f29vaULrp9/PHHceDAAbS0tMDlcmHx4sX46Ec/irvuuoufuQkx5JvQ0aNH8etf/xpFRUUoLCxEfn4+CgoKwv+NfCzy/+P9Cz1fVFQUc9nog11vby8+97nP4fHHH9fpHcgO3d3dmDdvHnesCYiiiN7eXmzfvl3vphiazWZDXV3dtI5QNl+7EuoUqHFGJbKzMjExgfnz58PlcqW1rnQ7K3qVhcnprExMTLAeXwan04mFCxfqtv3Ozk5ceumlil83OjqKd7/73fjSl76EqqoqHD58GPv378fg4CB+8IMfaNBS0hNDvgnV19fjiiuuQCAQgN/vRyAQQCAQQDAYDD/mcrnCj0f+8/v905YL/X/0ukLrC9VPR7LZbFi8eHF4BxQ6iER2EKI7F8meC51ij+5kRD4Xq2MSq1MT63V5eXkxR+a0Gq0bGBjASy+9hI985COarN8sBgYGMHv2bJZXJBG6KNksIsOnWp0Vj8eD4eHhlG8elAq5nRUlzwuCoNrF9bE6K6H7mETOmw5A946JnNdkktfr1fU6qs7OTnz84x9X/LpPfepT035+97vfjYmJCfzwhz/E97//fdOeobIqhnwTqq+v1+2CnKeeego///nPcejQoWmPh04BR3YSfD5fzI6Gz+ebsWyogxHqePj9fni93rgdkFAnJPp1sbYXCAQgCEK4raFOS6ydXW5ubsyORqKzIKFORmRn4/nnn8eyZcvCF0bH6tzEOssSWk+8MzCxAlG27rRFUURPTw8vkkzC5XIhJydH16n8soEes+po0VnR2ltvvYX169dPuxlSrM5Kuh2X0HUraq1LLjU6HsCFO5SncvZEjc5KV1cXli5dquzDjaO2thZ+v1+VdZGxMOSTqv7617/iwQcfnLGjys/PR35+flbNIBPrYsdYHYXIjkSisyKh/3Z1daGnpwcf+tCHkp5VieysRP83ukMT6qwkO0hIkhT+PBKdVYk80xFZ8hXr8WRlXfFeF9kBii4Be/jhhzE0NIRdu3ZBkqSs7axorbe3V9eygWxhs9mwceNGvZthaKH7qkTf7TQbOyuxJOusyO1suN1uFBcXIycnJ25nJZVSs0Sdldtvvx3BYDB8zY3dbscVV1wRc3CpsLAQpaWl+MlPfhJ3fYIgwOfz4ejRo3jwwQfxmc98hvtYE8pJMmuD/PnniEiW973vfbj77rvxjne8Q/Ntxfr7liQpZhlWrLMh8c6qRHZAol8baz2hZWOtL7pDE7rIs7u7GytXrow5whQK/Yk6E8meC3Uw4pVyxXo83lmVWCVimSgBc7lc+PGPf4wvfOELWXvRcCZ4vV6cOnWK13YkMT4+jv7+flOVfmmhv78fgUAAixcv1mX74+PjuOGGG/DXv/414Zns9evXx11HcXExfD4fAODmm2/GwYMHuQ/JbjEPLBzJJ8qwe++9F42NjRnZVryQGQqnRvXkk0/ir3/9K374wx8CiN1ZCY06xuowxDurEq8zEuqARJaAyTmrEq8zE/pvtFilYKHOSrwzJ4nOqvT09GBycjJmhydZyVeiMzdmKwGz2WyYM2eO3s0wPM6PL4/L5dL1ferq6sLy5ctRUlKScpneq6++CrfbjcOHD+NrX/sabr/9dvzXf/2Xyi0lvTHkE2VYpgJ+Njt79izuuuuu8M+xQmVeXh7y8vKyvgRMEARZZ1VCnZfIMyFf/vKX8ZnPfAYVFRXTOiFutzvhWZXojk+sMzuhxyLn6Y/1OYSeizwrkuhC+ETXrcR7XayyrkQX10c/d8stt+CXv/zljPc/2zorWrPb7RzFl8HpdOp6H4HOzs6058gPXet0ySWXoK6uDh/72MfwxS9+MaVpOcm4GPKJyHC+/OUv690ETcQKlaFwrHRE7vTp01i2bBluv/12tZoni5wSsGRnVeKdKYnsqPj9fng8noSvlXNmxe12o6+vDx/84Adj/h6xrh+K10FJ1NGI7GDIPauSqFMT7yyMViVgPp8PzzzzDC90l8Hr9c64biGTOjo6VJ0lKvSZd3R0MOSbDEM+EVEWWrFiBX70ox9lfLvZVgL2k5/8BA6HA//2b/827fF4nZVYHYpY/x9rxq7IGcMiOytOpzPuGZV4Z1ViTX8cOWVxomAfr3wrUcfE6XSitbU1fGF+orMuidaZ6HqW0M/ZXAIWCASmzbKjh87OTlx++eWqre+VV14BANVm6yHjYMgnIspCRUVFuk2Vm038fj+uu+66GY/H66wUFRXpOkqrVLISsFgdkFhnR371q19h165d2LZtW8wpi0MlYMnOqsTrAEX+kzPlpSRJyMvLU1z6FauzIedGkPHOnBQUTJ8x7PDhw/j1r3+N7du3x7xQNRPhv6OjI+VynauvvhpXXHEF1q1bh7y8PLzyyiu4//77ccMNN3AU34Q4uw4REZHF/dM//RN+9KMfYdGiRRnfdrwcEqsMK95ZlcgzHtFlYvEeV3qdSiAQwMjICACgsLAwbrujz7bImbI43nOxOh/f+9730PH/t3f3sT7X/x/Hn+dbkRyHg5rmMitH/YP8YTUNpQt1csqqodUometVSuvCRdedVZQ0bTU1Q0ppRwtbrmJFa2vLkJKQLqVcFFqHzu+PYuEoOj/n/Tkvt9vmn/fHHw9Wdj/v8zrv94YN/+kLitGjR8dbb70VGzdujJNPPjlat24d/fv3j0GDBsUpp3jpYA1W6X8MIh8ATnCbNm3K7JGQNcldd9114G74of7tCNg//azK/u+2HM2LIFetWhWTJ0+ujj8uNYdHaAIAhxP4R6dZs2ZHfKlaKkfASIc7+QAAUHNVeiff680AACAxIh8AABIj8gEAThDffPNN5OfnR15eXvz6669Zz+E4EvlU2cyZM+P888+P/Pz8aNq0adx8883x7bffZj0LADjE3XffHfn5+VnPoBqIfKpkzpw50adPn7jwwgujrKwsSktLY+nSpVFcXHxULzw5UezduzeeeOKJOOecc6J27drRrFmzuOOOO7KeBcAJZNmyZTF//vzD3gBNmjxCkyqZMWNGnH/++TFp0qQD1woKCqKkpCQ+++yzOPfcczNclzv69+8fCxcujLFjx0bbtm1j8+bNsWbNmqxnAXCC2LdvXwwfPjzGjBkTDRo0yHoO1UDkUyXl5eVRv379g67t/8fjXx7PesKYP39+zJw5Mz755JM477zzsp5TI3zzzTdRVFQUu3btil9++cW3lgGq6IUXXojffvsthg4dGtOnT896DtXAcR2q5JZbbolly5bF1KlTY+fOnfH555/HAw88EN26dRO0f5kyZUpcfPHF/j6OgTOjlZs1a1b07NkzmjZtGvn5+dGxY8d49dVXs54F5LiffvopRo8eHePHj49TTjkl6zlUE5FPlVx11VXxyiuvxMCBA6N+/fpRVFQU+/bti9mzZ2c9LWd8+OGH0aZNmxg2bFgUFBTEaaedFr169fLDyUfgzOiRjR8/PvLz82PChAkxZ86c6NatW/Tt2zeee+65rKcBOez++++PTp06xZVXXpn1FKqRN95SJYsXL46ePXvGkCFDokePHvHDDz/EuHHjokmTJrFgwYI46aSTsp6Yudq1a0etWrWiXbt2cd9998Uvv/wSo0aNiiZNmsSKFSsqfRX6iWrfvn3RsWPH6NevXzRo0CD69+/vuM7fbN26NRo3bnzQtb59+8by5ctjw4YNGa3KPWvWrInhw4fH8uXLo0GDBjFgwIAYO3asf484Ia1evTo6dOgQS5cujbZt20bEnz9PN3To0Pj666+jYcOGUadOnYxXUkWVhoQz+VTJyJEjo2fPnlFaWnrgWvv27aNt27ZRVlYWvXr1ynBdbqioqIiKioooKyuLRo0aRUTEmWeeGV26dIlFixbFJZdckvHC3OHM6D87NPAjIjp06BBlZWUZrMlN27Zti+7du8d5550XZWVlsX79+hg5cmT88ccf8cgjj2Q9L+ft3Lkznn766Zg3b1589tlnUadOnbjggguitLQ02rRpk/U8/oN169ZFeXl5XHDBBYd91qxZs7j11lvjpZdeymAZx5vIp0rWrl0bffr0OehaUVFR1KlTJ9avX5/RqtxSWFgYrVu3PhD4ERGdO3eOWrVqxZo1a0T+X/afGZ02bZozo8fggw8+8PMef/PCCy/Enj17Yvbs2VFQUBCXXnpp7Ny5M8aNGxejRo2KgoKCrCfmtK+++ipefPHFuPXWW+PRRx+N3bt3x+OPPx6dOnWKlStXRvPmzbOeyDHq3LlzLF68+KBr8+fPj9LS0pg7d260bt06o2Ucb87kUyUtW7aMjz/++KBrn376aezZsydatWqVzagcc6THiFZUVMT//ud/wf2cGT12CxcujLKyshg6dGjWU3LGvHnz4vLLLz8o5nv37h179uyJ9957L8NlNcNZZ50V69evj4cffjguvfTSKCkpiblz50Z5eXlMmTIl63k565lnnom8vLy47rrrsp5ymMaNG0fXrl0P+rX/2M5FF10URUVFGS/keFEYVMmgQYPitddei5EjR8aCBQti+vTpcc0110SrVq3E2l+Ki4tj5cqVsXXr1gPXli5dGuXl5dGuXbsMl+WO1atXx5QpU2Ls2LGxffv22L59e+zevTsiInbs2BF79uzJeGHu2bhxY/Tt2zdKSkqiX79+Wc/JGWvXrj0QMPu1aNEiTjvttFi7dm1Gq2qOunXrHnY+u2HDhtGyZcvYsmVLRqty25YtW+Khhx6K008/PespcBCRT5WMGDEinn/++Xj33XejpKQkRo0aFe3bt4+FCxdG3bp1s56XEwYOHBiNGjWKq6++Ot5+++2YMWNG3HTTTdG9e/fo3Llz1vNywt/PjBYWFkZhYeGBu9PNmjWL4cOHZ7wwt/z888/Ro0ePaNGiRUybNi3rOTll27Ztlb7op7CwMLZt21b9gxLw448/xhdffOFY2BHce++9cdVVV9Wov59+/fpFRUWFhxokzpl8qiQvLy8GDx4cgwcPznpKziooKIhFixbFiBEjonfv3lGrVq0oKSmJCRMmZD0tZzgzevR2794dxcXF8fvvv8c777zji+lKVPbEqoqKCk+y+o9GjhwZ+fn50bt376yn5JyPPvooXn/99Vi7dm3ceOONWc+Bg4h8qAZnn312zJ07N+sZOWv/mdG/27hxY0T8eWbU3aY/7d27N66//vpYt25dvP/++3HGGWdkPSnnFBYWxvbt2w+7vmPHjkrv8J8IduzYEd99992//r5DjzlFREyePDmmTZsWb7755kEPD+DPLxyHDRsWo0aNiqZNm2Y9Bw4j8gFqiCFDhsTcuXPj2WefjZ9//jlWrFhx4LMOHTpE7dq1M1yXG9q2bXvY2fvNmzfHrl27Ko3YE8GsWbPitttu+9ffd+h7c+bMmRPDhw+P0tLSuPbaa4/XvBrr5Zdfju+//96L+8hZXoYFUEO0atUqNm3aVOlnGzZs8ESriHj88cfjySefjE2bNkW9evUiIuKpp56KMWPGxPfff+8Rmkfpgw8+iO7du8ctt9wSkyZNynpOtTiW73js2LEjioqKYuLEiXHDDTdERETXrl2jcePG8cYbbxzvqXAoL8MCqMn2H2HiyAYNGhQTJ06MXr16xT333BNffvlljBs3Lu68806Bf5RWr14dxcXFccUVV8TEiROznlNtjuU7Ho899lg0b948LrvssgPHw/bu3Rvl5eWxffv2qFevnjcskzl38gFIypo1a2LYsGGxfPnyaNCgQQwYMCDGjRsnuo7Cli1bomPHjpGXlxdTp06NU0899cBnBQUFNeoJMsfTNddc849vml62bJmnp1GdKr2TL/IBgIiIWLJkSXTr1q3Sz7p06RJLliyp3kE5atWqVQe9+yQi4vbbb4/69evHgw8+GB06dIj69etntI4TkMgHADgenMknQ5VGvpdhAQBAYtzJBwCAmsudfAAAOBGIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEiMyAcAgMSIfAAASIzIBwCAxIh8AABIjMgHAIDEiHwAAEjMyf/yeV61rAAAAP7fuJMPAACJEfkAAJAYkQ8AAIkR+QAAkBiRDwAAiRH5AACQmP8DIraTopzCbDsAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_data( moonsDataset)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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otURaq3R6usUOoXm/Pnzcdddd+GCCy6AKIp47LHHcMMNN8DhcODLX/5yxDZGR0cjHkEvKytDV1dXujadEsSQbyBKdzZerxdHjhzBrFmz4gb8TJMkCa2traiqqsL8+fPjhnwiIiUy3anWS4eFYtNiyA8t19m+fTu2b9/u/33Hjh1wu9347ne/iy996UtRr9UQ6blptWNjVKzJNxAlo8O+GvxFixYpnms+UyP5sizj4MGDKCsrQ3V1tarr0xqO5CvD14jUxHBCatLq/klJTf61116LkZERdHd3R7y/rKwMY2NjYbePjY3xHDkNYcg3kHjB0ePxYN++faitrUVFRUVKc+qnKrRNWZbR3t4Ou92OpUuXqrouyk0MZETZw7+/+LQ6qp3IibfRtr+uri5i7X20Wn3KDoZ8A4kVxgMD/rx581RrN5JEOwSyLOPo0aMwm81Yvnx5Qo/NVRzJJyKidAityY/k97//PSoqKvzTbIbasWMHBgYG8Oqr56e2feedd9DV1YUdO3aour2UPNbkG0i04OgL+MuXL8fcuXNjLpspgevv6uqCx+PBmjVrNDkqQkREFCpXRvI/+MEP4oILLkBjYyNEUcTjjz+Oxx9/HPfff7+/Hn/58uXYsmULHn74YQDARRddhO3bt+PjH/847r33Xv/FsC699FLOka8hDPkGEim4Rwr40ZZNpN14y8bb8fmW6+7uxuTkJJqamjS5s0yXbHeycgVfIyLSKq2G/NCR/FWrVuGRRx5BX18fZFlGfX09fvnLX+JjH/uYfxlBECCKYlA7v/vd7/DlL38Zn/70pyFJEq666ircf//9GXseFB9DvoFFC/hA+kO+EgMDAxgdHcX69es1uaOk7OJngtTEDiMZhSiKQTPm3H333bj77rtjPibSCbilpaV49NFH8eijj6q9iaQS1uQbSGDA9gX8FStWhAX80GUTaVfJskq43W6cPXsW69atizp9FxGRmthxJDXlykg+6RfTkw4o3Yn4wrjb7fYH/IqKijRvXbh4HYJz585henoaq1evNuyOiOU6RESUDonMrkO5jeU6BmIymeD1erF//36sXLkS5eXlMZfNRrnOyMgIjh8/jvLyclitxv14anH0R4vYESIireJIPmUbR/INRBAEnDlzJm7AB7IT8sfHx9HR0YH169fDbDarFuByNQjm6nZniha/PImIfLS6Dw+t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55+Xu3lEaWGQT0REpGJbtmzhQvscWbRoEYqKinDnnXdiZGQEdXV1WL16NV5//XVs2rRJ7uYRpYXpOkRERERE6hUzXYcrc4iIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINIZBPhERERGRxjDIJyIiIiLSGAb5REREREQawyCfiIiIiEhjGOQTEREREWkMg3wiIiIiIo1hkE9EREREpDEM8omIiIiINKYoyeO6GWkFERERERHlDEfyiYiIiIg0hkE+EREREZHGMMgnIiIiItIYBvlERERERBrDIJ+IiIiISGMY5BMRERERacz/B6sdNo7BlhhWAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_data( blobsDataset )" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvkAAAL5CAYAAAAqvDt4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdeXxU9fU//tfdJpOFAE0IASFsxkQICRA2QSSCnwRbgX5b1LaIVutW0dZa11/tqhYXtNUWbVFpq1KrYCu4AEEgiCwhJCRhCQFZwmYICUsSJpm52++Py72ZydzZJ9vMeX4efXxkMneZyeTOeb/veZ/DqKoKQgghhBBCSORgu/oECCGEEEIIIeFFQT4hhBBCCCERhoJ8QgghhBBCIgwF+YQQQgghhEQYCvIJIYQQQgiJMLyPn1PpHUIIIYQQQrovxuxBmsknhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwghhBBCSIShIJ8QQgghhJAIQ0E+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTAU5BNCCCGEEBJhKMgnhBBCCCEkwlCQTwgh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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_data( swissRollDataset )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combined Dataset Plot\n", + "The train-set is shown in purple and the test-set is show in yellow." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2 µs, sys: 0 ns, total: 2 µs\n", + "Wall time: 5.01 µs\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvkAAAL5CAYAAAAqvDt4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdeXxU9bk/8M9ZZjKZLISGkCgxbCIBQgIE2RQSQUFQCW2B1q1evagItlqvVezy673VVq3bbW/jhkstWEXQGrWsAgkqsoYEggmggbCGkEjIcjLLWX5/DOdkzpwzk5nJQjJ53r58aWY7Z7Yzz/d7nu/zMIqigBBCCCGEEBI52Eu9A4QQQgghhJCORUE+IYQQQgghEYaCfEIIIYQQQiIMBfmEEEIIIYREGAryCSGEEEIIiTB8G9dT6R1CCCGEEEK6L8bsQprJJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8IIYQQQkiEoSCfEEIIIYSQCENBPiGEEEIIIRGGgnxCCCGEEEIiDAX5hBBCCCGERBgK8gkhhBBCCIkwFOQTQgghhBASYSjIJ4QQQgghJMJQkE8I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SdV9CgoKkJube6FPlToRg3zq0RYuXIjTp09j48aNGD16tM/1NpsNL7zwAh577DEsX74c8+bNw8aNGyEIAl5//fUYnHHP8dZbb0EQBJ9/b7zxRqxPjYioy3I6nVi8eDFOnDiBrVu3on///qrrZ8yYgT59+mDjxo3uy6xWKz766CMsWLDgQp8udSJuvKUeTacLPM4NVmqM9YQ7X35+PhITE93fDx06NIZnQ0TUtd17773YsmULfve736G2tha7du1yXzd+/HgkJCTg0UcfxTPPPIOUlBR3MyxJktzNsig+MMgnCiBQqbH169fH6Kx6lsmTJ6NXr16xPg0CcOTIEaxYsQJfffUVkpOTcdddd+HJJ5/0qdJBRLHzySefAAB+/vOf+1xXVFSEwYMH49FHH4UkSXj++edRU1ODSZMm4dNPP0V6evqFPl3qRAzyiQJgqTEil7q6OsybNw+jRo3C5s2bcerUKTz44IOQJIkrWkRdSHFxcdDbCIKAxx9/HI8//njnnxDFDHPyiYJgqbHYGjZsGAwGA0aOHIm1a9fG+nR6rDfeeAOtra34+9//jquuugrLli3Dk08+iVdeeQWNjY2xPj3yMHv2bM39LDabLdanRkQXEIN8ogBYaix2MjMz8cwzz+DPf/4zPvroI0ydOhXLli3Dq6++GutT65G2bt2K+fPno0+fPu7LbrnlFrS2tuJf//pXDM+MtMyZMwdfffWV6p/ZbI71aRHRBcQgnygAlhqLnfnz5+MXv/gFvve972HBggVYt24dlixZgmeffRaSJMX69Hocrc98dnY2LBYLCgoKYnRW5M9FF12EadOmqf5x5fHCWL9+PW688UZkZmZCEAS89dZbmrc7e/Ys/uM//gO9evVCv379sHz5clit1gt7shTXGOQTBcBSY13LTTfdhNra2pByTim66urqkJyc7HN5SkoK6urqLvwJEXVR7733HoqLi3Hdddf5vY3T6cT8+fNRUlKC9evX43e/+x02btyIn/zkJxfwTCneceMt9WhWqxVbtmwB4JpVaWxsxHvvvQcAuOaaa2CxWFhqrAvijGRs+Nufwvej6/nkk09gsVgAALNmzcKqVatw6aWXxviseob169dDp9OhubkZf/jDHzRvs3HjRhw9ehQnT57EkCFDAABGoxG33HILnnzySZ+KbkSRYJBPPVpVVRUWL16sukz5nqXGup73338f/fr1Q05OTqxPpcdJSUlBfX29z+UNDQ2aM/wUO1dccQXuvPNODB8+HCUlJfj1r3+NWbNm4bvvvsPgwYNjfXpxL1j/FcC1x2Xy5MnuAB8AbrjhBphMJmzbto1BPkUFg3zq0QYPHuyulOMPS43Fxve//31MmTIFl156KURRxPr167F+/XqsXr06pD+iFF25ubk+ufenT59GS0sL96d0soaGBpSXlwe9nfI+PP300+7LZs2ahXnz5iE3Nxe//e1v8dvf/razTpPCUFBQgFGjRqkuM5lMGDZsGPe4UNQwyCeiLmnkyJF48803cfr0aciyjFGjRmHdunW4/fbbY31qPdKCBQuwatUqNDU1oXfv3gBcaQmJiYm44oorYnx28W3jxo24++67g97O34RFRkYGZs6cib1790b71ChC3ONCFwKDfCLqkp577jk899xzsT4NOm/ZsmVYvXo1brzxRqxcuRKFhYV46qmn8MADD6jKalL03XXXXbjrrrs6fBzunYhMuCspoeIeF+psDPKJiCiolJQUbN++HcuXL8fChQuRnJyM+++/H0899VSsT42CqKysxJdffokf//jHsT6VbqmjKyla/O1xqa+v5x4XihoG+UREFJJRo0YhPz8/1qdBARw4cACPPfYYFi9ejJycHJSWluL555+HTqfDfffdF+vT65aitZLiSWuPi91uR2FhIZYtWxbVx6Kei0E+ERFRnEhNTYUsy3jsscdQU1OD3r17Y/bs2di0aROys7NjfXp03oIFC/C3v/0NJSUl7mphH374Idra2nD11VfH+OwoXghBlpdCX3siIiIi6uGOHDmCI0eOwGaz4fbbb8dPf/pTzJ49G2lpae5N6g6HA+PHj4fZbMYzzzyDhoYG3H///Zg3bx7+8pe/xPgZUDekuZGDQT4RERFRlDz11FOqMqaKK664Ap9//rn7+zNnzmD58uX47LPPYDabccstt2DVqlXuJmZEYWCQT0REREQUZzSDfHaUISIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozjDIJyIiIiKKMwzyiYiIiIjiDIN8IiIiIqI4wyCfiIiIiCjOMMgnIiIiIoozDPKJiIiIiOIMg3wiIiIiojjDIJ+IiIiIKM4wyCciIiIiijMM8omIiIiI4gyDfCIiIiKiOMMgn4iIiIgozhiCXC9ckLMgIiIiIqKo4Uw+EREREVGcYZBPRERERBRnGOQTEREREcUZBvlERERERHGGQT4RERERUZxhkE9EREREFGf+P8GTcTcTVUfdAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%time\n", + "if useMatplotlib3DFlag: \n", + " ax3D = plt.figure(figsize=(12,12)).gca(projection='3d')\n", + " plot_data( X_train, 'purple', 10000, ax3D)\n", + " plot_data( X_test, 'green', 1000, ax3D, 3)\n", + "else:\n", + " ipv.figure()\n", + " ipv_plot_data( X_train, 'purple', 100000, True)\n", + " ipv_plot_data( X_test, 'green', 1000, True, 1.5)\n", + " ipv.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "------\n", + "# 3. ETL \n", + "First we write the dataset to disk (as a comma separated file - CSV) so that we can subsequently demonstrate data loading." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 25.9 s, sys: 246 ms, total: 26.1 s\n", + "Wall time: 26.4 s\n" + ] + } + ], + "source": [ + "%%time\n", + "pd.DataFrame(data = X_train).to_csv('X_train.csv.txt', index = False)\n", + "pd.DataFrame(data = X_test).to_csv('X_test.csv.txt', index = False)\n", + "pd.DataFrame(data = y_train).to_csv('y_train.csv.txt', index = False)\n", + "pd.DataFrame(data = y_test).to_csv('y_test.csv.txt', index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "!echo 'no data\\n0' > warmup.csv # write a mini csv file used to initialize cuIO kernels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Check Size of Data on Disk \n", + "using the default value of `nTotalSamples = 5000000` should produce a training set of `~184MBs` in size." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "62M\tX_test.csv.txt\n", + "184M\tX_train.csv.txt\n", + "4.8M\ty_test.csv.txt\n", + "15M\ty_train.csv.txt\n", + "du: cannot access '*.gzip': No such file or directory\n" + ] + } + ], + "source": [ + "!du -h *csv.txt *.gzip" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.1 - Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.11 s, sys: 196 ms, total: 2.31 s\n", + "Wall time: 2.31 s\n" + ] + } + ], + "source": [ + "%%time \n", + "startTime = time.time()\n", + "\n", + "pd_X_train = pd.read_csv('X_train.csv.txt', delimiter=',')\n", + "pd_X_test = pd.read_csv('X_test.csv.txt', delimiter=',')\n", + "pd_y_train = pd.read_csv('y_train.csv.txt', delimiter=',')\n", + "pd_y_test = pd.read_csv('y_test.csv.txt', delimiter=',')\n", + "\n", + "pandasIngestionTime = time.time() - startTime" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
no data
00
\n", + "
" + ], + "text/plain": [ + " no data\n", + "0 0" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# get column-names\n", + "f = open('X_train.csv.txt'); colNames = f.readline().strip().split(','); f.close()\n", + "# warmup rapids data ingestion engines [ cuio kernels ]\n", + "cudf.read_csv('warmup.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 144 ms, sys: 39.7 ms, total: 184 ms\n", + "Wall time: 183 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "\n", + "cudf_X_train = cudf.read_csv('X_train.csv.txt', delimiter=',', skiprows=1, names=colNames, dtype=['float64', 'float64', 'float64'])\n", + "cudf_X_test = cudf.read_csv('X_test.csv.txt', delimiter=',', skiprows=1, names=colNames, dtype=['float64', 'float64', 'float64'])\n", + "cudf_y_train = cudf.read_csv('y_train.csv.txt', dtype=['float64'])\n", + "cudf_y_test = cudf.read_csv('y_test.csv.txt', dtype=['float64'])\n", + "\n", + "rapidsIngestionTime = time.time() - startTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Load/Ingestion Speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12.643155568723627" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasIngestionTime/rapidsIngestionTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2 - Transform Data ( Normalize )\n", + "Transforming a dataset is a common requirement prior to training upstream models. For each feature in the dataset we remove the mean and divide by the standard deviation -- this makes each feature behave like a normally distributed variable (e.g. gaussian with 0 mean and unit variance). \n", + "\n", + "For the data on the CPU we can use the pre-built sklearn.preprocessing.StandardScaler function.\n", + "In the case of the GPU, we demonstrate how the same transformation can be built using a custom (user defined) function written as a just-in-time numba kernel. \n", + "\n", + "Note that we compute the mean and standard deviation statistics on the training data, and then apply the transformation to the training and test data (i.e., the test data is never seen when computing the mean & standard deviation)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 187 ms, sys: 71.9 ms, total: 259 ms\n", + "Wall time: 258 ms\n" + ] + } + ], + "source": [ + "%%time \n", + "startTime = time.time()\n", + "\n", + "scaler = sklearn.preprocessing.StandardScaler().fit(pd_X_train) # normalize\n", + "pd_X_train = scaler.transform(pd_X_train)\n", + "pd_X_test = scaler.transform(pd_X_test)\n", + "\n", + "pandasTransformTime = time.time() - startTime " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "@cuda.jit \n", + "def gpu_scale(outputCol, colGPUArrays, colMeans, colStDevs):\n", + " iRow = cuda.grid(1)\n", + " if iRow < colGPUArrays.size:\n", + " outputCol[iRow] = ( colGPUArrays[iRow] - colMeans ) / ( colStDevs + 1e-10 )" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "def standard_scaler_numba( targetDF, trainMeans = None, trainStdevs = None):\n", + " nRows = targetDF.shape[0]\n", + " \n", + " blockSize = 128\n", + " blockCount = nRows // blockSize + 1\n", + " scaledDF = cudf.DataFrame()\n", + " \n", + " if trainMeans is None and trainStdevs is None:\n", + " trainMeans = {}\n", + " trainStdevs = {}\n", + " \n", + " for iColName in targetDF.columns:\n", + " colGPUArray = targetDF[iColName].to_gpu_array()\n", + " outputCol = cuda.device_array ( shape=(nRows), dtype=colGPUArray.dtype.name) \n", + " if iColName not in trainMeans.keys():\n", + " trainMeans[iColName] = targetDF[iColName].mean()\n", + " if iColName not in trainStdevs.keys():\n", + " trainStdevs[iColName] = targetDF[iColName].std()\n", + " gpu_scale[(blockCount),(blockSize)](outputCol, colGPUArray, trainMeans[iColName], trainStdevs[iColName])\n", + "# scaledDF.add_column(name=iColName, data = outputCol) \n", + " scaledDF[iColName] = outputCol\n", + " return scaledDF, trainMeans, trainStdevs" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "_, _, _ = standard_scaler_numba( cudf_X_test.copy().head(2) ) # warmup\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 21.5 ms, sys: 12.1 ms, total: 33.6 ms\n", + "Wall time: 32.5 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "\n", + "cudf_X_train, trainMeans, trainStdevs = standard_scaler_numba( cudf_X_train )\n", + "cudf_X_test, _, _ = standard_scaler_numba( cudf_X_test, trainMeans, trainStdevs )\n", + "\n", + "rapidsTransformTime = time.time() - startTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Transform Speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.9545788191080185" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasTransformTime/rapidsTransformTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Verify [approximate] numerical equivalence between CPU and GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({'0': 1.3101929901549607, '1': 5.997005213014613, '2': 0.48577644835383904},\n", + " array([1.31019299, 5.99700521, 0.48577645]),\n", + " {'0': 4.504008680849348, '1': 5.746398789388324, '2': 5.236134271509409},\n", + " array([4.50400808, 5.74639802, 5.23613357]))" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainMeans, scaler.mean_, trainStdevs, scaler.scale_" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.77245017 -0.45873789 -0.09277388]\n", + " [-0.92294425 1.7209442 -2.06783678]]\n" + ] + } + ], + "source": [ + "print(pd_X_test[0:2,:])" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 1 2\n", + "0 -0.772450 -0.458738 -0.092774\n", + "1 -0.922944 1.720944 -2.067837\n" + ] + } + ], + "source": [ + "print(cudf_X_test.head(2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# 4. - Model Building with XGBoost\n", + "-----\n", + "XGBoost is a popular algorithm for classification. It uses a sequence of decision trees built in succession such that each new tree attempts to correct the errors made by its predecessors (analogy to multiple golf swings [ each improving on the past ] to reach a target). For a deeper dive into how XGBoost works check out the following dev blog:
\n", + "> https://devblogs.nvidia.com/gradient-boosting-decision-trees-xgboost-cuda/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
img src: https://explained.ai/gradient-boosting/L2-loss.html
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare Data for Training" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "X = pd_X_train\n", + "y = pd_y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "train_DataAndLabelsGPU = xgboost.DMatrix(pd_X_train, label=np.squeeze(pd_y_train))\n", + "test_DataAndLabelsGPU = xgboost.DMatrix(pd_X_test, label=np.squeeze(pd_y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Specify Model Parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "noteable parameters: [ to see all available options execute '?xgboost.XGBClassifier' in a new cell] \n", + "\n", + "* __max_depth__ : int [ CPU default = 3, GPU default = 6 ] -- Maximum tree depth for base learners.\n", + "* __n_trees/estimators__ : int [ CPU default = 100, GPU default = 10 ] -- Number of boosted trees to fit.\n", + "* __n_GPUs__ : default is 1 GPU, set to -1 to use all GPUs\n", + " \n", + " \n", + "**Note :** For apples to apples comparison, `cpuMaxDepth` is set to the same as `gpuMaxDepth`.\n", + "This will result in a large processing time on CPU.\n", + "If you wish to work faster, it is recommended to set `cpuMaxDepth` to its default value." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "'''key CPU PARAMS '''\n", + "cpuMaxDepth = 6\n", + "cpuNTrees = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "'''key GPU PARAMS '''\n", + "# number of GPUs to utilize -- we typically need > 10GB datasets to benefit from multiple GPUs\n", + "nGPUs = 1 # default is 1 GPU, set to -1 to use all GPUs \n", + "\n", + "# GPU multiple shallow trees [ default ] \n", + "gpuMaxDepth = 6; \n", + "gpuNTrees = 10; \n", + "\n", + "# GPU few/one deep trees [ experiment with this setting for faster training with comparable accuracy ]\n", + "# gpuMaxDepth = 15; \n", + "# gpuNTrees = 1 " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "nCores = !nproc --all\n", + "nCores = int(nCores[0])\n", + "\n", + "paramsGPU = {\n", + " 'max_depth': gpuMaxDepth,\n", + " 'num_boost_rounds': gpuNTrees, \n", + " 'objective': 'multi:softmax',\n", + " 'num_class': 3,\n", + " 'tree_method': 'gpu_hist',\n", + " 'random_state': 0,\n", + " 'n_gpus': nGPUs\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "paramsCPU = {\n", + " 'max_depth': cpuMaxDepth,\n", + " 'n_estimators': cpuNTrees,\n", + " 'tree_method': 'hist',\n", + " 'objective': 'multi:softmax',\n", + " 'num_class': 3,\n", + " 'n_jobs': nCores\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# 4.1 - Model Training" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train on **CPU**" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "xgBoostModelCPU = xgboost.XGBClassifier(max_depth = paramsCPU['max_depth'], \n", + " n_estimators = paramsCPU['n_estimators'],\n", + " tree_method = paramsCPU['tree_method'],\n", + " objective = paramsCPU['objective'],\n", + " num_class = paramsCPU['num_class'],\n", + " n_jobs = paramsCPU['n_jobs'])" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "using 4 CPU cores for parallel xgboost training\n" + ] + }, + { + "data": { + "text/plain": [ + "(XGBClassifier(base_score=None, booster=None, colsample_bylevel=None,\n", + " colsample_bynode=None, colsample_bytree=None, gamma=None,\n", + " gpu_id=None, importance_type='gain', interaction_constraints=None,\n", + " learning_rate=None, max_delta_step=None, max_depth=6,\n", + " min_child_weight=None, missing=nan, monotone_constraints=None,\n", + " n_estimators=100, n_jobs=4, num_class=3, num_parallel_tree=None,\n", + " objective='multi:softmax', random_state=None, reg_alpha=None,\n", + " reg_lambda=None, scale_pos_weight=None, subsample=None,\n", + " tree_method='hist', validate_parameters=None, verbosity=None),\n", + " None)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xgBoostModelCPU, print(\"using {} CPU cores for parallel xgboost training\".format(nCores))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/xgboost/sklearn.py:888: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "/opt/conda/envs/rapids/lib/python3.7/site-packages/sklearn/utils/validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(**kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[08:39:25] WARNING: /opt/conda/envs/rapids/conda-bld/xgboost_1612969829206/work/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "CPU times: user 3min 27s, sys: 277 ms, total: 3min 28s\n", + "Wall time: 52.8 s\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "\n", + "xgBoostModelCPU.fit( X, y );\n", + "\n", + "cpuXGBoostTime = time.time() - startTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train on **GPU**" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[08:40:16] WARNING: /opt/conda/envs/rapids/conda-bld/xgboost_1612969829206/work/include/xgboost/generic_parameters.h:39: \n", + "n_gpus: \n", + "\tDeprecated. Single process multi-GPU training is no longer supported.\n", + "\tPlease switch to distributed training with one process per GPU.\n", + "\tThis can be done using Dask or Spark. See documentation for details.\n", + "[08:40:16] WARNING: /opt/conda/envs/rapids/conda-bld/xgboost_1612969829206/work/src/learner.cc:541: \n", + "Parameters: { num_boost_rounds } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[08:40:16] WARNING: /opt/conda/envs/rapids/conda-bld/xgboost_1612969829206/work/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softmax' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "CPU times: user 2.63 s, sys: 108 ms, total: 2.74 s\n", + "Wall time: 2.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "\n", + "xgBoostModelGPU = xgboost.train( dtrain = train_DataAndLabelsGPU, params = paramsGPU, num_boost_round = gpuNTrees )\n", + "\n", + "gpuXGBoostTime = time.time() - startTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Training Speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23.99961744672488" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cpuXGBoostTime/gpuXGBoostTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# 4.2 - Model Inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Infer/predict using Trained **CPU** Model" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 40.3 s, sys: 108 ms, total: 40.4 s\n", + "Wall time: 10.4 s\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "\n", + "yPredTrainCPU = xgBoostModelCPU.predict(pd_X_train)\n", + "yPredTestCPU = xgBoostModelCPU.predict(pd_X_test)\n", + "\n", + "cpuXGBoostInferenceTime = time.time() - startTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Infer/predict using Trained **GPU** Model\n", + "> note that our objective was changed to a regression [ gpu accelerated ] so we must take care to convert each of our predictions from a continuous value to a discrete class (essentially by rounding)." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[08:40:28] WARNING: /opt/conda/envs/rapids/conda-bld/xgboost_1612969829206/work/include/xgboost/generic_parameters.h:39: \n", + "n_gpus: \n", + "\tDeprecated. Single process multi-GPU training is no longer supported.\n", + "\tPlease switch to distributed training with one process per GPU.\n", + "\tThis can be done using Dask or Spark. See documentation for details.\n", + "CPU times: user 1.25 s, sys: 6 µs, total: 1.25 s\n", + "Wall time: 363 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "startTime = time.time()\n", + "yPredTrainGPU = xgBoostModelGPU.predict(train_DataAndLabelsGPU)\n", + "yPredTestGPU = xgBoostModelGPU.predict(test_DataAndLabelsGPU)\n", + "gpuXGBoostInferenceTime = time.time() - startTime\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Inference Speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "28.803101451219785" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cpuXGBoostInferenceTime/gpuXGBoostInferenceTime" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# 4.3 - Evaluate Accuracy\n", + "# note: for binary classification problems consider using AUC \n", + "> from sklearn.metrics import roc_auc_score\n", + "\n", + "> roc_auc_score( pd_y_test.values, np.expand_dims(yPredTestCPU,1) )\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU test accuracy: 0.999960 \n", + "GPU test accuracy: 0.999894 \n" + ] + } + ], + "source": [ + "print( 'CPU test accuracy: {0:.6f} '.format( accuracy_score(pd_y_test, yPredTestCPU) ))\n", + "print( 'GPU test accuracy: {0:.6f} '.format( accuracy_score(pd_y_test, yPredTestGPU) ))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TODO: to increase model accuracy, increase complexity, number of trees, max_depth\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " confusion matrix on TRAIN data -- \n", + "[[1249998 0 57]\n", + " [ 0 1250225 0]\n", + " [ 10 0 1249708]]\n", + "\n", + " confusion matrix on TEST data -- \n", + "[[416581 0 30]\n", + " [ 0 416441 0]\n", + " [ 20 0 416928]]\n" + ] + } + ], + "source": [ + "print('\\n confusion matrix on TRAIN data -- ')\n", + "print(confusion_matrix(pd_y_train, yPredTrainCPU))\n", + "print('\\n confusion matrix on TEST data -- ')\n", + "print( confusion_matrix(pd_y_test, yPredTestCPU))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " confusion matrix on TRAIN data -- \n", + "[[1249693 0 362]\n", + " [ 0 1250225 0]\n", + " [ 0 10 1249708]]\n", + "\n", + " confusion matrix on TEST data -- \n", + "[[416485 0 126]\n", + " [ 0 416441 0]\n", + " [ 0 7 416941]]\n" + ] + } + ], + "source": [ + "print('\\n confusion matrix on TRAIN data -- ')\n", + "print(confusion_matrix(pd_y_train, yPredTrainGPU))\n", + "print('\\n confusion matrix on TEST data -- ')\n", + "print( confusion_matrix(pd_y_test, yPredTestGPU))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.4 - Visualize Model Outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing a CPU boosted tree" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "You must install graphviz to plot tree", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/xgboost/plotting.py\u001b[0m in \u001b[0;36mto_graphviz\u001b[0;34m(booster, fmap, num_trees, rankdir, yes_color, no_color, condition_node_params, leaf_node_params, **kwargs)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 170\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mgraphviz\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSource\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 171\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'graphviz'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m15\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplot_tree\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxgBoostModelCPU\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_trees\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/xgboost/plotting.py\u001b[0m in \u001b[0;36mplot_tree\u001b[0;34m(booster, fmap, num_trees, rankdir, ax, **kwargs)\u001b[0m\n\u001b[1;32m 245\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 246\u001b[0m g = to_graphviz(booster, fmap=fmap, num_trees=num_trees, rankdir=rankdir,\n\u001b[0;32m--> 247\u001b[0;31m **kwargs)\n\u001b[0m\u001b[1;32m 248\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBytesIO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/xgboost/plotting.py\u001b[0m in \u001b[0;36mto_graphviz\u001b[0;34m(booster, fmap, num_trees, rankdir, yes_color, no_color, condition_node_params, leaf_node_params, **kwargs)\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgraphviz\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSource\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 172\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'You must install graphviz to plot tree'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 173\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbooster\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mXGBModel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 174\u001b[0m \u001b[0mbooster\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbooster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_booster\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mImportError\u001b[0m: You must install graphviz to plot tree" + ] + }, + { + "data": { + "image/png": "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AAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAA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AAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAPA/9u7fVe+zjOP450qzlGprwKAgguDQ0sHFgOBSrIIUlUoGdRBEGkoFXVRwsGATdRFsBymUSgcHpYP4G9rSBnRwENPBpUbsVKRL0ISgKVL07pATONST5JvkA56U1wsOh3Pd9/081/kL3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAA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AKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAmk2RvJm5e2ZOzsyFmXl1Zk7MzC1bv2RmDszMizOzZuaT178uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+9nBq12YmUNJXkjyUpL7k7w/yfdzMbD38MbvOZbkPde5IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADeJAxvuPJTk1iRH11rPr7WeSHI8yVdn5varPd6J7H03yTdvaFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2vS2RvPuSPLfWOr9r9nQuhvPu2fD+20l+n+Tkta8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAzWRLJO+uJKd3D9ZaryS5sHN2WTPzgSRfTPL1610QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAm8eWSN6hJOf2mJ/dObuSHyR5fK318pZlZubBmTk1M6fOnDmz5QkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7yJZIXpKsPWZzmfnFw5nPJbkzyXe2LrPWenKtdWStdeTw4cNbnwEAAAAA8AZ79+9q913Hcfz1TqIoob+GSAeLQZei4FRBdBBbf+BU0KEgDhWhuCg4OPgDLApCFJOlQxVEqYPFoUuHIv6gARehUEQoLXZQQZcMN8TSKogfh5zA5fam9yR9Qc8Njwcczvl+fnzv+/4FTwAAAAAAAAAAAAAAAAAAAAAAAAAAAIAdsU0kby/JnYes35Hk8mEXZuZtSX6Y5FySEzNzZ5LbN9unZ+a2Gx0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3bdNJO/FJPfuX5iZe5Kc3uwd5nSSdyc5n6uRvb0kf9rsPZnk+ZsZFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN12aoszzyT5+szcttb612btoSSvJbl4nTuvJPn4gbW7k/wyyTeT/P4mZgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDHbRPJezzJV5M8NTPnkrw3yaNJzq+1rlw7NDMvJ7m41vrSWuu/SZ7d/5KZObv5+ee11h/f/OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsmiMjeWutvZl5IMljSZ5OcjnJhVwN5R1818nyfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwjR0bykmSt9UKS+484c/aI/b8mmW0HAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Pg58VYPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwK1DJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGpE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAakTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBHJAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEYkDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBqRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpE8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgRyQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBGJA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAakTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqRPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoEckDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRiQPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAmq0ieTPz/pn53cy8OjP/nJnvzszJI+58aGZ+NjMvb+69NDPfmZl3dEYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg15w66sDM3JXkt0leSPJgkvcl+VGuBva+/QZXH9qcPZfkL0k+mOR7m+/PvampAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ElHRvKSfDnJO5N8dq11JclvZub2JI/OzA82a4c5t9a6tO/52Zn5d5Ifz8x71lp/e3OjAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGtObHHmM0l+fSCG92SuhvM+dr1LBwJ51zy/+X7X1hMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwbGwTybs3yYv7F9Zaf0/y6mbvRnwkyf+SvHSD9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgGtonk3ZXk8iHre5u9rczM3Um+leQXa60r1znzyMw8NzPPXbp0adtXAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCO2ieQlyTpkba6z/vqDM29P8qskryT52nX/yFo/WWvdt9a678yZM1uOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwK44tcWZvSR3HrJ+R5LLR12emUnyRJIPJPnoWmvvBuYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgGNkmkvdiknv3L8zMPUlOb/aOciHJg0k+udba5jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH1IktzjyT5NMzc9u+tYeSvJbk4htdnJlvJPlKki+stf5w01MCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwLGwTyXs8yX+SPDUzn5iZR5I8muT8WuvKtUMz8/LM/HTf8+eTfD/JE0n+MTMf3vc5U/0vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2Amnjjqw1tqbmQeSPJbk6SSXk1zI1VDewXed3Pf8qc33w5vPfl9M8vMbnBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAdd2QkL0nWWi8kuf+IM2cPPD+c18fxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuIWdeKsHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NYhkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQI1IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSI5AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAjkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECNSB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1InkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQI5IHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAjUgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1IjkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCOSBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(100,15))\n", + "plot_tree(xgBoostModelCPU, num_trees=0, ax=plt.subplot(1,1,1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing a GPU Boosted Tree" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(100,50))\n", + "plot_tree(xgBoostModelGPU, num_trees=0, ax=plt.subplot(1,1,1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize Class Predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def map_colors_to_clusters_topK ( dataset, labels, topK=None, cmapName = 'tab10'):\n", + " if topK == None:\n", + " topK = dataset.shape[0]\n", + " \n", + " colorStack = np.zeros((topK, 3), dtype=np.float32)\n", + " \n", + " cMap = plt.get_cmap(cmapName)\n", + " for iColor in range ( topK ):\n", + " colorStack[iColor] = cMap.colors[ labels[iColor] ]\n", + " \n", + " return colorStack " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "colorStackClassifier = map_colors_to_clusters_topK ( pd_X_test, yPredTestGPU.astype(np.int), topK=None )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_data( pd_X_test, colorStack= colorStackClassifier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-------\n", + "# Extensions\n", + "-------\n", + "For extensions to this work visit github.com/miroenev/rapids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----\n", + "# End [ thanks! ]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/intermediate_notebooks/E2E/synthetic_3D/rapids_workflow.png b/community_tutorials_and_guides/synthetic_3D/rapids_workflow.png similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/rapids_workflow.png rename to community_tutorials_and_guides/synthetic_3D/rapids_workflow.png diff --git a/intermediate_notebooks/E2E/synthetic_3D/xgboost.png b/community_tutorials_and_guides/synthetic_3D/xgboost.png similarity index 100% rename from intermediate_notebooks/E2E/synthetic_3D/xgboost.png rename to community_tutorials_and_guides/synthetic_3D/xgboost.png diff --git a/intermediate_notebooks/E2E/taxi/NYCTaxi-E2E.ipynb b/community_tutorials_and_guides/taxi/NYCTaxi-E2E.ipynb similarity index 100% rename from intermediate_notebooks/E2E/taxi/NYCTaxi-E2E.ipynb rename to community_tutorials_and_guides/taxi/NYCTaxi-E2E.ipynb diff --git a/intermediate_notebooks/examples/umap_demo_full.ipynb b/community_tutorials_and_guides/umap_demo_full.ipynb similarity index 99% rename from intermediate_notebooks/examples/umap_demo_full.ipynb rename to community_tutorials_and_guides/umap_demo_full.ipynb index 8a5ebfb6..0fe2a4d6 100644 --- a/intermediate_notebooks/examples/umap_demo_full.ipynb +++ b/community_tutorials_and_guides/umap_demo_full.ipynb @@ -646,7 +646,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.7.8" } }, "nbformat": 4, diff --git a/community_tutorials_and_guides/weather.ipynb b/community_tutorials_and_guides/weather.ipynb new file mode 100644 index 00000000..21a317f6 --- /dev/null +++ b/community_tutorials_and_guides/weather.ipynb @@ -0,0 +1,1057 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simpler Multi-GPU ETL using Dask ##\n", + "\n", + "A major focus of the last several RAPIDS releases is easier scaling: up *and* out.\n", + "\n", + "While we introduced examples of multi-gpu/multi-node data processing using Dask in our first release, it was difficult to install, configure, and launch.\n", + "\n", + "Running our main example, the [Mortgage Workflow](https://github.com/rapidsai/notebooks-contrib/blob/master/intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb) required:\n", + "\n", + "1. Pre-splitting or downloading pre-split datasets\n", + "2. Using a [custom shell script](https://github.com/rapidsai/notebooks/blob/master/utils/dask-setup.sh) to:\n", + " * Check for and force shut-down of existing dask clusters\n", + " * Set environment variables\n", + " * Launch dask-scheduler and dask-worker processes\n", + "3. Make limited use of Dask, only via the [`delayed` interface](http://docs.dask.org/en/latest/delayed.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since our first release, we've created the [dask-cuda project](https://github.com/rapidsai/dask-cuda), which automatically handles configuring Dask worker processes to make use of available GPUs.\n", + "\n", + "We also improved [dask-cudf](https://github.com/rapidsai/cudf/tree/branch-0.10/python/dask_cudf) to support a variety of common ETL operations. While joins and groupbys received the most attention, dask-cudf now also supports friendlier parallel IO.\n", + "\n", + "The rest of this notebook demonstrates how we've addressed the above pains, and generally made scaling RAPIDS out to multiple-GPUs easier.\n", + "\n", + "First, let's see what GPUs we have available..." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 1
  • \n", + "
  • Cores: 1
  • \n", + "
  • Memory: 16.48 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "import dask, dask_cudf\n", + "from dask.diagnostics import ProgressBar\n", + "\n", + "# Use dask-cuda to start one worker per GPU on a single-node system\n", + "# When you shutdown this notebook kernel, the Dask cluster also shuts down.\n", + "cluster = LocalCUDACluster(ip='0.0.0.0')\n", + "client = Client(cluster)\n", + "# print client info\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ok, we've got a cluster of GPU workers. Notice also the link to the Dask status dashboard. It provides lots of useful information while running data processing tasks.\n", + "\n", + "## Accessing Data\n", + "\n", + "Now, let's download a dataset.\n", + "\n", + "If you're working on a local machine, you'd normally use wget, Python's `urllib` package, or another tool to pull down the data you want to analyze.\n", + "\n", + "For the sake of not making you wait for 200+ files to download, the cell below uses urllib to download just 20 years of weather records, and a metadata file about the stations that recorded it. You can update the `years` list if you want to download more, but it wont change the logic in the notebook either way, it'll just process more data.\n", + "\n", + "*Note*: The rest of the markdown commentary in this notebook assumes you're operating on all 232 years of data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Make and set a home for your data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import urllib.request\n", + "\n", + "data_dir = '../../data/weather/'\n", + "if not os.path.exists(data_dir):\n", + " print('creating weather directory')\n", + " os.system('mkdir ../../data/weather')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Choose and Download your data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# download weather observations\n", + "base_url = 'ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/by_year/'\n", + "years = list(range(2000, 2020))\n", + "for year in years:\n", + " fn = str(year) + '.csv.gz'\n", + " if not os.path.isfile(data_dir+fn):\n", + " print(f'Downloading {base_url+fn} to {data_dir+fn}')\n", + " urllib.request.urlretrieve(base_url+fn, data_dir+fn)\n", + " \n", + "# download weather station metadata\n", + "station_meta_url = 'https://www1.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt'\n", + "if not os.path.isfile(data_dir+'ghcnd-stations.txt'):\n", + " print('Downloading station meta..')\n", + " urllib.request.urlretrieve(station_meta_url, data_dir+'ghcnd-stations.txt')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Alternatives to Pre-Downloading Data\n", + "\n", + "While downloading or copying data to your local environment is a good way to get started, many users will want other options:\n", + "\n", + "1. Reading directly from distributed storage, like HDFS\n", + "2. Reading from cloud storage (S3, GCS, ADLS, etc)\n", + "\n", + "See [Dask Remote Data Services](http://docs.dask.org/en/latest/remote-data-services.html) for more details on supported providers, authentication, and other storage configuration options.\n", + "\n", + "Here's an example of reading the same weather data, conveniently available in a public Amazon S3 bucket.\n", + "\n", + "But first make sure your Python environment has the right packages to read from your storage system of choice.\n", + "\n", + "For this example: ```conda install -y s3fs```" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Dask DataFrame Structure:
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
station_iddatetypeval
npartitions=1
objectint64objectint64
............
\n", + "
\n", + "
Dask Name: read-csv, 1 tasks
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# these CSV files don't have headers, we specify column names manually\n", + "names = [\"station_id\", \"date\", \"type\", \"val\"]\n", + "# there are more fields, but only the first 4 are relevant in this notebook\n", + "usecols = names[0:4]\n", + "\n", + "url = 's3://noaa-ghcn-pds/csv/1788.csv'\n", + "dask_cudf.read_csv(url, names=names, usecols=usecols, storage_options={'anon': True})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reading Large & Multi-File DataSets\n", + "\n", + "Wait... there are many weather files: one for each year going back to the 1780s.\n", + "\n", + "Before RAPIDS 0.6, if you wanted to read all these files in, you'd need to either use a for-loop, manually concatenating dataframes, or use [`dask.delayed`](http://docs.dask.org/en/latest/delayed.html) functions that invoke cuDF.read_csv.\n", + "\n", + "Fortunately, now there's `dask_cudf.read_csv`, which supports file globs, _and_ automatically splits files into chunks that can be processed serially when needed, so you're less likely to run out of memory.\n", + "\n", + "When you call `dask_cudf.read_csv`, Dask reads metadata for each CSV file and tasks workers with lists of filenames & byte-ranges that they're responsible for loading with cuDF's GPU CSV reader.\n", + "\n", + "*Note*: compressed files are not splittable on read, but you can [repartition](https://docs.dask.org/en/latest/dataframe-best-practices.html#repartition-to-reduce-overhead) them downstream." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/dask_cudf/io/csv.py:60: UserWarning: Warning gzip compression does not support breaking apart files\n", + "Please ensure that each individual file can fit in memory and\n", + "use the keyword ``chunksize=None to remove this message``\n", + "Setting ``chunksize=(size of file)``\n", + " \"Setting ``chunksize=(size of file)``\" % compression\n" + ] + } + ], + "source": [ + "weather_ddf = dask_cudf.read_csv(data_dir+'*.csv.gz', names=names, usecols=usecols, compression='gzip')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Let's Process Some Data\n", + "\n", + "Per the [readme](https://docs.opendata.aws/noaa-ghcn-pds/readme.html) for this dataset, multiple types of weather observations are in the same files, and each carries a different units of measure:\n", + "\n", + "| Observation Type | Existing Units | Action |\n", + "| ------------- | ------------- | ------------- |\n", + "| PRCP | Precipitation (tenths of mm) | convert to inches |\n", + "| SNWD | Snow depth (mm) | convert to inches |\n", + "| TMAX | tenths of degrees C | convert to fahrenheit |\n", + "| TMIN | tenths of degrees C | convert to fahrenheit |\n", + "\n", + "There are more even more observation types, each with their own units of measure, but I wont list them all. In this notebook, I'm going to focus specifically on precipitation.\n", + "\n", + "The `type` column tells us what kind of weather observation each record represents. Ordinarily, you might use `query` to filter out subsets of records and apply different logic to each subset. However, [query doesn't support string datatypes yet](https://github.com/rapidsai/cudf/issues/111). Instead, you can use boolean indexing.\n", + "\n", + "For numeric types, Dask with cuDF works mostly like regular Dask. For instance, you can define new columns as combinations of other columns:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "precip_index = weather_ddf['type'] == 'PRCP'\n", + "precip_ddf = weather_ddf[precip_index]\n", + "\n", + "# convert 10ths of mm to inches\n", + "mm_to_inches = 0.0393701\n", + "precip_ddf['val'] = precip_ddf['val'] * 1/10 * mm_to_inches" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note: Calling .head() will read the first few rows, usually from the first partition.\n", + "\n", + "In our case, the first partition represents weather data from 1788. Apparently, there wasn't _any_ precipitation data collected that year:\n", + "\n", + "Beware in your own analyes, that you .head() from partitions that you haven't already filtered everything out of!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
station_iddatetypeval
27AGM0006035520010101PRCP0.039370
30AGM0006036020010101PRCP0.118110
33AGM0006040220010101PRCP0.161417
37AGM0006041920010101PRCP0.078740
47AGM0006044520010101PRCP0.039370
\n", + "
" + ], + "text/plain": [ + " station_id date type val\n", + "27 AGM00060355 20010101 PRCP 0.039370\n", + "30 AGM00060360 20010101 PRCP 0.118110\n", + "33 AGM00060402 20010101 PRCP 0.161417\n", + "37 AGM00060419 20010101 PRCP 0.078740\n", + "47 AGM00060445 20010101 PRCP 0.039370" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "precip_ddf.get_partition(1).head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ok, we have a lot of weather observations. Now what?\n", + "\n", + "# Answering Questions With Data ##\n", + "\n", + "For some reason, residents of particular cities like to lay claim to having the best, or the worst of something. For Los Angeles, it's having the worst traffic. New Yorkers and Chicagoans argue over who has the best pizza. [West Coasters argue about who has the most rain](https://twitter.com/MikeNiccoABC7/status/1105184947663396864).\n", + "\n", + "Well... as a longtime Atlanta resident suffering from humidity exhaustion, I like to joke that with all the spring showers, _Atlanta_ is the new Seattle.\n", + "\n", + "Does my theory hold water? Or will the data rain on my bad pun parade?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# How Can I Test My Theory?\n", + "\n", + "We've already created `precip_df`, which is only the precipitation observations, but it's for all 100k weather stations, most of them no-where near Atlanta, and this is time-series data, so we'll need to aggregate over time ranges.\n", + "\n", + "To get down to just Atlanta and Seattle precipitation records, we have to...\n", + "\n", + "1. Extract year, month, and day from the compound \"date\" column, so that we can compare total rainfall across time.\n", + "\n", + "2. Load up the station metadata file.\n", + "\n", + "3. There's no \"city\" in the station metadata, so we'll do some geo-math and keep only stations near Atlanta and Seattle.\n", + "\n", + "4. Use a Groupby to compare changing precipitation patterns across time\n", + "\n", + "5. Use inner joins to filter the precipitation dataframe down to just Atlanta & Seattle data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Extracting Finer Grained Date Fields\n", + "\n", + "We _can_ do a bit of math to separate date parts.." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
station_iddatetypevalyearmonthday
27AGM0006035520010101PRCP0.039370200111
30AGM0006036020010101PRCP0.118110200111
33AGM0006040220010101PRCP0.161417200111
37AGM0006041920010101PRCP0.078740200111
47AGM0006044520010101PRCP0.039370200111
\n", + "
" + ], + "text/plain": [ + " station_id date type val year month day\n", + "27 AGM00060355 20010101 PRCP 0.039370 2001 1 1\n", + "30 AGM00060360 20010101 PRCP 0.118110 2001 1 1\n", + "33 AGM00060402 20010101 PRCP 0.161417 2001 1 1\n", + "37 AGM00060419 20010101 PRCP 0.078740 2001 1 1\n", + "47 AGM00060445 20010101 PRCP 0.039370 2001 1 1" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "precip_ddf['year'] = precip_ddf['date']/10000\n", + "precip_ddf['year'] = precip_ddf['year'].astype('int')\n", + "\n", + "precip_ddf['month'] = (precip_ddf['date'] - precip_ddf['year']*10000)/100\n", + "precip_ddf['month'] = precip_ddf['month'].astype('int')\n", + "\n", + "precip_ddf['day'] = (precip_ddf['date'] - precip_ddf['year']*10000 - precip_ddf['month']*100)\n", + "precip_ddf['day'] = precip_ddf['day'].astype('int')\n", + "\n", + "precip_ddf.get_partition(1).head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this dataset, getting date parts is easier with string slicing. However, as is sometimes the case, Dask expects some aspect of cuDF's Python API to match Pandas in a way that [isn't fully compatible yet](https://github.com/rapidsai/cudf/issues/2367).\n", + "\n", + "That bug will likely be resolved quickly. But, this example is a good chance to show how to workaround similar problems.\n", + "\n", + "Dask has a [map_partitions](https://docs.dask.org/en/latest/dataframe-api.html#dask.dataframe.Series.map_partitions) function which will apply a given Python function to all partitions of a distributed DataFrame. When you do this on a dask_cudf df, your input is a cuDF object:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " station_id date type val year month day\n", + "0 cat 0 cat 0.0 0 0 0\n", + "1 dog 1 dog 1.0 1 1 1\n", + "0 0\n", + "1 1\n", + "Name: date, dtype: int64\n", + "0 0\n", + "1 1\n", + "Name: date, dtype: object\n", + "0 0\n", + "1 1\n", + "Name: date, dtype: int64\n" + ] + }, + { + "ename": "ValueError", + "evalue": "Metadata inference failed in `get_date_parts`.\n\nYou have supplied a custom function and Dask is unable to \ndetermine the type of output that that function returns. \n\nTo resolve this please provide a meta= keyword.\nThe docstring of the Dask function you ran should have more information.\n\nOriginal error is below:\n------------------------\nValueError('Could not convert strings to integer type due to presence of non-integer values.')\n\nTraceback:\n---------\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/utils.py\", line 180, in raise_on_meta_error\n yield\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\", line 5316, in _emulate\n return func(*_extract_meta(args, True), **_extract_meta(kwargs, True))\n File \"\", line 8, in get_date_parts\n df['month'] = date_str.str.slice(4, 6).astype('int')\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\", line 2190, in astype\n raise e\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\", line 2182, in astype\n data = self._column.astype(dtype)\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/column.py\", line 1009, in astype\n return self.as_numerical_column(dtype)\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/string.py\", line 4825, in as_numerical_column\n \"Could not convert strings to integer \"\n", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/utils.py\u001b[0m in \u001b[0;36mraise_on_meta_error\u001b[0;34m(funcname, udf)\u001b[0m\n\u001b[1;32m 179\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 180\u001b[0;31m \u001b[0;32myield\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 181\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\u001b[0m in \u001b[0;36m_emulate\u001b[0;34m(func, *args, **kwargs)\u001b[0m\n\u001b[1;32m 5315\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mraise_on_meta_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfuncname\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mudf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"udf\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5316\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0m_extract_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0m_extract_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5317\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mget_date_parts\u001b[0;34m(df)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdate_str\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'int'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'month'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdate_str\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'int'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdate_str\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'int'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\u001b[0m in \u001b[0;36mastype\u001b[0;34m(self, dtype, copy, errors)\u001b[0m\n\u001b[1;32m 2189\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0merrors\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"raise\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2190\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2191\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0merrors\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"warn\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\u001b[0m in \u001b[0;36mastype\u001b[0;34m(self, dtype, copy, errors)\u001b[0m\n\u001b[1;32m 2181\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2182\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_column\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2183\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/column.py\u001b[0m in \u001b[0;36mastype\u001b[0;34m(self, dtype, **kwargs)\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1009\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_numerical_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1010\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/string.py\u001b[0m in \u001b[0;36mas_numerical_column\u001b[0;34m(self, dtype)\u001b[0m\n\u001b[1;32m 4824\u001b[0m raise ValueError(\n\u001b[0;32m-> 4825\u001b[0;31m \u001b[0;34m\"Could not convert strings to integer \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4826\u001b[0m \u001b[0;34m\"type due to presence of non-integer values.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Could not convert strings to integer type due to presence of non-integer values.", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;31m# any single-GPU function that works in cuDF may be called via dask.map_partitions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mprecip_ddf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprecip_ddf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap_partitions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_date_parts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0mprecip_ddf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_partition\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\u001b[0m in \u001b[0;36mmap_partitions\u001b[0;34m(self, func, *args, **kwargs)\u001b[0m\n\u001b[1;32m 676\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mdivision\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 677\u001b[0m \"\"\"\n\u001b[0;32m--> 678\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmap_partitions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 679\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 680\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0minsert_meta_param_description\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpad\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\u001b[0m in \u001b[0;36mmap_partitions\u001b[0;34m(func, meta, enforce_metadata, transform_divisions, *args, **kwargs)\u001b[0m\n\u001b[1;32m 5367\u001b[0m \u001b[0;31m# Use non-normalized kwargs here, as we want the real values (not\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5368\u001b[0m \u001b[0;31m# delayed values)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5369\u001b[0;31m \u001b[0mmeta\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_emulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mudf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5370\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5371\u001b[0m \u001b[0mmeta\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmeta\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmeta_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\u001b[0m in \u001b[0;36m_emulate\u001b[0;34m(func, *args, **kwargs)\u001b[0m\n\u001b[1;32m 5314\u001b[0m \"\"\"\n\u001b[1;32m 5315\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mraise_on_meta_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfuncname\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mudf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"udf\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5316\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0m_extract_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0m_extract_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5317\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5318\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 128\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 130\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 131\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 132\u001b[0m \u001b[0;31m# Suppress StopIteration *unless* it's the same exception that\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/utils.py\u001b[0m in \u001b[0;36mraise_on_meta_error\u001b[0;34m(funcname, udf)\u001b[0m\n\u001b[1;32m 199\u001b[0m )\n\u001b[1;32m 200\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" in `{0}`\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfuncname\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfuncname\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrepr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Metadata inference failed in `get_date_parts`.\n\nYou have supplied a custom function and Dask is unable to \ndetermine the type of output that that function returns. \n\nTo resolve this please provide a meta= keyword.\nThe docstring of the Dask function you ran should have more information.\n\nOriginal error is below:\n------------------------\nValueError('Could not convert strings to integer type due to presence of non-integer values.')\n\nTraceback:\n---------\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/utils.py\", line 180, in raise_on_meta_error\n yield\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/dask/dataframe/core.py\", line 5316, in _emulate\n return func(*_extract_meta(args, True), **_extract_meta(kwargs, True))\n File \"\", line 8, in get_date_parts\n df['month'] = date_str.str.slice(4, 6).astype('int')\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\", line 2190, in astype\n raise e\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/series.py\", line 2182, in astype\n data = self._column.astype(dtype)\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/column.py\", line 1009, in astype\n return self.as_numerical_column(dtype)\n File \"/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/column/string.py\", line 4825, in as_numerical_column\n \"Could not convert strings to integer \"\n" + ] + } + ], + "source": [ + "def get_date_parts(df):\n", + " print(df.head(10))\n", + " print(df[\"date\"])\n", + " date_str = df['date'].astype('str')\n", + " print(date_str)\n", + " df['year'] = date_str.str.slice(0, 4).astype('int')\n", + " print(date_str.str.slice(0, 4).astype('int'))\n", + " df['month'] = date_str.str.slice(4, 6).astype('int')\n", + " print(date_str.str.slice(4, 6).astype('int'))\n", + " df['day'] = date_str.str.slice(6, 8).astype('int')\n", + " return df\n", + "# any single-GPU function that works in cuDF may be called via dask.map_partitions\n", + "precip_ddf = precip_ddf.map_partitions(get_date_parts)\n", + "precip_ddf.get_partition(1).head()\n", + "\n", + "# def get_date_parts(df):\n", + "# date_str = df['date'].astype('str')\n", + " \n", + "# df['year'] = date_str.str.slice(0, 4)\n", + "# print(df['year'])\n", + "# df['month'] = date_str.str.slice(4, 6)\n", + "# print(df['month'])\n", + "# df['day'] = date_str.str.slice(6, 8)\n", + "# print(df['month'])\n", + " \n", + "# df['year'] = date_str.str.slice(0, 4).astype('int')\n", + "# df['month'] = date_str.str.slice(4, 6).astype('int')\n", + "# df['day'] = date_str.str.slice(6, 8).astype('int')\n", + "# return df\n", + "\n", + "# any single-GPU function that works in cuDF may be called via dask.map_partitions\n", + "# precip_ddf = precip_ddf.map_partitions(get_date_parts)\n", + "# precip_ddf.get_partition(1).head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The map_partitions pattern is also useful whenever there are cuDF specific functions without a direct mapping into Dask." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Loading Station Metadata ##" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!head -n 5 /data/weather/ghcnd-stations.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wait... That's no CSV file! It's fixed-width!\n", + "\n", + "That's annoying because we don't have a reader for it. We could use CPU code to pre-process the file, making it friendlier for loading into a DataFrame, but, RAPIDS is about end-to-end data processing without leaving the GPU.\n", + "\n", + "This file is small enough that we can handle it directly with cuDF on a single GPU.\n", + "\n", + "*Warning*: Make sure you [create your dask-cuda cluster _before_ importing cudf](https://github.com/rapidsai/dask-cuda/issues/32).\n", + "\n", + "Here's how to cleanup this metadata using cuDF and string operations:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "\n", + "fn = data_dir+'ghcnd-stations.txt'\n", + "# There are no '|' chars in the file. Use that to read the file as a single column per line\n", + "# quoting=3 handles misplaced quotes in the `name` field \n", + "station_df = cudf.read_csv(fn, sep='|', quoting=3, names=['lines'], header=None)\n", + "\n", + "# you can use normal DataFrame .str accessor, and chain operators together\n", + "station_df['station_id'] = station_df['lines'].str.slice(0, 11).str.strip()\n", + "station_df['latitude'] = station_df['lines'].str.slice(12, 20).str.strip()\n", + "station_df['longitude'] = station_df['lines'].str.slice(21, 30).str.strip()\n", + "station_df = station_df.drop('lines')\n", + "\n", + "station_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Managing Memory\n", + "\n", + "While GPU memory is very fast, there's less of it than host RAM. It's a good idea to avoid storing lots of columns that aren't useful for what you're trying to do, especially when they're strings.\n", + "\n", + "For example, for the station metadata, there are more columns than we parsed out above. In this workflow we only need `station_id`, `latitude`, and `longitude`, so we skipped parsing the rest of the columns.\n", + "\n", + "We also need to convert latitude and longitude from strings to floats, and convert the single-GPU DataFrame to a Dask DataFrame that can be distributed across workers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# you can cast string columns to numerics\n", + "station_df['latitude'] = station_df['latitude'].astype('float')\n", + "station_df['longitude'] = station_df['longitude'].astype('float')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Filtering Weather Stations by Distance\n", + "\n", + "Initially we planned to use our [existing Haversine Distance user defined function](https://medium.com/rapids-ai/user-defined-functions-in-rapids-cudf-2d7c3fc2728d) to figure out which stations are within a given distance from a city. However, that relies on a [numba CUDA JIT'ed kernel](https://numba.pydata.org/numba-doc/dev/cuda/index.html), which would be slower and would incur compilation time the first time you call it.\n", + "\n", + "Now that [cuSpatial](https://github.com/rapidsai/cuspatial) is available as [a nightly conda package](https://anaconda.org/rapidsai-nightly/cuspatial), we can use it without having to build from source:\n", + "\n", + "```\n", + "conda install -c conda-forge -c rapidsai-nightly cuspatial\n", + "```\n", + "\n", + "For this scenario, we've manually looked up Atlanta and Seattle's city centers and will fill `cudf.Series` with their latitude and longitude values. Then we can call a cuSpatial function to compute the distance between each station and each city." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cuspatial\n", + "\n", + "# fill new Series with Atlanta lat/lng\n", + "station_df['atlanta_lat'] = 33.7490\n", + "station_df['atlanta_lng'] = -84.3880\n", + "# compute distance from each station to Atlanta\n", + "station_df['atlanta_dist'] = cuspatial.haversine_distance(\n", + " station_df['longitude'], station_df['latitude'],\n", + " station_df['atlanta_lng'], station_df['atlanta_lat']\n", + ")\n", + "\n", + "# fill new Series with Seattle lat/lng\n", + "station_df['seattle_lat'] = 47.6219\n", + "station_df['seattle_lng'] = -122.3517\n", + "# compute distance from each station to Seattle\n", + "station_df['seattle_dist'] = cuspatial.haversine_distance(\n", + " station_df['longitude'], station_df['latitude'],\n", + " station_df['seattle_lng'], station_df['seattle_lat']\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Checking the Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Inspect the results:\n", + "atlanta_stations_df = station_df.query('atlanta_dist <= 25')\n", + "seattle_stations_df = station_df.query('seattle_dist <= 25')\n", + "\n", + "print(f'Atlanta Stations: {len(atlanta_stations_df)}')\n", + "print(f'Seattle Stations: {len(seattle_stations_df)}')\n", + "\n", + "atlanta_stations_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[Google tells me those station ids are from Smyrna](https://geographic.org/global_weather/georgia/smyrna_23_ne_002.html), a town just outside of Atlanta's perimeter. Our distance calculation worked!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Grouping & Aggregating by Time Range\n", + "\n", + "Before using an inner join to filter down to city-specific precipitation data, we can use a groupby to sum the precipitation for station and year. That'll allow the join to proceed faster and use less memory.\n", + "\n", + "One total precipitation record per station per year is relatively small, and we're going to need to graph this data, so we'll go ahead and `compute()` the result, asking Dask to aggregate across the 200+ years worth of data, bringing the results back to the client as a single GPU cuDF DataFrame.\n", + "\n", + "Note that with Dask, data is partitioned and distributed across multiple workers. Some operations require that workers \"[shuffle](http://docs.dask.org/en/latest/dataframe-groupby.html#)\" data from their partitions back and forth across the network, which has major performance implications. Today join, groupby, and sort operations can be fairly network constrained.\n", + "\n", + "See the [slides](https://www.slideshare.net/MatthewRocklin/ucxpython-a-flexible-communication-library-for-python-applications) from a recent talk at GTC San Jose to learn more about [ongoing efforts to integrate Dask with UCX](https://github.com/rapidsai/ucx-py/) and allow it to use accelerated networking hardware like Infiniband and [nvlink](https://www.nvidia.com/en-us/data-center/nvlink/).\n", + "\n", + "In the meantime, distributed operators that require shuffling like joins, groupbys, and sorts work, albeit not as fast as we'd like." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "precip_year_ddf = precip_ddf.groupby(by=['station_id', 'year']).val.sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we're calling `compute` again here. This tells Dask to actually start computing the full set of processing logic defined thus far:\n", + "\n", + "1. Read and decompress 232 gzipped files (about 100 GB decompressed)\n", + "2. Send to the GPU and parse\n", + "3. Filter down to precipitation records\n", + "4. Apply a conversion to inches\n", + "5. Sum total inches of rain per year per each of the 108k weather stations\n", + "6. Combine and pull results a single GPU DataFrame on the client host\n", + "\n", + "To wit.. this will take time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time precip_year_df = precip_year_ddf.compute()\n", + "\n", + "# Convert from the groupby multi-indexed DataFrame back to a normal DF which we can use with merge\n", + "precip_year_df = precip_year_df.reset_index()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Using Inner Joins to Filter Weather Observations\n", + "\n", + "We have separate DataFrames containing Atlanta and Seattle stations, and we have our total precipitation grouped by `station_id` and `year`. Computing inner joins can let us compute total precipitation by year for just Atlanta and Seattle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time atlanta_precip_df = precip_year_df.merge(atlanta_stations_df, on=['station_id'], how='inner')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "atlanta_precip_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time seattle_precip_df = precip_year_df.merge(seattle_stations_df, on=['station_id'], how='inner')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "seattle_precip_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we need to normalize the total amount of rain in each city by the number of stations which collected rainfall: Seattle had twice as many stations collecting, but that doesn't mean more total rain fell! " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "atlanta_rain = atlanta_precip_df.groupby(['year']).val.sum()/len(atlanta_stations_df)\n", + "atlanta_rain.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "seattle_rain = seattle_precip_df.groupby(['year']).val.sum()/len(seattle_stations_df)\n", + "\n", + "seattle_rain.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing the Answer\n", + "\n", + "To generate the graphs in the cells below, first you'll need to ```conda install -y python-graphviz matplotlib```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.pyplot import *\n", + "\n", + "plt.close('all')\n", + "plt.rcParams['figure.figsize'] = [20, 10]\n", + "\n", + "fig, ax = subplots()\n", + "\n", + "atlanta_rain.to_pandas().plot(ax=ax)\n", + "seattle_rain.to_pandas().plot(ax=ax)\n", + "\n", + "ax.legend(['Atlanta', 'Seattle'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Results\n", + "\n", + "It looks like I'm right (mostly)! At least for roughly the last 80 years, it rains more by volume in Atlanta than it does in Seattle. The data seems to confirm my suspicions.\n", + "\n", + "But as usual the answer raises additional questions:\n", + "\n", + "1. Without singling out Atlanta and Seattle, which city actually has the most precipitation by volume?\n", + "\n", + "2. Why is there such a large increase in observed precipitation in the last 10 years?\n", + "\n", + "3. One friend noted that it rains more frequently in Seattle, just not as hard. A contrarian was quick to point out that it mists a lot in Seattle. How often is it just \"misty\", but not really raining?\n", + "\n", + "We'll revisit these questions in a future post, and look forward to seeing what kinds of analyses YOU come up with." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Takeaways\n", + "\n", + "We just showed some of the ways you can use Dask and cuDF to parallelize typical data processing tasks on multiple GPUs. Hopefully this notebook provides useful examples to refer to while doing your own ETL & analytics work.\n", + "\n", + "For more info on what's working today with Dask and cuDF, see [our summary](https://docs.rapids.ai/api/cudf/stable/), and follow [our ongoing development](https://github.com/rapidsai/cudf).\n", + "\n", + "Also checkout out other [community contributed notebooks](https://github.com/rapidsai/notebooks-contrib), and submit your own!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/conference_notebooks/TMLS_2020/notebooks/Taxi/Overview-Taxi.ipynb b/conference_notebooks/TMLS_2020/notebooks/Taxi/Overview-Taxi.ipynb new file mode 100644 index 00000000..7db9dc7a --- /dev/null +++ b/conference_notebooks/TMLS_2020/notebooks/Taxi/Overview-Taxi.ipynb @@ -0,0 +1,868 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intro to RAPIDS using the New York City Yellow Taxi Data \n", + "light on Data Science, heavy on comparisons.\n", + "\n", + "This notebook is for the The Toronto Machine Learning Summit, Nov 16 -29, 2020\n", + "\n", + "![TMLS](./img/TMLS.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook includes\n", + "\n", + "* cudf - for basic ETL and some __statistical analysis__ \n", + "* cuml - for __machine learning__\n", + "* cugraph - for some __graph analysis__\n", + "* cuxfilter - for __visualization__\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load the libraries\n", + "import cudf\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import math\n", + "\n", + "import os\n", + "import gc\n", + "\n", + "from collections import OrderedDict\n", + "import argparse\n", + "import datetime\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try: \n", + " import tqdm\n", + "except ModuleNotFoundError:\n", + " os.system('pip install tqdm')\n", + " import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's use Unified Memory (aka managed memory) so that we try and avoid OOM errors \n", + "# start by importing the RAPIDS Memory Manager and then reinitializing with managed memory turn on\n", + "import rmm\n", + "\n", + "rmm.reinitialize( \n", + " managed_memory=True, # Use managed memory, this allows for oversubscription of the GPU\n", + " pool_allocator=False, # default is False\n", + " devices=0, # GPU device IDs to register. By default, registers only GPU 0.\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top_dir = \"./\"\n", + "data_dir = \"./nyctaxi\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Download Taxi data\n", + "\n", + "if os.path.exists(data_dir) == False:\n", + " import nyctaxi_data\n", + "\n", + " print(\"downloading data\")\n", + " nyctaxi_data.download_nyctaxi_data([\"2016\"], top_dir)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "\n", + "# cuDF - Accelerated Data Frame " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get a list of files\n", + "data_path = top_dir + \"nyctaxi/2016\"\n", + "\n", + "files = []\n", + "\n", + "for f in sorted(os.listdir(data_path)):\n", + " if f[0:6] != 'yellow':\n", + " continue\n", + " \n", + " fname = os.path.join(data_path, f)\n", + " \n", + " files.append(fname)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!du -sh $data_path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading data performance test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def read_pandas(f):\n", + " start_t = time.time()\n", + " df = pd.read_csv(f)\n", + " end_t = time.time() - start_t\n", + "\n", + " return df, end_t" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def read_cudf(f):\n", + " start_t = time.time()\n", + " df = cudf.read_csv(f)\n", + " end_t = time.time() - start_t\n", + "\n", + " return df, end_t" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "_ = read_pandas(files[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load data with Pandas\n", + "\n", + "data = []\n", + "\n", + "start_t = time.time()\n", + "\n", + "for f in files:\n", + " print(\"\\treading \" + f, end = '')\n", + " df, t = read_pandas(f)\n", + " print(\" ... in time of \" + str(t) + \" seconds\")\n", + " data.append(df)\n", + " \n", + "taxi_pdf = pd.concat(data)\n", + "\n", + "end_t = time.time()\n", + "\n", + "print(f\"loaded {len(taxi_pdf):,} records in {(end_t - start_t):2f} seconds\")\n", + "\n", + "del data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load data with RAPIDS cuDF\n", + "\n", + "data = []\n", + "\n", + "start_t = time.time()\n", + "\n", + "for f in files:\n", + " print(\"\\treading \" + f, end = '')\n", + " df, t = read_cudf(f)\n", + " print(\" ... in time of \" + str(t)+ \" seconds\")\n", + " data.append(df)\n", + "\n", + "taxi_gdf = cudf.concat(data)\n", + "\n", + "end_t = time.time()\n", + "\n", + "print(f\"loaded {len(taxi_gdf):,} records in {(end_t - start_t):2f} seconds\")\n", + "\n", + "del data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_gdf.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sort Comparisons - Single Field" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sp = taxi_pdf.sort_values(by='trip_distance',ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sp.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sg = taxi_gdf.sort_values(by='trip_distance',ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sg.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Group By - Single Column " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "gbp = taxi_pdf.groupby('passenger_count').count()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gbp.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "gbg = taxi_gdf.groupby('passenger_count').count()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gbg.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fun with Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "print(f\"Max fare was ${taxi_pdf['fare_amount'].max():,}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "print(f\"Max fare was ${taxi_gdf['fare_amount'].max():,}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# looking at that huge fare\n", + "maxf = taxi_gdf['fare_amount'].max()\n", + "taxi_gdf.query('fare_amount == @maxf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Farthest trip was {taxi_gdf['trip_distance'].max():,} miles\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# How long did it take to drive that distance?\n", + "maxd= taxi_gdf['trip_distance'].max()\n", + "taxi_gdf.query('trip_distance == @maxd')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Changing data types" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# change some data types\n", + "taxi_gdf = taxi_gdf.astype({'tpep_pickup_datetime':'datetime64[ms]', 'tpep_dropoff_datetime':'datetime64[ms]'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Filtering data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# filter out records with missing or outlier values\n", + "query_frags = (\"(fare_amount > 0 and fare_amount < 500) \" +\n", + " \"and (passenger_count > 0 and passenger_count < 6) \" +\n", + " \"and (pickup_longitude > -75 and pickup_longitude < -73) \" +\n", + " \"and (dropoff_longitude > -75 and dropoff_longitude < -73) \" +\n", + " \"and (pickup_latitude > 40 and pickup_latitude < 42) \" +\n", + " \"and (dropoff_latitude > 40 and dropoff_latitude < 42)\" +\n", + " \"and (pickup_latitude != dropoff_latitude) \" +\n", + " \"and (pickup_longitude != dropoff_longitude)\"\n", + " )\n", + "\n", + "taxi_gdf = taxi_gdf.query(query_frags)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add some new features" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# easier to reference time by YYYY MM DD version a time stamps\n", + "taxi_gdf['hour'] = taxi_gdf['tpep_pickup_datetime'].dt.hour\n", + "taxi_gdf['year'] = taxi_gdf['tpep_pickup_datetime'].dt.year\n", + "taxi_gdf['month'] = taxi_gdf['tpep_pickup_datetime'].dt.month\n", + "taxi_gdf['day'] = taxi_gdf['tpep_pickup_datetime'].dt.day\n", + "taxi_gdf['diff'] = taxi_gdf['tpep_dropoff_datetime'].astype('int64') - taxi_gdf['tpep_pickup_datetime'].astype('int64')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def day_of_the_week_kernel(day, month, year, day_of_week):\n", + " for i, (d_1, m_1, y_1) in enumerate(zip(day, month, year)):\n", + " if month[i] < 3:\n", + " shift = month[i]\n", + " else:\n", + " shift = 0\n", + " Y = year[i] - (month[i] < 3)\n", + " y = Y - 2000\n", + " c = 20\n", + " d = day[i]\n", + " m = month[i] + shift + 1\n", + " day_of_week[i] = (d + math.floor(m * 2.6) + y + (y // 4) + (c // 4) - 2 * c) % 7\n", + " \n", + "taxi_gdf = taxi_gdf.apply_rows(\n", + " day_of_the_week_kernel\n", + " , incols = ['day', 'month', 'year']\n", + " , outcols = {'day_of_week': np.int32}\n", + " , kwargs = {}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_gdf.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basic Statistical Data Science\n", + "\n", + "### Look at some feature - by Hour" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 1) Let's look at a plot of fare by hour\n", + "%matplotlib inline\n", + "taxi_gdf.groupby('hour').fare_amount.mean().to_pandas().sort_index().plot(legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 2) Tips by hour\n", + "%matplotlib inline\n", + "taxi_gdf.groupby('hour').tip_amount.mean().to_pandas().sort_index().plot(legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 3) Number of taxi rides by Hour\n", + "%matplotlib inline\n", + "taxi_gdf['hour'].groupby('hour').count().to_pandas().sort_index().plot(legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Look at what days are the busiest\n", + "%matplotlib inline\n", + "taxi_gdf.groupby('day_of_week').day_of_week.count().to_pandas().sort_index().plot(legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# What days have the best tips\n", + "%matplotlib inline\n", + "taxi_gdf.groupby('day_of_week').tip_amount.mean().to_pandas().sort_index().plot(legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dropping Columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_gdf = taxi_gdf.drop('store_and_fwd_flag', axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_gdf.dtypes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# cuML - Accelerated Machine Learning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### In Corey's talk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "# cuGraph - Accelerated Graph Analytics\n", + "\n", + "We need vertex IDs to be integer values but what we have are lat-long pairs (float64). There are two way that we can address the issue. The hard way and an easy way" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cugraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_subset = taxi_gdf[['pickup_longitude', 'pickup_latitude','dropoff_longitude', 'dropoff_latitude', 'trip_distance']].reset_index()\n", + "taxi_subset['count'] = 1\n", + "del taxi_gdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create vertices and edges the hard way" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create node ID from lat-long combinatiuons\n", + "nodes = [\n", + " taxi_subset[['pickup_longitude', 'pickup_latitude']].drop_duplicates().rename(columns={'pickup_longitude': 'long', 'pickup_latitude': 'lat'})\n", + " , taxi_subset[['dropoff_longitude', 'dropoff_latitude']].drop_duplicates().rename(columns={'dropoff_longitude': 'long', 'dropoff_latitude': 'lat'})\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nodes = cudf.concat(nodes).drop_duplicates().reset_index(drop=True).reset_index().rename(columns={'index': 'id'})\n", + "nodes.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Total number of geo points in the dataset: {0:,}'.format(len(nodes)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "edges = (\n", + " taxi_subset[['pickup_longitude', 'pickup_latitude','dropoff_longitude', 'dropoff_latitude', 'trip_distance']]\n", + " .drop_duplicates()\n", + " .rename(columns={'pickup_longitude': 'long', 'pickup_latitude': 'lat'})\n", + " .merge(nodes, on=['lat', 'long'])\n", + " .rename(columns={'long': 'pickup_longitude', 'lat': 'pickup_latitude', 'id': 'pickup_id', 'dropoff_longitude': 'long', 'dropoff_latitude': 'lat'})\n", + " .merge(nodes, on=['lat', 'long'])\n", + " .rename(columns={'long': 'dropoff_longitude', 'lat': 'dropoff_latitude', 'id': 'dropoff_id'})\n", + ")[['pickup_id', 'dropoff_id', 'trip_distance']]\n", + "\n", + "edges.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "len(edges)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g = cugraph.Graph()\n", + "g.from_cudf_edgelist(edges, source='pickup_id', destination='dropoff_id')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pagerank" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "page = cugraph.pagerank(g, alpha=.85, max_iter=1000, tol=1.0e-05)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "page.sort_values(by='pagerank', ascending=False).head(5).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Now the easy way" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g2 = cugraph.Graph()\n", + "g2.from_cudf_edgelist(taxi_subset, \n", + " source=['pickup_longitude', 'pickup_latitude'], \n", + " destination=['dropoff_longitude', 'dropoff_latitude'], \n", + " edge_attr='count',\n", + " renumber=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "page = cugraph.pagerank(g2, alpha=.85, max_iter=1000, tol=1.0e-05)\n", + "page.sort_values(by='pagerank', ascending=False).head(5).to_pandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cugraph_dev", + "language": "python", + "name": "cugraph_dev" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/conference_notebooks/TMLS_2020/notebooks/Taxi/img/TMLS.png b/conference_notebooks/TMLS_2020/notebooks/Taxi/img/TMLS.png new file mode 100644 index 00000000..44a8234f Binary files /dev/null and b/conference_notebooks/TMLS_2020/notebooks/Taxi/img/TMLS.png differ diff --git a/conference_notebooks/KDD_2020/notebooks/Taxi/nyctaxi_data.py b/conference_notebooks/TMLS_2020/notebooks/Taxi/nyctaxi_data.py similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Taxi/nyctaxi_data.py rename to conference_notebooks/TMLS_2020/notebooks/Taxi/nyctaxi_data.py diff --git a/getting_started_materials/README.md b/getting_started_materials/README.md new file mode 100644 index 00000000..212fcd1c --- /dev/null +++ b/getting_started_materials/README.md @@ -0,0 +1,199 @@ +# **Intro to RAPIDS Course for Content Creators** +## Introduction + +In this intro course, we cover the basic skills you need to accelerate your data analytics and ML pipeline with RAPIDS. Get to know the RAPIDS core libraries: cuDF, cuML, cuGraph, and cuXFilter, as well as community libraries, including: XGBoost, Dask, and BlazingSQL, to accelerate how you: +- Ingest data +- Perform your prepare your data with ETL +- Run modeling, inferencing, and predicting algorithms on the data in a GPU dataframe +- Visualize your data throughout the process. + +Each of the three modules should take less than 2 hours to complete. When complete, you should be able to: +1. Take an existing workflow in a data science or ML pipeline and use a RAPIDS to accelerate it with your GPU +1. Create your own workflows from scratch + +This course was written with the expectation that you know Python and Jupyter Lab. It is helpful, but not necessary, to have at least some understanding of Pandas, Scikit Learn, NetworkX, and Datashader. + +[You should be able to run these exercises and use these libraries on any machine with these prerequisites](https://rapids.ai/start.html#PREREQUISITES), which namely are +- OS of Ubuntu 16.04 or 18.04 or CentOS7 with gcc 5.4 & 7.3 +- an NVIDIA GPU of Pascal Architecture or better (basically 10xx series or newer) + +RAPIDS works on a broad range of GPUs, including NVIDIA GeForce, TITAN, Quadro, Tesla, A100, and DGX systems +## NVIDIA Titan RTX +- [NVIDIA Spot on Titan RTX and RAPIDS](https://www.youtube.com/watch?v=tsWPeZTLpkU) +- [t-SNE 600x Speed up on Titan RTX](https://www.youtube.com/watch?v=_4OehmMYr44) + + + +## Questions? +There are a few channels to ask questions or start a discussion: +- [GoAI Slack](https://join.slack.com/t/rapids-goai/shared_invite/enQtMjE0Njg5NDQ1MDQxLTJiN2FkNTFkYmQ2YjY1OGI4NTc5Y2NlODQ3ZDdiODEwYmRiNTFhMzNlNTU5ZWJhZjA3NTg4NDZkMThkNTkxMGQ) to discuss issues and troubleshoot with the RAPIDS community +- [RAPIDS GitHub](https://github.com/rapidsai) to submit feature requests and report bugs + +# **Getting Started** +There are 3 steps to installing RAPIDS +1. Provisioning a GPU enabled workspace +1. Installing RAPIDS Prerequisites +1. Installing RAPIDS libraries + +## 1. Provisioning a GPU-Enabled Workspace +When installing RAPIDS, first provision a RAPIDS Compatible GPU. The GPU must be **NVIDIA Pascal™ or better with compute capability 6.0+**. Here is a list of compatible GPUs. This GPU can local, like in a workstation or server, or in the Cloud. GPUs can reside in: +- Shared cloud +- Dedicated cloud +- Local workspace + +### Using Cloud Instance(s) +There are two option for using Cloud Instances: +1. Shared, **free** instances like app.blazingsql.com and Google Colab +1. Dedicated, **paid** [usually] [GPU instances from providers like AWS, Azure, GCP, Paperspace, and more](https://rapids.ai/cloud.html) + +### Shared Cloud via Free Instances +Free cloud instances have quick start capabilities or scripts to ease onboarding. +- **Google Colab**: The installation will take about 8 minutes. First select a GPU instance from Runtime type. After, use the provided RAPIDS installation scripts, found here by copying and pasting into a code cell. Please note, RAPIDS will not run on an unsupported GPU instance like K80 - ONLY the T4, P4, and P100s (Refer to `!nvidia-smi`). If you are given a K80, please factory reset your instance and the check again. +- **app.blazingsql.com**: these instances are preloaded with RAPIDS and you can start right away + +### Dedicated Cloud via Paid Instances +There are several ways to provision a dedicated cloud GPU workspace, and our instructions are found here. Your OS will need to be **Ubuntu or RHEL/CentOS 7**. For installing RAPIDS, These instances follow the same installation process as a local instance. + +## 2. Installing RAPIDS Prerequisites +### Downloads +You can satisfy your prerequisites to install RAPIDS by: +1. Install OS and GPU Drivers and OS +1. Install Packaging Environment (Docker or Conda) + +### OS and GPU Drivers + Please ensure that your workstation has these installed as our prerequisites are as follows: +- GPU: NVIDIA Pascal™ or better with compute capability 6.0+ (completed above) +- OS: Ubuntu 16.04/18.04 or CentOS 7 with gcc/++ 7.5+ + - See RSN 1 for details on our recent update to gcc/++ 7.5 + - RHEL 7 support is provided through CentOS 7 builds/installs +- CUDA & NVIDIA Drivers: One of the following supported versions: + - 10.0 & v410.48+ (valid option for version 0.14 and earlier only) + - 10.1.2 & v418.87+ + - 10.2 & v440.33+ + - 11.0 (valid option for version 0.16 and later) +- Python + - 3.6 (valid option for version 0.14 and earlier) + - 3.7 + - 3.8 (valid option for version 0.16 and later) + + +### Install Packaging Environment (Docker or Conda) +Depending on if you prefer to use RAPIDS with Docker or Conda, you will need these also installed: + +- If Docker: Docker CE v19.03+ and nvidia-container-toolkit + - Legacy Support - Docker CE v17-18 and nvidia-docker2 + +- If Conda, please install + - [Miniconda](https://conda.io/miniconda.html) for a minimal conda installation + - [Anaconda](https://www.anaconda.com/download) for full conda installation + - [Mamba inside of conda](https://github.com/TheSnakePit/mamba) for a faster conda solving (untested) + +### 3. Install RAPIDS Libraries + +- Use the [Interactive RAPIDS release selector](https://rapids.ai/start.html#rapids-release-selector) to install RAPIDS as you want it. The install script at the bottom will update as you change your install parameters of **method, desired RAPIDS release, desired RAPIDS packages, Linux verison, and CUDA version**. Here is an image of it below. + +# +Great! Now that you're done getting up and running, let's move on to the Data Science! + +## **1. The Basics of RAPIDS: cuDF and Dask** +### Introduction +cuDF lets you create and manipulate your dataframes on GPUs. All other RAPIDS libraries use cuDF to model, infer, regress, reduce, and predict outcomes. The cuDF API is designed to be similar to Pandas with minimal code changes. +- [latest RAPIDS cuDF documentation](https://docs.rapids.ai/api) +- [RAPIDS cuDF GitHub repo](https://github.com/rapidsai/cudf) + +There are situations where the dataframe is larger than available GPU memory. Dask is used to help RAPIDS algorithms scale up through distributed computing. Whether you have a single GPU, multiple GPUs, or clusters of multiple GPUs, Dask is used for distributed computing calculations and orchstrattion of the processing of GPU dataframe, no matter the size, just like a regular CPU cluster. + +Let's get started with a couple videos! + +### Videos + +| Video Title | Description | +|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Video- Getting Started with RAPIDS](https://www.youtube.com/watch?v=T2AU0iVbY5A). | Walks through the [01_Introduction_to_RAPIDS](intro_tutorials_and_guides/01_Introduction_to_RAPIDS.ipynb) notebook which shows, at a high level, what each of the packages in RAPIDS are as well as what they do. | +| [Video - RAPIDS: Dask and cuDF NYCTaxi Screencast](https://www.youtube.com/watch?v=gV0cykgsTPM) | Shows you have you can use RAPIDS and Dask to easily ingest and model a large dataset (1 year's worth of NYCTaxi data) and then create a model around the question "when do you get the best tips". This same workload can be done on any GPU. | + +### Learning Notebooks + + +| Notebook Title | Description | +|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [01_Introduction_to_RAPIDS](intro_tutorials_and_guides/01_Introduction_to_RAPIDS.ipynb) | This notebook shows at a high level what each of the packages in RAPIDS are as well as what they do. | +| [02_Introduction_to_cuDF](intro_tutorials_and_guides/02_Introduction_to_cuDF.ipynb) | This notebook shows how to work with cuDF DataFrames in RAPIDS. | +| [03_Introduction_to_Dask](intro_tutorials_and_guides/03_Introduction_to_Dask.ipynb) | This notebook shows how to work with Dask using basic Python primitives like integers and strings. | +| [04_Introduction_to_Dask_using_cuDF_DataFrames](intro_tutorials_and_guides/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb) | This notebook shows how to work with cuDF DataFrames using Dask. | +| [Guide to UDFs](https://github.com/rapidsai/cudf/blob/branch-0.18/docs/cudf/source/guide-to-udfs.ipynb) | This notebook provides and overview of User Defined Functions with cuDF | + + + +### Extra credit and Exercises +- [10 minute review of cuDF](https://github.com/rapidsai/cudf/blob/branch-0.18/docs/cudf/source/10min.ipynb) +- [Extra Credit - 10 minute guide to cuDF and cuPY](https://github.com/rapidsai/cudf/blob/branch-0.18/docs/cudf/source/10min-cudf-cupy.ipynb) +- [Extra Credit - Multi-GPU with Dask-cuDF](https://rapidsai.github.io/projects/cudf/en/0.18.0/dask-cudf.html) +- [Review and Exercises 1- Review of cuDF](../the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/01-Intro_to_cuDF.ipynb) +- [Review and Exercises 2- Creating User Defined Functions (UDFs) in cuDF](../the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/02-Intro_to_cuDF_UDFs.ipynb) + +## **2. Accelerating those Algorithms: cuML and XGBoost** +### Introduction +Congrats learning the basics of cuDF and Dask. Now let's take a look at cuML + +cuML runs many common scikit-learn algorithms and methods on cuDF dataframes to model, infer, regress, reduce, and predict outcomes on the data. [Among the ever growing suite of algorithms, you can perform several GPU accelerated algortihms for each of these methods:]() + +- Classification / Regression +- Inference +- Clustering +- Decomposition & Dimensionality Reduction +- Time Series + +While we look at cuML , we'll take a look at how further on how to increase your speed up with [XGBoost](https://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/), scale it out with Dask XGboost, then see how to use cuML for Dimensionality Reduction and Clustering. +- [latest RAPIDS cuML documentation](https://docs.rapids.ai/api) +- [RAPIDS cuML GitHub repo](https://github.com/rapidsai/cuml) + +Let's look at a few video walkthroughs of XGBoost, as it may be an unfamiliar concept to some, and then experience how to use the above in your learning notebooks. + +### Videos + +| Video Title | Description | +|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Video - Introduction to XGBoost](https://www.youtube.com/watch?v=EQR3bP6XFW0) | Walks through the [07_Introduction_to_XGBoost](getting_started_notebooks/intro_tutorials/07_Introduction_to_XGBoost.ipynb) notebook and shows how to work with GPU accelerated XGBoost in RAPIDS. | +| [Video - Introduction to Dask XGBoost](https://www.youtube.com/watch?v=q8HfEZythjM) | Walks through the [08_Introduction_to_Dask_XGBoost](getting_started_notebooks/intro_tutorials/08_Introduction_to_Dask_XGBoost.ipynb) notebook and hows how to work with Dask XGBoost in RAPIDS. This can be run on a single GPU as well and is useful when your dataset is larger than the memory size of your GPU. Will be deprecated in 0.15, and removed in 0.16 | + +### Learning Notebooks + +| Notebook Title | Description | +|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [06_Introduction_to_Supervised_Learning](intro_tutorials_and_guides/06_Introduction_to_Supervised_Learning.ipynb) | This notebook shows how to do GPU accelerated Supervised Learning in RAPIDS. | +| [07_Introduction_to_XGBoost](intro_tutorials_and_guides/07_Introduction_to_XGBoost.ipynb) | This notebook shows how to work with GPU accelerated XGBoost in RAPIDS. | +| [09_Introduction_to_Dimensionality_Reduction](intro_tutorials_and_guides/09_Introduction_to_Dimensionality_Reduction.ipynb) | This notebook shows how to do GPU accelerated Dimensionality Reduction in RAPIDS. | +| [10_Introduction_to_Clustering](intro_tutorials_and_guides/10_Introduction_to_Clustering.ipynb) | This notebook shows how to do GPU accelerated Clustering in RAPIDS. | + + +### Extra credit and Exercises + +- [10 Review of cuML Estimators](https://github.com/rapidsai/cuml/blob/branch-0.18/docs/source/estimator_intro.ipynb) + +- [Review and Exercises 1 - Linear Regression](../the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/01-Introduction-LinearRegression-Hyperparam.ipynb) + +- [Review and Exercises 2 - Logistic Regression](../the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/02-LogisticRegression.ipynb) + +- [Review and Exercises 3- Intro to UMAP](../the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/03-UMAP.ipynb) + +### RAPIDS cuML Example Notebooks +- [Index of Notebooks](https://github.com/rapidsai/notebooks#cuml-notebooks) +- [Direct Link to Notebooks](https://github.com/rapidsai/notebooks/tree/branch-0.18/cuml) + + +### Conclusion to Sections 1 and 2 +Here ends the basics of cuDF, cuML, Dask, and XGBoost. These are libraries that everyone who uses RAPIDS will go to every day. Our next sections will cover libraries that are more niche in usage, but are powerful to accomplish your analytics. + +## **3. Graphs on RAPIDS: Intro to cuGraph** + +It is often useful to look at the relationships contained in the data, which we do that thought the use of graph analytics. Representing data as a graph is an extremely powerful techniques that has grown in popularity. Graph analytics are used to helps Netflix recommend shows, Google rank sites in their search engine, connects bits of discrete knowledge into a comprehensive corpus, schedules NFL games, and can even help you optimize seating for your wedding (and it works too!). [KDNuggests has a great in depth guide to graphs here](https://www.kdnuggets.com/2017/12/graph-analytics-using-big-data.html). Up until now, running a graph analytics was a painfully slow, particularly as the size of the graph (number of nodes and edges) grew. + +[RAPIDS' cuGraph library makes graph analytics effortless, as it boasts some of our best speedups](https://www.zdnet.com/article/nvidia-rapids-cugraph-making-graph-analysis-ubiquitous/), (up to 25,000x). To put it in persepctive, what can take over 20 hours, cuGraph can lets you do in less than a minute (3 seconds). In this section, we'll look at some examples of cuGraph methods for your graph analytics and look at a simple use case. +- [latest RAPIDS cuGraph documentation](https://docs.rapids.ai/api) +- [RAPIDS cuGraph GitHub repo](https://github.com/rapidsai/cugraph) + +### RAPIDS cuGraph Example Notebooks +- [Index of Notebooks](https://github.com/rapidsai/notebooks/#cugraph-notebooks) +- [Direct Link to Notebooks](https://github.com/rapidsai/notebooks/tree/branch-0.18/cugraph) +""" \ No newline at end of file diff --git a/getting_started_notebooks/basics/Dask_Hello_World.ipynb b/getting_started_materials/hello_worlds/Dask_Hello_World.ipynb similarity index 100% rename from getting_started_notebooks/basics/Dask_Hello_World.ipynb rename to getting_started_materials/hello_worlds/Dask_Hello_World.ipynb diff --git a/getting_started_notebooks/basics/blazingsql/README.md b/getting_started_materials/hello_worlds/blazingsql/README.md similarity index 100% rename from getting_started_notebooks/basics/blazingsql/README.md rename to getting_started_materials/hello_worlds/blazingsql/README.md diff --git a/getting_started_notebooks/basics/blazingsql/federated_query_demo.ipynb b/getting_started_materials/hello_worlds/blazingsql/federated_query_demo.ipynb similarity index 100% rename from getting_started_notebooks/basics/blazingsql/federated_query_demo.ipynb rename to getting_started_materials/hello_worlds/blazingsql/federated_query_demo.ipynb diff --git a/getting_started_notebooks/basics/blazingsql/getting_started_with_blazingsql.ipynb b/getting_started_materials/hello_worlds/blazingsql/getting_started_with_blazingsql.ipynb similarity index 100% rename from getting_started_notebooks/basics/blazingsql/getting_started_with_blazingsql.ipynb rename to getting_started_materials/hello_worlds/blazingsql/getting_started_with_blazingsql.ipynb diff --git a/getting_started_notebooks/basics/hello_streamz.ipynb b/getting_started_materials/hello_worlds/hello_streamz.ipynb similarity index 100% rename from getting_started_notebooks/basics/hello_streamz.ipynb rename to getting_started_materials/hello_worlds/hello_streamz.ipynb diff --git a/getting_started_materials/intro_tutorials_and_guides/01_Introduction_to_RAPIDS.ipynb b/getting_started_materials/intro_tutorials_and_guides/01_Introduction_to_RAPIDS.ipynb new file mode 100644 index 00000000..f08767b4 --- /dev/null +++ b/getting_started_materials/intro_tutorials_and_guides/01_Introduction_to_RAPIDS.ipynb @@ -0,0 +1,1101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Introduction to RAPIDS\n", + "#### By Paul Hendricks\n", + "-------\n", + "\n", + "While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For the same reasons, scientific computing and deep learning has turned to NVIDIA GPU acceleration, data analytics and machine learning where GPU acceleration is ideal. \n", + "\n", + "NVIDIA created RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has Pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. RAPIDS integrates easily into the world’s most popular data science Python-based workflows. RAPIDS accelerates data science end-to-end – from data prep, to machine learning, to deep learning. And through Arrow, Spark users can easily move data into the RAPIDS platform for acceleration.\n", + "\n", + "In this notebook, we will discuss and show at a high level what each of the packages in the RAPIDS are as well as what they do. Subsequent notebooks will dive deeper into the various areas of data science and machine learning and show how you can use RAPIDS to accelerate your workflow in each of these areas.\n", + "\n", + "**Table of Contents**\n", + "\n", + "* [Introduction to RAPIDS](#introduction)\n", + "* [Setup](#setup)\n", + "* [Pandas](#pandas)\n", + "* [cuDF](#cudf)\n", + "* [Scikit-Learn](#scikitlearn)\n", + "* [cuML](#cuml)\n", + "* [Dask](#dask)\n", + "* [Dask cuDF](#daskcudf)\n", + "* [Conclusion](#conclusion)\n", + "\n", + "Before going any further, let's make sure we have access to `matplotlib`, a popular Python library for visualizing data. The Conda install of RAPIDS no longer includes it by default, but the Docker install does." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "try:\n", + " import matplotlib\n", + "except ModuleNotFoundError:\n", + " os.system('conda install -y matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Setup\n", + "\n", + "This notebook was tested using the [RAPIDS Stable Conda channel, versions 0.17 and 0.18](https://anaconda.org/rapidsai/rapids), and the following Docker containers:\n", + "\n", + "* `rapidsai/rapidsai-dev:0.18-cuda10.2-devel-ubuntu18.04-py3.7` container from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai)\n", + "\n", + "This notebook was run on the NVIDIA GV100 GPU, the Quardo RTX8000, and the T4. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", + "\n", + "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", + "\n", + "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tue Apr 6 13:15:36 2021 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "|===============================+======================+======================|\n", + "| 0 Quadro RTX 8000 On | 00000000:42:00.0 Off | Off |\n", + "| 33% 36C P8 41W / 260W | 34515MiB / 48601MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 1 Quadro RTX 8000 On | 00000000:43:00.0 Off | Off |\n", + "| 33% 42C P8 42W / 260W | 211MiB / 48598MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: GPU Memory |\n", + "| GPU PID Type Process name Usage |\n", + "|=============================================================================|\n", + "| 0 4987 C .../miniconda3/envs/rapids-0.16/bin/python 22299MiB |\n", + "| 0 23869 C .../miniconda3/envs/rapids-0.18/bin/python 721MiB |\n", + "| 0 89935 C ...an/miniconda3/envs/0.17-test/bin/python 11483MiB |\n", + "| 1 2156 G /usr/lib/xorg/Xorg 39MiB |\n", + "| 1 2313 G /usr/bin/gnome-shell 85MiB |\n", + "| 1 22643 G /usr/lib/xorg/Xorg 64MiB |\n", + "| 1 22689 G /usr/bin/gnome-shell 8MiB |\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's see what CUDA version we have. If it's not found, that's okay, you may not have nvcc or be in a Docker container." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2017 NVIDIA Corporation\n", + "Built on Fri_Nov__3_21:07:56_CDT_2017\n", + "Cuda compilation tools, release 9.1, V9.1.85\n" + ] + } + ], + "source": [ + "!nvcc --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's load some helper functions from `matplotlib` and configure the Jupyter Notebook for visualization." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see how much GPU memory is available. Since this is a tutorial, we want to keep that data as big as possible without you running out of memory (OOM)." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "your GPU has 48 GB\n" + ] + } + ], + "source": [ + "from pynvml.smi import nvidia_smi\n", + "nvsmi = nvidia_smi.getInstance()\n", + "gpus = nvsmi.DeviceQuery()\n", + "\n", + "gpu_mem = int(gpus['gpu'][0]['fb_memory_usage']['total']/1000) #gets your memory size of your first found GPU in GB\n", + "print(\"your GPU has\", gpu_mem, \"GB\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Pandas\n", + "\n", + "Data scientists typically work with two types of data: unstructured and structured. Unstructured data often comes in the form of text, images, or videos. Structured data - as the name suggests - comes in a structured form, often represented by a table or CSV. We'll focus the majority of these tutorials on working with these types of data.\n", + "\n", + "There exist many tools in the Python ecosystem for working with structured, tabular data but few are as widely used as Pandas. Pandas represents data in a table and allows a data scientist to manipulate the data to perform a number of useful operations such as filtering, transforming, aggregating, merging, visualizing and many more. \n", + "\n", + "For more information on Pandas, check out the excellent documentation: http://pandas.pydata.org/pandas-docs/stable/\n", + "\n", + "Below we show how to create a Pandas DataFrame, an internal object for representing tabular data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pandas Version: 1.1.4\n", + " key value\n", + "0 0 10.0\n", + "1 0 11.0\n", + "2 2 12.0\n", + "3 2 13.0\n", + "4 3 14.0\n" + ] + } + ], + "source": [ + "import pandas as pd; print('Pandas Version:', pd.__version__)\n", + "\n", + "\n", + "# here we create a Pandas DataFrame with\n", + "# two columns named \"key\" and \"value\"\n", + "df = pd.DataFrame()\n", + "df['key'] = [0, 0, 2, 2, 3]\n", + "df['value'] = [float(i + 10) for i in range(5)]\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can perform many operations on this data. For example, let's say we wanted to sum all values in the in the `value` column. We could accomplish this using the following syntax:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60.0\n" + ] + } + ], + "source": [ + "aggregation = df['value'].sum()\n", + "print(aggregation)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## cuDF\n", + "\n", + "Pandas is fantastic for working with small datasets that fit into your system's memory. However, datasets are growing larger and data scientists are working with increasingly complex workloads - the need for accelerated compute arises.\n", + "\n", + "cuDF is a package within the RAPIDS ecosystem that allows data scientists to easily migrate their existing Pandas workflows from CPU to GPU, where computations can leverage the immense parallelization that GPUs provide.\n", + "\n", + "Below, we show how to create a cuDF DataFrame." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cuDF Version: 0.17.0a+382.gbd321d1e93\n", + " key value\n", + "0 0 10.0\n", + "1 0 11.0\n", + "2 2 12.0\n", + "3 2 13.0\n", + "4 3 14.0\n" + ] + } + ], + "source": [ + "import cudf; print('cuDF Version:', cudf.__version__)\n", + "\n", + "\n", + "# here we create a cuDF DataFrame with\n", + "# two columns named \"key\" and \"value\"\n", + "df = cudf.DataFrame()\n", + "df['key'] = [0, 0, 2, 2, 3]\n", + "df['value'] = [float(i + 10) for i in range(5)]\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, we can take this cuDF DataFrame and perform a `sum` operation over the `value` column. The key difference is that any operations we perform using cuDF use the GPU instead of the CPU." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60.0\n" + ] + } + ], + "source": [ + "aggregation = df['value'].sum()\n", + "print(aggregation)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note how the syntax for both creating and manipulating a cuDF DataFrame is identical to the syntax necessary to create and manipulate Pandas DataFrames; the cuDF API is based on the Pandas API. This design choice minimizes the cognitive burden of switching from a CPU based workflow to a GPU based workflow and allows data scientists to focus on solving problems while benefitting from the speed of a GPU!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Scikit-Learn\n", + "\n", + "After our data has been preprocessed, we often want to build a model so as to understand the relationships between different variables in our data. Scikit-Learn is an incredibly powerful toolkit that allows data scientists to quickly build models from their data. Below we show a simple example of how to create a Linear Regression model." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NumPy Version: 1.19.5\n" + ] + } + ], + "source": [ + "import numpy as np; print('NumPy Version:', np.__version__)\n", + "\n", + "\n", + "# create the relationship: y = 2.0 * x + 1.0\n", + "if(gpu_mem <= 16):\n", + " n_rows = 35000 # let's use 35 thousand data points. Very small GPU memory sizes will require you to reduce this number further \n", + "elif(gpu_mem > 17):\n", + " n_rows = 100000 # let's use 100 thousand data points\n", + "w = 2.0\n", + "x = np.random.normal(loc=0, scale=1, size=(n_rows,))\n", + "b = 1.0\n", + "y = w * x + b\n", + "\n", + "# add a bit of noise\n", + "noise = np.random.normal(loc=0, scale=2, size=(n_rows,))\n", + "y_noisy = y + noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualize our data using the `matplotlib` library." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAD4CAYAAAAJmJb0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA7OUlEQVR4nO2deWATZf7/30/Sgaa0NC03xXL4c0GgUKBcAgqCwH5FtoKAcomu4rGuyhereHGpC4Iuuh6LgjeoFZCK4oqcq4CA1LYoCl8vQApCpU1LD9o0eX5/pDMk6UwyOSaT4/P6B+aZycyTpHnPZz7P52CccxAEQRDRiUHvCRAEQRDaQSJPEAQRxZDIEwRBRDEk8gRBEFEMiTxBEEQUE6f3BJxp2bIl79Spk97TIAiCiCjy8/P/4Jy3ktsXViLfqVMnHDx4UO9pEARBRBSMseNK+8hdQxAEEcWQyBMEQUQxJPIEQRBRTFj55OWwWq04efIkLly4oPdUiAghPj4eHTp0gCAIek+FIHQn7EX+5MmTSEpKQqdOncAY03s6RJjDOce5c+dw8uRJdO7cWe/pEITuhL3IX7hwgQSeUA1jDC1atEBJSYneUyHCmLyCYizfchSnLDVobzYhZ0xXZPdJ03tamhD2Ig+ABJ7wCfp7ITyRV1CMhz/8FjVWGwCg2FKDhz/8FgCiUuhp4ZUgiJhi+ZajksCL1FhtWL7lqE4z0hYSeS9YLBa8/PLLek8Db775Ju655x6Px+zatQt79+6VtleuXIm33347aHM4duwYevbsKbtv/vz52LZtW9CuRRBaccpS49N4pBMR7ho9EUX+7rvvbrTPZrPBaDQG7Vr19fWIi/P/K9m1axcSExNxxRVXAADuvPPOYE3NK4sXLw7ZtQgiENqbTSiWEfT2ZpMOs9EesuS9MG/ePPz888/IzMxETk4Odu3ahREjRmDq1KnIyMhoZN0+88wzWLhwIQDg559/xtixY9GvXz8MGzYMR44caXT+hQsXYvbs2Rg9ejRmzpyJkpISTJw4Ef3790f//v2xZ8+eRq/5+OOPMXDgQPTp0wejRo3CmTNncOzYMaxcuRIrVqxAZmYmvvzySyxcuBDPPPMMAKCwsBCDBg1Cr169cP3116OsrAwAMHz4cDz00EMYMGAA/vSnP+HLL78EABw+fBgDBgxAZmYmevXqhR9//BGA48Z2++23o0ePHhg9ejRqahw/llmzZmH9+vUAHOUpxHMOGDAAP/30U5C+DYIInJwxXWESXI0zk2BEzpiuOs1IWyLKkr///vtRWFgY1HNmZmbiueeeU9y/dOlSfPfdd9J1d+3ahQMHDuC7775D586dcezYMcXXzp49GytXrsRll12G/fv34+6778aOHTsaHZefn4/du3fDZDJh6tSpmDNnDoYOHYoTJ05gzJgx+OGHH1yOHzp0KPbt2wfGGFavXo1ly5bh2WefxZ133onExEQ88MADAIDt27dLr5k5cyZeeOEFXHXVVZg/fz4WLVokve/6+nocOHAAn376KRYtWoRt27Zh5cqVuO+++zBt2jTU1dXBZrPhzJkz+PHHH/Hee+9h1apVmDx5MjZs2IDp06c3ek/NmzfHgQMH8Pbbb+P+++/HJ598ovg5EUQoERdXKbqGUGTAgAFeY7ArKyuxd+9eTJo0SRqrra2VPXb8+PEwmRyPitu2bcP3338v7auoqMD58+ddjj958iSmTJmC06dPo66uzutcysvLYbFYcNVVVwEAbr75Zpd5TZgwAQDQr18/6aY1ePBgPPXUUzh58iQmTJiAyy67DADQuXNnZGZmNjrenZtuukn6d86cOR7nRxChJrtPWtSKujsRJfKeLO5Q0qxZM+n/cXFxsNvt0raYmWu322E2m1U9eTifz26346uvvpJEX46///3v+N///V+MHz8eu3btktxD/tK0aVMAgNFoRH19PQBg6tSpGDhwIDZv3owxY8Zg9erV6NKli3SseLzornHHOYyRQhoJQj/IJ++FpKSkRpa0M23atMHZs2dx7tw51NbWSm6J5s2bo3Pnzli3bh0ARyZmUVGR1+uNHj0aL774orQtd5MoLy9HWprDCnnrrbe8zjU5ORkpKSmSv/2dd96RrHolfvnlF3Tp0gX33nsvxo8fj0OHDnmduzO5ubnSv4MHD/bptQRBBA8SeS+0aNECQ4YMQc+ePZGTk9NovyAImD9/PgYOHIhx48ahW7du0r61a9fitddeQ+/evdGjRw989NFHXq/3r3/9CwcPHkSvXr3QvXt3rFy5stExCxcuxKRJkzBs2DC0bNlSGr/uuuuwceNGaeHVmbfeegs5OTno1asXCgsLMX/+fI/zyM3NRc+ePZGZmYkjR45g5syZXufuTG1tLQYOHIjnn38eK1as8Om1BEEED8Y513sOEllZWdy9acgPP/yAyy+/XKcZEf4gNn9xvgGFGvq7CV9iqaRAqGCM5XPOs+T2RZRPniCIyCbWSgqEA+SuIYLOsWPHdLXiifAl1koKhANkyRMEETLkMk0B15IC5M4JLiTyBEGEhLyCYjAAcquAYkkBcucEHxJ5giBCwvItR2UFngFSSQFP7hxnkY8ma1/r90IiTxBESFCq8shx0UpXOqbYUoMhS3dIN4NwsvYDEelQPLnQwquOiNUifd3nCeeiZJ5ITEz0uD9UJZbVlCh2L6FMhAd5BcUYsnQHOs/bjCFLdyCvoNjj8ckm+Z67aU7VHz1VghQFcOGmw2GzeCuKdLGlBtxpjt4+C5FQLESTyOuInHDZbDbFfaEkVCK/ePFijBo1yuMxJPLhR15BMXLWF7mIW876IkVxyysoRlVdfaNxwcBcqj/KVYh0psZqg6XGKrtPj3rwgYp0KGrbR53I+2pdqGHNmjVS2d077rhDEuLExEQ89NBD6NevH0aNGoUDBw5g+PDh6NKlCzZt2gTA0ezjL3/5C8aOHYuuXbti0aJF0nlFa9q9fLHzPgBYtmwZMjIy0Lt3b8ybNw8AsGrVKvTv3x+9e/fGxIkTUV1d7fE9/Prrrxg8eDD69++Pxx9/XBqvrKzEyJEj0bdvX2RkZEhZue4llpWOcycxMRFz585F3759MXLkSKnXqlKpY/cSxQsWLJCuceTIEdkSyuvWrUPPnj3Ru3dvXHnllWq+QkKGQH4riz4+DKvN1cNutXEs+viw7PHLtxxtdDwAJMbHubglsvukYcmEDBfrXi161IMPVKSV5hzM9xJVIh/oo5McP/zwA3Jzc7Fnzx4UFhbCaDRi7dq1AICqqioMHz4c+fn5SEpKwmOPPYatW7di48aNLmUDDhw4gLVr16KwsBDr1q2De1aveMxTTz3lUoESAP7zn/8gLy8P+/fvR1FRER588EEAjsqRX3/9NYqKinD55Zfjtdde8/g+7rvvPtx11134+uuv0bZtW2k8Pj4eGzduxDfffIOdO3di7ty54Jxj6dKluPTSS1FYWIjly5crHudOVVUV+vbti2+++QZXXXWVdFObOXMmnn76aRw6dAgZGRkuNztnWrZsiW+++QZ33XUXnnnmGXTq1Al33nkn5syZg8LCQgwbNgyLFy/Gli1bUFRUJN1MCd8I9LdSVi1vTSuNK4meReb47D5p2DPvakWhT0kQGln7DBf99sEw7NQSqEiHorZ9VIm8Fv6t7du3Iz8/H/3790dmZia2b9+OX375BQDQpEkTjB07FgCQkZGBq666CoIgSM1ERK655hq0aNECJpMJEyZMwO7duxtdR6l88bZt23DLLbcgISEBAJCamgoA+O677zBs2DBkZGRg7dq1OHxY3oIS2bNnj1T+d8aMGdI45xyPPPIIevXqhVGjRqG4uBhnzpxp9Hq1xxkMBkyZMgUAMH36dOzevVu21PEXX3whO0+5ssfuDBkyBLNmzcKqVaukpyrCN9T+Vvyx9uVeo+SPVxrPKyhGtYx7xyQYseC6Hi7WvnNYptzNSoune5FARdr5yYXBsT6xZEIGRdcooYV/i3OOm2++GUuWLGm0TxAEqYyuwWCQyvAaDAapZC/QuNSuXOld53LD7teXO37WrFnIy8tD79698eabb2LXrl1e34vcedauXYuSkhLk5+dDEAR06tRJKpfsz3FqrukJubLH7qxcuRL79+/H5s2bkZmZicLCQrRo0cKn68Q63qJYTllqkGwSUFVXL7lZnCM/TIIBNVZ7o9cLBiBnXRGs9ouvyVlXhCZx8vak3J+He8SJiNkkYOH4Hsjuk+Yi1O7Pk84hl1pHrwSjAYnWte2DYskzxl5njJ1ljH3nNJbKGNvKGPux4d+UYFzLE1r4t0aOHIn169fj7NmzAIDS0lIcP37cp3Ns3boVpaWlqKmpQV5eHoYMGaL6taNHj8brr78u+dxLS0sBAOfPn0e7du1gtVol95EnhgwZgvfffx8AXI4vLy9H69atIQgCdu7cKb0397LFSse5Y7fbJR/7u+++i6FDh/pV6tgZ97n8/PPPGDhwIBYvXoyWLVvit99+U32uaEet1ar0mxDdHhyApcbayI8uCmi8wuKo1Q5J4C+OcVTVyT9xObtrxLnfn1vYSOABoFnTOBfhVsqeRcN7EEMb5Z5Y5n6gvEjsPh9vn6XoXvp16bXYM+/qsIvXD5a75k0AY93G5gHYzjm/DMD2hm1N0cK/1b17dzz55JMYPXo0evXqhWuuuQanT5/26RxDhw7FjBkzkJmZiYkTJyIrS7ZYnCxjx47F+PHjkZWVhczMTCk88oknnsDAgQNxzTXXuJQ3VuL555/HSy+9hP79+6O8vFwanzZtGg4ePIisrCysXbtWOpd7iWWl49xp1qwZDh8+jH79+mHHjh3S2oSvpY6dcS+hnJOTg4yMDPTs2RNXXnklevfurfpc0YwvfvYR3VpB7hlLTU3aU5YaWV+6P7hnunoSbvHpQ0645fB0PhvnHtcgtFjf04uglRpmjHUC8AnnvGfD9lEAwznnpxlj7QDs4px7VNtglBoOt0y4N998EwcPHnRpBBLNJCYmorKyUu9pxGSp4SFLd8iKWprZhD3zrpa2ldwhajGbBJy/UA+bj9phEowu1zQJRsn/rDR3Z8T30XneZlU3IwAwMuZxnu6fjYjazzJc0KvUcBvO+WkAaBD61gqTmw1gNgCkp6cHfNFY6t1IEM6oXZNSawnLIRgYqup8F/iUBAELruuhaICpWTerqq3HY3nfwuBFuJ2xcd7o5uKMr+t4esTiB4ru0TWc81c551mc86xWrVrpPZ2gM2vWrJix4gGEhRUfq6hdk/JmMbuTkiBIkR+J8XGy8e6eEIwMC67r4fEYNetmlhor1uw74dMNRoxWMSoEAPi6jqdHLH6gaCnyZxrcNGj496y/Jwqn7lVE+BOrfy9K2aKnymvQyWnxUEnw5EhJEFAwf7S0qOirL54BmNL/Esf81rllyK67uPjpLdPVH8Rs2uw+aXh2cm+f1usCXd/TMmzTV7QU+U0Abm74/80AvDc4lSE+Ph7nzp2L2R8u4Rucc5w7dw7x8fF6TyXkiDHXKQmusefiT0dcPFRrCYsx6c6YE+Tj2pXgANbsO4E5uYWyUTcLNx12iYLx5QbkjXo7x5zcQgxZugMAVMejy81Hbfx6XkExMhd9jvtzC31atLXbG4ejBougLLwyxt4DMBxASwBnACwAkAfgAwDpAE4AmMQ5L/V0HrmFV6vVipMnT6qKySYIwGEYdOjQAYLgmyBFC94WMb0tRgKAgQH/nJzZSNQyF32uWDvGXzz5zIONkTHcNPASPJmdIbtfblFaTLZK8xLI4W1BW27R9vjx4+jSpQvsdjsef/xxLF682K/3pfnCK+f8JoVdIwM9tyAIspmgBBFL+BI15m1x0NtiJADYOXDweGmjGu7BFngAIRN4wPHe1+w7AQDI6pjq8pmO6NYK7+3/rdEN0D2bFpBPpPK2oO38vRw7dqyRrmVnZ/vxjrwTtBDKYCBnyRNEJBOMkN68gmKXLFLA4W9ePqm37Lm8WfIpCQIqL1ghk7DaCDHLFECjOehBEyNDQpO4gG82BgY0jfPvCcJsElC4YHSjcW+hnWlmE96Z3AmXXnqpy/gbb7yBWbNm+TwPZzxZ8iTyBKERco/vzrHhas8xJ7dQVjzMJgE92idhz88XvaBDLk3FpKx0RbeBYGSw2Th88QCbBCMYOKrV3BVihOmD0rHzSInLzXv5lqOKN1fj+TP45eW/uoy99dZbmDlzZlDmQyJPEDoQaEJNIElLKQkCOHeEHRqYw/0CQLHHKuEb7p+jSTBiYr80bMgvdvm+rKXFOLXqDpfXrlmzBtOmTQvufDyIvO5x8gQRrQSaUBNI0lJZtRW19XZMH5SOpnEXQwEjSeANwQu0aYRJCEz65Iqi7TxSIkXwWM/9huNPj3MR+Pfeew+c86ALvDdI5AlCI5QSZwyMqYqbDjS7ssZqw9p9J0K6sBlMtHD/GxnD9EHpWDKhl9e4fJNgRIIPN4NiSw26xldg78MjcWr1XdJ4bm4uOOe48cYb/Z53IJDIE4RGKCX4eCuOJRKM7MpIsty1hgFomxyPrI6psnXcpw9KbxRH/w+Zm4HcA0ZdyXEcf3ocunfvLo2tX78enHNMnjxZy7flFfLJE4SG5BUUY+4HRbJx6XKFw5wjcTq1MGHvz6Uk1EFGbdy7iPv3MqJbK6zddwIcQF3JMZx+/R6X4zdu3KhZOKQStPBKEDqiFFrHAPy69FoAgVeGJPzD12gnkfa3voDTb9zrMtZqwuNodtlA6TsNJXpVoSQIAg63i1yUjYExdJ63Ge3NJlTX1ZPA64BzFyk1FBQUoG/fvi5jrW5YgIRL+wMIzwJmJPIEEQBqkp1yxnSVtdJFF46vVSEJdQhGhno7hzdnhbjA7em7zM/Pb9Tsp8NNT8CY3kfaDnYD7mBBC68E4Sdquwe5L/IFswgXIU9KggBweBV4wGF9K32Xy9dsBmPMReC3bNkCzjleyLlF0wbcwYIseYLwE6X+oXKP/87NbDrN2xyyOcYqnDfuNSuHaH27f5e1xUdwfM0DeNDp2DZTnsSlmYNR3cphrUdKgyISeSJq0boVpLdkJ7nrE6HBU20bMQPYyBgm9nP8PYguswsnf8CZtTkux18ybQkMHTKk4zwVKQtHKLqGiEqCUTfGG0plC8wmR4ljd6ExCUY0jTNoUsmRCIwLJw/jzNqHXMba3LQEzTr2UhX+qjcUXUPEHL64UvxFbkHVAGUrssZqowiaMOPCb9/hzLvzXMbaTF2K+Et6+tUbNhwhkSeiEq0aMTu7YBxdki5aeQmCgSo1RggXThzCmfcecRlrM20Z4jtczFhdMiFDsbKkc/hrsN2AwYZEnohKlGLTA4ljdncBlbn1O60hgQ97ao4V4mzuYy5jbac/g6Zp3VzGxPgnNeGv4e6jpxBKIioJtBGzHN6qQobP6lZsoSYgtebXAhx/epyLwLed8Sw6PvRJI4EHHN+l6NrzFv4qugHDFVp4JaICpUiWYEbXeOv844mmcQbU1pOlH2pqfsnH2XULXMbazlyBpu0u8/pa57ITIp7+BtTWwtECWnglohp3N4r4CL1kQkbQIiDyCophUNEAWwkS+NBS8/PXOLt+kctY25ufQ9O2/0/1OeRce0puQCB8XTck8kTEE4xIGrlKg2J7N3OCgPJqq08t8wh9qP7pAEo2LHYZazfrX2jSpovs8UodnZRce0o+epFgR3AFAxJ5IuIJNJJG7klgzb4T0n73BVYi/Kj+cR9KPnzSZazdLS+gSevOjY5lzJER6+xeyeqYqsq1J4556ucabuGVJPJExBNIJI2neu9E+FN9dC9K8v7hMtbu1hfRpFUn2eOnD0rHk9kZjcZ9KVEgHquUDBdulSgpuoaIePyNpBEteBL4yKPqyG4cf3qci8C3++vL6PjQJ4oCDwC5B35T1XpRDVpEcGkBWfJExOP8CK0mkkb0v1OJ38ij6ocv8MemZS5j7W/7N4QWl6h6vdXOZX3m/tQ58vXvTi8ohJKIKagDU2RS9f1/8cfHy13G2t+2EkKLDn6dz9kfn1dQjJx1RS5VKwUDw/JJvcNOsJWgEEoiqggkJt5bQhPgSHghF054UHl4J8598qzLWPvbX4GQGpj4Ooc7Ltx0uFFZYqudY+GmwxEj8p4gkSciCrlImJx1RQADrDbvqeZqIh9I4PWn8tvtOPfpCpex9rNXQUhpF7RriOGOSgXloqVaKIk8EVHIWeJyzSHc45VF65/kO7ypPPQ5zv3nXy5j7e9YDcHcVpPrhVu4oxaQyBMRhS8/SufmHeSHD2/OF36G0i0vXhxgBqTdsQpxyW00va7YRF0uFyIlQdD02qGCRJ6IKDyllcsdC6jzwxP6cL7gU5R+/vLFAWMc0ma/irjmrQM+9/RB6cj9+jfJjSfHiG6tkNUxFTnri1yOE4wMC67rEfAcwgGKkyciCrnYZMHAIBhdqwM6xyvHwiN5pHH+m09w/OlxksCzuCZIu+sNdHwgLygCDwA7j5Rg+Q29keYhOWnnkRJk90mTjhObci+/IXIia7xBljwRUSjFJsuNicf6Yv0T2lJxcBPKtr8qbbMmJrS/7d+IS2oZ9GudstRI2alK1SNFAyBSmnL7g+Yizxg7BuA8ABuAeqVYToJwRylBxV3ol285ipwxXRtVnMwrKMbCTYejJkoikqn4Og9lO1ZL24amzdDutn8jLjFVs2uahIuOCi2ayEQKmidDNYh8Fuf8D2/HUjIUIeKpETeARvsEA0NifBws1VapimTugd9kI2+I0FG+/0NYdr0ubRvik9D+ry/DmJgSkus/NyVTSniSW3w3mwQsHN8j4q14T8lQJPJEWKJU/En0r3pzvzBQpyY9Kd+3Hpb/viltGxLMaH/rCzA2C424O5OSIEiLqIs+PtwokkY0HiJZ6PXOeOUAPmeMcQCvcM5fdd7JGJsNYDYApKenh2A6RCQQaPlgEnh9KN+bC8uX70jbxsRUtLvlBRgTknWbU1m1VWoik9AkTqY3b/jVgA8moRD5IZzzU4yx1gC2MsaOcM6/EHc2iP6rgMOSD8F8iAjAmw+VFlLDC8ue91C+e620bUxqiXazntdV3J0RhTxQ4yES0VzkOeenGv49yxjbCGAAgC88v4qIdeQ68DiHRVJyk/5wzlG++12U731PGjMmt0G7m1fAaGqu48zkKbbUKNYliuYFWE1FnjHWDICBc36+4f+jASz28jKCUFXGVdyXbBJQVVfvMemFCB6cc1i+XIOKr3KlsbiUdmg7cwWM8Yk6zswzDPJ1icKxBnww0dqSbwNgI2NMvNa7nPPPNL4mESXIxS67h1WuaIieeCzvW5eWfUTw4ZzD8sVbqNi3XhqLS01DuxnPwhDG4i4iZwIYGYv4RVdvUD15IiyRa6z9SdFp2Zh3s0kAY9SLVSs457DsegMVBz6UxoQW6Wg7YzkMTZvpOLPAYQB+XXqt3tMIGL2jawjCBW9deLw11naHkp20gXOOsh2rcf7gR9KY0KoT2k5bBkPTBB1nFjyi2RcvQiJPhBQ5AZ+TW4iDx0ulBstUUExfOOco2/4qzud/LI0Jrbug7dSlUSPugCOBLpp98SIk8kRIkRNwDmDtvhPI6piK7D5pFB6pE5xzlG5dicqCzdJYk7aXoc1N/4ChSWRbvIKRwWbncEmAZoqHRxUk8kRIUYpH5nDcAADKVg01nNtR+vnLqCy8GBPRpF1XtLnxKRiaxOs4M/9hABKaGFFdZ0N7swlVtfWN3HpWm3xT72iDRJ4IKZ4qQorFxkjgQwPndpR+9iIqD30ujTVNuxytpzwBgxC54i63kNp53ubGByO6k6BESOSJkJIzpivm5BbKCjkHZbKGAs7tOPeff6Hq223SWNMOPdB68mIYhKY6zixwlBZSY7kKJYk8oSlykTTTBqVj7b4TZLGHGG634dynz6Hq8E5prGl6BlrfsDDixR3wnNTkLYM6miGRJzRDLpJGLBSV1TEVy7ccJcs9BHC7DX9s/ieqv/+vNBbfMROtb5gPFtdEx5kFjzSZUFxn1GRQRyuUDEUA8By77i2uXek8BoU6IWlmk9TgQ6ljDxE43G7DHx8/g+ojX0pj8Z37ovWEx8HioqNJNRA9CU2BQMlQhEeULG4RpX1yJQecj5UTeODiYldeQbHijYDwH2634Y9Ny1B9dI80ZuqShVYTHgUzRo+4i8SCXz0QSOQJ2dh1sTSr+H+5fe4irzaJqb3ZJN0QSOCDB7fVo+Sjpaj5cZ80Zvp/A9Eq+2EwY3T+1GMloSkQovObJ3zCnxrbcvvUhKOZBCNGdGuFuR8UkcAHCW6rR0neP1Dz0wFpzPSnwWg1/qGoFXeRxPi4mPCrB0J0/wUQqvCnQYfcI7LSeYyMwc65VGhsQ34xCXwQ4DYrSj58CjW/XFzHSug6BC3HPwhmMOo4s9BhoaJ0XjF4P4SIdnLGdIVJcBUFMbxsRLdWjbK/lULPlM4zqEsKDIxJhcaoLk1g8HorzuQ+jhPPXC8JfMLlVyI95yOHayZGBB4AzAnRt8YQbMiSJxTDywBgQ34x3Mt9TOyXphh5M7FfGnYeKZG2E5oYsOfn0hC/o+iE11txdv1CXDheJI016z4cLa6dE1PC7gw9EHqHRJ4AIN+gY8jSHbLFxHYeKQEgH5WzIb9YasKQV1CM+3MLQzH9qIbX1+HMugWoPXEx4qlZz6vR4s/3xay4i5TXWH0K8Y1FSOQJRZQWUostNdIPSy7yZu4HDktTjM4h/MNurcXZDx5H7cnvpbFmGdegxZ//DsbI0wo43DVqQ3xjFRJ5QhFPxcQ8NdK2cY6c9UXUc9VP7NYLOPv+Y6g9dUQaS+w9Bqlj/hZT4u6tGqlJMIJz9SG+sQqJPKHIiG6tFDsyeVs8JYH3HXvdBZx5/xHUnf4/aSwx889IHX1XTIm7CIPDUrdUW6XILOf1Hk9/n7FQXVItJPIxgpqWe+77Nx86reOMYwd7XQ3OvPcw6n7/SRpL6jsOKaPuAGMx0tlCBjuAygv1UrN2Z8T1ICUoC/YiJPIxgKeyBeICqft+crdoj722Gr+/+xCsZ3+VxpL6jUfKyNtjWtydsdrlG3t4yq6OleqSaiGRjwE8lS3I7pMmu58EXjvstdX4fU0OrH8cl8aS+mcjZcRfSdxl8DW7WozuIhyQyMcA3soWkP8yNNhrq/D7Ow/Aeu43aaz5wIkwXzWLxN0DvmRXp5lNJPBukMjHAN7KFniKoiECx36hEqffmYv60mJprPmgSTBfOZPE3QtKBchiuQmIr5DIxwDefhBy+4nAsV2oxO9vzUG95eICdvLgKUgeNp3E3QmlUEnGgOWTesta5rHcBMRXSORjAG8/CPf9VOM9MGw1FTj95v2wVZyVxpKH3ATz0Gk6zip84QAEI3NZBzIJRq++dbksbaIx1BmKaEQnhc72hGds1eU4/eZ9sJ3/QxpLHjoN5iE36TiryMBsEtCsaRxZ5X5CnaEInzCSJe8TtupynH7j77BVXizEZr5yJpIHT9ZxVpFFeY0VhQtG6z2NqIREnmgECbw6bFUWnHr9HtirLdKY+aqbkTxokn6TilAoeUk7SOSJRpAl7xlbZRlOvf432GsqpDHz8FuRPHCCjrOKXCgqRltI5IlGkMDLU19ZilOr7wKvrZLGUq6+Dc37Z+s3qQjHyJhLfwIi+JDIxzjuNWs6taDHZnfqz//hEPe6i7kEKSNno3nWeB1nFR3YOMeG/GJkdUyVSmxQWGRwIZGPMZx/RMkmAVV19VLoWrGlhpKinKiv+AOnVt0BXl8rjaVecyeS+o7TcVbRh1hiAwDVhtcAzUWeMTYWwPMAjABWc86Xan1NQh73QmSWGmqCLEd9xVkUvzIbsNdLY6lj/oakzD/rOKvo5pSlxmuNJcI/NBV5xpgRwEsArgFwEsDXjLFNnPPvPb+S0AJPlfsIoL78LIpfuQ3gdmksdcw9SMocq+OsYoP2ZpPXGkuEf2htyQ8A8BPn/BcAYIy9D+AvAEjkdYB+LPJYLb/j1Cu3uYy1+PO9SOxFcduhQIyuWb7lqMcaS4R/aC3yaQB+c9o+CWCg8wGMsdkAZgNAenq6xtOJbagQmSvWstM49ertLmMt/mcOEjNG6jSj2EGsV5PmtrhKRceCj9YiL1eFySU+j3P+KoBXAUdZA43nE9OM6NYKa/edcPkCBAMDY0BdDNWPt5adwqlXZ7uMtRg3F4k9Rug0o9giJUFAwfzGT0lUdEwbtBb5kwAucdruAOCUxtckZMgrKMaG/GIXgWcAOrVMwI9nq5ReFlXYqstR8XUeKvatk8ZaXvcAmnUfrt+kYgwGYMF1PRT3U9Gx4KO1yH8N4DLGWGcAxQBuBDBV42vGPHKxxnKLrhyICYF3iPtGnP9mM3jdBRiamZE6cjaaXX6l3lOLWswmAbX1dpe/OQZg2qB0EvEQo6nIc87rGWP3ANgCRwjl65zzw1peM9ZR6ucai1E1tupyVBz40CHu1lokXD4MyVfciCYtae1HS0yCEQvHO6x1cr3oj+Zx8pzzTwF8qvV1Yh3RepdbWI01gbdVWRziXrAZvN6KhMuHwTz4RggtL/H+YsIvlBZSSdT1hzJeowB36z1WsVWVoWL/hzhf+Cl4vRXNul+F5MFTILTooPfUop54FU0+CH0gkY8CYj3JyVZZhvL961FZ+Bm4rUHcr7gRQioJTqigzNTwhUQ+CojVJKf6ylJU7FuPyqLPwG31aNZjBJIHTyZx1wlvf4dUfEwfSOSjgFhLcqo/fw4V+9ejsmhLg7hfjeQrJkNIaa/31GKaZJOguE8pIAAgv73WkMhHASO6tcKafScajRsYYI+iHKf683+gYt96nC/aAthtaNZzpMNyT2mn99QIAEwu9bEBKj6mHyTyEU5eQTHe2/+b7L7m8QKqaq2w2mV3Rwz1FSUo37celYe2AJwjsedINB88GYK5rd5TI5ywVCtXNaXiY/pBIh9hOPs1E5oYUVWnvOBaXmPFr0uvxbRVX2HPz6WKx4UrDnFfh8pDnzvEPWMUkgdPRlxyG72nRsjgqZCYkkuRio9pD4m8jqhdiHKOgRfjkQF4FHjg4g9o7e2D0Wfx5yjzYGmFE/XlZ1G+7wNUHtoGAEjsNQrJgyYjLrm1zjMjlPBWSCxnTFcqPqYTJPI6oXYhyv04tS52wcAwolsrDFm6Q+oCFe7Ul59B+VfrUPltg7j3Ho3kQTcgrjmJe7hhNglgzOGiURMpQ8XH9IPxMGranJWVxQ8ePKj3NELCkKU7ZB9f08wm7Jl3tdfjvNE0zoC6ervqm4KeWC2/o+KrD1D53XaAMST2GtMg7q30nlpMIRiAert3Q4IB+HXptaGYEqESxlg+5zxLbh9Z8jqhdiHK34Wp2vrwX221Wn5H+d5cVB3eATADkjL/jOYDb0Bc85Z6Ty0msdqBBMGAai8r9eRHjyxI5HVC7UJUNMbAW8tOo/yrXFR9twMwGJHU53/QfOBExCWRuOtNtdUOwcCQGB+HsmqryxoQQH70SMSg9wRilZwxXWESjC5jcj+gnDFdIRg9BCBHENayU/hj8wqcWnUHqn/4Akl9xyHtjtVIHXUHCXwYYbVzlFVbkWY2YdqgdKSZTWBwuBKpPk3kQZa8TqhdiMruk4aFmw7DUhMZkTFyWEuLUb73fVR9/18wo4Ckftc5LPfEVL2nRnig2FKDDfnFJOwRDom8jqjtglMeoQJvPXfS4ZYRxT1rPJIHTIQxMUXvqREqoazUyIdEPgIwJwgRE+MOANZzv8Gy931U//AlWJyA5v2z0XzA9TA2I3GPRCgrNbIhkdcZNQlRYRTl6hHrH6K4fwEmNEXzAdejef/rYWxm1ntqRABQNE1kQyKvI2oTosLdXVNXchzle99H9ZHdDnEfONFhuSck6z01IkAomibyIZHXEbWV+cI1jLKu5BjK97yP6qN7wJrEo/mgG9C8fzaJe5ghGBlsNg61mRNpZhNlpUYRJPIhQMklozYhSq7uh55UHt6Jc588CwBgTUxoPngymvf/C4ym5jrPjJDDauNISRBwwWpDjZdEJyNjLhnXzlDTj8iERF5jPLlk1CZEiT+k+3MLtZ2sFyq/245zm1dI23HJbdD25udgNCXpOCtCDZZqR0VSTw3fAeCmgfLNzqnpR+RCyVAa48klozYhCnD8kNJ0WgCrPLQVx58e5yLw7e9YjbQ7XyOBjxBEwyG7Txr2zLsax5Zei+mD0mFs6PRhZAzTB6XjyewM2dd7+jsmwhuy5DXGk0vG18p8OWO6Yk5uYciKjp0v+hyln/3LaYQh7c7VVM89wlAyHJ7MzlAUdXeo6UfkQiKvMd5cMkoJUUr+z4PHS7F23wlNhf584Wco3fLixQGDEWmzV1E99zAnJUGApdoKc4IAzh1RWcHynVPTj8iFRF5j/GmW4Mn/+WR2BrI6pnr0q/rL+W82o3Trv6VtFtcE7W9/hUr+RgApCQIK5o/W7PzU9CNyIZHXGH+aJSj5P+/PLZR8+XvmXe13rXl3KvI/Rtm2V6RtJsSj/W0rqeRvmGISjI3EdsF1PTS9JjX9iFyoaUgY4S3yIdhUHPwIZdtXSdusSQLa3/ZvxCW1CMn1Cd9JaxBX56J1KQkCFlzXgwQ3hqGmIRGAu4tGSyoOfIiyna9L24b4JLT760tUFTLMcXaPODeFKau2UjgjoQiJfJgg56IJNuX7N8Cy6w1p22BqjvZ/fYkKh0UI8YIj4lltpjRBACTyYYOWoWjlX30AyxdvS9vGZilod8sLVDgsAjAwwN7gURUtdiVjgMIZCTlI5MMELerTWPa8h/Lda6VtY1JLtJv1PNWWiQCMjCEpPq5Rs5gaqw1GxmCTWUujcEZCDhL5IOCppofaeh/BrE9j2f0uyve8K20bm7dyiDvVlokITIIRSyZkYI5CGQsb57IRNhTOSMhBIh8gnmLaAaiu9+EcouaPRc85R/nutSjf+740Fmdui7YzV1DpgQjAyBjsnLsYAp7+FprGGRAvGGCpDl7CExGdaCbyjLGFAG4HUNIw9Ajn/FOtrqcX3mp6yO1b9PFhReu+uq7ep+tzzmH58h1UfPWBNBaXmoa2M56FMT7Rn7dEhBjRcncXaU9Pd5YaK0yCESumZJK4Ex7R2pJfwTl/RuNr6Io/NT3Kqq1SO79iSw3m5BZi3cETOHCsDFaburwFzjks/30TFfs3SGNxqR3QbsYzMJC4hz2iXz3NgxXu7emOImoINZC7JkC81fRQ43rhAPb8XKrqepxzWHa+joqvN0pjQsuOaDt9GQxNm6mbNKEraWaTYs12d8TaRp3nbZatV0QRNYQ3tBb5exhjMwEcBDCXc16m8fVCjreaHsFaTOWco2zHapw/+JE0JrTujLZTn4ahaULA5ydCg78LpFQgjPCXgESeMbYNQFuZXY8C+DeAJ+AwVJ8A8CyAW2XOMRvAbABIT08PZDq6oKamh/O+qtr6RmFxnuCco2zbKzj/zSfSWJM2l6LNTUtI3CMMI2Oyvnc1UIEwwl9CUruGMdYJwCec856ejouF2jV5BcWqasJzzlG69d+oLLi4Vt2k3WVoc+MSGJrEaztJQhMYgF+XXuv366n9HqGELrVrGGPtOOenGzavB/CdVteKJJRqwgsGBjuAepsNpVteRmXRZ9K+Ju27os2Up0jcI5xAXStKvQcIwhNa+uSXMcYy4XDXHANwh4bXCgnBsqSca8JLbpwLdfjpw3+i6tut0nFNO3RH68mLYRBI3CMdBpBrhdAFzUSecz5Dq3PrQbAbGYtWmd1ux6233oq33npL2tf0kp5oPWkRDEJTABc7/oRPUWjCVzioQiShD9TIWyW+NjLOKyjGkKU70HneZgxZugN5BcUu+202G2bMmAGj0SgJfHzHXkif+yHaTl0qCTwAXLDasWJKpm6NvAl1CEYGs0mQ3UffHaEXFCevEl+SnjxZ/eMy2mDGjBl4//2L5QfiO/VB64nzweLkBaLGasPCTYexcHyPkNWcJ3xDbNwBNA6bpSgYQk9I5FXiS5yynNVfXVuH226ehnPf/lcaM/9pAJqPfxjMKC/uzohhl0smZOB+hcJVRHBISRBwba92+KTotKpw12MyETMUBUOECyTyKvElTtnZuue2evyxaRmq/2+vNDZu3Dhs2LABXedv9cnPvnzLUeyZd3VIWwTGGs851YJ5MjvDa0tGOTcMRcEQ4QSJvEp8aWTc3mzCyXPnUZK3BDU/7ZfGU7sPwe+FOyEIgnScL2It3jxGdGvVKASTCJw0s0m2Omh2nzTZ9ozkhiEiARJ5H1BjodXV1aF28z9wYvd2aSzhT1fgkhsewQ390zH82S+lm8SIbq2wZt8J1ddPNgnos/hzqbgZEVxGdGuluM+XmzxBhBMk8kGitrYW2dnZ+Oyzi0lMLTKGI3HsHKSlJmJEt1bYkF/sshi7Ib8YzZoYUVXXeCGVAY2Sparq6lVXqSR8Z+eREo/7yQ1DRCIk8gFSW1uL6667Dlu3Xkximjp1Kt5++20YjUZpbMjSHbIhmGaTAJOARm6Aif3SsPNIiWQ1VtfVkwWvMVTRkYhGSOT95MKFC7j22muxY8cOaWzGjBl44403XMRdRElALDVWTB+U7iLocm6AzvM2B/cNRDmMAb6WZaKKjkQ0QiLvIzU1NRg7diy++OILaWzWrFlYvXq1rLiLeFpk3ZBf7LU6oRaNvqMRs0lA4YLRABz5CmrDTansABGtUMarSqqrqzF06FAkJCRIAn/bbbfBZrMpWu/O5IzpCpMgf0yN1Yb7cwtlM2PVvJ64SLlTXLtSNrI7DMC0QenkbyeiErLkvVBVVYVRo0Zh37590tgdd9yBl19+GQaD+nukKCCeLEu1jb5PWWqQoLBgG+sYGEPneZtVPfkwgKJkiKgnJPXk1RJO9eQrKysxYsQIOM/n7rvvxosvvgjGmN/nHbJ0h1fxUdMeTs15Yh33CCVnUhIEFMwfHcrpEIRmeKonT+4aNyorK9G3b18kJSVJAn/vvffCbrfjpZdeCkjgAXVuFzVRHrESCSIYGJ6bkonnpmTC109eSeCNBibVmSGIaIfcNQ1UVFRg2LBhOHTokDQ2Z84cPPvsswELuzPObhclS1yM8nCvXz+iWyspCsfAGGxh9BSWkiBoE+LZ8NEv33I0KBm+YiExcs8QsULMu2vKy8txxRVX4Pvvv5fGHnjgASxbtiyo4i6HUqr8kgkZAILXBDwUPDclU7PCaWlmE05ZahRFPk1F71w1LjCCiFTIXSODxWLB5ZdfDrPZLAn8vHnzYLfbsXz5cs0FHnBY9UsmZCDNbAKDQ4hEgZ/7QZEqgWfMYeymJAgQDNrPWYlFHx9GSoL3apr+ID7JeGJc73Ye3WCx4t4iCHdizpIvKyvDgAED8NNPP0ljjz76KJ544omQCLs35Kx7b4ilbvMKijH3gyLd3DiCgcFqD/610xoiYDx9LmKW8Hv7f5N9/+I5qPYMEY1EvSXvrQsTAJSWlqJz585ITU2VBH7+/Pmw2+148sknw0LgAfla9GrJ7pMGuwYCr/aTCVTgBZm/RrHSo/NTjxw1Vht2HinBs5N7N7LoTYIRI7q1wsMffoviBrePGK6qlJdAENFCxIu8aPkq/XjPnTuHjh07okWLFjh27BgAYOHCheCcY9GiRT6Lu5obSiD4Ghbp3m7OrMJl4stbNgCIM2p7AzQwx3WsdtfxlATBJRM4u08a9sy7WvGmc8pSg+w+aZjYLw3GhjdpZEyqA+RL+0aCiBYiXuSVeq/+Y8N+pKWloWXLljhxwlHO94knngDnHAsWLPDrWt5uKIGSV1DsU5igYGBYON41FFCNIe+Tsc/gtfKlgTW+2Ti9XJE0swnHll6Ldskm2GX2JzSJU6zXL0d7swl5BcXYkF8suWxsnGNDfrHizZN89US0E/Ei7/4jtVVZ8NsL0/H1UxNx6tQpAMCSJUvAOcdjjz0W0LV8bebtz/m96a8omkbm8H8v33LU5Sajpl2dL6jxwDSPF7BwfA9ZN8m0QemyC7LODTd86Z8LKNd9H9GtleJ3ZFR4fKGiZES0E/Fx8mL6uq2qDKde+xvsNRXSvqeffhoPPvhg0K7lqxgF6/zOcDiEXrRUnUshAJ6zPLWivMbqsamGcxs9uUVPX/rnAsp138UcAjlsnMMkGKmzExFzRLzI54zpirmvbcXxl26RxlqPuh2vLFsQ9MgJX8UoWOd3x13EnZ8m9IirEd+/p6YaSvvyCopRXVffaNyTAHu62Sp9hhRdQ8QqES/y2X3SYJ1xJaa8IsB85Sxcfs2Nmv14fWnmHazzqyVUvmX3J4VA3r9SuKjZ5HD/KH2Hnm62nr4j6uxExCIRL/IAMGlgF0yy1ml+Ha37fLqfP9kkNGr5p+SOEa1pOfHzp4GGO2LGqCe3C9C4FIOnz0cpXLRZU/kFVxFvQi6emyx2gojBZKhIQ65+jXOvWMBzKQQxScj9Nb747sXzexNKT2Ua5F7bed5m2TkwAL82JHh5uhYJOUE48JQMFRWWfCSiVqTkXAxZHVM9vlZun9xrlIqkpSQISGgS57OAeoo+UgqF9HeNg1wvBKEOEnkdcLd4PTULcX6NvzcFT+Nylre/VRp9jT7Seo2DIIgoiJOPRHyNt9ciCUu8aTjHkIsF0vy1kD0lKcmhVKCNLHSCCB5kyYcIZ0tcyReuZPH66gZRMxdnC1qMIQ/Ur+2PZU5uF4LQFrLkQ4C7Ja6EksUb7CQsrTJ3yTIniPCDLPkQoKaypCeLN9hJWFpm7pJlThDhRUCWPGNsEmPsMGPMzhjLctv3MGPsJ8bYUcbYmMCmGdl4Ek81Fq9cX9hAFih99Z0TBBG5BGrJfwdgAoBXnAcZY90B3AigB4D2ALYxxv7EOY+MXnZBxlOqvZqWdMFO8KGoFoKIHQISec75DwDkarL/BcD7nPNaAL8yxn4CMADAV4FcL1IJhqgG0w3i7aZBiUYEET1o5ZNPA7DPaftkw1hMEo6p9p4Khvkaw08QRPjiVeQZY9sAtJXZ9Sjn/COll8mMyQaWMMZmA5gNAOnp6d6mE7F4s8TDxXoOdrgmQRD64lXkOeej/DjvSQCXOG13AHBK4fyvAngVcNSu8eNaEU84Wc9a18wnCCK0aBUnvwnAjYyxpoyxzgAuA3BAo2tFPIHErQe75yxF3hBEdBFoCOX1jLGTAAYD2MwY2wIAnPPDAD4A8D2AzwD8LVYja9Tgr/WsRbmDYIdrEgShLwGJPOd8I+e8A+e8Kee8Ded8jNO+pzjnl3LOu3LO/xP4VKMXf61nLTJXKWuVIKILyngNA/wNsdTKf05ZqwQRPVDtmjDAX+uZ/OcEQXiDLPkwwR/rmTJXCYLwBol8BBOOSVYEQYQXJPIRDvnPCYLwBPnkCYIgohgSeYIgiCiGRJ4gCCKKIZEnCIKIYkjkCYIgohjGefgUfmSMlQA4rvc8vNASwB96TyKMoM/jIvRZuEKfhytafh4dOeet5HaElchHAoyxg5zzLO9Hxgb0eVyEPgtX6PNwRa/Pg9w1BEEQUQyJPEEQRBRDIu87r+o9gTCDPo+L0GfhCn0erujyeZBPniAIIoohS54gCCKKIZEnCIKIYkjk/YQx9gBjjDPGWuo9Fz1hjC1njB1hjB1ijG1kjJn1npMeMMbGMsaOMsZ+YozN03s+esIYu4QxtpMx9gNj7DBj7D6956Q3jDEjY6yAMfZJqK9NIu8HjLFLAFwD4ITecwkDtgLoyTnvBeD/ADys83xCDmPMCOAlAH8G0B3ATYyx7vrOSlfqAczlnF8OYBCAv8X45wEA9wH4QY8Lk8j7xwoADwKI+VVrzvnnnPP6hs19ADroOR+dGADgJ875L5zzOgDvA/iLznPSDc75ac75Nw3/Pw+HuMVs0wPGWAcA1wJYrcf1SeR9hDE2HkAx57xI77mEIbcC+I/ek9CBNAC/OW2fRAyLmjOMsU4A+gDYr/NU9OQ5OIxCux4Xp85QMjDGtgFoK7PrUQCPABgd2hnpi6fPg3P+UcMxj8LxmL42lHMLE5jMWMw/5THGEgFsAHA/57xC7/noAWNsHICznPN8xthwPeZAIi8D53yU3DhjLANAZwBFjDHA4Zr4hjE2gHP+ewinGFKUPg8RxtjNAMYBGMljM/HiJIBLnLY7ADil01zCAsaYAIfAr+Wcf6j3fHRkCIDxjLH/ARAPoDljbA3nfHqoJkDJUAHAGDsGIItzHrOV9hhjYwH8E8BVnPMSveejB4yxODgWnUcCKAbwNYCpnPPDuk5MJ5jDAnoLQCnn/H6dpxM2NFjyD3DOx4XyuuSTJwLlRQBJALYyxgoZYyv1nlCoaVh4vgfAFjgWGT+IVYFvYAiAGQCubvibKGywZAkdIEueIAgiiiFLniAIIoohkScIgohiSOQJgiCiGBJ5giCIKIZEniAIIoohkScIgohiSOQJgiCimP8PxfCdBKcguMkAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll use the `LinearRegression` class from Scikit-Learn to instantiate a model and fit it to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scikit-Learn Version: 0.23.1\n" + ] + } + ], + "source": [ + "import sklearn; print('Scikit-Learn Version:', sklearn.__version__)\n", + "from sklearn.linear_model import LinearRegression\n", + "\n", + "\n", + "# instantiate and fit model\n", + "linear_regression = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 7.54 ms, sys: 1.38 ms, total: 8.91 ms\n", + "Wall time: 7.98 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "linear_regression.fit(np.expand_dims(x, 1), y)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# create new data and perform inference\n", + "inputs = np.linspace(start=-5, stop=5, num=1000)\n", + "outputs = linear_regression.predict(np.expand_dims(inputs, 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now visualize our empirical data points, the true relationship of the data, and the relationship estimated by the model. Looks pretty close!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## cuML\n", + "\n", + "The mathematical operations underlying many machine learning algorithms are often matrix multiplications. These types of operations are highly parallelizable and can be greatly accelerated using a GPU. cuML makes it easy to build machine learning models in an accelerated fashion while still using an interface nearly identical to Scikit-Learn. The below shows how to accomplish the same Linear Regression model but on a GPU.\n", + "\n", + "First, let's convert our data from a NumPy representation to a cuDF representation." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " x y\n", + "0 -0.628841 -1.821668\n", + "1 1.490274 7.164684\n", + "2 -1.108334 -2.714711\n", + "3 -0.270642 -0.874697\n", + "4 1.600833 -1.727782\n" + ] + } + ], + "source": [ + "# create a cuDF DataFrame\n", + "df = cudf.DataFrame({'x': x, 'y': y_noisy})\n", + "print(df.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we'll load the GPU accelerated `LinearRegression` class from cuML, instantiate it, and fit it to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cuML Version: 0.17.0a+173.g2c0aacf44\n" + ] + } + ], + "source": [ + "import cuml; print('cuML Version:', cuml.__version__)\n", + "from cuml.linear_model import LinearRegression as LinearRegression_GPU\n", + "\n", + "\n", + "# instantiate and fit model\n", + "linear_regression_gpu = LinearRegression_GPU()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/cuml/internals/api_decorators.py:410: UserWarning: Changing solver from 'eig' to 'svd' as eig solver does not support training data with 1 column currently.\n", + " return func(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 415 ms, sys: 208 ms, total: 623 ms\n", + "Wall time: 2.48 s\n" + ] + }, + { + "data": { + "text/plain": [ + "LinearRegression(algorithm='eig', fit_intercept=True, normalize=False, handle=, verbose=4, output_type='input')" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "linear_regression_gpu.fit(df[['x']], df['y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use this model to predict values for new data points, a step often called \"inference\" or \"scoring\". All model fitting and predicting steps are GPU accelerated." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# create new data and perform inference\n", + "new_data_df = cudf.DataFrame({'inputs': inputs})\n", + "outputs_gpu = linear_regression_gpu.predict(new_data_df[['inputs']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we can overlay our predicted relationship using our GPU accelerated Linear Regression model (green line) over our empirical data points (light blue circles), the true relationship (blue line), and the predicted relationship from a model built on the CPU (red line). We see that our GPU accelerated model's estimate of the true relationship (green line) is identical to the CPU based model's estimate of the true relationship (red line)!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", + "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='predicted relationship (gpu)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Dask\n", + "\n", + "Dask is a library the allows facillitates distributed computing. Written in Python, it allows one to compose complex workflows using basic Python primitives like integers or strings as well as large data structures like those found in NumPy, Pandas, and cuDF. In the following examples and notebooks, we'll show how to use Dask with cuDF to accelerate common ETL tasks and train machine learning models like Linear Regression and XGBoost.\n", + "\n", + "To learn more about Dask, check out the documentation here: http://docs.dask.org/en/latest/\n", + "\n", + "#### Client/Workers\n", + "\n", + "Dask operates by creating a cluster composed of a \"client\" and multiple \"workers\". The client is responsible for scheduling work; the workers are responsible for actually executing that work. \n", + "\n", + "Typically, we set the number of workers to be equal to the number of computing resources we have available to us. For CPU based workflows, this might be the number of cores or threads on that particlular machine. For example, we might set `n_workers = 8` if we have 8 CPU cores or threads on our machine that can each operate in parallel. This allows us to take advantage of all of our computing resources and enjoy the most benefits from parallelization.\n", + "\n", + "To get started, we'll create a local cluster of workers and client to interact with that cluster." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dask Version: 2.30.0\n" + ] + } + ], + "source": [ + "import dask; print('Dask Version:', dask.__version__)\n", + "from dask.distributed import Client, LocalCluster\n", + "\n", + "\n", + "# create a local cluster with 4 workers\n", + "n_workers = 1\n", + "cluster = LocalCluster(n_workers=n_workers)\n", + "client = Client(cluster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's inspect the `client` object to view our current Dask status. We should see the IP Address for our Scheduler as well as the the number of workers in our Cluster. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 1
  • \n", + "
  • Cores: 4
  • \n", + "
  • Memory: 16.48 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# show current Dask status\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also see the status and more information at the Dashboard, found at `http:///status`. You can ignore this for now, we'll dive into this in subsequent tutorials.\n", + "\n", + "With our client and cluster of workers setup, it's time to execute our first distributed program. We'll define a function called `sleep_1` that sleeps for 1 second and returns the string \"Success!\". Executed in serial four times, this function should take around 4 seconds to execute." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "\n", + "def sleep_1():\n", + " time.sleep(1)\n", + " return 'Success!'" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 7.64 ms, sys: 7.32 ms, total: 15 ms\n", + "Wall time: 1 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "for _ in range(n_workers):\n", + " sleep_1()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, our workflow takes about 4 seconds to run. Now let's execute this same workflow in distributed fashion using Dask." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from dask.delayed import delayed" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Success!']\n", + "CPU times: user 9.37 ms, sys: 11.2 ms, total: 20.6 ms\n", + "Wall time: 1.01 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "# define delayed execution graph\n", + "sleep_operations = [delayed(sleep_1)() for _ in range(n_workers)]\n", + "\n", + "# use client to perform computations using execution graph\n", + "sleep_futures = client.compute(sleep_operations, optimize_graph=False, fifo_timeout=\"0ms\")\n", + "\n", + "# collect and print results\n", + "sleep_results = client.gather(sleep_futures)\n", + "print(sleep_results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using Dask, we see that this whole workflow takes a little over a second - each worker is truly executing in parallel!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Dask cuDF\n", + "\n", + "In the previous example, we saw how we can use Dask with very basic objects to compose a graph that can be executed in a distributed fashion. However, we aren't limited to basic data types though. \n", + "\n", + "We can use Dask with objects such as Pandas DataFrames, NumPy arrays, and cuDF DataFrames to compose more complex workflows. With larger amounts of data and embarrasingly parallel algorithms, Dask allows us to scale ETL and Machine Learning workflows to Gigabytes or Terabytes of data. In the below example, we show how we can process 100 million rows by combining cuDF with Dask.\n", + "\n", + "Before we start working with cuDF DataFrames with Dask, we need to setup a Local CUDA Cluster and Client to work with our GPUs. This is very similar to how we setup a Local Cluster and Client in vanilla Dask." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import dask; print('Dask Version:', dask.__version__)\n", + "from dask.distributed import Client\n", + "# import dask_cuda; print('Dask CUDA Version:', dask_cuda.__version__)\n", + "from dask_cuda import LocalCUDACluster\n", + "\n", + "\n", + "# create a local CUDA cluster\n", + "cluster = LocalCUDACluster()\n", + "client = Client(cluster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's inspect our `client` object:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 1
  • \n", + "
  • Cores: 1
  • \n", + "
  • Memory: 16.48 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, you can also see the status of the Client along with information on the Scheduler and Dashboard.\n", + "\n", + "With our client and workers setup, let's create our first distributed cuDF DataFrame using Dask. We'll instantiate our cuDF DataFrame in the same manner as the previous sections but instead we'll use significantly more data. Lastly, we'll pass the cuDF DataFrame to `dask_cudf.from_cudf` and create an object of type `dask_cudf.core.DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import dask_cudf; print('Dask cuDF Version:', dask_cudf.__version__)\n", + "\n", + "\n", + "# identify number of workers\n", + "workers = client.has_what().keys()\n", + "n_workers = len(workers)\n", + "\n", + "# create a cuDF DataFrame with two columns named \"key\" and \"value\"\n", + "df = cudf.DataFrame()\n", + "n_rows = 100000000 # let's process 100 million rows in a distributed parallel fashion\n", + "df['key'] = np.random.binomial(1, 0.2, size=(n_rows))\n", + "df['value'] = np.random.normal(size=(n_rows))\n", + "\n", + "# create a distributed cuDF DataFrame using Dask\n", + "distributed_df = dask_cudf.from_cudf(df, npartitions=n_workers)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------\n", + "Type of our Dask cuDF DataFrame: \n", + "---------------\n", + " key value\n", + "0 0 -0.973103\n", + "1 0 0.260218\n", + "2 0 -1.143150\n", + "3 1 1.151558\n", + "4 1 -1.509615\n" + ] + } + ], + "source": [ + "# inspect our distributed cuDF DataFrame using Dask\n", + "print('-' * 15)\n", + "print('Type of our Dask cuDF DataFrame:', type(distributed_df))\n", + "print('-' * 15)\n", + "print(distributed_df.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above output shows the first several rows of our distributed cuDF DataFrame.\n", + "\n", + "With our Dask cuDF DataFrame defined, we can now perform the same `sum` operation as we did with our cuDF DataFrame. The key difference is that this operation is now distributed - meaning we can perform this operation using multiple GPUs or even multiple nodes, each of which may have multiple GPUs. This allows us to scale to larger and larger amounts of data!" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "376.61628335248315\n" + ] + } + ], + "source": [ + "aggregation = distributed_df['value'].sum()\n", + "print(aggregation.compute())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Conclusion\n", + "\n", + "In this notebook, we showed at a high level what each of the packages in the RAPIDS are as well as what they do.\n", + "\n", + "To learn more about RAPIDS, be sure to check out: \n", + "\n", + "* [Open Source Website](http://rapids.ai)\n", + "* [GitHub](https://github.com/rapidsai/)\n", + "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", + "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", + "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", + "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "RAPIDS-0.18\n", + "language": "python", + "name": "rapids-0.18" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/getting_started_notebooks/intro_tutorials/02_Introduction_to_cuDF.ipynb b/getting_started_materials/intro_tutorials_and_guides/02_Introduction_to_cuDF.ipynb similarity index 55% rename from getting_started_notebooks/intro_tutorials/02_Introduction_to_cuDF.ipynb rename to getting_started_materials/intro_tutorials_and_guides/02_Introduction_to_cuDF.ipynb index 488474be..72681465 100644 --- a/getting_started_notebooks/intro_tutorials/02_Introduction_to_cuDF.ipynb +++ b/getting_started_materials/intro_tutorials_and_guides/02_Introduction_to_cuDF.ipynb @@ -42,9 +42,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wed Mar 24 23:39:15 2021 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|===============================+======================+======================|\n", + "| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |\n", + "| N/A 42C P0 26W / 70W | 864MiB / 15109MiB | 0% Default |\n", + "| | | N/A |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=============================================================================|\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], "source": [ "!nvidia-smi" ] @@ -58,9 +84,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/bin/sh: 1: nvcc: not found\n" + ] + } + ], "source": [ "!nvcc --version" ] @@ -84,7 +118,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "cuDF Version: 0.12.0b+1777.g162097c\n" + "cuDF Version: 0.17.0a+382.gbd321d1e93\n" ] } ], @@ -174,7 +208,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "RangeIndex(start=0, stop=4)\n" + "RangeIndex(start=0, stop=4, step=1)\n" ] } ], @@ -275,7 +309,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "NumPy Version: 1.17.5\n", + "NumPy Version: 1.19.4\n", " key value\n", "0 0 10\n", "1 1 11\n", @@ -392,7 +426,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Pandas Version: 0.24.2\n", + "Pandas Version: 1.1.4\n", " a b\n", "0 0 0.0\n", "1 1 0.1\n", @@ -437,7 +471,7 @@ "0 0 0.0\n", "1 1 0.1\n", "2 2 0.2\n", - "3 3 null\n", + "3 3 \n", "4 4 0.4\n", "5 5 0.5\n", "6 6 0.6\n", @@ -563,261 +597,11 @@ " 96\n", " \n", " \n", - " 5\n", - " 5\n", - " 95\n", - " \n", - " \n", - " 6\n", - " 6\n", - " 94\n", - " \n", - " \n", - " 7\n", - " 7\n", - " 93\n", - " \n", - " \n", - " 8\n", - " 8\n", - " 92\n", - " \n", - " \n", - " 9\n", - " 9\n", - " 91\n", - " \n", - " \n", - " 10\n", - " 10\n", - " 90\n", - " \n", - " \n", - " 11\n", - " 11\n", - " 89\n", - " \n", - " \n", - " 12\n", - " 12\n", - " 88\n", - " \n", - " \n", - " 13\n", - " 13\n", - " 87\n", - " \n", - " \n", - " 14\n", - " 14\n", - " 86\n", - " \n", - " \n", - " 15\n", - " 15\n", - " 85\n", - " \n", - " \n", - " 16\n", - " 16\n", - " 84\n", - " \n", - " \n", - " 17\n", - " 17\n", - " 83\n", - " \n", - " \n", - " 18\n", - " 18\n", - " 82\n", - " \n", - " \n", - " 19\n", - " 19\n", - " 81\n", - " \n", - " \n", - " 20\n", - " 20\n", - " 80\n", - " \n", - " \n", - " 21\n", - " 21\n", - " 79\n", - " \n", - " \n", - " 22\n", - " 22\n", - " 78\n", - " \n", - " \n", - " 23\n", - " 23\n", - " 77\n", - " \n", - " \n", - " 24\n", - " 24\n", - " 76\n", - " \n", - " \n", - " 25\n", - " 25\n", - " 75\n", - " \n", - " \n", - " 26\n", - " 26\n", - " 74\n", - " \n", - " \n", - " 27\n", - " 27\n", - " 73\n", - " \n", - " \n", - " 28\n", - " 28\n", - " 72\n", - " \n", - " \n", - " 29\n", - " 29\n", - " 71\n", - " \n", - " \n", " ...\n", " ...\n", " ...\n", " \n", " \n", - " 70\n", - " 70\n", - " 30\n", - " \n", - " \n", - " 71\n", - " 71\n", - " 29\n", - " \n", - " \n", - " 72\n", - " 72\n", - " 28\n", - " \n", - " \n", - " 73\n", - " 73\n", - " 27\n", - " \n", - " \n", - " 74\n", - " 74\n", - " 26\n", - " \n", - " \n", - " 75\n", - " 75\n", - " 25\n", - " \n", - " \n", - " 76\n", - " 76\n", - " 24\n", - " \n", - " \n", - " 77\n", - " 77\n", - " 23\n", - " \n", - " \n", - " 78\n", - " 78\n", - " 22\n", - " \n", - " \n", - " 79\n", - " 79\n", - " 21\n", - " \n", - " \n", - " 80\n", - " 80\n", - " 20\n", - " \n", - " \n", - " 81\n", - " 81\n", - " 19\n", - " \n", - " \n", - " 82\n", - " 82\n", - " 18\n", - " \n", - " \n", - " 83\n", - " 83\n", - " 17\n", - " \n", - " \n", - " 84\n", - " 84\n", - " 16\n", - " \n", - " \n", - " 85\n", - " 85\n", - " 15\n", - " \n", - " \n", - " 86\n", - " 86\n", - " 14\n", - " \n", - " \n", - " 87\n", - " 87\n", - " 13\n", - " \n", - " \n", - " 88\n", - " 88\n", - " 12\n", - " \n", - " \n", - " 89\n", - " 89\n", - " 11\n", - " \n", - " \n", - " 90\n", - " 90\n", - " 10\n", - " \n", - " \n", - " 91\n", - " 91\n", - " 9\n", - " \n", - " \n", - " 92\n", - " 92\n", - " 8\n", - " \n", - " \n", - " 93\n", - " 93\n", - " 7\n", - " \n", - " \n", - " 94\n", - " 94\n", - " 6\n", - " \n", - " \n", " 95\n", " 95\n", " 5\n", @@ -854,57 +638,7 @@ "2 2 98\n", "3 3 97\n", "4 4 96\n", - "5 5 95\n", - "6 6 94\n", - "7 7 93\n", - "8 8 92\n", - "9 9 91\n", - "10 10 90\n", - "11 11 89\n", - "12 12 88\n", - "13 13 87\n", - "14 14 86\n", - "15 15 85\n", - "16 16 84\n", - "17 17 83\n", - "18 18 82\n", - "19 19 81\n", - "20 20 80\n", - "21 21 79\n", - "22 22 78\n", - "23 23 77\n", - "24 24 76\n", - "25 25 75\n", - "26 26 74\n", - "27 27 73\n", - "28 28 72\n", - "29 29 71\n", ".. .. ...\n", - "70 70 30\n", - "71 71 29\n", - "72 72 28\n", - "73 73 27\n", - "74 74 26\n", - "75 75 25\n", - "76 76 24\n", - "77 77 23\n", - "78 78 22\n", - "79 79 21\n", - "80 80 20\n", - "81 81 19\n", - "82 82 18\n", - "83 83 17\n", - "84 84 16\n", - "85 85 15\n", - "86 86 14\n", - "87 87 13\n", - "88 88 12\n", - "89 89 11\n", - "90 90 10\n", - "91 91 9\n", - "92 92 8\n", - "93 93 7\n", - "94 94 6\n", "95 95 5\n", "96 96 4\n", "97 97 3\n", @@ -945,57 +679,7 @@ "2 2 98\n", "3 3 97\n", "4 4 96\n", - "5 5 95\n", - "6 6 94\n", - "7 7 93\n", - "8 8 92\n", - "9 9 91\n", - "10 10 90\n", - "11 11 89\n", - "12 12 88\n", - "13 13 87\n", - "14 14 86\n", - "15 15 85\n", - "16 16 84\n", - "17 17 83\n", - "18 18 82\n", - "19 19 81\n", - "20 20 80\n", - "21 21 79\n", - "22 22 78\n", - "23 23 77\n", - "24 24 76\n", - "25 25 75\n", - "26 26 74\n", - "27 27 73\n", - "28 28 72\n", - "29 29 71\n", ".. .. ...\n", - "70 70 30\n", - "71 71 29\n", - "72 72 28\n", - "73 73 27\n", - "74 74 26\n", - "75 75 25\n", - "76 76 24\n", - "77 77 23\n", - "78 78 22\n", - "79 79 21\n", - "80 80 20\n", - "81 81 19\n", - "82 82 18\n", - "83 83 17\n", - "84 84 16\n", - "85 85 15\n", - "86 86 14\n", - "87 87 13\n", - "88 88 12\n", - "89 89 11\n", - "90 90 10\n", - "91 91 9\n", - "92 92 8\n", - "93 93 7\n", - "94 94 6\n", "95 95 5\n", "96 96 4\n", "97 97 3\n", @@ -1170,57 +854,7 @@ "2 2.0\n", "3 3.0\n", "4 4.0\n", - "5 5.0\n", - "6 6.0\n", - "7 7.0\n", - "8 8.0\n", - "9 9.0\n", - "10 10.0\n", - "11 11.0\n", - "12 12.0\n", - "13 13.0\n", - "14 14.0\n", - "15 15.0\n", - "16 16.0\n", - "17 17.0\n", - "18 18.0\n", - "19 19.0\n", - "20 20.0\n", - "21 21.0\n", - "22 22.0\n", - "23 23.0\n", - "24 24.0\n", - "25 25.0\n", - "26 26.0\n", - "27 27.0\n", - "28 28.0\n", - "29 29.0\n", " ... \n", - "70 70.0\n", - "71 71.0\n", - "72 72.0\n", - "73 73.0\n", - "74 74.0\n", - "75 75.0\n", - "76 76.0\n", - "77 77.0\n", - "78 78.0\n", - "79 79.0\n", - "80 80.0\n", - "81 81.0\n", - "82 82.0\n", - "83 83.0\n", - "84 84.0\n", - "85 85.0\n", - "86 86.0\n", - "87 87.0\n", - "88 88.0\n", - "89 89.0\n", - "90 90.0\n", - "91 91.0\n", - "92 92.0\n", - "93 93.0\n", - "94 94.0\n", "95 95.0\n", "96 96.0\n", "97 97.0\n", @@ -1252,7 +886,7 @@ { "data": { "text/plain": [ - "RangeIndex(start=0, stop=100)" + "RangeIndex(start=0, stop=100, step=1)" ] }, "execution_count": 25, @@ -1404,57 +1038,7 @@ "2 2.0 98\n", "3 3.0 97\n", "4 4.0 96\n", - "5 5.0 95\n", - "6 6.0 94\n", - "7 7.0 93\n", - "8 8.0 92\n", - "9 9.0 91\n", - "10 10.0 90\n", - "11 11.0 89\n", - "12 12.0 88\n", - "13 13.0 87\n", - "14 14.0 86\n", - "15 15.0 85\n", - "16 16.0 84\n", - "17 17.0 83\n", - "18 18.0 82\n", - "19 19.0 81\n", - "20 20.0 80\n", - "21 21.0 79\n", - "22 22.0 78\n", - "23 23.0 77\n", - "24 24.0 76\n", - "25 25.0 75\n", - "26 26.0 74\n", - "27 27.0 73\n", - "28 28.0 72\n", - "29 29.0 71\n", ".. ... ...\n", - "70 70.0 30\n", - "71 71.0 29\n", - "72 72.0 28\n", - "73 73.0 27\n", - "74 74.0 26\n", - "75 75.0 25\n", - "76 76.0 24\n", - "77 77.0 23\n", - "78 78.0 22\n", - "79 79.0 21\n", - "80 80.0 20\n", - "81 81.0 19\n", - "82 82.0 18\n", - "83 83.0 17\n", - "84 84.0 16\n", - "85 85.0 15\n", - "86 86.0 14\n", - "87 87.0 13\n", - "88 88.0 12\n", - "89 89.0 11\n", - "90 90.0 10\n", - "91 91.0 9\n", - "92 92.0 8\n", - "93 93.0 7\n", - "94 94.0 6\n", "95 95.0 5\n", "96 96.0 4\n", "97 97.0 3\n", @@ -1551,57 +1135,7 @@ "2 2.0\n", "3 3.0\n", "4 4.0\n", - "5 5.0\n", - "6 6.0\n", - "7 7.0\n", - "8 8.0\n", - "9 9.0\n", - "10 10.0\n", - "11 11.0\n", - "12 12.0\n", - "13 13.0\n", - "14 14.0\n", - "15 15.0\n", - "16 16.0\n", - "17 17.0\n", - "18 18.0\n", - "19 19.0\n", - "20 20.0\n", - "21 21.0\n", - "22 22.0\n", - "23 23.0\n", - "24 24.0\n", - "25 25.0\n", - "26 26.0\n", - "27 27.0\n", - "28 28.0\n", - "29 29.0\n", " ... \n", - "70 70.0\n", - "71 71.0\n", - "72 72.0\n", - "73 73.0\n", - "74 74.0\n", - "75 75.0\n", - "76 76.0\n", - "77 77.0\n", - "78 78.0\n", - "79 79.0\n", - "80 80.0\n", - "81 81.0\n", - "82 82.0\n", - "83 83.0\n", - "84 84.0\n", - "85 85.0\n", - "86 86.0\n", - "87 87.0\n", - "88 88.0\n", - "89 89.0\n", - "90 90.0\n", - "91 91.0\n", - "92 92.0\n", - "93 93.0\n", - "94 94.0\n", "95 95.0\n", "96 96.0\n", "97 97.0\n", @@ -1638,57 +1172,7 @@ "2 2.0 98.0\n", "3 3.0 97.0\n", "4 4.0 96.0\n", - "5 5.0 95.0\n", - "6 6.0 94.0\n", - "7 7.0 93.0\n", - "8 8.0 92.0\n", - "9 9.0 91.0\n", - "10 10.0 90.0\n", - "11 11.0 89.0\n", - "12 12.0 88.0\n", - "13 13.0 87.0\n", - "14 14.0 86.0\n", - "15 15.0 85.0\n", - "16 16.0 84.0\n", - "17 17.0 83.0\n", - "18 18.0 82.0\n", - "19 19.0 81.0\n", - "20 20.0 80.0\n", - "21 21.0 79.0\n", - "22 22.0 78.0\n", - "23 23.0 77.0\n", - "24 24.0 76.0\n", - "25 25.0 75.0\n", - "26 26.0 74.0\n", - "27 27.0 73.0\n", - "28 28.0 72.0\n", - "29 29.0 71.0\n", ".. ... ...\n", - "70 70.0 30.0\n", - "71 71.0 29.0\n", - "72 72.0 28.0\n", - "73 73.0 27.0\n", - "74 74.0 26.0\n", - "75 75.0 25.0\n", - "76 76.0 24.0\n", - "77 77.0 23.0\n", - "78 78.0 22.0\n", - "79 79.0 21.0\n", - "80 80.0 20.0\n", - "81 81.0 19.0\n", - "82 82.0 18.0\n", - "83 83.0 17.0\n", - "84 84.0 16.0\n", - "85 85.0 15.0\n", - "86 86.0 14.0\n", - "87 87.0 13.0\n", - "88 88.0 12.0\n", - "89 89.0 11.0\n", - "90 90.0 10.0\n", - "91 91.0 9.0\n", - "92 92.0 8.0\n", - "93 93.0 7.0\n", - "94 94.0 6.0\n", "95 95.0 5.0\n", "96 96.0 4.0\n", "97 97.0 3.0\n", @@ -1719,13 +1203,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "0 0.0\n", - "1 1.0\n", - "2 2.0\n", - "3 3.0\n", - "4 4.0\n", - "5 5.0\n", - "Name: a, dtype: float32\n" + " a\n", + "0 0.0\n", + "1 1.0\n", + "2 2.0\n", + "3 3.0\n", + "4 4.0\n", + "5 5.0\n" ] } ], @@ -1769,57 +1253,7 @@ "2 2.0 98.0 102.0 202.0\n", "3 3.0 97.0 103.0 203.0\n", "4 4.0 96.0 104.0 204.0\n", - "5 5.0 95.0 105.0 205.0\n", - "6 6.0 94.0 106.0 206.0\n", - "7 7.0 93.0 107.0 207.0\n", - "8 8.0 92.0 108.0 208.0\n", - "9 9.0 91.0 109.0 209.0\n", - "10 10.0 90.0 110.0 210.0\n", - "11 11.0 89.0 111.0 211.0\n", - "12 12.0 88.0 112.0 212.0\n", - "13 13.0 87.0 113.0 213.0\n", - "14 14.0 86.0 114.0 214.0\n", - "15 15.0 85.0 115.0 215.0\n", - "16 16.0 84.0 116.0 216.0\n", - "17 17.0 83.0 117.0 217.0\n", - "18 18.0 82.0 118.0 218.0\n", - "19 19.0 81.0 119.0 219.0\n", - "20 20.0 80.0 120.0 220.0\n", - "21 21.0 79.0 121.0 221.0\n", - "22 22.0 78.0 122.0 222.0\n", - "23 23.0 77.0 123.0 223.0\n", - "24 24.0 76.0 124.0 224.0\n", - "25 25.0 75.0 125.0 225.0\n", - "26 26.0 74.0 126.0 226.0\n", - "27 27.0 73.0 127.0 227.0\n", - "28 28.0 72.0 128.0 228.0\n", - "29 29.0 71.0 129.0 229.0\n", ".. ... ... ... ...\n", - "70 70.0 30.0 170.0 270.0\n", - "71 71.0 29.0 171.0 271.0\n", - "72 72.0 28.0 172.0 272.0\n", - "73 73.0 27.0 173.0 273.0\n", - "74 74.0 26.0 174.0 274.0\n", - "75 75.0 25.0 175.0 275.0\n", - "76 76.0 24.0 176.0 276.0\n", - "77 77.0 23.0 177.0 277.0\n", - "78 78.0 22.0 178.0 278.0\n", - "79 79.0 21.0 179.0 279.0\n", - "80 80.0 20.0 180.0 280.0\n", - "81 81.0 19.0 181.0 281.0\n", - "82 82.0 18.0 182.0 282.0\n", - "83 83.0 17.0 183.0 283.0\n", - "84 84.0 16.0 184.0 284.0\n", - "85 85.0 15.0 185.0 285.0\n", - "86 86.0 14.0 186.0 286.0\n", - "87 87.0 13.0 187.0 287.0\n", - "88 88.0 12.0 188.0 288.0\n", - "89 89.0 11.0 189.0 289.0\n", - "90 90.0 10.0 190.0 290.0\n", - "91 91.0 9.0 191.0 291.0\n", - "92 92.0 8.0 192.0 292.0\n", - "93 93.0 7.0 193.0 293.0\n", - "94 94.0 6.0 194.0 294.0\n", "95 95.0 5.0 195.0 295.0\n", "96 96.0 4.0 196.0 296.0\n", "97 97.0 3.0 197.0 297.0\n", @@ -1851,57 +1285,7 @@ "2 2.0 98.0 102.0 202.0 302.0\n", "3 3.0 97.0 103.0 203.0 303.0\n", "4 4.0 96.0 104.0 204.0 304.0\n", - "5 5.0 95.0 105.0 205.0 305.0\n", - "6 6.0 94.0 106.0 206.0 306.0\n", - "7 7.0 93.0 107.0 207.0 307.0\n", - "8 8.0 92.0 108.0 208.0 308.0\n", - "9 9.0 91.0 109.0 209.0 309.0\n", - "10 10.0 90.0 110.0 210.0 310.0\n", - "11 11.0 89.0 111.0 211.0 311.0\n", - "12 12.0 88.0 112.0 212.0 312.0\n", - "13 13.0 87.0 113.0 213.0 313.0\n", - "14 14.0 86.0 114.0 214.0 314.0\n", - "15 15.0 85.0 115.0 215.0 315.0\n", - "16 16.0 84.0 116.0 216.0 316.0\n", - "17 17.0 83.0 117.0 217.0 317.0\n", - "18 18.0 82.0 118.0 218.0 318.0\n", - "19 19.0 81.0 119.0 219.0 319.0\n", - "20 20.0 80.0 120.0 220.0 320.0\n", - "21 21.0 79.0 121.0 221.0 321.0\n", - "22 22.0 78.0 122.0 222.0 322.0\n", - "23 23.0 77.0 123.0 223.0 323.0\n", - "24 24.0 76.0 124.0 224.0 324.0\n", - "25 25.0 75.0 125.0 225.0 325.0\n", - "26 26.0 74.0 126.0 226.0 326.0\n", - "27 27.0 73.0 127.0 227.0 327.0\n", - "28 28.0 72.0 128.0 228.0 328.0\n", - "29 29.0 71.0 129.0 229.0 329.0\n", ".. ... ... ... ... ...\n", - "70 70.0 30.0 170.0 270.0 370.0\n", - "71 71.0 29.0 171.0 271.0 371.0\n", - "72 72.0 28.0 172.0 272.0 372.0\n", - "73 73.0 27.0 173.0 273.0 373.0\n", - "74 74.0 26.0 174.0 274.0 374.0\n", - "75 75.0 25.0 175.0 275.0 375.0\n", - "76 76.0 24.0 176.0 276.0 376.0\n", - "77 77.0 23.0 177.0 277.0 377.0\n", - "78 78.0 22.0 178.0 278.0 378.0\n", - "79 79.0 21.0 179.0 279.0 379.0\n", - "80 80.0 20.0 180.0 280.0 380.0\n", - "81 81.0 19.0 181.0 281.0 381.0\n", - "82 82.0 18.0 182.0 282.0 382.0\n", - "83 83.0 17.0 183.0 283.0 383.0\n", - "84 84.0 16.0 184.0 284.0 384.0\n", - "85 85.0 15.0 185.0 285.0 385.0\n", - "86 86.0 14.0 186.0 286.0 386.0\n", - "87 87.0 13.0 187.0 287.0 387.0\n", - "88 88.0 12.0 188.0 288.0 388.0\n", - "89 89.0 11.0 189.0 289.0 389.0\n", - "90 90.0 10.0 190.0 290.0 390.0\n", - "91 91.0 9.0 191.0 291.0 391.0\n", - "92 92.0 8.0 192.0 292.0 392.0\n", - "93 93.0 7.0 193.0 293.0 393.0\n", - "94 94.0 6.0 194.0 294.0 394.0\n", "95 95.0 5.0 195.0 295.0 395.0\n", "96 96.0 4.0 196.0 296.0 396.0\n", "97 97.0 3.0 197.0 297.0 397.0\n", @@ -1914,8 +1298,8 @@ ], "source": [ "data = np.arange(300, 400).astype(np.float32)\n", - "df.add_column('e', data)\n", - "\n", + "# df.add_column('e', data)\n", + "df['e'] = data\n", "print(df)" ] }, @@ -1948,75 +1332,26 @@ "name": "stdout", "output_type": "stream", "text": [ - " b c\n", - "0 100.0 100.0\n", - "1 99.0 101.0\n", - "2 98.0 102.0\n", - "3 97.0 103.0\n", - "4 96.0 104.0\n", - "5 95.0 105.0\n", - "6 94.0 106.0\n", - "7 93.0 107.0\n", - "8 92.0 108.0\n", - "9 91.0 109.0\n", - "10 90.0 110.0\n", - "11 89.0 111.0\n", - "12 88.0 112.0\n", - "13 87.0 113.0\n", - "14 86.0 114.0\n", - "15 85.0 115.0\n", - "16 84.0 116.0\n", - "17 83.0 117.0\n", - "18 82.0 118.0\n", - "19 81.0 119.0\n", - "20 80.0 120.0\n", - "21 79.0 121.0\n", - "22 78.0 122.0\n", - "23 77.0 123.0\n", - "24 76.0 124.0\n", - "25 75.0 125.0\n", - "26 74.0 126.0\n", - "27 73.0 127.0\n", - "28 72.0 128.0\n", - "29 71.0 129.0\n", - ".. ... ...\n", - "70 30.0 170.0\n", - "71 29.0 171.0\n", - "72 28.0 172.0\n", - "73 27.0 173.0\n", - "74 26.0 174.0\n", - "75 25.0 175.0\n", - "76 24.0 176.0\n", - "77 23.0 177.0\n", - "78 22.0 178.0\n", - "79 21.0 179.0\n", - "80 20.0 180.0\n", - "81 19.0 181.0\n", - "82 18.0 182.0\n", - "83 17.0 183.0\n", - "84 16.0 184.0\n", - "85 15.0 185.0\n", - "86 14.0 186.0\n", - "87 13.0 187.0\n", - "88 12.0 188.0\n", - "89 11.0 189.0\n", - "90 10.0 190.0\n", - "91 9.0 191.0\n", - "92 8.0 192.0\n", - "93 7.0 193.0\n", - "94 6.0 194.0\n", - "95 5.0 195.0\n", - "96 4.0 196.0\n", - "97 3.0 197.0\n", - "98 2.0 198.0\n", - "99 1.0 199.0\n", + " a b c\n", + "0 0.0 100.0 100.0\n", + "1 1.0 99.0 101.0\n", + "2 2.0 98.0 102.0\n", + "3 3.0 97.0 103.0\n", + "4 4.0 96.0 104.0\n", + ".. ... ... ...\n", + "95 95.0 5.0 195.0\n", + "96 96.0 4.0 196.0\n", + "97 97.0 3.0 197.0\n", + "98 98.0 2.0 198.0\n", + "99 99.0 1.0 199.0\n", "\n", - "[100 rows x 2 columns]\n" + "[100 rows x 3 columns]\n" ] } ], "source": [ - "df.drop_column('a')\n", + "# df.drop_column('a')\n", + "df.drop(['a'], axis=1)\n", "print(df)" ] }, @@ -2054,57 +1389,7 @@ "2 2.0 98.0 102.0\n", "3 3.0 97.0 103.0\n", "4 4.0 96.0 104.0\n", - "5 5.0 95.0 105.0\n", - "6 6.0 94.0 106.0\n", - "7 7.0 93.0 107.0\n", - "8 8.0 92.0 108.0\n", - "9 9.0 91.0 109.0\n", - "10 10.0 90.0 110.0\n", - "11 11.0 89.0 111.0\n", - "12 12.0 88.0 112.0\n", - "13 13.0 87.0 113.0\n", - "14 14.0 86.0 114.0\n", - "15 15.0 85.0 115.0\n", - "16 16.0 84.0 116.0\n", - "17 17.0 83.0 117.0\n", - "18 18.0 82.0 118.0\n", - "19 19.0 81.0 119.0\n", - "20 20.0 80.0 120.0\n", - "21 21.0 79.0 121.0\n", - "22 22.0 78.0 122.0\n", - "23 23.0 77.0 123.0\n", - "24 24.0 76.0 124.0\n", - "25 25.0 75.0 125.0\n", - "26 26.0 74.0 126.0\n", - "27 27.0 73.0 127.0\n", - "28 28.0 72.0 128.0\n", - "29 29.0 71.0 129.0\n", ".. ... ... ...\n", - "70 70.0 30.0 170.0\n", - "71 71.0 29.0 171.0\n", - "72 72.0 28.0 172.0\n", - "73 73.0 27.0 173.0\n", - "74 74.0 26.0 174.0\n", - "75 75.0 25.0 175.0\n", - "76 76.0 24.0 176.0\n", - "77 77.0 23.0 177.0\n", - "78 78.0 22.0 178.0\n", - "79 79.0 21.0 179.0\n", - "80 80.0 20.0 180.0\n", - "81 81.0 19.0 181.0\n", - "82 82.0 18.0 182.0\n", - "83 83.0 17.0 183.0\n", - "84 84.0 16.0 184.0\n", - "85 85.0 15.0 185.0\n", - "86 86.0 14.0 186.0\n", - "87 87.0 13.0 187.0\n", - "88 88.0 12.0 188.0\n", - "89 89.0 11.0 189.0\n", - "90 90.0 10.0 190.0\n", - "91 91.0 9.0 191.0\n", - "92 92.0 8.0 192.0\n", - "93 93.0 7.0 193.0\n", - "94 94.0 6.0 194.0\n", "95 95.0 5.0 195.0\n", "96 96.0 4.0 196.0\n", "97 97.0 3.0 197.0\n", @@ -2120,57 +1405,7 @@ "2 98.0 102.0\n", "3 97.0 103.0\n", "4 96.0 104.0\n", - "5 95.0 105.0\n", - "6 94.0 106.0\n", - "7 93.0 107.0\n", - "8 92.0 108.0\n", - "9 91.0 109.0\n", - "10 90.0 110.0\n", - "11 89.0 111.0\n", - "12 88.0 112.0\n", - "13 87.0 113.0\n", - "14 86.0 114.0\n", - "15 85.0 115.0\n", - "16 84.0 116.0\n", - "17 83.0 117.0\n", - "18 82.0 118.0\n", - "19 81.0 119.0\n", - "20 80.0 120.0\n", - "21 79.0 121.0\n", - "22 78.0 122.0\n", - "23 77.0 123.0\n", - "24 76.0 124.0\n", - "25 75.0 125.0\n", - "26 74.0 126.0\n", - "27 73.0 127.0\n", - "28 72.0 128.0\n", - "29 71.0 129.0\n", ".. ... ...\n", - "70 30.0 170.0\n", - "71 29.0 171.0\n", - "72 28.0 172.0\n", - "73 27.0 173.0\n", - "74 26.0 174.0\n", - "75 25.0 175.0\n", - "76 24.0 176.0\n", - "77 23.0 177.0\n", - "78 22.0 178.0\n", - "79 21.0 179.0\n", - "80 20.0 180.0\n", - "81 19.0 181.0\n", - "82 18.0 182.0\n", - "83 17.0 183.0\n", - "84 16.0 184.0\n", - "85 15.0 185.0\n", - "86 14.0 186.0\n", - "87 13.0 187.0\n", - "88 12.0 188.0\n", - "89 11.0 189.0\n", - "90 10.0 190.0\n", - "91 9.0 191.0\n", - "92 8.0 192.0\n", - "93 7.0 193.0\n", - "94 6.0 194.0\n", "95 5.0 195.0\n", "96 4.0 196.0\n", "97 3.0 197.0\n", @@ -2182,8 +1417,8 @@ } ], "source": [ - "new_df = df.drop('a')\n", - "\n", + "# new_df = df.drop('a')\n", + "new_df = df.drop(['a'], axis=1)\n", "print('Original DataFrame:')\n", "print(df)\n", "print(79 * '-')\n", @@ -2214,57 +1449,7 @@ "2 2.0 98.0 102.0\n", "3 3.0 97.0 103.0\n", "4 4.0 96.0 104.0\n", - "5 5.0 95.0 105.0\n", - "6 6.0 94.0 106.0\n", - "7 7.0 93.0 107.0\n", - "8 8.0 92.0 108.0\n", - "9 9.0 91.0 109.0\n", - "10 10.0 90.0 110.0\n", - "11 11.0 89.0 111.0\n", - "12 12.0 88.0 112.0\n", - "13 13.0 87.0 113.0\n", - "14 14.0 86.0 114.0\n", - "15 15.0 85.0 115.0\n", - "16 16.0 84.0 116.0\n", - "17 17.0 83.0 117.0\n", - "18 18.0 82.0 118.0\n", - "19 19.0 81.0 119.0\n", - "20 20.0 80.0 120.0\n", - "21 21.0 79.0 121.0\n", - "22 22.0 78.0 122.0\n", - "23 23.0 77.0 123.0\n", - "24 24.0 76.0 124.0\n", - "25 25.0 75.0 125.0\n", - "26 26.0 74.0 126.0\n", - "27 27.0 73.0 127.0\n", - "28 28.0 72.0 128.0\n", - "29 29.0 71.0 129.0\n", ".. ... ... ...\n", - "70 70.0 30.0 170.0\n", - "71 71.0 29.0 171.0\n", - "72 72.0 28.0 172.0\n", - "73 73.0 27.0 173.0\n", - "74 74.0 26.0 174.0\n", - "75 75.0 25.0 175.0\n", - "76 76.0 24.0 176.0\n", - "77 77.0 23.0 177.0\n", - "78 78.0 22.0 178.0\n", - "79 79.0 21.0 179.0\n", - "80 80.0 20.0 180.0\n", - "81 81.0 19.0 181.0\n", - "82 82.0 18.0 182.0\n", - "83 83.0 17.0 183.0\n", - "84 84.0 16.0 184.0\n", - "85 85.0 15.0 185.0\n", - "86 86.0 14.0 186.0\n", - "87 87.0 13.0 187.0\n", - "88 88.0 12.0 188.0\n", - "89 89.0 11.0 189.0\n", - "90 90.0 10.0 190.0\n", - "91 91.0 9.0 191.0\n", - "92 92.0 8.0 192.0\n", - "93 93.0 7.0 193.0\n", - "94 94.0 6.0 194.0\n", "95 95.0 5.0 195.0\n", "96 96.0 4.0 196.0\n", "97 97.0 3.0 197.0\n", @@ -2280,57 +1465,7 @@ "2 102.0\n", "3 103.0\n", "4 104.0\n", - "5 105.0\n", - "6 106.0\n", - "7 107.0\n", - "8 108.0\n", - "9 109.0\n", - "10 110.0\n", - "11 111.0\n", - "12 112.0\n", - "13 113.0\n", - "14 114.0\n", - "15 115.0\n", - "16 116.0\n", - "17 117.0\n", - "18 118.0\n", - "19 119.0\n", - "20 120.0\n", - "21 121.0\n", - "22 122.0\n", - "23 123.0\n", - "24 124.0\n", - "25 125.0\n", - "26 126.0\n", - "27 127.0\n", - "28 128.0\n", - "29 129.0\n", ".. ...\n", - "70 170.0\n", - "71 171.0\n", - "72 172.0\n", - "73 173.0\n", - "74 174.0\n", - "75 175.0\n", - "76 176.0\n", - "77 177.0\n", - "78 178.0\n", - "79 179.0\n", - "80 180.0\n", - "81 181.0\n", - "82 182.0\n", - "83 183.0\n", - "84 184.0\n", - "85 185.0\n", - "86 186.0\n", - "87 187.0\n", - "88 188.0\n", - "89 189.0\n", - "90 190.0\n", - "91 191.0\n", - "92 192.0\n", - "93 193.0\n", - "94 194.0\n", "95 195.0\n", "96 196.0\n", "97 197.0\n", @@ -2342,7 +1477,8 @@ } ], "source": [ - "new_df = df.drop(['a', 'b'])\n", + "# new_df = df.drop(['a', 'b'])\n", + "new_df = df.drop(['a', 'b'], axis=1)\n", "\n", "print('Original DataFrame:')\n", "print(df)\n", @@ -2371,15 +1507,15 @@ "text": [ " a b c\n", "0 0 0.0 0.0\n", - "1 null 0.1 0.1\n", - "2 2 0.2 null\n", - "3 3 null null\n", + "1 0.1 0.1\n", + "2 2 0.2 \n", + "3 3 \n", "4 4 0.4 0.4\n", "5 5 0.5 0.5\n", - "6 6 0.6 null\n", + "6 6 0.6 \n", "7 7 0.7 0.7\n", "8 8 0.8 0.8\n", - "9 null 0.9 0.9\n", + "9 0.9 0.9\n", "10 10 1.0 1.0\n" ] } @@ -2409,15 +1545,15 @@ "text": [ " a b c\n", "0 0 0.0 0.0\n", - "1 null 0.1 0.1\n", + "1 0.1 0.1\n", "2 2 0.2 999.0\n", - "3 3 null 999.0\n", + "3 3 999.0\n", "4 4 0.4 0.4\n", "5 5 0.5 0.5\n", "6 6 0.6 999.0\n", "7 7 0.7 0.7\n", "8 8 0.8 0.8\n", - "9 null 0.9 0.9\n", + "9 0.9 0.9\n", "10 10 1.0 1.0\n" ] } @@ -2527,14 +1663,14 @@ " \n", " 77\n", " 3\n", - " 1\n", + " 0\n", " 77\n", " 23\n", " \n", " \n", " 78\n", " 3\n", - " 0\n", + " 1\n", " 78\n", " 22\n", " \n", @@ -2562,7 +1698,7 @@ " \n", " 82\n", " 3\n", - " 0\n", + " 1\n", " 82\n", " 18\n", " \n", @@ -2576,7 +1712,7 @@ " \n", " 84\n", " 3\n", - " 1\n", + " 0\n", " 84\n", " 16\n", " \n", @@ -2590,14 +1726,14 @@ " \n", " 86\n", " 3\n", - " 0\n", + " 1\n", " 86\n", " 14\n", " \n", " \n", " 87\n", " 3\n", - " 0\n", + " 1\n", " 87\n", " 13\n", " \n", @@ -2618,28 +1754,28 @@ " \n", " 90\n", " 3\n", - " 1\n", + " 0\n", " 90\n", " 10\n", " \n", " \n", " 91\n", " 3\n", - " 1\n", + " 0\n", " 91\n", " 9\n", " \n", " \n", " 92\n", " 3\n", - " 0\n", + " 1\n", " 92\n", " 8\n", " \n", " \n", " 93\n", " 3\n", - " 1\n", + " 0\n", " 93\n", " 7\n", " \n", @@ -2653,7 +1789,7 @@ " \n", " 95\n", " 3\n", - " 0\n", + " 1\n", " 95\n", " 5\n", " \n", @@ -2681,7 +1817,7 @@ " \n", " 99\n", " 3\n", - " 1\n", + " 0\n", " 99\n", " 1\n", " \n", @@ -2693,29 +1829,29 @@ " a b c d\n", "75 3 0 75 25\n", "76 3 0 76 24\n", - "77 3 1 77 23\n", - "78 3 0 78 22\n", + "77 3 0 77 23\n", + "78 3 1 78 22\n", "79 3 0 79 21\n", "80 3 0 80 20\n", "81 3 0 81 19\n", - "82 3 0 82 18\n", + "82 3 1 82 18\n", "83 3 1 83 17\n", - "84 3 1 84 16\n", + "84 3 0 84 16\n", "85 3 0 85 15\n", - "86 3 0 86 14\n", - "87 3 0 87 13\n", + "86 3 1 86 14\n", + "87 3 1 87 13\n", "88 3 0 88 12\n", "89 3 0 89 11\n", - "90 3 1 90 10\n", - "91 3 1 91 9\n", - "92 3 0 92 8\n", - "93 3 1 93 7\n", + "90 3 0 90 10\n", + "91 3 0 91 9\n", + "92 3 1 92 8\n", + "93 3 0 93 7\n", "94 3 1 94 6\n", - "95 3 0 95 5\n", + "95 3 1 95 5\n", "96 3 0 96 4\n", "97 3 0 97 3\n", "98 3 1 98 2\n", - "99 3 1 99 1" + "99 3 0 99 1" ] }, "execution_count": 48, @@ -2749,10 +1885,10 @@ "output_type": "stream", "text": [ " a b c d\n", - "0 0 1 0 100\n", - "1 0 1 1 99\n", - "2 0 0 2 98\n", - "3 0 1 3 97\n", + "0 0 0 0 100\n", + "1 0 0 1 99\n", + "2 0 1 2 98\n", + "3 0 0 3 97\n", "4 0 0 4 96\n" ] } @@ -2775,8 +1911,8 @@ "output_type": "stream", "text": [ " a b c d\n", - "99 3 0 99 1\n", - "98 3 1 98 2\n", + "99 3 1 99 1\n", + "98 3 0 98 2\n", "97 3 0 97 3\n", "96 3 0 96 4\n", "95 3 1 95 5\n" @@ -2804,8 +1940,8 @@ "output_type": "stream", "text": [ " a b c d\n", - "99 3 0 99 1\n", - "98 3 1 98 2\n", + "99 3 1 99 1\n", + "98 3 0 98 2\n", "97 3 0 97 3\n", "96 3 0 96 4\n", "95 3 1 95 5\n" @@ -2832,12 +1968,12 @@ "name": "stdout", "output_type": "stream", "text": [ - " a b c d\n", - "2 0 0 2 98\n", - "4 0 0 4 96\n", - "5 0 0 5 95\n", - "8 0 0 8 92\n", - "9 0 0 9 91\n" + " a b c d\n", + "0 0 0 0 100\n", + "1 0 0 1 99\n", + "3 0 0 3 97\n", + "4 0 0 4 96\n", + "5 0 0 5 95\n" ] } ], @@ -2857,32 +1993,33 @@ "execution_count": 53, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:When using a sequence of booleans for `ascending`, `na_position` flag is not yet supported and defaults to treating nulls as greater than all numbers\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ "Sort with all columns specified descending:\n", " a b c d\n", - "76 3 1 76 24\n", - "77 3 1 77 23\n", - "79 3 1 79 21\n", + "75 3 1 75 25\n", + "78 3 1 78 22\n", "81 3 1 81 19\n", - "84 3 1 84 16\n", + "83 3 1 83 17\n", + "85 3 1 85 15\n", "-------------------------------------------------------------------------------\n", "Sort with both a descending and b ascending:\n", " a b c d\n", - "75 3 0 75 25\n", - "78 3 0 78 22\n", + "76 3 0 76 24\n", + "77 3 0 77 23\n", + "79 3 0 79 21\n", "80 3 0 80 20\n", - "82 3 0 82 18\n", - "83 3 0 83 17\n" + "82 3 0 82 18\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/cudf/core/frame.py:2561: UserWarning: When using a sequence of booleans for `ascending`, `na_position` flag is not yet supported and defaults to treating nulls as greater than all numbers\n", + " \"When using a sequence of booleans for `ascending`, \"\n" ] } ], @@ -2948,7 +2085,7 @@ "b 48\n", "c 4950\n", "d 5050\n", - "dtype: int64\n" + "dtype: int32\n" ] } ], @@ -2991,57 +2128,7 @@ "2 12\n", "3 13\n", "4 14\n", - "5 15\n", - "6 16\n", - "7 17\n", - "8 18\n", - "9 19\n", - "10 20\n", - "11 21\n", - "12 22\n", - "13 23\n", - "14 24\n", - "15 25\n", - "16 26\n", - "17 27\n", - "18 28\n", - "19 29\n", - "20 30\n", - "21 31\n", - "22 32\n", - "23 33\n", - "24 34\n", - "25 35\n", - "26 36\n", - "27 37\n", - "28 38\n", - "29 39\n", " ... \n", - "70 80\n", - "71 81\n", - "72 82\n", - "73 83\n", - "74 84\n", - "75 85\n", - "76 86\n", - "77 87\n", - "78 88\n", - "79 89\n", - "80 90\n", - "81 91\n", - "82 92\n", - "83 93\n", - "84 94\n", - "85 95\n", - "86 96\n", - "87 97\n", - "88 98\n", - "89 99\n", - "90 100\n", - "91 101\n", - "92 102\n", - "93 103\n", - "94 104\n", "95 105\n", "96 106\n", "97 107\n", @@ -3164,14 +2251,14 @@ " \n", " 0\n", " 0\n", - " 1\n", + " 0\n", " 0\n", " 100\n", " \n", " \n", " 1\n", " 0\n", - " 0\n", + " 1\n", " 1\n", " 99\n", " \n", @@ -3185,7 +2272,7 @@ " \n", " 3\n", " 0\n", - " 1\n", + " 0\n", " 3\n", " 97\n", " \n", @@ -3197,1167 +2284,217 @@ " 96\n", " \n", " \n", - " 5\n", - " 0\n", - " 0\n", - " 5\n", - " 95\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", - " 6\n", - " 0\n", + " 95\n", + " 3\n", " 0\n", - " 6\n", - " 94\n", + " 95\n", + " 5\n", " \n", " \n", - " 7\n", - " 0\n", + " 96\n", + " 3\n", " 1\n", - " 7\n", - " 93\n", + " 96\n", + " 4\n", " \n", " \n", - " 8\n", - " 0\n", - " 0\n", - " 8\n", - " 92\n", + " 97\n", + " 3\n", + " 1\n", + " 97\n", + " 3\n", " \n", " \n", - " 9\n", + " 98\n", + " 3\n", " 0\n", - " 1\n", - " 9\n", - " 91\n", + " 98\n", + " 2\n", " \n", " \n", - " 10\n", + " 99\n", + " 3\n", " 0\n", + " 99\n", " 1\n", - " 10\n", - " 90\n", " \n", - " \n", - " 11\n", - " 0\n", - " 0\n", - " 11\n", - " 89\n", + " \n", + "\n", + "

200 rows × 4 columns

\n", + "" + ], + "text/plain": [ + " a b c d\n", + "0 0 0 0 100\n", + "1 0 1 1 99\n", + "2 0 1 2 98\n", + "3 0 0 3 97\n", + "4 0 1 4 96\n", + ".. .. .. .. ...\n", + "95 3 0 95 5\n", + "96 3 1 96 4\n", + "97 3 1 97 3\n", + "98 3 0 98 2\n", + "99 3 0 99 1\n", + "\n", + "[200 rows x 4 columns]" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = cudf.concat([df1, df2], axis=0)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "df1 = cudf.DataFrame({'a': np.repeat([0, 1, 2, 3], 25).astype(np.int32), \n", + " 'b': np.random.randint(2, size=100).astype(np.int32), \n", + " 'c': np.arange(0, 100).astype(np.int32), \n", + " 'd': np.arange(100, 0, -1).astype(np.int32)})\n", + "df2 = cudf.DataFrame({'e': np.repeat([0, 1, 2, 3], 25).astype(np.int32), \n", + " 'f': np.random.randint(2, size=100).astype(np.int32), \n", + " 'g': np.arange(0, 100).astype(np.int32), \n", + " 'h': np.arange(100, 0, -1).astype(np.int32)})" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
abcdefgh
1200101288
131000113870100
141001486
15199001158599
162001684
17298001783298
183011882
19397011981
20012080397
214012179
22496012278496
23012377...........................
249530955302476955
25102575
26112674
27112773
28112872
29102971
...............
70207030
71217129
72217228
73207327
74207426
75307525
76317624
77307723
78307822
79307921
80318020
81318119
82308218
83318317
84318416
85308515
86308614
87318713
88308812
89318911
90319010
9130919
9231928
9330937
9430946
9530955
9630964
9730973
9831982
9930991
\n", - "

200 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " a b c d\n", - "0 0 1 0 100\n", - "1 0 0 1 99\n", - "2 0 1 2 98\n", - "3 0 1 3 97\n", - "4 0 1 4 96\n", - "5 0 0 5 95\n", - "6 0 0 6 94\n", - "7 0 1 7 93\n", - "8 0 0 8 92\n", - "9 0 1 9 91\n", - "10 0 1 10 90\n", - "11 0 0 11 89\n", - "12 0 0 12 88\n", - "13 0 1 13 87\n", - "14 0 0 14 86\n", - "15 0 1 15 85\n", - "16 0 0 16 84\n", - "17 0 0 17 83\n", - "18 0 1 18 82\n", - "19 0 1 19 81\n", - "20 0 1 20 80\n", - "21 0 1 21 79\n", - "22 0 1 22 78\n", - "23 0 1 23 77\n", - "24 0 0 24 76\n", - "25 1 0 25 75\n", - "26 1 1 26 74\n", - "27 1 1 27 73\n", - "28 1 1 28 72\n", - "29 1 0 29 71\n", - ".. .. .. .. ...\n", - "70 2 0 70 30\n", - "71 2 1 71 29\n", - "72 2 1 72 28\n", - "73 2 0 73 27\n", - "74 2 0 74 26\n", - "75 3 0 75 25\n", - "76 3 1 76 24\n", - "77 3 0 77 23\n", - "78 3 0 78 22\n", - "79 3 0 79 21\n", - "80 3 1 80 20\n", - "81 3 1 81 19\n", - "82 3 0 82 18\n", - "83 3 1 83 17\n", - "84 3 1 84 16\n", - "85 3 0 85 15\n", - "86 3 0 86 14\n", - "87 3 1 87 13\n", - "88 3 0 88 12\n", - "89 3 1 89 11\n", - "90 3 1 90 10\n", - "91 3 0 91 9\n", - "92 3 1 92 8\n", - "93 3 0 93 7\n", - "94 3 0 94 6\n", - "95 3 0 95 5\n", - "96 3 0 96 4\n", - "97 3 0 97 3\n", - "98 3 1 98 2\n", - "99 3 0 99 1\n", - "\n", - "[200 rows x 4 columns]" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = cudf.concat([df1, df2], axis=0)\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "df1 = cudf.DataFrame({'a': np.repeat([0, 1, 2, 3], 25).astype(np.int32), \n", - " 'b': np.random.randint(2, size=100).astype(np.int32), \n", - " 'c': np.arange(0, 100).astype(np.int32), \n", - " 'd': np.arange(100, 0, -1).astype(np.int32)})\n", - "df2 = cudf.DataFrame({'e': np.repeat([0, 1, 2, 3], 25).astype(np.int32), \n", - " 'f': np.random.randint(2, size=100).astype(np.int32), \n", - " 'g': np.arange(0, 100).astype(np.int32), \n", - " 'h': np.arange(100, 0, -1).astype(np.int32)})" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4368,18 +2505,18 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4390,7 +2527,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4402,66 +2539,16 @@ "text/plain": [ " a b c d e f g h\n", "0 0 1 0 100 0 1 0 100\n", - "1 0 1 1 99 0 1 1 99\n", + "1 0 0 1 99 0 0 1 99\n", "2 0 0 2 98 0 0 2 98\n", - "3 0 0 3 97 0 0 3 97\n", + "3 0 1 3 97 0 0 3 97\n", "4 0 1 4 96 0 1 4 96\n", - "5 0 1 5 95 0 0 5 95\n", - "6 0 1 6 94 0 1 6 94\n", - "7 0 0 7 93 0 1 7 93\n", - "8 0 1 8 92 0 0 8 92\n", - "9 0 0 9 91 0 0 9 91\n", - "10 0 0 10 90 0 1 10 90\n", - "11 0 0 11 89 0 0 11 89\n", - "12 0 0 12 88 0 1 12 88\n", - "13 0 0 13 87 0 1 13 87\n", - "14 0 0 14 86 0 1 14 86\n", - "15 0 1 15 85 0 1 15 85\n", - "16 0 1 16 84 0 0 16 84\n", - "17 0 1 17 83 0 1 17 83\n", - "18 0 0 18 82 0 1 18 82\n", - "19 0 1 19 81 0 1 19 81\n", - "20 0 1 20 80 0 1 20 80\n", - "21 0 0 21 79 0 0 21 79\n", - "22 0 0 22 78 0 1 22 78\n", - "23 0 1 23 77 0 1 23 77\n", - "24 0 1 24 76 0 1 24 76\n", - "25 1 0 25 75 1 0 25 75\n", - "26 1 0 26 74 1 0 26 74\n", - "27 1 1 27 73 1 0 27 73\n", - "28 1 0 28 72 1 1 28 72\n", - "29 1 0 29 71 1 1 29 71\n", ".. .. .. .. ... .. .. .. ...\n", - "70 2 1 70 30 2 0 70 30\n", - "71 2 0 71 29 2 1 71 29\n", - "72 2 0 72 28 2 1 72 28\n", - "73 2 1 73 27 2 0 73 27\n", - "74 2 0 74 26 2 1 74 26\n", - "75 3 0 75 25 3 0 75 25\n", - "76 3 0 76 24 3 0 76 24\n", - "77 3 0 77 23 3 0 77 23\n", - "78 3 1 78 22 3 0 78 22\n", - "79 3 1 79 21 3 1 79 21\n", - "80 3 1 80 20 3 0 80 20\n", - "81 3 1 81 19 3 1 81 19\n", - "82 3 1 82 18 3 1 82 18\n", - "83 3 0 83 17 3 0 83 17\n", - "84 3 1 84 16 3 1 84 16\n", - "85 3 0 85 15 3 0 85 15\n", - "86 3 0 86 14 3 0 86 14\n", - "87 3 0 87 13 3 0 87 13\n", - "88 3 1 88 12 3 1 88 12\n", - "89 3 1 89 11 3 0 89 11\n", - "90 3 1 90 10 3 1 90 10\n", - "91 3 0 91 9 3 0 91 9\n", - "92 3 1 92 8 3 1 92 8\n", - "93 3 1 93 7 3 0 93 7\n", - "94 3 1 94 6 3 0 94 6\n", - "95 3 0 95 5 3 1 95 5\n", - "96 3 0 96 4 3 1 96 4\n", - "97 3 1 97 3 3 1 97 3\n", - "98 3 0 98 2 3 0 98 2\n", - "99 3 0 99 1 3 0 99 1\n", + "95 3 0 95 5 3 0 95 5\n", + "96 3 0 96 4 3 0 96 4\n", + "97 3 1 97 3 3 0 97 3\n", + "98 3 1 98 2 3 1 98 2\n", + "99 3 0 99 1 3 1 99 1\n", "\n", "[100 rows x 8 columns]" ] @@ -4516,11 +2603,11 @@ "output_type": "stream", "text": [ " a b c d e f\n", - "0 0 0 0 100 0 100\n", - "1 0 1 1 99 4 96\n", - "2 0 0 2 98 0 100\n", + "0 0 1 0 100 1 99\n", + "1 0 1 1 99 1 99\n", + "2 0 1 2 98 1 99\n", "3 0 0 3 97 0 100\n", - "4 0 1 4 96 4 96\n" + "4 0 0 4 96 0 100\n" ] } ], @@ -4539,11 +2626,11 @@ "output_type": "stream", "text": [ " a b_x c d b_y e f\n", - "0 0 0 0 100 0 0 100\n", + "0 0 1 0 100 0 0 100\n", "1 0 1 1 99 0 0 100\n", - "2 0 0 2 98 0 0 100\n", + "2 0 1 2 98 0 0 100\n", "3 0 0 3 97 0 0 100\n", - "4 0 1 4 96 0 0 100\n" + "4 0 0 4 96 0 0 100\n" ] } ], @@ -4562,11 +2649,11 @@ "output_type": "stream", "text": [ " a b c d e f\n", - "0 0 0 0 100 0 100\n", - "1 0 1 1 99 4 96\n", - "2 0 0 2 98 0 100\n", + "0 0 1 0 100 1 99\n", + "1 0 1 1 99 1 99\n", + "2 0 1 2 98 1 99\n", "3 0 0 3 97 0 100\n", - "4 0 1 4 96 4 96\n" + "4 0 0 4 96 0 100\n" ] } ], @@ -4585,11 +2672,11 @@ "output_type": "stream", "text": [ " a b c d e f\n", - "0 0 0 0 100 0 100\n", - "1 0 1 1 99 4 96\n", - "2 0 0 2 98 0 100\n", + "0 0 1 0 100 1 99\n", + "1 0 1 1 99 1 99\n", + "2 0 1 2 98 1 99\n", "3 0 0 3 97 0 100\n", - "4 0 1 4 96 4 96\n" + "4 0 0 4 96 0 100\n" ] } ], @@ -4608,11 +2695,11 @@ "output_type": "stream", "text": [ " a b_x c d b_y e f\n", - "0 0 0 0 100 0 0 100\n", + "0 0 1 0 100 0 0 100\n", "1 0 1 1 99 0 0 100\n", - "2 0 0 2 98 0 0 100\n", + "2 0 1 2 98 0 0 100\n", "3 0 0 3 97 0 0 100\n", - "4 0 1 4 96 0 0 100\n" + "4 0 0 4 96 0 0 100\n" ] } ], @@ -4631,11 +2718,11 @@ "output_type": "stream", "text": [ " a b c d e f\n", - "0 0 0 0 100 0 100\n", - "1 0 1 1 99 4 96\n", - "2 0 0 2 98 0 100\n", + "0 0 1 0 100 1 99\n", + "1 0 1 1 99 1 99\n", + "2 0 1 2 98 1 99\n", "3 0 0 3 97 0 100\n", - "4 0 1 4 96 4 96\n" + "4 0 0 4 96 0 100\n" ] } ], @@ -4668,10 +2755,10 @@ "text": [ " a b c d\n", "0 0 1 0 100\n", - "1 0 1 1 99\n", - "2 0 1 2 98\n", - "3 0 0 3 97\n", - "4 0 0 4 96\n" + "1 0 0 1 99\n", + "2 0 0 2 98\n", + "3 0 1 3 97\n", + "4 0 1 4 96\n" ] } ], @@ -4691,7 +2778,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 73, @@ -4715,10 +2802,10 @@ "text": [ " b c d\n", "a \n", - "0 18 300 2200\n", - "1 15 925 1575\n", - "2 12 1550 950\n", - "3 13 2175 325\n" + "0 8 300 2200\n", + "1 11 925 1575\n", + "2 9 1550 950\n", + "3 11 2175 325\n" ] } ], @@ -4738,14 +2825,14 @@ "text": [ " c d\n", "a b \n", - "0 0 81 619\n", - " 1 219 1581\n", - "1 0 392 608\n", - " 1 533 967\n", - "2 0 782 518\n", - " 1 768 432\n", - "3 0 1048 152\n", - " 1 1127 173\n" + "0 0 209 1491\n", + " 1 91 709\n", + "1 0 519 881\n", + " 1 406 694\n", + "2 0 997 603\n", + " 1 553 347\n", + "3 0 1196 204\n", + " 1 979 121\n" ] } ], @@ -4887,7 +2974,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.7.8" } }, "nbformat": 4, diff --git a/getting_started_notebooks/intro_tutorials/03_Introduction_to_Dask.ipynb b/getting_started_materials/intro_tutorials_and_guides/03_Introduction_to_Dask.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/03_Introduction_to_Dask.ipynb rename to getting_started_materials/intro_tutorials_and_guides/03_Introduction_to_Dask.ipynb diff --git a/getting_started_notebooks/intro_tutorials/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb b/getting_started_materials/intro_tutorials_and_guides/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb rename to getting_started_materials/intro_tutorials_and_guides/04_Introduction_to_Dask_using_cuDF_DataFrames.ipynb diff --git a/getting_started_materials/intro_tutorials_and_guides/06_Introduction_to_Supervised_Learning.ipynb b/getting_started_materials/intro_tutorials_and_guides/06_Introduction_to_Supervised_Learning.ipynb new file mode 100644 index 00000000..4f68a1e4 --- /dev/null +++ b/getting_started_materials/intro_tutorials_and_guides/06_Introduction_to_Supervised_Learning.ipynb @@ -0,0 +1,897 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Introduction to Supervised Learning\n", + "#### By Paul Hendricks\n", + "-------\n", + "\n", + "In this notebook, we will show to do GPU accelerated Supervised Learning in RAPIDS. We will not cover SGD Regression at this time.\n", + "\n", + "**Table of Contents**\n", + "\n", + "* [Introduction to Supervised Learning](#introduction)\n", + "* [Linear Regression](#linear)\n", + "* [Ridge Regression](#ridge)\n", + "* [K Nearest Neighbors](#knn)\n", + "* [Setup](#setup)\n", + "* [Conclusion](#conclusion)\n", + "\n", + "Before going any further, let's make sure we have access to `matplotlib`, a popular Python library for visualizing data." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import cupy as cp\n", + "import subprocess\n", + "\n", + "try:\n", + " import matplotlib\n", + "except ModuleNotFoundError:\n", + " os.system('conda install -y matplotlib')\n", + " import matplotlib\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Setup\n", + "\n", + "This notebook was tested using the following Docker containers:\n", + "\n", + "* `rapidsai/rapidsai-dev-nightly:0.12-cuda10.1-runtime-ubuntu18.04-py3.7` container from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai-nightly)\n", + "\n", + "This notebook was run on the NVIDIA GV100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", + "\n", + "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", + "\n", + "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wed Mar 24 23:29:49 2021 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|===============================+======================+======================|\n", + "| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |\n", + "| N/A 45C P0 27W / 70W | 0MiB / 15109MiB | 0% Default |\n", + "| | | N/A |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=============================================================================|\n", + "| No running processes found |\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's see what CUDA version we have:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/bin/sh: 1: nvcc: not found\n" + ] + } + ], + "source": [ + "!nvcc --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's load some helper functions from `matplotlib` and configure the Jupyter Notebook for visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Linear Regression\n", + "\n", + "After our data has been preprocessed, we often want to build a model so as to understand the relationships between different variables in our data. Scikit-Learn is an incredibly powerful toolkit that allows data scientists to quickly build models from their data. Below we show a simple example of how to create a Linear Regression model." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NumPy Version: 1.19.4\n" + ] + } + ], + "source": [ + "import numpy as np; print('NumPy Version:', np.__version__)\n", + "\n", + "\n", + "# create the relationship: y = 2.0 * x + 1.0\n", + "\n", + "n_rows = 4600\n", + "w = 2.0\n", + "x = np.random.normal(loc=0, scale=1, size=(n_rows,))\n", + "b = 1.0\n", + "y = w * x + b\n", + "\n", + "# add a bit of noise\n", + "noise = np.random.normal(loc=0, scale=2, size=(n_rows,))\n", + "y_noisy = y + noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualize our data using the `matplotlib` library." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll use the `LinearRegression` class from Scikit-Learn to instantiate a model and fit it to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scikit-Learn Version: 0.23.1\n" + ] + } + ], + "source": [ + "import sklearn; print('Scikit-Learn Version:', sklearn.__version__)\n", + "from sklearn.linear_model import LinearRegression\n", + "\n", + "\n", + "# instantiate and fit model\n", + "linear_regression = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.55 ms, sys: 504 µs, total: 2.05 ms\n", + "Wall time: 1.34 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "linear_regression.fit(np.expand_dims(x, 1), y)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# create new data and perform inference\n", + "inputs = np.linspace(start=-5, stop=5, num=1000)\n", + "outputs = linear_regression.predict(np.expand_dims(inputs, 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now visualize our empirical data points, the true relationship of the data, and the relationship estimated by the model. Looks pretty close!" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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gw3J1q1badiwoc2r/6effmLAgAGcO3cOg8HAihUr+PXXXxk5ciQVK1bk2LFjPPDAA7zzzjuEhYVRtmxZLl++DMDKlSvZsGEDCxYssP0N7N69m8aNG7vxR1cQuZJ3xqlT0KkT9OgBVavCnj0wcWLACrw7WFfcWlbEkeFGTdthZx44esZUW+V7w0StOHLs2DH69+/PgQMHKFeuXL7VdenSpfnmm294+OGHGTt2LFu2bGHfvn3Ex8czZcoUrl69Sr9+/Vi/fj1ff/01v/32m+oYL7/8Mg8++CD79+9n37591KlTp4DN8ebNm/nxxx/ZvXs3JpOJ1NRUvvrqK1JTU1m6dClpaWmsXr2aPXv2aL6XH374gS1btjB58mRdVshdu3Zlz5497N+/n9q1a/PBBx9w77330qlTJ5KTkzGZTNx+++22469evUrfvn1ZtmwZBw8eJDc3l3fffdf2fKVKldi3bx8vvPCCLSQ0adIkZs2ahclk4uuvv7Y5cqalpTFt2jQOHz7Mzz//zI4dOwrM78qVKzRs2JB9+/bx4IMP5rNQtrJjx458F70nnniCF198kf3797Nz506qVKkCWCykJ0+ezMGDBzl+/DirV6/W/D1aiY+PL2AhURjkSl6NvDyYORPeeMOykp8yxZID70FnnUDEKqBqK+jRneq4fT49dgPO7jT8WgClw2rYF9x66622xh29e/dmxowZDBs2DIAePXoAsGvXLg4fPmw7Ljs7m2bNmnH06FGqV69us+rt3bs3c+bMKTDG1q1bbTFjg8FA+fLluXDhQr5jNm/ezObNm2nQoAFgWen++OOPXLp0iS5duhAREQFYwkBaPProoxgMBt1WyN9//z0jRowgIyODy5cv07ZtW6e/q2PHjlG9enXuuusuwGJrPGvWLJunvL2tsVVEmzdvziuvvMITTzxB165dbd71jRs3tv07Li6OkydPct999+UbLywszPYZ9O7d23Z+e86ePWuzGLh06RLp6el06dIFsFykrTRu3JgaNWoAFovkb775hu7duzt9vzfeeCNHjx51eowegku1vMH+/dCvn2XV/sgj8M47EBPj71n5DK0KWnfFVk/TbElBHK1y7X+22gQrikLr1q35+OOP8x1rMpm8ZrWrKAqvvfYazz//fL7Hp02bpnsM63ztrZCd0bdvX1JSUqhfvz4LFixg+/btLufoDDVb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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The mathematical operations underlying many machine learning algorithms are often matrix multiplications. These types of operations are highly parallelizable and can be greatly accelerated using a GPU. cuML makes it easy to build machine learning models in an accelerated fashion while still using an interface nearly identical to Scikit-Learn. The below shows how to accomplish the same Linear Regression model but on a GPU.\n", + "\n", + "First, let's convert our data from a NumPy representation to a cuDF representation." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cuDF Version: 0.17.0a+382.gbd321d1e93\n", + " x y\n", + "0 0.179561 3.154744\n", + "1 -0.714866 0.043070\n", + "2 -1.555288 -5.391598\n", + "3 -0.554378 -4.569417\n", + "4 -0.280322 1.784538\n" + ] + } + ], + "source": [ + "import cudf; print('cuDF Version:', cudf.__version__)\n", + "\n", + "\n", + "# create a cuDF DataFrame\n", + "df = cudf.DataFrame({'x': x, 'y': y_noisy})\n", + "print(df.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we'll load the GPU accelerated `LinearRegression` class from cuML, instantiate it, and fit it to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cuML Version: 0.17.0a+173.g2c0aacf44\n" + ] + } + ], + "source": [ + "import cuml; print('cuML Version:', cuml.__version__)\n", + "from cuml.linear_model import LinearRegression as LinearRegression_GPU\n", + "\n", + "\n", + "# instantiate and fit model\n", + "linear_regression_gpu = LinearRegression_GPU()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 372 ms, sys: 140 ms, total: 511 ms\n", + "Wall time: 508 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/cuml/internals/api_decorators.py:410: UserWarning: Changing solver from 'eig' to 'svd' as eig solver does not support training data with 1 column currently.\n", + " return func(*args, **kwargs)\n" + ] + }, + { + "data": { + "text/plain": [ + "LinearRegression(algorithm='eig', fit_intercept=True, normalize=False, handle=, verbose=4, output_type='input')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "linear_regression_gpu.fit(df['x'], df['y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use this model to predict values for new data points, a step often called \"inference\" or \"scoring\". All model fitting and predicting steps are GPU accelerated." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# create new data and perform inference\n", + "new_data_df = cudf.DataFrame({'inputs': inputs})\n", + "outputs_gpu = linear_regression_gpu.predict(new_data_df[['inputs']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we can overlay our predicted relationship using our GPU accelerated Linear Regression model (green line) over our empirical data points (light blue circles), the true relationship (blue line), and the predicted relationship from a model built on the CPU (red line). We see that our GPU accelerated model's estimate of the true relationship (green line) is identical to the CPU based model's estimate of the true relationship (red line)!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", + "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='predicted relationship (gpu)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Ridge Regression\n", + "\n", + "Ridge extends LinearRegression by providing L2 regularization on the coefficients when predicting response y with a linear combination of the predictors in X. It can reduce the variance of the predictors, and improves the conditioning of the problem.\n", + "\n", + "Below, we instantiate and fit a Ridge Regression model to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from cuml.linear_model import Ridge as Ridge_GPU\n", + "\n", + "\n", + "# instantiate and fit model\n", + "ridge_regression_gpu = Ridge_GPU()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.13 ms, sys: 4.39 ms, total: 5.52 ms\n", + "Wall time: 5.07 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/envs/rapids/lib/python3.7/site-packages/cuml/internals/api_decorators.py:410: UserWarning: Changing solver to 'svd' as 'eig' or 'cd' solvers do not support training data with 1 column currently.\n", + " return func(*args, **kwargs)\n" + ] + }, + { + "data": { + "text/plain": [ + "Ridge(alpha=1.0, solver='eig', fit_intercept=True, normalize=False, handle=, output_type='input', verbose=4)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "ridge_regression_gpu.fit(df[['x']], df['y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similar to the `LinearRegression` model we fitted early, we can use the `predict` method to generate predictions for new data." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "outputs_gpu = ridge_regression_gpu.predict(new_data_df[['inputs']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we can visualize our `Ridge` model's estimated relationship and overlay it our the empirical data points." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x, y_noisy, label='empirical data points')\n", + "plt.plot(x, y, color='black', label='true relationship')\n", + "plt.plot(inputs, outputs, color='red', label='linear regression (cpu)')\n", + "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='ridge regression (gpu)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## K Nearest Neighbors\n", + "\n", + "NearestNeighbors is a unsupervised algorithm where if one wants to find the “closest” datapoint(s) to new unseen data, one can calculate a suitable “distance” between each and every point, and return the top K datapoints which have the smallest distance to it.\n", + "\n", + "We'll generate some fake data using the `make_moons` function from the `sklearn.datasets` module. This function generates data points from two equations, each describing a half circle with a unique center. Since each data point is generated by one of these two equations, the cluster each data point belongs to is clear. The ideal classification algorithm will identify two clusters and associate each data point with the equation that generated it. \n", + "\n", + "These data points are generated using a non-linear relationship - so using a linear regression approach won't adequately solve problem. Instead, we can use a distance-based algorithm K Nearest Neighbors to classify each data point.\n", + "\n", + "First, let's generate out data." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1000, 2)\n" + ] + } + ], + "source": [ + "from sklearn.datasets import make_moons\n", + "\n", + "\n", + "X, y = make_moons(n_samples=int(1e3), noise=0.05, random_state=0)\n", + "print(X.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualize our data:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACGfElEQVR4nO2deVhUZfvHPw87zDAwgIA7WppmaamZpuWWqZW2l5WZRaG5oWBq1s/Kt0x9FXdT08ryrbfedrXct7SsbLFyt8QlRBSGVZDt+f0BZ5wZzgwguz6f65oLmDnnzDnMOXOf536+9/cWUkoUCoVCoahtuNX0DigUCoVCoYcKUAqFQqGolagApVAoFIpaiQpQCoVCoaiVqAClUCgUilqJR03vwKUQEhIiIyIiano3FAqFQlEJ/Pzzz+eklPUcn6+TASoiIoI9e/bU9G4oFAqFohIQQhzXe16l+BQKhUJRK1EBSqFQKBS1EhWgFAqFQlErqZNzUAqFQlFT5OXlcerUKXJycmp6V+ocPj4+NGrUCE9PzzItrwKUQqFQlINTp07h7+9PREQEQoia3p06g5SS5ORkTp06RbNmzcq0jkrxKRQKRTnIyckhODhYBadyIoQgODi4XCNPFaAUdY7MzEwOHz5MZmZmTe+K4gpFBadLo7z/NxWgFHWG/Px8YmLH07BRY3r37U/DRo2JiR1Pfn5+Te+aQqGoAlSAUtQZJkycxPYf9xC3eivz1u0kbvVWtv+4hwkTJ9X0rikUNc4rr7zCrFmzyr1eamoqixcvrvD7L1y4kKuvvhohBOfOnavw9kAFKEUdITMzkxUrVjBi2lzMoWEAmEPDGDFtLm+//bZK9ylqNbU5LX0pAUpKSWFhod1zXbt2ZdOmTTRt2rTS9k0FKEWdICEhAZM5yBqcNMyhYZgCzSQkJNTQnikUzqmqtPR7771H27ZtadeuHU888USJ13v06GG1gzt37hyad+m+ffvo1KkTN9xwA23btuXIkSNMmjSJv/76ixtuuIHnn38egH//+9/cdNNNtG3blpdffhmA+Ph4WrduzYgRI2jfvj0nT560e88bb7yRyvZIVTJzRa0hMzOThIQEGjRogNFotHutQYMGpFtSsCSdsQtSlqQzpKdaaNCgQXXvrkJRKrZpaXNoGJakMyyePJYJEycRN7v86TgoCjKvv/46u3btIiQkhJSUlDKvu2TJEqKjo3n88cfJzc2loKCA6dOn8+eff/Lbb78BsGHDBo4cOcKPP/6IlJKBAweyY8cOmjRpwqFDh3jnnXcqJSVYFtQISlHjlOUu02g0EhkZyeLJY7EknQGwXuxPP/10iYCmUNQ0VZWW3rJlCw8++CAhISEABAUFlXndLl26MG3aNGbMmMHx48fx9fUtscyGDRvYsGEDN954I+3bt+fgwYMcOXIEgKZNm9K5c+dL2u9LQQUoRbXhLA9fVvHDzBnT6d6pI7EDezG2XzdiB/aie6eOzJwxvczvpVBUF1WVlpZSlirX9vDwsM4R2dYdPfbYY3z11Vf4+vrSt29ftmzZorv9F154gd9++43ffvuNo0ePEhkZCYDBYLikfb5UVIBSVDmuRkjlucv08PAgbvYsTp08wab133Dq5AmmvvoKf//9t3U5JUVX1BZs09K2VDQt3bt3bz7++GOSk5MBdFN8ERER/PzzzwB88skn1uf//vtvmjdvzpgxYxg4cCC///47/v7+ZGRkWJfp27ev3bX3zz//kJSUdEn7WlFUgFJUOa5GSJdyl2k0GmnevDlTXn6lRCAa//yEcknRK2ukpUZsCkeqKi3dpk0bXnzxRbp37067du2IiYkpscz48eN58803ueWWW+wk3x999BHXXXcdN9xwAwcPHmTIkCEEBwfTtWtXrrvuOp5//nnuuOMOHnvsMbp06cL111/Pgw8+aBfAnDF//nwaNWrEqVOnaNu2Lc8888wlHZ8dUso69+jQoYNU1A0yMjKkKSBQLt/xq/z0YIL1sXzHrzIg0CxPnz7t8vWMjAzd7Y6LiZXtu3W3rrd8x6/yxq63ST+jf5m2lZeXJ8fFxEpTQKBsFNFcmgIC5biYWJmXlyczMjLkoUOHnL63La62o7g82b9/f5mX1c6PgECzbBzRXAYEmq/480Pv/wfskTrf9WoEpahSShshpaenl3qXmZiYyPr160lMTAScTz6PfGMe+fl5+BiMuu9lOxqbMHESW77/gQmL32X6p+uJW72VbT/8RJeu3exGZaPHRLN//36nIyNno8NxMbFqRKXQTUvHzZ6Fh4cSUJcF9V9SVCllkYfPnDGdCRMnETuwV1HQSrXw9NNPM/XVV7jp5s7s3fsbRlMgmemptGt3AyveWuY06PkZTcQf3EfrDp103wuKChOXLlsGQjB/4hjSLcncNuAB6jVqyokjB+0kwbPGRrHqww8pzMsjMjKSmTOmW79ctECpLa/tw4hpcxnRpzOfffkVmWmpJdZTXHkYjUZatmxZ07tR51AjKEWVUpY8vLO7zJ69byerEN7cuJvl3/7Kmxt3k1UIT0U+43Ty+UJ2Fv9bOMtlzj8mNpbGLVpx6133kpWeRmBQCNu++JjtX33KuFmL7YLN+LnLyM/LY9pHa0vMZbkaHZpDw3lh6fvKjkmhqAAqQCkqFT2xgDN5+JT/e8m6rGORbmJiInv3/kZs3BK7gBEbt4Q///idZs2bM2tsVIlAFBUVRa8uNxMzsCdj+t5CzMCedu+VmJjIJ59+SsQ1rUk8Ec+8NdtYtPF7Fm/4nmat27B21Qq74zGHhmEMNCNlYQlloSuVVlZ6GubQcGXHpFBUABWgFKViG3ScqdVcybsdR0jxx/4GoGlEM3rd0Y+w+g0IDQund99+1G/YkNFjovnll18wmgJ1RycGUwAZF3Jp2rI1Ywf0ZESfLozsewtuuTlMnzYNAFkoyc/Pp7CgkG937qRpRAS9+/anxTXX4Obhwc6vv2T09HklRkubP/mQ7Kws6/tZks6QYUmxBhvbuSxno8MFk6Lp9cAgfItrRpQdk0JxaaikuMIp+fn5TJg4iRUrVmAyB5GcdAbh5oY5OISMVIvd3IomFpj20VqkLEQIN95+bbKupcuEiZPY9fMvTPtoLV//523++uM3Rk+fT/2IZtZ5n02bNpGZnqo7d5WZnsZLy/5DROs2PPH8/2FJSiQ3J4eXhzxA9Nhx7Nl3gDlrtmEODWPZK5M4cfQQcau34WMwEn9wH8v/NZmM1FTd4Oft42udwyral2EUFhby8aLZ3DU4kvRUCyaTicOHD5eYP/MPDCTpdAI973uEwTGT7fZZ2TEpFJeAnrSvtj+UzLx60JNyt+1yq7zziUj52n++kO26dJPjYmJlRkaG9DcFyL6DhkiDKUCGN20mDcV/mwICpcViKZZiB8h69RtITy9vaQoKlj5+Bunp5S3DGzeVBlOAHPj0cPnxnyfk8h2/Sm8fX+nj5ydbd7jZ7v1bd7xZGgICrBLyj/88IQc+PVwaTAHSXC9Menp7y76DhsiP/zwhV/18RBpMAXLplp+sy4Q3bSZ9jf7S08tbV47u6e0tffz8ZFBouHWflm75Sbbtcqus3yRCdux0s0tp+shRo0v8z9p36y7HxcTW8KepqCzKIzOvTl5++WX573//u9zrWSwWuWjRogq//2OPPSZbtmwp27RpI5966imZm5uru1y1y8yFEG8LIZKEEH86eV0IIeYLIY4KIX4XQrS3ea2fEOJQ8WtqJrmW4EzKPWbGfDZ+vIr5k6I58ufvLHvrLX755ReEuzuntTmd9buYt2YbiSficff0JCY2tliKvY0lW/fw5qbdNLqqJQHBIby5aTeLNn7PvDXbOH5wP6vipmEODSOwXiggOHn0MMN7d+Lpbm15rk9nvArzKMzL53T8MQBWxU3j+MH9zFuzzSqkSDwRz6q4aViSEvE3B7F21QrrMovW72LB1zsIrBdaYg5rdsxwrr22De7CjZFvzGHp1j08OWEKIQ0aMmbGfCznzlLg6U3c6q1M/3Q9Exa/WyRVnzgJo9FIgwYNGPHccLrc0NalHZMq6lXUJiqr3cbjjz/OwYMH+eOPP8jOzmb58uUV3zm9qFXeB3Ab0B7408nrdwLfAALoDPxQ/Lw78BfQHPAC9gLXlvZ+agRV9Rw6dEg2imhuN8LQHmGNm8oF33wrl275SYY2bCy9fXylp7eTEYmXt/Q3mXRfM5gC5Kqfj9g9ZwwIlAvX7ZIGU4A0BQVLX6O/DAwJlT4Go6zXoJH0NRhlSFh96enlLbvf86A0mAKs21718xG54Jtv5cJ1u6QxIFAu//Y36edvkn7+Jd9/6ZafikZw3t7SXC9Uenp5yQaNGkujySTN9cKkwRQg73wiUs7439fy359tkMu//U16efuUGI35+Zukn9FfPvb449I/IMA6sho1eozct29fmYuDFXWH8oygzP7+EijxMPv7V2gfVq5cKa+//nrZtm1bOXjwYCml/Qiqe/fu8qeffpJSSnn27FnZtGlTKaWUf/75p7zppptku3bt5PXXXy8PHz4sH3nkEenj4yPbtWsnx48fL6WUcubMmbJjx47y+uuvl1OmTJFSSnns2DHZqlUr+dxzz8kbbrhBxsfHO92/uLg4OXnyZN3XyjOCqpQ5KCnlDiFEhItF7gHeK96R3UKIQCFEfSACOCql/BtACPHf4mX3V8Z+KS4dV/VLmkLt40WzCW8SwZiZC1g4eZzunI6vwYCbu4fua/7mICxJifg2u8r6nMEUwMIXoglv3BRPb2/Gz11mrUmaP3EMh3//lezzWQSHhfPdN19hMAViCgpm5cypbP7kQ/zNQWRYUnD38CQzzUL7W3uxf8/uEu8f0qAhQSEh3HrLLaxe/RV+/iZMoeFM/eAruxqozZ98iK/BSFZGOgZ/k91ozHa59Zu3MGf1xecWTx6L54q37ebfqqL1gqJ2Y8nIQOo8L8pgHeSM2t5uIy8vj/fff5958+Zd8jFqVJeKryFg293qVPFzzp4vgRAiSgixRwix5+zZs1W2o1cKpSnzSlOoAWz+5EPGzJhPRKs2ZDiRW+ecP8/5zHQsSWfIzsoi4dhfZGdl2anjbJe3JCUS1iSCk38dsQYnuJhelAUFzPjfNyza+D1zvtrK+cx0Vrz2kl0Kb96abTSIaMbLTz7E9xvXWsUWjvuWaknh8Ml/mPnpBvJycxkc+6LVhUJT9Xl4erJw/S7mfLmZrIw0Nv3vA131X3ZmJpZzZ8nOytKVlquOwIrKora32xgxYgS33XYbt956azmOSp/qClB63vDSxfMln5RymZSyo5SyY7169Sp1564kbOXg9hLvks7fM2dMp8sNbRl7V3eGdW/Pc306E94kgsExk63zO9ooqfeDj7JgUnSJYHbrgPsBeGnwfUT16MDrw4cQ1aMDLz52L/6BZlLPJpFw7C9Oxx9jVnQUPn5Gftq8HpPZrDvqCqwXipRFue/6Ec3o0m8AW7/4WDdoXMg+j6enF0Gh4cyfOMZu32aOjqQwv4Dh/5rN58sXkp+by8LJ4xjWsyMrZ06lID/fbpRXP6IZN/fuj4+vn91+FeTn89W7S8nPy2NW9LPW9U1BwXbS8oSEBIwBgWRnZdrJ2JUEXVFepKy97TZeffVVzp49S1xcXHkPS5fqClCngMY2fzcCElw8r6gibNNMHXr35errb2DBup0lnL81ifn7779PQFAwaakWGjVvwenjx0hPScYcGk56SrL1S39wzGSatrqW6Lt7ENntBqLv7kHTVtcyYOizeHp7ExxWn/lrt7No/S7mr91OcHh98vPyGHdPL6YMeZBxA3sRf2g/E99cyfxvvuV8ZqbLAtiC/HxWzpzKDxu/xs9ocmp75OHlRcded3D0j98YcUcXIrvdwMg7buHYgX34Gv1Zu2oFZxP+YfHG762jL02sYUk6Q2aqxTrKi3rlDTLSLHb7tSpuGvEH9rF44/csthF7rHjtJdIsKTRo0ID8/HwWLFzE2TOneT1qsF0QtCSdIS01RUnQFWWmtrbbWL58OevXr+fDDz/Eza1yQkt1BaivgCHFar7OQJqU8jTwE9BCCNFMCOEFDCpeVuFARZRf2rqJiYksX76c+58bB0JYU3R6KadxMbHWQDZ//S7e3Lgbf3MQOefPM3ZAT8bffwdSSqsSzt3Dg4FDh9H46pbceGtPqwKuIC+f3Owcxs22txBqfHVLQuo3uGhjtGk3zdtczw8b1oCUmMxBzB43zG7UM2tsFF37D8TXYLCq92Z9uoG83AtObI/Oc+F8Fv0GPcmy7b8w7YMvadv1Nq5ueyOzPt/A+cx0Nv3vA8Y4jL5GT5/H5k8+ZM74kXYFt7k5OXh4eFpHY9lZWUXr2/wPfQxGHhoZw9bPPybnQg49e9/O6Ohodv78G29utFcsrnjtJWaNjSI3N5eXpkwp0bNKqf0UetTWdhvDhw/nzJkzdOnShRtuuIGpU6dW+FhFkW6hghsR4kOgBxACnAFeBjwBpJRLRNF4dCHQDzgPPCWl3FO87p3AXIoUfW9LKV8v7f06duwo9+zZU+H9rgs4FsumW1LKbD5qu65/oBlL8lny8vIIDqtPWvI5DCYTS7eW/D8O696BnOws5q7ZXkIgMXZAT+au2UZ2ZgafLVvInz9+x/mMdKs4wWAKoN0ttzF86kwsSWeYPvIpUs4k8taOX6zbyc7KYljPjlahge32R/TpAgK6D3wQHz8DWz79EG9fP7IzMzAHBeFfL4zRb8xj4sN3WtdfOXMqxw/ut6b5tALb44cP4OHhQaPmVxE79y18DEae7d6eF5e+z3frVvPT5vUU5Ofb7ZtGZLd2eHh68fp/viCkQUMsSWeIi32O5m3a4ubmxpZP/4u3rx8F+Xms2LmXgvx8VsVNswo1khMTuLl3P86cOkn8wX28uWl3iWN9rk9nzKHhtLz+BpLPnKZf91uJmz2rQp+5ouo5cOAArVu3LtOyQSYTFp0vd7O/Pynp6ZW9a3UCvf+fEOJnKWVHx2UrS8X3aCmvS2Ckk9e+Br6ujP24HKmI8st23a/eXUr8gX3Wu/3T8ceIufd2XZVeWmoKgUHBTm2GsjMzEMKNXd98xeIN3+FjMGJJSsQcGk5OVibP9enMj5vXcSE7m573PcKOrz6xex9LUiL+Afo2RsGhoXTr0oUNG9ZiCjTj7uZG39t7g4DVX60mMzOTsQN6YAy8OEc1OGYyq+KmMXZATzy8vMjNyeH2hx5j3KxFzBk/Al83iBnQE4QgPy+XhZOiOXfmNI2at+Cfv4/q/g/OF6uvRt95K35GE+cz0un76JM8Mf5F3D08eHhkLInH/+aFRwdiSTrDV+8uLaHumzdhNPUaNORswin9Yw2rz6g35jI1chDuHp4sPXyAKf/3ElP/9ZruZz52XAxjRo+y+hUqaj9XahCqLJQXXy2mIsov23V9DMYS6bz6Ec249e77ShSrLpgUzW13309qcrJu2iwlKZEXH7+PcQN74mf0t4okGjS7Cl+DAR+DER8/P+5/ZhSvrfqMx2NeoPu9DzFvwmjr9oRww3I2SXf7yWeTWLduHU888QRrvvycRx8dxOeff876TZspBHrc/wjTPlzN+Yx06/ruHh48OWEK0z9ay4Xz55n/9Q5rge34ucs4euQIza+6igbNr7am2XrfPwhfo5Fe9z9SQtwxf+IYAkLq4SYEExe9w/h5b+Hh5cU9Tw/HvXgE42swEBgSiru7e5E1k466L3rmAn7auoHzGemcS/inxLFmpqUS0aoNQWH1eXHp+zRp0ZrRY6JLfOamoGDqNWrKsreW0btvP9XGXnHFoAJULeZS2qHrrWuruLOVeg8Y+iwn/zrM2AE9Gdm3K2MH9KRpq2sZ9uoMvH19S8wBzZ84hsCQUG7t2oW1a9ZQkHdx7kcTLUT16IC7uwer5rzB1Gce45nbbmTT/z7g2IE/ea5PZ4b3vInJg+7i+rZtWTBxNAd+/tEqO58/cQz9HhvKnDXb2PXLb9x59wC2//gzC9fv4q3tvzB/7XbiD+5n59df0PPeh0sE14WTx9LnkcGY64Vaj9PHYER4uLN//36rbD07K4udX39JbNwSIl96jaatrrWazo7o05lGV7fktfc/Q0rJJ4vnEN64Cbc/9FgJJWBc7HM0bN6C5MTTeHn76H5OQaHhNLq6JS89cb+uXD8nK5PMVAsRrdowfu5SvvzyS4wOo8tVcdNIPBHPmxt3M2/dLtXCoxZQGVMjVyLl/b+phHYtpizN/kpb93T8MS5knyc9+RzLXpnEzq+/tM4Xdb7jLi6cz2bu6q1IWYg5NBxfgwFL0hkKCwr4a98fRN/dA39zEJmpFno9MIiRr8cxuv+tbNu2jauaX8WiF6IZ+cY8awpx/trt1rTUnNgRJJ85zWurPremFRe/OJbuN3fCy9uLZUuXMSs6iqyMNDw8vej94KMMjpmMu4cHQeEN2ffzj7z6ny/tRiVRU95gwoP9mLtmK+Pv70f0Xd3xDwomw5JCYUEBY2bMtyvaTU9JJj8vF3NIqH2K0SbwPzlhCg+PjMWSlMi/ogbT/7GhhDRoiDk0jPiD+4gZ2BNTgJmUlHM816czpsAg0lNT8DUYyc7KZM6XW5j4UH+nRc3/99YHxNx7O8/16Yx/gJkLOdn0fvBR7hocaed87mswEBAUhOXcOeu2srOy2PzJh3bzddooOnZgL6a++opK91UzPj4+JCcnExwcXKrcW3ERKSXJycn4+PiUeR0VoGoxtsWyWspHrwGfHj4+PrS85hpi770dc71QCqXkxNFDdnMks2OGFxWiTh7H+LlLrcFpwaRouvS7m5+3b2bhul3W+SVNzWYwBZB9PpOEs+fIPHKEUf26UlhQyOKN39t9iY6bvZjou3tYi1/rRzQjZs4you/qTsu2RfJ2q0vEpGjc3Nxw9/AgOyuL79atJqhemHV7tiIEb18/ou/uiQDmrN5Kbk621dnilaEPE94kooTTw/HDB61f+ubQcGthsbZ9X4OBHIOR88Uydi24BAXXY/UXn2EwGGjQoAG39ehJ2oVcXl35CVIW8nrUYOpHNKN38QhLS6PajpLqRzTDz+jPyGlxfL9+Dbs3fM2Orz5j8ycfWoMyFLf2SE1l6NCh1s88OyvT6Xydf2Agu3btomvXrtZzoaiP1l7atWtHeHg4isqnUaNGnDp1CmUYUH58fHxo1KhRmZevFBVfdXMlqvjefvttu3bopSm6YmLHs/3HPYyYNhcvHx+e7d6BRet3OVXNeXp5242Uej/wKOPvu0NXfTZ2QE+mf7SWZa9O4sgfv9Go2VVYziaxdFvJz2TkHbfw4tL3aVBsZ5SdlcXTt1xvF8xst7tky09FI5lnHiMrI92lUi8u9jmuvv4GnpwwBYBTfx1h/P138ObGkvs8ql9Xrr7+Rsb+e+HFNhxHDhE7Z4mdlVJE6zYMHDqMOc+Pwhxcj993beOfUycxGo1kZmbSsFEj4lZvs45uNDWiKSiYd2e8ysaPVxEUGk5Wehq9HhjE4JjJpKckM6JPFxZv2m1NP7497f9IOnXSuj/ajYdmLKt95kZTAElnTuse04g+nQkJq09mWipDhz7Jru++5/ff92I0BZKZnkq7djfw7fZt5bpjVShqAmcqPjUHVctx1g5dLzjZ1jtpE+2moGCmDHkQX4NBf44kLJxOvfrR6KoWjJo2h7lrttGpdz8WTR6Hu4cHs8YO0507qR/RjDEz5lOQn8f9w6NJs+iLKlLPJdnZGcUf3Iefv35hrcEUgCUpESHcSEs+R7c772HBpGhOxx9j8ycflhAhxMx+09pg0JJ0hqVTxhMYFOK0aDcwuJ51rmnrFx+TnnSamIE9ie7XjZF33MLh337m+/VrGXPnbRz9/Vf2/7ybvLw8prz8Cvn5+cXzesF2o67eDz7K/EnRpKckE/niv7jt7vsxBAQw/aO1PDlhCukpycwaG4Wnjzdj7ryNlTOn4uXtzfBXZ9Kw2VWM6NOF0Xd0Yexd3elyQ1vrjYf2mW/ZuJ5hUcNY9IK9kGPW2CjcPTzpeHs//v35Rjbu2s3J04kX68o27iarEG7t3uMSzjqFonagAlQdwWg00rJlS920nmM326tbtMTbr8iS590Zr+Ll7U3uBf1i1uQzp/E3B9Hoqpb865lHGXF7Z2ZFP0v8wf106Xd3USC68zYib73BKqLQUlLaF79/YBBubu4lRATzJ44BIPVskvW5/y2cxYXzWbr7Ykk6w/RhT/DioLu5vm1bkk7GE94kgucf6Iu7u4c1VahhDg3D08ub8QN7EjuwFz27dObCeX0HivOZGfy6cyu+Rn9SEk8z9MmhxP/9F/+cPMnm9d+QeDqByMhIslItNGnZmkXFwowF63ZaBQl6Ld4Hx0wmICi4uKtvV3Zv/BoPd08mPnwnUT06MvKOW2jasjXv7PqjSORxYB+r4qaRnpJM0sl4rrv+etJTLQQGB/P+++9bXTy0z7x58+a4u7tzaO+vjOjThWdva0/03T1oeUMH5q7eyvGD+1m7agWxcUvISk+z8xKMjVvC73v3kpiYWL6TTaGoJagAdRlgW+8Ut2YbnfveTWpyMqfjj7Hti4+ZsGAFtz/0WEk59aRoet33CAnHjnLyyCGatb6OxRu/Z8XOvSze+D2n4//ml+2bkUBWerp1VKBJrYvMYLO4kH0eHz8DEa3b2CkCI1q3wdvXQOx9txNd3BupV5ebiRoWVcKEdvHksURFRbFl43pOnTzB97t2cttNHdi59gsK8vNxc3cjqkcHq0WQtl5hfi5fr/6KUydPsHDBfCIjnymx7fkTx3DHoCeY8fHX1AsPJ2rYMJYueRMPDw9r4A8MDGT6G9Nw93Bn/NylurJ+oISBbnpKMpazSQg3wahpRT2k3vhoNfPWbicrI43ZX2wi6pXpuHt4WA1v133wLiP6dCEx/m8KvXyYu2a7VZ237Yef7NR5EyZO4ts9vzDzk3V4eHkRM2eJXZ+q0dPnseXT/+JjMFp9AzW0UenevXur8OxTKKoOJZKog2RmZpKQkGBV8S1fvpyJb67Ex2BkVdw0zp3+h173P8LCF6LxDyxSq9kWsxoDzaScOc2td99H5EuvFc2FDOzJK+98XMLNe+yAnvz7k3W8PmwwCyePtWt/MSd2BLcNuJ+vViwiN/s8A4cOY+BTwzl+cB9NW7UBKdn22X+J//tv0tPTrQWm2rxa7MBeLufV8vPzadKiJSOnzbO2g58/cQyr4qYxcOgwFk8eS+TTkdx4443WdexbsJtJPnsGNzd3UhJOsf2zj6zvo0dCQgIBZv0CZU3Wb7t9L18/0lNT6HHPQzRrfR0fL5zNmBnz8TUYSDwRj5/Rn/oRzUpsy1wvjKETXyEuZjj/+nC1XTAc+cY8RvfrxqODHqFx48asWLGCuNVbyc7KxGQOonWHTiW2Zww0E39wn647fFZ6Gu3atSvvKaZQ1AqUSKIOoX2xL1++HD9/f7LS02nevDkHDx4kKLw+GSnJFErJ3K+2WNN7Gz9eZTfBnp2VRfzBfbzx3JMs3boHL29vlr4ykR2rPyM4vAEZlhQ7uffIvl15ccl7eHn7MOau2ygsLCTAHEy6JRmDv4mCvDwiIyPJzsnmy7XfkJaSjCkomPSUZAKDgnnovnuZO0ff2dg20NqmLvPz8xkXE8vSZUsJDg0nIy3Vuk/pKcmMuKMLPt4+Lu1/HIO43vvordOwUWOrg4OGJekMMQN78s/Jk9b1MzMzOXHiBIvfXMKqVavwDwjEkpJMQUE+AeYgzmdkkJefx8J1JYUpYwf05OV3PmbasCdY/u2vJfYjsls7hBDkXcjBw8ubNzf9wPuzXy/xWWrbi767B42uaoHlbBLTPvjSTqVpcIOfftjt9JgVitqAEknUQRzNQsc/P4GPPv2MAikRHp4UFBaS6+510Yl77XaatmzN2lUrcPfwIPLFf9Hn4cHMs5kbysnK5MN5M7m5T3+gqAj07D+nihwWXLh5hzRoiJ/RxMMPPcSu7Vs5Hh/P7l07OV7cev29994nIDjEzrE8KCxcv6FKMc7m1SZMnKRrrqq1g68XFs62rVucikUct+1q/s5xHb0eWLPGDSM/v8AqltCWvfbaa1m4YD6nTp5g/ddreGroUDw9PYv2SUCrVq35d/SzuiITNyGc9qnKy81lwbpdzF2znfAmEbz0+L3889cRmlx9DbNjhpcQSxTk59P3tq40rh/OiD5deObWGxnRpwsGN/h2+zaXx6xQ1GbUCKoWomcWOmTIEN5+5x2uvv4GxsyYj4/BSFSPDtbCWA3tjnre2u1kZ2ZgCgrhgzlvsOXzjzCaAsnOyqCwoBBzaBiZqRYKCwuZu3orIQ0althGROvruKrN9Tw5YQqWpDOM7t+NhFOnCAwMtC4bEzueLd//wJE/f9fdl9iBvTh18kSZi0ldjWI0efuLg+4u1zbLg/a/X7J0Cb5Gfy5kXyyqXTplPN07ddT1QLSV9WsjmIWTxnD4j70UFhTgZ/TnQk42Pe9/hNzsbLZ9+QnePj40bH51ia7BEa3bWKXzmqns9P+u4f+GPMCtd93Lrm++whhoJsOSQvvbevHbji0k/HMKo9ForYO6+uqrKSgoUL59ijqBGkHVIWxFDxf7NP1MXl6uTSFoIn5Go+58iaeXN6P6deX14UN47vab+W3Xdp5++mkaNwgnolWbi72L1m6n6TVFI66S2/AiPflccXPCMyx6IZrhw4bbBSfN7++hUeMxOTGXLW8zPlf2TgZTAItfLL1IuSJ4eHgw9dVX8HD3ICbOXpDgzAPRmWfiqOnzyc+9wNT3PuG6Lt24kJPNjq8+48SRgyze8B0rdu6lacvWjLzjFqK6d2BEny5EtG5jVUlq2zGaAkg6dQI/fxNPPP9/LNnyEy8ueY+lW/cwdtYiAoOCrf/jkJAQ1m/YSPsOHXWbUKoWHoq6hApQtQxnX3aPjHkeg039kK/Rn7QU/dqjrIw0Xl/1hTXVZq4XSmFBAfHxx0u0UR8/d5m1lsh2G3kXLpB44hjj7ryN2IG96HHzTSXEBVowcdXyvTRLJkf0pNzatixJZ+jZpbNTkUNlkZCQQEBQMK07dLK6Z4DzgOsqqAYEhfDuG1MYEvsive4fRM75TOtn4O7hQdQr05n9xSbSLSlIYODQYVaVJMC5hH84n5nBghfGkp+bS1SPDny8aDZhjZtanT9sGx5OmDiJbT/85HBzs4fxz0+wK0VQhrOKuoAKULUMZ192Ea3a2Dl4Z2dm4Gf0122z7mvwx6vYPUALQh988IHTNurePr7EH9xnt43eDz1GYHAIK5YtcVocrAWTnKxM3Zbvi16ILvdox9k80MJJ0URFRbFwwfwq74nkKkjqBVxXy1/IzqJnl87EDOzJd+tWWx3gbakf0QyDyYS3j4/VADc7K4sDP//Iy08+SPM2bZn/9Q5W7PzNrpZKE0K0bHkNRqOR1NRUlixZwsg37AuaR0yby/IVK3QDlzKcVdRmVICqJWipF5PJpPtll5OViYeXF3PHjyj2kAsn98IFwptE2NUehTeJoCA/z05uXHQnH0yqkxFXRpqFacOH2Dma3zU4krSUFNq1a+c0wNgGk7sGR1pbvj/bvT2j+3fTHXWVhZkzptO9U0diB/ZibHH9VM/ONzEnbna5t3UpOAuSzjwQXS0f+XQkCxfMZ9uWLfj6+lpdL2yxJJ0hOzOT/NxcThw5xMi+t/DULdcxK/pZks8k0uTqazAFBQPY1VJF392DJldfw+FDh8jMzGRcTAy+/iUDoI/BSF5urm7gKq1ti0JRkyiRRA2jJ4hoec01FHr6MOKNixPus8ZG4Sskt912K++88w5GUyAp584S0epaRk2bi5SFCOHGwsljadqyNVGvXAwMlqQzjBvQg8cefZQf/9hv/aLSRkvZWVl4envzaPQEIlq1IScrkwWTojlx+AC7d+2kZcuWpe6/5hWYZknh/vvvY05cnN181aXgTIZeHZTXA7G05TXxR+d+A/jn76OMm73Y7rNNPZdEu1u68/v33xLSoBHRDqazTVtdaxVOAIzo04Xx896i+bXXMbZfN7787BO69+hJgZQlxCq/7dzOgknRrNj5W4n9HtuvG5vWf+PyM1YoqhpnIgkVoGoYPfXXoheiSToRz7lzZzEGmEm3JONn8Cc7K5M2113H0jcXM2/efP746xj1I65i1zdfYTAFkHouCV9fP8KaNuP5eW/ZfQEmnoinIDeXa1q14o/ff8dgCrC2fej36JNMjXyU1HNnCawXSmaqha79B/L9N19ZjVJLoyaDSVVS3uNytXxM7Hi2/fAToY0j2Pn1lxhMAaQln8XNzZ3pH6/lhUEDAHTVkJqRrjbvpP2dk5VJ7MBebN2ymYH3P0j7XndYTXVNQcGseO0ltnz+EQJYrFND5VjfpVDUBErFVwtxJoiI/L83SEo6Q7c776Ve/QbM+XILb+34hZ73Pcy+fX9y1z338tH/PsYUVI/HY15gyZafeGnZKmZ/vonCggJ63NyRcQN6MLxnR0b2LfKCW7btZ+as2Uahlw9PPTWUBmGh5Obk8O3qzxlzV3fycnOZ+t4nvLjkPaZ/tJazp44TGRlZ5i+ustYa1TXKe1yulp85Yzo9br6J3etWExho5nxaKg89+CBBIfVwc3PDz9/kUsFoSUq0StF7PTCI1LNJxI2LYvDgwbRo0YJ0S4o11Tp2QE+e7d6e44cP8ObG3fR7/KkSXol69V0KRW1CjaBqkMOHD9O7b3/mrdtp93zCsb/4vyfuJy83lxkff42UhXzzwbv889cRRrw2m7WrVrDpfx/g4+fH+Yx07hg0xOr8MLznTWzbtIGgoCCubtGSqe9/hpePj10zQq02KTU1lbHjYtiwYQM+BiOpKecw2rhDlNbSQ3FpOLpcNGzUmGkfrWXCQ/2RUrLg6x26rTX8/E1cOH8e4eaGl7c3WZkZBAaFcOF8JpGRz5CTk8P2H35kxOtz8TEYGN3/Vuu2bPtpeXp5kXfhAr0feqzU+i6FojpQKb5aiLOi1NPxxxhz120Y/E0UFhTgbw4i+cxpet33CJ4+Ppw8fNCuL9L8SdFEtLqWgUOHMeKOLkQ+HcmokSPo2r0Hebm51g66ml1Q7N092LT+G5YsXaZTXBpNtw43sGD+vBr8z1xZaGneeo2a8tuuorIA2+LdBZOiCWnQiB/Wr+HI4UO8/Mqr7PhxD6PeKPIoPPXXEV6Pepx0Swr+AWZSU87h52cAN3fe3rW3WJiRaBXORN/VnRcWv0Oza68HLq2gWqGoTFSAqqU4zkGdS/iHV596mJSkM0S0bmPvMjApmiO//6p7hx19dw8aX92S1HNnybCkMPjxx9j+488lvujCm0Swe91qDh7YzzWtWus6Nqgvq+rFVijj5uFBTvZ5ZKEksF4oWelpdO0/kKST8dx2UwcKCgqsHoVplhTCGjUh8eRxIq651urCbnWx+P1Xbr37fnZ+/aX1JqXbnfew8+svWbp1j12NlxJLKGoSNQdVi0hMTGT9+vUkJiaWkFTH3NObgJB6uHl4lCiqHTN9HgX5eU77IsUf3M8Lb64kN/cC//nPByXWHz19Htu+/B+DBw8mPT3d6XxHed0fFBVDa1D4z6mT/PDdLo4cOsRDDz1IZmoKAQGB7F63mh4330RuXi6bdn7HrM820KlPfwoLCkhPSaYgP4+mLVvZSdFHTZ9PQX4B8Yf2M2/NNqvPYvzB/QSF2reCv5SCaoWiOlABqhrJycnhpps70yQigkefeJImERF06dqNyS9MYuuWzXy46j3c3ASPx0x2ah3kZzRZi2o1igxGL2AKDsHNzQ0fP4PTolxTYBAjnhte7mJUReWiZzmkCSwaNWrE+++9R2JCAls2rif+2N/k5eWxfPlyUs+dZdIjd3P0j71FTRV3/MKbG3eTeCKeVXHTrNsyh4bhYzDQ+4HH8DEYyUxL48P5Mzn512EyUlOsvbVO/XXEKrRQI2ZFbaNSApQQop8Q4pAQ4qgQokRpuhDieSHEb8WPP4UQBUKIoOLX4oUQfxS/dnnk7Zxwa/ceZBVi15Y7M1/SuGkEA+9/kL79+uPjZ3RpHZSVkcZ7M6eWcI/oduc9nE9PQwg38i7kkJGm75Sdm32eJk2alLsYVVE5OHY/dmU5pAWsqf96zeruPuuLTQghiCmuo4KLo+Mtn/6X7KwsCvLzWfbKJM5nZPDB3Ok83fV6hvXsyD9//8X8tdtZsXMv89du5/BvPzPhwX6cTUjg/fffU9ZHilpHheeghBDuwGGgD3AK+Al4VEq538nyA4BxUspexX/HAx2llOfK+p51cQ4qMTGRJhERTvv5LN26h9SzScTeezuLNnzHV+8utdaz2M5BNWx2NX/s3smZk8cJrBdKdmYGXfsP5PTxY9Rv2ozjhw9wc7vrCAwMZPOu3YyddbEgdO74EfTu2pm5cUX9mcpbjKqoOHp1b4snj3WqonMU0iQc+4vXhw9h0fpdJZYd0acLLy1bxZqVb3Hi6CFi45ZgDg3jdPwxYu7tzeIN3zs993KyMl3uh0JRlTibg6qMb6FOwFEp5d/Fb/Rf4B5AN0ABjwIfVsL71in27t2L0RSom3bTWnU3aHYVPe59iFljoxg3azFrV60g+u4eePv4kpmexh0PD+ZCTjZJ/5zAYDKRejYJH19fNn/2X/yMJo7+8RtCCL7fvIFXXp1KyplEou/uYZ0gDzAHgc39iDb3MfXVVy7LItvahlb3ZitM0SyHYgf2Yuqrr5T4/zt6M5pDw62ja8dgk5KUyIuP30t2VqbdjZCUhQTVCyv13HO1HwpFTVAZAaohcNLm71PAzXoLCiH8gH7AKJunJbBBCCGBpVLKZU7WjQKiAJo0aVIJu129tGvXztqgzvGLRWsKCBD50ms81fV6xtx1G4EhoQBc27EzZ04dZ8tn/6VJy1bWO2FL0hnmTRhNg2ZXcevd9/G/hbPo1eVmPDw8eOedd4hbvRUfg9EqMdZcB17711S7LyAtlaSoWly5nmvCFMfPwXau0Bwahq/BQO8HH2X+xDE2rVfOMGvsMNzdPSjIzyc4rL7de5iLuxKfjj+GlIV2NXG2556r/VAoaoLKCFB6PVOd5Q0HALuklCk2z3WVUiYIIUKBjUKIg1LKHSU2WBS4lkFRiq+iO13dhIeH067dDcyOGW5Nvdi6AkBRgW5uTg652TnM+WqL3ZfJ6fhjjBvYq4QyL3rmAkbc0YXvv/7SWlz7999/230R+ja7quinwaC+gGoQx2Cj4UqYos0VLnoh2uqheNfgSF4e+hCj+nUjIDiElKREbup5B+7ubhz9Y2+J9/Dy9ia8cVNi7u1NUL0wMtJS6XbnPcQf2k/9ps3x8vYudT8UipqgMkQSp4DGNn83ApxplAfhkN6TUiYU/0wCPqcoZXhZ8u32bRjcsLblfq5PZ06fiCcl8TTDenTg9ajBvPDoAHz8/Aht1JgGza6y1qpIWYghIED37tuxBbpS6NVOLlWYolkkje7fjWe7tyfm3tvpdHs/Zvzvawz+JgxGf/bt3skdt3Yl8plIDKYAO1ujFa+9hJevL4s3fM+ijd8zb802jh8+QE5WFm7ubtbWHa72w1F1qBofKqoFKWWFHhSNwv4GmgFewF6gjc5yAUAKYLB5zgD42/z+HdCvtPfs0KGDrMucPn1arl27Vj4bFSV9/AyyVfub5PIdv8pPDybI5Tt+la3a3yT7DhoiPz2YYH0sXLdLenp7W5fTHst3/CoDAs0yIyPD7j3GxcTK9t262223fbfuclxMbI0cs6KIvLw8OS4mVgYEmmXjiOYyINAsx8XEyry8vFLXtVgscuhTT0lTQKB13VGjx8h9+/ZZP/+8vDzZvkNH6ePrJ718fGRAcIj09NI/b7x8fKSv0V96+/pJf1OA7n5o+2sKCJSNIppLf1OA7NjpZmkKCJCNIppLU0BgmfdfoXAGsEfqxRe9J8v7AO6kSMn3F/Bi8XPDgeE2ywwF/uuwXvPigLYX2KetW9qjrgcoKaUcOWq0bHVDe+nnb9L98vD29ZUL1+2yCVqdpI/BWCKYOQs6FfkiVFQ9GRkZ8tChQyVuLMq7rt529u3bJwOCQ6SvwSgDguvJwJB6dueX9ghv2ky+9p8vZKv2N8lBjz6muy3HG52+g4bI1h1vVjc+ikrFWYBSVkfVSGZmJidOnGDe/AW88+47BJiDyc/P1+3TE9mtHVlpaRgCAsg5n0Wfh5+g/+NDeXnow2SmphBSL6xMsvDLtQ3GlY5eHzFtDjInJ8dqQJtzPpMXH7+PRet3OW3hkZOVyXN9OuPh4UlQSD0yUi1ERkYy5f9eomlEM6vqMDsri2E9OzJvzTZlj6WoVJTVUQ1iW5zZ4/Y7eHflSm4b8ADPL1hO7oUc3bmivNxc3tzyI+PnvUVEq+sQbgIvH18eHzcJdzd3vvzsE6et2G25XNtgXOlMmDiJ7T/u0W3hrs11vf3aZHz8jLi5uxMX+1yJ4u5eDwzC12DAHBpGUGg4TVpcQ6ubOjPto7Vs/3EP42Ji7MQ2lqRE/JU9lqIaUSOoakCvOHPW2ChOHz/GhZwcGja/inH/Xkz9iGZWZV9E6zbWDqpnTh4n5t4+FOTnYTQFkpmWSuvWrflh9/f4+PjU8NEpqhtnLvi2IxkfHx8mTJzEsmVL8fDx5ba772fjx6vw8fMjLzfX6mzv7uFhHU1N/2gtMff2xsPTi1vvupfvvv4SBMxZvU2NoBRVihpB1RDOmhKOn7uMC9nZCCFISUxk3MBePNGpNcN730xE6zYMjpls3cbc8aNo2qIVL7/9EQvW7eTNTbvJ8/Tm1u49auioFDVJWeqptCLsvb/9xvmMdO55ejjLv/2Ntl2706RlawYOHWYNTtpoqn5EM4LC6jN5yXsknojHw8uLBx94gPkTRnHg5x8B6HbnPcyOGa7ssRTVgvKzqWJcfZn4Gf2JmbOE1h06WUdVx/b/yYXz563LnTudwPHD+3H38GTh5HHWvk5jZy5kdP9bSUxMJDw83PFtFZcx5amnuuqqq6z1d2NnLsRkDuLHjd/wXJ/OBIWGk5WeRq8HBjE4ZrK1cDeiVRtGT5/Hc7ffzC+//sqB/fuZFf0sWRnpuLm5c911bYgZ2JOAwCC7eVCForJRI6gqJjQ0lLOJCbrzTBdysolo1Qa4OKry8PIi/tB+Vrz2EgBv/WsyzVpfx/y1260tE44f3M/aVSswmALYu3dvtR+TomYpbz3Vt9u3kX7mNNF3defo77/x0lv/wcfPSGBwCNM/WsuTE6aQnpJcYl7K29ePXDcv3ty4mxU79/Lmxt00b3M9Qrjxz8mTbFr/TZnmQRWKS0XNQVUxo8dE89Fnn1O/SUQJa5qWN7S3zjNpjOzblVHT5vDq04/gazCSnZnJm5v0DWZzc3I4cTxejaCuQMpj9JuZmUn9Bg3JLyxgxsdfs/6/77Hho/cxGE2cz8rA4B9AXu4Fu3kpzblE79wb0acLx+OPqfNOUWlUpVmswgmZmZm8u/JdZn+xmbWrVjB2QE98/PzIsFhwc3dn3KxFdsvbpljqhYUzecLzvPHv2brpQW8fX5o1baq+JK5Qymr0m5+fz5joaHJzczGYApj0yN00b30dSzb9gDk0jPgD+5g3cTTnMzPt5qXiYoY7dS4xmALYvXs31157rSpfUFQpKsVXhSQkJBAYFExIg4Y8OWEKS7b8xEtvfUDvhx6jsKCAOeNH6Ep/c7IyyUpP54EHHiAj1aLfFyo9ja1bNtfEYSlqEaWVEUyYOInfDh1l8cbvWbBuJ0IIxs1ejCkomJUzpzLlyQfJzc4m7dxZRvXrytNd2xF9V3dOHz9GVnqa3bmXnZXFgZ9/JCPNwhNDniy1n5VCUVFUgKpCGjRoQHJSkvUi9zUYaHx1S+5/dhQSiSXpDKP6deXZ29oTfXcPmra6lrsGR1rnEsLDw3XnGha9EM2IESMICQmpycNT1HI0BalmMmtJSrR2al4VN43jB4vbwW/8njc37aZF2/YUFuTT+KqrGT5smFVccS7hH1bOnEpUjw7EjRuOEIKud91L3JptdvVXCkVlowJUFSPc3OyMOy1JZ5gzfiSyUPL6B18y/+sdtLyhPVJKftj4DaP738otN7azqqJmzphO904diR3Yi7H9uhE7sBc9br5JqaYUpeKsl9Tp+GNs/uRDazPMoteKnPFzss9za6ei8+vb7dvwo5Axd93G4d9+Zv7a7SVazGv9rN5++21lHKuodNQcVBWg2QtlZWVhDg4honUbxg7oiTHQTGaqhU639+Ofv4/y1btL2fzJhxgCApGFBbTqcBOHf/6R0aNGWie6VVNBxaXirJfUgklj8A/Qb55p8DeRnHyO1NRUpr0xncOHDyMLZYk2L6Onz2PsgJ48PDJW9ZFSVBlqBFWJ2Foa9e7bn+49epJyNomBQ4exZMtPvLjkPeau2UbXO+8hOyuDY/v/pNud95CVlkpAUAjfr1uLJfkcc+fNL5HTV5ZFivKiJ0e/a3AkKWeTSD6T6NRi68+/4mncNIL/fvIpbbv1wM/fpBvMjIFmLEmJqo2LospQAaoCOPbEcfRHm7NmG4H1QpkT+xzJiQl8sWIxY+68jYWToiksKKRBRHMST8Rb5wEWb/iOiFZt+PTLrxg/YUINH53icsAxRTx2QA88PTy4dcB9zJswuoRIp/eDjzJh/nLcPTwoKCwkOfG0U7/IDEsKQrgpJwlFlaHqoC4BPSfpIUOGsHLlSuY4+JSdOXmcmHt6Iwslza69jvFzl5GdlcnUZx7jfEa6rq/ZmLu6U1iQz9kzZ9RFr6gUMjMzOXLkCN179GTOmm2YgoJZ+spEvl3zOUFh9clMtVgdJdw9PBh5xy2kJp9l3uptzB43HDd3N2uaz5J0htnjhnPy6EHchVupjvoKRWmoOqhKxHakpF2wCydF4+7lZRdssrOy+GTJPBo1b0nC8b+tF7hPlpHMVAsBxYoqW8yhYZjMQWRlpHPkyBFuvPHG6j48xWWI0WjEYDDYnXNPvTCV79evZdS0OUS0amPt3qyNjkxBIaxdtQIfPz/qN23G2AE9MZgCSD2bRHiTCJCSgwf3q1o8RZWhUnzlxJn566jp8zifkc7p+GMU5OcXyXK7t+enLes5dewonl5emIKCgSK5ec/7HyHlbJLT1EnO+axqPzbF5Y2taAKKzsPbH3qMjxfOJierKE2tpfq63/sQGZYUNv3vA8bMmE/UK9OL6viWrWL2F5s4l5hQ5MWXnl6Th6SoJIJMJoQQdg9Ph7+1R5DJVG37pQJUOXFl/hoQFMLCSWOYP2E0P25eD0JgMAXi5uaGl48vb0296FA+dOLLNL6qBbPGRtnNA8waOww/fxNeXt60aNGiWo9NcXmjiSYWvRBtJ5o4m3CKUf26MaJPF57r05mGV7XgnqeG42sw4u3raz3XfQ0GGjS7ivoRzTAGBJJmSVHCiMsES0YGEuwe+Q5/aw9LRka17ZdK8ZWCY0daV07SmemppFtSOHZoP9fc0JHX3v/MmgKcP3EM3675jHuefo76Ec1IT0nGz99E9vlMou/qjr85iIxUC/l5uQQG1+OZyEg1/6SodGbOmE7UsGGMuKOL3dzTg8OjSUs+x0uD72PH6s/Y+vnHFOTnI2Wh7rluOXuGIU88oUofFFWKGkE5wVEyrlm6+Pj46Lo7zB0/gsCQUCYsehtZKK3GsFA0uhozYz6FBYWMv/8Onr2tPSPu6ELiyeM8P/ctlm77mVFvzKVhs6twd/fgsYcfYta/Z9bk4SsuUzw8PJg/bx7eXt6MmjaHJVt+4skJUzCYAvA1GCnMy0NISZMW1xD3xSb6P/5UiW688yeOwcfPyH/+80EJuyNHZatCURHUCMoJekKIxZPHMnZcDCOeG05eXh6xA3thCjSTZkkhNy+PeWu2kZ5qcVo34ufvT/b584DAaApAADH33l40erKkYDIHMfTJJ4mbPatGjllxZWA0GnnmmWf47M05jJg2F1+DwWqhddXVV7Pvzz9JO3eWiQ/fya0D7ufYgX1E390D/0AzGZYU6jdrTtOWrYieucB6bSx6IZouXbtx+NAhq7I1MjJSqftqMUEmk126ThT/NAMpNbJHJVFnjg6aEMK2pbYpKJh6jZqy7K1lfLlmDekWC0888QQjnhvOq1Onsn7TZgwBgRgCAsk5n6mbFsk5n8Wi9d+BlDzXpzPT/7uGsCYRWJISMYeGk5OVSezAXsyY/oZKmSiqlJkzpjNh4iRiBvbEPyCQjLRUWra8hnwfP2uLDUvSGf495hl8DUY633EnWz/7CH9zEMcPHaDXfY9YRT/m0DCCwhty7MCfTPtoLfUjmllv6CZMnKRuuGop2ryTI0LnuZpCpfh00BNCrIqbRuKJeN7cuJt563YRt3or3/26lyeeHMrnX3yBEG5E9ejAx4tm0/vBx5kTa+9UPid2BH0efgJzvVBry4LUc0nWiWetSZxmGaNwjZ7qyJXCqLzLXynIQkl+fj6FBYXs+/NPRk23T02Pnj6frLRUTh09zIJvvuXNTbvtvPgK8vNZ8fr/sWPNZ5zPSGfiw3eycuZUTEHByqOvDiMoGr0InYfZ37/a9kONoHRwFEJkZ2Wx+ZMP7YpqzaFhhDaO4PjhA7y5cbedGKLpNdfS6KoWjLjjFvyMRvIuXKD3Q48xOKZIxae1ywgMCbV7X2UZU3ac3v05URiVd/nLHS2FrRWWH/j5R+JihpdITQfWC6VQFpaYU9W8+PLz8jh19LDdNbBgUjSr4qbx5IQpyqOvjlJbDBwqZQQlhOgnhDgkhDgqhCjhuy+E6CGESBNC/Fb8mFLWdWsCTY67YOJoDvz8I4nH/y5hrmk5m8S3az8vYaIZ9fJ01n3wDjvWfI6buzt5efk0urolA4cOI/fCBQ78/CP/jn6W0NAw/jP7tTK17FaUxNndnbrjKh29Wr6IVm3IOX++RF1e/MF9+Bn9yc7KJDvrYm2eOTQMX6M/2774WDd4bfn0v5yOP6ZuuBQVosLXsxDCHVgE9AFOAT8JIb6SUu53WPRbKeXdl7hutZKfn0+hLOTw3l+ZFR3F+Yx0hJvgXMI/1l46Gz9ahY+fwXphFuTnsypuGps/+RBjQCBZGelEXNOG0TPmMv6+OxjZ9xYKCwsx+JvIzszg2WejcHd3twotbFt2K0pHq9FwpDblz2sreilsrWh31thhjJ+7FHNoGOcS/mHBpGjOZ2TwetRgMtJSrW3h01OSsSQlYgw0O+26GxcznBYtW+Lj41Pdh6hwwEsI8mp6Jy6Byrjh7AQclVL+DSCE+C9wD1CWIFORdauMCRMn8e1Pv7Bg3U5r2mLu+BG8+tTDXN/lVhJPxPPvT9cz8eE7rWlA2wZw2jrzJo7hm/+8i6+fgaYtWzF6xkXV0+LJY+neqSOnTp5QtSSVjBAXw5TZ358U5XZgh7NavrsGR7Lp4/8wok9na++oZq2v4/X/fGGXvlvx2kscP3yA+hHNOXf6H/06qaRErut0C+cSTjEuJpYF8+fVxKEqismj5A1dEPo3dFpQcFT5aVTnNVVhs1ghxINAPynlM8V/PwHcLKUcZbNMD+BTikZJCcB4KeW+sqxrs40oIAqgSZMmHY4fP16h/XZGZmYmDRs1tlPwAdbutwUFBdZ8+8qZUzl+cD/PTnmDiQ/fqWv8+lyfzkgpWbLphxKvxQ7sxamTJ1RgKiOOF4yzEZR0/FtKhBDOl68l+fbqJCZ2PNt/3GNN89neNOXm5rJ55y5O/HWU+Wu3657T7h6eFOTn4e3jS6OrWtgZyc6fOIZGV7ck8sV/YUk6w4g+nXn22SjmzolTkvMawuX5X/x7EGDRWcZRdl4V14wzs9jKmIPSC8KOe/8L0FRK2Q5YAHxRjnWLnpRymZSyo5SyY7169S51X0vFlZWRr8GIwT/A+trgmMk0bXUtEx7sh6e3t+465nphGIz6dVFKsVc+bO1YyovZ37/GFUm1Cb1Ozd07dWTmjOnMnRNH5xvb4eXknDaaAmjQtBlvbtzN27t+p2nL1oy84xYiu91A9N09iGjdhqETX7Yubw4NZ+v3u1Vb+FqKdi1YcGJtVHO7VikB6hTQ2ObvRhSNkqxIKdOllJnFv38NeAohQsqybnXjaKipYUk6Q1ZGul1vnNwLF+jz0OO8tOw/ZKWl6a+TnkZu7gXd19QEcvWRkp6OlLLE40pN/2mdmk+dPMGm9d9w6uQJ4mbPwsPDAw8PD1568UWy0tN1z9vM9DRi4pZgDg3D3cODqFemM/uLTWSlp9GxZx+enDAF9+KRkiXpDJlpqYx4XUnOayvatVAbqYwA9RPQQgjRTAjhBQwCvrJdQAgRLoonBoQQnYrfN7ks61Y3el1ILUlnmDk6kk69+tHj3oeYP3EMy16ZxLCeHXk9ajCvPP0wAUHBzJ84RrcBXJ+HH2f2uGFKsVeJmHGu4hMUpSs09JyZr/T6Jw1nnZoPHTqEl68PCyZF25238yeOwcvHh8B6oSQc+8uq7Ksf0YygsHC+W7ea0/HHrMvPGjuMznfcWWQwawpg165dKkgpyo7eXWV5H8CdwGHgL+DF4ueGA8OLfx8F7AP2AruBW1ytW9qjQ4cOsirJy8uT42JiZUCgWTZq2kz6Gf2lp7e3DG8SIQ2mABnSoJFs1f4muXzHr/LTgwly+Y5fZdtbbpMt23WQxoBAGda4qfTy9pZ3PhEpP/7zhFy65Sdp8DdJU2CgbBzRXAYEmuW4mFiZl5dXpcdxuQFIqfPQex4nP+1eVzglathw6entLfsOGiKNAYEyvGkzaQwIlD3vHyS9fHyln79JhjdtJg2mADnw6eFy6ZafpDEgUAaHhUs/o7/1NT+jv3x71x+y76Ah0tPbWzaKaCZNAYHq/K9mPPWzd9LT5joo6/VVFdcOsEfqfNerjrouyMzMZEx0NL8dOsrIN+ZhDg3jdPwxYu69ncUbvisxeRx9dw/mrd1OdmYGU595jCnLP8DXYLROPk999RWl2KsAZZnotX1OD23C90oVR5QFTSjUpf9AEk/E8+yUN5CyECHceDVyEMFh4SVEEWcTTtG2y63s/PpL5q3dTuKJeD6cN5OrrmvLhfPnOXH0ELHFaUFbQYayQapeXCnzbIvZnQkmPAD/KlDxORNJqADlAj1FX8Kxv3g9ajCLNn5fYvlhPTvy8tsf4WswMqJPZ4JDw8jKSCfyaWWaWRk4vbgoaW7pSVGtlCMeFEluVYByzuHDh+ndtz9xa7axKm4aWz79L8ZAM+kpyeTlXrCqWDU0hWvENddy4ughgoLrkXz2DG5u7gQEmjmblKi7jlKxVj+ubvK0IKXhSvVa2RL0qlTxXbboKfrMoeFkpKXqix5SksnNyWHu+BF4eHpRWFiILFRfgpWFduJr+Qmz9rzOss6arekFLYU9mlAoPSWZJydMYcmWn3hxyXu0u+U2/AP0C3N9/Ax0vuF6/jlxgs3rvyEpMZHEhH94+62lhNVvoFSsdQBbIVFp6DU4rIpmhipAuUBP0edrMNDtzntKdMKdPykaLx8fJj82kJQzicz5aguLN//InDXb2P7jHiWxrQJqUv56OeMoFPI1GBDCjZ+3bSInu6QdkiXpDOcz0nlj2jQCAwOtoguj0UjXrl1Jt1iUirWWUBkWYarley3BaDQyZMgQFjoomU4fP0ZhQSFjB/RkZN+ujLijCwFBweTmXEAIN6a+/xkhDRoCRXeKytW5Ytg6kTviTM3niiu5/qmsTPm/l2jX8ipiBvRkTN9bmPhQPwKCgrj9ocdKKPtmjR2Gr5+BdJ3UjjNVrFKx1gx6mQVz8fO2alewv55sVbGq5XstID8/nwkTJ7Fy5UrcvbwY0aczfv4m8nJzrX5kuRcuEH9wH9OGD8FyNome9z3M1i8+xsdgf9HZpjOUq3P5sZ28dQw+eum90gKUmntyjnbeL1++HHcvL85nn8fdywsBZKalctfgSNauWsHYAT0xFjcwLCwsxMPNzeloSOs95eg7OeX/XuLw4cNKNFTD2IYb2xS47dyu7Y2fB9WXKlcjKCfYtiNYsXMvcV9uwcvLm0ZXtWDg0GG4e3iQk5XJqtnTkFLSvM31RL70Gn5GE/EH99ltS6UzFHUF7by/5c57aNqyNUs2/cDyb39j7todmOuFMXfCKAYOHcaSLT8xatocIlq1wRwcwjPPPOM0yDgWBccf+xuAphHNSrSMV1Q/zuZrHVPoNTGPq1R8Ojjz4zuX8A/Rd3XH3cMD/6BgMlKS8TX606FHH6JenoYl6Qyj+3ejZdsbdY1hlaT20rBVHjnKX50pjZzd5SnzWOdo5/20j9bqekueS/iHcQN7IWUh3r4Gzmem4+npxTORkcz698wyq1Rd+QCqa6Rq0VPx6ZVpOD7v+Luj4k+jslV8KsWngzM/vpAGDQkIqcfz85bh7etnbdM+ql83Bjz5LG+/NpmoqCjchJtqo1FF2Kb0PNFP56lap0tDO++lLMTfyfkfHFKPLz/7xPpcixYtypWe03pR2d78afO0sQN7MfXVV1S6r4qoTHFDdd3kqQClg616z8dgxJKUaA1GWelphDdtjq/BABSp+nz8/Ii5tzfPPfccs2YW3Umqotyqx3aEpMJQxdHOeyHcyNBpx6Glql0FpczMTJfnvSszZjVPW7VYMjKsoiKN2h4Aavv+1QhGo5GnnnqKKU/cT2pKMqagYNJTkjGYAujS925rcAJNYptB0xbX4CbcrGkOzeNMUXHM/v66rdmrc7L2SkBT3L392mS63XkPCyZFM3r6PLs0nDPlXX5+PuNiYnl35bsEmINJsyQz9MmhzImbbZf6c9aLSs3TVg+2ogdJ2RSvcLHmsLpRIgkHMjMzOXz4MHn5eQSFhTN/7XYWrd/F/LXbCQ4L57ed20qYZwaE1KNJqzYupeTadpXUvHqxlagrs9jS0dpwfP/NVxw/tJ8RfTozvGdHYgb2tLbjcCQ/P58uXbuxadf3zF2znfnrdzF3zXY27fqeLl27WcUP2ujq8cGPM3f8CLvraO74EQx9aqjKNtQAroyXNSw2z3tW587pGfTV9kdVmMVqBrGmgEDZoEmE9PT2tprBao/lO36Vnt7e0svHRwaH15d+/ibZ64FBct7a7dIYECgbNomQhw4dcrrdRhHNlVHmJUApJpauXgek2dm6Cl3y8vLkqNFjpNFkkg2aNJUGo78cOWp0iXM2IyND/vLLL/KRQYOkt4+v7vXi5eMjH33scTly1Ojia6CZ9PH1kwHBIXaGs/WbNpNPDh0qMzIyauioL39wOP/NTgxkbZ/Xu648nK3n71+RfdM1i71iU3yOuXJNXhu3eiuWc2f595hndPPkQaHhBASHkHj8GAX5+ezf8wM/bPwGdw9PUlOSS6QobLdrmyqZMHGSUixVEo55ddvnU5y8pnDOhImT+O7Xvcxds133nM3Pz2f8hAksW7oMbz8DmWkWTOYgsrMy8cky4mswUJCfz1fvLgUJ32zYSHZmBj3ufYjIl14jPSXZ2nW3/2NDrfO7I+7owmeffc4zzzyjvCurAQtF14ijnNzCxfS5oKTXpSZLd0QvDV9RrjiZuVaIuGLFCkzmINIsydwz8B6++PILZn+xmbWrVrDpfx84NcUcO6An0z9aS+x9tzP7803Uj2hWXE0fhZ8b/PzTj9blXbWPV0aZZaesLuau5LKOeAB5dfDcr2rKcs5OefkVNu78jrGzFmMKCmbpK5PY8dWnBIcV+VT2fvBRZKHk+KH9jJkx3xrkFkyKpmmra3lywhTrtbRky0/WOd2RfbsyatocPntzjpKcVwG2Bq+287dlkZg7omfQXBHVrDKLLcZ2RDNv3U7mrN7Gnn0HkUKwdtUKjh/cz/y12+n/+FPMmzC6RAPCXg8Mon5EMwJDQpGyECgaWY2fu4yjR4/YzTGVRbGkqB6UaWzZKO2cPXLkCMtXLGfsrMWYQ8NYFTeNcwmneHPTbhZt/J55a7bx974/2PDR+9bgpK0/evo8tnz6X7KzsopaxweasSQlAsWdd1MtRLRqo6zBqgjNDNbs71+m81/PNsyMfhFvVXFFBSitBkMrEAQtuCzlQnY2m/73gVW1NDhmMo1bXMNzfTozok8Xxg7oSdNW1zI4ZrK1lbs5NNy6bXNoGAGBQXZBx1X7eKVYqhzK6r+nKBulnbMApsAiR/PsrCw2f/Kh9ZqBoutg0Jjn8TUYdIOcFpQsSWfIsKRgDg23u/nT1lM3cFWHrRO5K8riLlHVXFEBytXdoX9AID6+ftbX3D08iHzxX/R5eDAGfxPTP1rLkxOmkJ6SzKyxUXTtP7CE3Nwx6CijzMrBlQOz7cWjqDilnbMtWrQgPbXIndySlKhb0BveJIKsjHTdIJeZakEIN+bEjqCwsJBRfW8h+q7u1ps/bTl1A6eAKyxAubo7vJCTQ1ZGWonX7nlqOIkn4pn4UH+eva09z/XpzPHDB4k/tN/uAl70QjT3339fiffUZLuxA3sxtl83Ygf2cirXVZQPxzSFM7lsTdVw1FVcnbNGo5FnIp9h7vgR5ObkkHbuLKfjjwFQkJ/PyplTGXPnbXj5+JRoSTNrbBQgGXdPL3LOZ9GkxTU0ql+fq69ra/W3VDdwdYeKtOwo83tcaSKJmNjxbPvhJ2sLd9vJ26z0dP75+4hdO+tZY6M4+ddhLmRn4x8YxCvvfET9ps1Y8dpLbPvyf5gCg8hMT0UIN8zBIWSkWoiMLNlBt7QKe4VzNJGEFmycefE5a1Nd2RO6VwrOztmcnBxu7d6dvb/txWAK4HxmOj3vfRhPHx9OHDrAmBnzMQUFW68RX4OR7KxMbuk7gFv63U1QWH3e+tdkjh86wIn4Y0x7Yzpvv/12CWswpeKrGlx5W2ponadLrMvFAl9dT79KFknUeE3TpTwqUgel1SX5GgwyKCxcGkwBcuDTw+XSLT/JFm1vlD5+ftLb11eGNW4qffwMMqxxU/ni0lXSz99krfNY9fMRueCbb+XszzdKb19feV2nLtbXlu/4Vbbv1l2Oi4m95H1U2ENx/YVWn+FYB+WqnkM6e60CNRtXChkZGfLQoUMlapPGxcTK9t26253zrdrfJL19/UrUQi1ct0u6e3rK7vc+JA2mAGvdU99BQ6Snt7f85ZdfXL6XovKxvYYcawNta5xc1RZ66NRDVUUd1BWV4oOL1v8Jp04x8M7+uAvBr1s2MOH+O/CWBfga/On94GOkJZ8jPz+P1//zBeFNmmIKCsYUFMzKmVMZ1rMjrw8fwv8NeQA3d3cGPjOyhPGlUiFVHmZ/fwQX7/SCuCiK0J4vbULX8cRXjubOyc/PJyZ2PA0bNS7RDsO50GgZUhba9ULLzsoqes7PD8uZROat2cai9buYt2YbiSfi8fLxsS6rWYOp7ELVo11Peik6LW3uqfO6lsGQFI2u8qHKr6krLkBpBAYG8s7bb3Po4AHeWrKYgwf28+2O7eRkZXL/s6N4fsEKfA1GfAxGzKHhZFhSWPHaSxw/uJ+4LzbRqXdfAHz9jMyOjmLlzKkUFFu6KBVS5aLJY2Vx+kALSLZzS866fyrKj2MpRtzqrWz/cQ8TJk5yKTTSeqFpc1HDenbkX888Rm52jq7kPDcnh/r169fEIV7RaIFES8ZpN3R5XLyu9NJ7eqnyquaKm4PScCzYTbekEBkZSX5+Pp98+RVpKcl4eXuTe+ECtz/0GLkXLrDl0/+yeMN3fPXuUo4f3G9npDl/UjQRNkWIMQN78s/Jk+qOsJLR2lE7y4NDyTy5mm8qO6UV6h48sJ9rWrXWfX1Uv25cff0NNGx2FYkn4hk9fR7ZWZm8HjWYRRu/L/Few3t2ZOe2rTRo0KAo8JlMpKenq3naKsK2UNcWx8BTlv5Q1r8r6bpS/aAccGZB5JabTXBYOP96/7OLwWfiGILDG+AfaMbHYGTzJx/aNXMzh4YxZvo8xg7oyR0PP8Gil2Jo2fIadZFVI46TvcLmeUXZKa1QNz093SpDt204OHvccG7pPwAfPwMbP15ldWHxyTKSkZaq616elpLMoMce58jhw3h4e5OVkU5gUAgXzmcSGansjiobrf7JkdpcQ1gpKT4hRD8hxCEhxFEhxCSd1x8XQvxe/PhOCNHO5rV4IcQfQojfhBBV1ybXBmd59KdfmsbevXutVfIAPgYjD4+K5du1n5NuSSb+4D7d2g9zaBieXt5MeLAfTa6+hsOHDqk5qCrA7O+v+7yreSgPUA7mZaQsxeWaDD1mQE+G9+zIiD6d+eevw+xY/Rk713yGwd9kvT58DQZ6P/goCyZFl3Bl6XnfI+QId8KaRNC0ZWve3LibJVt/Im71NmtKUXFlU+EAJYRwBxYB/YFrgUeFENc6LHYM6C6lbAv8C1jm8HpPKeUNekO8qsDZXaKUhRhNgZhDw+zy6Asnj8NNuBEUFMx7M6eSnpKsewHn5mQz/5tviXplOgHmIDUHVcnYpihsRRKljZK03LpeekNhT3mKy/Py8/E3BxP35Rbe2b2PJZt+oEGzq8lKty/SHRwzmfAmESVcWSJfeo3YuCWcOHqIZ6e8UUJotOLtFeomr5LRBEaODixlzTRUdd2TI5UxguoEHJVS/i2lzAX+C9xju4CU8jsppZaB2Q00qoT3vWQc7xKzs7JIOPYXuTk5ZBanI1bFTeP4wf1W5dHijd9jbtCoSAghJbPGDitxR9j7occw1wtVlfBVhK1Fy6Xar6j+UKVTWnH5hImT2PL9Dwg3NyYveY/6Ec2Ai2o+N3d34mIv9ntKT0nm9PFj+BqMvLRsFUu2/MSTE6bg7uGBOTQMgynA6mupYQ4Nw9vXoG7yKhlXmYbyWob5O8lmVCaVEQQbAidt/j4F3Oxi+UjgG5u/JbBBCCGBpVJKx9EVAEKIKCAKoEmTJhXaYe0ucdEL0YQ2jmDn11/iHxCI5WwS7h4ezBk/kmMH/mT+2u32Uto5Sxk7oCdzVm/l40Wzib6rO57ePmRnZdDjnoesPn2qEr72opeHDyp+XhNgaJj9/a9IObpWijH11VdKFOpq6fEJi99l4eRxuqluHz8/AoKDGdWvGz5+BrIy0rhtwAMc/XMvvgZjCYuwrPQ0hLC/V9bmqEzqxqHasC3e1XUwr4HroTJGUHrHoivtEEL0pChATbR5uquUsj1FKcKRQojb9NaVUi6TUnaUUnasV69eRfeZmTOm4553geOHDxSNkjZ+z6IN39H0mmvJSk/Dy9vHqdllbk42I16bzdJtP+Pu6Unnvnex65uvGNbzJsYN6KGsjGoZpd0ZOr2rvMJTgnq1SVp6PKJVGzKczFVlZ2aSGP83r//nC9p2vQ1zvTDO/nOSW++6t8Rc1KyxUXh6evHW1BdKZCQM/v6kX4E3CFWFs/lbDe060TISZn//Gq8drIwR1Cmgsc3fjYAS43IhRFtgOdBfSpmsPS+lTCj+mSSE+JyilOGOStgvl+Tk5HD40CHiVm/Fx2Ak4dhfmEPDeX7eMsbc1R1AV3mUmWqxupjnZGVy4XwWz/7fGzw0fBwTH+zH+nXf0K5dO6U+qmacNS10tGypzYqluoCWHs/JyrSKH2zLLeJin0O4CTLTUpn4yF0IIVj4zU7WrlrB5k8+xMPTk+f6dMbP6M+FnGxkYSHCzZ3wJhGMHdATY6CZzFQLXfsP5O99e1WavJJwJjG3pTaWYlTGt+hPQAshRDPgH2AQ8JjtAkKIJsBnwBNSysM2zxsANyllRvHvdwBTK2GfSiUhIQH/QDNfvbuUzZ98iL85iAxLCr0ffBRvX1+u63RLiYtvdsxwuvYfCMCBn3/kw3kz6fXAILLSUpk2bDCFhYUMGjzEWlOlZLLVh1bHoQUgrSo+HxWUKhNbEcWwqbNYu2oF0Xf3wNvHl8z0NAJD6jHzk3W4ubmR9M8pFr04jpAGDXlywhQeHhnLudOn+OY/77Lls/9iDgkl9dxZmra8htPHjzH9o7VIWYgQbix6cRwPPvCASpNXElpq29W1EGQy2Y2SnNZNVWOqr1IKdYUQdwJzAXfgbSnl60KI4QBSyiVCiOXAA8Dx4lXypZQdhRDNgc+Ln/MAPpBSvl7a+1VGoW5mZiZh9Rtw9fU32HX9nD9xDIf3/oKnhwceXl5kZWQQEBTMhewsWrZoyf4DB8jPy8PP30RWRhoGoz+5Fy7Q/NrrrPJ0bR5KdQWtXDyF0G20Zlto6Il+M0Lb9u+6Jpc666gCX32sRe5vr8Db10Bq8jl8/PzIysygz4OP8e3aL4quj/Q0CgsKWLR+lzUTsXLmVOIP7CtxzZ3PyiDh77/wCwgkK9WCEIJ/Tp4gMDCwxPsr4+XyoxnEujJUtnDxfNeCU3VdF84Kda9YJ4nMzExCw8JZsG5niTTe6P7d+PvoUdLT0+2q26e8/EoJJ/R5z4/i6B+/smDdrhLbGTegB4cPHiQ8PFxvFxTlxNaFuazV7o7POwtgKkCVHy1QmEwm9u7dyyOPP46f0URaSjL+5iDSk89RWFhIs9ZtGD93GT4GI1E9OtiJj6DoWnmuT2er67nRFEhOVibDhw+3y0I4c39RmYrSKfO1U3y+2zq2uFquEvdPtXy3JSEhgeDQMGtn0IRjf1lbUQfXCyM9PZ2WLVsSHh5Oy5YtAVixYoU1OEGRaOKRMc/j7WfUFVR4ePlwdYuWVqNNReXhrPdTaeRTUgzhbFvqK881mogiPDycdu3akXP+PPUaNGLm/76hzU2dad6mLfPXbqflDR0Yc1d3hvfuhJe3t75LhTmYBk2b8ebG3Sz/9lcWrNtZoljXlUegomQJhafN71D6NaIVtDuqWWuSKzZANWjQgLSUZJa9MsnqTj6sZ0eWvTKJdEtKiclZZ8W9Ea3acN5J99C83AvM+GSduoiqgBTsO+lqiqNL3RaUDFzqlqLsnD59msKCAuo3bcbEh/rzy/YtHDvwJ2veW05hYSECiiTn6frXSrolmVEON3+2XQGcub+ozgEXcawT1LsZc3WFOC7viF0XgWqqIbxiA5TRaOSaVq04cfSQXRuAE0cP0fKaawA4fPiw9cR3ZgGTk5WJp5cXi14oaeXS64FB1I9opi6iSsJZmwAzShJeG/Dy9SXxRDzz1m5n4fpdTF7yHkd+/5Wft25k3trtLN3yI73uf4TZMcPtrpX5E8fgZ/S3Fvxq2HYFKM0jUBX0lo9LcZSoiXKMKzaLkZmZyeFDB4lbbW/6Ghu3hNH9u9GgYSMCgoJJt6QwZMgQnhs+jCFDhpQwyVw8eSzPREbi5ubGuAE98PDyIS/3Ar0eGMTgmMnW7WoXkZYuVJSflPR0u1y6LWVJStSexMXlR/369cnNzmHEa7PtlLHpKclIKfH0Lur9FPnSa6x47SWe69MZg3+AXRGvXlmHrSOLdoPoahmFa7QApAUbRzTrsBScl27oIYSoEnXfFTuCKrojC9a9I/M1+jPxzZXWPPemXd/TtXsPVq5ciVtuDjEDe9pZwMz690ziZs/i8MGD5GafZ/pHa61WLqAuokvBmSWR3h2VdtFpr+uNsjxxnd5QVIz09HQCg0NYu2qFnUXY/LXbadqyNe/9u6h6xN3Dg6hXpuNn9Oeqa9vS+8HHnBbx2jqylMcjUFESbcTk6Pgf5LAMXLQ90pYtyyimqkZSV2yACg0NJTkpUTcffiE7m4hWbYCigDVq2lxyc3J4ZeUnFHr58MTgJ9i0/htOnTxB3OxZVgVReHg4UVFRvP3aZHURVRBnvnt680IWSs+7a8W6zgKY3vOlVd4rLtKgQQNysjLY9L8PrLWDoPnzLWX3hq/JzsoCiq6J/Lw8LlzIxtPTi4jWbfh27Rcc3beXEX06M7znTcQM7FnCkaU0j0CFc1x58JW2TI3Oxer1ga/tjw4dOrjsb18aeXl5smOnm6WPr59s1b6TXL7jV/npwQS5fMevslX7TnLg08PlpwcT5Md/npADnx4uDaYAaa4XJv38/WXfQUOkKSBQZmRkON32uJhYGRBolo0jmsuAQLMcFxMr8/LyKrTPVxqAlDoPvecp5XXpcM2ZHZdXVApDhg6VQaHh8tODCSUeYY2bygXffCuX7/hVtrvlNjnw6eFy+Y5fpTEgUK76+Yhc9fMRGd6wkdy5c6c8dOiQ0+tLSikzMjJKXeZKxOzvb3eeezic96VdT2W5dlxtoyLXErBH6nzXX5FzUONiYsnML2Te2u12lfBZGUWtxcfNWgRg52iuzTktmBSNu6en0/kkV0abisrhUueSbOtAbHGsoFdcGgY/g7UbgOM8UUpSIv+KGsz59DTr/Ky7hwfGQDOWpMTiGqgs2rVrV+r1osnbFfa4OocrQzquZRkcMVd4y8654gp1MzMzqd+wIXPXXCwWzM7KIv7gPl59+hGklISE1Sfy/15nbuwI5ukUFY7o05nj8fGqALcKcSWGsD1n9exYHNcrrXreA8irg9dBbUJrFd+l/0BOn4hnjI1F2KyxUZw4fIDJS1cR0aqN1c3cknSGsQN6Mv2jtbz92mTlvFJJOLMoKou4yNkytk4TZb02y4Mq1C0mISGBAAdxhK/BQOsOnQgOb8Ar73xMYL1Q5sSOwNNJUWFAULByWa4lOM5V6S4DJfLqWv7djKp3qgw0GXjkS68R0epaxg7oyci+XRk7oCdnTsTz0IMP8tmbc8jJKiq1uOhk7smLg+5Wc0mViN78bUVJsfndablHFczZXnEpvgYNGpBmSXbqVB7RqsiWJfruHlzIydFd7sL580qRV8WY/f0RTowqXa5H+VKAmj+fomJodYLpKclWY1hLUiJCuPHioLuZO2cOU//1GrEDe2EKNJOeauGJJ57gufffpUmTJnZpPeW1V/k4uy5sfSyd9oFy+Ls60+FX3AjKaDQy9MmhzBobVdS7JiuLAz//yNznR9HrgUH4GgyYQ8PwNwfRpe9dzJ84xk6RN3f8CCIjI+0auNkW9Coqh5T0dF2BTGkXh+YwoaESd9WDowzc12DA12Dk7dcmM3jwYJKSkpj66iucOnnCqoBdMH8e1157rfVays/PJyZ2PA0bNaZ33/40bNRY2YRVED15uYbEfmRk66hiiyY7rxFVq96XQG1/VFTFZ7FY5PVt20pvXz/p6e0tA0NCpY+fn+z/+NNy7pptcuG6XdIYECiXbdsjez0wSHp6FS3jazDI6HHjZF5enlWt528KkGENG0l/U4BS69UAuFAW2aqYqkp9pLiIo4LVPyBAtm13g/QPCJCNIppLU0Cgy2tkXEysbN+tu52qtn237nJcTGy1HkddB51zvCxq2Jq8JnCi4qvxYHMpj0sNUNoFZAoIlAHBIbLVjTfJ5Tt+lR//eUL2HTREevn4yuDwBtLLx1eGNGgk/fxNMrxxU+np5S1bt7lOWiwW67aix46TDZo2K1qm+GeDps1k9Nhxl7RvikujtAvNXEb5LCDN/v41fTiXBSdPnpT33X+/9DMYZasOncoUcDIyMqQpINC6rPZYvuNXGRBoVpLyclCWAOUoQdceHpS8uauOa8NZgLqiUnyaG/K0j9aSl3uB8fOWYQ4NY1XcNBJPxLN4w3cs27aHxRu+o16Dhtx6170s2vg9b27ajfT25f+mvAwUpfXeWr6ckAaNmL92u7ViPqRBI5avWKHSfdWIs8JbLW+uCSGcLWMnmlB+fhVCS9G1vKYV277dSV5+HuPnLC1h7rri7RX8+uuvdteJ8tqrPGxFDM7QkqaO80taoXsetePauGIClK0bspSFVpuj7KwsNn/yYYnq99i4Jez65issZ5PIzspk1LS5rHxvJZmZmRw5coT8vDxr0zVtnTEz5pOXl8uRI0dq8lCvKPwd8uLaBeWYW9dTNaWgqEwmTJzEth9+YsG6nUx971OCQ8N1A46bhxf9Bwy0m2NyZsasbMLKjzZ/WxqadLw2c8Wo+Gzv0HyyjGSkWopFEpn4O7lz8/HzY3S/bgSE1CPDkoKnlycnTpwAwM/fhI/BSMKxvzCHhlvFFX7GqrOeV5TE1kBWqfFqDu0GMG711ovXmJOi3bzcCyxcv4vUs0ksfnEsueNiWLhgvlVk4WjGrGzCrlyumBGU7R2ar8FA7wcfZf6kaIRwI8PJnVtGqoV/f7re2oojvEkz3lyylGbNmpFzPouoHh2sfaRWzpzKuYR/uJCdRYsWLWroKBWKmsExRaddY44GsPMnjqHn/Y/w8aLZTHz4TlKSklj21jJGj4lm2uuvKa+9SsQD1ylwvfrA2sYV5SQREzue7T/uYcS0uZiCglnx2kts+/J/eHn70LD51Yyfu8yu+r1py9ZEvXLx4rAknSF2YC+eeOIJtv3wE2NnLbYuP3/iGM6cOsGgB+9nblxcZR6uohS0EZQzxwinVe96z9XB66E2kJiYSItrrrFzaCnIz2fFay+x5fOP8A8IJDMtjX6PD0UWSk4cPmBNq1uSzrBwUjQ9O99E3OxZqg6qknDW5r00ZxWn10sVXhvOnCSuqACVn5/PuJhYli1bSmC9MFLPJXH7Q4/T7a57+Vfko7i5ueHp7UPuhWzc3T1YsXOvtWWGxpg7biEtNcXuQoSi4DW6fzcSTp0iMDCwooeoKAfOrF3MQAb2ThEe6DtHeFA0n6U8+cpHfn4+EyZOYsWKFbh5ehLeJMLhRm8Yxw78QWF+Pgg35ny1hYkP32n1t9TQbv5OnTyhglIl4SxA6d2cac87m5eqil5Pdu+trI6KjFxHjxpJSFh9np+/HA9PL+5/dhTX3NCBPo8Mptm113Ndp1toek0bCgoKSE9JtlvfknSGNEsKgUH6faRC6oWRlJRUnYek4GJlu2O6IoViVZKNbNVZO4587CvknfWjqsr21nURTRkbt3ory7b9TNOWrRnZ9xaiurdndP9byc7KoGW7Dry5+Uf6PDKY2WOjMAYEKrVeNaCl9zyL/y5N2Qc2xboOcu+aunG7ogIUFM1FZaalYg6px+0PPcb84hz54JjJNGx2FT9uWcfJIwcpyM9j1thhJVwknnzySdItFqU2qmVUtj+Ys35USop+EVtlrDk0DHcPDyJfeo1ud91HeqoFU1AwCfF/U79pM754+022f/kJ6ZZkUs4kWl1cEo79RXZWlrp+qgDtZsz2pkyTlTteJ65avdckV4yKT0OzZFn0QjQhDZtw5PdfGXFHF/yM/mRlpHNL/4H8sPFr/vX+56z/70qi7+6BvzmIDEsKSMm367/Gy8tLqY1qGa7u8JylABUVQ692aVXcNM4lnOLNjbut10Zc7AgsSYnWtN6SKROY/Og9ZKanYgoKJj0lmcCgYIYOHaqunzLgNKVdhjScqzkm7WdtatRZKSMoIUQ/IcQhIcRRIcQkndeFEGJ+8eu/CyHal3XdqmDmjOm4513g5NFDLPh6B2/v+oPx894iODSchL+OEBgUQoNmV3FvZFG7jReXvMfSrXsICg4hKSlJdfasY9iOhhSVh2PtkrOawpjZi0m3pOBjKAo+Hp5ehNRvYFfkHhQWruoEyoir0b1tOvpSqMl0nh4VFkkIIdyBw0Af4BTwE/ColHK/zTJ3AqOBO4GbgXlSypvLsq4eFekHBRd712g1G0UphkQKCwuZ9PBdFBYW4O7hiSkomAxLCr0ffJS7Bkcy4f477CZxldqobuCo8nN1B6ndhVZFz5vLEVtlbHZWJq9HDWbRxu9LLDeyb1cmLXqHDR+9z8aPV1lHWBpKJFF2XJ2bziiTQKIGRULORBKVkeLrBByVUv5d/Eb/Be4BbIPMPcB7xZ5Lu4UQgUKI+kBEGdatdLTUhCkomJUzp7L5kw+taTx3D3eat7yOcbPftJOQv/rUwyVSeKqzZ+3GNhWiXbweFE0a6yn5zKg5pvIyc8Z0xsXEMqJPZwJCQkk9l6RbnJthSWHDR+/z9597nTpMaCIJdU1dOs5UeEGU7pxSm0ZOGpWR4msInLT5+1Txc2VZpizrVjpaamLFay9ZW7ovWr+LqSs/4UJ2Ns/9a3YJCyPLuSSm/N9LVb1rikpELxWSB06VfNqFraVHtAlkTyouurhcsVXGTln+AV37DywhLpoTOwJjQCDbvvgfo96YZ3WYsEWJJCoHveJb7dyuixnUyghQesetVwOpt0xZ1i3agBBRQog9Qog9Z8+eLecu2mM0GouKbb/4H6Onz7OOpP5vyP0YA8xMfPhOVs6cSkFxHxolIa+7aP1wbAONK5xJ0Gtablub0ZSxvgYjT70wleOHDxB9dw9rR93mbdpydZt2eHl7Uz+ima7DxMJJ0UpkVMVInDtL1Fa1XGUEqFNAY5u/GwGOxQzOlinLugBIKZdJKTtKKTvWq1evwjs94rnhVgXSqrhpHD+4n/lrd7D821+Zt2Ybxw/uZ1XcNKDk3Z1qUlh3sL2j1EZOzqhrF29twbZZYd6FHPo8/DgRrdowatoclmz5iXueHs7Z06fIyki3lnQ0LW4LP6JPF0b06UK3DjcokVEZqch56qoOsFai14OjPA+K/i9/A80AL2Av0MZhmbuAbyj6P3YGfizrunqPijYslPJi/5mF63ZJgylAtw+Nsfh1rYeNbT+psjRgU9QsOPTDweGn48Pl8wqX2DYrbNS0mTT4m6SvwSDr1W8ovX19Zd9BQ+SAocNk2y63Wq+1het2yWs73CRHjhpd07tfp9A7T8G+95kZ3TgkPWrpOY6TflCVYnVUrNKbC7gDb0spXxdCDC8OgEtEUVJ/IdAPOA88JaXc42zd0t6voio+jZjY8azfvoOUpCRd5dEzt95IXk42zz77LDNnTLdWzTvWP3Xv1JG42bMqvD+KykWbS3JUMLlSMinlXsWwVbZmZmZydYuWzPhkHfUjmlGQn8+quGls/uRDPL28Kci9wJNPPsmcuNl4eKhxalnRU/HZpq5LO8dt7b7MFIknavocV158OuTn5zN2XAzL3lqmK3sdN6AHhw8eJDw8vIQ03XY5JY+tnWgqPu0M19R7zvz4QAWoyuTw4cP07tufeet2Wp8ryM/n3RmvsvG/7xMSHk5WejqRkZHMnDFdBaky4ipA2Z7bLssp0Ff7aetXt+RcefHp4OHhwcIF8xkWNYyFDpO2iyeP5ZnIZwgPDwdUx8+6iOMF5qxbKOhfzIqKodeEcFXcNE4dPcybm39g4cbdxK3eyvYf9zBhYrXU6F8W6Nl6aZQ2z6rhTO2nrV9byi2u6AClMSduNj073+TSGUJ1/Kyb2E4oVwRlFFt+bMUTmvfepv99UKIT9Yhpc3n77beV6KiMaB1zpZSXfdmDClAUjaTiZs/i1MkTbFr/DadOniBu9iy7lIPjxQYoD746gK1qyRVabl5PHeWJvZWMbaBSrueusbUFGz+wJ17ePioLUYk41vpdbqgAZYPmDOEs2CgPvrqHbTrEFVrqT/vdsbjXdjnb9IdyPXeN7c3f16u/oiDvgspClEJl3PSYcd5Jty5xRYskLhXlwVe3sLU8cjZx7LRRGxfz9ZoyypVVkmYno4QV+th69yklrD7l8YF0XNZZt1xb8YT2uysla3Wfv1XpxXfFoTz46haaWCLIZEI46byrBSFH9EZeri5uhWu0co3Ygb0wBZpJT7Xw9NNPqyxEJaF3gySEsMsCwEWHFUe0NHdtmdtSIyjFFYcQQnfEVB5Zbml1VGoE5RqVhXBORUZQesvWBWd+JTNXXJHo5fM1yjO5bCvLVZQdZ7Zgpc33KsqG7RyrrakxYD3f63KaTAUoxWWNUxED+nUkepTnAleu50Xk5+cTEzueho0a07tvfxo2akxM7Hjy82ut61udQrvxsp1brXM+e2VABSjFFYuW3tBGRbbO57aBqzyhRtvWle56rtmCxa3eyrx1O1VBbjnQK8TVbnocA5NGUPXvZrWg5qAUlzWl5d81hV9pyiawD2TOlFICSkxIQ812K61ulC1Y5WGrQNWQOD8HXb3maPFVm85JNQelUDhge/FrF66g9LvRFEraJGn1Uo42SldiXZSyBas8nBXiOjubtODk1MbIxim8tgQnV6gApbhicTU/5Ygzl4m6VvhYHShbsKqntK7QlwsqQCkua1zl88uD5vCs3X3CRel5WcUWVwrKFkxRWdRlBaJCUSqu0hi2kvPSkFCiyFevuFcFqSJUQW750ZtvgovOJZ7Vvkc1jxJJKK5YXAkobNFr6ubYDNF23dpeFFmdqILc0imLFZdmP+SJvWek3rIut1NLz0FldaRQlANb7z0NDy4GJmdNDzWTTkds14XapaCqSpQtWOloc6FlGX3rKUQdcXUO1jXq4j4rFJWCJnxwxJnwwVGGrreudaTl8Lzjc3qegApFWdDOT2fnrp0fn81rdTH9rEQSiisWLeA4BiRN+KAUeorKoDJ7hmlKvRSbv21HGbaincth9HE5HINCUSFSsC9u1NJ32sXujMsplaKoOrQUniMVHUXbZgAuV3d9dS0pFFy8IwXnF73jBe+YSrH9qVC4QisG1+YlbTs6O6I976ji0zIAl/P5plJ8CkUVYtt3x7ZeShNNqPbxVyZ6bg+OAgizw/O5l/A+Fan9qw2oEZTiisXs76/fwNDfX7cexVlKz3auynpnrLOM3ijNkpFhpwysilSQom7heA7onVOuRlx226qlsvKyogKU4oqlvEW8mkLPUWKuzVV5Ur7OvKrIV1EWynNOXW5UKMUnhAgSQmwUQhwp/llC+CSEaCyE2CqEOCCE2CeEiLZ57RUhxD9CiN+KH3dWZH8UisrCmfeeret5aSma0tC26WhO69j2A0qmAxW1D2cpWttGgpVtiaWpUCvDzqs2UtE5qEnAZillC2Bz8d+O5AOxUsrWQGdgpBDiWpvX50gpbyh+fF3B/VEoKoXqaP7mzODTmRv1leSIXhdxZj5s6/zg6EpeGWju+lD33MpLo6IB6h5gZfHvK4F7HReQUp6WUv5S/HsGcABoWMH3VSgUijqLs1FPVY626iIVDVBhUsrTUBSIgFBXCwshIoAbgR9snh4lhPhdCPG2XorQZt0oIcQeIcSes2fPVnC3FYrKR5vQdfyCCdJ53tmJbjv5rZdeVFQ/rtSVtq+VB7tRj83PXKpupFUXKTVACSE2CSH+1HncU543EkIYgU+BsVJKbez5JnAVcANwGpjtbH0p5TIpZUcpZcd69eqV560VimrBVY8eLbhoz9kq+hzVWNWRXlSUHad9wzIy7F67VEoLbU7nmCrwnnWFUm/KpJS3O3tNCHFGCFFfSnlaCFEfSHKynCdFwek/UsrPbLZ9xmaZt4A15dl5haIm0NIw5cFVcCmLx5+ibuPKdcQf140GUxz+1lxPHJ1OLsd2HBVN8X0FPFn8+5PAl44LiKKx7wrggJQyzuG1+jZ/3gf8WcH9USgqBVeNDnNtJqK1OpPS7qAd1Va2cw3Y/F5au3lF7cXVSMfWO89RQKGNsPXW1cO6LYfzMLeO1zzpUdEANR3oI4Q4AvQp/hshRAMhhKbI6wo8AfTSkZPPFEL8IYT4HegJjKvg/igUlUJKenqJLwBnyigtmJW6TezTdc6MahV1E9vPV8OM/UhH70bEWesWDyqvI3RdRTUsVCgqCccGiLYGtLaYgQyc95Mqa2HmldJTqqpx1slW+//qNbZ09dlqBd0arpoQOv5eYpk6+P18KaiGhQpFJeDqy0zPOslVoHH2mrP5ihJ2SaouqlIozW3cmSWWs8/PVsCgRsQVQwUohaIc6H2ZBaFfRHupF5etpVIezu+wFdWD3ihVk5U7G0llUiQZV4KXiqHczBWKCuLM+aGisnDb9R3tj7QvPmV/VLM4++yd2V7pudtrzytKogKUQlGD6PruUXL0peyPag9eNj2cyovt52h2eF4pOUuiUnwKRQ1yJTtV11XysBc4OCMI1y0xXH32V5JSzxVqBKVQVCF6Xmu2r2k/Xd01l9UxQDU8vDT0/O8cP6tLwUJJo9iycrmYvVYUFaAUinKgV5dSlnU0XNkhOXuv0pRgWiByZcmjcSlB7HIPfNqIqKzzSOVBryhbUXZUgFIoyoFWwAv2cwnOzF09ufR5Iu29Skv1lOfuvCxBrDLWuVJw5R5hG+iU+euloQKUQlFBHB0ENNeJPClL3J2XFQ/sR0ZQ8m78SjEMrSiljQBduceXNlLUc48Ae9GD7US/bUBTlI4SSSgUl4Cz4s2KTGw7fmm5ciBwVRulV5sjhLhiJ91LK8R1NOu1vl78vOPn7Mws2JkLiO2yti4TTrdzhX5OeqgApVBcAlU1gV0WdZituMIT+7kSly4VV1hKzpnrR0XJlVLX/gicf26eXKxrUxZVZUcFKIWiGnFmY+TMMNTZNrQRUp7D844+cFcazoJSECXbVpQVLdVXEfK5cnz1KhM1B6VQVCO2nVRtKc/Xn9Oi3TKseynu2LXdUdt2jsmpoMNxneKfpQUegb3y0tmcn55DhCq6rTgqQCkUVYirL3fbNh6VIWkuC7aji7KmT8rTesQW28DhqSNSqCyp+qV0tbUN8q7QEz/oKTcrctOgcI4KUApFFaL35W7298eSkWH3Re2IK/lyRbBd3zalmFEcuFwp3spbD2UbOJzWf1XjvJiz2rVL+V/bqvdKC3J627nca8sqCzUHpVBUM3qqMu0L0dX8VFkEFNryzrZTmrWS475Z24s7BBJtvguqX3xxqeIHvf+fo+KxKmaJ9OYFS1MWKopQIyiFogaxnbuw/aLUCj2hKDiVtX7Gcc7E9lFed3Xty7uqU1d6aUBXIwnHeaayoifrLmuqzxE9k19n1Kb5urqGGkEpFDVIaSMaDW20ogUNx9c9KJ8SsKz7Vl4cRzdlEX/Yjmysv1/iSMLZKNSxRslWwGC7vDaStVX86Y1IHT83V8ep1HuXjhpBKRS1FL15EGcjmnwuWupUdP7KdlSn7UdpirTSVHRVie3x2o1Ci7scY/O8tpwnrkeHtv83fxtBiyZ6cbUPtVHpWFdRIyiFooZx1pVV+xJ11bJBD7u28JT9Tl+jrKM6W0qbH3N2DI5B0/Z/YSsecVXcap0Lo+RopbSCWu2n46gJLjp22L6v9rujsMVuH5zsi6L8qBGUQlHN2ErPwXVXVs3TDyrHd6+0O/3y3PHbHkNp9T6OdkLaMToGBaejGhvVoyvvvPJQnjk1R9WdK8qyL7W9tqy2oEZQCkU1Y3tH7vhl5zia0l73oHKECY53+trv2j6lpKe7/ALWXvGgpMVSWcQC2rq2OBtBOsOVd57jqOtSsRVUaNssz0jUv5T3VlZHZUONoBSKGsTxS9TVHNOl4Gy0UZHRmPkS98f2WGz3xfaYXY2OtPm1srxHRWusSnOhdzYS1YKvCkCVgwpQCkUNUt4vMmdfjI5tOLS/HQOJGf3UWlmxTYfZSq01yhoQNdGBI3oSeS0g2oognIk2bN+zvDgGGVdpS2eWVSpBV7lUKMUnhAgCPgIigHjgYSllidG6ECIeyAAKgHwpZcfyrK9QKIrQCywCyMXeMdtVGqw0yipoKK+YQkvl6ZmvuhrVled9HJdz1RqjtHXLGuQudT1F6VR0BDUJ2CylbAFsLv7bGT2llDdowekS1lcoLkscRROXiuaYXdGJdtvgZjuS0QuOzkYZetJtLdCUp+39pZqtaqM7xxGkdkfuKCWvSMpTCR2qjooGqHuAlcW/rwTureb1FYo6j61fnyucKr90tueKyvhCNXOx+LWiajpXlJZOcfZ/cDWXp1ejVVrK01lq1dH0tywmuoqyU9EAFSalPA1Q/DPUyXIS2CCE+FkIEXUJ6yOEiBJC7BFC7Dl79mwFd1uhqJ24kh9rgUxPWFGeQFPiy/kSvlBTqHxBx6VQniBzKdgKOaBkQFLBqGop9WZHCLEJCNd56cVyvE9XKWWCECIU2CiEOCil3FGO9ZFSLgOWAXTs2FFVwCkuS8ryhVfRL0VnUnbbYlg9GyAo+sIoSzrMmXS8tJSdszkjZ1Q0LersOPWOUXXCrX5KDVBSytudvSaEOCOEqC+lPC2EqA8kOdlGQvHPJCHE50AnYAdQpvUVCkX5MPv76/rZaWk5XdGBzfKuhAnaSKUirunO0OTdtstr6TW999FqsRztmVzhuJyz/TTj4MqhnMarnYqm+L4Cniz+/UngS8cFhBAGIYS/9jtwB/BnWddXKBTlx7EPFZRdXl7WVOGluqaX1wnCsfeSFlDynSxTGq7qmxzfV1GzVDRATQf6CCGOAH2K/0YI0UAI8XXxMmHATiHEXuBHYK2Ucp2r9RUKReVSHqVgWUUWl4ptESxcrInK0xGJOBUnlPIeztZzDI6K2k2FBDdSymSgt87zCcCdxb//DbQrz/oKhaJycWWvVF5sLZIuBdv1KiLJdlWv5Tj6EeibuFb0f6GoWpQXn0KhKBcV/Uovj8u3q7ks7cvLcc5KpeYuH5TVkUJxhVEWJ21XNVdlmb+5VMdxx/d1hd5cV2mpPcf3d3acevuvCnCrHzWCUiiuMMorZXfWU8mVis8ffZl5eV2+y5uC03Nrx+Y5x/dXsvHajRpBKRSKS8J2BGNbwJqPc+VdTQeEmn5/RflQAUqhUFwytq0tgkwmoPY043N8f89qfXdFZaAClEKhqBS0/kuONVgVsQUqzX+wLHNl2iMPRV1DBSiFQuGSsprUVgUp6em6Iy8L9v6EjkXJSsl3eaBEEgqFwiVlEUxU1/srrizUCEqhUCgUtRIVoBQKRZmpyXSf4spDBSiFQlFmSpsTqg3UFhWhouKoOSiFQlEuavucUG3fP0XZUSMohUKhUNRKVIBSKBQKRa1EBSiFQqFQ1EpUgFIoFApFrUQFKIVCoVDUSlSAUigUCkWtRAUohUKhUNRKRHnaL9cWhBBngeNV/DYhwLkqfo+a4HI8rsvxmEAdV13icjwmqL7jaiqlrOf4ZJ0MUNWBEGKPlLJjTe9HZXM5HtfleEygjqsucTkeE9T8cakUn0KhUChqJSpAKRQKhaJWogKUc5bV9A5UEZfjcV2OxwTquOoSl+MxQQ0fl5qDUigUCkWtRI2gFAqFQlErUQFKoVAoFLUSFaCKEUI8JITYJ4QoFEI4lVUKIfoJIQ4JIY4KISZV5z6WFyFEkBBioxDiSPFP3canQoh4IcQfQojfhBB7qns/y0pp/3tRxPzi138XQrSvif0sL2U4rh5CiLTiz+c3IcSUmtjP8iCEeFsIkSSE+NPJ63X1syrtuOriZ9VYCLFVCHGg+DswWmeZmvm8pJTqUTQP1xq4BtgGdHSyjDvwF9Ac8AL2AtfW9L67OKaZwKTi3ycBM5wsFw+E1PT+lnIspf7vgTuBbyhqoNoZ+KGm97uSjqsHsKam97Wcx3Ub0B7408nrde6zKuNx1cXPqj7Qvvh3f+Bwbbm21AiqGCnlASnloVIW6wQclVL+LaXMBf4L3FP1e3fJ3AOsLP59JXBvze1KhSnL//4e4D1ZxG4gUAhRv7p3tJzUtXOqTEgpdwApLhapi59VWY6rziGlPC2l/KX49wzgANDQYbEa+bxUgCofDYGTNn+fouQHWZsIk1KehqKTEAh1spwENgghfhZCRFXb3pWPsvzv69rnA2Xf5y5CiL1CiG+EEG2qZ9eqlLr4WZWVOvtZCSEigBuBHxxeqpHPy6Oq36A2IYTYBITrvPSilPLLsmxC57ka1em7OqZybKarlDJBCBEKbBRCHCy+U6xNlOV/X+s+nzJQln3+hSKvskwhxJ3AF0CLqt6xKqYuflZloc5+VkIII/ApMFZKme74ss4qVf55XVEBSkp5ewU3cQpobPN3IyChgtusEK6OSQhxRghRX0p5ung4nuRkGwnFP5OEEJ9TlHaqbQGqLP/7Wvf5lIFS99n2y0JK+bUQYrEQIkRKWZfNSeviZ1UqdfWzEkJ4UhSc/iOl/ExnkRr5vFSKr3z8BLQQQjQTQngBg4CvanifXPEV8GTx708CJUaJQgiDEMJf+x24A9BVKNUwZfnffwUMKVYcdQbStBRnLabU4xJChAshRPHvnSi6bpOrfU8rl7r4WZVKXfysivd3BXBAShnnZLEa+byuqBGUK4QQ9wELgHrAWiHEb1LKvkKIBsByKeWdUsp8IcQoYD1F6qu3pZT7anC3S2M68LEQIhI4ATwEYHtMQBjwefE15QF8IKVcV0P76xRn/3shxPDi15cAX1OkNjoKnAeeqqn9LStlPK4HgeeEEPlANjBIFkuraitCiA8pUrSFCCFOAS8DnlB3Pyso03HVuc8K6Ao8AfwhhPit+LnJQBOo2c9LWR0pFAqFolaiUnwKhUKhqJWoAKVQKBSKWokKUAqFQqGolagApVAoFIpaiQpQCoVCoaiVqAClUCgUilqJClAKhUKhqJX8P9FX7Ja2oM6HAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "figure = plt.figure()\n", + "axis = figure.add_subplot(111)\n", + "axis.scatter(X[y == 0, 0], X[y == 0, 1], \n", + " edgecolor='black',\n", + " c='lightblue', marker='o', s=40, label='cluster 1')\n", + "\n", + "axis.scatter(X[y == 1, 0], X[y == 1, 1], \n", + " edgecolor='black',\n", + " c='red', marker='s', s=40, label='cluster 2')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we build a KNN classification model, we first have to convert our data to a cuDF representation." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "X_df = cudf.DataFrame()\n", + "for column in range(X.shape[1]):\n", + " X_df['feature_' + str(column)] = np.ascontiguousarray(X[:, column])\n", + "\n", + "y_df = cudf.Series(y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we'll instantiate and fit a nearest neighbors model using the `NearestNeighbors` class from cuML." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from cuml.neighbors import NearestNeighbors\n", + "\n", + "\n", + "knn = NearestNeighbors()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NearestNeighbors(n_neighbors=5, verbose=4, handle=, algorithm='brute', metric='euclidean', p=2, algo_params=None, metric_params=None, output_type='input')" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "knn.fit(X_df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once our model has been built and fitted to the data, we can query the model for the `k` nearest neighbors to each data point. The query returns a matrix representating the distances of each data point to its nearest `k` neighbors as well as the indices of those neighbors." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "k = 3\n", + "\n", + "distances, indices = knn.kneighbors(X_df, n_neighbors=k)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can iterate through each of our data points and do a majority vote to determine which class it belongs to." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "predictions = []\n", + "cp_y = cp.asarray(y_df)\n", + "for i in range(indices.shape[0]):\n", + " row = indices.iloc[i, :].values\n", + " vote = sum(cp_y[j] for j in row) / k\n", + " predictions.append(1.0 * (vote > 0.5))\n", + "\n", + "predictions = np.asarray(predictions).astype(np.float32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we can visualize the predictions from our K Nearest Neighbors classifier - we see that despite the non-linearity of the data, the algorithm does an excellent job of classifying the data." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))\n", + "\n", + "\n", + "ax1.scatter(X[y == 0, 0], X[y == 0, 1],\n", + " edgecolor='black',\n", + " c='lightblue', marker='o', s=40, label='cluster 1')\n", + "ax1.scatter(X[y == 1, 0], X[y == 1, 1],\n", + " edgecolor='black',\n", + " c='red', marker='s', s=40, label='cluster 2')\n", + "ax1.set_title('empirical data points')\n", + "\n", + "\n", + "ax2.scatter(X[predictions == 0, 0], X[predictions == 0, 1], c='lightblue',\n", + " edgecolor='black',\n", + " marker='o', s=40, label='cluster 1')\n", + "ax2.scatter(X[predictions == 1, 0], X[predictions == 1, 1], c='red',\n", + " edgecolor='black',\n", + " marker='s', s=40, label='cluster 2')\n", + "ax2.set_title('KNN predicted classes')\n", + "\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Conclusion\n", + "\n", + "In this notebook, we showed to do GPU accelerated Supervised Learning in RAPIDS. \n", + "\n", + "To learn more about RAPIDS, be sure to check out: \n", + "\n", + "* [Open Source Website](http://rapids.ai)\n", + "* [GitHub](https://github.com/rapidsai/)\n", + "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", + "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", + "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", + "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/getting_started_notebooks/intro_tutorials/07_Introduction_to_XGBoost.ipynb b/getting_started_materials/intro_tutorials_and_guides/07_Introduction_to_XGBoost.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/07_Introduction_to_XGBoost.ipynb rename to getting_started_materials/intro_tutorials_and_guides/07_Introduction_to_XGBoost.ipynb diff --git a/getting_started_notebooks/intro_tutorials/08_Introduction_to_Dask_XGBoost.ipynb b/getting_started_materials/intro_tutorials_and_guides/08_Introduction_to_Dask_XGBoost.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/08_Introduction_to_Dask_XGBoost.ipynb rename to getting_started_materials/intro_tutorials_and_guides/08_Introduction_to_Dask_XGBoost.ipynb diff --git a/getting_started_notebooks/intro_tutorials/09_Introduction_to_Dimensionality_Reduction.ipynb b/getting_started_materials/intro_tutorials_and_guides/09_Introduction_to_Dimensionality_Reduction.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/09_Introduction_to_Dimensionality_Reduction.ipynb rename to getting_started_materials/intro_tutorials_and_guides/09_Introduction_to_Dimensionality_Reduction.ipynb diff --git a/getting_started_notebooks/intro_tutorials/10_Introduction_to_Clustering.ipynb b/getting_started_materials/intro_tutorials_and_guides/10_Introduction_to_Clustering.ipynb similarity index 100% rename from getting_started_notebooks/intro_tutorials/10_Introduction_to_Clustering.ipynb rename to getting_started_materials/intro_tutorials_and_guides/10_Introduction_to_Clustering.ipynb diff --git a/getting_started_materials/intro_tutorials_and_guides/11_Introduction_to_Strings.ipynb b/getting_started_materials/intro_tutorials_and_guides/11_Introduction_to_Strings.ipynb new file mode 100644 index 00000000..f6ef887e --- /dev/null +++ b/getting_started_materials/intro_tutorials_and_guides/11_Introduction_to_Strings.ipynb @@ -0,0 +1,3460 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Draft Intro into Strings \n", + "\n", + "**Authorship**
\n", + "Original Author: Nicholas Davis
\n", + "Last Edit: Nicholas Davis, 4/19/2021
\n", + "\n", + "**Test System Specs**
\n", + "Test System Hardware: Tesla T4
\n", + "Test System Software: Ubuntu 18.04-py3.7
\n", + "RAPIDS Version: 0.18. - Docker Install
\n", + "Driver: 450.80.02
\n", + "CUDA: 11.0
\n", + "\n", + "\n", + "**Known Working Systems**
\n", + "RAPIDS Versions: 0.18" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with text data
\n", + "\n", + "Enterprise analytics workflows commonly require processing large-scale text data. To address this need, the RAPIDS CUDA DataFrame library (cuDF) and RAPIDS CUDA Machine Learning library (cuML) now include string processing capabilities. cuDF has a fully-featured string and regular expression processing engine. With a pandas-like API, cuDF string analytics can provide data scientists with up to 90x performance improvement with minimal changes to their code.
\n", + "\n", + "This notebook serves as an intro to string capabilities with cuDF. Each string functionality will have a pandas example and it's cuDF equivalent.
\n", + "\n", + "For any additional information please reference:
\n", + "[cuDF Documentation](https://docs.rapids.ai/api/cudf/stable/api.html#strings)

\n", + "[GPU-Accelerated String Processing with RAPIDS Video](https://www.nvidia.com/en-us/on-demand/session/gtcfall20-a21131/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Before we begin, let's check out our hardware setup by running the nvidia-smi command." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tue Apr 20 05:57:47 2021 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|===============================+======================+======================|\n", + "| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |\n", + "| N/A 48C P0 28W / 70W | 0MiB / 15109MiB | 0% Default |\n", + "| | | N/A |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=============================================================================|\n", + "| No running processes found |\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "!nvidia-smi\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Text data types" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two ways to store text data in pandas and cudf:\n", + "\n", + "1. object -dtype NumPy array.\n", + "\n", + "1. StringDtype extension type.\n", + "\n", + "We recommend using StringDtype to store text data.\n", + "\n", + "Prior to pandas 1.0, object dtype was the only option. This was unfortunate for many reasons:\n", + "\n", + "1. You can accidentally store a mixture of strings and non-strings in an object dtype array. It’s better to have a dedicated dtype.\n", + "\n", + "1. object dtype breaks dtype-specific operations like DataFrame.select_dtypes(). There isn’t a clear way to select just text while excluding non-text but still object-dtype columns.\n", + "\n", + "1. When reading code, the contents of an object dtype array is less clear than 'string'." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Currently, the performance of object dtype arrays of strings and arrays.StringArray are about the same. We expect future enhancements to significantly increase the performance and lower the memory overhead of StringArray.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pandas Version: 1.1.5\n", + "CuDF Version: 0.18.0\n" + ] + } + ], + "source": [ + "import pandas as pd; print('Pandas Version:', pd.__version__)\n", + "import numpy as np\n", + "import cupy as cp\n", + "import cudf; print('CuDF Version:', cudf.__version__)\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "For backwards-compatibility, object dtype remains the default type we infer a list of strings to." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: object" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pandas\n", + "\n", + "pd.Series([\"a\", \"b\", \"c\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: object" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# cuDF\n", + "\n", + "cudf.Series([\"a\", \"b\", \"c\"])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "To explicitly request string dtype, specify the dtype." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: string" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([\"a\", \"b\", \"c\"], dtype=\"string\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudf.Series([\"a\", \"b\", \"c\"], dtype=\"str\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Or astype after the Series or DataFrame is created." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: string\n", + "\n", + "# of n: \n", + "0 0\n", + "1 0\n", + "2 0\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "pandasSeries = pd.Series([\"a\", \"b\", \"c\"])\n", + "print('Original: ')\n", + "print(pandasSeries.astype(\"string\"))\n", + "\n", + "print(\"\\n# of 'n': \")\n", + "print(pandasSeries.str.count('n'))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "dtype: object\n", + "\n", + "# of n: \n", + "0 0\n", + "1 0\n", + "2 0\n", + "dtype: int32\n" + ] + } + ], + "source": [ + "cudfSeries = cudf.Series([\"a\", \"b\", \"c\"])\n", + "print('Original: ')\n", + "print(cudfSeries.astype(\"string\"))\n", + "\n", + "print(\"\\n# of 'n': \")\n", + "print(cudfSeries.str.count('n'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "You can also use StringDtype/\"string\" as the dtype on non-string data and it will be converted to string dtype:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 a\n", + "1 2\n", + "2 \n", + "dtype: string\n" + ] + }, + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries = pd.Series([\"a\", 2, np.nan], dtype=\"string\")\n", + "print(pandasSeries)\n", + "type(pandasSeries[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 a\n", + "1 2\n", + "2 \n", + "dtype: object\n" + ] + }, + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries = cudf.Series([\"a\", 2, np.nan], dtype=\"str\")\n", + "print(cudfSeries)\n", + "type(cudfSeries[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "or convert from existing pandas data:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1\n", + "1 2\n", + "2 \n", + "dtype: string\n" + ] + }, + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries = pd.Series([1, 2, np.nan], dtype=\"Int64\")\n", + "\n", + "pandasSeries2 = pandasSeries.astype(\"string\")\n", + "print(pandasSeries2)\n", + "type(pandasSeries2[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1\n", + "1 2\n", + "2 \n", + "dtype: object\n" + ] + }, + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries1 = cudf.Series([1, 2, np.nan], dtype=\"int64\")\n", + "\n", + "cudfSeries2 = cudfSeries1.astype(\"string\")\n", + "print(cudfSeries2)\n", + "type(cudfSeries2[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Behavior differences\n", + "\n", + "These are places where the behavior of StringDtype objects differ from object dtype." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For StringDtype, string accessor methods that return numeric output will always return a nullable integer dtype, rather than either int or float dtype, depending on the presence of NA values. Methods returning boolean output will return a nullable boolean dtype." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 \n", + "2 b\n", + "dtype: string\n", + "# of 'a': \n", + "0 1\n", + "1 \n", + "2 0\n", + "dtype: Int64\n", + "\n", + "# of 'a' after dropping n/a: \n", + "0 1\n", + "2 0\n", + "dtype: Int64\n", + "\n", + "Check if numeric: \n", + "0 False\n", + "1 \n", + "2 False\n", + "dtype: boolean\n" + ] + } + ], + "source": [ + "pandasSeries = pd.Series([\"a\", None, \"b\"], dtype=\"string\")\n", + "print('Original: ')\n", + "print(pandasSeries)\n", + "print(\"# of 'a': \")\n", + "print(pandasSeries.str.count(\"a\"))\n", + "print(\"\\n# of 'a' after dropping n/a: \")\n", + "print(pandasSeries.dropna().str.count(\"a\"))\n", + "print(\"\\nCheck if numeric: \")\n", + "print(pandasSeries.str.isnumeric())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 \n", + "2 b\n", + "dtype: object\n", + "# of 'a': \n", + "0 1\n", + "1 \n", + "2 0\n", + "dtype: int32\n", + "\n", + "# of 'a' after dropping n/a: \n", + "0 1\n", + "2 0\n", + "dtype: int32\n", + "\n", + "Check if numeric: \n", + "0 False\n", + "1 \n", + "2 False\n", + "dtype: bool\n" + ] + } + ], + "source": [ + "cudfSeries = cudf.Series([\"a\", None, \"b\"], dtype=\"str\")\n", + "print('Original: ')\n", + "print(cudfSeries)\n", + "print(\"# of 'a': \")\n", + "print(cudfSeries.str.count(\"a\"))\n", + "print(\"\\n# of 'a' after dropping n/a: \")\n", + "print(cudfSeries.dropna().str.count(\"a\"))\n", + "print(\"\\nCheck if numeric: \")\n", + "print(cudfSeries.str.isnumeric())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Both outputs are Int64 dtype. Compare that with object-dtype." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# of 'a': \n", + "0 1.0\n", + "1 NaN\n", + "2 0.0\n", + "dtype: float64\n", + "\n", + "# of 'a' after dropping n/a: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 1\n", + "2 0\n", + "dtype: int64" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries2 = pd.Series([\"a\", None, \"b\"], dtype=\"object\")\n", + "print(\"# of 'a': \")\n", + "print(pandasSeries2.str.count(\"a\"))\n", + "print(\"\\n# of 'a' after dropping n/a: \")\n", + "pandasSeries2.dropna().str.count(\"a\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# of 'a': \n", + "0 1\n", + "1 \n", + "2 0\n", + "dtype: int32\n", + "\n", + "# of 'a' after dropping n/a: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 1\n", + "2 0\n", + "dtype: int32" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries2 = cudf.Series([\"a\", None, \"b\"], dtype=\"object\")\n", + "print(\"# of 'a': \")\n", + "print(cudfSeries2.str.count(\"a\"))\n", + "print(\"\\n# of 'a' after dropping n/a: \")\n", + "cudfSeries2.dropna().str.count(\"a\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "When NA values are present, the output dtype is float64. Similarly for methods returning boolean values." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Check if digit: \n", + "0 False\n", + "1 \n", + "2 False\n", + "dtype: boolean\n", + "\n", + "Match against 'a': \n" + ] + }, + { + "data": { + "text/plain": [ + "0 True\n", + "1 \n", + "2 False\n", + "dtype: boolean" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Check if digit: \")\n", + "print(pandasSeries.str.isdigit())\n", + "print(\"\\nMatch against 'a': \")\n", + "pandasSeries.str.match(\"a\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Check if digit: \n", + "0 False\n", + "1 \n", + "2 False\n", + "dtype: bool\n", + "\n", + "Match against 'a': \n" + ] + }, + { + "data": { + "text/plain": [ + "0 True\n", + "1 \n", + "2 False\n", + "dtype: bool" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Check if digit: \")\n", + "print(cudfSeries.str.isdigit())\n", + "print(\"\\nMatch against 'a': \")\n", + "cudfSeries.str.match(\"a\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Some string methods, like Series.str.decode() are not available on StringArray because StringArray only holds strings, not bytes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In comparison operations, arrays.StringArray and Series backed by a StringArray will return an object with BooleanDtype, rather than a bool dtype object. Missing values in a StringArray will propagate in comparison operations, rather than always comparing unequal like numpy.nan." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Everything else that follows in the rest of this document applies equally to string and object dtype." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## String methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Series and Index are equipped with a set of string processing methods that make it easy to operate on each element of the array. Perhaps most importantly, these methods exclude missing/NA values automatically. These are accessed via the str attribute and generally have names matching the equivalent (scalar) built-in string methods:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 Aaba\n", + "4 Baca\n", + "5 \n", + "6 CABA\n", + "7 dog\n", + "8 cat\n", + "dtype: string\n", + "\n", + "Lowered: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 aaba\n", + "4 baca\n", + "5 \n", + "6 caba\n", + "7 dog\n", + "8 cat\n", + "dtype: string\n", + "\n", + "Check if Lowered: \n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 False\n", + "7 True\n", + "8 True\n", + "dtype: boolean\n", + "\n", + "Uppercase: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 AABA\n", + "4 BACA\n", + "5 \n", + "6 CABA\n", + "7 DOG\n", + "8 CAT\n", + "dtype: string\n", + "\n", + "Check if Uppercase: \n", + "0 True\n", + "1 True\n", + "2 True\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 True\n", + "7 False\n", + "8 False\n", + "dtype: boolean\n", + "\n", + "Determine Length: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 1\n", + "1 1\n", + "2 1\n", + "3 4\n", + "4 4\n", + "5 \n", + "6 4\n", + "7 3\n", + "8 3\n", + "dtype: Int64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries = pd.Series(\n", + " ....: [\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"string\"\n", + " ....: )\n", + " ....: \n", + "print('Original: ')\n", + "print(pandasSeries)\n", + "print('\\nLowered: ')\n", + "print(pandasSeries.str.lower())\n", + "print('\\nCheck if Lowered: ')\n", + "print(pandasSeries.str.islower())\n", + "print('\\nUppercase: ')\n", + "print(pandasSeries.str.upper())\n", + "print('\\nCheck if Uppercase: ')\n", + "print(pandasSeries.str.isupper())\n", + "print('\\nDetermine Length: ')\n", + "pandasSeries.str.len()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 Aaba\n", + "4 Baca\n", + "5 \n", + "6 CABA\n", + "7 dog\n", + "8 cat\n", + "dtype: object\n", + "\n", + "Lowered: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 aaba\n", + "4 baca\n", + "5 \n", + "6 caba\n", + "7 dog\n", + "8 cat\n", + "dtype: object\n", + "\n", + "Check if Lowered: \n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 False\n", + "7 True\n", + "8 True\n", + "dtype: bool\n", + "\n", + "Uppercase: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 AABA\n", + "4 BACA\n", + "5 \n", + "6 CABA\n", + "7 DOG\n", + "8 CAT\n", + "dtype: object\n", + "\n", + "Check if Uppercase: \n", + "0 True\n", + "1 True\n", + "2 True\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 True\n", + "7 False\n", + "8 False\n", + "dtype: bool\n", + "\n", + "Determine Length: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 1\n", + "1 1\n", + "2 1\n", + "3 4\n", + "4 4\n", + "5 \n", + "6 4\n", + "7 3\n", + "8 3\n", + "dtype: int32" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries = cudf.Series(\n", + " ....: [\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"str\"\n", + " ....: )\n", + " ....: \n", + "\n", + "print('Original: ')\n", + "print(cudfSeries)\n", + "print('\\nLowered: ')\n", + "print(cudfSeries.str.lower())\n", + "print('\\nCheck if Lowered: ')\n", + "print(cudfSeries.str.islower())\n", + "print('\\nUppercase: ')\n", + "print(cudfSeries.str.upper())\n", + "print('\\nCheck if Uppercase: ')\n", + "print(cudfSeries.str.isupper())\n", + "print('\\nDetermine Length: ')\n", + "cudfSeries.str.len()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Right Strip: \n", + "Index([' jack', 'jill', ' jesse', 'frank'], dtype='object')\n", + "\n", + "Left Strip: \n" + ] + }, + { + "data": { + "text/plain": [ + "Index(['jack', 'jill ', 'jesse ', 'frank'], dtype='object')" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasIdx = pd.Index([\" jack\", \"jill \", \" jesse \", \"frank\"])\n", + "\n", + "pandasIdx.str.strip()\n", + "\n", + "print('Right Strip: ')\n", + "print(pandasIdx.str.rstrip())\n", + "\n", + "print('\\nLeft Strip: ')\n", + "pandasIdx.str.lstrip()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Right Strip: \n", + "StringIndex([' jack' 'jill' ' jesse' 'frank'], dtype='object')\n", + "\n", + "Left Strip: \n" + ] + }, + { + "data": { + "text/plain": [ + "StringIndex(['jack' 'jill ' 'jesse ' 'frank'], dtype='object')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfIdx = cudf.Index([\" jack\", \"jill \", \" jesse \", \"frank\"])\n", + "\n", + "cudfIdx.str.strip()\n", + "\n", + "print('Right Strip: ')\n", + "print(cudfIdx.str.rstrip())\n", + "\n", + "print('\\nLeft Strip: ')\n", + "cudfIdx.str.lstrip()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "The string methods on Index are especially useful for cleaning up or transforming DataFrame columns. For instance, you may have columns with leading or trailing whitespace:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "
abcdefgh
0010100010100
10119901199
20029800298
30039700397
40149601496
50159500595
60169401694
70079301793
80189200892
90099100991
10001090011090
11001189001189
12001288011288
13001387011387
14001486011486
15011585011585
16011684001684
17011783011783
18001882011882
19011981011981
20012080012080
21002179002179
22002278012278
23012377012377
24012476012476
25102575102575
26102674102674
27112773102773
28102872112872
29102971112971
...........................
70217030207030
71207129217129
72207228217228
73217327207327
74207426217426
75307525307525
76307624307624
77307723307723
78317822307822
79317921317921
80318020308020
81318119318119
82318218318218
83308317308317
84318416318416
85308515308515
86308614308614
87308713308713
88318812318812
89318911308911
90319010319010
913091930919
923192831928
933193730937
943194630946
953095531955
9639630964310964
973310973
98301982301982
991301991
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Column AColumn B
00.037128-1.741614
1-0.3871202.690011
21.000077-0.576347
\n", + "
" + ], + "text/plain": [ + " Column A Column B \n", + "0 0.037128 -1.741614\n", + "1 -0.387120 2.690011\n", + "2 1.000077 -0.576347" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasDataFrame = pd.DataFrame(np.random.randn(3, 2), columns=[\" Column A \", \" Column B \"], index=range(3))\n", + " \n", + "pandasDataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Column AColumn B
0-2.103537-0.625444
1-0.493004-1.664398
2-0.6647940.083844
\n", + "
" + ], + "text/plain": [ + " Column A Column B \n", + "0 -2.103537 -0.625444\n", + "1 -0.493004 -1.664398\n", + "2 -0.664794 0.083844" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfDataFrame = cudf.DataFrame(np.random.randn(3, 2), columns=[\" Column A \", \" Column B \"], index=range(3))\n", + " \n", + "cudfDataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Since df.columns is an Index object, we can use the .str accessor." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Stripped: \n", + "Index(['Column A', 'Column B'], dtype='object')\n", + "\n", + "Lowered: \n" + ] + }, + { + "data": { + "text/plain": [ + "Index([' column a ', ' column b '], dtype='object')" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Stripped: \")\n", + "print(pandasDataFrame.columns.str.strip())\n", + "print(\"\\nLowered: \")\n", + "pandasDataFrame.columns.str.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Stripped: \n", + "Index(['Column A', 'Column B'], dtype='object')\n", + "\n", + "Lowered: \n" + ] + }, + { + "data": { + "text/plain": [ + "Index([' column a ', ' column b '], dtype='object')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Stripped: \")\n", + "print(cudfDataFrame.columns.str.strip())\n", + "print(\"\\nLowered: \")\n", + "cudfDataFrame.columns.str.lower()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "These string methods can then be used to clean up the columns as needed. Here we are removing leading and trailing whitespaces, lower casing all names, and replacing any remaining whitespaces with underscores:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
column_acolumn_b
00.037128-1.741614
1-0.3871202.690011
21.000077-0.576347
\n", + "
" + ], + "text/plain": [ + " column_a column_b\n", + "0 0.037128 -1.741614\n", + "1 -0.387120 2.690011\n", + "2 1.000077 -0.576347" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasDataFrame.columns = pandasDataFrame.columns.str.strip().str.lower().str.replace(\" \", \"_\")\n", + "pandasDataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
column_acolumn_b
0-2.103537-0.625444
1-0.493004-1.664398
2-0.6647940.083844
\n", + "
" + ], + "text/plain": [ + " column_a column_b\n", + "0 -2.103537 -0.625444\n", + "1 -0.493004 -1.664398\n", + "2 -0.664794 0.083844" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfDataFrame.columns = cudfDataFrame.columns.str.strip().str.lower().str.replace(\" \", \"_\")\n", + "cudfDataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Splitting and replacing strings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Methods like split return a Series of lists:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 [a, b, c]\n", + "1 [c, d, e]\n", + "2 \n", + "3 [f, g, h]\n", + "dtype: object" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries3 = pd.Series([\"a_b_c\", \"c_d_e\", np.nan, \"f_g_h\"], dtype=\"string\")\n", + "pandasSeries3.str.split(\"_\")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 [a, b, c]\n", + "1 [c, d, e]\n", + "2 None\n", + "3 [f, g, h]\n", + "dtype: list" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries3 = cudf.Series([\"a_b_c\", \"c_d_e\", np.nan, \"f_g_h\"], dtype=\"str\")\n", + "cudfSeries3.str.split(\"_\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "It is easy to expand this to return a DataFrame using expand." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0abc
1cde
2<NA><NA><NA>
3fgh
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 a b c\n", + "1 c d e\n", + "2 \n", + "3 f g h" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries3.str.split(\"_\", expand=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0abc
1cde
2<NA><NA><NA>
3fgh
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 a b c\n", + "1 c d e\n", + "2 \n", + "3 f g h" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries3.str.split(\"_\", expand=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "When original Series has StringDtype, the output columns will all be StringDtype as well." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is also possible to limit the number of splits:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
0ab_c
1cd_e
2<NA><NA>
3fg_h
\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 a b_c\n", + "1 c d_e\n", + "2 \n", + "3 f g_h" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries3.str.split(\"_\", expand=True, n=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
0ab_c
1cd_e
2<NA><NA>
3fg_h
\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 a b_c\n", + "1 c d_e\n", + "2 \n", + "3 f g_h" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries3.str.split(\"_\", expand=True, n=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "rsplit is similar to split except it works in the reverse direction, i.e., from the end of the string to the beginning of the string:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
0a_bc
1c_de
2<NA><NA>
3f_gh
\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 a_b c\n", + "1 c_d e\n", + "2 \n", + "3 f_g h" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries3.str.rsplit(\"_\", expand=True, n=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
0a_bc
1c_de
2<NA><NA>
3f_gh
\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 a_b c\n", + "1 c_d e\n", + "2 \n", + "3 f_g h" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries3.str.rsplit(\"_\", expand=True, n=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The replace method\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "replace optionally uses regular expressions:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 Aaba\n", + "4 Baca\n", + "5 \n", + "6 \n", + "7 CABA\n", + "8 dog\n", + "9 cat\n", + "dtype: string\n", + "\n", + "Replaced: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 A\n", + "1 B\n", + "2 C\n", + "3 XX-XX ba\n", + "4 XX-XX ca\n", + "5 \n", + "6 \n", + "7 CABA\n", + "8 XX-XX \n", + "9 XX-XX t\n", + "dtype: string" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries4 = pd.Series(\n", + " ....: [\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", \"\", np.nan, \"CABA\", \"dog\", \"cat\"],\n", + " ....: dtype=\"string\",\n", + " ....: )\n", + " ....: \n", + "print('Original: ')\n", + "print(pandasSeries4) \n", + "print('\\nReplaced: ')\n", + "pandasSeries4.str.replace(\"^.a|dog\", \"XX-XX \", regex=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 Aaba\n", + "4 Baca\n", + "5 \n", + "6 \n", + "7 CABA\n", + "8 dog\n", + "9 cat\n", + "dtype: object\n", + "\n", + "Replaced: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 A\n", + "1 B\n", + "2 C\n", + "3 XX-XX ba\n", + "4 XX-XX ca\n", + "5 \n", + "6 \n", + "7 CABA\n", + "8 XX-XX \n", + "9 XX-XX t\n", + "dtype: object" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries4 = cudf.Series(\n", + " ....: [\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", \"\", np.nan, \"CABA\", \"dog\", \"cat\"],\n", + " ....: dtype=\"str\",\n", + " ....: )\n", + " ....: \n", + "print('Original: ')\n", + "print(cudfSeries4) \n", + "print('\\nReplaced: ')\n", + "cudfSeries4.str.replace(\"^.a|dog\", \"XX-XX \", regex=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "If you want literal replacement of a string (equivalent to str.replace()), you can set the optional regex parameter to False, rather than escaping each character. In this case both pat and repl must be strings:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 12\n", + "1 -10\n", + "2 $10,000\n", + "dtype: string\n", + "\n", + "Are these equivalent? \n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0 12\n", + "1 -10\n", + "2 $10,000\n", + "dtype: string" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasdollars = pd.Series([\"12\", \"-$10\", \"$10,000\"], dtype=\"string\")\n", + "\n", + "# These lines are equivalent\n", + "print(pandasdollars.str.replace(r\"-\\$\", \"-\", regex=True))\n", + "print(\"\\nAre these equivalent? \\n\")\n", + "pandasdollars.str.replace(\"-$\", \"-\", regex=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 12\n", + "1 -10\n", + "2 $10,000\n", + "dtype: object\n", + "\n", + "Are these equivalent? \n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0 12\n", + "1 -10\n", + "2 $10,000\n", + "dtype: object" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfDollars = cudf.Series([\"12\", \"-$10\", \"$10,000\"], dtype=\"str\")\n", + "\n", + "# These lines are equivalent\n", + "print(cudfDollars.str.replace(r\"-\\$\", \"-\", regex=True))\n", + "print(\"\\nAre these equivalent? \\n\")\n", + "cudfDollars.str.replace(\"-$\", \"-\", regex=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Concatenation\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are several ways to concatenate a Series or Index, either with itself or others, all based on cat(), resp. Index.str.cat." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Concatenating a single Series into a string" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The content of a Series (or Index) can be concatenated:" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'a,b,c,d'" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries = pd.Series([\"a\", \"b\", \"c\", \"d\"], dtype=\"string\")\n", + "\n", + "pandasSeries.str.cat(sep=\",\")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'a,b,c,d'" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries = cudf.Series([\"a\", \"b\", \"c\", \"d\"], dtype=\"str\")\n", + "\n", + "cudfSeries.str.cat(sep=\",\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "If not specified, the keyword sep for the separator defaults to the empty string, sep='':" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'abcd'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries.str.cat()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'abcd'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries.str.cat()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "By default, missing values are ignored. Using na_rep, they can be given a representation:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Seperated by ,: \n", + "a,b,d\n", + "\n", + "Seperated by , & -: \n" + ] + }, + { + "data": { + "text/plain": [ + "'a,b,-,d'" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeriesB = pd.Series([\"a\", \"b\", np.nan, \"d\"], dtype=\"string\")\n", + "print('Seperated by ,: ')\n", + "print(pandasSeriesB.str.cat(sep=\",\"))\n", + "print('\\nSeperated by , & -: ')\n", + "pandasSeriesB.str.cat(sep=\",\", na_rep=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Seperated by ,: \n", + "a,b,d\n", + "\n", + "Seperated by , & -: \n" + ] + }, + { + "data": { + "text/plain": [ + "'a,b,-,d'" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeriesB = cudf.Series([\"a\", \"b\", np.nan, \"d\"], dtype=\"str\")\n", + "print('Seperated by ,: ')\n", + "print(cudfSeriesB.str.cat(sep=\",\"))\n", + "print('\\nSeperated by , & -: ')\n", + "cudfSeriesB.str.cat(sep=\",\", na_rep=\"-\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Concatenating a Series and something list-like into a Series" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first argument to cat() can be a list-like object, provided that it matches the length of the calling Series (or Index)." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 aA\n", + "1 bB\n", + "2 cC\n", + "3 dD\n", + "dtype: string" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries.str.cat([\"A\", \"B\", \"C\", \"D\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 aA\n", + "1 bB\n", + "2 cC\n", + "3 dD\n", + "dtype: object" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries.str.cat([\"A\", \"B\", \"C\", \"D\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Missing values on either side will result in missing values in the result as well, unless na_rep is specified:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 aa\n", + "1 bb\n", + "2 \n", + "3 dd\n", + "dtype: string\n", + "\n", + "na_rep is specified\n" + ] + }, + { + "data": { + "text/plain": [ + "0 aa\n", + "1 bb\n", + "2 c-\n", + "3 dd\n", + "dtype: string" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Original: ')\n", + "print(pandasSeries.str.cat(pandasSeriesB))\n", + "print('\\nna_rep is specified')\n", + "pandasSeries.str.cat(pandasSeriesB, na_rep=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 aa\n", + "1 bb\n", + "2 \n", + "3 dd\n", + "dtype: object\n", + "\n", + "na_rep is specified\n" + ] + }, + { + "data": { + "text/plain": [ + "0 aa\n", + "1 bb\n", + "2 c-\n", + "3 dd\n", + "dtype: object" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Original: ')\n", + "print(cudfSeries.str.cat(cudfSeriesB))\n", + "print('\\nna_rep is specified')\n", + "cudfSeries.str.cat(cudfSeriesB, na_rep=\"-\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Concatenating a Series and something array-like into a Series" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The parameter others can also be two-dimensional. In this case, the number or rows must match the lengths of the calling Series (or Index)." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 d\n", + "dtype: string\n", + "\n", + "Concatenating a Series and something array-like\n", + " 0 1\n", + "0 a a\n", + "1 b b\n", + "2 c\n", + "3 d d\n" + ] + }, + { + "data": { + "text/plain": [ + "0 aaa\n", + "1 bbb\n", + "2 c-c\n", + "3 ddd\n", + "dtype: string" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasArray = pd.concat([pandasSeriesB, pandasSeries], axis=1)\n", + "print('Original: ')\n", + "print(pandasSeries)\n", + "print('\\nConcatenating a Series and something array-like')\n", + "print(pandasArray)\n", + "pandasSeries.str.cat(pandasArray, na_rep=\"-\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original: \n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 d\n", + "dtype: object\n", + "\n", + "Concatenating a Series and something array-like\n", + " 0 1\n", + "0 a a\n", + "1 b b\n", + "2 c\n", + "3 d d\n" + ] + }, + { + "data": { + "text/plain": [ + "0 aaa\n", + "1 bbb\n", + "2 c-c\n", + "3 ddd\n", + "Name: 1, dtype: object" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfArray = cudf.concat([cudfSeriesB, cudfSeries], axis=1)\n", + "print('Original: ')\n", + "print(cudfSeries)\n", + "print('\\nConcatenating a Series and something array-like')\n", + "print(cudfArray)\n", + "cudfArray[1].str.cat(cudfArray[0], na_rep=\"-\").str.cat(cudfSeries, na_rep=\"-\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Indexing with .str" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use [] notation to directly index by position locations. If you index past the end of the string, the result will be a NaN." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Indexed at position 0: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 A\n", + "4 B\n", + "5 \n", + "6 C\n", + "7 d\n", + "8 c\n", + "dtype: string\n", + "\n", + "Indexed at position 1: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 \n", + "1 \n", + "2 \n", + "3 a\n", + "4 a\n", + "5 \n", + "6 A\n", + "7 o\n", + "8 a\n", + "dtype: string" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pandasSeries = pd.Series([\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"string\")\n", + " \n", + "print('Indexed at position 0: ')\n", + "print(pandasSeries.str[0])\n", + "print('\\nIndexed at position 1: ')\n", + "pandasSeries.str[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Indexed at position 0: \n", + "0 A\n", + "1 B\n", + "2 C\n", + "3 A\n", + "4 B\n", + "5 \n", + "6 C\n", + "7 d\n", + "8 c\n", + "dtype: object\n", + "\n", + "Indexed at position 1: \n" + ] + }, + { + "data": { + "text/plain": [ + "0 \n", + "1 \n", + "2 \n", + "3 a\n", + "4 a\n", + "5 \n", + "6 A\n", + "7 o\n", + "8 a\n", + "dtype: object" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudfSeries = cudf.Series([\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"str\")\n", + " \n", + "print('Indexed at position 0: ')\n", + "print(cudfSeries.str[0])\n", + "print('\\nIndexed at position 1: ')\n", + "cudfSeries.str[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Extracting substrings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extract first match in each subject (extract)." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 1\n", + "0 a 1\n", + "1 b 2\n", + "2 \n" + ] + } + ], + "source": [ + "pdSeries = pd.Series([\"a1\", \"b2\", \"c3\"],dtype=\"string\",).str.extract(r\"([ab])(\\d)\", )\n", + "print(pdSeries)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 1\n", + "0 a 1\n", + "1 b 2\n", + "2 \n" + ] + } + ], + "source": [ + "cudfSeries = cudf.Series(['a1', 'b2', 'c3']).str.extract(r'([ab])(\\d)')\n", + "print(cudfSeries) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Extracting a regular expression with one group returns a DataFrame with one column if expand=True." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
01
12
2<NA>
\n", + "
" + ], + "text/plain": [ + " 0\n", + "0 1\n", + "1 2\n", + "2 " + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([\"a1\", \"b2\", \"c3\"], dtype=\"string\").str.extract(r\"[ab](\\d)\", expand=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
01
12
2<NA>
\n", + "
" + ], + "text/plain": [ + " 0\n", + "0 1\n", + "1 2\n", + "2 " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudf.Series([\"a1\", \"b2\", \"c3\"], dtype=\"str\").str.extract(r\"[ab](\\d)\", expand=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "It returns a Series if expand=False." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "1 2\n", + "2 \n", + "dtype: string" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([\"a1\", \"b2\", \"c3\"], dtype=\"string\").str.extract(r\"[ab](\\d)\", expand=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "1 2\n", + "2 \n", + "dtype: object" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudf.Series([\"a1\", \"b2\", \"c3\"], dtype=\"str\").str.extract(r\"[ab](\\d)\", expand=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "When each subject string in the Series has exactly one match." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 a3\n", + "1 b3\n", + "2 c2\n", + "dtype: string\n" + ] + } + ], + "source": [ + "pandasSeries = pd.Series([\"a3\", \"b3\", \"c2\"], dtype=\"string\")\n", + "print(pandasSeries)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 a3\n", + "1 b3\n", + "2 c2\n", + "dtype: object\n" + ] + } + ], + "source": [ + "cudfSeries = cudf.Series([\"a3\", \"b3\", \"c2\"], dtype=\"str\")\n", + "print(cudfSeries)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Testing for strings that match or contain a pattern" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can check whether elements contain a pattern:" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 True\n", + "5 True\n", + "dtype: bool" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pattern = r\"[0-9][a-z]\"\n", + "\n", + "pd.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"str\",\n", + " ).str.contains(pattern)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 True\n", + "5 True\n", + "dtype: bool" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pattern = r\"[0-9][a-z]\"\n", + "\n", + "cudf.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"str\",\n", + " ).str.contains(pattern)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Or whether elements match a pattern:" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 False\n", + "5 True\n", + "dtype: boolean" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"string\",\n", + " ).str.match(pattern)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 False\n", + "5 True\n", + "dtype: bool" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudf.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"str\",\n", + " ).str.match(pattern) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "New in version 1.1.0." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 False\n", + "5 False\n", + "dtype: boolean" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"string\",\n", + " ).str.fullmatch(pattern)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 True\n", + "4 False\n", + "5 True\n", + "dtype: bool" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cudf.Series([\"1\", \"2\", \"3a\", \"3b\", \"03c\", \"4dx\"],dtype=\"str\",\n", + " ).str.match(pattern)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Methods like match, fullmatch, contains, startswith, and endswith take an extra na argument so missing values can be considered True or False:" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strings that contain 'A':\n", + "0 True\n", + "1 False\n", + "2 False\n", + "3 True\n", + "4 False\n", + "5 False\n", + "6 True\n", + "7 False\n", + "8 False\n", + "dtype: boolean\n", + "\n", + "Strings that have swapped case:\n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 aABA\n", + "4 bACA\n", + "5 \n", + "6 caba\n", + "7 DOG\n", + "8 CAT\n", + "dtype: string\n", + "\n", + "Strings that start with 'b':\n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 False\n", + "7 False\n", + "8 False\n", + "dtype: boolean\n", + "\n", + "Strings that ends with 'a':\n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 True\n", + "4 True\n", + "5 \n", + "6 False\n", + "7 False\n", + "8 False\n", + "dtype: boolean\n" + ] + } + ], + "source": [ + "pandasSeries5 = pd.Series([\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"string\") \n", + "print(\"Strings that contain 'A':\")\n", + "print(pandasSeries5.str.contains(\"A\", na=False))\n", + "print(\"\\nStrings that have swapped case:\")\n", + "print(pandasSeries5.str.swapcase())\n", + "print(\"\\nStrings that start with 'b':\")\n", + "print(pandasSeries5.str.startswith ('b'))\n", + "print((\"\\nStrings that ends with 'a':\"))\n", + "print(pandasSeries5.str.endswith ('a'))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strings that contain 'A':\n", + "0 True\n", + "1 False\n", + "2 False\n", + "3 True\n", + "4 False\n", + "5 \n", + "6 True\n", + "7 False\n", + "8 False\n", + "dtype: bool\n", + "\n", + "Strings that have swapped case:\n", + "0 a\n", + "1 b\n", + "2 c\n", + "3 aABA\n", + "4 bACA\n", + "5 \n", + "6 caba\n", + "7 DOG\n", + "8 CAT\n", + "dtype: object\n", + "\n", + "Strings that start with 'b':\n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 False\n", + "5 \n", + "6 False\n", + "7 False\n", + "8 False\n", + "dtype: bool\n", + "\n", + "Strings that ends with 'a':\n", + "0 False\n", + "1 False\n", + "2 False\n", + "3 True\n", + "4 True\n", + "5 \n", + "6 False\n", + "7 False\n", + "8 False\n", + "dtype: bool\n" + ] + } + ], + "source": [ + "cudfSeries5 = cudf.Series([\"A\", \"B\", \"C\", \"Aaba\", \"Baca\", np.nan, \"CABA\", \"dog\", \"cat\"], dtype=\"str\") \n", + "print(\"Strings that contain 'A':\")\n", + "print(cudfSeries5.str.contains(\"A\"))\n", + "print(\"\\nStrings that have swapped case:\")\n", + "print(cudfSeries5.str.swapcase())\n", + "print(\"\\nStrings that start with 'b':\")\n", + "print(cudfSeries5.str.startswith ('b'))\n", + "print((\"\\nStrings that ends with 'a':\"))\n", + "print(cudfSeries5.str.endswith ('a'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/getting_started_notebooks/intro_tutorials/README.md b/getting_started_materials/intro_tutorials_and_guides/README.md similarity index 100% rename from getting_started_notebooks/intro_tutorials/README.md rename to getting_started_materials/intro_tutorials_and_guides/README.md diff --git a/getting_started_notebooks/basics/Getting_Started_with_Dask.ipynb b/getting_started_notebooks/basics/Getting_Started_with_Dask.ipynb deleted file mode 100644 index ea219b2c..00000000 --- a/getting_started_notebooks/basics/Getting_Started_with_Dask.ipynb +++ /dev/null @@ -1,415 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Introduction to Dask\n", - "#### By Paul Hendricks\n", - "-------\n", - "\n", - "In this notebook, we will show how to get started with Dask using basic Python primitives like integers and strings.\n", - "\n", - "**Table of Contents**\n", - "\n", - "* [Introduction to Dask](#introduction)\n", - "* [Setup](#setup)\n", - "* [Introduction to Dask](#dask)\n", - "* [Conclusion](#conclusion)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Setup\n", - "\n", - "This notebook was tested using the following Docker containers:\n", - "\n", - "* `rapidsai/rapidsai-dev-nightly:0.10-cuda10.0-devel-ubuntu18.04-py3.7` from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai-nightly)\n", - "\n", - "This notebook was run on the NVIDIA GV100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", - "\n", - "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", - "\n", - "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's see what CUDA version we have:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvcc --version" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!apt update\n", - "!apt install -y graphviz\n", - "!conda install graphviz\n", - "!conda install python-graphviz" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Introduction to Dask\n", - "\n", - "Dask is a library that allows for parallelized computing. Written in Python, it allows one to compose complex workflows using large data structures like those found in NumPy, Pandas, and cuDF. In the following examples and notebooks, we'll show how to use Dask with cuDF to accelerate common ETL tasks as well as build and train machine learning models like Linear Regression and XGBoost.\n", - "\n", - "To learn more about Dask, check out the documentation here: http://docs.dask.org/en/latest/\n", - "\n", - "#### Client/Workers\n", - "\n", - "Dask operates by creating a cluster composed of a \"client\" and multiple \"workers\". The client is responsible for scheduling work; the workers are responsible for actually executing that work. \n", - "\n", - "Typically, we set the number of workers to be equal to the number of computing resources we have available to us. For CPU based workflows, this might be the number of cores or threads on that particlular machine. For example, we might set `n_workers = 8` if we have 8 CPU cores or threads on our machine that can each operate in parallel. This allows us to take advantage of all of our computing resources and enjoy the most benefits from parallelization.\n", - "\n", - "On a system with one or more GPUs, we usually set the number of workers equal to the number of GPUs available to us. Dask is a first class citizen in the world of General Purpose GPU computing and the RAPIDS ecosystem makes it very easy to use Dask with cuDF and XGBoost. \n", - "\n", - "Before we get started with Dask, we need to setup a Local Cluster of workers to execute our work and a Client to coordinate and schedule work for that cluster. As we see below, we can inititate a `cluster` and `client` using only few lines of code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import dask; print('Dask Version:', dask.__version__)\n", - "from dask.distributed import Client, LocalCluster\n", - "import subprocess\n", - "\n", - "# parse the hostname IP address\n", - "cmd = \"hostname --all-ip-addresses\"\n", - "process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)\n", - "output, error = process.communicate()\n", - "ip_address = str(output.decode()).split()[0]\n", - "\n", - "# create a local cluster with 4 workers\n", - "n_workers = 4\n", - "cluster = LocalCluster(ip=ip_address, n_workers=n_workers)\n", - "client = Client(cluster)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's inspect the `client` object to view our current Dask status. We should see the IP Address for our Scheduler as well as the the number of workers in our Cluster. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# show current Dask status\n", - "client" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also see the status and more information at the Dashboard, found at `http:///status`. You can ignore this for now, we'll dive into this in subsequent tutorials.\n", - "\n", - "With our client and workers setup, it's time to execute our first program in parallel. We'll define a function that takes some value `x` and adds 5 to it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def add_5_to_x(x):\n", - " return x + 5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we'll iterate through our `n_workers` and create an execution graph, where each worker is responsible for taking its ID and passing it to the function `add_5_to_x`. For example, the worker with ID 2 will take its ID and add 5, resulting in the value 7." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from dask import delayed\n", - "\n", - "addition_operations = [delayed(add_5_to_x)(i) for i in range(n_workers)]\n", - "addition_operations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above output shows a list of several `Delayed` objects. An important thing to note is that the workers aren't actually executing these results - we're just defining the execution graph for our client to execute later. The `delayed` function wraps our function `add_5_to_x` and returns a `Delayed` object. This ensures that this computation is in fact \"delayed\" - or lazily evaluated - and not executed on the spot i.e. when we define it.\n", - "\n", - "Next, let's sum each one of these intermediate results. We can accomplish this by wrapping Python's built-in `sum` function using our `delayed` function and storing this in a variable called `total`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "total = delayed(sum)(addition_operations)\n", - "total" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the `graphviz` library, we can use the `visualize` method of a `Delayed` object to visualize our current graph." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "total.visualize()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As we mentioned before, none of these results - intermediate or final - have actually been compute. We can compute them using the `compute` method of our `client`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "\n", - "addition_futures = client.compute(addition_operations, optimize_graph=False, fifo_timeout=\"0ms\")\n", - "total_future = client.compute(total, optimize_graph=False, fifo_timeout=\"0ms\")\n", - "time.sleep(1) # this will give Dask time to execute each worker" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's inspect the output of each call to `client.compute`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "addition_futures" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see from the above output that our `addition_futures` variable is a list of `Future` objects - not the \"actual results\" of adding 5 to each of `[0, 1, 2, 3]`. These `Future` objects are a promise that at one point a computation will take place and we will be left with a result. Dask is responsible for ensuring that promise by delegating that task to the appropriate Dask worker and collecting the result.\n", - "\n", - "Let's take a look at our `total_future` object:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(total_future)\n", - "print(type(total_future))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, we see that this is an object of type `Future` as well as metadata about the status of the request (i.e. whether it has finished or not), the type of the result, and a key associated with that operation. To collect and print the result of each of these `Future` objects, we can call the `result()` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "addition_results = [future.result() for future in addition_futures]\n", - "print('Addition Results:', addition_results)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we see the results that we want from our addition operations. We can also use the simpler syntax of the `client.gather` method to collect our results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "addition_results = client.gather(addition_futures)\n", - "total_result = client.gather(total_future)\n", - "print('Addition Results:', addition_results)\n", - "print('Total Result:', total_result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Awesome! We just wrote our first distributed workflow.\n", - "\n", - "To confirm that Dask is truly executing in parallel, let's define a function that sleeps for 1 second and returns the string \"Success!\". In serial, this function should take our 4 workers around 4 seconds to execute." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def sleep_1():\n", - " time.sleep(1)\n", - " return 'Success!'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "for _ in range(n_workers):\n", - " sleep_1()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As expected, our process takes about 4 seconds to run. Now let's execute this same workflow in parallel using Dask." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "# define delayed execution graph\n", - "sleep_operations = [delayed(sleep_1)() for _ in range(n_workers)]\n", - "\n", - "# use client to perform computations using execution graph\n", - "sleep_futures = client.compute(sleep_operations, optimize_graph=False, fifo_timeout=\"0ms\")\n", - "\n", - "# collect and print results\n", - "sleep_results = client.gather(sleep_futures)\n", - "print(sleep_results)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using Dask, we see that this whole process takes a little over a second - each worker is executing in parallel!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Conclusion\n", - "\n", - "In this tutorial, we learned how to use Dask with basic Python primitives like integers and strings.\n", - "\n", - "To learn more about RAPIDS, be sure to check out: \n", - "\n", - "* [Open Source Website](http://rapids.ai)\n", - "* [GitHub](https://github.com/rapidsai/)\n", - "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", - "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", - "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", - "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/getting_started_notebooks/basics/Getting_Started_with_cuDF.ipynb b/getting_started_notebooks/basics/Getting_Started_with_cuDF.ipynb deleted file mode 100644 index 5b307586..00000000 --- a/getting_started_notebooks/basics/Getting_Started_with_cuDF.ipynb +++ /dev/null @@ -1,537 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting Started with cuDF\n", - "#### By Yi Dong, Paul Hendricks\n", - "-------\n", - "\n", - "While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For the same reasons, scientific computing and deep learning has turned to NVIDIA GPU acceleration, data analytics and machine learning where GPU acceleration is ideal. \n", - "\n", - "NVIDIA created RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. RAPIDS integrates easily into the world’s most popular data science Python-based workflows. RAPIDS accelerates data science end-to-end – from data prep, to machine learning, to deep learning. And through Arrow, Spark users can easily move data into the RAPIDS platform for acceleration.\n", - "\n", - "In this notebook, we will also show how to get started with GPU DataFrames using cuDF in RAPIDS.\n", - "\n", - "**Table of Contents**\n", - "\n", - "* Setup\n", - "* Loading data into a GPU DataFrame (GDF)\n", - " * Loading data into a Pandas DataFrame\n", - " * Converting a Pandas DataFrame to a GDF\n", - "* Working with the GDF\n", - " * Take a look at the columns and their data types\n", - " * Slice the GDF\n", - " * Modify data types\n", - " * Manipulate data with a user-defined function (UDF)\n", - " * Sort the data\n", - " * Filter the data\n", - " * One-hot encode categorical columns\n", - " * Split the data into training and validation sets\n", - " * Turn the GDFs into matrices\n", - "* Conclusion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "This notebook was tested using the `rapidsai/rapidsai-dev-nightly:0.10-cuda10.0-devel-ubuntu18.04-py3.7` container from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai-nightly) and run on the NVIDIA GV100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", - "\n", - "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", - "\n", - "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's see what CUDA version we have:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvcc --version" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Last, let's ensure that we have graphviz installed" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "done\n", - "\n", - "\n", - "==> WARNING: A newer version of conda exists. <==\n", - " current version: 4.6.14\n", - " latest version: 4.7.12\n", - "\n", - "Please update conda by running\n", - "\n", - " $ conda update -n base -c defaults conda\n", - "\n", - "\n", - "\n", - "## Package Plan ##\n", - "\n", - " environment location: /opt/conda/envs/rapids\n", - "\n", - " added / updated specs:\n", - " - python-graphviz\n", - "\n", - "\n", - "The following packages will be downloaded:\n", - "\n", - " package | build\n", - " ---------------------------|-----------------\n", - " python-graphviz-0.10.1 | py_0 22 KB\n", - " ------------------------------------------------------------\n", - " Total: 22 KB\n", - "\n", - "The following packages will be SUPERSEDED by a higher-priority channel:\n", - "\n", - " python-graphviz conda-forge::python-graphviz-0.13-py_0 --> pkgs/main::python-graphviz-0.10.1-py_0\n", - "\n", - "\n", - "\n", - "Downloading and Extracting Packages\n", - "python-graphviz-0.10 | 22 KB | ##################################### | 100% \n", - "Preparing transaction: done\n", - "Verifying transaction: done\n", - "Executing transaction: done\n" - ] - } - ], - "source": [ - "!apt update\n", - "!apt install -y graphviz\n", - "!conda install -y graphviz\n", - "!conda install -y python-graphviz" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading data into a GPU DataFrame (GDF)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Loading data into a Pandas DataFrame\n", - "\n", - "It's easy to load almost any sort of data (json, csv, etc) into a Pandas DataFrame.
\n", - "For example, let's import some census data from a compressed CSV file on disk:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd; print('pandas Version:', pd.__version__)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# read data from csv file into pandas dataframe\n", - "df = pd.read_csv('../../data/ipums/ipums_easy.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[Read more on using a Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Converting a Pandas DataFrame to a GDF\n", - "\n", - "Next, we use our `pandas.DataFrame` and to create a `cudf.dataframe.DataFrame` object using the `from_pandas` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cudf\n", - "\n", - "# convert the Panda dataframe into a GPU dataframe\n", - "gdf = cudf.DataFrame.from_pandas(df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And that's it! For the most part, working with GPU DataFrames will be the same as working with Pandas DataFrames. See the [cuDF documentation](https://cudf.readthedocs.io/en/latest/index.html) for more information.\n", - "\n", - "## Working with the GDF" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Take a look at the columns and their data types" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print the columns and their datatypes in this gdf\n", - "gdf.dtypes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Slice the GDF\n", - "\n", - "Woah! This GDF has a lot of columns, let's make it more manageable..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# only select certain columns (and overwrite the gdf)\n", - "column_names = [\n", - " 'INCEARN', 'PERWT', 'ADJUST', 'STATEICP', 'ROOMS', 'BEDROOMS',\n", - " 'PHONE', 'VEHICLES', 'RACE', 'SEX', 'AGE', 'VETSTAT'\n", - "]\n", - "gdf = gdf.loc[:, column_names]\n", - "\n", - "# show the first 5 records of each column\n", - "print(gdf.head(5))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Modify data types" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gdf.dtypes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Looks like `INCEARN` and `PERWT` are integers when they should be floats. Let's fix that..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# convert the following two int64 columns to float64 data type\n", - "gdf['INCEARN'] = gdf['INCEARN'].astype(np.float64)\n", - "gdf['PERWT'] = gdf['PERWT'].astype(np.float64)\n", - "\n", - "# take another look\n", - "gdf.dtypes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Manipulate data with a user-defined function (UDF)\n", - "\n", - "`INCEARN` is a column in our dataset that supposedly represents income earned; however, it does not truly represent the amount of income earned when adjusted for inflation. The `ADJUST` column represents the dollar inflation factor, which we can use to adjust `INCEARN` to the amount that the individual would have earned during the calender year. In our dataset, `ADJUST` is constant over all rows.\n", - "\n", - "Below, we will define a simple function `adjust_incearn` that takes `INCEARN` and and multiplies it by a constant - in this case, the dollar inflation factor. We'll use the `applymap` method in our `cudf.dataframe.DataFrame` object to apply an element-wise function to transform the values in the Column." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define a function to adjust the incearn column\n", - "# so it more accurately represents income earned\n", - "adjust = gdf['ADJUST'][0] # take constant from first row\n", - "print('adjustment factor: {}'.format(adjust))\n", - "def adjust_incearn(incearn):\n", - " return adjust * incearn;\n", - "\n", - "# apply it to the 'population' column\n", - "gdf['INCEARN'] = gdf['INCEARN'].applymap(adjust_incearn)\n", - "\n", - "# drop the ADJUST column\n", - "gdf.drop_column('ADJUST')\n", - "\n", - "# compute the mean\n", - "print('mean adjusted income: {}'.format(gdf['INCEARN'].mean()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Sort the data\n", - "\n", - "Next, let's sort out data to do some light exploration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# sort the gdf by the INCEARN column\n", - "gdf = gdf.sort_values(by='INCEARN', ascending=True)\n", - "# reset the index so we can use loc slicing later\n", - "gdf = gdf.reset_index()\n", - "print(gdf.head(5))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Looks like we have some negative income values. Let's filter those out...\n", - "\n", - "### Filter the data\n", - "\n", - "We'll use the `query` method to filter our dataset. The `query` method takes as argument a boolean expression very similar to the `query` method for the `pandas.DataFrame` class. However, the `cudf.dataframe.DataFrame` implementation uses Numba to compile a GPU kernel. \n", - "\n", - "For more information on the syntax for arguments into `query`, see the Pandas documentation: \n", - "\n", - "https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.query.html" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# how many records do we have?\n", - "print(\"{} = Original # of records\".format(len(gdf)))\n", - "\n", - "# filter out\n", - "gdf = gdf.query('INCEARN >= 0')\n", - "\n", - "# how many records do we have left?\n", - "print(\"{} = New # of records\".format(len(gdf)))\n", - "\n", - "# sanity check...\n", - "print(gdf.head(5))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### One-hot encode categorical columns\n", - "\n", - "Next, let's prepare our categorical columns. Machine learning models won't take strings as inputs, so we need to go to each column and convert its string representations to a numerical representation. The most common way to convert a Column with `n` elements and `k` unique categories to a numerical representation is to create a matrix of shape `n` by `k` and impute a 1 in cell `(i, j)` if the `ith` element is of category `j` and 0 otherwise, where $j \\in k$. This is known as one-hot encoding." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define the categorical columns\n", - "cat_cols = set(['STATEICP', 'RACE', 'SEX', 'VETSTAT'])\n", - "# store the unique values for each category column\n", - "uniques = {}\n", - "\n", - "# iterate through each categorical column and one-hot\n", - "# encode it using the unique values it has\n", - "for k in cat_cols:\n", - " uniques[k] = gdf[k].unique_k(k=1000)\n", - " cats = uniques[k][1:] # drop first\n", - " gdf = gdf.one_hot_encoding(k, prefix=k, cats=cats)\n", - " del gdf[k]\n", - " \n", - "# we should see many more columns since the categorical\n", - "# columns will get expanded due to one-hot encoding\n", - "gdf.dtypes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Split the data into training and validation sets\n", - "\n", - "Next, let's split out data into an 80% train dataset and a 20% validation dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# enforce float64 data type on ALL columns\n", - "for k in gdf.columns:\n", - " gdf[k] = gdf[k].astype(np.float64)\n", - "\n", - "# set the fractions for training and validation\n", - "fractions = {\n", - " \"train\": 0.8,\n", - " \"valid\": 0.2\n", - "}\n", - "\n", - "# validation splitpoint\n", - "splitpoint = int(len(gdf) * fractions[\"train\"])\n", - "print('splitpoint: {} of {} is {}'.format(fractions[\"train\"], len(gdf), splitpoint))\n", - "\n", - "# break the gdf up into training and validation sets\n", - "gdfs = {\n", - " \"train\": gdf.loc[:splitpoint],\n", - " \"valid\": gdf.loc[splitpoint:]\n", - "}\n", - "print('gdfs[\"train\"] has {} rows'.format(len(gdfs[\"train\"])))\n", - "print('gdfs[\"valid\"] has {} rows'.format(len(gdfs[\"valid\"])))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Turn the GDFs into matrices\n", - "\n", - "Lastly, we want to convert our GPU DataFrame to a GPU Matrix for usage as input to other machine learning libraries such as cuML and XGBoost. We can use the `as_gpu_matrix` method to facillitate this conversion." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# produce gpu matrices (to input to ML libraries, etc.)\n", - "# this step should not be necessary in the near future\n", - "# (should be able to use gdf as input)\n", - "matrices = {\n", - " \"train\": {\n", - " \"x\": gdfs[\"train\"].as_gpu_matrix(columns=gdf.columns[1:]),\n", - " \"y\": gdfs[\"train\"].as_gpu_matrix(columns=[gdf.columns[0]])\n", - " },\n", - " \"valid\": {\n", - " \"x\": gdfs[\"valid\"].as_gpu_matrix(columns=gdf.columns[1:]),\n", - " \"y\": gdfs[\"valid\"].as_gpu_matrix(columns=[gdf.columns[0]])\n", - " }\n", - "}\n", - "\n", - "# check the matrix shapes (sanity check)\n", - "print('matrices[\"train\"][\"x\"] shape:', matrices[\"train\"][\"x\"].shape)\n", - "print('matrices[\"train\"][\"y\"] shape:', matrices[\"train\"][\"y\"].shape)\n", - "print('matrices[\"valid\"][\"x\"] shape:', matrices[\"valid\"][\"x\"].shape)\n", - "print('matrices[\"valid\"][\"y\"] shape:', matrices[\"valid\"][\"y\"].shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "To learn more about RAPIDS, be sure to check out: \n", - "\n", - "* [Open Source Website](http://rapids.ai)\n", - "* [GitHub](https://github.com/rapidsai/)\n", - "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", - "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", - "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", - "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/getting_started_notebooks/intro_tutorials/01_Introduction_to_RAPIDS.ipynb b/getting_started_notebooks/intro_tutorials/01_Introduction_to_RAPIDS.ipynb deleted file mode 100644 index b0124b36..00000000 --- a/getting_started_notebooks/intro_tutorials/01_Introduction_to_RAPIDS.ipynb +++ /dev/null @@ -1,708 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Introduction to RAPIDS\n", - "#### By Paul Hendricks\n", - "-------\n", - "\n", - "While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For the same reasons, scientific computing and deep learning has turned to NVIDIA GPU acceleration, data analytics and machine learning where GPU acceleration is ideal. \n", - "\n", - "NVIDIA created RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has Pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. RAPIDS integrates easily into the world’s most popular data science Python-based workflows. RAPIDS accelerates data science end-to-end – from data prep, to machine learning, to deep learning. And through Arrow, Spark users can easily move data into the RAPIDS platform for acceleration.\n", - "\n", - "In this notebook, we will discuss and show at a high level what each of the packages in the RAPIDS are as well as what they do. Subsequent notebooks will dive deeper into the various areas of data science and machine learning and show how you can use RAPIDS to accelerate your workflow in each of these areas.\n", - "\n", - "**Table of Contents**\n", - "\n", - "* [Introduction to RAPIDS](#introduction)\n", - "* [Setup](#setup)\n", - "* [Pandas](#pandas)\n", - "* [cuDF](#cudf)\n", - "* [Scikit-Learn](#scikitlearn)\n", - "* [cuML](#cuml)\n", - "* [Dask](#dask)\n", - "* [Dask cuDF](#daskcudf)\n", - "* [Conclusion](#conclusion)\n", - "\n", - "Before going any further, let's make sure we have access to `matplotlib`, a popular Python library for visualizing data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "try:\n", - " import matplotlib\n", - "except ModuleNotFoundError:\n", - " os.system('conda install -y matplotlib')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Setup\n", - "\n", - "This notebook was tested using the following Docker containers:\n", - "\n", - "* `rapidsai/rapidsai-dev-nightly:0.10-cuda10.0-devel-ubuntu18.04-py3.7` container from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai-nightly)\n", - "\n", - "This notebook was run on the NVIDIA GV100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", - "\n", - "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", - "\n", - "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's see what CUDA version we have:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvcc --version" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's load some helper functions from `matplotlib` and configure the Jupyter Notebook for visualization." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib.colors import ListedColormap\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Pandas\n", - "\n", - "Data scientists typically work with two types of data: unstructured and structured. Unstructured data often comes in the form of text, images, or videos. Structured data - as the name suggests - comes in a structured form, often represented by a table or CSV. We'll focus the majority of these tutorials on working with these types of data.\n", - "\n", - "There exist many tools in the Python ecosystem for working with structured, tabular data but few are as widely used as Pandas. Pandas represents data in a table and allows a data scientist to manipulate the data to perform a number of useful operations such as filtering, transforming, aggregating, merging, visualizing and many more. \n", - "\n", - "For more information on Pandas, check out the excellent documentation: http://pandas.pydata.org/pandas-docs/stable/\n", - "\n", - "Below we show how to create a Pandas DataFrame, an internal object for representing tabular data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd; print('Pandas Version:', pd.__version__)\n", - "\n", - "\n", - "# here we create a Pandas DataFrame with\n", - "# two columns named \"key\" and \"value\"\n", - "df = pd.DataFrame()\n", - "df['key'] = [0, 0, 2, 2, 3]\n", - "df['value'] = [float(i + 10) for i in range(5)]\n", - "print(df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can perform many operations on this data. For example, let's say we wanted to sum all values in the in the `value` column. We could accomplish this using the following syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "aggregation = df['value'].sum()\n", - "print(aggregation)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## cuDF\n", - "\n", - "Pandas is fantastic for working with small datasets that fit into your system's memory. However, datasets are growing larger and data scientists are working with increasingly complex workloads - the need for accelerated compute arises.\n", - "\n", - "cuDF is a package within the RAPIDS ecosystem that allows data scientists to easily migrate their existing Pandas workflows from CPU to GPU, where computations can leverage the immense parallelization that GPUs provide.\n", - "\n", - "Below, we show how to create a cuDF DataFrame." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cudf; print('cuDF Version:', cudf.__version__)\n", - "\n", - "\n", - "# here we create a cuDF DataFrame with\n", - "# two columns named \"key\" and \"value\"\n", - "df = cudf.DataFrame()\n", - "df['key'] = [0, 0, 2, 2, 3]\n", - "df['value'] = [float(i + 10) for i in range(5)]\n", - "print(df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As before, we can take this cuDF DataFrame and perform a `sum` operation over the `value` column. The key difference is that any operations we perform using cuDF use the GPU instead of the CPU." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "aggregation = df['value'].sum()\n", - "print(aggregation)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note how the syntax for both creating and manipulating a cuDF DataFrame is identical to the syntax necessary to create and manipulate Pandas DataFrames; the cuDF API is based on the Pandas API. This design choice minimizes the cognitive burden of switching from a CPU based workflow to a GPU based workflow and allows data scientists to focus on solving problems while benefitting from the speed of a GPU!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Scikit-Learn\n", - "\n", - "After our data has been preprocessed, we often want to build a model so as to understand the relationships between different variables in our data. Scikit-Learn is an incredibly powerful toolkit that allows data scientists to quickly build models from their data. Below we show a simple example of how to create a Linear Regression model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np; print('NumPy Version:', np.__version__)\n", - "\n", - "\n", - "# create the relationship: y = 2.0 * x + 1.0\n", - "n_rows = 100000 # let's use 100 thousand data points\n", - "w = 2.0\n", - "x = np.random.normal(loc=0, scale=1, size=(n_rows,))\n", - "b = 1.0\n", - "y = w * x + b\n", - "\n", - "# add a bit of noise\n", - "noise = np.random.normal(loc=0, scale=2, size=(n_rows,))\n", - "y_noisy = y + noise" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualize our data using the `matplotlib` library." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `LinearRegression` class from Scikit-Learn to instantiate a model and fit it to our data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sklearn; print('Scikit-Learn Version:', sklearn.__version__)\n", - "from sklearn.linear_model import LinearRegression\n", - "\n", - "\n", - "# instantiate and fit model\n", - "linear_regression = LinearRegression()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "linear_regression.fit(np.expand_dims(x, 1), y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create new data and perform inference\n", - "inputs = np.linspace(start=-5, stop=5, num=1000)\n", - "outputs = linear_regression.predict(np.expand_dims(inputs, 1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's now visualize our empirical data points, the true relationship of the data, and the relationship estimated by the model. Looks pretty close!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## cuML\n", - "\n", - "The mathematical operations underlying many machine learning algorithms are often matrix multiplications. These types of operations are highly parallelizable and can be greatly accelerated using a GPU. cuML makes it easy to build machine learning models in an accelerated fashion while still using an interface nearly identical to Scikit-Learn. The below shows how to accomplish the same Linear Regression model but on a GPU.\n", - "\n", - "First, let's convert our data from a NumPy representation to a cuDF representation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create a cuDF DataFrame\n", - "df = cudf.DataFrame({'x': x, 'y': y_noisy})\n", - "print(df.head())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we'll load the GPU accelerated `LinearRegression` class from cuML, instantiate it, and fit it to our data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cuml; print('cuML Version:', cuml.__version__)\n", - "from cuml.linear_model import LinearRegression as LinearRegression_GPU\n", - "\n", - "\n", - "# instantiate and fit model\n", - "linear_regression_gpu = LinearRegression_GPU()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "linear_regression_gpu.fit(df[['x']], df['y'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can use this model to predict values for new data points, a step often called \"inference\" or \"scoring\". All model fitting and predicting steps are GPU accelerated." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create new data and perform inference\n", - "new_data_df = cudf.DataFrame({'inputs': inputs})\n", - "outputs_gpu = linear_regression_gpu.predict(new_data_df[['inputs']])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we can overlay our predicted relationship using our GPU accelerated Linear Regression model (green line) over our empirical data points (light blue circles), the true relationship (blue line), and the predicted relationship from a model built on the CPU (red line). We see that our GPU accelerated model's estimate of the true relationship (green line) is identical to the CPU based model's estimate of the true relationship (red line)!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", - "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='predicted relationship (gpu)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Dask\n", - "\n", - "Dask is a library the allows facillitates distributed computing. Written in Python, it allows one to compose complex workflows using basic Python primitives like integers or strings as well as large data structures like those found in NumPy, Pandas, and cuDF. In the following examples and notebooks, we'll show how to use Dask with cuDF to accelerate common ETL tasks and train machine learning models like Linear Regression and XGBoost.\n", - "\n", - "To learn more about Dask, check out the documentation here: http://docs.dask.org/en/latest/\n", - "\n", - "#### Client/Workers\n", - "\n", - "Dask operates by creating a cluster composed of a \"client\" and multiple \"workers\". The client is responsible for scheduling work; the workers are responsible for actually executing that work. \n", - "\n", - "Typically, we set the number of workers to be equal to the number of computing resources we have available to us. For CPU based workflows, this might be the number of cores or threads on that particlular machine. For example, we might set `n_workers = 8` if we have 8 CPU cores or threads on our machine that can each operate in parallel. This allows us to take advantage of all of our computing resources and enjoy the most benefits from parallelization.\n", - "\n", - "To get started, we'll create a local cluster of workers and client to interact with that cluster." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import dask; print('Dask Version:', dask.__version__)\n", - "from dask.distributed import Client, LocalCluster\n", - "\n", - "\n", - "# create a local cluster with 4 workers\n", - "n_workers = 4\n", - "cluster = LocalCluster(n_workers=n_workers)\n", - "client = Client(cluster)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's inspect the `client` object to view our current Dask status. We should see the IP Address for our Scheduler as well as the the number of workers in our Cluster. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# show current Dask status\n", - "client" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also see the status and more information at the Dashboard, found at `http:///status`. You can ignore this for now, we'll dive into this in subsequent tutorials.\n", - "\n", - "With our client and cluster of workers setup, it's time to execute our first distributed program. We'll define a function called `sleep_1` that sleeps for 1 second and returns the string \"Success!\". Executed in serial four times, this function should take around 4 seconds to execute." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "\n", - "\n", - "def sleep_1():\n", - " time.sleep(1)\n", - " return 'Success!'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "for _ in range(n_workers):\n", - " sleep_1()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As expected, our workflow takes about 4 seconds to run. Now let's execute this same workflow in distributed fashion using Dask." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from dask.delayed import delayed" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "# define delayed execution graph\n", - "sleep_operations = [delayed(sleep_1)() for _ in range(n_workers)]\n", - "\n", - "# use client to perform computations using execution graph\n", - "sleep_futures = client.compute(sleep_operations, optimize_graph=False, fifo_timeout=\"0ms\")\n", - "\n", - "# collect and print results\n", - "sleep_results = client.gather(sleep_futures)\n", - "print(sleep_results)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using Dask, we see that this whole workflow takes a little over a second - each worker is truly executing in parallel!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Dask cuDF\n", - "\n", - "In the previous example, we saw how we can use Dask with very basic objects to compose a graph that can be executed in a distributed fashion. However, we aren't limited to basic data types though. \n", - "\n", - "We can use Dask with objects such as Pandas DataFrames, NumPy arrays, and cuDF DataFrames to compose more complex workflows. With larger amounts of data and embarrasingly parallel algorithms, Dask allows us to scale ETL and Machine Learning workflows to Gigabytes or Terabytes of data. In the below example, we show how we can process 100 million rows by combining cuDF with Dask.\n", - "\n", - "Before we start working with cuDF DataFrames with Dask, we need to setup a Local CUDA Cluster and Client to work with our GPUs. This is very similar to how we setup a Local Cluster and Client in vanilla Dask." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import dask; print('Dask Version:', dask.__version__)\n", - "from dask.distributed import Client\n", - "# import dask_cuda; print('Dask CUDA Version:', dask_cuda.__version__)\n", - "from dask_cuda import LocalCUDACluster\n", - "\n", - "\n", - "# create a local CUDA cluster\n", - "cluster = LocalCUDACluster()\n", - "client = Client(cluster)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's inspect our `client` object:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "client" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As before, you can also see the status of the Client along with information on the Scheduler and Dashboard.\n", - "\n", - "With our client and workers setup, let's create our first distributed cuDF DataFrame using Dask. We'll instantiate our cuDF DataFrame in the same manner as the previous sections but instead we'll use significantly more data. Lastly, we'll pass the cuDF DataFrame to `dask_cudf.from_cudf` and create an object of type `dask_cudf.core.DataFrame`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import dask_cudf; print('Dask cuDF Version:', dask_cudf.__version__)\n", - "\n", - "\n", - "# identify number of workers\n", - "workers = client.has_what().keys()\n", - "n_workers = len(workers)\n", - "\n", - "# create a cuDF DataFrame with two columns named \"key\" and \"value\"\n", - "df = cudf.DataFrame()\n", - "n_rows = 100000000 # let's process 100 million rows in a distributed parallel fashion\n", - "df['key'] = np.random.binomial(1, 0.2, size=(n_rows))\n", - "df['value'] = np.random.normal(size=(n_rows))\n", - "\n", - "# create a distributed cuDF DataFrame using Dask\n", - "distributed_df = dask_cudf.from_cudf(df, npartitions=n_workers)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# inspect our distributed cuDF DataFrame using Dask\n", - "print('-' * 15)\n", - "print('Type of our Dask cuDF DataFrame:', type(distributed_df))\n", - "print('-' * 15)\n", - "print(distributed_df.head())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above output shows the first several rows of our distributed cuDF DataFrame.\n", - "\n", - "With our Dask cuDF DataFrame defined, we can now perform the same `sum` operation as we did with our cuDF DataFrame. The key difference is that this operation is now distributed - meaning we can perform this operation using multiple GPUs or even multiple nodes, each of which may have multiple GPUs. This allows us to scale to larger and larger amounts of data!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "aggregation = distributed_df['value'].sum()\n", - "print(aggregation.compute())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Conclusion\n", - "\n", - "In this notebook, we showed at a high level what each of the packages in the RAPIDS are as well as what they do.\n", - "\n", - "To learn more about RAPIDS, be sure to check out: \n", - "\n", - "* [Open Source Website](http://rapids.ai)\n", - "* [GitHub](https://github.com/rapidsai/)\n", - "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", - "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", - "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", - "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/getting_started_notebooks/intro_tutorials/06_Introduction_to_Supervised_Learning.ipynb b/getting_started_notebooks/intro_tutorials/06_Introduction_to_Supervised_Learning.ipynb deleted file mode 100644 index 5844e3f6..00000000 --- a/getting_started_notebooks/intro_tutorials/06_Introduction_to_Supervised_Learning.ipynb +++ /dev/null @@ -1,838 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Introduction to Supervised Learning\n", - "#### By Paul Hendricks\n", - "-------\n", - "\n", - "In this notebook, we will show to do GPU accelerated Supervised Learning in RAPIDS. We will not cover SGD Regression at this time.\n", - "\n", - "**Table of Contents**\n", - "\n", - "* [Introduction to Supervised Learning](#introduction)\n", - "* [Linear Regression](#linear)\n", - "* [Ridge Regression](#ridge)\n", - "* [K Nearest Neighbors](#knn)\n", - "* [Setup](#setup)\n", - "* [Conclusion](#conclusion)\n", - "\n", - "Before going any further, let's make sure we have access to `matplotlib`, a popular Python library for visualizing data." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import subprocess\n", - "\n", - "try:\n", - " import matplotlib\n", - "except ModuleNotFoundError:\n", - " os.system('conda install -y matplotlib')\n", - " import matplotlib\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Setup\n", - "\n", - "This notebook was tested using the following Docker containers:\n", - "\n", - "* `rapidsai/rapidsai-dev-nightly:0.12-cuda10.1-runtime-ubuntu18.04-py3.7` container from [DockerHub](https://hub.docker.com/r/rapidsai/rapidsai-nightly)\n", - "\n", - "This notebook was run on the NVIDIA GV100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", - "\n", - "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks-contrib/issues\n", - "\n", - "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's see what CUDA version we have:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!nvcc --version" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's load some helper functions from `matplotlib` and configure the Jupyter Notebook for visualization." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib.colors import ListedColormap\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Linear Regression\n", - "\n", - "After our data has been preprocessed, we often want to build a model so as to understand the relationships between different variables in our data. Scikit-Learn is an incredibly powerful toolkit that allows data scientists to quickly build models from their data. Below we show a simple example of how to create a Linear Regression model." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NumPy Version: 1.17.5\n" - ] - } - ], - "source": [ - "import numpy as np; print('NumPy Version:', np.__version__)\n", - "\n", - "\n", - "# create the relationship: y = 2.0 * x + 1.0\n", - "\n", - "n_rows = 46000\n", - "w = 2.0\n", - "x = np.random.normal(loc=0, scale=1, size=(n_rows,))\n", - "b = 1.0\n", - "y = w * x + b\n", - "\n", - "# add a bit of noise\n", - "noise = np.random.normal(loc=0, scale=2, size=(n_rows,))\n", - "y_noisy = y + noise" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualize our data using the `matplotlib` library." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `LinearRegression` class from Scikit-Learn to instantiate a model and fit it to our data." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit-Learn Version: 0.22\n" - ] - } - ], - "source": [ - "import sklearn; print('Scikit-Learn Version:', sklearn.__version__)\n", - "from sklearn.linear_model import LinearRegression\n", - "\n", - "\n", - "# instantiate and fit model\n", - "linear_regression = LinearRegression()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 3.08 ms, sys: 0 ns, total: 3.08 ms\n", - "Wall time: 2.07 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "linear_regression.fit(np.expand_dims(x, 1), y)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# create new data and perform inference\n", - "inputs = np.linspace(start=-5, stop=5, num=1000)\n", - "outputs = linear_regression.predict(np.expand_dims(inputs, 1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's now visualize our empirical data points, the true relationship of the data, and the relationship estimated by the model. Looks pretty close!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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I5MTomlWu7LN0g4Tl++03DFEGA0kdWlgc1+BUmogOTmZX3/91XJxWb9+PVu2bOHXX3+lTp06HDx40O5nBw0axMyZM7n55pvZvHkzQ4cOZe3atYW227p1K99//z1Go5FZs2ZRsWJFfvrpJy5dukRcXBzt2rXL9yCvevXqfPPNN4SFhbF371569epFamoqycnJlqBubqvZhAkTiI2NJSUlhbVr1/Loo49azmnXrl2sW7eOs2fPUq9ePYYMGcLXX39NjRo1WLHC1HE4ffq0ZV9Vq1bl559/5t1332XatGm8//77hc7p4MGD/N///R/79u0jPj6eP/74g7CwMNd/8UEoeIL8+fPw+uswdSqcOQN9+sDEieBGvqmritu7tPfwduLynSTERpKSlk6IUjYfrloPC5nbUNT1YUOUok7iCpfKHZsvCEVdzPxidt4/+8rKdnhx8vTEMkc97pLUokULp/nP586d44cffuDBBx+0vHbp0iWb23bp0gXjlWHH1atX88svv/Dpp58CpuC6d+9e6tata9k+Ozubp556im3bthEaGsqePXuctvn7779n6dKlANxzzz2cPHnSErg7duxIuXLlKFeuHNWrV+fo0aNER0czcuRIRo8eTadOnbjjjjss++revTsATZs25bPPPrN5vIceeoiQkBBuvvlmbrjhBnbt2kVMTIzTdgazwA/yly+bHqJOmgRHj0KXLjB5MkT77yo/9oLYqQvZjEvZwdKt6TYDvK1hIUe9a2fcydAxX1yKcidj76IW6sKFLJCUL1/e8ucyZcqQl/fPhe/ixYsA5OXlERER4dLwkvX+tNa89dZbtG/fPt821ncMM2bM4JprrmH79u3k5eW51EPWtjK+rtwdlCtXzvJaaGgoOTk51K1bl61bt7Jy5UrGjBlDu3bteOmll/Jtb97WloIphJIG61zgZtfk5sLChVC/Pjz1FNSrBxs3whdf+E2AT0lLJy55LXUSVxCXvJaUtHTAcRD7ePNfdnu49uqf28pCscX8dQm188Uxv17w3YIXl4TYSDYm3mPJSXd2V2Pvopartc3smUBIh7zqqqs4e/as3fevueYajh07xsmTJ7l06ZJlqOTqq6+mTp06LFmyBDAF2e3btzs9Xvv27XnvvffIzjbdce3Zs8cy9m52+vRprrvuOkJCQliwYAG5ublO23rnnXeyaNEiwDSMU7Vq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6LZt2+rLly/rbdu26caNG2uttf7ggw/0tddeq0+cOKEvXLigGzRoYJlVWb58ea211uvWrdPh4eF6//79luOa31u5cqVu3bq1Pn/+vNZa65MnT2qttT5x4oRl27Fjx+o333xTa21/Bmjnzp0t7X777bct+8/OztanT5/WWmt9/PhxfeONN+q8vLxCM33tbVcQoBcuXKi11nrixIl62LBhWmuto6Oj9fr167XWWo8fP14/88wzWmut+/Xrp5csWaK11rp27dqW83jnnXf0448/bvOcGjZsqA8fNn23T506VagN/sLdGa+SXeMCf68cKbzLG89lvv32W7Zu3WopepWVlUX16tUB08pA5kVAoqOjKVeuHAaDgejo6Hxlcdu2bUuVKlUAU+nc77//vtDKRi1atKBOnTqFjm+vLO6vv/7KuHHjyMzM5Ny5c7Rv73jlTnvljrWLpYTtbXfttfmrm4eEhFjKL/fp04fu3btz+vRpMjMzueuuuwDo169fvpLM1qxLC3/22Wc2t4mLi6N///489NBDlu0DgQT5YpD8+eDgjRr5Wmv69etns2iWwWCwlKYNCQmxFOEKCQnJVxbXWSlcyF8CuODxbW3fv39/UlJSaNy4MfPmzWP9+vVOz8XWflwtJVyUksP2jumIK6WFZ86cyebNm1mxYgUxMTFs27bNchEtzWRMvoi8NU4r/I83nsu0adOGTz/91FKCNyMjw1Ju11XffPMNGRkZZGVlkZKSYln0wxX2yuKePXuW6667juzsbLvli63ZK3fsailhe9sVlJeXZxlj/+ijj7j99tupWLEilSpV4rvvvgNgwYIFll69Kwq2Zd++fbRs2ZKXX36ZqlWr8tdff7m8L38mPfkiKpVrmYoi8caKXrfeeiuTJ0+mXbt25OXlYTAYeOedd1wu5wtw++2307dvX/744w969+7t1iLUHTp0YNu2bTRr1oyyZcty//3388orrzBp0iRatmxJ7dq1iY6Otlvb3eyNN96gd+/evPHGG/To0cPy+iOPPELnzp0tZXdtlRK+7777GD16tM3tCipfvjw7d+6kadOmVKxY0VKfff78+QwePJgLFy5www038MEHH7j8O+jcuTMPPPAAX3zxBW+99RYzZsxg7969aK1p06YNjRs3dnlf/kwKlBVRncQVNtczVMCB5I4l3RzhptJeoGzevHmkpqby9ttv+7opJaJChQqWRUiCnRQoKyGSPy+EKA0kyBeR5M8LX+rfv3/Q9OIB6cUXg4zJF5E3xmlFybKXYSKEvyrK8LoE+WKQ/PnSKywsjJMnT1KlShUJ9KJU0Fpz8uRJwsLC3PqcBHkRlK6//noOHz5smR4vRGkQFhbG9ddf79ZnJMiLoGQwGGzOBBUi0MiDVyGECGAS5IUQIoBJkBdCiADmVzNelVLHAfcKePiHqsAJXzeihMk5B4dgO+fSer61tdbVbL3hV0G+tFJKpdqbUhyo5JyDQ7CdcyCerwzXCCFEAJMgL4QQAUyCvGfM8nUDfEDOOTgE2zkH3PnKmLwQQgQw6ckLIUQAkyAvhBABTIK8hymlRiqltFKqqq/b4m1KqalKqV1KqV+UUp8rpSJ83SZvUEp1UErtVkr9oZRK9HV7vE0pVVMptU4p9btSaqdS6hlft6mkKKVClVJpDrceQwAAAihJREFUSqkvfd0WT5Eg70FKqZpAW+CQr9tSQr4BGmqtGwF7gDE+bo/HKaVCgXeA+4BbgV5KqVt92yqvywGe11rfArQChgXBOZs9A/zu60Z4kgR5z5oBvAA2l38NOFrr1VrrnCs/bgLcq4FaOrQA/tBa79daXwb+C3T1cZu8Smv9t9b65yt/Posp6AX8wglKqeuBjsD7vm6LJ0mQ9xClVBcgXWu93ddt8ZEBwFe+boQXRAJ/Wf18mCAIeGZKqSggFtjs25aUiNcxddLyfN0QT5J68m5QSq0BrrXx1ljgRaBdybbI+xyds9b6iyvbjMV0i7+oJNtWQmwtGxUUd2pKqQrAUmCE1vqMr9vjTUqpTsAxrfVWpdTdvm6PJ0mQd4PW+l5bryulooE6wPYrS8ldD/yslGqhtf5fCTbR4+yds5lSqh/QCWijA3PSxWGgptXP1wNHfNSWEqOUMmAK8Iu01p/5uj0lIA7oopS6HwgDrlZKLdRa9/Fxu4pNJkN5gVLqINBMa10aq9m5TCnVAZgO3KW1Dsh19JRSZTA9VG4DpAM/Ab211jt92jAvUqaeynwgQ2s9wtftKWlXevIjtdadfN0WT5AxeVEcbwNXAd8opbYppWb6ukGeduXB8lPAKkwPID8J5AB/RRzQF7jnyt/rtis9XFEKSU9eCCECmPTkhRAigEmQF0KIACZBXgghApgEeSGECGAS5IUQIoBJkBdCiAAmQV4IIQLY/wNkXfIZJLTEBgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The mathematical operations underlying many machine learning algorithms are often matrix multiplications. These types of operations are highly parallelizable and can be greatly accelerated using a GPU. cuML makes it easy to build machine learning models in an accelerated fashion while still using an interface nearly identical to Scikit-Learn. The below shows how to accomplish the same Linear Regression model but on a GPU.\n", - "\n", - "First, let's convert our data from a NumPy representation to a cuDF representation." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cuDF Version: 0.12.0b+1877.g8b04eb7\n", - " x y\n", - "0 -0.445580 2.929034\n", - "1 1.065418 -0.256664\n", - "2 -1.133438 -1.950435\n", - "3 1.977738 6.854074\n", - "4 3.121144 6.280575\n" - ] - } - ], - "source": [ - "import cudf; print('cuDF Version:', cudf.__version__)\n", - "\n", - "\n", - "# create a cuDF DataFrame\n", - "df = cudf.DataFrame({'x': x, 'y': y_noisy})\n", - "print(df.head())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we'll load the GPU accelerated `LinearRegression` class from cuML, instantiate it, and fit it to our data." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cuML Version: 0.12.0a+752.g564916e\n" - ] - } - ], - "source": [ - "import cuml; print('cuML Version:', cuml.__version__)\n", - "from cuml.linear_model import LinearRegression as LinearRegression_GPU\n", - "\n", - "\n", - "# instantiate and fit model\n", - "linear_regression_gpu = LinearRegression_GPU()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 535 ms, sys: 186 ms, total: 721 ms\n", - "Wall time: 717 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "LinearRegression(algorithm='eig', fit_intercept=True, normalize=False, handle=)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "linear_regression_gpu.fit(df['x'], df['y'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can use this model to predict values for new data points, a step often called \"inference\" or \"scoring\". All model fitting and predicting steps are GPU accelerated." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "# create new data and perform inference\n", - "new_data_df = cudf.DataFrame({'inputs': inputs})\n", - "outputs_gpu = linear_regression_gpu.predict(new_data_df[['inputs']])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we can overlay our predicted relationship using our GPU accelerated Linear Regression model (green line) over our empirical data points (light blue circles), the true relationship (blue line), and the predicted relationship from a model built on the CPU (red line). We see that our GPU accelerated model's estimate of the true relationship (green line) is identical to the CPU based model's estimate of the true relationship (red line)!" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.plot(inputs, outputs, color='red', label='predicted relationship (cpu)')\n", - "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='predicted relationship (gpu)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Ridge Regression\n", - "\n", - "Ridge extends LinearRegression by providing L2 regularization on the coefficients when predicting response y with a linear combination of the predictors in X. It can reduce the variance of the predictors, and improves the conditioning of the problem.\n", - "\n", - "Below, we instantiate and fit a Ridge Regression model to our data." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "from cuml.linear_model import Ridge as Ridge_GPU\n", - "\n", - "\n", - "# instantiate and fit model\n", - "ridge_regression_gpu = Ridge_GPU()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 20.7 ms, sys: 20.5 ms, total: 41.2 ms\n", - "Wall time: 40.4 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "Ridge(alpha=1.0, solver='eig', fit_intercept=True, normalize=False, handle=)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "ridge_regression_gpu.fit(df[['x']], df['y'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similar to the `LinearRegression` model we fitted early, we can use the `predict` method to generate predictions for new data." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "outputs_gpu = ridge_regression_gpu.predict(new_data_df[['inputs']])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we can visualize our `Ridge` model's estimated relationship and overlay it our the empirical data points." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(x, y_noisy, label='empirical data points')\n", - "plt.plot(x, y, color='black', label='true relationship')\n", - "plt.plot(inputs, outputs, color='red', label='linear regression (cpu)')\n", - "plt.plot(inputs, outputs_gpu.to_array(), color='green', label='ridge regression (gpu)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## K Nearest Neighbors\n", - "\n", - "NearestNeighbors is a unsupervised algorithm where if one wants to find the “closest” datapoint(s) to new unseen data, one can calculate a suitable “distance” between each and every point, and return the top K datapoints which have the smallest distance to it.\n", - "\n", - "We'll generate some fake data using the `make_moons` function from the `sklearn.datasets` module. This function generates data points from two equations, each describing a half circle with a unique center. Since each data point is generated by one of these two equations, the cluster each data point belongs to is clear. The ideal classification algorithm will identify two clusters and associate each data point with the equation that generated it. \n", - "\n", - "These data points are generated using a non-linear relationship - so using a linear regression approach won't adequately solve problem. Instead, we can use a distance-based algorithm K Nearest Neighbors to classify each data point.\n", - "\n", - "First, let's generate out data." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1000, 2)\n" - ] - } - ], - "source": [ - "from sklearn.datasets import make_moons\n", - "\n", - "\n", - "X, y = make_moons(n_samples=int(1e3), noise=0.05, random_state=0)\n", - "print(X.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's visualize our data:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "figure = plt.figure()\n", - "axis = figure.add_subplot(111)\n", - "axis.scatter(X[y == 0, 0], X[y == 0, 1], \n", - " edgecolor='black',\n", - " c='lightblue', marker='o', s=40, label='cluster 1')\n", - "\n", - "axis.scatter(X[y == 1, 0], X[y == 1, 1], \n", - " edgecolor='black',\n", - " c='red', marker='s', s=40, label='cluster 2')\n", - "plt.legend()\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we build a KNN classification model, we first have to convert our data to a cuDF representation." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "X_df = cudf.DataFrame()\n", - "for column in range(X.shape[1]):\n", - " X_df['feature_' + str(column)] = np.ascontiguousarray(X[:, column])\n", - "\n", - "y_df = cudf.Series(y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we'll instantiate and fit a nearest neighbors model using the `NearestNeighbors` class from cuML." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from cuml.neighbors import NearestNeighbors\n", - "\n", - "\n", - "knn = NearestNeighbors()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "NearestNeighbors(n_neighbors=5, verbose=False, handle=, algorithm='brute', metric='euclidean')" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "knn.fit(X_df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once our model has been built and fitted to the data, we can query the model for the `k` nearest neighbors to each data point. The query returns a matrix representating the distances of each data point to its nearest `k` neighbors as well as the indices of those neighbors." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "k = 3\n", - "\n", - "distances, indices = knn.kneighbors(X_df, n_neighbors=k)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can iterate through each of our data points and do a majority vote to determine which class it belongs to." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "predictions = []\n", - "\n", - "for i in range(indices.shape[0]):\n", - " row = indices.iloc[i, :]\n", - " vote = sum(y_df[j] for j in row) / k\n", - " predictions.append(1.0 * (vote > 0.5))\n", - "\n", - "predictions = np.asarray(predictions).astype(np.float32)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we can visualize the predictions from our K Nearest Neighbors classifier - we see that despite the non-linearity of the data, the algorithm does an excellent job of classifying the data." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))\n", - "\n", - "\n", - "ax1.scatter(X[y == 0, 0], X[y == 0, 1],\n", - " edgecolor='black',\n", - " c='lightblue', marker='o', s=40, label='cluster 1')\n", - "ax1.scatter(X[y == 1, 0], X[y == 1, 1],\n", - " edgecolor='black',\n", - " c='red', marker='s', s=40, label='cluster 2')\n", - "ax1.set_title('empirical data points')\n", - "\n", - "\n", - "ax2.scatter(X[predictions == 0, 0], X[predictions == 0, 1], c='lightblue',\n", - " edgecolor='black',\n", - " marker='o', s=40, label='cluster 1')\n", - "ax2.scatter(X[predictions == 1, 0], X[predictions == 1, 1], c='red',\n", - " edgecolor='black',\n", - " marker='s', s=40, label='cluster 2')\n", - "ax2.set_title('KNN predicted classes')\n", - "\n", - "plt.legend()\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Conclusion\n", - "\n", - "In this notebook, we showed to do GPU accelerated Supervised Learning in RAPIDS. \n", - "\n", - "To learn more about RAPIDS, be sure to check out: \n", - "\n", - "* [Open Source Website](http://rapids.ai)\n", - "* [GitHub](https://github.com/rapidsai/)\n", - "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", - "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", - "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", - "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/E2E/census/census_education2income_demo.ipynb b/intermediate_notebooks/E2E/census/census_education2income_demo.ipynb deleted file mode 100644 index 4ee35863..00000000 --- a/intermediate_notebooks/E2E/census/census_education2income_demo.ipynb +++ /dev/null @@ -1,519 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Census Notebook\n", - "**Authorship**
\n", - "Original Author: Taurean Dyer
\n", - "Last Edit: Taurean Dyer, 9/26/2019
\n", - "\n", - "**Test System Specs**
\n", - "Test System Hardware: GV100
\n", - "Test System Software: Ubuntu 18.04
\n", - "RAPIDS Version: 0.10.0a - Docker Install
\n", - "Driver: 410.79
\n", - "CUDA: 10.0
\n", - "\n", - "\n", - "**Known Working Systems**
\n", - "RAPIDS Versions:0.8, 0.9, 0.10\n", - "\n", - "# Intro\n", - "Held every 10 years, the US census gives a detailed snapshot in time about the makeup of the country. The last census in 2010 surveyed nearly 309 million people. IPUMS.org provides researchers an open source data set with 1% to 10% of the census data set. In this notebook, we want to see how education affects total income earned in the US based on data from each census from the 1970 to 2010 and see if we can predict some results if the census was held today, according to the national average. We will go through the ETL, training the model, and then testing the prediction. We'll make every effort to get as balanced of a dataset as we can. We'll also pull some extra variables to allow for further self-exploration of gender based education and income breakdowns. On a single Titan RTX, you can run the whole notebook workflow on the 4GB dataset of 14 million rows by 44 columns in less than 3 minutes. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Let's begin!**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import cuml\n", - "import cudf\n", - "import dask_cudf\n", - "import sys\n", - "import os\n", - "from pprint import pprint\n", - "import warnings\n", - "warnings.filterwarnings('ignore')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Get your data!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ipums dataset is in our S3 bucket and zipped. \n", - "1. We'll need to create a folder for our data in the `/data` folder\n", - "1. Download the zipped data into that folder from S3\n", - "1. Load the zipped data quickly into cudf using it's read_csv() parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import urllib.request\n", - "\n", - "data_dir = '../../../data/census/'\n", - "if not os.path.exists(data_dir):\n", - " print('creating census data directory')\n", - " os.system('mkdir ../../../data/census')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# download the IPUMS dataset\n", - "base_url = 'https://rapidsai-data.s3.us-east-2.amazonaws.com/datasets/'\n", - "fn = 'ipums_education2income_1970-2010.csv.gz'\n", - "if not os.path.isfile(data_dir+fn):\n", - " print(f'Downloading {base_url+fn} to {data_dir+fn}')\n", - " urllib.request.urlretrieve(base_url+fn, data_dir+fn)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def load_data(cached = data_dir+fn):\n", - " if os.path.exists(cached):\n", - " print('use ipums data')\n", - " X = cudf.read_csv(cached, compression='infer')\n", - " else:\n", - " print(\"No data found! Please check your that your data directory is ../../../data/census/ and that you downloaded the data. If you did, please delete the `../../../data/census/` directory and try the above 2 cells again\")\n", - " X = null\n", - " return X" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = load_data(data_dir+fn)\n", - "print('data',df.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df.head(5).to_pandas())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.dtypes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "original_counts = df.YEAR.value_counts()\n", - "print(original_counts) ### Remember these numbers!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ETL" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Cleaning Income data\n", - "First, let's focus on cleaning out the bad values for Total Income `INCTOT`. First, let's see if there are an `N/A` values, as when we did `head()`, we saw some in other columns, like CBSERIAL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df['INCTOT_NA'] = df['INCTOT'].isna()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df.INCTOT_NA.value_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Okay, great, there are no `N/A`s...or are there? Let's drop `INCTOT_NA` and see what our value counts look like" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df=df.drop('INCTOT_NA')\n", - "print(df.INCTOT.value_counts().to_pandas()) ### Wow, look how many people in America make $10,000,000! Wait a minutes... " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Not that many people make $10M a year. Checking https://usa.ipums.org/usa-action/variables/INCTOT#codes_section, `9999999`is INCTOT's code for `N/A`. That was why when we ran `isna`, RAPIDS won't find any. Let's first create a new dataframe that is only NA values, then let's pull those encoded `N/A`s out of our working dataframe!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('data',df.shape)\n", - "tdf = df.query('INCTOT == 9999999')\n", - "df = df.query('INCTOT != 9999999')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('working data',df.shape)\n", - "print('junk count data',tdf.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're down by nearly 1/4 of our original dataset size. For the curious, now we should be able to get accurate Total Income data, by year, not taking into account inflation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df.groupby('YEAR')['INCTOT'].mean()) # without that cleanup, the average would have bene in the millions...." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Normalize Income for inflation\n", - "Now that we have reduced our dataframe to a baseline clean data to answer our question, we should normalize the amounts for inflation. `CPI99`is the value that IPUMS uses to contian the inflation factor. All we have to do is multipy by year. Let's see how that changes the Total Income values from just above!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df.groupby('YEAR')['CPI99'].mean()) ## it just returns the CPI99\n", - "df['INCTOT'] = df['INCTOT'] * df['CPI99']\n", - "print(df.groupby('YEAR')['INCTOT'].mean()) ## let's see what we got!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Cleaning Education Data\n", - "Okay, great! Now we have income cleaned up, it should also have cleaned much of our next sets of values of interes, namely Education and Education Detailed. However, there are still some `N/A`s in key variables to worry about, which can cause problmes later. Let's create a list of them..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "suspect = ['CBSERIAL','EDUC', 'EDUCD', 'EDUC_HEAD', 'EDUC_POP', 'EDUC_MOM','EDUCD_MOM2','EDUCD_POP2', 'INCTOT_MOM','INCTOT_POP','INCTOT_MOM2','INCTOT_POP2', 'INCTOT_HEAD']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(0, len(suspect)):\n", - " df[suspect[i]] = df[suspect[i]].fillna(-1)\n", - " print(suspect[i], df[suspect[i]].value_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's get drop any rows of any `-1`s in Education and Education Detailed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "totincome = ['EDUC','EDUCD']\n", - "for i in range(0, len(totincome)):\n", - " query = totincome[i] + ' != -1'\n", - " df = df.query(query)\n", - " print(totincome[i])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df.shape)\n", - "df.head().to_pandas().head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Well, the good news is that we lost no further rows, start to normalize the data so when we do our OLS, one year doesn't unfairly dominate the data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Normalize the Data\n", - "The in the last step, need to keep our data at about the same ratio as we when started (1% of the population), with the exception of 1980, which was a 5% and needs to be reduced. This is why we kept the temp dataframe `tdf` - to get the counts per year. we will find out just how many have to realize" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('Working data: \\n', df.YEAR.value_counts())\n", - "print('junk count data: \\n', tdf.YEAR.value_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And now, so that we can do MSE, let's make all the dtypes the same. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.dtypes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "keep_cols = ['YEAR', 'DATANUM', 'SERIAL', 'CBSERIAL', 'HHWT', 'GQ', 'PERNUM', 'SEX', 'AGE', 'INCTOT', 'EDUC', 'EDUCD', 'EDUC_HEAD', 'EDUC_POP', 'EDUC_MOM','EDUCD_MOM2','EDUCD_POP2', 'INCTOT_MOM','INCTOT_POP','INCTOT_MOM2','INCTOT_POP2', 'INCTOT_HEAD', 'SEX_HEAD']\n", - "df = df.loc[:, keep_cols]\n", - "#df = df.drop(col for col in df.columns if col not in keep_cols)\n", - "for i in range(0, len(keep_cols)):\n", - " df[keep_cols[i]] = df[keep_cols[i]].fillna(-1)\n", - " print(keep_cols[i], df[keep_cols[i]].value_counts())\n", - " df[keep_cols[i]]= df[keep_cols[i]].astype('float64')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## I WANTED TO REDUCE THE 1980 SAMPLE HERE, BUT .SAMPLE() IS NEEDED AND NOT WORKING, UNLESS THERE IS A WORK AROUND..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the important data now clean and normalized, let's start doing the regression" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ridge Regression\n", - "We have 44 variables. The other variables may provide important predictive information. The Ridge Regression technique with cross validation to identify the best hyperparamters may be the best way to get the most accurate model. We'll have to \n", - "\n", - "* define our performance metrics\n", - "* split our data into train and test sets\n", - "* train and test our model\n", - "\n", - "Let's begin and see what we get!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# As our performance metrics we'll use a basic mean squared error and coefficient of determination implementation\n", - "def mse(y_test, y_pred):\n", - " return ((y_test.reset_index(drop=True) - y_pred.reset_index(drop=True)) ** 2).mean()\n", - "\n", - "def cod(y_test, y_pred):\n", - " y_bar = y_test.mean()\n", - " total = ((y_test - y_bar) ** 2).sum()\n", - " residuals = ((y_test.reset_index(drop=True) - y_pred.reset_index(drop=True)) ** 2).sum()\n", - " return 1 - (residuals / total)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cuml.preprocessing.model_selection import train_test_split\n", - "trainsize = .9\n", - "yCol = \"EDUC\"\n", - "from cuml.preprocessing.model_selection import train_test_split\n", - "from cuml.linear_model.ridge import Ridge\n", - "\n", - "def train_and_score(data, clf, train_frac=0.8, n_runs=20):\n", - " mse_scores, cod_scores = [], []\n", - " for _ in range(n_runs):\n", - " X_train, X_test, y_train, y_test = cuml.preprocessing.model_selection.train_test_split(df, yCol, train_size=.9)\n", - " y_pred = clf.fit(X_train, y_train).predict(X_test)\n", - " mse_scores.append(mse(y_test, y_pred))\n", - " cod_scores.append(cod(y_test, y_pred))\n", - " return mse_scores, cod_scores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " ## Results\n", - " **Moment of truth! Let's see how our regression training does!**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "n_runs = 20\n", - "clf = Ridge()\n", - "mse_scores, cod_scores = train_and_score(df, clf, n_runs=n_runs)\n", - "print(f\"median MSE ({n_runs} runs): {np.median(mse_scores)}\")\n", - "print(f\"median COD ({n_runs} runs): {np.median(cod_scores)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Fun fact:** if you made INCTOT the y axis, your prediction results would not be so pretty! It just shows that your education level can be an indicator for your income, but your income is NOT a great predictor for your education level. You have better odds flipping a coin!\n", - "\n", - "* median MSE (50 runs): 518189521.07548225\n", - "* median COD (50 runs): 0.425769113846303" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next Steps/Self Study\n", - "* You can pickle the model and use it in another workflow\n", - "* You can redo the workflow with based on head of household using `EDUC`, `SEX`, and `INCTOT` for X in `X`_HEAD\n", - "* You can see the growing role of education with women in their changing role in the workforce and income with \"EDUC_MOM\" and \"EDUC_POP" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb b/intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb deleted file mode 100644 index 8fb2de06..00000000 --- a/intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb +++ /dev/null @@ -1,893 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Mortgage Workflow\n", - "\n", - "## The Dataset\n", - "The dataset used with this workflow is derived from [Fannie Mae’s Single-Family Loan Performance Data](http://www.fanniemae.com/portal/funding-the-market/data/loan-performance-data.html) with all rights reserved by Fannie Mae. This processed dataset is redistributed with permission and consent from Fannie Mae.\n", - "\n", - "To acquire this dataset, please visit [RAPIDS Datasets Homepage](https://docs.rapids.ai/datasets/mortgage-data)\n", - "\n", - "## Introduction\n", - "The Mortgage workflow is composed of three core phases:\n", - "\n", - "1. ETL - Extract, Transform, Load\n", - "2. Data Conversion\n", - "3. ML - Training\n", - "\n", - "### ETL\n", - "Data is \n", - "1. Read in from storage\n", - "2. Transformed to emphasize key features\n", - "3. Loaded into volatile memory for conversion\n", - "\n", - "### Data Conversion\n", - "Features are\n", - "1. Broken into (labels, data) pairs\n", - "2. Distributed across many workers\n", - "3. Converted into compressed sparse row (CSR) matrix format for XGBoost\n", - "\n", - "### Machine Learning\n", - "The CSR data is fed into a distributed training session with `xgboost.dask`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "If required, the notebook can be converted to a python script for execution using tools like `nbconvert`\n", - "\n", - "```sh\n", - "$ jupyter nbconvert --to python mortgage_e2e.ipynb\n", - "$ python mortgage_e2e.py\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Imports statements" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from utils.utils import (\n", - " determine_dataset,\n", - " get_data,\n", - " memory_info,\n", - ")\n", - "\n", - "from dask_cuda import LocalCUDACluster\n", - "from dask.delayed import delayed\n", - "from dask.distributed import Client, wait\n", - "import rmm\n", - "\n", - "import numpy as np\n", - "\n", - "from collections import OrderedDict\n", - "import argparse\n", - "import gc\n", - "from glob import glob\n", - "import os\n", - "import subprocess\n", - "import time" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Define functions to encapsulate the workflow into a single call" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def run_dask_task(func, **kwargs):\n", - " task = func(**kwargs)\n", - " return task\n", - "\n", - "\n", - "def process_quarter_gpu(\n", - " year=2000, quarter=1, perf_file=\"\", data_dir=\"\", client=None, **kwargs\n", - "):\n", - " ml_arrays = run_dask_task(\n", - " delayed(run_gpu_workflow), quarter=quarter, year=year, perf_file=perf_file\n", - " )\n", - " return client.compute(ml_arrays, optimize_graph=False, fifo_timeout=\"0ms\")\n", - "\n", - "\n", - "def run_gpu_workflow(\n", - " quarter=1, year=2000, perf_file=\"\", acq_file=\"\", names_file=\"\", **kwargs\n", - "):\n", - " names = gpu_load_names(col_names_path=data_dir + \"names.csv\")\n", - " names = hash_df_string_columns(names)\n", - " acq_gdf = gpu_load_acquisition_csv(\n", - " acquisition_path=data_dir\n", - " + \"acq\"\n", - " + \"/Acquisition_\"\n", - " + str(year)\n", - " + \"Q\"\n", - " + str(quarter)\n", - " + \".txt\"\n", - " )\n", - " acq_gdf = hash_df_string_columns(acq_gdf)\n", - " acq_gdf = acq_gdf.merge(names, how=\"left\", on=[\"seller_name\"])\n", - " acq_gdf.drop_column(\"seller_name\")\n", - " acq_gdf[\"seller_name\"] = acq_gdf[\"new\"]\n", - " acq_gdf.drop_column(\"new\")\n", - " perf_df_tmp = gpu_load_performance_csv(perf_file)\n", - " perf_df_tmp = hash_df_string_columns(perf_df_tmp)\n", - " gdf = perf_df_tmp\n", - " everdf = create_ever_features(gdf)\n", - " delinq_merge = create_delinq_features(gdf)\n", - " everdf = join_ever_delinq_features(everdf, delinq_merge)\n", - " del delinq_merge\n", - " joined_df = create_joined_df(gdf, everdf)\n", - " testdf = create_12_mon_features(joined_df)\n", - " joined_df = combine_joined_12_mon(joined_df, testdf)\n", - " del testdf\n", - " perf_df = final_performance_delinquency(gdf, joined_df)\n", - " del (gdf, joined_df)\n", - " final_gdf = join_perf_acq_gdfs(perf_df, acq_gdf)\n", - " del perf_df\n", - " del acq_gdf\n", - " final_gdf = last_mile_cleaning(final_gdf)\n", - " return final_gdf\n", - "\n", - "\n", - "def gpu_load_performance_csv(performance_path, **kwargs):\n", - " \"\"\" \n", - " Loads performance data\n", - "\n", - " Returns\n", - " -------\n", - " GPU DataFrame\n", - " \"\"\"\n", - "\n", - " cols = [\n", - " \"loan_id\",\n", - " \"monthly_reporting_period\",\n", - " \"servicer\",\n", - " \"interest_rate\",\n", - " \"current_actual_upb\",\n", - " \"loan_age\",\n", - " \"remaining_months_to_legal_maturity\",\n", - " \"adj_remaining_months_to_maturity\",\n", - " \"maturity_date\",\n", - " \"msa\",\n", - " \"current_loan_delinquency_status\",\n", - " \"mod_flag\",\n", - " \"zero_balance_code\",\n", - " \"zero_balance_effective_date\",\n", - " \"last_paid_installment_date\",\n", - " \"foreclosed_after\",\n", - " \"disposition_date\",\n", - " \"foreclosure_costs\",\n", - " \"prop_preservation_and_repair_costs\",\n", - " \"asset_recovery_costs\",\n", - " \"misc_holding_expenses\",\n", - " \"holding_taxes\",\n", - " \"net_sale_proceeds\",\n", - " \"credit_enhancement_proceeds\",\n", - " \"repurchase_make_whole_proceeds\",\n", - " \"other_foreclosure_proceeds\",\n", - " \"non_interest_bearing_upb\",\n", - " \"principal_forgiveness_upb\",\n", - " \"repurchase_make_whole_proceeds_flag\",\n", - " \"foreclosure_principal_write_off_amount\",\n", - " \"servicing_activity_indicator\",\n", - " ]\n", - "\n", - " dtypes = OrderedDict(\n", - " [\n", - " (\"loan_id\", \"int64\"),\n", - " (\"monthly_reporting_period\", \"date\"),\n", - " (\"servicer\", \"str\"),\n", - " (\"interest_rate\", \"float64\"),\n", - " (\"current_actual_upb\", \"float64\"),\n", - " (\"loan_age\", \"float64\"),\n", - " (\"remaining_months_to_legal_maturity\", \"float64\"),\n", - " (\"adj_remaining_months_to_maturity\", \"float64\"),\n", - " (\"maturity_date\", \"date\"),\n", - " (\"msa\", \"float64\"),\n", - " (\"current_loan_delinquency_status\", \"int32\"),\n", - " (\"mod_flag\", \"str\"),\n", - " (\"zero_balance_code\", \"str\"),\n", - " (\"zero_balance_effective_date\", \"date\"),\n", - " (\"last_paid_installment_date\", \"date\"),\n", - " (\"foreclosed_after\", \"date\"),\n", - " (\"disposition_date\", \"date\"),\n", - " (\"foreclosure_costs\", \"float64\"),\n", - " (\"prop_preservation_and_repair_costs\", \"float64\"),\n", - " (\"asset_recovery_costs\", \"float64\"),\n", - " (\"misc_holding_expenses\", \"float64\"),\n", - " (\"holding_taxes\", \"float64\"),\n", - " (\"net_sale_proceeds\", \"float64\"),\n", - " (\"credit_enhancement_proceeds\", \"float64\"),\n", - " (\"repurchase_make_whole_proceeds\", \"float64\"),\n", - " (\"other_foreclosure_proceeds\", \"float64\"),\n", - " (\"non_interest_bearing_upb\", \"float64\"),\n", - " (\"principal_forgiveness_upb\", \"float64\"),\n", - " (\"repurchase_make_whole_proceeds_flag\", \"str\"),\n", - " (\"foreclosure_principal_write_off_amount\", \"float64\"),\n", - " (\"servicing_activity_indicator\", \"str\"),\n", - " ]\n", - " )\n", - "\n", - " return cudf.read_csv(\n", - " performance_path,\n", - " names=cols,\n", - " delimiter=\"|\",\n", - " dtype=list(dtypes.values()),\n", - " skiprows=1,\n", - " )\n", - "\n", - "\n", - "def gpu_load_acquisition_csv(acquisition_path, **kwargs):\n", - " \"\"\" \n", - " Loads acquisition data\n", - "\n", - " Returns\n", - " -------\n", - " GPU DataFrame\n", - " \"\"\"\n", - "\n", - " cols = [\n", - " \"loan_id\",\n", - " \"orig_channel\",\n", - " \"seller_name\",\n", - " \"orig_interest_rate\",\n", - " \"orig_upb\",\n", - " \"orig_loan_term\",\n", - " \"orig_date\",\n", - " \"first_pay_date\",\n", - " \"orig_ltv\",\n", - " \"orig_cltv\",\n", - " \"num_borrowers\",\n", - " \"dti\",\n", - " \"borrower_credit_score\",\n", - " \"first_home_buyer\",\n", - " \"loan_purpose\",\n", - " \"property_type\",\n", - " \"num_units\",\n", - " \"occupancy_status\",\n", - " \"property_state\",\n", - " \"zip\",\n", - " \"mortgage_insurance_percent\",\n", - " \"product_type\",\n", - " \"coborrow_credit_score\",\n", - " \"mortgage_insurance_type\",\n", - " \"relocation_mortgage_indicator\",\n", - " ]\n", - "\n", - " dtypes = OrderedDict(\n", - " [\n", - " (\"loan_id\", \"int64\"),\n", - " (\"orig_channel\", \"str\"),\n", - " (\"seller_name\", \"str\"),\n", - " (\"orig_interest_rate\", \"float64\"),\n", - " (\"orig_upb\", \"int64\"),\n", - " (\"orig_loan_term\", \"int64\"),\n", - " (\"orig_date\", \"date\"),\n", - " (\"first_pay_date\", \"date\"),\n", - " (\"orig_ltv\", \"float64\"),\n", - " (\"orig_cltv\", \"float64\"),\n", - " (\"num_borrowers\", \"float64\"),\n", - " (\"dti\", \"float64\"),\n", - " (\"borrower_credit_score\", \"float64\"),\n", - " (\"first_home_buyer\", \"str\"),\n", - " (\"loan_purpose\", \"str\"),\n", - " (\"property_type\", \"str\"),\n", - " (\"num_units\", \"int64\"),\n", - " (\"occupancy_status\", \"str\"),\n", - " (\"property_state\", \"str\"),\n", - " (\"zip\", \"int64\"),\n", - " (\"mortgage_insurance_percent\", \"float64\"),\n", - " (\"product_type\", \"str\"),\n", - " (\"coborrow_credit_score\", \"float64\"),\n", - " (\"mortgage_insurance_type\", \"float64\"),\n", - " (\"relocation_mortgage_indicator\", \"str\"),\n", - " ]\n", - " )\n", - "\n", - " return cudf.read_csv(\n", - " acquisition_path,\n", - " names=cols,\n", - " delimiter=\"|\",\n", - " dtype=list(dtypes.values()),\n", - " skiprows=1,\n", - " )\n", - "\n", - "\n", - "def gpu_load_names(col_names_path=\"\", **kwargs):\n", - " \"\"\" \n", - " Loads names used for renaming the banks\n", - "\n", - " Returns\n", - " -------\n", - " GPU DataFrame\n", - " \"\"\"\n", - "\n", - " cols = [\"seller_name\", \"new\"]\n", - "\n", - " dtypes = OrderedDict([(\"seller_name\", \"str\"), (\"new\", \"str\"),])\n", - "\n", - " return cudf.read_csv(\n", - " col_names_path,\n", - " names=cols,\n", - " delimiter=\"|\",\n", - " dtype=list(dtypes.values()),\n", - " skiprows=1,\n", - " )\n", - "\n", - "\n", - "def hash_df_string_columns(gdf):\n", - " \"\"\"\n", - " Hash all string columns in a cudf dataframe\n", - "\n", - " Returns\n", - " -------\n", - " Dataframe with all string columns replaced by hashed values for the strings\n", - " \"\"\"\n", - " for col in gdf.columns:\n", - " if cudf.utils.dtypes.is_string_dtype(gdf[col]):\n", - " gdf[col] = gdf[col].hash_values()\n", - " return gdf\n", - "\n", - "\n", - "def create_ever_features(gdf, **kwargs):\n", - " \"\"\"\n", - " Creates features denoting whether a loan_id has ever been delinquent\n", - " for over 30, 90 and 180 days.\n", - " \"\"\"\n", - " everdf = gdf[[\"loan_id\", \"current_loan_delinquency_status\"]]\n", - " everdf = everdf.groupby(\"loan_id\", method=\"hash\", as_index=False).max()\n", - " del gdf\n", - " everdf[\"ever_30\"] = (everdf[\"current_loan_delinquency_status\"] >= 1).astype(\"int8\")\n", - " everdf[\"ever_90\"] = (everdf[\"current_loan_delinquency_status\"] >= 3).astype(\"int8\")\n", - " everdf[\"ever_180\"] = (everdf[\"current_loan_delinquency_status\"] >= 6).astype(\"int8\")\n", - " everdf.drop_column(\"current_loan_delinquency_status\")\n", - " return everdf\n", - "\n", - "\n", - "def create_delinq_features(gdf, **kwargs):\n", - " \"\"\"\n", - " Computes features denoting the earliest reported date when a loan_id\n", - " became delinquent for more than 30, 90 and 180 days.\n", - " \"\"\"\n", - " delinq_gdf = gdf[\n", - " [\"loan_id\", \"monthly_reporting_period\", \"current_loan_delinquency_status\",]\n", - " ]\n", - " del gdf\n", - " delinq_30 = (\n", - " delinq_gdf.query(\"current_loan_delinquency_status >= 1\")[\n", - " [\"loan_id\", \"monthly_reporting_period\"]\n", - " ]\n", - " .groupby(\"loan_id\", method=\"hash\", as_index=False)\n", - " .min()\n", - " )\n", - " delinq_30[\"delinquency_30\"] = delinq_30[\"monthly_reporting_period\"]\n", - " delinq_30.drop_column(\"monthly_reporting_period\")\n", - " delinq_90 = (\n", - " delinq_gdf.query(\"current_loan_delinquency_status >= 3\")[\n", - " [\"loan_id\", \"monthly_reporting_period\"]\n", - " ]\n", - " .groupby(\"loan_id\", method=\"hash\", as_index=False)\n", - " .min()\n", - " )\n", - " delinq_90[\"delinquency_90\"] = delinq_90[\"monthly_reporting_period\"]\n", - " delinq_90.drop_column(\"monthly_reporting_period\")\n", - " delinq_180 = (\n", - " delinq_gdf.query(\"current_loan_delinquency_status >= 6\")[\n", - " [\"loan_id\", \"monthly_reporting_period\"]\n", - " ]\n", - " .groupby(\"loan_id\", method=\"hash\", as_index=False)\n", - " .min()\n", - " )\n", - " delinq_180[\"delinquency_180\"] = delinq_180[\"monthly_reporting_period\"]\n", - " delinq_180.drop_column(\"monthly_reporting_period\")\n", - " del delinq_gdf\n", - " delinq_merge = delinq_30.merge(delinq_90, how=\"left\", on=[\"loan_id\"], type=\"hash\")\n", - " delinq_merge = delinq_merge.merge(\n", - " delinq_180, how=\"left\", on=[\"loan_id\"], type=\"hash\"\n", - " )\n", - " del delinq_30\n", - " del delinq_90\n", - " del delinq_180\n", - " return delinq_merge\n", - "\n", - "\n", - "def join_ever_delinq_features(everdf_tmp, delinq_merge, **kwargs):\n", - " \"\"\"\n", - " Merges the ever and delinq features table on loan_id\n", - " \"\"\"\n", - " everdf = everdf_tmp.merge(delinq_merge, on=[\"loan_id\"], how=\"left\", type=\"hash\")\n", - " del everdf_tmp\n", - " del delinq_merge\n", - " return everdf\n", - "\n", - "\n", - "def create_joined_df(gdf, everdf, **kwargs):\n", - " \"\"\"\n", - " Join the performance table with the features table. (delinq and ever features)\n", - " \"\"\"\n", - " test = gdf[\n", - " [\n", - " \"loan_id\",\n", - " \"monthly_reporting_period\",\n", - " \"current_loan_delinquency_status\",\n", - " \"current_actual_upb\",\n", - " ]\n", - " ]\n", - " del gdf\n", - " test[\"timestamp\"] = test[\"monthly_reporting_period\"]\n", - " test.drop_column(\"monthly_reporting_period\")\n", - " test[\"timestamp_month\"] = test[\"timestamp\"].dt.month\n", - " test[\"timestamp_year\"] = test[\"timestamp\"].dt.year\n", - " test[\"delinquency_12\"] = test[\"current_loan_delinquency_status\"]\n", - " test.drop_column(\"current_loan_delinquency_status\")\n", - " test[\"upb_12\"] = test[\"current_actual_upb\"]\n", - " test.drop_column(\"current_actual_upb\")\n", - "\n", - " joined_df = test.merge(everdf, how=\"left\", on=[\"loan_id\"], type=\"hash\")\n", - " del everdf\n", - " del test\n", - "\n", - " joined_df[\"timestamp_year\"] = joined_df[\"timestamp_year\"].astype(\"int32\")\n", - " joined_df[\"timestamp_month\"] = joined_df[\"timestamp_month\"].astype(\"int32\")\n", - "\n", - " return joined_df\n", - "\n", - "\n", - "def create_12_mon_features(joined_df, **kwargs):\n", - " \"\"\"\n", - " For every loan_id in a 12 month window compute a feature denoting\n", - " whether it has been delinquent for over 3 months or had an unpaid principal balance.\n", - " The 12 month window moves by a month to span across all months of the year.\n", - " \n", - " The computations windows for each loan_id follows the pattern below\n", - " Window 1: Jan 2000 - Jan 2001, Jan 2001 - Jan 2002\n", - " Window 2: Feb 2000- Feb 2001, Feb 2001 - Feb 2002\n", - " \"\"\"\n", - " testdfs = []\n", - " n_months = 12\n", - " for y in range(1, n_months + 1):\n", - " tmpdf = joined_df[\n", - " [\"loan_id\", \"timestamp_year\", \"timestamp_month\", \"delinquency_12\", \"upb_12\"]\n", - " ]\n", - " tmpdf[\"josh_months\"] = tmpdf[\"timestamp_year\"] * 12 + tmpdf[\"timestamp_month\"]\n", - " tmpdf[\"josh_mody_n\"] = (\n", - " (tmpdf[\"josh_months\"].astype(\"float64\") - 24000 - y) / 12\n", - " ).floor()\n", - " tmpdf = tmpdf.groupby(\n", - " [\"loan_id\", \"josh_mody_n\"], method=\"hash\", as_index=False\n", - " ).agg({\"delinquency_12\": \"max\", \"upb_12\": \"min\"})\n", - " tmpdf[\"delinquency_12\"] = (tmpdf[\"delinquency_12\"] > 3).astype(\"int32\")\n", - " tmpdf[\"delinquency_12\"] += (tmpdf[\"upb_12\"] == 0).astype(\"int32\")\n", - " tmpdf[\"timestamp_year\"] = (\n", - " (((tmpdf[\"josh_mody_n\"] * n_months) + 24000 + (y - 1)) / 12)\n", - " .floor()\n", - " .astype(\"int16\")\n", - " )\n", - " tmpdf[\"timestamp_month\"] = np.int8(y)\n", - " tmpdf.drop_column(\"josh_mody_n\")\n", - " testdfs.append(tmpdf)\n", - " del tmpdf\n", - " del joined_df\n", - "\n", - " return cudf.concat(testdfs)\n", - "\n", - "\n", - "def combine_joined_12_mon(joined_df, testdf, **kwargs):\n", - " \"\"\"\n", - " Combines the 12_mon features table with the ever_delinq features tables\n", - " \"\"\"\n", - " joined_df.drop_column(\"delinquency_12\")\n", - " joined_df.drop_column(\"upb_12\")\n", - " joined_df[\"timestamp_year\"] = joined_df[\"timestamp_year\"].astype(\"int16\")\n", - " joined_df[\"timestamp_month\"] = joined_df[\"timestamp_month\"].astype(\"int8\")\n", - " return joined_df.merge(\n", - " testdf,\n", - " how=\"left\",\n", - " on=[\"loan_id\", \"timestamp_year\", \"timestamp_month\"],\n", - " type=\"hash\",\n", - " )\n", - "\n", - "\n", - "def final_performance_delinquency(gdf, joined_df, **kwargs):\n", - " \"\"\"\n", - " Combines the grouped table with all features with the original Performance table\n", - " \"\"\"\n", - " merged = gdf\n", - " joined_df[\"timestamp_month\"] = joined_df[\"timestamp_month\"].astype(\"int8\")\n", - " joined_df[\"timestamp_year\"] = joined_df[\"timestamp_year\"].astype(\"int16\")\n", - " merged[\"timestamp_month\"] = merged[\"monthly_reporting_period\"].dt.month\n", - " merged[\"timestamp_month\"] = merged[\"timestamp_month\"].astype(\"int8\")\n", - " merged[\"timestamp_year\"] = merged[\"monthly_reporting_period\"].dt.year\n", - " merged[\"timestamp_year\"] = merged[\"timestamp_year\"].astype(\"int16\")\n", - " merged = merged.merge(\n", - " joined_df,\n", - " how=\"left\",\n", - " on=[\"loan_id\", \"timestamp_year\", \"timestamp_month\"],\n", - " type=\"hash\",\n", - " )\n", - " merged.drop_column(\"timestamp_year\")\n", - " merged.drop_column(\"timestamp_month\")\n", - " return merged\n", - "\n", - "\n", - "def join_perf_acq_gdfs(perf, acq, **kwargs):\n", - " \"\"\"\n", - " Combines the Acquisition and Performance tables on loan_id\n", - " \"\"\"\n", - " return perf.merge(acq, how=\"left\", on=[\"loan_id\"], type=\"hash\")\n", - "\n", - "\n", - "def last_mile_cleaning(df, **kwargs):\n", - " \"\"\"\n", - " Final cleanup to drop columns not passed to the XGBoost model for training.\n", - " Convert all string/categorical features to numeric features.\n", - "\n", - " Returns\n", - " ------\n", - " Arrow Table (Host memory)\n", - " \"\"\"\n", - " drop_list = [\n", - " \"loan_id\",\n", - " \"orig_date\",\n", - " \"first_pay_date\",\n", - " \"seller_name\",\n", - " \"monthly_reporting_period\",\n", - " \"last_paid_installment_date\",\n", - " \"maturity_date\",\n", - " \"ever_30\",\n", - " \"ever_90\",\n", - " \"ever_180\",\n", - " \"delinquency_30\",\n", - " \"delinquency_90\",\n", - " \"delinquency_180\",\n", - " \"upb_12\",\n", - " \"zero_balance_effective_date\",\n", - " \"foreclosed_after\",\n", - " \"disposition_date\",\n", - " \"timestamp\",\n", - " ]\n", - " for column in drop_list:\n", - " df.drop_column(column)\n", - " for col, dtype in df.dtypes.iteritems():\n", - " if str(dtype) == \"category\":\n", - " df[col] = df[col].cat.codes\n", - " df[col] = df[col].astype(\"float32\")\n", - " df[\"delinquency_12\"] = df[\"delinquency_12\"] > 0\n", - " df[\"delinquency_12\"] = df[\"delinquency_12\"].fillna(False).astype(\"int32\")\n", - " for column in df.columns:\n", - " df[column] = df[column].fillna(np.dtype(str(df[column].dtype)).type(-1))\n", - " return df.to_arrow(preserve_index=False)\n", - "\n", - "\n", - "def prepare_data(arrow_input):\n", - " \"\"\"\n", - " Convert a list of arrow tables to a single GPU dataframe\n", - " \n", - " Returns\n", - " -------\n", - " GPU Dataframe\n", - " \"\"\"\n", - " gpu_dataframes = []\n", - " for arrow_df in arrow_input:\n", - " gpu_dataframes.append(cudf.DataFrame.from_arrow(arrow_df))\n", - "\n", - " concat_df = cudf.concat(gpu_dataframes)\n", - " del gpu_dataframes\n", - " return concat_df\n", - "\n", - "\n", - "def xgb_training(arrow_dfs, client=None):\n", - " \"\"\"\n", - " Convert the post ETL data to Dmatrix format for XGBoost training input.\n", - " Train the XGBoost model.\n", - " \n", - " Returns\n", - " -------\n", - " The trained model and time taken for preparing, training data.\n", - " \"\"\"\n", - " dxgb_gpu_params = {\n", - " \"max_depth\": 8,\n", - " \"max_leaves\": 2 ** 8,\n", - " \"alpha\": 0.9,\n", - " \"eta\": 0.1,\n", - " \"gamma\": 0.1,\n", - " \"learning_rate\": 0.1,\n", - " \"subsample\": 1,\n", - " \"reg_lambda\": 1,\n", - " \"scale_pos_weight\": 2,\n", - " \"min_child_weight\": 30,\n", - " \"tree_method\": \"gpu_hist\",\n", - " \"objective\": \"binary:logistic\",\n", - " \"grow_policy\": \"lossguide\",\n", - " }\n", - " NUM_BOOST_ROUND = 100\n", - "\n", - " part_count = len(arrow_dfs)\n", - " print(f\"Preparing data for training with part count: {part_count}\")\n", - " t1 = time.time()\n", - " tmp_map = [\n", - " (arrow_df, list(client.who_has(arrow_df).values())[0][0])\n", - " for arrow_df in arrow_dfs\n", - " ]\n", - " new_map = OrderedDict()\n", - " for key, value in tmp_map:\n", - " if value not in new_map:\n", - " new_map[value] = [key]\n", - " else:\n", - " new_map[value].append(key)\n", - "\n", - " del (tmp_map, key, value)\n", - "\n", - " train_x_y = []\n", - " for list_delayed in new_map.values():\n", - " train_x_y.append(delayed(prepare_data)(list_delayed))\n", - "\n", - " del (new_map, list_delayed)\n", - "\n", - " worker_list = OrderedDict()\n", - " for task in train_x_y:\n", - " worker_list[task] = list(client.who_has(task).values())[0][0]\n", - "\n", - " del task\n", - "\n", - " persisted_train_x_y = []\n", - " for task in train_x_y:\n", - " persisted_train_x_y.append(\n", - " client.persist(\n", - " collections=task,\n", - " workers=worker_list[task],\n", - " optimize_graph=False,\n", - " fifo_timeout=\"0ms\",\n", - " )\n", - " )\n", - "\n", - " del (arrow_dfs, train_x_y, worker_list, task)\n", - "\n", - " wait(persisted_train_x_y)\n", - " persisted_train_x_y = dask_cudf.from_delayed(persisted_train_x_y)\n", - "\n", - " dmat = xgb.dask.DaskDMatrix(\n", - " client=client,\n", - " data=persisted_train_x_y[\n", - " persisted_train_x_y.columns.difference([\"delinquency_12\"])\n", - " ],\n", - " label=persisted_train_x_y[[\"delinquency_12\"]],\n", - " missing=-1,\n", - " )\n", - "\n", - " del persisted_train_x_y\n", - " gc.collect()\n", - "\n", - " dmat_time = time.time() - t1\n", - " print(\"Prepared data for XGB training\")\n", - "\n", - " print(\"Training model\")\n", - " t1 = time.time()\n", - "\n", - " print(\"XGB training for part_count:{}\".format(part_count))\n", - " bst = xgb.dask.train(\n", - " client, dxgb_gpu_params, dmat, num_boost_round=NUM_BOOST_ROUND,\n", - " )\n", - "\n", - " train_time = time.time() - t1\n", - " print(\"Training complete\")\n", - " return (bst, dmat_time, train_time)\n", - "\n", - "\n", - "def run_etl(start_year, end_year, data_dir, client):\n", - " \"\"\"\n", - " Driver function for the ETL step\n", - " \n", - " Iterates through all files in `data_dir` between `start_year` \n", - " and `end_year` and calls the ETL function for each file.\n", - " \n", - " Returns\n", - " -------\n", - " Dask futures to arrow tables containing post ETL data for all processed files.\n", - " \"\"\"\n", - " print(\"Starting ETL\")\n", - " t1 = time.time()\n", - "\n", - " perf_data_path = data_dir + \"perf/\"\n", - "\n", - " gpu_dfs = []\n", - " quarter = 1\n", - " year = start_year\n", - " count = 0\n", - " while year <= end_year:\n", - " for file in glob(\n", - " os.path.join(\n", - " perf_data_path + \"/Performance_\" + str(year) + \"Q\" + str(quarter) + \"*\"\n", - " )\n", - " ):\n", - " gpu_dfs.append(\n", - " process_quarter_gpu(\n", - " year=year, quarter=quarter, perf_file=file, client=client\n", - " )\n", - " )\n", - " count += 1\n", - " quarter += 1\n", - " if quarter == 5:\n", - " year += 1\n", - " quarter = 1\n", - " print(\"ETL for start_year:{} and end_year:{}\".format(start_year, end_year))\n", - " wait(gpu_dfs)\n", - "\n", - " etl_time = time.time() - t1\n", - "\n", - " print(\"ETL done!\")\n", - " return (gpu_dfs, etl_time)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### The cell below runs the workflow end to end including the ETL and XGBoost model training step\n", - "\n", - "**Notes** \n", - "\n", - "The mortgage dataset for years 2000-2016 is about 200GB of data. There are two key factors that determine the `start_year`, `end_year`, `part_count` and `use_1GB_splits` params used in the notebook for processing this data. \n", - "\n", - "_Total GPU memory_: Determines the amount of data that can be trained using XGBoost (`part_count`). The ETL is performed on one part file at a time (per GPU) whereas XGBoost training requires all the training data to be loaded in GPU memory.\n", - "\n", - "_Memory per GPU_: Determines the variation of the dataset to use (1GB vs 2GB splits). The 2GB splits version of the data results in larger partitions being processed per task resulting in better utilization of the GPU, with the tradeoff of increased memory usage that can be handled by GPUs cards with greater than `32GB` of memory.\n", - "\n", - "The `determine_dataset` utility used below automatically queries these two parameters based on the machine and decides suitable values for `part_count` and consequently `start_year`, `end_year`(to ensure ETL is performed on enough parts for training), as well as the variation of the dataset (1GB split part files vs 2GB split part files) that should work on such systems.\n", - "\n", - "If you'd like to use existing data that has already been downloaded to your own location, or manually adjust these parameters based on the amount of data needed for processing, you can change these parameters provided in the notebook, by assigning new values to the variables or setting enivronment variables for `MORTGAGE_DATA_DIR` and `part_count`. You can visit the [RAPIDS Datasets Homepage](https://docs.rapids.ai/datasets/mortgage-data) for more information on downloading the data manually." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading data for year 2000\n", - "Download complete\n", - "Decompressing and extracting data\n", - "Done extracting year 2000\n", - "Downloading data for year 2001\n", - "Download complete\n", - "Decompressing and extracting data\n", - "Done extracting year 2001\n", - "Downloading data for year 2002\n", - "Download complete\n", - "Decompressing and extracting data\n", - "Done extracting year 2002\n", - "Downloading data for year 2003\n", - "Download complete\n", - "Decompressing and extracting data\n", - "Done extracting year 2003\n", - "Downloading data for year 2004\n", - "Download complete\n", - "Decompressing and extracting data\n", - "Done extracting year 2004\n", - "Starting ETL\n", - "ETL for start_year:2000 and end_year:2004\n", - "ETL done!\n", - "Preparing data for training with part count: 12\n", - "Prepared data for XGB training\n", - "Training model\n", - "XGB training for part_count:12\n", - "Training complete\n", - "\n", - "Time taken to run ETL from 2000 to 2004 (108 parts) was 68.7227 s\n", - "Time taken to prepare 12 parts for XGB training 3.3915 s\n", - "Time taken to train XGB model 87.521 s\n", - "Total E2E time: 159.6352 s\n" - ] - } - ], - "source": [ - "if __name__ == \"__main__\":\n", - "\n", - " import cudf\n", - " import xgboost as xgb\n", - " import dask_cudf\n", - "\n", - " cmd = \"hostname --all-ip-addresses\"\n", - " process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)\n", - " output, error = process.communicate()\n", - " IPADDR = str(output.decode()).split()[0]\n", - "\n", - " cluster = LocalCUDACluster(ip=IPADDR)\n", - " client = Client(cluster)\n", - "\n", - " data_dir = os.environ.get(\"MORTGAGE_DATA_DIR\", \"\") # Default to current working directory\n", - " res = client.run(memory_info)\n", - " # Total GPU memory on the system\n", - " total_mem = sum(res.values()) \n", - " # Memory of a single GPU on the machine\n", - " # If the machine has multiple GPUs of different sizes, this is the size of the smallest GPU\n", - " min_mem = min(res.values()) \n", - " \n", - " # Start year for processing mortgage data\n", - " start_year = None\n", - " # End year for processing mortgage data\n", - " end_year = None\n", - " # The number of part files to train against. \n", - " # If not provided, default to auto selection based on GPU memory available on the system\n", - " part_count = os.environ.get(\"part_count\")\n", - "\n", - " start_year, end_year, part_count, use_1GB_splits = determine_dataset(\n", - " total_mem=total_mem, min_mem=min_mem, part_count=part_count\n", - " )\n", - "\n", - " # Download data based on these parameters\n", - " # The 2GB split mortgage performance files are used if the system has 32GB GPUs.\n", - " # On machines with GPUs less than 32GB we use the 1GB split files (to help reduce memory load)\n", - " get_data(data_dir, start_year, end_year, use_1GB_splits)\n", - "\n", - " # Initialize a GPU pool allocating 90% of GPU memory for each worker\n", - " client.run(rmm.reinitialize, pool_allocator=True, initial_pool_size=0.9 * min_mem)\n", - " etl_result, etl_time = run_etl(start_year, end_year, data_dir, client)\n", - "\n", - " # Clear the existing RMM pool post-ETL to make space for GPU accelerated XGBoost\n", - " # This makes space for XGBoost to operate since it doesn't have visibility into the cuDF memory pool\n", - " client.run(rmm.reinitialize, pool_allocator=False)\n", - "\n", - " total_file_count = len(etl_result)\n", - " etl_result = etl_result[:part_count] # Select subset for training\n", - " model, dmat_time, train_time = xgb_training(etl_result, client)\n", - "\n", - " print(\n", - " f\"\\nTime taken to run ETL from {start_year} to {end_year}\"\n", - " f\" ({total_file_count} parts) was {round(etl_time,4)} s\"\n", - " )\n", - " print(\n", - " f\"Time taken to prepare {len(etl_result)} parts\"\n", - " f\" for XGB training {round(dmat_time,4)} s\"\n", - " )\n", - " print(f\"Time taken to train XGB model {round(train_time, 4)} s\")\n", - " print(f\"Total E2E time: {round(etl_time+dmat_time+train_time, 4)} s\")\n", - " client.close()\n", - " cluster.close()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "rapids-14-may6", - "language": "python", - "name": "rapids-14-may6" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/E2E/mortgage/utils/Data_Spec.json b/intermediate_notebooks/E2E/mortgage/utils/Data_Spec.json deleted file mode 100644 index d69e0463..00000000 --- a/intermediate_notebooks/E2E/mortgage/utils/Data_Spec.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "SpecInfo": - [ - { - "Total_Mem" : 511e9, - "Start_Year" : 2000, - "End_Year" : 2016, - "Part_Count" : [48, 96] - }, - - { - "Total_Mem" : 255e9, - "Start_Year" : 2000, - "End_Year" : 2016, - "Part_Count" : [24, 48] - }, - - { - "Total_Mem" : 127e9, - "Start_Year" : 2000, - "End_Year" : 2007, - "Part_Count" : [16, 24] - }, - - { - "Total_Mem" : 47e9, - "Start_Year" : 2000, - "End_Year" : 2004, - "Part_Count" : [8, 12] - }, - - { - "Total_Mem" : 15e9, - "Start_Year" : 2000, - "End_Year" : 2000, - "Part_Count" : [2, 3] - } - - ] -} \ No newline at end of file diff --git a/intermediate_notebooks/E2E/mortgage/utils/utils.py b/intermediate_notebooks/E2E/mortgage/utils/utils.py deleted file mode 100644 index a0745185..00000000 --- a/intermediate_notebooks/E2E/mortgage/utils/utils.py +++ /dev/null @@ -1,127 +0,0 @@ -from packaging import version -import json -import glob -import multiprocessing -import pynvml -import os -import tarfile -import urllib - -# Global variables - -# Links to mortgage data files -MORTGAGE_YEARLY_1GB_SPLITS_URL = "https://rapidsai-data.s3.us-east-2.amazonaws.com/notebook-mortgage-data/mortgage_yearly/" -MORTGAGE_YEARLY_2GB_SPLITS_URL = "https://rapidsai-data.s3.us-east-2.amazonaws.com/notebook-mortgage-data/mortgage_yearly_2gb/" - - -def get_data(data_dir, start_year, end_year, use_1GB_splits): - """ - Utility to download and extract mortgage data to specied data_dir. - Only specific years of data between `start_year` and `end_year` will be downloaded - to the specified directory - """ - if use_1GB_splits: - data_url = MORTGAGE_YEARLY_1GB_SPLITS_URL - else: - data_url = MORTGAGE_YEARLY_2GB_SPLITS_URL - for year in range(start_year, end_year + 1): - if not os.path.isfile(data_dir + "acq/Acquisition_" + str(year) + "Q4.txt"): - print(f"Downloading data for year {year}") - filename = "mortgage_" + str(year) - filename += "_1gb.tgz" if use_1GB_splits else "_2GB.tgz" - urllib.request.urlretrieve(data_url + filename, data_dir + filename) - print(f"Download complete") - print(f"Decompressing and extracting data") - - tar = tarfile.open(data_dir + filename, mode="r:gz") - tar.extractall(path=data_dir) - tar.close() - print(f"Done extracting year {year}") - - if not os.path.isfile(data_dir + "names.csv"): - urllib.request.urlretrieve(data_url + "names.csv", data_dir + "names.csv") - - -def _read_data_spec(filename=os.path.dirname(__file__) + "/Data_Spec.json"): - """ - Read the Data_Spec json - """ - with open(filename) as f: - data_spec = json.load(f) - - try: - spec_list = data_spec["SpecInfo"] - except KeyError: - raise ValueError(f"SpecInfo missing in Data spec file: {filename}") - return spec_list - - -def determine_dataset(total_mem, min_mem, part_count=None): - """ - Determine params and dataset to use - based on Data spec sheet and available memory - """ - start_year = None # start year for etl proessing - end_year = None # end year for etl processing (inclusive) - - use_1GB_splits = True - if min_mem >= 31.5e9: - use_1GB_splits = False - - spec_list = _read_data_spec() - # Assumption that spec_list has elements with mem_requirement - # in Descending order - - # TODO: Code duplication. Consolidate into one - if part_count: - part_count = int(part_count) - for i, spec in enumerate(spec_list): - spec_part_count = ( - spec["Part_Count"][1] if use_1GB_splits else spec["Part_Count"][0] - ) - if part_count > spec_part_count: - start_year = spec_list[i-1]["Start_Year"] if i>0 else spec["Start_Year"] - end_year = spec_list[i-1]["End_Year"] if i>0 else spec["End_Year"] - break - if not start_year: - start_year = spec_list[-1]["Start_Year"] - end_year = spec_list[-1]["End_Year"] - - else: - for spec in spec_list: - spec_part_count = ( - spec["Part_Count"][1] if use_1GB_splits else spec["Part_Count"][0] - ) - if total_mem >= spec["Total_Mem"]: - start_year = spec["Start_Year"] - end_year = spec["End_Year"] - part_count = spec_part_count - break - - return (start_year, end_year, part_count, use_1GB_splits) - - -def memory_info(): - """ - Assumes identical GPUs in a node - """ - pynvml.nvmlInit() - handle = pynvml.nvmlDeviceGetHandleByIndex(0) - gpu_mem = pynvml.nvmlDeviceGetMemoryInfo(handle).total - pynvml.nvmlShutdown() - return gpu_mem - - -def get_num_files(start_year, end_year, perf_dir): - """ - Get number of files to read given start_year - end_year and path to performance files - """ - count = 0 - for year in range(start_year, end_year + 1): - count += len(glob.glob(perf_dir + f"/*{year}*")) - return count - - -def get_cpu_cores(): - return multiprocessing.cpu_count() diff --git a/intermediate_notebooks/E2E/synthetic_3D/rapids_ml_workflow_demo.ipynb b/intermediate_notebooks/E2E/synthetic_3D/rapids_ml_workflow_demo.ipynb deleted file mode 100644 index ebfb40cb..00000000 --- a/intermediate_notebooks/E2E/synthetic_3D/rapids_ml_workflow_demo.ipynb +++ /dev/null @@ -1,1513 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "

RAPIDS Demo - End-To-End ML Workflow

\n", - "by Miro Enev" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> 1. Motivate rapids [ show coverage of modern data science tools ]\n", - "\n", - "> 2. Generate a synthetic dataset\n", - " * 2.1 - Split into train and test set\n", - " * 2.2 - Visualize sub-datasets\n", - "\n", - "> 3. ETL\n", - " * 3.1 - Load data [ csv read ] \n", - " * 3.2 - Transform data [ standard scaler ]\n", - "\n", - "> 4. Model Building \n", - " * 4.1 - Train CPU and GPU XGBoost classifier models \n", - " * 4.2 - Use trained models for inference\n", - " * 4.3 - Compare accuracy\n", - " * 4.4 - Visualize sample boosted trees & model predictions\n", - "\n", - "> 5. Extensions \n", - " * 5.1 - Create an ensemble with a clustering model [ DBScan ]\n", - " * 5.2 - Export data to DeepLearning Framework [ PyTorch ]\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### **Note**: for interactive 3D plots using ipyvolume, change the flag below to False \n", - "> ```useMatplotlib3DFlag``` = ~~```True```~~ ```False```" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd, numpy as np, sklearn\n", - "from sklearn import datasets\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.cluster import DBSCAN\n", - "from sklearn.metrics import confusion_matrix, accuracy_score\n", - "\n", - "import xgboost\n", - "from xgboost import plot_tree\n", - "\n", - "import cuml, cudf, numba, scipy\n", - "from numba import cuda \n", - "import time\n", - "\n", - "useMatplotlib3DFlag = True # False \n", - "if useMatplotlib3DFlag:\n", - " from mpl_toolkits.mplot3d import Axes3D\n", - "else:\n", - " import ipyvolume as ipv\n", - "\n", - "from ipywidgets import interact \n", - "import matplotlib.pyplot as plt\n", - "from fig_helpers import *\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "------\n", - "# 1. Motivation: Kaggle [2018](https://www.kaggle.com/surveys/2018) and [2017](https://www.kaggle.com/surveys/2017) Data Science Surveys\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "

RAPIDS accelerates datascience:

\n", - "
    \n", - "
  • it maps to core datascience tasks

  • \n", - "
  • covers popular methods

  • \n", - "
  • delivers on dataset sizes typically used

  • \n", - "
  • uses familiar python API

  • \n", - "
\n", - "
\n", - " \n", - "
\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7f359f435ef044c981e84c1019a2bd3d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(Dropdown(description='figure_choice', options=('activity breakdown', 'datasize', 'method…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# use the dropdown below to browse through Kaggle survey results \n", - "interact(display_selected_figure, figure_choice=['activity breakdown', 'datasize', 'methods used', 'language used']);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# 2. Generate Dataset [ X: features, y: labels ]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the size of the generated dataset -- the number of total samples is determined by this value" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "nTotalSamples = 5000000" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next we'll use sklearn.datasets to build synthetic sub-datasets of the size we specified above. We'll build three sub-datasets and combine them together and then use a trained model to see if we can determine which of sub-dataset a sample belongs to. The three sub-datasets are built using the moons, blobs, and swiss-roll generators. These sub-datasets were selected for their distinct visual features." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 1.36 s, sys: 112 ms, total: 1.47 s\n", - "Wall time: 1.47 s\n" - ] - } - ], - "source": [ - "%%time\n", - "nSamplesPerSubDataset = nTotalSamples//3\n", - "\n", - "swissRollDataset = datasets.make_swiss_roll( n_samples = nSamplesPerSubDataset, noise = .005)[0]\n", - "\n", - "moonsDataset = datasets.make_moons(n_samples = nSamplesPerSubDataset, noise = 0)[0]\n", - "moonsDataset = np.hstack( [moonsDataset, np.zeros( (moonsDataset.shape[0], 1) )] )*4\n", - "\n", - "blobsDataset = datasets.make_blobs( n_samples = nSamplesPerSubDataset, centers = 5, n_features = 3, \n", - " cluster_std = 0.25, random_state = 0)[0] + [0, 1.5, 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "X = np.vstack([blobsDataset, swissRollDataset, moonsDataset])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# generate labels for classification \n", - "blobsLabels = np.zeros(blobsDataset.shape[0])\n", - "moonsLabels = 1 * np.ones(moonsDataset.shape[0])\n", - "sRollLabels = 2 * np.ones(swissRollDataset.shape[0])\n", - "\n", - "y = np.hstack( [blobsLabels, sRollLabels, moonsLabels])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((4999998, 3), (4999998,))" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X.shape, y.shape" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.1 - Split Train (75%) and Test (25%) Data \n", - "We split our combined dataset into two portions:\n", - "* **train-set** - which we'll use to optimize our model's parameters [ train-set = randomly selected 75% of total data]\n", - "* **test-set** - which we'll use to evaluate how well our trained model performs on unseen data [ test-set = remaining 25% of data ]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size = 0.25, random_state = 0, shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(3749998, 1250000)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(X_train), len(X_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.2 - Visualize Data\n", - "We define a function for plotting using either matplotlib Axes3D [ default ] or ipyvolume for WebGL based 3D plotting -- we restrict the maximum points to plot to `maxSamplesToPlot` which has a default setting of `100000`" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def mpl_plot_data( data, colorStack = 'purple', \n", - " maxSamplesToPlot = 10000, \n", - " ax3D = False, markerScale=1):\n", - " \n", - " nSamplesToPlot = np.min( ( len(data), maxSamplesToPlot ) )\n", - " if not ax3D:ax3D = plt.figure(figsize=(12,12)).gca(projection='3d')\n", - " \n", - " if isinstance(colorStack, np.ndarray):\n", - " colorStack = colorStack[0:maxSamplesToPlot,:]\n", - " \n", - " ax3D.scatter(data[0:nSamplesToPlot,0], \n", - " data[0:nSamplesToPlot,1], \n", - " data[0:nSamplesToPlot,2], s = 20*markerScale, c=colorStack, depthshade=False)\n", - " \n", - " ax3D.view_init(elev=10, azim=95)\n", - " \n", - "def ipv_plot_data( data, colorStack = 'purple', \n", - " maxSamplesToPlot = 100000, \n", - " holdOnFlag = False, markerSize=.5):\n", - " \n", - " nSamplesToPlot = np.min( ( len(data), maxSamplesToPlot ) )\n", - " if not holdOnFlag: ipv.figure(width=600,height=600)\n", - " \n", - " if isinstance(colorStack, np.ndarray):\n", - " colorStack = colorStack[0:maxSamplesToPlot,:]\n", - "\n", - " ipv.scatter( data[0:nSamplesToPlot,0], \n", - " data[0:nSamplesToPlot,1], \n", - " data[0:nSamplesToPlot,2], size = markerSize, \n", - " marker = 'sphere', color = colorStack)\n", - " \n", - " if not holdOnFlag: ipv.show() " - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "if useMatplotlib3DFlag:\n", - " plot_data = mpl_plot_data\n", - "else:\n", - " plot_data = ipv_plot_data " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Sub-Datasets [ moons, blobs, swiss-roll ] " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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O3bs2O+GPHse37JlSxobGw/Vb2fX1/v0008/ZO8TSnKlCwDgKLdmzZqsX78+Z511VtWjdNrHPvaxjB49OmeddVa6dOmSZcuW5c4770xjY2Pmz59f9XiwO8sLAQA48tx22235yU9+klWrVuW4447LgAEDcu2112bChAmH9PEecAiILgAAgII6jK53Hc4pAAAAjjWiCwAAoCDRBQBATVuzZk3q6+tTV1eXf/3rX1WPA50mumAf5s+fn/PPPz/19fXp27dvPvOZz+TVV1+teiwAOKbccsstqa+vr3oMOGiiCzqwYMGCXHnllfnwhz+c5ubmNDU1ZcmSJWlsbMyOHTuqHq8mvPPOO7njjjvygQ98IN26dcupp56am2++ueqxADiKLF26NIsWLcqXv/zlqkeBg+bhyNCBBx98MOeff37uueeeXccaGhoyduzYvPTSSznzzDMrnK42XHvttXnqqacyffr0DBo0KKtXr86KFSuqHqsmrVmzJgMHDszmzZuzadMmr9gCHIDt27dn0qRJuf3229O7d++qx4GDJrqgA9u2bUuvXr3aHNv5DX8/j1o4JixatCjz58/P73//+wwePLjqcWrezqUxmzdvrnoUgCPG7Nmz8+9//ztf+MIX8qMf/ajqceCgWV4IHbjuuuuydOnSzJ07Nxs3bswf//jHfO1rX8vIkSNFRpI5c+Zk1KhRPhcHwNKYvT3yyCO5/PLL07dv39TX1+eCCy7IQw89VPVYQA355z//mdtuuy2zZs3yEGSOeKILOnDppZfmgQceyPXXX59evXpl4MCB2b59ex5//PGqR6sJv/71r3PGGWdk4sSJaWhoSI8ePXLFFVfYaGQPuy+NOemkk6oep2bMmjUr9fX1ueuuu7JgwYKMHDkyV111Vb773e9WPVpNWbFiRS6++OL06NEjp5xySm6//fZs37696rHgsPjqV7+aCy+8MB//+MerHgX+Z5YXQgeefvrpTJgwIV/84hczZsyY/P3vf8+MGTMybty4/PznP0+XLl2qHrFSr7/+eh544IGce+65mT9/fjZt2pSpU6dm3LhxefbZZ1NX1+FD2Y8plsa076c//WmbCB01alReffXVzJo1K5MmTapwstqxbt26jB49OoMHD05zc3NWrlyZKVOmZMeOHfnGN75R9XhQ1AsvvJA5c+ZkyZIlWb9+fZJky5YtSZINGzakS5cu6d69e5UjQqeILujAlClTcvnll6epqWnXsfPOOy+DBg1Kc3Nzrrjiigqnq15ra2taW1vT3NycE088MUny3ve+N8OHD8/ixYtz8cUXVzxh9XYujZk3b56lMXto76rfkCFD0tzcXME0tWn27NnZunVrHn/88TQ0NOSjH/1oNm7cmBkzZmTq1KlpaGioesSatHHjxtx555154okn8tJLL6V79+4ZOnRompqacsYZZ1Q9Hgfo5ZdfzrZt2zJ06NC9zp166qn57Gc/m/vvv7+CyeDgWF4IHWhpacl5553X5tjAgQPTvXv3rFy5sqKpakefPn1yzjnn7AquJBk2bFi6du1qB8P/Y2lM5yxfvtw9grt54okncskll7SJq/Hjx2fr1q355S9/WeFkte2vf/1rvv/97+eSSy7Jo48+mvvuuy+vvfZaLrzwwqxevbrq8WrOt7/97dTV1eWTn/xk1aO0MWzYsDz99NNtfkybNi1JsnDhwtxyyy0VTwid40oXdOC0007Lb3/72zbHXnzxxWzdujX9+/evZqgacuaZZ+att97a63hra2ve9S6v51ga0zlPPfVUmpubM2fOnKpHqRktLS0ZNWpUm2P9+vVLjx490tLSkssuu6yiyWrb6aefnpUrV7b5+3XRRRelX79+mTNnTqZPn17hdLVl7dq1mTlzZk4++eSqR9nLSSedlBEjRrQ5tmrVqiT//Xp67AZHGtEFHZgwYUJuvvnmnHLKKbvu6Zo5c2b69+/vykWSxsbGTJ8+PW+88caupWJLlizJtm3bcu6551Y8XfUsjTlwq1atylVXXZWxY8fmmmuuqXqcmrFu3bp2n0vUp0+frFu3roKJjgzvfve79zp2wgkn5LTTTsvatWsrmKh2feUrX8mll17qCiAcBqILOjB58uR07do19957b2bPnp3evXtn2LBh+eY3v9nuP+rHmuuvvz533313Lrvsstx6663ZtGlTpk2bltGjR2fYsGFVj1e5nUtjdrdo0aI0NTVl4cKFGTBgQEWT1ZY333wzY8aMSb9+/TJv3ryqx6k57W1I09raaqOaTvrHP/6RV155JTfeeGPVo9SM5557Lg8//HBaWlry6U9/uupxDsg111zjhRmOWKILOlBXV5cbbrghN9xwQ9Wj1KSGhoYsXrw4kydPzvjx49O1a9eMHTs2d911V9Wj1QRLY/Zvy5YtaWxszNtvv52f/exnXszYQ58+fXYtTd3dhg0b2r0CRsemTJmS+vr6jB8/vupRakJra2smTpyYqVOnpm/fvlWPA8cE0QUctPe///1ZuHBh1WNwBHrnnXfyqU99Ki+//HKWLVuW97znPVWPVHMGDRqUlpaWNsdWr16dzZs3Z9CgQRVNVY0NGzbktdde2+/btfd5uffeezNv3rw89thjbTb+OZb94Ac/yOuvv+6B7XAYiS6Aw8TSmP934403ZuHChfnOd76TN998M88+++yuc0OGDEm3bt0qnK42jBkzJt/61reyadOm9OzZM0ny4x//ON27d8/w4cMrnu7weuSRR/L5z39+v2/X2tra5ucLFizIpEmT0tTUlHHjxpUar3KdidINGzbk1ltvzd13320zHziM6vb8BrWHfZ4EgIPRv3///OUvf2n33J///Gc7hOa/G2kMHjw4Z599dqZNm5Y//elP+dKXvpSbbrrJw5EPwPLlyzN69Ohcd911ueeee6oep6j777//gKN02rRpWbx4cZ588sldxxsbG3PiiSfmhz/8YXr27JkuXbqUHBeOZh3ecCu6AKBGrVixIhMnTswzzzyT3r1753Of+1xmzJjhP8X78cILL+Siiy7KiBEj8uijj3qMxW4+8YlP7PMh5EuXLrUZEhw80QUAHP3Wrl2bCy64IHV1dZk7d26OP/74XecaGhqO+QdwP//883njjTfaHLvpppvSq1evfP3rX8+QIUPSq1eviqaDI16H0eWeLgDgqLFixYr87W9/S5KMHDmyzbnhw4fnF7/4RQVT1Y6zzz57r2O9e/dud8dV4NARXQDAUWPEiBF7bagBUDXLCwEAAP53HS4vdGcpAABAQaILAACgINEFAABQkOgCAAAoSHQBAAAUJLoAAAAKEl0AAAAFiS4AAICCRBcAAEBBogsAAKAg0QUAAFCQ6AIAAChIdAEAABQkugAAAAoSXQAAAAWJLgAAgIJEFwAAQEGiCwAAoCDRBQAAUJDoAgAAKEh0AQAAFCS6AAAAChJdAAAABYkuAACAgkQXAABAQaILAACgINEFAABQkOgCAAAoSHQBAAAUJLoAAAAKEl0AAAAFiS4AAICCRBcAAEBBogsAAKAg0QUAAFCQ6AIAAChIdAEAABQkugAAAAoSXQAAAAWJLgAAgIJEFwAAQEGiCwAAoCDRBQAAUJDoAgAAKEh0AQAAFCS6AAAAChJdAAAABYkuAACAgkQXAABAQaILAACgINEFAABQkOgCAAAoSHQBAAAUJLoAAAAKEl0AAAAFiS4AAICCRBcAAEBBogsAAKAg0QUAAFCQ6AIAAChIdAEAABQkugAAAAoSXQAAAAWJLgAAgIJEFwAAQEGiCwAAoCDRBQAAUJDoAgAAKEh0AQAAFCS6AAAAChJdAAAABYkuAACAgkQXAABAQaILAACgINEFAABQkOgCAAAoSHQBAAAUJLoAAAAKEl0AAAAFiS4AAICCRBcAAEBBogsAAKAg0QUAAFCQ6AIAAChIdAEAABQkugAAAAoSXQAAAAWJLgAAgIJEFwAAQEGiCwAAoCDRBQAAUJDoAgAAKEh0AQAAFCS6AAAAChJdAAAABYkuAACAgkQXAABAQcft53zdYZkCAADgKOVKFwAAQEGiCwAAoCDRBQAAUJDoAgAAKEh0AQAAFCS6AAAACvoP1D7agfmWhcMAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plot_data( moonsDataset)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA10AAAL5CAYAAABLgU4TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8HPWd5/93Xzratmxj+cIg+cQytuVDNpiQgJnDhiyTZGfIADNJHoHdyYAhk+S3IUM2zG8zkzAzGQj7GzaEzC5JfpuEDCzsTgi/gG2OYEJIwIck38aXhA+ELR+6WlJ3V9XvD6UbHd3qaqmqVdV6PR8PHsjd1XW01F31rs/3CFiWJQAAAACAO4JjvQMAAAAAUMwIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLwjmeZ2hDAAAAAMgtkO0JKl0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuIjQBQAAAAAuInQBAAAAgIsIXQAAAADgIkIXAAAAALiI0AUAAAAALiJ0AQAAAICLCF0AAAAA4CJCFwAAAAC4iNAFAAAAAC4idAEAAACAiwhdAAAAAOAiQhcAAAAAuCg81jsAIDfTNGWaZtbnA4FAznUUchkAAAB8gNAFeJxhGOrq6pJhGAUJPJZlZdyOZVmSMoeubPsVi8UkSRMmTMi6vWyvzWc7dtaTT6B0MnzmWo7ADABA8SN0AR5lWZaSyaSSyaSkvgvmUCg05vuUj/b2dhmGkTF0pdaV7zpHu0/5rme4oDJcEM3HuXPnFAgEdMkll4xqPdkC83DP5RN6R/PakWxncAg2TVOWZWX8HBCYAQBeRugCPMiyLMXjcZmmqUAg4JkLrnz3Y7gLYa8ckxfE43HXQ7VT4bT/ugodmNva2nT27FktXLjQ1noKEZid4nRgPnv2rKZPn551e3ZD8Eiqy/2fo8Lsnb8xAGOL0AV4jGmaisfj6QstP5+w/bzvhVSI98nJbYzV7zUYDHqi4ltoIwm3TU1NGUMXFeaBOjs71dHRodmzZ496XZmMZYV5NM2xMy2T6SagFwJzR0eHysrKVFZWZmv9wFghdAEeYVmWDMNQIpFQIBBQMFgcg4s6WWEBxqORhItsN2y4ETKQYRjq6elxLcgXQ4U55cSJEyotLdWMGTOGXU+hK8wPPvig1q9fr3/37/6dY+sE3EDoAjygf/8tv1e3AAB9iqHC3H/7wWDQk5VmL+4TMFhx3EoHfMw0TZ06dUptbW3DBi4/VowCgYAv93ss8D4BhTdcXzoM5NX3yjTNomkZguLGXykwhpLJpHp7e3X+/Hn19PSMqp2/F/l1vwuN9wmA13k1dBmGQaULvkDzQmAMDG5OGAwGi7bSUazHBcD/+H7yP0IX/ILQBRRYpuHgvXj3EADGA75/7fFqpcs0TUIXfIHQBRTQcMPBF+MdV/p02cf7BAD5MwyDPl3wBUIXUAC5hoMnnIxvXrx7DIwHXq3eeJFX3yuaF8IvCF2AyyzLUiKRkGEY427uHMIkABQHr36XE7rgF9RjARelhoO3M/+WV09oAABI3rxBaFkWoQu+QOgCXJIaDv7IkSM5A1euipAXT3R2+HW/xwKhGyg8rzaZ8yKvvlf06YJf0LwQcNjg4eDtNLHz4onMKYSJ3Ir59w8AbqJ5IfyC0AU4KNtw8HaCRzEGMz/uM7yLvyc4jZtC9nm50kXogh8QugCHZBsO3s5JqpgHnCjW4wJQHLwYJLzKi+8V83TBLwhdwCjlGg4+tcxwvHgiQ2ERToHC43Nnn1ffK9M06dMFXyB0AaNgdzh4J5oXevWEN5xiruA5idANjB0+f/bQvBAYHUIXMEKmaSqRSAzov5WJ3YE0CCcAAOSH0AW/oB4LjEAymdTJkyd19OhRBYPBnMPB5+LFu4dOIEwC8DKvVm+8yKvvFX264BdUuoA89B8OXur7srf7OieWQfHi9w/Ay7waupinC35B6AJsyjQcvB3juXmhF0/QXsT7ZF8xfk4AjBzNC+EXhC7AhkzDwdsNSuM5dElcJAPwLq9Wb7zIq+8VzQvhF4QuYBjDDQdfzEHJKV48QQMAigehC35B6AKysDMcvB2jrXRZlqUjR47ozJkzoz6x9L9TmWkC5/5VvEyPD/dYpp/j8bi6urp09OjREb3eieedOpZcj40WAR4oPD539nm10kWfLvgFoQvIwM5w8IVoXphIJLR7925NmjRJdXV1ikQi9g8ii9R2LMvK+vNon0/9HIvFlEgkNGXKlKyvH269qYFK7GzL7WMZ7rHRSv2ttba2DnjcCwG0/2NuLWv3+d7eXiWTSfX09Iz4WIDB+Nuwx6sBlT5d8AtCFzBIT0+PLl68qMmTJw9798zt5oVdXV1qbGzU/PnzNX36dPX29jqy3kJehIbDYbW3t2vatGmub8vPzp49q87OTs2bN09SfgGy/2OjDaAjCav9g/Fo9yXX6+PxuHp6evTOO+/kfSxuGasAmuv5eDyukydPOh7GC1E5hnd58XdE6IJfELqA37GsvuHgOzs71dzcrJUrVw67vJuVrtbWVh06dEjLly9XRUWFDMOwdxAe48UTtB9wEZpZW1ubWlpatHjx4rHeFdcDbv/HRrJsINDXB7X/406GbTeO2y3DBb3e3l4FAgG1trZ6MoCOJow7fSyplh9eQ58u+AWhC9DA4eBTFypOySd0WZal5uZmnTlzRmvWrFFpaalj+zFWvNokxWt4n/zF68H45MmTuvTSS8d6N8aUnbB66tQpBYNBzZw5c1TBeCTPD17WNE1HgvdI9svO67u7u9XY2Oho/ynLsvIOk9u2bdNLL72kYDConp4eHTx4UDNnzlRbW5tmzpypm2++WcFgUKFQSMFgUJ/5zGf08ssv6/HHH1dra6vWrl2rRx99NOeNVUl67rnn9MADD+jw4cOaP3++/st/+S+69dZbHTt+jC+ELox7qdEJU1/+dk8o+VS67LAsS3v37lUgENCaNWvoGDyOePXCHf5FiLcXjMPhsILBYFHc4HJbY2OjampqHH+v8g2FM2fO1B/+4R/KNE299tpr2r59u2644QYdPnxYl1xyie6++26ZpinTNGUYhp577jk98sgjeuihh1RTU6NHHnlEf/AHf6C9e/dq1qxZWffrjTfe0J/8yZ9o06ZNevTRR/XCCy/o9ttv19SpU7VhwwZH3wOMD4QujFuWlX04eKeaDdpdXzKZ1OnTpzV//nxdfvnlRXMRns97BACFlrrZBnvceK/6V7LsKCsr08yZMyVJNTU1evrpp7Vlyxbdcsstam1t1erVq9PL9vT06MYbb9RXv/pV3XvvvZKka665RnPnztV3vvMdffOb38y6nW984xu67rrr9Oijj0qSbrjhBu3bt09/93d/R+jCiHArHeOSZfUNB58KXP2/8J0OCrnW19bWpsOHD2vKlCmqqqriAgDAqPE9Aqd58QZarhYhb775ptrb2/Wnf/qn6ccmTJigP/qjP9KLL76Y9XW9vb365S9/OeB1knTbbbfpN7/5jdra2ka34xiXCF0Yd0zTVDwezzr/lpMDZORa7r333tP+/fu1cOFClZeX2zsAH6HSZR/vE1B4fO7s82NV8ODBgwqFQlq0aNGAx5csWaKDBw9mfd3Ro0eVSCRUU1Mz5HWmaaZHUAXyQejCuJJMJtXb25seMCPTCcTp0JWJZVl655139N5772nt2rUqKyvj5D+O+e1CBigmfP6K14ULFzRx4sQhoxtOnTpVsVhM8Xg86+skacqUKUNe1/95IB+ELowLlmWpra1NZ86cyWuwjOGMNJwlk0nV19crEAho1apVCofDRVsRKtbjAoDxxo+VLilzqO4/tUI+r7X7OiATQheKXmo4+Pb29vRcLMNxIyik1heLxfT2229r9uzZWrRoEV/cADCG/BokxoIf36upU6eqo6NjyFyXFy9eVDQaVSQSyfq61HKDXycNrYABdhC6UNQMwxjQnNAON/p0SdK5c+dUX1+vpUuXavbs2Xmty28nuhS/7vdYoCIIAM6qqamRYRg6cuTIgMcPHjw4pL9WfwsWLFAkEhnS7+vgwYMKBoO64oorXNlfFDdCF4pSanTCVHvtVP+tQg2QMVhLS4uOHDmiNWvWaPLkyRnXVawIE7kV8+8f8DI/Vm/Gih/fqw996EOqqKjQM888k34sFovp+eef10033ZT1daWlpbrhhhsGvE6Snn76aV1zzTUZz+NALszThaKTClyDRyd0q4I1HNM0de7cOZWUlGjt2rXDVtuKMZz47QQNAPCPWCymCxcu6Nlnn9WpU6fU3t6uZ599VpL00Y9+VNFoVPfff7++8Y1vaOrUqenJkU3T1Oc///n0en70ox/pzjvv1NGjR1VdXS1J+pu/+RutX79eX/ziF/WJT3xCL7zwgl544QVt3rx5TI4V/kfoQlFJDQefuiPn5vxb0vBBqbe3V42NjSopKVF1dfWwgauYB5wo1uMCgPHEi5Wus2fPqqmpSZ/85CfTj6V+Pn78uObOnav7779fpmnqH/7hH3Tu3DmtWbNGL730UnqCZanv2sEwjAHnqw9/+MN69tln9cADD+jxxx/XvHnz9NOf/pSJkTFihC4UjWQyqUQiISn3hInDcaIi1t7erj179mjx4sW2hpb12onMKcV6XG4gnAKF58UgAfuqq6u1atUq7dq1K+sygUBAX/va1/S1r30t6zKf/exn9dnPfnbI45/4xCf0iU98woldBQhd8D/LspRMJpVMJjNOdpziZLPB4dbX0tKiY8eOaeXKlZowYYIuXrxoa7vFetFdrMflJC76APgB31XAyBG64GuWZamlpUUVFRUKhULDnhCcbsI3eH2WZenIkSNqb2/X2rVr00PR2jlJFXPzQsApXPDBaXzvAigURi+Eb6WGgz9y5IhM0xyT+bdSksmkGhoaZJqmVq9ePWTuj1zbLdbQVazHBaB4EOYBFAKVLviO3eaEg7lV6YrFYmpsbFR1dbUuvfRS17cLAAAAfyF0wVcsy1I8Hk9XtlL/jUWoCQQCisfjqq+v17Jly7LO22Fn/+ws48fgRuC0j/cJKDwG0gBQKDQvhG+Ypqne3t4BgUtyZzJjO06ePKmenh7V1dWNeqJEu8EMxYnfLQAAxY1KFzzPsiwZhqFEIqFAIDBkOPhChy7TNHXgwAElk0lNmDBBZWVlBdmuH43nYwcAAEih0gVPS/XfSgWuTBWBQoaueDyuHTt2KBqNatmyZbZe41TzQgCAs2he6G+cN+EnVLrgaYP7b42ljo4O7d69W1dccYWmT58uy7Ic+8LPFbrG+thHyq/7XWiEbvt4nwCkGIahUCg01rsB2ELogqfZCVyFqHSlJjxesWKFJk6cmNdrx/sF9Xg+dgDexveTvxG64CeELniakxMLjyT8WJalo0ePqq2tbcCEx3b3ze52x3swA4CxQkXev0zTJHTBNwhd8D23QlcymdSePXtUXl6u1atXj/jEPJ5DV7EeFwBg7BmGMWRwLcCrCF3wPTdCl2ma2r59u6qqqjRnzpzR7qIjwYPwUrwIp8DYYCANf6N5IfyE2wPwPacvWM+fP69YLKYlS5Y4ErjGe6ULAAA3ELrgJ1S6MG7YCTYnTpzQqVOnFI1GNWXKlIJtt1hDFwB4HTeH/MuyLEIXfINKF3zPieaFpmlq//79On/+vNauXUsbcRQcoRsoPD53/kafLvgJf6nwvdGGrng8rp07d6qsrEy1tbWO3zWj0oVcuNMOJ/FdgvGC5oXwE5oXwvdGE7o6Ojq0Z88eLVy4UDNmzBiz/SN0AUDhMZCGvxG64CeELhSFkQSWM2fO6MiRI6qtrc17wmMAADC2mKcLfkLogu/lO0mxZVk6duyYzp8/rzVr1qikpCTj8k7dAaXSBTv4/QOFx+fO3+jTBT8hdMH38m1e2NjYqNLSUtXV1WX9sk4tW8jQZed5msIUJ36nwNjh8+dfNC+EnxC64Ht2Q1d3d7disZiqq6t12WWX5VynUzihAygkqjdwmlf/pmheCD8hdMH37ISuCxcuaP/+/SotLc0ZuOyuMx9ePWEBKE7c7LGH1gP+RuiCn9AQFp5m52SYKyCdPHlShw4d0urVqxUO27/P4FRQcirAcWFQ3AjmALzKq+GUPl3wEypd8L1socY0TR06dEi9vb1au3ZtXnfDnKx0efFEBW/hbwSAl3k5dFHpgl8QulCU4vG4du/eralTp6qmpibvkwXNCwH4Taw1pvbmdk28nCkw7PJqmIA9hC74CaELvjc4IHV2dmr37t1asGCBZs6cOYZ71ofh4AG47cAzB/TSvS8pGAnKTJha+H8tlNaM9V6hWHg1nNKnC35C6ILv9Q81qQmPly9frkmTJjmyTif3bzQuXLggwzAUCATS/6XWP9zPI1nOzvJwFsEc+UhVtSqqKyRJL937kpLdSam77/l3Hn5H6//DekUro2O4l97H587f6NMFPyF0wfcCgYBM09SxY8d07ty5YSc8zmedXjkZW5ald955R+3t7ZoyZUp6v/r/3+7PTi2Xj66uLm3fvj3rseUTDO387OS6RrsNu8v19vbKMAz19vbmtS/wv/7hKVtAGrzM4KrWVV++ashn07IstTe3p9eZaTt2tj0e8FnKjUoXMHqELvieZVk6ceKEJk+ePOyEx/nIJ3TlOhmNJsCZpqm9e/eqpKREV155pcLhsCdPfMPZvn271q5dm/X5fMJgvj+PZLnBy5imOeL12n2NYRjq7OzUwYMHba/XaU4H2eGC4ki30dPTo1gspvfff9/xIN3d2q2Okx2aXDVZ0elR268fiVTYeb/xfW376rZ0eNrw2AbV3FIzYNnBAev6f7xe2+7fNqCq9dt/+q3MXnPA66y4pcjESMZ1bHhsgyzL6nssHJQRN7T+n9ZrxR0rcu7zeA9o45VXbkIORp8u+AmhC56WK7D09PTo3Xff1dSpU3XllVcWbLuDl3MjdCWTSTU0NKiyslJz585VLBbLex1+QHNFKRaL6dixY1q2bNmYbN+NIJvtNfmu1zTN9M/JZFKGYainpyfvfek536PY6ZjKZ5erZErJgGVObzmt/f+4X4FwQFbC0tzPzNWlH7tUkcmRrOsdqTOvnNHhbx+WQpIZ+11Q+l14evGuF3Vh6gVJUueRTvWe6dXh/+ewrISVXubVL7+qQGTg5yUQCEgBSf13KyQd3X9Upy+e1st3vywr/sE6Nt+1WQpoQFB75Quv6PTB07r0+ks1Yc4ElU0rS38um3/RrO0PbFcwHJSZNLXuH9Zp7s1zx7Q6nD7uUfJqBceLvPg+EbrgJ4Qu+NbFixe1b98+zZgxQxMnFtdoXb29vaqvr1d1dbVmz5491ruDIjfWwdduFaWjo0PJZFLV1dV5rf/AMwe07d7MFaVYa0yv/tOrfQGkr3Wnjj1xTM0/adbG724cUnmys/+x1pjONJ6RJM1YMWPAY28+8uaQqlSKFbd04r+e0Kk3T8lKZg524ZKwEt2JAY8ZPcbQBQ0p3BXWyZ+e7Atc/QRCASnDLhx4/IAOfv+ggsGgrnrwKlV9tEo953u0/YHtMnoMGerbzm+/+ltNXT1VJVNL8gq+ownumX52Qnd3t3bv3q1gMDgmTZCzvcbJbThxXIlE399c/37F/fd1rJimSZ8u+AahC7506tQpvfvuu1q9erVaW1sdb/qQb6XLiXWldHV1qaGhQTU1NZo2bZrt18HfvNp8x22Zmr7ZCTp2xVpjQwaZ2HrPVlWtr1K0Mqr25nYFI8H0cylGj6Gt92zV9OXTlehMpAesGByudn9/t956+C0FQgFZSUs1t9bowNMHZMb7Uk0gEtCKO1Zoz4/2SJZk9GYISP2cfP3ksM8nuhLDPt/fts9vk2UM/bsyeoyBVbF+rLglQ4a2P7BdVcur9P4r7/eFtH4CoYAqzArNmjvL9r541e7du7Vo0SKVlZUNG+6car480p/daOacz/KGYSgWi6mhoWHMmzn/7d/+reLxuEKhkOLxuC5evKiWlhaFQiFt3bpVLS0tGdf95ptv6pprrhnyeFNTk+bNmzfk8VtvvVVPPfWUU4cGELrgL5Zl6dChQ+ru7tbatWvTfZxSTZCcMlahK1W9q62tHdXoi/CXsb5bPFZyBSInZApVwUgwPchERXWFzETm7w/TMPXja3+scGlYiVhCgWBAwUgwHa4OPnNwSJVp34/3Dfi3lbDU8N8bHDmWfGUKXH1P5H6tmTT19IanMz6X7Eqq8YeNmlXn/9AlDb2ox1A9PT165513VFtb69o27IbHhx9+WIlEQqZp6u2339bevXv1V3/1VzIMQx//+MfV0dEhwzBkWZbC4bCefPJJ1dfXD9u3WJIefvhhXXvttel/V1ZWunSkGK8IXfC8VJv7RCKhxsZGTZkyRStXrhxwF2ysKl1212VHIpHQ/v37tXr1apWXlzuybcDLcgUiJ2QKVWbCTFeuopVRbXhsg7Zs2jIkQKWqVfF4XFJfiEmta3C4KjbZgmjKvh/t08KbF6rnXI9mrZml8mnlA5pUSmLgjSJSiL5vdoPv/Pnz0z83NTVp+vTp6T7dy5cvH7BsPB7Xl770Jd16660Kh4e/5F28eLHWrVs3gj0H7CF0wRdSEx7Pnz9fs2YNvLvqRuiyy+62cy1z4sQJxeNxXXPNNVmHu+cuLIpNrkDkhFSo2nrP1gFNGPsHgar1VapaX6Xjm487tt3x4Lk/fS7zEyEpGAoqXBbO2Ieu//xiYx3MGEjD3yzLGrZP1+bNm3XhwgXdfvvtBdwrIDNCFzwtEAiotbVVhw8f1vLly1VR4dzFWK7tFqJ5oWVZOnr0qDo6OhSNRkc9vxj8azz26bITiJxQc0uNqtZXqb25XZGJESU6E4q1xtJzXm2+e/OQwSYwCkZf08xUhXDL3Vs0ffl0ndl9Jt1/L9GdUCAQyBjM4D1eDae5Ri986qmnNGfOHH3kIx/Jua477rhD58+f14wZM3T77bfrwQcfpNUJHEXogqd1dnaqqalJa9euHbYClM8Fq52TRyFCl2ma2r9/v4LBoFauXKnf/OY3ObeH4uTFi5lC6R+I3Kp4pKorLY0tev2rrw+Y8+rVL7/aNyQ7XGP0Gvrxh37c1/fWULo5qSUrHcyc7suXj/H8+fO74UJXLBbT888/r8997nPD/o5LS0t1zz33aMOGDaqoqNBrr72mb33rWzp69Kieey5LNRcYAUIXPG3ixImqq6sb9k6WW326nFxuMMMw0v3T5s2bZ3s9Xr3bCIxGtDLq2sV2enTEcFDxjr4L/NRF/y+//EsCV4Hk6iPmdF8+u8ZjhXkkvHruGS50Pf/88+rs7MzZtHD27Nn6zne+k/73+vXrNXPmTG3atEkNDQ1auXKlo/uM8YvJDeB5TlWl8l3WqeUGbzMej2vHjh2aOXOm5s+f78kTGTBWYq0xtexsUax19JOB9x8dMR24+skVBFA4Tvflg7O8GrpM08waup566iktXLhQa9asyXu9t9xyiyRp165do9o/oD8qXfA9N0KXW80LU/OcLFq0SNOnT7e1zyh+YzkYjJfYnbPL7mTK2ebggneEy/suQ9zoy2eHV8ME7DEMI+NAGm1tbXrxxRf1la98ZUTr9crkzyguhC74ntdDV0p7e7v27NmjZcuWafLkyRmXKdYLgGI9LjjH7pxdp7ec1kv/0BfMjLihq798tWrvrM14wT7cHFzwBtMwddN/v0mXX3f5WO8KhuHV7/BszQv/7d/+Tb29vSMetfDZZ5+VJNXV1Y1q/4D+CF0oCl6fp6u3t1d79+7VqlWrFI2O7G6uF094gFPszNnVfa5bex7cI7PXTC/35jff1FsPv6WN3904pCoWrYzqmgeu0a++9qtCHQbyZMZNbblni2RqTEYwpMLsb9maFz711FNasWKFlixZMuS5hQsX6vrrr9f3v/99SdLXv/51dXR06Nprr1VFRYVef/11PfTQQ/rjP/5jVyeDxvhDny74Xj5hxOnrkftiAAAgAElEQVRmXHbW9/777ysWi2nNmjXDBq5ibWJWrMcFZ9mZs6vzRKeC4aGnLaPH0JZNW4b0AzvwzAH9+m9/7c4OwzHJrqSS3Ult2bRFTa80OdKfLx/c0MrNq5WuTKGrtbVVr7zyim677baMr0kmkzKMDyZCr6mp0bZt23THHXfoox/9qH7605/qvvvu009/+lNX9x3jD5Uu+J5XmxdalqXjx4/r3LlzqqioyDkHF+Fk/OJ3b2/OromXT5SZzNxc0OgxtPuHu7XuvnWS+porbr5rM6MTek2gr4IZioSU6EoMeMroMfT8p56XZVqjqnrZ7fMH+7waugzDUDg88FK2srJSiUQiyyukpqamAf++7bbbsgY0wEmELvjeWIeuTCzL0oEDB2QYhmpra9XY2DjidfldsR4XnJdrzq7yaeVa/sBy7X1wr4weY8jr33roLdXe0de/68TrJwhcHhSKhPSpX39KHSc79LPbftbXVLSfVBAb6bxddgdjSfFqmIA9mUIX4FU0L4TvjWXokob2CUjNwRWJRLRs2TKFQiHHh6n3m2I9LjgvWhnVrLpZWS+2L91wqf5i/19o+Z3LhzwXKgmpvbldB545oBf+4oWMr6/+/WpH9xf5CZWElOhMqPt8tzTM10KqP18+BkwR0B5XsjuprfdsLXhzxWLk1XA63DxdgNcQuoBRGBzOEomEdu7cqUsuuUSLFi1SIBBwJeih+PC7ty9aGdW1D1yrUNnAiy0zYSoyMZK1WWEwEtS7294t1G4iA9Po+x29dO9LMuPZR5Ycybxd6cFY+hlJeMNQXv1+Gm6eLsBrCF3wvbFuXpharru7Wzt27FB1dbWqqqoGLGN334oRYTK3Yv3duylaGdXG725UuDyskooShcvD2vDYBnWc7MgauOrurZOV5G9xLITKQunfUaIzoUAw8998eEI4vVy+TQvtDMYymFcrOF7kxffJNM2M83QBXkRDWHianS/5sW5eKEkdHR3avXu3rrzySk2dOnXI8+O9eSHghkx9wJpeacq47E3/4yaVTi7V9v+6vbA7CUmSkTB064u3KtGVUFtzm5K9yYzLrbl3jVb+5coRDYBhZzAWjIxXwynNC+EnhC743lhXutra2nTixAmtWLFCEydOdH2bflOsxwVviFZGB1xUz1gxQ8GS4ICma8GS4AeT7wYlMV9y4RnS//ro//qg0pilOLH4lsWjCkm5BmMZjO8mfyN0wU+oycL38r2oH82ohIN1d3erublZdXV1GQNXPrx4FxGFw8WfM6KVUd34vRsVKgspMiGiUFlIN37vRknSmcYzY7x349uApp2mhlyBrPzcSk1bPE2x1phadraMeACMXIOxDMZ3b25erXTRpwt+QqULnuZG80K7cq2zublZnZ2dWrp0qcrKygqyTT+i0pWbFy9m/GxwtaP5l816YukTff2IqHK5K6S+UQltvM+h0pBufPxGJbuTmrVmlqYtnpb3kO8Y3+jTBT/hLxVFoZDNCy3L0qFDh3Tx4kXNmDHDsbtsufaNC3PAvlS1Q1J6GPHBk/GmhaSVd63sG+whGlYwElSwlNPjSIRKQwqEAn3h63cC4cCQUQUlyeg21NPWo6V/vjRd4RqLId/5bs3Nq5UumhfCT6h0wffyORGMNnSZpqm9e/eqpKREtbW1OnTokGNVHC+e0JxQrMcFf0gPI96dfZlwSVjrvrJO676yTu3N7YpMjOjJ656USVksb0asb9LqQCSgNV9coxnLZ+jy6y7Xu6+9q81/uXnI6ILb7t+mRX+0SNHKaMbfVWrIdwbDGFuELmD0CF3wPbcG0hgsmUyqoaFBlZWVmjt3bt7btqNYm+EV63HB+zINIx6MBKVAX9gyjYEj3KX+v+GxDdqyaYuMHqPg++wbISkUCSkYCg6pIloJS9u/vV2BSEA3/ctNfd8BGa7Z+4eqkQz5jvGNPl3wE0IXfM+tPkP919nb26tdu3Zp7ty5mj17dtblRqNY+z558e6oFxXj795pI/lbyjaMeK4R7lL9wnb/YLfeevgthUpCMuKGTMPMOA9Yf8GSoJZ9aplW3b1K5dPK9fNP/Vyn3zyd9757XcmEEt38P2+WJD13+3MZA6qVsLT57s0KBAIZJ0PuH6oY8t27vFrpok8X/ITQBd9ze8j4rq4uNTY2avHixZo2bdqQ5ZyUa9/8emHu1/0uFC9ezHjVSP6Wsg0jnutiPloZ1bqvrFPtnbXp17772rsDQsGyTy/T3h/vVTASlBE3dPV9V6v2jtoB61533zr9n3//f2zta7A0KMu0cgY7pwQiAf3eQ7+ny669TAeeOqC3H3m7byAMG8yEqRkrZqQnqt5y9xYZvUODVyAQUDAUlKGBz4VKQ0NCVb5DvmN8o3kh/ITQhXEln9BlmqYuXryoffv2qba2VpMmTRrx+uzuWzEq1uOCvwyez2ukr80UCtbdv27YkDBjxYx0SMskMjEiM2nq6i9frdo7awcEO7vVtXyEJ4RlGVZ6e6l9XnjzQjX8jwbF2+MDlg9FQwpYgQEBM1WFkqSWnS2qWl+lT73xKf3k2p/IiA8MV5ZlyTQGHnuoNKRPvfEpTVs88EaWNLrfFdzh1UoXoQt+QuiC77lR6ZKk9vZ2nTp1SqtXr1Z5efmo1+fkvvlNsR4XxqfBoSBXSIhWRnXjv9yoF//iRVnGwM9CycQS3fDQDZq3cV7WYJcKYYFQQEbcUN09daqYW6Ft929LB6BrHrhG0Uuiip2L6TcP/kZW0FLAHBqUrv/H6zWzdmbGgJipT1WoLKSPP/nxdEWrf8BMDcXfP4Rt/N5Gbb5rc7opYSAS0I2P982TNrjZYKbABW/yauiiTxf8hNAF33NjcuQLFy7owoULWrdunUpKSobdNuAEgmlxq7mlRtOXTx9SCTINc0DgSslVXZOkRX+0KGOFbcG/X6B9b+5T3e/X2arE9d9mpj5Vc39/7pD96j+8e2q0wa33bNV/3Pcf9bmDn0tPRJ0Ka5JoNgjHGYZBny74BqELvufk5MiWZeno0aPq7OzUnDlzhg1c/V/jhGKtdBXrcTmJ8D4+TFs8TRu/t3FEA0VkqqZlq7CVV5ZrypVTBvRdsxty7PapGm5491l1swYEtVz7C+/zaqWL5oXwE0IXfM+p5oWmaWr//v0KBoOqrq5WT0+Po9su5LoAeJMfBoqwE44Y3n188eq5idAFP6EmC99zInQZhqH6+npFo1EtWbJEwWBwVJMo4wO8R8BA0cqoZtXN8mTgsivVFDFcHlZJRYnC5WGGdy9yXqx0WZZF6IJvUOmC7402dMXjcdXX1+uyyy7TnDlz3NhFW3IdhxdPeHAOwRR+44eqHZzh5eaF9OmCXxC64Gluf8nHYjE1NDRo0aJFmj59+oDtFrrSVawVoWI9Lid58WIGsIN+WhhLNC+EnxC64HsjrXS1tbVp7969WrZsmSZPnjyidTJPFwCv4SYHnGZZlicrSoQu+AmhC76XT1hJhaTW1la98847WrVqlaLRoXdp8wldTirGiyXCJFB4fO4wHjBPF/yE0AXPc/LiIRAI6Pz58+ro6NCaNWtsDQmfC80LcyvW43IKF8gAvMyrfbpM0/RkBQ7IhNAFz3Pqy96yLJ0/f169vb26+uqrFQ5n//OneSEAAH28GrpoXgg/4fYAxgXLsnTgwAElEgnNnTt32MAljU3okoqzIlTMFTwAwNghdMFPCF0oeoZhqKGhQZFIRLNmzbL1mnyCAs0Lh+fFu6MAAPu8WumiTxf8hOaFKGqJREL19fWaPXu2Lr/8cjU3Nzs6QEY+J6FcJ63hnrMsS4cOHVJbW1te+5ZaNtPPTjxv57VdXV06e/asOjs7R7zufLdt599AsSrGmzcYW14NXczTBT8hdKFodXd3q6GhQQsWLNCMGTMkOV/ByrcZYq6TVqZ1maapvXv3qqSkRKtXr87ZNDK1Dsuyhvyc778HPzeS51PHYBjGqLbt1H46IfW7dDK09vT06J133nElEBcy1A7+GWOD9x/jAc0L4SeELhSljo4O7d69W1deeaWmTp2aftzpvlpOD6QxeF2maWr37t2aNGmSLr/88nRwybWe/v8fa52dnZo+fbqmTJky1rviKKfD4Pnz59MTdI80MOd6bjTrzve1TkqFONM01dvbq/r6eterpWNdic1nXYDbvFrponkh/ITQhaJz/vx5HThwQCtWrNDEiRMHPDcWYcru+gaf0EzTVENDgy655BLNnTtX8XicZkMe4vRFbzgcHnCDAEOrtp2dnTpx4oQWL17serDM9m/TNAsearM9n41hGIrH49q+fbvt99pPodXJdZumqXg8nnNZeBOhC35C6EJRaWlp0fHjx1VXV6eysrKMyxQ6TOWzXGoZwzBUX1+vGTNmqKqqKr0OP3I6wGL8GHzRGwqFFAwGFYlExnK3PK+rq0tNTU1aunSpreWdqNQ6GSxN0xzVtvN5bU9Pj/bt25f1ead5MXjaWXcsFlMgEEh/9tzYz5GgTxf8hNCFotHc3KwzZ85o7dq1Wfs9OR2S8lnO7rqSyWR68I/LLrss5+sAYDTGc1PF7du3a9WqVa5vx6lmuyMNxJmeT1Vt7Wy7u7s7XUHNd9t2/m3Xtm3b9K//+q/pf7e3t2v9+vUKBoM6d+6cmpubh7zm8ccf11133ZV1nW1tbfriF7+on/3sZzJNUzfffLMeffRRTZs2La99A3IhdMHT7FwIpO5WXrx4UXV1dcPe9Rqr0JXaz1zrSiaT2rlzp6qqqjR79mxb6/U6Kl1AYfF58x6/B9ujR49qypQpYx5E1q5dqy9/+cvpf2/YsEGvvvqqysvL9cMf/lB33nmntmzZotLSUpmmqUgkoiuuuGLYdd566606dOiQnnjiCQWDQf31X/+1PvGJT+hXv/qV24eDcYbQBV9LjewnSbW1tTlPam6EKTvsrM8wjHR/lZkzZzq2bQDjj58v8OE9luX9gTRS+/ehD31oSH/ubH7zm99oy5Yt2rZtm6677jpJ0pw5c3T11Vfr5Zdf1h/8wR+4s+MYl2gIC99KJpPatWuXKioqVFZWZrsJn12FrIjF43GdPHlS06dPL7rA5cUTNQDA/0bbp+vFF1/UzJkz04FLkq666irNmzdPL774ohO7CKQRuuBLvb292r59u+bMmaO5c+fm9Vqn+mCllhttRaynp0c7duzQ9OnTNWnSpFGty6to7gQA/uWHSlfKggULFA6HtXjxYv3Lv/zLsK8/ePCgampqhjy+ZMkSHTx40NF9BWheCN/p6upSQ0ODampq8m5fPhYDZAy3vu7ubtXX16umpkYdHR221uU3XjxRAwCKQ+ocM3v2bH3jG9/QVVddJcMw9K//+q+66667FIvF9KUvfSnjay9cuJBxDsmpU6fq2LFjru43xh9CF3zl4sWL2rdvn2pra0dUFRqLATKyrS8Wi6m+vl5Lly7VlClT1NnZOey6/BxeqHQBgH95tdLV38aNG7Vx48b0v2+66Sb19vbqm9/8pr7whS9kbYaY6bj8cLzwH5oXwjfOnDmj/fv3a/Xq1RkDl5cqWLnW19XVpfr6ei1btmzAXTbCCZAdF0H28D0Cp/k1hNxyyy06f/68mpqaMj4/depUXbx4ccjjFy9ezFgBA0aD0AVfOHHihJqamrRmzRqVl5cPed7pypTd5Uay3Y6ODjU0NKi2tlaTJ08esC472/MbhoyHk/hbsseP3xWAW7J9HmpqajL23crW1wsYDUIXPK+pqUmtra2qq6tTSUnJqNZVyAEyMq2vvb1du3fv1ooVK4ZU6wgnAAAv8mul63//7/+tyspKVVdXZ3z+pptuUktLi9544430Yzt27NCxY8d00003FWo3MU7QpwueN2PGDM2bN2/YL/yxmvQ4n6DU3t6uY8eOadWqVYpGo6Nal58U63EB8De+l+zzQ+j6kz/5E1111VWqra2VYRh6+umn9fTTT+vRRx9N9+dauHChrr/+en3/+9+XJF1zzTXauHGjPvOZz+jhhx9OT4784Q9/mDm64DhCFzwvGo0WfNJjpytiiURCR44cydo80i4uEgAAGGrx4sX6wQ9+oBMnTsiyLF155ZX60Y9+pE9/+tPpZZLJpAzDGPC6p556Sl/60pd05513yjRN3XzzzXr00UcLvfsYBwhdKApjOSphLufOnVN7e7tWrFgxbOAq1oqQ1++OAhif/FC98Qo/vFd///d/r7//+78fdplMA2pMmTJFP/zhD/XDH/7QpT0D+hC64Au5vvDd6oNlx3DLnT17VkeOHNG0adNUWlqac5vFqhjDJOBVfN4AwHsYSAOe5sbQ7YVa7v3339fRo0dVV1enUChka33FeLFUrBU8wMuK+SYOCs8PlS7A66h0oSh4LXS99957evfdd1VXV6dIJGJrfYQTACgcgoR9nJuA0SN0YVxxI9gMXt+pU6d06tQp1dXVKRwO295usZ78CZMA4H/Feo4CCoXQhaIwlpWu/k6cOKH3338/3aQw23LZEE4AoDD4vrWPqiAweoQueJ6dL3o3BtKwu1xqu83NzWptbdWqVasGBK6U0TYv9OsJz6/7DfgZnzt7eJ8AFAqhC0XBjSHj7W5Xko4dO6a2tjatWrUqPQljvtst5pM/d5SBwuHzBqdR6QJGj9CFojBWocuyLHV2dioYDGrFihUZA1f/Ze2sDwDgPoJEfnivgNEhdKEojEXosixLTU1NMgxDtbW1OecRK+S+eUmxHhcAjBd8hwOjxzxdwAhYlqWDBw8qmUxqwoQJOUMVQ8YjJdYaU8vOFsVaY2O9KwBgC1VBYPSodKEoFLLSZVmW9u/fr1AopMWLF2v37t0F2a5fBQIBmaY51rvhCQeeOaCX7n1JwUhQZsLUhsc2qOaWmrHeLWBcIkj423g9p8K/qHShKBQqdFmWpb179yoSiWjx4sWOnrDHczAbD2KtMb1070tKdicVb48r2Z3U1nu2UvGCKwgTcJIXA6phGBlHCga8ikoXikIhQpdpmtq9e7cmTZqkBQsWOL7dYg1dxXpcg8VaY2pvbldFdYWildEhz7c3tysYCUrdHzwWjATV3tyecflCiLXGdKbxjCRpxooZY7YfcNZ4+Lw5wYtBwqu8+F4RuuA3hC4UBbdDl2maamho0NSpUzVv3ryCbRf+YKfZYEV1hczEwGaWZsJURXXFgMcKFYQOPHNAm+/aLCvR93cZLAnqxu/dSHNHAL5gmiahC75C6AJyMAxDDQ0NqqysVHV19YDn8plE2c4yxRjMvHZ31Gn9mw2mqlhb79mqqvVVAwJTtDKq6//xer32ldcUioRkGn3hrP8y2YJQ1fqqYato+exre3O7IhMj2nrP1vR2JMmMm9qyacuQ/QYAr1a6hpumBfAaQheKglsVp2Qyqfr6es2ePVuXXXZZxmXsrm+8Ni+UvN3cKVezwFwyNhsMBXV8y3HN2zgvvUxLY4u23b9NCkrJeFI3/NMN6apSrDWms788qze+9caQILT5LzcrEAooVBIaUEXLd7/7V+OMXiPj7yQYGtvmjkAheTFIwD6aF8JvCF0oCm6ELsuytGvXLl122WW69NJLC7ZduKt/WGn+ZfOAZoHX/8P1mrliZl4BLFOzwXhnXK/e96qSf5VUIBBQuDSseEd8wDKv/KdXFAgGdLHponY8ukNKZl6/mTClhGT0GJKkLZu26Oyes9r1+C6FIiEZcUMf+r8/pMs/dHnG/U41V9x6z9a+dXRn2srvtmUMbe4I/+G7Bk7zYkAldMFvCF3wPCcHobC7XCKRUCwW0/LlyzVr1qyCbDfXMl474dnlpcA5oNoTN2QaZl9l6XdB5JUvvqLIhIgs0xp2OPf+zfQSnQktvmWx9v1434BlEp0JSZIlS/F4fOhKDOnlv3o572Mwegxt/6/b0z9L0q++9iuFykIKBAK6/h+v18zamQNCpYIfLJtNMBzUhx74kNqb2yXJkWaMo20OiZHz6/dFIXkxSHiVV77D+6NPF/yG0IWi4GT4icfj2rlzp0pKSoYNXE7zUjhxklcuajL1vcok0dUXlvr3yzr121M68vwRTZg1Qd2t3dr1+C7JkoxeQ8GSoMz42M9DlgpVr3zhFUUmRmQmzQ9CZS4ByQyY+tUDv1K4vO+0MJKqn8RcZECx8sp3eYppmvTpgq8QulAUnAosvb292rVrlxYuXKjDhw/b2q4dxRqo7BrtsTtROcnU92o4gVBA7c3tev7Tz+vUr09lXc4LgWuwVJXNNkvS716S7O5r5/jKF19RyaQSmUn7wcnuoCKAF4zn7+SR8Froonkh/IZbBBhXhgs/PT092rlzp6644gpNnz69YNvNZ5nx6MAzB/TE0if07Mef1RNLn9DBZw/mfE2sNaaWnS0DJh7O1PcqGM7+FZjoTqjhiYZhA1exi3dknsQ50/sr9Qu2/aTmIusv2+uBQvNakIB9hC74DZUuFIV8mhdmEovF1NDQoCVLlmjq1KlO754txRq6RnNcmSonuYY1b/hBg7b99TYFI0FZxsC+WavuWqWdj+3sG7I9YWr5ncvV8P2GdJVnAEPa/+T+Ee13sQlGgum5w9791buq/279kNEUJXtzkdH8EIATCF3wG0IXisJoLuy7urrU0NCgZcuWafLkyQ7vWZ9iDVRuy9Qk0OgxtPuHu7XuvnVDlm/8QaNe/eKrfcv19vVx2nrPVvW09+iX9/0y3b8p1SSw4XsNLh9BcUh2J/Vvn/w3WckP/ob7j6aYCsHRyqg2PLZBW+/ZOiBUpQLyaJsfUpWwh+8ae3if/I2BNOA3hC4UhZGGms7OTjU2Nmr58uWqqBg6VLZTo1uN5+aFozmuiuoKGfGho+699dBbqr2jdsCFeqw1ptf++rWh2w8G9NpXXrM3oAQyGly96s/oMbT7B7u17it9IbjmlpqskzlnnNMskt/cYMX4GXEDAdUe3if/YnJk+A1/rfA8OyfFkVzYt7e3q7GxUStWrMgYuAqNk/9Q0cqorv7y1UMeD5WEhvQTOtN4RoHQ0PfQiBsZH4dzfvtPv9W5Q+fSfbUkaVbdrCFByk7zQ7voFwaMb1S64DdUujAutbW1ae/evVq5cqUmTJiQcZlUkHOq0mWauUe5yxUc/XiX304gHjzvVf8KSe2dtXrr4bcGzDOVqZ9QevLfQdbet1Y7Htnh0NEgEzNu6kfX/EiypHB5eEhfuv6u+vJVeuuhtwb0Cct3ZEP6hcEJzNPlb/Tpgt8QulAU8ql0JZNJ7du3T6tWrVI0mv1iz8nmfk40L+zt7U0PYx8IBAb8N/ixTMvYWc7u6/J5bSKRkGEYSiQSGZc7+MxBvfT5lyT19R1KTfKbupCOVka18bsbc/YTyjb5745HdqjmT2u070f7Mj4PZ6T6e6WGqx/cV6t/UJKkNX+1RrV31uYduOIX4nrj3jcYlh4Y56h0wW8IXSgKdgPSuXPn1NPTo+uuu05lZWWOrNPu/o1mmXg8rvr6el122WWaOHGiLMtK/ydpwL+He3zwY1LficvOciPZZmrf4/G4urq6hizXe6FX2+/ZLrP3gypgKjxtvnuzzk0+p5IpJVK1VPeTOvW29Kp0Vqk6pnRo+/btkqSOgx2ygtl/T0aPQeAaA6l5zqKV0YwDaLz97bdVe2dtXuvsbu3W2TfPDhnqP99+YYDkz5YD+AB9uuA3hC74Qq5mIHYCUmtrqw4fPqxoNJozcLnBzgk+0zKJRCI9YfPEiRMVDvvrY3v+/HmdP39eCxcuHPJcy84W1ZfWK94bH/JcuDSsBZcs0Ky6WcOuPzYvpr1f3uvY/sIZyd6kzibPquNwhy7uvygNviEdkg7+9qCmLZ9mq4La9P816a3//JasoCUzNrCprhE3ZE22dPHiRccrwH5EmLDPr79j0LwQ/uOvqzcgi1yh68yZMzp69Kjq6uq0Y4e9/j1eaF6YTCa1a9cuzZs3T9OnT1d3d3eWV/tTpoEVUuwOsBCtjOr6f7y+b4RCy0oPB4+xdc3fXaPLF18uy7I04coJA4abl/qaI1YuqFRpWWnGamn/Cmzv+V699Z/fGtKENBwNyzRMrfibFeq0OtVxpiPvqu1wjznBbvgb6WOZlonFYuru7tbJkydH3eTYyX0DnETogt8QuuB5dpvmZRuooqWlRc3NzVqzZo0ikUhe2y106OrPMAzt2rVLVVVVmjlzpm/vXg937NHKqJZ+eqka/3vjB8uHAwpFQrYHWDjwzAFtu79vMmQjbqT7faGAApL6/YqXfmap1t3zwTxqU6dOzdgvr2pJla3Vt5xtUagkNCB0RSZG9HsP/Z7mbZzn2WaFIwl6I23G2//fvb29CgaDCgaDAwLsSPfDiX1zihN9V1OPJRIJdXV16ejRo6Puu+r0vtl53XhHny74DaELRSPTif306dM6efKk6urq8m6WV+gTW/9wYhiG6uvrNWfOHM2ePbug+1FIsdaY9v14YH+rYCioP3/9zzVt8TRbr0/3FUqvYOAyUxdO1YWmC1JScMugj96hZw7pI1//yIAwNNz8XblkqohahuXpwCWNXRPFSCSiYDCoSy+9tODbdosTlcvBj3V1dSmZTGrKlCl5v3YkYTjbevJdzon3Mt+A2N3drX379o0oSNpZv92w2djYmK5wHT9+XBcuXNCePXv08ssv6/nnn9f+/fvV0dGh+fPna9OmTbr77ruzvg9NTU2aN2/ekMdvvfVWPfXUU6N+n4HBCF0oCpkubE6ePKn33ntPq1evHlE/qEJXuqQPmlU1NjZqxowZmjNnjiPbH0vDHXumyXJDpaH0CHi5ZHq9BhW5Lhy5kOceY7SyDWwRrYyOKCRFK6Pa8NgGbdm0pa9vmCFd9Z+ucmhv4QduBNhQKKSuri5Nm5b7Bk8xGUnQ6+zsVHV1dc7l3A6vP//5z9XW1ibTNNXR0aHTp0/r29/+tn7xi18oGo1q3rx5CofDeu+997Rp0yYlk0l9/vOfH/b9ePjhh3Xttdem/11ZWfKWfioAACAASURBVOnI+wwMRuhCURh8Yd/c3KzW1latXr16VM0PChm6Uk0kd+/erUsuuURVVfaaXvnZaCfLHa5PWEaDmsFhdAKRgKzE0DfUTJiKTIyoZWdL3lWtbGpuqdH0q6brjX9+Q00/btKOR3fo7W+/zRxdGDEnmz36Sf8Kkl2hUEgTJ050a5dse+SRR9I/v/7663rllVf0yCOPqLW1dUhY+rM/+zM98sgjOUPX4sWLtW7dumGXAZzAWJsoCv1DzfHjx3Xu3DmtWrVqVIHLyUqXXbFYTJMmTdLcuXMzPu/Hi4Rcfbo2PLZB4fKwSipKFC4P5zVZbv/Xhyfkvoc0eKhxjE4gmPmi7YpbrtCT1z2pZz/+rJ5Y+oQOPntwyDKx1phadrYo1hrLa5vHf3RcRo+heHtcye6ktt6zNe91FDs/fk8A+erfpytTdWrVqlU6c+ZMoXcLyIpKF4pC6sL+6NGj6ujo0MqVK0c9f0chmxdalqUDBw4oGAxqwYIFjmzTL0bT16f/60+8fkIvfu7FYUcvDJWEGGTDQWZy6HsZjoZ16H8dktFrZJ28uP9EyalBNexUqzpOdCgQDki9HzzGHF2ZMdhCbqm+TfCnXPN0vfnmm7ryyitzrueOO+7Q+fPnNWPGDN1+++168MEHVV5e7uSuApIIXSgira2tKi8v14oVKzx3Ih0udFmWpYMHDyoUCqmkpKTAe+Y+O7+Lkfb1SWn+ZbNeuvelYZdZ9ullGSsuGLlgKCjTGDrARTAS7AtdqeX6BaNMEyUPDmXZTLp80pCh5/NpjgqgeAw3ZPwrr7yi5557Tj/4wQ+yvr60tFT33HOPNmzYoIqKCr322mv61re+paNHj+q5555za7cxjtHWBr5nWZZOnz4twzC0fPlyxwKX05WuTCzL0jvvvCPTNLV48WLPhUWnuNncqf9FfKYqVzAS1K1bb9WGxzYMacq48nMr+yonGJH+73ewNKhweVjr/2m9LCN7MEoPftJPKpTlUl5ZrqX/eemIm6MC/dEM09+yha6mpib92Z/9mT7+8Y/rs5/9bNbXz549W9/5znf0sY99TOvXr9fXv/51PfLII/r5z3+uhoYGF/cc4xWVLvhaqlmeZVmqrKx0NLTkE7rsNFPJtK5jx44pHo9r2bJlRRu43O4bl3EEQ6mvj5cpbXhsg+as6xsFMlNTxnX3r9PO/7ZTOx/b2TdCVoaBIeZumKuJsydq7//c69px+EWoNDSgipVmSn/+Rt9Q/6WTSofMyZUKRqMdPGX2H87WtZ++dsTNUYH+ivV7dzywLGtI6Dp//rxuuukmVVVV6Sc/+Une67zlllu0adMm7dq1SytXrnRqVwFJhC74mGVZ2rt3r0pKSnT55Zfr4sWLeb0218nWblhILTfc+jKt6/jx4+ro6PBkc0g/yXQRHyoL6WM/+ZhmrJiRc9jyaGVUH/nbj6ju83U603hGP7vtZzJ7zQHruvF7NypaGVW4PKyG7xXvHdBAOCAraSkQCgypVqWYpqlgSXBIVbH/UP/D9dNLDX6SLZTZMdrmqAD8b3CfrlgspptvvlnxeFy/+MUvNGHChLzXOZKRHQG7CF3wJdM0tWfPHk2YMEELFizQuXPnbFdT7IQkpw0OXe+++64uXLiglStXFv2Xu9uVrmwX8XN/f27e65n7+3N14+M3Zg0EK/7DiqINXZd9+DJd943rFJkYUaIzobbmNm25a4uSPQNnlQ6VhLTqL1dp+yPbBzxuGdaAatVwwWi0g6dgeDSbs4eBNPytf/PCZDKpT37ykzp8+LB+/etfa8aMGSNa57PPPitJqqurc2w/gRRCF3wnNXnw5MmTNX/+fEn5XdjnW8FyarmUkydP6uzZs1q1atWoR1hEHycv4odbV6IzoVBZSEZPhuZ12fxuMl+3BcuCUlJa+5W1mrO2rzllW3ObXrv/NVv7O3hOrYrqClkZJjWzDEt199apoqpCr/31awpGgrIMi2qVxxAm4BSvhvj+oWvTpk164YUX9M///M86f/68fvvb36aXW7VqlUpLS7Vw4UJdf/31+v73vy9J+vrXv66Ojg5de+21qqio0Ouvv66HHnpIf/zHf6za2toxOSYUN0IXfMUwDDU0NGjatGlD5rLycuhKLXP69Gm99957Wr16dd6BK3UR5be7s4XaVycv4rOtq6K6Iq/jKZlYohseukHvN77vWIUsVBbS6k2rtfO/7Uw3qwyEA1p33zrV3lE7ZL8XfWyRdn5n55DK1GCDh16PVka18bsbtfmuzemmhIFIQBu/u1HRyqhW3LlCiz62iGoVUOS8es7pP0/X1q1bJUlf+MIXhix3/PhxzZ07V8lkUobxwQ2ompoaPfzww3riiSfU3d2tqqoq3Xffffra175WmAPAuEPoguelvuwNw1B9fb1mzJihqqqqjMs4vV27ocvOMrFYTJ2dnaqrqxvVpM1+5NU7pfka0JQxFFS8Mz7s8qZhat7GeZq3cZ72/L97slacApGAFn5hoa5cd6WmVE9Rx8kObXtgm87tO/fBQkEpXNo3Wl/V+irt+u4uqa8Llaykpbcfflu1dwy9OxutjKru3r6mMju/s1OhkpCMhCEZA+fZyjSYRarqd6axb4LRwX3kqFbBz7waJmBP/z5dTU1NOZcfvMxtt92m2267zYU9AzIjdMEXksmkGhoaNGfOHM2ZM2fI8241L7Qr1/ouXLigjo4OfeQjH1E4zMfOz/o3P3y/8X1t++q2vnmp4oYW3LhARzcfTU/C3L/J3cbvbkz3FUv2JGVZliLlkfRysfkxVddWKxwOa9riaZr7+3N16ren1PxKs2bWzdSE6RPSFaWWnS194akn81xY/fWfiDgQDGjtF9eq9s5avfvau7YGs0j1dQMwPnk1nA43TxfgRVz9wfOSyaTq6+tVVVWl2bNnZ1zGjdAl2avQ5FrfuXPndPLkSV1yySWKRCK2tjvctvzG7YE0xkKqwjOrbtaQJnax1ljGJneD+4pJGrDcrl27hmxnzro56eHu+8s27HpkYmRA36xMExG//e23VXtnLYNZFLFi+7y5hffJ3/o3LwT8gNAFzwuFQlq0aJEuueSSrMt4dSCNCxcu6NChQ1qyZIlOnTpla//gL5mGoM8WYDItO9JtDh6xcemnl+rJ654cULmaMm/KkDnM+lfEaB5YvPx4g2Ys8D7l5tVKF6ELfkPogucFg0FNmTJl2GW8GLra2tp04MABrV69WslkMsMrx4dirHS5JZ/3qX+lKjIxoieve3JARWvrPVv156//+agmIgYAr35/G4ZBc334CuNVoyi4cWE/mjt77e3t2rt3r1atWqWysjJJ3j1xwRtG8veWauKY6Ez0VbT6CUaCSnQmtOGxDQqXh1VSUaJweTjvod2BYuXVCo4XefF9InTBb/hrxbjjdp+uzs5O7dmzRytXrlR5eXne2yw24/nYCyVbH6+K6grNqptVNH23vHjhBxQ7r4ZTBtKA31DpQlHwSvPCrq4uNTY2asWKFZowYcKAZQC3pPp4ZatopSpifg5cANAffbrgN1S6UBTGMnSldHd3q6GhQcuXL9fEiROHPD9eqz0ETvtG8zfCaIRIGa/fNfnyagXHa7z6PpmmmZ6nC/ADQheKQr4Bycl5ugKBgHp6enTw4EEtXbpUFRVDBykY703sxvOx2+XERc14GI2QvyV7vHiRDP/y4t8TzQvhN9wiwLjj5KTHUt/dtv3792vJkiVZR1kcz6HLiydrABiv38n58ur7ROiC3xC6UBTGqnlhPB7XhQsXVF1dralTp9ra/njkpZN2rDWmlp0tiv3/7N15fBzlYT/+z546rMOHLMu2LEu2ZcvWiWWDuWKTUB8JJCnhm7rfQMgBLUmAEnKQtE2AtA2FhJTSL0lISlIaWkoIwUl/1Ae4oBBOg63TkrBla2VblyVLWkm70u4cvz/ErrXaa3Z3djUz+3m/XvsC7z7zzOzsaGc++xwz5JrvTSGiecYfhaLTcvdChi7SE3YvJEOYj9Dl9Xpx9OhR5ObmqnofMaPR0sm6/bl2vHTHSwE3EK64sWK+NwtA9GPENeTieC0iFaXrd7JRcEwX6Q1DFxlCqkOXIAg4evQoSktLcf78+aj1qRW6tBRgYqGFixvXkAsv3fFS0A2ES3aUaD7EaDkskvZo4e9NL/T6nZpKWm3pYvdC0hv+RECGkMqWJFEUcezYMaxatQpFRUVp3YqlJ06HM+QNhJ0OZ9LWqUZXxtlh0eP0QHALOPSVQ+weSRFp8SKZ9Imhi0gdbOkiQ0hVS5ckSWhsbMTy5cuxYsWKpGyf0WjlvUe6gbBPpC58oV4b7hxG/7v9KNpShCUblgSUb3+uHYe+cggmiwmyKGPXj3fF1TrlD4vui8/5wqLWW+iItEyrYYKU4Zgu0huGLtI8JSfFVIQuSZLQ1NSEgoICFBcXx1RfLNtn5AuBZIxL8tVpy7HBO+H1h6i568kuyEblzZVo+lmTf9mqm6v8r0fqwhfqNccrDrT9qs1fV+VnK1H7+Vr/+g/cfgCy9+Jnvv8v9mNp9VL/NrqH3QGBLdwxoiQsEhEli1bPSRzTRXrD0EVpJ57QJcsympubsXDhQqxevTrm+mK551e0E5zWToDRgpTvPc0OLqJHxGVfvww1X6gJWCZUXZHq99UpyzLEKRHWLCskUYIsy7Bl2fwBqWRHCU7+fyfR8ouWgOVbf9WK2ttqMdQ2hINfOgjJI/lblPb/5X54JjzIyMvAoa8cgjglXnzttv2QxcDPvO3f29D5fCcgAVW3VAUELgCQBRlPXfYUbFk2eF1eYNbLdX9Rh4LPFoTcv9kF2dj+4Ha8eu+rMNvMkEUZOx/fyVYuIkpr7F5IesPQRYaQjJsjzy7b2tqKnJwclJWVxb1uLXSxi1W0QKV0ggfPqAev3/F6wCQWb/z9G3j7h29jxz/uwLLaZehv6scfvv0HmK0zoWzHwzsAGTNhw2qGJEjY8fAO1H6+FsBM175DXz4EcVr0r0dwCxfX6fUAmAlPkBAUkgBAlmT8+7Z/D/2aV8bLd70ccr+EKg8AwuTM+ht/2hjydUiAd9Ib9HTjzxqx7UPbgPXBi7Q/146GbzfAYrf494vSboqc8ZAoPK39gKVVWt1PDF2kNwxdZAixdi9UWs5342O73Y61a9cmffu0Mv4JiB6olM4GaDKZMNU3FTQuCQDEKRGH7z4M2wJbUBg5/FeHL5b7IFgd/qvDcDqcyC3JxavffHWmZSqKuS1OAeufFdjm2/CRYfRYe2DPsCO3OBfeCS9sObaL+/gDDd9qQPn15SFD1OyQ5XjFwRkP05RWvkPIGLR6PHFMF+kNQxcZQjLGdAHAwMAAcnNzsX79+rBhTc0xXVoJXQGtSGECVSwTPJizzBEDTqjWn3CO/OiI8jeiIyf+5QRO/PMJ/79NdhNMsgkmS+BxZ7aE3se+iTvMlplWQUmSZgLnB5/PwdsPwmQ2YdWHVrHVKw1osWVCa7TwXasXWjyeRFHkmC7SFR6tZAixnBCUBpvBwUFIkoSKioqI9acyKKXixNf+XDuevurpoJA0d3r1vNV5ED2BZUJN8ND5m04cu/0YoL1ztrbMabSTPTIkrzQzlmwWz4QHZ14/E/Cca8iFg186CHFKhHfSC3FaDGrhEz0iXvzci3hi/RPo+E1HUt4Ckd5oMUxoDbsXEqmDoYvSjpKQ1NXVBa/Xi2XLlkU92SRjIo354usyGKpVam6gcrzigCReTApmuzloggfXkAsv3fkSpOng8EDxe+1vX0PTLy/OwjjYNKioqyUwM6HH/r/c77/Plxr3EiMiSjWGLtIbdi8kmqO7uxvj4+NYtWoVPB5PStc936ErVJdBALBkWAIClS+czW5NMZlNKNlRElQfu/AkxytffwUFGwtgsVkwPTYdupAZQS1owMw4tzN/OANJlDjui9KWLMvsnqaAVlu6ZFlm6CJdYeiitBMp2PT09ODChQuoq6vDwMCArsZhqSHUPaEsGRbc9MebAm7+GyqcWeyWoLFGthwbW7iSRPJKeHbnszBnhL9oNGeYIblDt4Dt/4v9kGU5YNxXqIlQSH+M8n1E2qDV0MUxXaQ3PFop7YQLSefOncPg4CBqa2thNpvnZfKL+Q5w2QXZ2Pn4TlizrLDn2WHNsmLXT3YFBC4g8g17fd3VhjuH0fNKD79lkkyaliBNhw5W4QIXAEgeKWjc19xxe6RfWrxIJlITuxeS3rCli9JOqGDT19eHc+fOob6+3v8lPh/jsOY7dAFAxY0VKNlREvH+Tr5wdugrhwK6pvmmKffdrJi0wZwxM6MhonwkoSZCITIqrbbgaI1W9xNDF+kNQxelnbnBZmBgAD09PQGBy2e+A9Bcg4ODmJiY8LfEATPvJ9Qj0mtRl7UDC9YvgGSSMDk5GbL8mo+vweeu/BzGz4wjtyQXJpMJv6z5ZcA9pUgbTCYTPvHMJ/Dfn/nvgBZKs90Mk9kEi93iD87sWkhEs2ntPOjD+3SR3jB0UVo7f/48Tp06hS1btsBqDfxz0Fr3wt7eXvT392PlypX+cr6yvv+P5RFquUh1hX3NKqP/XD+cHU7IZm2enNPdmj1r8OItL8JsnWmVtGRaYDKZsPPxnVFbNYmMSqthQou02NIlSRLHdJGuMHRR2vEFluHhYZw8eRL19fWw2WxhyymtT81tm2toaAg9PT2oqqqC1WpN6ETjGnIl5SLbtdqFlntaVKuP1GGymdD1YlfAlPKyKGPbv2+DVCbBcd4BZAOjQ6MwDUdvEfWMeODqdSGnOAcZizNia0FN8DVBECBJEkRRDFqGKB48dqJj90IidTB0keap/WVvMpkwOTkJh8OB+vp62O32sGW18Evo2NgY3n//fWzZsgWSpOxeTOG0P9eetCnCZ4/z4pgu7ZAleWamyVmsmVbkIx/2C3bkFOcga0kWZFmGa8iF8TPjyFk5E6jmtnCe+v0pvPXtt2ZazAQJl/3DZSj5WAlkWYYkSYm1mEZ4zfe8KIpwuVxobGwMeC1R8YZCAP4fQNQImZHqi6Uu360ufP+NtAyRXjF0kd4wdFHamZqaQl9fH7Zt24aMjIyw5bQwkYbL5UJraysuueQS2O12TE1NxV23795agltI2hThsyfhOPP6Gbz+vdchSzJkQQZMAOY/w6YfcebiZDZhWsDBzx8MGMsly3LEQO4acuHtv34b4pQI8YMZOd7523dQ86c1KeuW6Ha7cfLkSVRXV6tWp1qBMN7XZodVtdbldrshyzJGR0cjdiVOZJ8ls4Uz3rpiDbPT0zP3t3O5XDFvWzrRaksXx3SR3jB0UVoZHx9HX18fiouLkZmZGbGs0jCVrNA1PT2NxsZGVFdXIzs7O+F1hbq3lm+KcDUummd3W8xbnYc3P/pmQJc2Bq75Y7KbYIYZlkwLRI8ISZQgTUn+1siDXz4IADP/DhPIk338zBcjdk88d+4cAGDlypVJW0csgTBS8PO13scaMEOF1VgDq29SIqfTqXi71aDFwBrpNZfLhenpaYyPjye8bWrifbpIbxi6KG1MTEygubkZxcXFEbsU+sxX6AIAQRBw7NgxbNiwAXl56kzhHeneWolwDbnQ/GQz3n7kbVjsMxf1lf+3EmYrT4ZaIXtkyBkytvzVFhRtLsLv/vx3EL0XW78kSYLVZvW3YAHBgSpZxw/pkxHCand3N7Kzs1FYWJiS9SWzxVRpmI01GPtaTr1eL86ePRv3tiWyz3zH2bvvvounn34aZrMZFosFIyMjuPnmm5GdnQ2LxQKXy4WmpiYMDw/Dbrfj05/+NJ588smorWFjY2O4++67sW/fPkiShOuuuw6PPfYYlixZEnE5olgxdFFa8H0Z19TUYGxsLKi7VSjzdUEhiiIaGxuxevVqVb/0w91bK5FWivbn2nHoK4f8LSa+/zb/olmVbSb1SNMS3vnhO/jU7z4VNN5O9sgQTYHPzQ1UyTh+YqX3i3xKb3rtnjgwMAC3243S0tJ5Wb8vuNXV1eGmm26CIAgQRRG33nor/uVf/gULFy7E8PAwrr32Wqxbtw7f//734XA48Mgjj6C4uBh///d/H7H+P/uzP0NnZyf+9V//FWazGffeey8++clP4rXXXkvRO6R0wdBFhud2u3Hs2DFUVVUhNzfX35VEiVS3dAHAyZMnUVBQgOXLl6tWp4+SGx8r5RsjxgkztMucYYY0Peu+XDYzRrtGYc2yBtxPzZplxaVfvxTv/PCdiIFKzeOHiPRjPoOir1XVbDYHzDQsyzKWL1+ORYsW4amnnoLH48H+/fv9vUNycnJw//3345vf/GbYHiNvvvkmDh48iIaGBnzoQx8CMNMt97LLLsPLL7+Ma6+9NvlvkNIG+/+QoU1NTeHYsWOorKxEfn4+APW7DaoZupxOJ2w2W8RfFBNdV3ZBNorqixK+YPaP8YnAlmND+Z+Wh3zNkm2BJdOCutvr+E2UBCZrcPcvySuhaEtRyPI1n6/BrW234sbf3Yhb224NO6ulWscPJY+aPwIZmVYniNAare6n2WO69u/fj127dgWEq71798LtdqOhoSFsHfv378eyZcv8gQsALr30UpSVlWH//v3J23hKS7zUIcPyeDw4evQoKioqsHDhQv/zyQhTalzkdHd3Q5IklJSUJFxXKoQa4zOXLMqo/mw1TPbAE7Yl04JrH7kWtx2/DZv+bBNs2cH3SaP4mGwmmDPM2POzPdj1412wZllhz7PDmmXFzsd3YsmGJdj5+M6g57MLsnURqBgolNHiRTLpk1b/5mZPGd/R0YGKisAfikpKSpCdnY2Ojo6wdYRaDgA2btwYcTmieLB7IRmK7xc5r9eL9957D+vXr8fixYsDyii9GFG7XCR9fX0YGhoK2lYtmzvGR/SIWLt7LboOdAVMRV5YWzgTYGdNX2gymVC2q8x/cS9MC+FWQ7EwA1a7FZI4E4bDdQdkN0Ei7YYJLdJiiJ8dukZGRgJ+XPVZtGgRRkZGwtYRablTp06pt7FEYOgiAxIEAUePHsXatWtRUFAQsoyWuhcODQ3B4XBgy5YteP/99+OuZz6EunifPXW872K+/Ovl6PpRV8jxQo5XHJxOXi0S4J30Agic8j1UqAr3PFE60WKY0Bqtdi+ce5+uUNuoZNvjXY4oVgxdZBi+Fi7fzH/hpgFWu9tgQvfOcjrx/vvvo76+HlarVfE6tWTuxXuoi/nCDxfimi9eExTGfJNxyIK+3rMeGOEeWkRE4cwe07Vo0SKMjo4GlRkbGwvZkuWzaNEinD9/Puj50dHRiMsRxYNjushQmpqaUFxcjKKi0JMFAMmZSCMeLpcLLS0tqKurQ0ZGRkzr1KNQ44XCTcZhtptReXMlTFb+0hiJyRJ+//AeWkSRsTVDGa3up9ktXRUVFUFjsM6cOYPJycmQY7Z8Qi0HhB/rRZQIhi7SjUhhRJIkuFwuLF26FCtWrIhYz3xOpOErNz09jcbGRlRVVSE7O31bIkJNxmHJsODm12/Grsd34bNvfhaWjMg3tkwJC5L6bWnNsmLR5kUhXzNnmGHLCZ5oxJJpwYd/9GH/hBgmmwlmuzlocgxKP0b94Ybmh5aPJ18Y3LNnDw4ePIjx8XH/a88++yyysrKwffv2sMvv2bMH/f39+OMf/+h/7t1338WpU6ewZ8+e5G04pSV2LyTNi/YLmyRJaGpqgs1mw8qVK1O0VRfFGuJEUcSxY8ewfv16/zT2SuvS4q+NiQh3w90lG2ZuCr1kwxLs+smugNcv/5vL8fr3XofkCQxrZrs56Dm1lF9fjpMvnoQsxX7xYcm0QBbliDM9yrKM0ZbgrjGWTAs+8cwnkLkwEwPNA2j4VkPAfqq4sQLl15f7u20C4OQYBMB43xU0v7R+PN1+++147LHHcMMNN+Dee+/FqVOncP/99+Oee+4JmEZ+3bp12L59O5588kkAwOWXX45du3bhs5/9LH74wx/6b4581VVX8R5dpDqGLtI1WZbR0tKC/Px8CIIwLxNkxNIiJkkSGhsbUVJSEnKSDyN3Lwwn2kx6oV7PXZEbEMS2P7gdy2qX4czrZ/DG370Bs3VmNkVJkoAE791stplx6sApyN74PheTyYQdP9yBhm81wGQxQfJK2Pjpjej4TYd/+y/9+qV4+5G3IXrnbKwMFNYW+rtmzg5Yvv0UakwdEUWn1W5zWqOH/bRo0SIcPnwYd9xxB66//nosXLgQX/3qV3H//fcHlBMEAaIY+D37X//1X/jqV7+KL3zhC5AkCddddx0ee+yxFG49pQuGLtItWZbR1taG7OxsrFmzBsPDw4qWm4+bHvu0tbWhoKAgYhfIdAtdQPSZ9Oa+Hi6oFdUXofL/Vvqf73m1B/v/Yn/YiTpMVlPUSTxkSYY10wpxKrb0Zl1gBSSEbJHKLsjGVQ9cFdBC9dbDbwXVseOhHVEnKSEiImDTpk343//934hluru7g55buHAhfvnLX+KXv/xlkraMaAZDF+nC3F/ZZFlGe3s7bDYb1q1b5y+j5ZauqakpLFy4EKWlpRHrImWUTIXuC2fv/b/3cOTRI8AHPfxMVhP2/GwPSnaUYLBpEAAw5hjDq/e+CnE6MFxZs6wQPYHPWTIt2P3T3Rg9NYq3f/A2BHfgfcbMdjM+/vTH/a1UobZ37r9rvlODlr9vgcVqgegVsePhHaj9fG2ce4eIoknHH7jioYeWLiI9YOgi3ZFl2X8/q/Xr1/tPBvPVgqWkvu7ubsiy7A+Iqdo2mgk3V99/NervqPcHrNlhqPQjpf6yxVcW4+mrng4IXrIoY8fDO4LGU224YQNcQy68/YO3g9Z5zcPXBNSrxMpdK7Hpuk3ACDgmiyhFGCb0i+dK0huGLtKdrq4ueL1eVFZWBpww5yNMKSnX19eHoaEhLFiwQLVto9hlF2RHDUKhJu4I1z3QV6d/IhCLOaEWKpPJhMzFmVi4hveGocTwYpTUxJYuInUwdJGunDp1CpOTk6ipqQk6csxINAAAIABJREFUCcznBBnhDA8Pw+FwYMuWLTh27FjU+tjSNf/CjRcL150x2kQgRPOBF8nRMUwoo9X9pMVtIoqEoYt0w+FwYGxsDLW1tSG/bLU2psvpdKKzsxP19fWwWq2KThAMXdoQ64QVnOCCiIiIIuHNkUkXent7MTw8jNraWpjN4Q9btcOUEqHqc7lcaGlpQV1dHTIyMmLaPkpfPD6IUoutJdFptaWL35ekN2zpIl1YsmQJli1bFjFwJRKSwonnS93j8aCxsRFVVVXIzr7Y+qFkvUZu6dLqiVsruG+IEuMacsXUzdeo37Vq434iUgdDF+nC7NaicLQwkYYgCDh69CjWr1+P/Pz8mOszcugiIkqWxl80ouHemRlGZVH2T4CTTLGGPD3T4o9CWtwmokgYusgw5ntMlyRJaGxsRElJCQoKCkKWU1JXNHoMZb59xJMkUfLp8TtitljDTNMvmvC/d8/cFNd3u4dDXzmEkh0lEZdP5Dup/bl2vHTHS0GznEZ7L6Hem9bDG7+7idTB0EWGkYwwpXS9kiShtbUVS5YswYoVK8KWVbLeSGV44qN0xuNfOb3uq0hhJlxgefXeV4PqMVlMcDqcYYNOIlxDLrx0x0szN0V3zzw3O+T51jfQNICGb1+8v1/VzVVo/VVrwHuTZVlReCMi/WPoorSj9pguk8kEp9OJgoIClJWVJbReo3YvNOr7Uhv3EaltPltRwq070vPhwozjFUdAONn+j9uxrGYZpkanYLaaA25oDgCiR8SYYwwn/vsEjv74KCx2C4RpAZU3VWLz7ZuRtSQLg28OQiqQUHp5adB2hLqRuo/T4YTZZvZvIwCYLWY4HU7/dposJngnvDMvflCu8WeNAf8++OWDM9s6JYYMb9H2Z6o+W7Z0EamDoYsMIxljupTo7e2FKIrYsGFD1LJKQhelJ372pDalXeBSue5wz7uGXDh98DRMlsC/A7PNjMGmwaAwdvivDsOWY4M4LULySkHrlwQJL37uRf+/xamZUNbyZAtanmwJKGuymXD5ty5Hzedr4HjFgQN/eQCyMPNdbbabsfunuwPuxedb72yeCQ+6XurCe//03sx2KmC2mCEj8Jxgtpn9LXSR9meoVrNkfbb8MYhIHQxdZBipvOmxT19fH0ZGRpCfnx/1olnpRTVPcESUCFmWMTU8FbELXDKFa7FaWr005PPTzumZbnhW88XWoQ+IHhEXTlyA2Ro8c+3csgGCc1hYslfGG3/3Bt74hzcAGZidgySPhAN/eQAwz4QkYUqAyWQKCocA8Pb33wYsytcrCRIwpxrJKyFvdV5AKxaAoP02t9Vs7merdisYfxQiShxDF+mCml3z1Apdw8PDcDgcqKioQHd3tyrrNWo3PKO+LyKtmuydDO4CF6YVRW0hu9/ZzOh/tz84rJiAV7/5KkRPYMuRNdsKyStBEiW8/r3XIwcstYQJar6WNOmDAjJkyGKY7zMx9NMhi3pE1N1W52+xEj0iLv3apTjx+xMBY8Eu/dqlIUPebLM/W7VbONm9kEgdDF1kGKkMXU6nE52dnaivr4cgKOtKonT2QoaT9MXPntSSszInqNudrxUl2fJW54Vct2vIFRSeBFfo709JkPx1eL0pCFzzQQYaf96Ia//5Wgy1DaH5l8048k9H4J0MHAv21kNvhexCOdvsFrL5auFMJQZB0qPwd5ol0plUhS6Xy4WWlhbU1tYiIyND9Yk5jHjhzTAZHS8gSE2ZSzKx8/GdsGZZYc+zw5plxc7Hd6bkwju7IDto3dsf3I43v/+m4jokTwz9A/VMBl6+62U0PtEIySNdDFyzhAtcZrs56LN1OpxBXTF9rWCuIRf63+uHa8gV2yZqMOCIogizmZewpC9s6SJDSfaFvcfjQWNjI6qqqrBgwQIA6oa9aGW0duIjIu2quLEiYAKIVLZ0zF33YNMgf+ZVmwm47qnrkFucC++EdyZUNfXDM+4JKCZMCehv6sevP/rruLscau3cI4oiLJYYBtARaQBDFxlGLPfViiecCYKAY8eOYf369cjPz0/KerV2YlMLW7qI5kd2QXbMYSvSJAyxTNDgW3f7c+049JVD/hkESR0mkwlnGs7g2BPH/GPCJCHETI6ihIZvNSiemn4uLX53M3SRHjF0kWEks3uhJEloamrCqlWrUFBQEPS6mjdbTtdgRtq8uCH9SeQ4ijQJw9zXfPfKinTfKN8YIwYu9YlTIo48emTmH+7w5Sw2S8ip+JXePFqL3QslSWLoIt1h6CLDSFbokmUZra2tWLx4MVasWJFQfZy9kMLR2kWNVvE4Uiae4ynSJAxA8LTlvntlSYKENXvW4NT+U7DYLf6wVrKjZObeW2Ye2/NJ9Iiw2C1Bz+WtzpvXe7klgmO6SI8YukgX5nPK+BMnTsBut6OsrCzp62U4IaL5Em6qd6fD6f//uS0qvtkIT7xwAsDFmxAfuP0ATGbTzL23QkwOQam15atb8PZDb/unxZclGW3/2YY3/u6NmRs9R+h2qMWWLnYvJD1i6CKKwOPxwO12o6amZr43xU+PoUxrJ2wiChZuqnffNPPRpi0PWO6D2QfFWG5cRclhAt5+8O2ApySPhNf+9rWgoqHu5abFcw67F5IesW2WDEPtlq6+vj54vV5UV1dHDA1s6VLGqO9LTdxHpLZYpgkPNdW7byrygNdy7CnYclJNDLk33L3ctPbDGUMX6RFbusgwYgk/0QwPD8PhcCA7Oztqv3GGruiM+r7UpLWLGtK/eMbrRJpmfvZrA00DePVbr4acIMOSYYEkSZC9/JvXE0uGJeS93LTavZBjukhveMSSbqQqsDidTnR2duKSSy5RdKKJ5WTE4EFEySbLMqaGp/wTX3icHghuAYe+ckhxi1dRfVHImex8r9V+oRa3Hb8NV/ztFbBkWmDPs8OSacEV37kCt7XfhqvuuyoZb42SxJJhwU1/vEkXk2gAHNNF+sSWLjIMNUKXy+VCS0sL6urqkJGRoXg5tVrYor2HyclJdHd3w2w2w2QyhXz46on2AOCvJ5Zl4i1HRKkzeW4y7KQYSqYJVyK7IBvbvrkNNV+oCaore0nqbsRMibHYLdj1k11YsmFJyNe12tLF0EV6w9BFuqBGYInG4/GgsbERVVVVWLBgQUzbpuZYsnBlpqen0dLSgtLSUmRkZECWZUUPX52yLM90+VFQTml9SsoBgNvtxuTkZMzdQdQIe2oE01SsP9JnTxSrnOKcsJNiqD1N+OwbMLuGXBhsGsTYmbGEtp/UY8m0YPdPd2NycBJ/+M4fIE0HHheyKfL3jha/lzimi/SIoYsMJd6TgyAIOHbsGMrLy5Gfnx/TsmqOJQtXRhRFNDY2ory8HLm5ubBa9fWn29raijVr1iA7W/mv36kIhb4QOnuZ+QimsizD4/HAbDaju7tb8T7SQihVUk6tekm5zCWZ2Pn4Thz6yqGAcAUE328r1DTh8Wh/rh0Hv3TQP3NhRGb4py+n5DKZTFj1oVXILsiGxW7BK998JeAzkqalqMeA1v7+OKaL9EhfV25EEcTb0iVJEpqamlBcXIylS5cmYcsuimdcmizP3Jx5+fLlKCgowPT0dDI3MSni+WzS7UK7u7sb2dnZKCwsVLxMqoLp3PLhgmky1j/3uampKRw5ciSmfZuuwTTUpBj97/VH7HYYL9eQC4e+ckhZ4AJgzbBCEqSYpqEnZUxWE2RBhiXTApPJhO0PbofT4cT7v38ff/j2H2C2moM+p0jHgCxrr3shW7pIjxi6yDBMJpP/AlEpWZbR1taGxYsXY+XKlWHLRDrhKD0ZKQkeocp0dXXBbrejpKQEosh73tBF6RZMp6en0dHRgdraWsXLpDoUhgqmQOjwqjTkKl3/7P00MDCA06dPX9wRp2cenlEPhGkhYB8J0wK6LnTh7Ltn4w57Y8fHgBgORcEj8AokSWpvrcXKbSuRkZ+BMccYGr7dALPVDM+4J+wy4aaK1yqO6SI94lceGUY8rSknTpyA1WpFaWlp2DrVEs/29fX1YWxsDJs3b1ZtO+ZDvK2Q6Yb7SH3pFkyBmR9q8vPzUVBQEPL1JT9ZEtDt8E/+359gw0c2AIg/bOZZ8/Cm9GbwymwABABzD20RMd0/ipRr/GkjWn/VCkmQACnyTa1NNhPMZjOu/v7VyFycicnzkxjvGQ+YFIUtXUTqYOgiw4j1wt7hcMDlcqG2tjbiCUWtE46SOma/h9HRUXR3d2Pr1q2aO+GR+vgZk5oiHU+R7sUVr/z8fOz6yS4cuP2Av+uayWbCnif2AAAOfvkgZJMMyc3uhKkgTArRCwGQvTKkLAkN32pAx6sdGDgw4O+eWP71chR+uBAulwuNjY0x9epIRhfa559/HuPj47BYLJicnERXVxd++tOfwmKxwGq1Bvw3NzcXV111FR555BHs378fnZ2dyMrKwuWXX46HHnoI69evj/ge7r//fjzwwANBz+/fvx+7d+9WtB+I5mLoIsOIJXR5vV4MDg6ivr4+atdBNVsflHQvBGZm+2tra8PmzZt1N2lGKGzpItKW2TMOqsUX5gabBgEAhbWF/nWU7CjB6YOncfhrhyG4ggOBJdMS8kbLFJnZHjw+K1ayW4YMGX2/65t54oNhw10/6sI1X7wGnWc6UVVVBZvNFrmeJHfhLS0thdPphCAIGBgYgM1mg8VigSAImJ6ehiAIEEURgiBgwYIFKCkpwc9//nN88YtfxD/8wz/A5XLhwQcfxGWXXYbm5masWrUq4vvJz8/HgQMHAp7buHFjrLuXyE//V3NEH1B6YT88PAyPx4Mrr7wy6uxHaoYFpXX5ZiqsrKxEVlaWKusmIkqF7IJslH6kNOTzZbvKIH81+DvQnGHGJ575BM63ncdrf/taCrbSGKq/WI3y68rxuz//XdjAarKZYLaYYbFbIHpESIIEWVB2TvNNriGblPX2mN06lQw33nij///fffddjI2N4bbbbgtb3tcaNvs8evXVV6OkpAS/+MUvcN9990Vcn9VqxbZt2xLfcKIPMHRRWhkfH/d3M5iPFiSloXDDhg1YuHBhCrYoNdh1Ljq2BpLRZRdkY9ePg7sg7v7JbpR+pBSZCzNhz7VHnPAhHZntZphggui5GKwsmRZc+TdXAgj9/WrLsUEWZex8fGdAV9KeV3tmxvNZzPBMRN7Pvsk1ent61X1DKlAypivU/TYXL16M1atXY3BwMFmbRhQWQxcZRrSLVrfbjebmZtTV1aGpqUmVOmPdvmgcDgfsdjuWL1+uyjq1hIGCiCJ1QcxbnTcz+UMyaPy+YCarCRa7JWTXS2umFVvu2oJ3Hnkn4J5rvv02935s2/9xO5bVLAsYr+f77+zxfANNAzMzG36wXNXNVWj9VWvQOmSHNifSiOc+XefPn8fJkyfx5S9/OWrZ0dFRFBQUYGxsDFVVVfjOd76DG264IZ7NJQLA0EUGEikgeTweHDt2DFVVVSF//YqnTjW3DwB6enrg9XqRk5Ojyvq0RGsnbCIj0/oPHJG6IM4NEBv+zwZ0PNsBmABxSoQlc6Z1Q5ZkxWOZNvyfDaj/cj1Er4jfXP8biNPhx45t++ttePvhtxV3wVOLJcMSdp2SV0LNF2pQ84WakJOfxDoxim88X1F9Eco/Xh6w3LZvbQuqR4vHU7xTxn/ta19DTk4O9u7dG7HcunXr8PDDD6Ourg4TExN44okn8KlPfQrPP/88gxfFjaGLDCNcqBEEAceOHUN5eTny8/NVqVPN7QOAoaEh9PX1oaKiAg6HQ5X1aY0WT9ykLwzvyul1X4UKEFfffzWcDidsOTZ4J7wB3eRkWZ4Zz2RByCnoLRkWXPPQNf4Asesnu8J3rzMDdbfWQZwSceRHsd2AOxxLlgWie86GmRA8hb4E7Hh4Bxq+1QAAENyC/+bGs1u1wgWqeCdGmbtcuHq0cjyNjY1hYGAA3d3dGBsbQ0dHR8hyFRUVQc/95Cc/wdNPP43nn38eS5Ysibiem266KeDf119/Pa644gp873vfY+iiuDF0kaHMvbCXJAlNTU0oLi7G0qVLY64vFSeaiYkJdHZ2YsuWLfB6vUlf33zQyglb6xhMiZQFgYobKzDlnELDvQ2wLbBBEiRU31aNtl+1wTt58XvUkmGB0+EEADgdTpTsKMGtbbfC6XDi8MOHMbB/wF+27tY6ZBdko/6Oerz3L++FvL+VbYEN2x/cDmFKwB++8wdI0+Fb2yyZFlz9wNV4/XuvwztxcZvsuXbUfrEWR398FGab2T/2quLGCpRfXx4UMNWeZTJWWrpP1759+3DnnXf6//3UU0+FLDf3u/T3v/897rzzTjz00EP40z/905jXazKZcMMNN+Dee+/ljZkpbgxdpAuxzJzkI8sy2trasGjRIqxcuTLudavZ0iVJgSdoj8eD5uZm1NTUICMjA16v17AX3kZ9X2rRykUNkR64hlz4w7f/AHFa9HcXbPm3lqBykldCf1M/fv3RXweMVSrZUYLz/3s+oGzrr1qx7VvbkF2Qjd1P7MbBLx0M6oooSzLWXbfOHwR9XSFFj4jVH14Nx8sOWOwWSOLF9fzxvj8GbVP9nfWov7M+qCtfMqbyN5JbbrkFt9xyCw4fPow333wTDz30UNRl3njjDezduxe33347vvGNbyS0fn5PUyIYusgw5nbfO3HiBKxWK8rKylSrMxFz65IkCY2NjSgvL0dubq6i9fELn4hoptXKbDMD7ovPWeyWoAkntv/jdjR8qwGCW/CXPfSVQ/j4f34cJqvJf08q4OIU6dkF2f5ujs2/bMbbP3h7JkjNmcAiVFdI15ArKEjNHaempLug1mjt3KO0tamtrQ3XXXcddu/ejcceeyzu9cmyjBdeeAG1tbVs5aK4MXSRYcwOLA6HAy6XC7W1tWFPFkq6TCRr9kJZltHa2oply5YFdHs06rThRn1fRDQ/8lbnBXX/CzXhRKhwZrbNzHo3d+IK3xTpPtkF2dj2jW2o+XzoCSx8ZZR0hYxlogut0eJ3t5LQNTg4iN27dyMnJwd33XUX3nnnHf9reXl52LRpEwCgoaEBH/nIR3D48GFs374dALB9+3Z86lOfQkVFBSYnJ/Hzn/8cb731Fvbt25e8N0WGx9BFuqC0e6Esy+jv78fg4CDq6+vDLucrqyR0qcl38jp9+jSsVitKSkpUrZ/0TYsXN6Q/6XAchZrpMFwLUqhwVlhbiPKvl6PrR10hl5+7rkSDErsNqkuW5aih6/jx4zh79iwA4Jprrgl4bfv27Xj11Vf9dYmiGPB3s27dOjz66KPo6+uD2WzG5s2b8eKLL2LPnj3qvhFKKwxdZBgmkwlutxunT5/G1q1bI97DI5aWF7W7F/b39+PChQvYvHlzUKgzaouQUd+XmrTWfYf0LR2OJyUtSJHCWeGHC7HjCzsw3jOuyxaoVNHisSSKYtT7dO3YsUPReSdUuSeffDKh7SMKhaGLDMPlcmF0dBRXXnklrNbIh7bSEKB290K3243+/v6woZDhhIhIOSUtSJHC2YKlC7BgqfJ7N6YjLZ6TOIMg6RFDFxmC2+3GyZMnsXjxYmRmZqpWr5ohyOPxYGBgANu2bYPNZlOlTr1gmCSi+cTufcbC0EV6FLltlkgHPB4Pjh07hrVr10Zt4fKJpaVLDYIgoLu7G0uXLkV2dvgTP8NJeuNnT0Rao8XuhZIkMXSR7jB0ka6Joohjx46hvLwceXl5ii9aUzmmS5ZltLS0YOnSpVFb4YwaurR40tYa7iNljPj3oTbuIzI6JWO6iLSGRyzplu8+V8XFxVi6dGlMgSUZY7rClXv//fexYMECLFmyRFE98a5H6/S63UREpC3sXkh6xNBFuiTLMo4fP45FixZh5cqVAc8roXboClfu7NmzcLlcKC8vV1SXUVu6iCi12HJKRsbuhaRHDF2kSydPnoTFYkFZWZn/uWRcZCQSgi5cuICzZ8+ipqYGJpNJtdClx4sphklluI+IiKJj6CI9Yugi3enp6cHk5CQqKioCAkgyuhcqNbe+yclJtLe3o66ujicGUkSPYZqIaD5wTBfpEY9Y0pX+/n4MDAz4W49mm88xXbPLeb1eNDU1obq6OmDiDDVauvR6Yc6WLiIiUosoiopnKybSCoYu0o0LFy7g9OnTqKurS/jGwskKXb7JPdatW4e8vLyY62I4IaJEybKs2x9oiJTgRBqkRwxdpAuyLOP06dO45JJLwt5YONbAkozQdfz4cRQUFKCwsDBkmXTFMKkM9xERUXQc00V6xLZZ0gWz2YzNmzdH/JKNtaVLbT09PQCA0tLSsGXY0kXhpHMoJyKKhSRJHNNFusMjlnRDzYtStbsXejweDA8PY9OmTWG306gzEyrBMElERGph90LSI4YuMoz5GtPldDrhdruxadOmiL+8qRU8GF6IiCidMXSRHjF0kW5EawVKVuiKZGpqCi0tLcjNzQ071ozY0kVEROrhmC7SI4Yu0o35GA8VqU5RFNHY2IiKigrYbDaO16KE8PggtXD2QjI6jukiPeIRS4aRrJsjhyonyzJaWlpQXFyMJUuWcDr4KNL5vRMRkbrYvZD0iKGLDCOVY7pOnjyJrKwsFBcX+8sREREZiVZ/LGPoIj1i6KK0lEjo6u3txfj4ONavXx/wPFu6iIiIko9jukiPGLrIMGJtbYpnIo2RkRE4HA7U1NQEvMbuhZGl83uPBfcREWmJVscHckwX6RGPWEpLsZxEfBfCLpcLx48fxyWXXAKrNfC+4qm+Bxcvzo1Hixc2WsN9pAy/H8jo2L2Q9Iihi9JSrN0LvV4vGhsbUVVVhczMzLjXm+jFkF4vOtnSRZRaev2uIG3RaksXQxfpEUMXpaVYQpckSWhqasKaNWuQn58fd30MHhQNjw8i0hKthi6O6SI9YuiitBRLAOrr68OiRYtQVFSUUH3pHLrS+b0rpcULGyIiLRJFkWO6SHd4xJIuzNcF6YULFyBJEtasWROxXCq3jxfnlM4Y3olSR6stXexeSHpkjV6EyHiUtLycP38e4+PjKC4uVnTSSUVLl9frRXNzM0RR9Nfpe/j+bTabA/6t5iPeOqenpyEIAlwuV0z1E1HsGEzJ6Bi6SI8YuigtRQtA4+PjOHHiBEpKShK6iXKsZSKRZRnNzc1Yvny5v6ujLMv+On3/r8WHy+WCKIqYmpoKeB6Y6Zsf6j3EK1SQ8wXRZIdRX3eXeOrweDzwer3weDwRwygRUapotaVLlmWGLtIdhi5KS5EC0PT0NJqbm1FbWwun0wmPx5NQfWo5efIkcnNzsXTpUv86tXgyDKW/vx8ejwclJSVJXc/csBfqOTUfkiSpto7p6Wl4vV5MTk6GfQ/xSmYrZrQ61Wx5FQTBv99n10nBuF9IDVoNXRzTRXrE0EVpKVxIEkURjY2N2LBhA3JycuB0OhVf7CazpWtwcBBjY2Oor6+H2+2Oq475lIpQ6luPFi8QlDh//jwmJiZQVlamar3hQp7vNTWDo6++ufWrFYAlScLk5CSOHj2a8PEUaytmsh5q10+UDti9kPSIoYvoA7Iso7W1FcuXL0dBQQGA2KaWV1ImngvFiYkJnDx5Elu2bNHtRVWqQhcFM9LFuNfrRWtrKy655JKE6okU7IDwXV4TDaKRwq9aDwBwu91wOp2KL0p9rRnxhMVEutQqDaOJrsO3LMVOyy1dDF2kNwxdlJZChYBTp07BbrcHdIGLJXQpaemKlSAIaG5uRnV1Nex2e8zLk74wmKaGkYJoKMePH0dJSQlycnIULxNPuEtWEFU7jIYzOTmJI0eOhN0fiQTRZLWSzl5HIvX7llVyXGgR79NFesTQRWlpbkjq6+vD6OgoNm/eHFQunvrCieUEJssyWlpaUFZWhtzcXMXLaZGRL3DVwn1EaonnQtnoQTSUI0eOYOvWrWFfjzfgzQ6WsdQTLYiqGUiVkiQJ09PTOHLkSFxB1HdMJTqZ0cDAAN577z1YrVZYrVaMj4/jtddeQ09Pj/85i8Xi//+SkhLceOONaGhoCHpPbrcbmZmZEd/366+/jnvuuQfNzc0oKirCV7/6Vdx1112K9xtRKAxdlJZmh6TR0VF0d3dj69atQRcdSsNUrOtU4tSpU8jKysLy5ctVWf980+ovpkRGlG4BKhnSMYjO5XK5cOrUKVRVVQGIP+z5lo21666v/MTEBHp6eiCKIgRBwOjoKI4dO4aTJ09CEAT/877//8xnPgMAuOaaa/D9738/4D1lZGREfM8nT57Erl27cN111+HBBx/EO++8g3vuuQfZ2dm49dZb1d7FlEYYuigt+QKQ2+1GW1sbNm/eDKs19J+DkrCgdvfCwcFBXLhwAfX19YqXISIiSqb5CqKrVq3CVVdd5f/3Zz7zGXzzm9/E6tWrIy63ePFibNu2LaZ1/eAHP8CKFSvw9NNPw2q14sMf/jB6enrwwAMP4Itf/GLaB3GKH+fbpLTlm6mwsrISWVlZIcuoOaYLUBbgJEnCiRMnUFtba5gpcdVsMTQy7iOi1ODfmjK+LoVak8yJNPbv348bbrgh4IfYvXv34uzZs2htbU3KOik9GOOKjigO586dQ2lpKRYuXBi2TKon0hAEAW63G5WVlWEnztDiCZASx8+ViEgZSZIU/Sh56NAhZGdnIzs7G7t27UJzc3PE8pOTkzhz5gwqKioCnt+4cSMAoKOjI/6NprTH0EW6olZr0sDAADIzM6OOl0rlhbAsz0xZn5GRgby8vJStNxXY0kVEWqLVFhyt0ep+UtLStX37dvzzP/8zDh48iJ/97Gfo6enB1Vdfje7u7rDLjI6OAkDQj7GLFi0CAIyMjCS24ZTWOKaLdCHWWQQjlT9z5gwEQUBhYaGiOtXsXhhJd3c3MjIyYLfbGVCIKG78/iC1aCl0jY2NYWBgAAAwPj6OU6dOhQxBvlaqBx54wP/c1VdfjWuvvRYVFRV49NFH8eijj0ZcV7j3rJV9QfrE0EWGEi38DA0Nobe3F6sgCFSEAAAgAElEQVRWrcL09HTC9cVaLtJ2nT9/Hlu2bPFPzWskbOlShvuI1MKLQzKaffv24c477/T/+4orrghZLtz3aFFREa688kocPXo07Dp8LVy+Fi8fX7iLNByBKBp2LyRDiXRxPzExgc7OTtTV1SmeoCKW0BUvl8uFzs5O/8QZer5hJcWPF8lEqaOlFhwt09J+uuWWW+B0OuF0OvGhD30IY2Njcd2DLNL7WbBgAVatWhU0dsv377ljvYhiwdBFacHj8aC5uRk1NTXIyMhISstLPPWJooimpiZUVlb67x1ixFYhrZy0iYgoNlr8/hZFMebZfQcGBvD6669HvRXLnj178MILL0AURf9zzz77LFatWuW/XxlRPBi6SDeUfPGHCiySJKGxsRHl5eXIzc0NW05pfYmUm803ccaqVauCuiwYLXQBxnxPRKRP/D5SRqv7KdpEGs3NzfjYxz6Gf/u3f8Mrr7yCp556Ctu3b4fZbMbdd9/tL9fQ0ACr1YqGhgb/c9/4xjdw9uxZ3HzzzXjllVfw8MMP44knnsB3v/tdTQZQ0g+O6SJDmRt+ZFlGW1sbCgsLsXTp0rDllNaXaLnZHA4HrFYriouLE66LiIhiwwvo6LTUvXC2aKFryZIlkGUZ3/72tzE8PIzc3Fzs2LED+/btQ0lJib+cLMsQRTHgnLtu3TocOHAA99xzD/bs2YOioiI88sgjuPXWW5P6nsj4GLrIUOYGltOnT8NisQTdtT4ZYSqWoDQ8PIyBgQFs3bo15DqjbZPeMEgqw31EauBxREYnSVLE0LVy5Ur8z//8T9R6duzYEfLv5aqrrsI777yT0DYSzcXuhWQosy/uBwYGcOHCBVRUVMQdVGKZql4pt9uNjo4O/8QZoRjtokmPQTHVuI9ITTyeItNqC47WaHU/Kb05MpGW8IglQ/GFrrGxMXR1dYUNNmq3YCmtT5ZlNDU1YdOmTcjMzEyoLr0x4nsiIjIyLX9vazEMEkXC0EWGMzU1hdbWVtTV1cFms4UsMx9jumRZxtTUFFasWOG/u324uoiIKHm0HCa0huckInUwdJHhtLe3Y9OmTcjOzg5bJlU3PZ7tzJkzAIBVq1ZFLWu0CwKjtt6pjfuIKHUYJqLTavdCIj1i6CLD8HUrLCoqitiSBKh/0+No9Y2MjKC3txeZmZmKJsrgxXf64YVNdNxHRESkVwxdZBjvv/8+bDYbCgsLVa030RaxqakpHD9+HHV1dWl70cggSZQ6/FuLji04ynA/EamHoYsM4ezZs3C5XMjNzZ2X+2+FKydJEpqamrBx48awE2fEu04ionB4oUxEpC0MXaR7Fy5cwNmzZ1FTU6Nad8BYy4Vz/PhxFBUVYfHixYqXMWLoMuJ7Uhv3ERFpDVu6iNTD0EW6Njk5ifb2dtTV1cFisSSlBUuJUPWdOXMGkiShpKREUR1ERJQaDBPKcD8RqYehi3Rj7he/1+tFU1MTqqur/V33ktGCFU99o6OjOHfuHCorK2M+YRmxxcOI74nmB48jIiLSI4Yu0iVJktDY2Ih169YhLy/P/7zaF/fx1Dc9PY22tjbU1tbCYrGovk7+6khE0fB7IjK24CjD/USkHoYu0h1ZlnH8+HEUFBQEzVQ4Hzc9nl3ON3FGRUUFsrKywm4/0VxsDSS18DgitTB0EamHoYt0x+FwAABKS0uDXpvv0NXR0YGlS5diyZIlcddnxItvI74nItIvfh8RUaoxdJGuDA4O4vz589i0aVPYX99SMSthqPqcTie8Xm/IMBhrXdG2jRcMRESJYQtOdGzpIlIPQxfpxvj4OLq6ulBbWwuzOfShq/bJQWk4m5ycxPj4eNSJM9K1xSdd33esuI+IiIiMiaGLdMNqtaKmpgZ2uz1smfnoXjg9PY3u7m4UFBTAarUmXB8DSnrir8lEqcMWHGW4n4jUE/kKkUhDsrOzIUlSxDKpvk+XJElobm7GqlWr4Ha7o9anhBFDlxHfE5GW8UKZ1MDvbSL1sKWLDCXV9+nq7OzEkiVLsGjRItW2jxdLRJQIXiiTmnhOIlIHQxelJTVaunp7ezE1NYWysjIA6k7gYbSLJrZ0KcN9RJQa7DanDPcTkXoYushQUnVx73Q64XA4UF1dDZPJpFp3RV8ZXnynH17YEBFFxyBIesXQRbqi1iQUiQQbj8eDlpYW1NTU+CfOUKu7oq8uozHieyIi/eIPW8poMeCIohh2BmMiLeNRS4aS7NDlmzijvLwcCxYsSNp6I5XR2glQKV7kEKUG/9aU0et3aboTRREWi2W+N4MoZgxdpBtqds2LN3SdOHECCxcuRGFhYczL+tarpIzRLpqM+J6ItIyBgtSg1ZYuhi7SI4YuMpRkhq6+vj5MTk5i7dq1CdWXjt0LKToGU6LU0WKY0CIt7idJkhi6SJd4ny4ynGRcuI6Pj+P06dPYunVryBNQKrsXer1eTExMwGKx+CfxiPVBRESkRxzTRXrF0EWGojRQxNoy5Zs4w2azJbJ5iu/TFa6Mb0xZdna2v1ysD997mrvOcHy/dMb6MJvNAfW6XC50dXWFLBMuGEZ6PdEHEaU3fg9Ep8WWLnYvJL1i6CJDUXPqdmDmhON2u1FdXY2cnJyE16tEpG3r7OxEYWEhVqxYkbKTzuygFs9DkiQIgoCRkRHk5+cH1CVJUlDZeNcTa/AM9R6B0Ps/3uAZy8Pr9cLlcuHcuXNBwdS3XeGCbbyhU2sXU0Spwq68ymgxdLF7IekVQxcZitrjYk6cOAGz2Yxly5apst5Euhf29/fD7XZjzZo1kCQpah1qUeMCXRRF9PT0oKCgQK3NSrlkB8HZn+ns8BkqiM7dnnjCaqT3Odvczz3Z4TPSQ5ZleL1eDA8PK15mdotrurR6MlCQkTF0kV4xdJGhmEwm1QLJwMAAxsfHkZGRoWi9aoWuUGV8XfMuvfRSXlDNk2RfoLtcLkxMTGDlypVJW0eiUtEKGSlIiqIIQRAwOjqaUH2z30u09+sz+7Ofz+Cp5CGKItxuN7xeb0wtn+lEiy04WqTF/cQxXaRXDF1kKGq1dE1MTKCrqwtbt27FkSNHVNiy+PnGcVVVVcFms8Hj8czr9sRD7RZImh/zfYEuCALGxsZCziCaKvMdPJU8pqam4HA4/H938bZ6hnrvPpFaFeeGuUivz2cw9e3j+T6uKTYc00V6xdBFhpPoxb3X60VzczOqq6sVT5yRzJaujo4OFBUV+cdDEdH80cMF+tGjR7Fx40ZYrck5xc9tLVQaFn3LxBImkzXO0+v1wuPxYHx83P9cLJ+rr3wyHnPDKYCIr6v5CPc+tYShi/SKoYsMJdGTgyzPzFS4Zs0a5ObmxrTeZISu/v5+TE9PY+PGjYq3RYvY0qUM9xHpwewgoFcjIyMYGhpCeXl5XMtHC55qt3D6us0nM4jOfl++z3ZqagqDg4MhA3wyg+fcx6uvvoqRkRFYrVa43W4MDQ3hhRdegNVqhcVigdVq9T8yMzNRWFiIsrKykJ/d+vXr0dnZGfazvf/++/HAAw8EPb9//37s3r07hqOEKBBDFxlKohf3XV1dWLBgAYqKilTcqouUXqTIsozJyUn/OK65y/Hi3Hj0fAGbKtxHpBVGCJ5KnDx5EosXL8bixYtDvp6M8BfqIQgCXC4XRFHE2NgY3G43jh8/DkEQgh5ZWVm477778OabbwZsq9vtxs6dO7Fnz56o7zs/Px8HDhwIeE7vP37S/GPoIkNJJHQNDg5idHQU9fX1SV2vkpYuURQDxnHNfV1v9LjNRHrFH2Wi02K3OS2Ktp9S1d32c5/7nP//33//fYyMjOBv/uZvIi6zbdu2gH8/99xzEAQBf/7nfx51fVarNWh5okRx+hcylHhD1+TkJE6cOIGampq4TiBqdy/s7+/HihUrOI6LiOLCQEFGFe+YrmeeeQZlZWW47LLLkrBVRNExdJFuKLmIiCd0CYKApqYmVFdXw263x71taoWusbExiKKIkpKSuLaF9IstFESkJVpsEYznPl1OpxP79+9X1MoFAKOjoygoKIDNZsMll1yC3/72t/FsKlEAhi5Ka76JM0pLS5GXlxexXCRqnZQmJydx/vx5FBUVae5ER8nFz5sodbQYJrRKa/spnvt07du3D1NTU9i7d2/UsuvWrcPDDz+MX//613j++eexYsUKfOpTn2LwooRxTBcZSqwtXadOnUJWVhZWrFgRsU4lEm3p8o3jWrVqFW/8SBQGWwOJUkdLf29jY2MYGBjAqVOnMD4+jo6OjpDlKioqgp575plnUFlZierq6qjruemmmwL+ff311+OKK67A9773Pdxwww3xbTwRGLrIYGIJXYIg4MKFC4omzlAymDjR0NXR0YGVK1fCZrNhamoqal1ERBQfLYUJLdNSi+C+fftw5513+v/9/PPPhyw397MdHh7Gyy+/jPvvvz+u9ZpMJtxwww249957eY8wSgh/TifdUHNMl8vlwtTUFGpra6O2Kimd/EKpUHX19vbC6/Vi1apVYcvEsy7SD97LjNTC40gZfpfqyy233AKn04mXX34ZX/rSlyLeb2y23/zmNxAEQVHXwkh4vFCiGLrIUJRcuPomzsjKylI0cYaaF8OhvrQnJibQ3d2Nqqoq//S7vGgiokTwApHUoKWWLh9JkmLqgv/MM8/g0ksvxdq1a+NanyzLeOGFF1BbW8tWLkoIQxcZSrTAIssyWltbUVJSovjLU80TztztE0URLS0tqKqqgtVqVX19REQUTIthQou0uJ9i6eLX29uL1157LeyshQ0NDbBarWhoaPA/t337djz22GM4dOgQXnjhBXzsYx/DW2+9FXf3RCIfjumitNLd3Q273Y6VK1fC4XAoWiaZLV3t7e0oLi4OmjkxVbMlEhER6UksoevXv/41AODTn/50yNdlWYYoigHn3HXr1uHRRx9FX18fzGYzNm/ejBdffBF79uxJfOMprTF0kaFECkhDQ0M4f/48tmzZEnO9anb389XV29sLURRRXFwc8Dq7F6Ynfu5EpDVabOmK5T5dd999N+6+++6wr+/YsSPoe/fJJ59MaPuIwmH3QjKUcBeuLpcLnZ2dQRNnqHVD41i3zzeOq7KyMuiEprUTHBGR0WgxTJAy8dyni0gLeNSSoYQKSKIooqmpCZWVlcjIyIhYVmmdiWyfbxxXdXW1fxzXXNHWxxYRIgqH3w+kFi2GU07bTnrF0EWGMjcgybKMtrY2FBcXY+HChRHLpmr7zp49i1WrViE3NzdsGV40pSd+7qQWrV0oaw3/1pTR4n5i6CK9YugiQ3M4HLBYLP77X802Hy1dY2NjkGUZK1eujLg+Sj/83IlSi39zymhtP8myzNBFusTQRYYyOyBduHABAwMD2Lhxo2p1JmJiYgKjo6NYsWJF1JOYFn9dJCIyCn7HKqPV7oUc00V6xKOWDMUXkNxuN9rb24MmzghVVkmdiRIEAc3NzVi+fHnUX+jYvZCIKPm0FiZIGXYvJL3ilPFkKCaTCZIkoampCZs2bUJmZmbEskrDTaIh6Pjx4ygpKQm6H0i47SIiSgS/R0gNWm3pYugiPWJLF+mG0i9+p9OJFStWYNGiRVHrS8WYrrNnzwIAiouLFdfFlq70xM+dKDW0GCa0Smv7KZb7dBFpCUMXGUpfXx8AhJw4Y65UhK7x8XH09PRg06ZN/ueUtHRFKqO1EyCpg58rEWmNFn8I4pgu0isetWQYIyMjGBgYQE5OjqoXsPHWJQgCWlpaUFNT478fl5K6OKaLiBLB7w9SixZbBNm9kPSKoYsMYWpqCsePH0dlZaXiZZLZ0iXLMo4fP47Vq1cjJycnobqIiEhdWgwTpAy7F5JeMXSR7vkmzti4cSOysrIUh5pkTqRx7tw5mEymoPtxKVkng1n64udOamCYILVoMZwydJFeMXSR7rW3t2PZsmVYvHhxTIElWS1d4+PjOHPmTMA4rlgwdKUnrV3YEBkZv2OV0WLoYvdC0iuGLtK1M2fOQBRFrF69GkDsgUXt0OUbx1VdXR3ypMBARUSkDVoLE6QMQxfpFUMX6dbo6CjOnj2LysrKgJNnLC1dapaTZRltbW0oLS0NGMc1ty52LyQiIj1gSxeRehi6SJemp6fR1taG2tragC/fWE4Oao/p8nq9MJvNWLFiRcR1qrU+Mh5+7pFp7eKP9EuLYYKU4Zgu0iuGLtId38QZGzZsQHZ2dsBr8zWmy+l0wuv1oqKiImp9Slq6KP3wcycirdFiOJUkiffpIl3iUUu609HRgaVLl6KgoCDotfkIXYIgoLW1FVlZWVF/fWP3QiIiovixeyHpFUMX6Upvby88Hg9KS0tDvp6MX+QihSBZltHa2orS0lJYrVZVApXWflVUE8MkEWmBFltwtEpr+4mhi/SKoYt0ZWpqClVVVaqcBNRoUTpz5gysVitWrFihagsVw0l64udORBQZx3SRXjF0ka6sWbMGVqtVlboS7V7odDpx7tw5bNy4UXF9apTR2q+OSrHbZGR6/VyJ9IjfRfrFMV2kVzxqSTfUvihNJHR5vV60traipqbG/4ubku1L9+6FRInixTKphd+1+sTuhaRXDF2U1pSGrrnLtLa2oqysDAsWLIi5PrW2S2/Y0kVERIli6CK9YuiitBXLr5yzw0JPTw/sdjuWL18eVF8quheSMfFXd6LU4UQa+sXQRXqlzuAYIh2Kp3vh2NgYent7cemll8ZVnxrdC10uF5qbm/1lzWYzTCZTXI9ULivLMgRBAAB/f3xe9BARUSxkWeaYLtIlhi5KW7GGLt84rrq6urh/ZVMaMsJtlyRJaG1txdq1a5Gfnw9ZloMekiSFfD7aY+5ysdYTrbzL5UJra6v//cXbmqeXkBlu2ViOAyJKDrZ06RdbukivGLoobcUaunxhZ+44rljrS6Q17OTJk1i6dClyc3N190vf0aNHUVNTE/fsk759olbIDLeskvoSWWekz39ychJHjhwJel6vAXP2w/c+iIgSwdBFesXQRaTA0NAQMjIyUFRUFLaMktCltEwoFy5cwNjYGDZv3ozp6enoG60xSkNppOVn/9eIjhw5gq1btwY8NztsqtWKGUsZtUJtPEIFN1/3WrXDYiLLR1uOiNTD0EV6xdBFaUtpCJiamsLo6CiuvvrqhOuLtzXM6/Wivb0d9fX1CYcX0pfZYVNvrZuJCBXiRFFEc3Mz1q9fr1pL5OyyibZghlo+HomGvunpaZw6dYphMwJZZvdCveLNkUmvGLoobSkJL16vF319fSgpKUnZBe/c7ZJlGW1tbVi7di0yMzMhSZIuLxYYFikWoS7cLRYLzGYzMjMz52mrkk+N0Hf+/Hnk5eWlXdiM5TExMQFRFJOyXkouURTT6gcoMg6GLkpb0UKALMtoaWlBYWEhbDZbwvXFW6a3txdWqzVi10YiMgY1LtytVisKCgpU2qLUUDv0RSsrCAKmp6cxMTGRNmEznuUkSYLL5VK0bKqweyHpFUMXpa1oAcjhcCArKwu5ubmQJCnh+pSWmW1ychIOhyPkFPV6w5YuotTQ499Zqi/cvV4v8vLy5j2cJjNgzl1OEISYl5uenkZXV1fUcvFQGhTPnj2Lp59+GlarFVarFT09PXj88cexcuVKWK1WtLe3o62tDWfOnMH4+DgeeOABfPe73w1a37lz53DHHXfgpZdeQmZmJvbu3YuHH34Y2dnZEbdzenoaf/3Xf41f/epXmJycxI4dO/D444+jtLQ0rvdN6YuhiyiE0dFR9Pf349JLL0Vvb29KL2J8Fx6+6eErKysDZvxj9xUiImPQepfEI0eOoLq6WvV6YwmYixcvxm233QZBEOD1evEf//EfuPzyy7F69WoIgoCXXnoJbrcbW7ZswSuvvBJyhlxBELBr1y7Y7XY8++yzGB0dxT333IPR0VE8/fTTEbf1rrvuwm9+8xv80z/9E5YuXYr7778ff/Inf4KWlhZDd3Um9TF0kW74TkyyrM4A6HAtLx6PB21tbbjkkkv8XSqUhC61W7p808Pn5+crKq91bOkiSg0tX8RrhVrnEYpPLGEzJycnoHv9b3/7W1xxxRX+MPjRj34UZrMZExMTyM3NxYoVK4LqeO6559De3o6TJ0+irKwMAGCz2bB3717cd999KC8vD7nus2fP4sknn8QvfvELfPaznwUA1NTUoKysDE8//TRuvfXWmN43pTeORKS0FSoEyPLM/bjWrVvn73IwH6FLEASMjY35Tw5ERErxxw0ysrljupRMqrF//35s3bo14Jz6yU9+Ena7HQcOHAi73KFDhwAAN9xwg/+5lStX4qqrrsL+/fvj2XxKYwxdZEjxhqTu7m5kZWVh2bJlAeWUUKslx+v1YmpqClVVVYb6JZYtXUSkFfwu0q94JtLo6OhARUVFwHN2ux1r165FR0dHxOWKi4uRk5MT8PzGjRsjLkcUCkMXGU4sF/ezy42MjGBwcBAbNmyIWC7SehPdNlmemR4+IyMDWVlZUesjIprLSD/WJBP3kz7Jshxz6BoZGcHChQuDnl+0aBFGRkZUX44oFI7pIl1R8yQ5OwB5PB4cP34cmzdvDuqqEG+Ii7bOUHp7e2GxWKJOUa/HX2nZ0kVERNGMjY1hYGAg7Oujo6M4ffo01q1bF1O9oa4flIzti3c5orkYushwYhmD5ZsdqaWlBeXl5SFbl9Qe0xWOy+XyTw//zjvvRKzHN7MToKw/OxERXcQfgLRr3759uPPOOyOWOXz4cEyf4aJFizA6Ohr0/OjoaMiWrESXIwqFoYsMJ9aQdPr0aSxYsACFhYVhyymlZL2hykiShJaWlqDp4UPxhS1BEGLevliE+iXPt+2xzDw1e9ZJURQhimLEctEwZBKRGthSEdl8BdNbbrkFt9xyS9jX9+7diyeeeCKmOisqKoLGYHk8Hpw6dQq33357xOXOnDmDyclJLFiwwP98qDFiRNEwdJHhxBK6JicnMTExga1bt0Ysm+wxXV1dXSgoKIg6PbwkSfB6vbDZbLBarYpu2gxE3v7Zr8UbGue+Pjto+cKWy+WC1WpN6Gaac4Og2l081A6asZab3YI5G4MmEdEMSZJiHtO1Z88e/Od//iccDgdWr14NAPj973+P6elp7N69O+xyO3fuBAC88MILuOmmmwDMDAN47bXX8OMf/zjOd0DpiqGLDEdp6BJFEYODg9i2bVvEi9pkTxl/4cIFjI6OYsuWLVHX4Wvd8rWG6eVivLOzEyUlJUEzQMUqlsCWyqA5t2yo8tHq8Hg8MJlMQS2BRg+a4ejl2CZ94pic6LS6j0RRDPh+OH78OP5/9u48vK3yXBv9rdHzlMRxRtuZbRMyA203NAmB3aQN5IM2PcDpwC7thkJoC4HSQ7shbemmbdpwSssXOAVaoBsoUK4NfE1CIYSSQhI2kBA7thOPsS1Pkm3JsuY1nD9cCdmWrNlLS75/15WLeElaeuwYad163/d56+vr4Xa7AQAffPAB8vPzUVpaio0bNwIAvvSlL+FnP/sZrr32Wvz0pz+FzWbDHXfcgRtuuGHMHl1btmwBMDp9EQAWLFiAm266Cd/73vcgy3Jgc+SKiopACCOKFkMXZaRoRmM6Ojowc+bMiF0Ckxm6xvP5fGhoaMC6desivrn5p+ZFmn6YbqxWK0ZGRrB8+fKEzxVLCFCb1tZWLF68GNnZ2WOORxs0o/mdj/a+0d4n+L7xBM3Jzhfq39nn8435b7IE18mgSTQqXUPX+JGuF154AT/+8Y8DXz/yyCN45JFHsHHjRrz99tsARjdCPnToEHbt2oUvf/nLyMrKwnXXXYe9e/eOOXeo6e8PP/ww8vLycOedd8LpdGLjxo147rnnJrxWE0Wirqs3oihE8ybR1taGnJycMXO0EzlftPcLDmb+9vBLliyJGPz80wp1Op2qLswkScLZs2czbs+xZLPb7XA6nSgtLZ1wWyYHzXDCTZs1mUyYO3cujEYjgKkNmqFGHKciaMZzHv/rxWTnDq4z2teUZIfMWJ472dI1UFBk4/fp2rNnD/bs2RPxcQsWLMB///d/T3off0gLlpWVhX379mHfvn2xlko0BkMXZZxII06Dg4Mwm82oqKjAyMhIVOdMRct4f3v4OXPmTPoY/wWURqOJeR670tra2lBWVhZVuJ2uZFnGuXPnsHz5cl4E/lOoC3FBENDf349LLrlEVR88RCsZ6zOB0XbbeXl5gfWTiZwvVNCMp6Zoz59MkYKmJEkQRTEwZTucTAqasUrXYBrPmi6idMDQRRlnstDl8XjQ0NCA9evXY3h4OKnTBmOZXhjcHj4SURTj2gxSaXa7HQMDA1GtVZvOLBYLsrOzUVhYqHQpac1kMmHevHmquWCNVbK+r97eXixYsEAV05CTFTSDZw9Eey6n04mcnJyQwWx8I6B4aprs+dXScdY/1S7dOs6OX9NFpBbp/6pMFKNw4ce/H9fy5cuRnZ0Nu90+5aHLvzdYLO3hBUGAXq9X1ZuMLMtobGxEdXW1quqeapIkoaWlBWvWrFG6lLQmiiK6u7uj+pBiOhMEATabDdXV1UqXEhWlXhv8TWsSbewTD7V0nAVGf046nS7tOs52dXVFHKEkSkcMXZRxwoWf1tZWFBQUhFw3E+l8yaLRaOB2u1FeXh51e3itVqu64NLR0YGSkhIUFBQoXUpa6+rqQmlpKRdkR9Dd3Y2ysjLVjfZOtd7eXsyZMyctp4SlE4vFEvP7QLKo6bV8YGAAM2bMQFZWVkLnSXbQ1Ov1fG8hVVLP//1EMRj/4j0wMICBgYExrWGTPW0wmvtZrVYIgoDFixdHPJ8gCJAkSVVv0sDotJ3e3t6ovsfpzOfzwWQyobKyUulS0pokSTCZTFi4cKHSpaS97u5uzJs3T+ky0l5/f79ioUtNrFZrxA8Ho+H/4DDSH51OF/aPXq+HXq/HwMAAKisr+QEMqZK6ruaIojD+U16Px4PGxkasWrVqTICJZQ1WMkKXvz18qHUEoZ7P3yKkrzoAACAASURBVB5eTaFLlmU0NDRgxYoVqqpbCa2traioqODFQwS9vb2YNWsWDAaD0qWkNbvdjqysrIRHJTKdKIpwu91s7hOF4eHhtFtrWltbi9WrVytdBlFcOL2QVCXWDYhlWcbp06cD67hiPVey7hfcHr61tXXS80iSFLi/TqcLLIAe/0er1cZ8W6zHI902fnG2yWRCfn4+iouLI/68pjOHwwGbzZaUvcsymX8/vXXr1ildStozmUyYP3++0mWkvYGBAcycOVPpMtKef2p7un0oVFdXx9BFqsXQRRknOPy0tLSgqKgo7P5Hqdr0eLzg9vCRQpcgCFi9enXgeYP/+ANZqD/hbpMkKe7HRXPcT5ZlOJ1O5Obm4vjx42G/v0QC3lSGycluT1RTUxOWLVvGtTcR9Pf3o6SkJLAvF4UmiiKGhoawYsUKpUtJe/39/ZyqGoXh4eGkTC1MttraWlx11VVKl0EUF4Yuyjj+sDIwMIDBwcEpa1keLpzF2h5eFEVkZ2dP6fQ8p9kJW4cNReVFyC3Njfnxsizj448/xvLlyyf9FDlZwS+axyQaJsPdFqvxAU4QBLjdbpw/fx4dHR1TNmKZSAhVgizLOH/+PFatWqXI86tJX18fZs+ezRAfgSRJsNvtaTdlLh1Zrda0nLFw7tw5VFVVKV0GUVwYuijjaDQaeDweNDU1Yf369WHDy1RML/S3h6+pqYmqPbzP55vydVz1L9Tj9Vtfh9agheSTsHX/VlTvjK3ldF9fHwwGQ8RpO0pexCshVHj76KOPsGrVKmRnZyclaKYiZAbfHqtkTX91Op2QZRm9vb1TOjqqxt9Pk8mECy+8UOky0p4/SKjx33iqWa1WLFiwQOkyxnC73dBqtVzfSarF0EUZqbm5GStWrJi0FXeyQxcwseFGS0sLZs2aFfETQ3/g8l8MThWn2YnXb30dgksAXKPHDn37ECo2VUQ94uX1etHW1sZNkEMYfxFvMpkwY8YMlJSUKFhV6sQ6KhnudkmS0Nvbi4ULF8JgMCQlZEZbR6yUnv7qdrshyzLcbjc8Hs+0CJnxMpvN7FoYBVmW4fV6064pS0NDA2pqapQugyhuDF2UcWw2GwoKCjBr1qxJ7xdL6IrG+PMNDQ1haGgIF110UcTHiqIIWZanfNGyrcMGrUEbCFwAoDVoYeuwRR26zp07h8WLF8NgMCQ8TTGTCYKAjo6OjA6nybqIHxwcRGFhIcrLy5NQVerEEiTjHYGMFDIHBgaQlZWFnp6euEJorJSa/hru9mifC8CEbUMotJGREUU2jo6ktraWG8mTqjF0UUaxWCzwer1R7VWTyAhWuPP5L2J8Ph/q6+uxbt26iBehkiRBEARF2sMXlRdB8o298JJ8EorKo1tAbTabIYoiysrKkjJNMZO1t7djwYIFnBoThfb2dlV0dlR6pEgURVgsFqxevXpKXjsmC5HxjjLGGjLjfS5BEODxePD+++/H9D1P1YhloiFzsttila7ruerq6vDFL35R6TKI4sbQRaoyWVByu904e/ZsxBGuZD5nuPvV19dj8eLFyMnJmfQxkiTB6/UGNoecarmludi6fysOffvQmLAUzSiVIAhobm7GunXrkjJNMZO53W5YLJaomqlMdzabDTqdLi0/aU83/k1+p+q1Q+mQmYiWlhbk5eVhzpw5UT8mUsiMZ5pruJCZzNHRREcyXS4XsrOz0d/fP2VhMtTxnp4eDA0NwWAwwGAw4OOPP8a3vvUtmEymwGbJBoNhzN/V+vtJ0wNDF2UEf8OKqqoqWCyWmENSsu4HjLaH12q1mDt3bsTHCIIAAIpuJFy9sxoVmypinhbY1NSEioqK0alNHT0JT1PMZM3NzVi6dCk3jI5CW1sbFi9erHQZqtDd3c01LlEaGBiIebqqmkNmPPzvc8eOHcP69esDx5IZMv2jjtEEzTfffBPvvvsuRFEMTM/+8Y9/DEEQ4PP5IAjCmD+PPPII9/SjtMbQRRmhpaUFJSUlmDlzZkpCV7Q8Hg+6u7tjag+vxLTC8XJLc8eEo0hrs4aGhuByuQKte415Rogeccx9YpmmGKtkrh1L9To0m80Gr9eb9BHYTGS32yFJElt6R8HhcECj0UQcTSfA5XIFRkIoPI1mtPNvVlZWWvysqqqqcPvttwMAOjs7sXv3brz88ssKV0UUP4YuUj2LxQKr1RpoUBBtSEr2SBcA9Pb2YvXq1VG3h1dqWuFkJlub5TQ7MdQ2hJbBFly08SJoNJrA/fHPH7s+Z/R7j3aaYjLrU/JcociyjKamJu4rE6W2tjYsWrRI6TJUwWQyYf78+UqXoQrsWhi9dF3Pdfr0aaxevVrpMogSwtBFqiPLciBY+ddxbdiwIXAslpAUy3NG0tfXh9zc3KjesPzTCiOFs6k22dqs9iPto+FKB8iCjNJHS1GxqeKT+/+TLMn4+ntfx8yqyffs8j9fuFGmULclc+3YVKxD6+/vR15eHtcnRcHhcMDr9WZsO/1kkiQJAwMDWLp0qdKlqILZbMYFF1ygdBmqYLPZMGPGDKXLmICdCykTpNcVH1EMJEnC6dOnUVVVNWY/kVSs1Yp0v6GhITgcjqgWacuyHJhWqJTxgcb/tXvIHXJtVt/pvgnh6tC3D2Hb/7cNMsb+bLQGLbo/6IZryIWhliHM2zAPM6tmTnjOyUaZwt2WjBb3fiHPpU/eOjRRFNHW1sY1BlFqb29HZWWl0mWogtlsxqxZs9JulDwd+Xw+iKI46Z6N9AmbzZaWo811dXX46le/qnQZRAlh6CJVCZ462NzcjBkzZmDmzJkT7jOVocvfHr6iogIej2fSc/kXDZ88eTLuNsThjnutXji7nchfkI+cmTkT7u8Z9GDENIKBugG8/5P3A4Gm6voqND7XCJ1BB8ErAGOXZkH0irA0WKDRTZy2+X9u/D+QxbE/G9+ID4e+fQgIapxVdlEZLLUW6Iw6iF4RG27bgA8f+RCC+5NRpoM3H8TsC2cDAA7dcmh0jVjQCNTsC2fDdt4G0Z2ctWOh2uV77V70nerD3PWRm6BE0tnZiTlz5sBoNCZ8rkzncrngcDgm/L9MoZlMJqxYsULpMlSBUwujJ4oiJElKi/Vc47W2tmLJkiVKl0GUEIYuUiWz2Yzh4eFAh6VgqepKGI6/PbxOp4Pb7Q57P/86rg0bNkCv1yelE5TL4oK90w5LrQUf/ueH0Oq1kAQJa/+ftSiuLoYuWwefw4eh+iGc3nsaGp0GgmN0tMofXs784cyYr/20Ri1kSYboE/HOnncgucYGlOBRr4nf7Ngv+/6nb8xznPj1iQkPET0intzw5OgX4/5ZJEnCkxc/OSYQ6rJ0kCGj+uZq9Pb2IkfImRBO3YNuOLocKCgvQO6s3LGhNVeDf/npv+Dvd/19zHMduecIlmxfgrzSvLi7l3m9XvT29ka1MTYB58+fR2Vl5bTqFBcvl8sFWZaRl5endCmqYDabebEeJbvdjoKCAqXLmMButyM3N5cju6R6DF2kOm63G+fOnRuzjivYVI50dXd3Q6PRYO7cuTCbzZOeRxRFyLIMnU43JhjE6+TjJ3Hk+0eg0QcFqX+mkg/u/wAavQayIEObpYXkiX2/FskrAToAIsYELl2WDrIoQxJiP2dEYf45QtUv+kRoDVo0Pt6I+kfrccGuC2AsNqLkwhIULCpAx187cHLPSWgMGkg+CavvW415/zoP7kE3nN1O5MzJgbvYDW2uFpLzk/PLWhknXj+BghUFca0N1Gq1cLlcMBgMOHXqVNJHNGM5Hs9mrlPN4/HAZrNx5CZKJpMpqs3fafQ11+VyMaBGKV2baJw5cwYXXnih0mUQJYyhi1TFvx9XdXX1mHVcqRbq4tvpdKK9vX1Me/hwF+mSJEEQhKS1h3///30ff//hP0dowsxolIXRWuIJXAFiiEOeEAeVII1+b/7v7/SvTgduWvyFxeg43DFa6z9/PrUP1KIQhfjHT/4BnVEHSZCw+ReboZW1kIKG5jSSBp/Z9pm41nXJsgy73Y6zZ89izZo1KdlUNXiPm2TtmxPvRqrxhLrxtw0NDSE7Oxvnz5+f8lCqNpIkwWw2p+Wam3Q0ODiIGTNmqPLfWglWqxXLly9XuowJ2ESDMgVDF6mK0+nE7NmzJ+2uNBUjXf7wV1NTE2iIEe58kiTB6/UmrT38ycdPfhK4KKTWv7ZOOCbLcuDn5g+OR+45gs2/2Iwj9xwZ07Qj3kYaGo0Gzc3NWL58eVqui0imZIRJn8+H3t5eLFy4cMw5/ff1f1iRDgFzqoLgZMdtNhvy8vICe3TFMso5HfX397OtfpRkWYbL5UrLfd/q6urwjW98Q+kyiBLG0EWqkp+fH7ELVSpC13gtLS2YNWvWmKkY4c7nbw+fjMDlNDtx5PtHEj7PdDR+zRoAaLQa6LJ0+No/vgavw5vwBskWiwVGoxFFRanZFDqdJONivqWlBZWVlVF1/VRSrAEzniDon3482f37+/tRVFSErq6umM8fi3QImLGMlgYf99cvyzKGh4dRU1OTil+JjOMPXOkY0Ovq6ji9kDICQxdlnGSHrvGGhoYwNDQUsknC+POJohhoDx9r6ArV1r3l9RZo9JrQUwr/uf6Koudz+HD4zsOQJRlb929NqGuhJEloaWnhBp5REgQB/f39uOSSS5QuJaJ0GC1yu92w2+1YtWpVSp/H/xqW7JHFUF+n6vzA6Guvz+fDiRMTm/YEUzIgJus5kiFd13P51+Vxr0PKBAxdlHFSGbr87eHXrVs34c1u/Nf+boXxTCscv0/Vyq+tRN3TddBoP2maEWzdt9dhZvVMHL7r8GgDDIqaz+EDMNqmPtLGyJNt5mwymTBz5kzuBxSlrq4uzJs3jx3JojRVDTT8r2PBI0dqdO7cOZSUlERsFx8p1KkhYMYiXHgbGRlBTk4O7Hb7lIXGcOssBwcHYTAYoNfr0dnZicWLF0OW5agDZn19PW6//XYcO3YMxcXF+OY3v4n7778fOp0u5p8XUTIxdFFGiufNKBr+9vCh5r2PD3H+aYX+NV+TXbAHc5qdn2xE/M99qk49dmri8xk0kEUZGq0GdX+qg+AS4lqrQqMEt4D/+e3/YONPNoa8fbLNnH0+H7q6utgiPkqiKKKnp2dMExoKzz+1kD+v6MiyjMHBwahaxQdf7Gf6RflkAe6jjz7CihUroNVqEwqCiazBlGUZXq8X99xzD0RRhCAIcLvdcDgc2LBhQ8jvqaCgAG+//Xbg66GhIVxxxRWoqanBK6+8gpaWFuzevRuSJOGBBx6Yop80UWgMXZRxov00LNaRruD28JHOFzytEJj8gn18GLN12KA1aAOBKxzZ989pQJIMr90b9fdB4b3/6/eRMyMHF39v7MVtqCB88JaDgZGxtrY2lJeXwzvkhbnDnPDasEzX3d2NOXPmZPxFbrJYLBaUlJTw5xUlh8OBnJwc/rzGCTcd0efzQa/Xp80eXW+99Vbg73v27MFll12Gq666KqrHPvroo3C5XHj55ZdRWFiIK6+8EsPDw9izZw++//3vo7CwMFVlE0Wk3rkDRGHEMr0wWpIkob29PapF2f5uhf51XMEX7N5hLwSXgEPfPgSn2Yn6F+rxWPVjeGH7C3is+jE0vNiAovIiSD6OWCnl7z/8O0498cnI4kDjAE48dGLCKKLoFnHqyVNwOp2wWq2w/cM24d8ymZxmJ9rebEPb4TY4zc6knnsqSZKErq4uLFiwQOlSVMNkMrELXwz6+/sxe/ZspctQjeHh4bRczwWMNtGIpV38wYMH8bnPfW5MuLruuuvgcrnw97+z6y8pi6GLMk68DTLCkSQJLpdrTHv4cM8bah1XYOQqiNagRd/HfSHDGABU7axKWv0Uu7fufgtOsxNv3PkGnlz/JD74zQch9zs7/vPjOPnGScwvmY/XbwsdrJOh/oV67F++Hy/teAkvXf0S/vey/530UDdVent7UVpamvEt9ZPF4/HA5/OlzSiEGlgsFsyaNUvpMlTDarWmbcfVWD+gaWxsRFXV2PfP8vJy5ObmorGxMdnlEcWEoYsyTrJDV2trK/R6fcRPAt0DbgzWDcJhdoxZgB5q5ErySYAGIcPY+w+/j7qn65JWP8VOZ9Sh452OkGvpgoleEce+fgwdL3eE/Le0ddgSrsVpduL1b78+pkGK7JNx8JaDqhvxkmUZHR0dKC8vV7oU1eju7p6SBhqZwu12Q6fTMdTHIF07Fw4MDMS8ufXQ0FDI76WkpARDQ0PJLI8oZlzTRaoSzYtvMkPX0NAQBgcHYTQaJ73fmT+fwYGbDwA64H3hfaz7yTqUf7480KFpw0834H9+9D/Q6rWQBAmX/Ocl0MzRQPSO7fEuekR88NsPklI7xU9wCTCdMEV1X9kn49gvj0GDcd0rfRKKyhP/9NjWYYNGN/H3XqPTwNZhU9Xasb6+PpSUlET8/4lGybKM3t5eNmiJgdlsjtixkD7hb16RlZWldCkT1NbWxjS10C/UdUIs3Q+JUoUjXURhCIKAhoYGXHjhhZO+WDvNThy85SBEtwjRIUL0iPjo/o+gc+uQk5MDo9GIJTuW4OojV2PTHzZh++HtmP+5+UAesP4n66HL1kGXp4PWoMWiGxZBa+T/lkqTBAkfPfJR1PfX6rW45PuXQJ+jh7HQCH2OHlv3b01KICoqL4IsTvwQQRblpIS6qSLLMs6fP4+KigqlS1GNwcFBFBUVTTqtmcbq7+9n6IrByMhI2u6BVVtbG/O+hyUlJbBarROO22y2tBzNo+mFr+SUcZI10lVfX49FixaFbA8fzHZ+YrdBnVEHo8uIOXPmfHJwHoBx+5pW3laJoqwivPX9t6DP1qP9uXZIIptoqI3oFTH3C3NxzfZr4DA5UFheiJxZORgYGIh5n5rxx3JLc7H10a048O8HAlMMNQYNtj26TVWjXBaLBQUFBdzHLAYmkwmVlZVKl6EaPp8PoihGfM2mT6Tr1EJgtInGnXfeGdNjqqqqJqzd6uzshMPhmLDWi2iqMXSRqkzV9MLu7m4ACNsePlj+gvyQa7aiGYVwmp048oMjED2jI2QAoDVqIetlYOIeyJQGtEbthA2o1967Fpr80d+7nKU58MpeeKye5G1+uhC46LmLMNI8Ao2sQd6yPNiKbTh+/PiYOuLZjDTaY4lsfAqMro1csWIFvF5vyHNw6s9YXq8XbrebLa5jwAYasbPZbGk7+tzQ0BBVx+Bg27Ztw969e2G32wPNZ/785z8jJycHGzeG3oORaKowdFHGSTR0OZ1OtLe3R7URqSRJMBQbcOXvrsQbu94Ysw9XNKMQofbk0uq0kEUZMlKzwTPFT6PX4NM//DTee+A96I16SIKEy/dejjU3ja47iHYD7FACj62Mb48v/+98qDCXyLHg48Ebn8YSHD0eDzweD9ra2sLeLxZTFRxTFV6j0d3dHdWHPvQJs9mMRYsWKV2Gqtjt9rScXuj1eiHLcsxrzW655RY8/PDDuPbaa3HPPfegtbUVe/bswZ133skPMEhxDF2UcRIJXZIkoba2FtXV1VGtoxCE0eGoldetxOIti2O+4A7V2VBwcYgrXWl1Whz72THojLoJgWuyDbAjSeSxfv6L+XTcEPbDDz/EunXrknZxl2h4jHRckqSUhddoORwO5OXloaenZ0rCYCrC6FSSJAkOhyMtA0S68ng8MBqNaTnKfPbsWVRXx/YaCIyu6Tp8+DB27dqFq666CsXFxbjjjjuwZ8+e5BdJFCOGLso4iYSu1tZWzJw5EyUlJRHv6/P5IElS4CI3tzQ35hGK3NJcbN2/FYe+fQhag3Z0iqFmdONdSj/+KaD+6YVHvn8Ey69eDgCBPdf8o5aHvn0IFZsqIv5OBG+eHetj1cBqtUKv1yf1Yjj4oj4dQ2aiBgcH0dPTg5qampSNWgb/PdGQOunU2CglGhJdLhd0Oh3a29undCTTX7sapfN6rniaaPjV1NTgrbfeSnJFRIlj6KKMFE/oGhoawsDAQFTtmSVJgiAI0Ov1Y/bkikf1zmpUbKqArcMGY54RT1/6dELno6kjuAV8/OTHqLyicuI00X/u0xUpOIWcYhrlY9Wgra0NS5YsUboMVTGZTFi4cOG0WesWKsDFGvrOnz+P0tJS5Obmxj01Nt5jsUinqa5msxnFxcVwOBxRPf9U/i7W1tbiqquuivr+L774Ip555hl8+OGHsNlsWLFiBe666y5cf/31KaySKDYMXZRx4nlj8LeHX7NmTcQQJUkSfD4ftFptwoHLL3iUbPzIl0ar4ZTDNHbsl8ewfMfyuJuphNs8W03t4MOx2+0AwLUUMfB6vXA6nSgqUv+/f7QSvaCXZRnnzp1DRUVF0l6TUyWZU2NDHRNFMeqAOTAwAEmSMDQ0lNSpscDEdZeRAuHhw4dx8uTJwMbWp06dgl6vx7Fjx6DX62EwGKDX6wN/X716NT71qU8Fnm/fvn1YtGgRHnroIcyaNQsHDhzADTfcAIvFgttvvz3Z/4xEcWHooowTz/TC+vp6VFZWIjc38siC/w0tVdOaxo98PfUvTyV0Po1OE3KfJ0oOrV6L7g+6sfkXm3HkniMxN1MZP8U0lsemu7a2NjY2iFFPTw/mzp07LUa4ksVms6GwsDDtAxeQPlNjRVGE3W7HqlWrIt85DrGGxs2bN6Oqqgo+nw8+nw8ff/wxNm/eDEEQ4PP5IAjCmL+PD4GvvfbamM6Vl19+Obq7u7Fv3z6GLkobDF2UcWINXf728PPmzYt4X0mSIIpiUqYVTiZ45OvT3/80/vGTf4y53ZBvwGV7LkNeWR4OfPNAYK3ReBqDBhowdIWiM+pw6f2X4uieoxNGmialAYIbS/pGfHjrrrcgCRI2/2IzytaUxdy9MDhox9P5MB05HA54vd60XTOSjmRZRk9PD9avX690KapiNpu5IXKMgluqp0Kso5crV67EypUrAYy+J5eVlWH79u1RPz7UVgFr167FK6+8EvU5iFIt/T8WIopRLKFLkiS0t7dHtReIKIrwer1JnVYYjdXfWA199tjPR2RRRvWXqlF1bRUu33t52MfKPhmST4JGx0/Nx/vygS9j4WULocuK/tNmjV4DrX7iv73X7oXgEnDkniMw5hlh67DBaXbGVE9uaS7mrp+bEYELANrb2znKFSObzYb8/HwYDAalS1GVgYEBzJw5U+kyVCWdm2icPn0aa9asSfg87733Xsz7fBGlEkMXTVuSJMHlckXVHl6j0QTaw0/1FJbc0lxsfXQr9Dl6GAuN0Ofox0w/K1tTBmOBcdJzGPIM2PrEVizetRhXPHwFFm9fPBWlpy1tlhZDLUMQvWLYUUJ9nn50pNCggSHfAF22DhqtZtJRMVmW8dRnnsIL21/AY9WPoeHFhlR9C2nN5XLB4XBgxowZSpeiKl1dXZg/f77SZaiKw+FAdnZ2RnaxTKV0Dl11dXUJh67Dhw/jlVdewW233ZakqogSx+mFlHGiHelqbW2FXq+Pqj08MLqWy2g0KrJuYLLpZ0XlRZCEyafHST4JztlObPr+JsycORMrrl6B/W/sh+SJbXG0Koyb/heK5JHwxnffGG3NH+JaTZ+tx/967n+hYGkBzp47i0Uli+CxevDqV16F1+sNe15/q39/kMuk1u+xOH/+PCorK7kuKQY+nw8jIyNpeyGcrvr7+zF79myly1AVWZbhcrmQk5OjdCkh1dbWYufOnXE/vr29HTfccAN27NiBG2+8MXmFESWIoYsyTjShy98e3micfIQIGB0RMxgMOHny5JiLyGjb+kb6OpY2v4YKA9xaNzxDnk/uk63Fpoc24e073oZWr4UkSKj5v2tQ/1/1ga8v/tnFyJudFxh5yC3NxZa9W/DGd95I7Ic9RbRZWlR/sRpn//ssBGeETo7+f/oQ4Uufp4fgGH18YC+0oIEuQ54BsiRj6/6tWLRlEU6ePIkLLroAxcXFcJqdEL2hR8UMeQZIgjSh02QmtX6PlsfjCbRspuj19vZizpw5DKoxslgsce/nNF35A1e6/q41Nzdj2bJlcT12cHAQ27ZtQ3l5Of70pz8luTKixDB0UcaJFLqC28OfOnUKsixP+uYjCAJWrlw5Zp1FpM5MibT9lSQp5vMZ1hrw2Zc/C2e3E1llWTAUG1B0dRFcPS4YZhvg1rmhG9HhxIkTge/BrrNDm6uF5PxktEuTpQGk0bVg6UKfq8e/PvGvKL2wFI0vN0b/QBnQZemg1WshizI2/3IzdFk6vHXXW/DaJ45WGfIN2PLrLVjyuSXILc3FwMAAdDpdYOQhtzQXl++9fEJQ1WXrsOPZHShcUDhhj7VMaf0ei/Pnz6O8vDxtL+jSkSzL6O7uxtq1a5UuRVU8ntEPn6L58Iw+kc5TC51OJ7KysiJO+Q/32O3bt8Pr9eKvf/0r8vLyUlAhUfwYukhVormQixS6gtvD++8b7rw+nw+SJE1YL6CmTUtra2tRVlY2YQqOc4kTdXfVQcInoUur0UKj00DwTe2+YBqdBtCOdhT0j0T5SaIE70wv+h39uODeC1D3szpo9KNrq2RBBiaZIVnxrQoUVhcia04W3MVueK1eCN7Q35voE2GfY0dDRwM0nRrYbDYUFRXh9OnTgVFH46eNWHnvSpzZe2Z0Q2MRWLtnLaRFEmwaG9b9eB0+vO/DT0YYH7gYQ94h2HpsSdvU1P81EN+edKnk8/kwODiIpUuXKl2KqgwPDyMnJ4fhIUbsWhgfq9UaVbdeJdTX1we6GMZCEATs3LkTTU1NePfddznllNISQxdlnMlCV09PD4BP2sNPdl9JkiAIQsrbw6eS2WyGLMsh34DC7Q8FjK5F0ug0ENwCZMgw5hoh+SRc+PULUftULbQG7ehtkjwafBKkM+rwtX98DV6HF32n+ibsd1X9L9UARtsKX/a1ywJr286/fR6HbjkEWSNDdE2c+rfp3zZhZtXYrmalj5Xi0LcPAQAElzDaIEOjwb8+8q9YvnF5YNQhERP4iwAAIABJREFUJycHlZWVE0YZ5++aj9X/12rYO+zIW5CH7BnZgVHHFV9cgfKN5RjpGkHOvBxklWRN2Kw02tHOaEZKY5GK6a7jvzabzSgsLITFYknK+dT04UYiTCYTG2jEob+/H9XV1UqXoTqpbhefiNra2rimi9566604cOAAfvOb32BwcBDHjx8P3LZ27VpkZWUls0yiuDB00bThcrnQ2tqKiy++OHAsXOiSJAk+n2/K28Mnk8/nQ3NzM9atWxf2PuEadAQfAzDm9s/84DNjbjv15Cmc+OUJaPQa+EZ8Y86vNWqh0Y5eNItucbQ9uwZYdeOqQHjzByt/OJq7fi6WX7087J5VwXuYBdd/6vFTqHu6LnC/tbesnRC4xj/GmGeE1+Ed8zyCIKCnpwcXXXRR2CkuRUVFQLjBnDkAYv+gNqVCBbhEAmCo+wiCAKvVioULF2JkZCTqx0YKmbGIdzQx2gCYzMf6vxZFEcPDwwwPMfJvlJuuzSDSlf99LV27PdbW1uIrX/lKzI/729/+BgD47ne/O+G2trY2VFZWJloaUcI0ET4tTZ+FHUQYDUNer3fST79dLhcaGhrGhA1JkvDBBx9g2bJlY7oVnjhxAuvXr59wce31egPTCtUauurr61FcXDwl00icZidsHbaQo1ThAo7/McncDHigcQDdH3Rj3oZ5IQNXNJqampCTk4MFCxYkpabpor29HVqtFuXl5YrVkIzwmMxwGs1jPR4PZFmOaWphIqOTqR7tnOx8yRy17O3thcPhwJIlS5J2zulgYGAAAwMDWL58udKlhHTllVfi4MGDKCwsVLoUoniFfaHjSBepzmRrsIDQo1dtbW2YMWPGhPbwoe4riiJEUVT1tMLBwUG43W7MnTt3Sp7PP/oUbpQqVKgKHrFKlplVM+MOW8BoYB8cHBwzGkqRiaKInp4exX9uwRf26fpJ/njvv/8+Vq9eHfX0p2iCXayjicFfi6KY8OhkuK9jESnEDQ8PIz8/H2fOnEnK6GQigXL8sXRmtVpHR+rTkCRJGBkZYeCijMXQRRlnfJCyWq2wWCy46KKLIt43E6YViqKIc+fOYfXq1YpcAKQiTPmlYnQsWFNTE5YuXZr2F07pxmQyYc6cOaoJOulieHgYWVlZMa03UcOFfaL8r8nhwp4kSTh16lSgYUs801gFQUhoZDNcwIzVVG890t/fj9zcXAwODsZ9vlT9Dra3t2PRokVxP95kMmHFihVwOByw2+3Iz89PYnVEiWPooowTHKQEQUB9fT3WrFkTMkSND12CMNrZTq2BCwBaWlowf/78jFvrUP9CPV6/9fWxDTZ2Jm8djNVqhSiKmDkz/pGy6UiSJJhMppAfatDk2EAjtEijlQMDA5g5c2baNoOIVrJGE8MFwFDHPB4PRkZGYLfbExopjUW4ENfd3Y39+/fDYDBAp9MF9vjbtWsX9Ho9DAbDhP/efvvtYcPU3Xffjfz8fDgcjmT88xAlHUMXZST/m0Jwe/hQgkNXJkwrtNlsGB4ejntjyXTlNDvx+q2vj2487Bo9dujbh1CxqSIpI16yLKOpqQk1NTUJn2u66enpQWlpaVz76kxnoijCarWiqqpK6VJUp7+/H2VlZUqXkbCpng5rt9vhcrmm9P0hVGj0h7hFixahsrISgiDA6/XihRdeQGVlJS699FL4fL5As5Tg/4Z7nTl69CgOHTqEe++9F3ffffeUfX9EseC7JGUc/5tYT08PZFmOqpGEf1qhmhtnSJKExsZGrFy5MuOmH9k6bKP7Yrk+OaY1aGHrsCUldPX29qKgoICbacZIlmV0dnZO2iGTQuvr60NZWVnG/b+aarIsw2q1YsWKFUqXojpKrOeabCpidnb2mE2af/3rX+Ouu+6KeYqhKIq4/fbbcd9996Xtps9EAKDOq0uiSWg0GgiCgNbW1ogjFxrNaMtmn88HjUaj6jUp7e3tmD17dkYGh6LyIki+seslJJ8UaFufCFEU0d7ejsWLFyd8rummr68PM2bM4Ka+cTCZTGm7QW06Gx4eRkFBgWo/HFOS1WpN61By/vx5VMbR2v3RRx+F2+3GbbfdlvyiiJKIr1qUkZxOJ2pqamAwGCa9nz90ybKs6jfxkZERWCwWVFRUKF1KSvg3ctbn6GEsNEKfo8fW/VuTMsrV0dGBefPmMTjESJZlnD9/PmN/51JpZGQEer0e2dnZSpeiOmazGaWlpUqXoUojIyNp21zCPwoX68jvwMAA/uM//gP79u2L+H5PpDROL6SM097eDp1ON6E9fDiCICAnJ0e1oUuWZTQ0NKCqqkq130M0wm3knAiPx4O+vj7FW52rkdlsRmFhYUyd92hUV1cX94GLk8ViiWs0ZLrzeDwwGo1pO521rq4Oq1ativlxP/zhD3HJJZfg85//fAqqIkouhi7KKFarFQMDA1GNWkiSBI1Gg4aGBuj1+pDdleJt55vMlr+h7hess7MTxcXF02Jvk2S3o29pacHixYszOqymgn+Ua+XKlUqXojqiKGJoaChtN6dNZw6HA1lZWWzaEod0n1pYW1uL1atXx/SYM2fO4Mknn8Q777wDq9UKYHSWCzDaVEqn02VcF19SN75ykapM9imdvz386tWr8fHHH0c8lyAIWLFiReCcsbbljdTOVxCEmNr7RtsqOJgkSXC5XMjLy8PAwEDIn1eyN/5MVcAM/vtU8Hfy4lSl2A0ODiInJ4cXNHHo7+9HaWkpg34czGYzZs+erXQZqmSz2dJ6O4za2lrs2rUrpsc0NTXB5/Ph05/+9ITbFixYgJtuugmPP/54skokShhDF2UMf3v4aBpJZEJ7eFmWcfLkSVRXV4ecShlug9Fo936J5ut49ndJ9h4w8QbF/v5+zJgxA62trUkNmPGMVqpNe3s7W53HyWQy4YILLlC6DFUym80xj4bQKJvNltDGw6nW0NAQ8/8Xl156KY4cOTLm2KFDh/CLX/wCBw4cYHMkSjsMXZQR4mkPr9VqVRu4AKC7uxu5ublh165N5f4vSokn4MmyjMHBQeTl5aGsrGzSEOgfrYw3PIa7TyySEfCimTYb7bntdjuA0bDrdrtD3sdfN43lcDig1Wo5QhgHr9cLAGx4EwdRFCFJUto2mvDvwxXr/xezZs3Cpk2bxhxrb28HAFx22WVp2zSEpi+GLlI9l8uF1tbWqJshCIIAAKpeF+DxeNDR0YGLLrpI6VIUFc+okX8/szVr1qiie1wioS/SlFj/17GMcvoD69mzZ1M6WhnvtNVkrZ2M5tyxMplMmD9/fsyPI3YtTITdbk/rNb9NTU1c40jTgnqvOokwekFaW1sbVXt4YOy0QjVrbGzEsmXLVP99KKGrqwulpaWqCFwAxlzwK81ut8Pn82Ht2rVJO2c8U11jCYrBo5XJPHcs/P+Gdrsdw8PDMJlMKZm2mqzpsOk4Dba/v58X5nFSYlPkWJw+fRpr1qxJyrluvPFG3HjjjUk5F1Gy8YqNVK21tRUlJSVRtYf3TyvU6XRpcQEbr76+Puh0OsyaNUvpUlTH5/PBZDKxRXyc2trakr4uJN0u7lNBlmX09PTAbrdj8eLFSQ2B4UYrk3HuWCQzKI4/LssyRkZGYLfbMTIyouhopRpZrda0Dqx1dXW48sorlS6DKOUYuki1rFYrLBZLVFPs/IFLo9Goeo2Tz+dDa2sr1q9fr3QpqtTa2oqKigpV/w4oxeFwwOfzpXXb6XSl0WjQ09OD6urqtF1Xk4hQo5WxTlud7D7Dw8PIzc2F2+1OasCMJVjGuwYy1sclczqsP1S6XK60XkdYW1uLu+66K6bHCIKAX/3qV3jiiSfQ0dGB0tJS7Ny5Ew899FCKqiRKHEMXqZK/PfyaNWuiGrUSRRGyLKv+Yvvs2bNYvHgxF5PHweFwwGazpfUnvumsra0NldyUNi7+vYNyc5O3x1w6SfWoUV1dHZYuXaroFLlkTXcNdWyy0cpknNvj8eDEiRMRv8dUT1v1f33kyBGIogiDwQCj0Yju7m40NTWhvb0dBoMBBoMBer0+8N9Qs1n+7d/+DYcPH8b999+PqqoqdHZ2or6+PlX//ERJwdBFqtTQ0ICKioqoLmIkSYIgCKpuDw8AFosFgiBwn5o4NTU1YdmyZdNmSlEyuVwuuFwuzJgxQ+lSVIkNNOInSVJaNIIIDpZq+vCuu7sbXq834gcm0Y5WxjuqKIpiYH1lU1NTYH2oy+WCKIp4+eWX4fP5Ap0MBUEI/H3r1q246aabArUeOnQIzz//PD7++GPU1NSk+CdIlDwMXaQ6vb29kCRpWrWHFwQBTU1NWLt2LUNDHAYHB6HRaKJa+0cTtbe3o6Kigr97cZAkCRaLBUuWLFG6FFWyWq0oLi7m716crFZrVO+VU7nG7b777gv8/c0330RZWRl+9atfRf34J598EpdffjkDF6mOeq9CadoSBAE1NTVRvUEIggBJklQduACgubkZ5eXlqum4l05kWUZzczOWLVumdCmq5PF4MDw8zHbdcbJYLJgxY4bqX4OU0t/fz9H9BNjtdhQUFChdRlh1dXUxb3h94sQJLF++HLt27UJhYSFyc3Nx7bXXoru7O0VVEiUH3wVIdRYsWBBze3g1X/BYrVY4HI6oPq2kibq7u1FcXJyx62lS7fz58xzlSkBXVxcWLFigdBmqJMsyhoaGOEIdJ/8sj3SeDnn69OmYt6Do7e3FH//4R5w6dQrPP/88/vCHP+DDDz/ENddcE3PXTaKpxOmFpEqyLE96ESjLckZMKxRFEY2NjVi1ahUveuMgCAI6OjqwYcMGpUtRJa/Xi8HBQY4SxsnlckGSJOTl5SldiirZ7Xbk5+er+jVcSTabLa335wJG19quWLEipsf414m98sormDlzJgBg7ty52LhxI9566y1s2bIlFaUSJYyhi1Ql2uAhyzJsNhsMBkPcbXbTQVtbG+bOnctRmji1t7dHPTJKE3V0dGDhwoVp9f+EmnR3d3OEOgFms5nTWhNgs9nSeosHt9sNnU4X8+tzSUkJFi9eHAhcAHDppZfCaDSivr6eoYvSFkMXZRxRFDFnzhyYzWYAiLnlbiyS0Uo33O0ejwd9fX1YsmQJ+vv7k/Yc04Xb7cbAwEBU+7jRRIIgwGw245JLLlG6FFWSJAn9/f3ciDsBFosFFRUVSpehWlarNa2ntjY0NOCCCy6I+XHV1dXweDwTjsuyzFFRSmsMXZRR/N0KKyoqUv7im+heKpO12RVFESaTCWVlZXC5XEndbDRaydjUM1kBNJbn8GtqasKSJUv4Jhynzs5OzJ8/nz+/OA0MDKCkpCSt19OkM5fLFdiniWInyzK8Xi+ysrKULiWs06dPx9xEAwC2b9+O+++/HxaLBbNmzQIAvPPOO/D5fHGdj2iq8NWMVCfcaI0/cPkvxKeijlSNHLW3t2PevHmKtpkOF9ySsTGof7PqRMJjqK/9RFGEx+OBw+FAc3NzyO8v3cOjklNfRVFEb28vR2kSYDKZ2CY+AexamJiRkZG07loIjHYu3LlzZ8yP+/d//3c8/PDDuOqqq3DvvffCbrfjnnvuwRVXXIFLL700BZUSJQdDF2UM/4W82j9Zdjgc6OvrU3xaXPBFvpp+prIs48MPP8Tq1auRn58f9j7RbAQa79f+TUCTec5Yp74mEv6Gh4dhNBrR0dExpQE0U7jdbvh8vrS/6E1nZrMZF154odJlqJbVak37Jhq1tbV44IEHYn5cYWEh3nrrLXznO9/BddddB6PRiB07duChhx5KQZVEycPQRRlBkiQIgqD69vCyLKOhoQFVVVWq/j6U1N/fj7y8vLCBC5jajUCVkEiY9I9yLV26FFqtdsJ9xv9XiamvAKZkZDHec3R2dqKsrAyiKE75KGUm8Hq9kGU5rafGpTur1YrKykqlywhLlmVYrda4twNYunQpDhw4kOSqiFKLoYtUT5IkeL1e1beHB0b39CksLEz7TyjTlSiKaGtrw7p165QuRVGJXOR3dXVh3rx5mDt3bpKrSh4lp75GOockSbBarSgoKEBfX9+Eqa/RSMeprZHOkcxQGbxWh+IzMjIy6QdPSuvs7GSTFJp2GLpI9QRBAADVBy6XywWTyaT4tEI16+zsxJw5c2A0GpUuRZUkSUJXV1fah9Z0nvpqsViQk5OD6urquB7vH/FL5rRUtU19tVqtKCwsRH19fdoEUDXxeDwwGo1pXXdtbS2bXtC0w9BFqiaKIkRRzIhphY2NjVi+fHnaXUSqhdfrZfOHBPX19WHGjBkMrQkwmUxYtGhR3I9P1zCZLJFGDQVBwOnTp7FkyZK4pqkKgpCUqa5TNfU1FeFxaGgIOTk5GBkZifo5p1ptbS3WrFkT8+Oef/55/PKXv8S5c+dQVFSELVu24Oc//zn3wyNVYOgi1fJ3K8yEaYW9vb3IysrCjBkzlC5FtVpaWrBo0SLV/y4oRZZldHR0xHUhRKM8Hg88Hg8KCwuVLiVtRbrI93ctVGsTklSMTsY69XVoaAjZ2dlob2+PqetrNOINj6+99ho6OzsDmyF/9NFH8Pl86O7uDmwNYDAYAn/Pzs7Gjh07xjz3q6++iuuvvx633XYb9u7di56eHvzoRz/C9u3b8cEHH/C1n9IeQxepln9aodr3cfF6vWhvb8eGDRuULkW1RkZG4HA4UFVVpXQpqmU2m1FYWMjmBQno7u7mJ+4JMpvNmD9/vtJlxC0dpr6+//77WLVqVdLfGxOZ+nrxxRejsrISPp8PPp8P7777LmpqagIfngqCEOj6KQhCyGD+7LPPYt26dfjd734XOFZYWIgdO3bg7NmzcU/pJZoq6r5apWkreFqh2jU2NmLp0qUwGAxKl6Ja586dw7Jly9J6DUM6k2UZ7e3tbNGdAFmW0dfXxw9PEiBJEoaHh1FTU6N0KarlHw1LxXtjImHys5/9bODvdrsdzzzzDL761a/GdA6fzzehyVRxcTGATwIhUTrjWCypjn/evtrXcQGjU2kAoLS0VOFK1MtiscBoNLLjYwIGBweRl5eHnJwcpUtRraGhIRQUFGTEB0FKsdlsKCoq4ocnCbDb7Wk/vfXMmTNYtWpVzI/7xje+gaNHj+Lpp5/G8PAwzp07hx/96EfYvHkzgzqpAt8dSHX279+P5uZmGI1G6PV66PV6GI3GwFxx/7HgvwffN3j+ePAxg8EQOEfw3PLx883DdbOK9ULBYrHgiSeewO7du5P1o5l2JElCc3Mz1yElqL29nVMzE9TV1cUW2Anyr+ei+Fmt1sDoT7o6ffp0XJ0Lv/CFL+CPf/wjbrrpJnz9618HAHzmM5/Bq6++muwSiVKCoYtUZ8uWLVi9ejVEUQzMDw/+IwgCBEGA1+sNzBH3Hw/1d1EU4fV6A8f8jx9/X/9xURSjqlOWZeh0ujFBLjjknT9/HuXl5bj11lvDBj+dTjcmMIYKjeHCYXAIHR9Axz+P/z7hpo2k6yfPra2tmDVrFrKzs5UuRbWsVisMBgPy8vKULkW1vF4vXC5X2o8wpDNZljE4OIhly5YpXYqqWa1WLF++XOkyJlVXV4dvfvObMT/uyJEjuOWWW/Dd734X27ZtQ19fH/bs2YNrrrkGb775ZsZ2/KTMwdBFqpOOe3uEm08eHAyDg9w777yDxx9/HD//+c8nhMfgkOfz+UIGQq/XC6fTGTZIjj+H/zHh6vEf9wfKSCHLHygnGykMFeomC46hwmnwCOb4x7hcLuzevRt/+MMf0NDQAIPBMOmIptoC5VRpa2vD0qVLlS5D1Xp6ejB37txp/7uUiJGREeTl5al+yriSZFmGy+VK+2nCZ86ciWv96O7du3H11VfjF7/4ReDYmjVrUFVVhVdeeQXXXnttMsskSjqGLqIkCHex5Q8A498Ejx07hqeeegoLFy6civISEi5QhhsRDA6J44+PD31erzfk6KLT6Zx0dFIQBLz33ntYuHAh9u/fH3jOyUYo/R21gNF/r8n+7g+UkwXG8S2OQ40oxjLldbJQGmmEMtyFaqQQcPz4cZw8eRJr166N99dj2pNlGT09PVi/fr3Spaia2Wzm2tYEuVwu5ObmpnX4F0URbrc7rpH1xsZGXH/99WOOrVixAjk5OWhpaUlWiUQpw9BFpIDf/va3SpcQtXBv4P4LfyU+VW1pacFXvvIVvPHGGwl9Mh4qUPr3wwkV9IJD4vjj40Nf8B//+fwjlPFMeQ11f//XkTp3Bd/uH/UzGAzo6enB0qVL8eabb4YNfeOnqo4PjJMF0cnWT47/Otx94g2UU6WzsxO5ubnsPpogi8XC8J8gq9Wa9g2FWlpa4h5Zr6iowEcffTTmWENDA1wuFyorK5NQHVFqMXQRkeqUlZXhmWeeSXgqUriGKFqtVvUX0eECpT+s1dXV4e6778ZTTz0VchprPFNeHQ5H0qe8RtsK2t8me7KwN9mU11CBMFTwHD/l9eGHH8YXvvAFOByOsPcPF2bDBcd0CZRTxeVyBX5eFD+r1Zr2+8TV1tbGvUTglltuwR133IF58+YF1nT95Cc/QWVlJT7/+c8nuVKi5GPoIiLVyc/P5zqkCMIFSqPRCKPRiHPnzmHPnj2YM2eOAtUlZrJAGSo0hgp1oUYMw41Q+ny+MRu3+o+NjIygoaEB1dXVaGpqGhMko5nyGsveQsEjlJNNd51shDKaKayTrdOMZcprLIHyueeew4IFC6L/BaCQ1NAuvra2Fhs3bozrsd/5zndgNBqxf/9+PProoyguLsall16KBx98kI2ASBU0EV70udscERFRCL/73e/g8/lwxx13JO2ckQJltOsngwNfpBHKSOsng+8b7ZTXWJjNZixevBiyLE8aGMONUIZbPxluhDLRKa/pOEJpt9tx4sQJXHHFFYrVEI0vfvGL+P3vf8+QTZks7AsBR7qIiIji8KUvfSnpaxojjVCqWahAOTg4iC984Qs4ePBg3OsnE2nKE7zeMtxU1+DgGc8IZbiRxVCjk+Onw0baMsQfOuvr63HmzJlAcI00QhnufMnYg3Iy3d3dmD9/ftLOR6QmDF1ERERxUOPUTCWFunjv7u7GzTffrPrpYeFGKCeb2hrN+slom/K8++67KC0txdGjR0OOZoab6hp8Tn+gnKy7a7DJRgpDhT7/tNvptmaRyI/TC4mIiIhU7Morr8QzzzyTkg8CQl0nSpIU85RXp9MJp9OJa665JuxzNTc3Y+/evTh+/Djq6upw2WWX4e23355Qz4MPPoj9+/fDYrHgoosuwsMPP4w1a9Yk+1snigenFxIRERFlosceeyxlI6+hRqZ0Oh10Oh2ysrKS+lxnzpzBgQMH8KlPfQperzfkfX7+85/jpz/9Kfbu3Yuqqirs27cPV1xxBerq6jj6TGmNI11EREREpDhJkgJbgXzpS1+CxWIZM9LldrtRVlaG3bt347777gMAOBwOVFZW4uabb8YDDzygRNlEwcKOdCW2yQ0RERERURJE2nvxvffew/DwML785S8HjuXl5eGqq67CwYMHU10eUUIYuoiIiIgo7TU2NkKn02HZsmVjjldXV6OxsVGhqoiiw9BFRERERGlvaGgI+fn50Ol0Y46XlJTA6XSGXQdGlA4YuoiIiIhIFUI19gjX1p4onTB0EU2BF198EVdffTXmz5+P/Px8rF+/Hs8995zSZREREalGSUkJ7HY7RFEcc9xqtSI3NxcGg0GhyogiY+gimgL79u1Dfn4+HnroIbz66qvYvHkzbrjhBvz2t79VujQiIiJVqKqqgiiKaG5uHnO8sbERVVVVClVFFB2GLqIp8Nprr+HZZ5/Fl7/8ZVx++eX41a9+heuvvx779u1TujTVaG5uxs0334zVq1dDp9Nh06ZNSpdERERT6DOf+QwKCwvx4osvBo45nU689tpr2LZtm4KVEUXG0EU0BWbNmjXh2Nq1a9Hf369ANerk3zRz+fLlWL58udLlqFZ9fT22bNmC3NxczJs3D/fdd9+EqTpEREpwOp146aWX8NJLL8FkMsFsNge+djqdyM7Oxg9+8AP853/+Jx555BEcPnwYO3fuhCRJuP3225Uun2hSeqULIJqu3nvvPdTU1ChdhmpcddVV2LFjB4BPNs2k2AwNDeGKK65ATU0NXnnlFbS0tGD37t2QJImbihKR4vr7+7Fz584xx/xft7W1obKyEj/4wQ8gSRIefPBBDAwMYMOGDXjjjTdQVlamRMlEUeNIF5ECDh8+jFdeeQW33Xab0qWoRqRNMymyRx99FC6XCy+//DKuvPJK3HLLLbj//vuxb98+DA8PK12eqv35z3/Gtddei7lz50Kj0eCPf/yj0iURqU5lZSVkWQ75p7KyEsBoh8If/vCH6OrqgsvlwtGjR7F27VplCyeKAq9iiKZYe3s7brjhBuzYsQM33nij0uXQNHLw4EF87nOfQ2FhYeDYddddB5fLhb///e8KVqZ+L730Etrb27F9+3alS1Gl4eFh3H///bj44otRVFSEOXPm4JprrsG5c+eULo2IKCkYuoim0ODgILZt24by8nL86U9/UrocmmZCdfgqLy9Hbm4uGhsbFaoqM/z5z3/GRx99hIceekjpUlSpo6MDv//97/G5z30OL730Eh577DH09PTgkksuQWdnp9LlEREljKGLaIo4nU5s374dXq8Xf/3rX5GXl6d0STTNDA0Nobi4eMLxkpISDA0NKVBR5uD018QsWrQILS0t+OlPf4orr7wSO3bswIEDB+Dz+fDkk08qXZ6q3HLLLaiqqkJ+fj5KSkrw2c9+Fm+++abSZRFNe2ykQTQFBEHAzp070dTUhHfffRezZ89WuiSapjQazYRjsiyHPE40VUJ9CDVjxgxUVFSwy2uMXC4Xdu3ahRUrVsDr9eKJJ57Atm3bcPToUXzqU59SujyiaYuhi2gK3HrrrThw4AB+85vfYHBwEMePHw/ctnbtWmRlZSlYHU0XJSUlsFqtE47bbLaQI2BESjKbzWhubsatt96qdCmq8tTfxLNRAAAG0klEQVRTT435euvWrVi0aBGeffZZhi4iBTF0EU2Bv/3tbwCA7373uxNu87fBJUq1qqqqCWu3Ojs74XA4Jqz1mu5sNht6enoi3o8/t9TZvXs38vPzcd111yldiqrpdDoUFxfD6/UqXQrRtMbQRTQF2tvblS5B9ZxOJw4cOAAAMJlMGB4exksvvQQA+PznP4/c3Fwly1OFbdu2Ye/evbDb7SgoKAAw2gAiJycHGzduVLi69PLiiy/iW9/6VsT7ybI8BdWoUyLBdf/+/fjTn/6Ev/zlL5g5c2YqystosixDFEXYbDY8/fTTaGpqwuOPP650WUTTmibCGwbfTYgoLbS3t2PRokUhb+NoYXSGhoZQU1ODlStX4p577kFrayvuvPNOfO973+PmyEkyMjKCgoIC/OEPf5j2W0I8/vjjcQXXV199Fddeey0efPBB3H333akqL6M9//zzuP766wGMrpd79tlncfXVVytcFdG0EHaBNEMXEdE0Ul9fj127duHYsWMoLi7GN7/5TezZswc6nU7p0jICQ1di3nvvPVxxxRX4xje+gd/97ndKl5MW4hkxHBoaQktLCywWC/7rv/4Lf/nLX3DgwAFs2rQphZUSERi6iIiIUqe+vh719fVwu9346le/ittuuw2bNm1CaWkpp25G6cyZM7jsssuwadMmvPTSS2zD/0/xjhgG27JlC3w+H955551klkZEEzF0ERERpcqePXvw4x//eMLxjRs34u233576glSmv78f69evh0ajwdNPP43s7OzAbYWFhaipqVGwOvW766678Pzzz6Orq0vpUogyHUMXERERpae3334bmzdvDnkbg2tiZFnGpZdeCq1Wi6NHjypdDlGmCxu62L2QiIiIFLVp0yZ2gkyCo0eP4te//jWuvfZalJeXY2BgAE899RSOHz+O1157TenyiKY1hi4iIiKiDLBw4ULo9Xrce++9MJvNKC0txZo1a/CPf/wDn/70p5Uuj2ha4/RCIiIiIiKixIWdXsjWQERERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERERERCnE0EVERERERJRCDF1EREREREQpxNBFRERERESUQgxdREREREREKcTQRURERERElEIMXURERET0/7dnhzYAwDAQxFSp+8/cEYouILLpk9BTgND97GfkCgAAgKV8ugAAAEKiCwAAICS6AAAAQqILAAAgJLoAAABCogsAACD0ANMPXvMjAw2MAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plot_data( blobsDataset )" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA10AAAL5CAYAAABLgU4TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt8W/V9//H3OUeSHSdxgFy55EJKsGkSO1cIgZQA/QXomvLYHmn5rWNryxijhG6s6wV+ZfutpR20pXS9pNCOsV8L635d2Pqj7UriEEgggYYkJM4F5wINzgWM45DESWRb0jnn94eQYtmSLMk6so79ej4ePLAlnaMjRZbOW5/v9/M1XNcVAAAAAMAb5kAfAAAAAAAMZoQuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOBPq6ntSEAAAAA9M3IdAWVLgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8ROgCAAAAAA8RugAAAADAQ4QuAAAAAPAQoQsAAAAAPEToAgAAAAAPEboAAAAAwEOELgAAAADwEKELAAAAADxE6AIAAAAADxG6AAAAAMBDhC4AAAAA8BChCwAAAAA8FBjoAwDQN8dx5DhOxusNw+hzH6W8DQAAAM4idAFlzrZtnTlzRrZtlyTwuK6b9n5c15WUPnRlO66+jjnT9f25n66uLlVUVKRcnk+gLGb4LPTxD9RtAABA8RG6gDLluq5isZhisZik+AmzZVkDfkzF3ld/95lu+9dee01z587t936k7EElWxAdCJkCc7br8gm93UUiEUWjUY0YMSKnbQu5HwJzfrcBAJQvQhdQhlzXVSQSkeM4MgyjbE64inkcXj6mcgio5abYgfnMmTNqa2vTJZdcMuDHNJgDc0dHhzo6OnTeeef1uq7QwJzPtoVWsQnM+d0GwOBH6ALKjOM4amlp0enTpzVp0iQ+sFEUxQ7Mif9Mk35MXurq6tLJkyc1ZsyYouzPywpzMfczEIH5jTfe6NeXCOkUu8Kcz7aFBObul/slMJ86dUqVlZWqrKzMaf/AQCF0AWXCdV3Ztq1oNKpYLKZIJELgAlDUajfvKZm1t7cXvULulyHZxdxPX4H53XfflWmaGjduXFGO4xvf+IYWL16sP/iDPyjK/gCvELqAMtB9/hbVA/hFMU8ogYHk1WvZL0OyS8l1XbmuW9SAy3By+AGhCxhgjuMoGo32mr/V8ySAE1yUk8FyAgigtIr9WeY4Dl9UwhcIXcAAisViikajkpTyoWEYRsoHEye4AOCdbJ0/UXzFfK5t26bSBV8gdAEDoOdwwnwmQAMA4FfFDriELvgFoQsosVzbwTOcEACA7BzHIXTBFwhdQAk5jqNIJJL8pi9b215CFwDeB0qD4YWl40Wlizld8ANCF1AC3dvB59KdkA9/AAm8H2AwYXghhipCF+Ax13UVjUZl23Ze6+3wDTcAlAbvt6VT7Oea0AW/IHQBHnIcRydOnNCRI0c0bdq0nANXz+GFra2tamlpkWmayX10/3+mn3O9rFTbeL1vlA7POQYbXtOlU8znuthrfgFeIXQBHkm0g7dtW52dnXl9yHRfq2v//v1qb2/X5MmTFQgEkmGs+/8z/ZzrZemudxynKPfT/bq+ri/0/no6c+aMNm/enP1JzlGmwJfuunIOvMV+DF1dXYpGoymvbUIygL4wpwtDFaELKLKe7eBN0yxoOIVt29q6datGjRql+vp6RaNRBQL8yeZi8+bNmj9/fr/2kU+YzHY7v4XkXB93JBJRZ2en9u3bl/f9eckvgbevEJz4/dSpUwqHwzp27NiAPobBjkYapcPwQgxVnMEBRZSpHXy+HzLhcFhHjx7VjBkzNH78+GSAQ+kMpRPOQpw8eVItLS2qqakZ6EORlF+Y7M9lpQ7J4XBYXV1dOnHiRNGOLd9tvVQugddxHHV2durgwYP9CsnlEvTLXbErXYQu+AGhCyiSTO3g8/1waWlp0RtvvKFzzz1X48eP9+JQgUHHTyec+Th69KhOnTqlqVOnDvShFJWXVdhC9h2LxWSapkKh0IBWkvt6XLk8bi8VIyyeOnVKp06dUmtra0EB86233tILL7wgy7Jkmqbeffdd/fznP9f5558v0zSTlyf+X19fr1mzZnn+3AB9IXQB/eS62dvBG0Zua265rqt9+/bpzJkzmjFjhg4dOuTVIQPwkcEWJKXyC8mRSEStra2aMGHCQB9KWSpmwDx48KCqq6s1atSogoLoeeedp4svvliO48i2bQUCAY0cOVLDhg1LXhaNRnXo0CE999xzam1t1e9//3stWrRI69atS3lcU6ZMUXNzc8pl48ePV0tLS5GeOeAsQhfQD67bdzv4XE4qIpGIduzYoXPOOUezZ8/WmTNnegW1UnyLCQBAT8UMycFgUMOHD9fIkSML2n7s2LGqr69P/r5hwwZ9/OMf71UNfuaZZ/TEE09owYIFWedDf/KTn9TnPve55O+hUKig4wL6QugCCuQ4jqLRaK/5W+lkC0ynTp3Szp07dckll2jcuHFeHCoAIIvEsHB4r9jPdaY5XUuXLtXNN98sSVq2bJna2trSbn/++edrwYIFRTseIBNCF1CARDt4SX22qs02vPCdd97RgQMHVFdXpxEjRuS0DQAAiHMcJ23ooo08yg2vSCAPieGEmeZvpZMuQLmuq7179+qdd97R5ZdfnhK4Mm2D/PD8eYuqAAYbXtOl4UWlqz8B64knnlAoFNKoUaO0bNmyXnO8gGKh0gXkyHVdtbS0aNiwYaqsrMz5Q6Pn7XrO3+KDHn5FsMVgwWu5dEo1vDAXN998sxYsWKCLLrpITU1N+upXv6pFixZp586dGjVqVNGOEZAIXUBOEu3g3377bV144YUaNmxYXtsnPtDb29u1c+dOTZs2Lev8LSpd/ZN4/gi0ADC4ZRpemIvvfe97yZ8XLVqkhQsXatasWfrXf/1X3XPPPcU6REASoQvIqq928LlIBIDE/K36+vpewwkzbQNgaON9oDT4kqZ0iv1c9yd09TRjxgzV1NTotddeK8r+gO4IXUAGubSDz3U/Z86cUUtLiy6//PKsrWsz4WQAGLr4+8dgUm5zutLhbw5eoJEGkEZiOGHPwJVvBSoSiWj79u0yDEOzZs3KOXBR6eofnj8A+eD9wr/6M6erp127dmnv3r2aO3duUfYHdEelC+ghWzv4fE7mE/O3PvCBD+itt97K65szQgMAlBbVjdIoVSONcDis3/72t5KkI0eOqL29XU8//bQk6SMf+YheeOEFPfXUU/roRz+qCy64QHv27NHXv/51TZo0SZ/+9KeLdnxAAqELeJ/ruorFYorFYhmHE+b6QfH222/rrbfe0qxZszRs2DAdOHCg2IcLDDi+GOhbuC2s9uZ2BUcEFT0dVfXkalWNqRrowwIGTLHfNzLN6WptbdXHP/7xlMsSvx84cEATJ05Ua2ur7rnnHp04cUKjR4/WjTfeqH/8x39UdXV1UY8RkAhdgKT4h0AkEpHjOH3O38r2geE4jvbt26eOjo7k/C3HcfI+Hipd/cPz5z2qAuklQlb15Go1v9CsNXevkSTFOmIyQ6YM09ANP7pBtctqB/hI0R2NNEqrFHO6pkyZ0ufnwNq1a4t2HEBfCF0Y8hLdCRMfutk+DLKdzEciETU2Nuq8885TTU1NwfPACt0GgLfCbWG1NrZKksbVj0upWIXbwmp8olGvPvyqrJAlO2LLdVw5kbNfuiR+XnXnKk1aPImKF4akcu5eCHiJ0IUhq5B28JnCUGL+1qWXXqqxY8f22galR2hFMTWtbNLqz65OBicjaOimH9+kSYsnace/7NCmhzfJ7rIlSXannXVfTsRRa2Orplw/pc/75XWMwcaL1zSfs/ADQheGpGK1g5fi87eam5s1a9YsDR8+vCjHR6Wrf/gARjGF28JqWN6QUrVyo65+e8dvZVqmnK78hxDng9ez9xheWFo81xiKCF0YchzH0eHDhzVy5EgNGzas4K6CjuNo79696uzs1Pz58wtafyuX+wHgve5zsarGVKX8nhhS2EtMcmKFBa6TzSf7cbSAfxFwMVQRujCkJNrBHz16VBUVFaqqym9ORSIMdZ+/VVtbywdImSG0Ih9NK5vUsLxBhmXItV3N/LOZ2vXkLplBU7HOmFzHlRsr7utp/X3rddFVF9HRsEwQBEqL5xpDEaELQ0LPdvCmaRZ0Um4Yhs6cOaM333wz7fytYiE0AL311X69Z7Uq132uunOV3OjZv7ftP9ke/6Ejy4aW4kMLI4VVulzX1VNXPyWrwpITdbRkxRI6GmJI4LMNQxWhC4NePu3g+9Le3q6TJ09q3rx5RZu/heLjW9TBp2llk9bcvSbeAKfTllVpSa60+JuLVX9bffJ6M2jmFGISAe3wy4dTAlcurIr4fdfeUqs9K/f02TgjncQ2ieYbDcsb6GiIIYGqIoYqQhcGtUzt4POtJCXmb505c0ZTp071PHD1/EDiAyp/fJvqPa+e43Tzq9bcvUaxjljyNonQsvaetYqcjuiVb7wSv/796lS6EJPY77uN72r9fevlxBw50fwrVYmgtPvJ3Zp83WQ1P9/cj0cbZwZNtTe39wpdvI5LgyBQOrymMVQRujAopRtO2F0+oSsxf2v06NG64IILcmotDwx2Xp2gpqtYnXPxOTKDZsbhfhv+YUP8+m56hpjEfg3LUPR0tGjHW4zAJUlO1FH15Oq01xEGMNjwmsZQxNkjBp1EO/hE4Er35p5r6Dp58qQ2b96sKVOmaOrUqQXPBUNp8YHuT4nW7LGOmCLtEcU6Ylr92dWyo7aiHZmDkhtzZXekDvHrHmK6V8r6E7gMM8fXlSkZVt+3tSoshapDCgwLaMmKJQwtHEBUukqH5xpDFZUuDCqO4ygSifQaTliII0eO6ODBg5o9e3beXQ4x8AjH/rPjX3b0mh9ld9la+dGVUh6jAK1KS0tWLJEktWxtUeeJzqyVsu4uuvoiHd5wOO11ub6mDMuQFbBShkP2FBgW0Md+/jFVnlNJ90IAGAIIXRg0Eu3gJfU5BDBbpSsxf6urq6vX+lt0FQTyF24LJ9e6GnnRSJ06fEpdJ7tUMapC4+rHJedtvfLNV9Jun0+HQLPC1M3/frM63uvQ49Mflxk0ZUfsnOduvb357fRXGFJweDCnSpkbdRWLZg5cCYnHDgwlVLowVBG64Hs952/l8maeKTx1dXWpsbFRY8aMSbv+FqHLH/h3GljdG2E0v9Cs1Z9dnTE4GZah675znUZNHlWUtbCcLkdHdx/t1VgjF0YoXqFyulKP1Qyauvbha7X+3vUZNpTU49AT3RWtoCU7aqv2llrtXbk3Za4agat8EARKh+caQxWhC75WaDv4dCflJ0+e1K5du1RTU6MxY8Zk3M5xCluXBxjMEkGrpbFFL973YrLC5Npu1iqTa7tae89aTf/09D7vw7AMBYYF+qw2vfzAy70aa+TCtV05ZuqxWhWWbt1wq0bXjFbFyAqtvmt17xbxabKi67ia//n52vzIZpkBU3t+sUdz7pqjiR+aSIULAIYgGmnAtyKRiNrb2wtaf6tn6Dpy5Ihef/11zZ49O2Pggr9Q6SqdppVNenz643r6Y0/r+XueTzbCsDtzH9a3+//s7vM2hmno8s9frtDIUNbbmQGzoFbwhmFo8UOLFRgWSDa4uOHRGzS6ZrQkqXZZrW587MZ4FSsHmx7aJCfiKBaOye6ytfm7m/XMHz+jg+sO5nxMvI5Lg+pLafFcYyii0gXfSQwnPHbsmN555x1Nn973N+SZOI6jPXv2KBKJ9Jq/lQ7D1vyBD/TScF037RpaXnGijl55KP28r5TbxRwt/uZirfvyuuSaWrkIVAY0vn68bt99u9qb2xUcEZ/DFW4Lq2pMlZpWNqlheUNOiyFnGk5pd9p5L4TM6xkA/I/QBV/pOZywUIZhKBKJaMuWLRo7dqwuu+yyfs0FKwXCHspBYhhhYEz846O9uT3nzoDF4EQcGUEjOTcqnXmfn6f62+p10VUX6aeX/zTt8L90XNtNdhJsfqFZDcsbZFqmHDse4tbfuz6nwNWXTAshAwAGL0IXfKNnO/j+rJnV2dmp1tZWzZgxI6/hhAP5jTPfdueOiqQ3ui9cbEdsTb9vuiZ8ZEJe1aRiME0z631ueWSLRk8brbEzx+YcuCTp4hsvVsexDrU2tmr1navlRB3Zit/PC3/7Qs7DCvuSbSFkDAyGFwLwGqELZc91Xdm2rWg0mgxbUuEn1ocPH1Zra6smT55c0PwtTuYxFKUMI3y/qrXjazu0+8Hdcp3MfxPZKlKF6ivk2V22Vt+1Wou+tiiv/e7/5X7t/+V+maHex+zEHLld/fvbtyotGYZB50IAGIIIXShr2drB5xu6EvO3otGoJk2apFAo+2T8dKigYDBKDBlMzGHquVhvuC2sPU/vibdG786WbDt7AHJiA9Pt0+60deL3JwraNtN8rAlzJuidTe/kvT8rZGnh3y/UxKsmshBymaLS5U98HsNPCF0oa9nawecTgBLrbyXmbx08eLCgN+uBCl2cDOSHcJy7RHMIufEKUfdqTO2yWm1/Yrte+MILBa+hZVrmgAWvnf9np6b/6XTtfrLvzoi5KCRwBYYH9LGnPqYp108pyjEAOMu2bVlWcYb9Al4jdKGs9dUOPpcT6xMnTmj37t2qra3V6NHx1s+FnpT352Seb1JRDrovXCyp18LFiUYRDcsbdOrIKb30dy/16/7MkKkLr75Qh9Yd6td+CmGFLE25fope/7+vy42e/bs1gkaf88KS+6iw0t4uODwoOxq/PFNlTJLsiK1x9eMKOHoAfSF0wU8IXShr2UJKLgHm8OHDOnTokGbPnq2qqrNDeqiEYCja/sR2rf/yeplBU67tavZnZ2cMDIZlaOPXNvb7PmPhmFq2tMgIGXIjpf2bi3ZEteqOVSmBS4qHMUNG1tBlVVpa/M3Fat3Zqp2P7+x1/YT5E3TklSNyurJX8fr7RQvvU6XBl2L+5DgOoQu+QeiCb2ULTo7jqKmpSbFYTJdffnmvN2XDMOQ4hS2e2p8KGR/qpUGoPitR2Tq08ZBeuj9etUqEjS0/2JJxOztiywpZRWmCET0dzXidETR6haJ0zAqzz4CTIiAZrpGsRnXn2q7cLG0NA5UB3fDYDar5oxptenhT2tsc3nA4pyGXVsjqd3t43jeA9GzbTjbXAsodr1T4VqYT666uLm3evFnDhw9XXV1dUb8FG4hhiQmECOSraWWTHp/+uFZ+dGUycHVnWpk/AubePVeO7e1cLKvS0pX3XtlnK/bg8GB+4c+QDBkZ55Jd9vHLdMUXr5ARTB9mYp0xrbpzlfY8vUeXLL0k7W0CFbl9Z0l7eH/g/dWfGF4IP6HSBd9KF2TSzd/Kddtc77MQfFNdekP9JCqlxXsGju3ICBi9KjZWhaWRk0Z6HroWfGlBfM2vPhYcdqKOlM+huMpahdr15C4Fq4JZK2x2p62G5Q360IMfkixJ3Q/RVNoKWjqLv7mYboU+wfu0/xC64CdUujBoHDp0SE1NTZozZ07WwCX1vyFGKbdD/obayVO4LayWrS0Kt4WTv+95ek/fGzpS/W31MgJnny8zaGrxtxbrxftezGnYX04ynBP97tu/67NRh2EZuuyPL8t4vRk0e7eyz0E0nHnIY/K+TUPrv7w+NXBJkqOsa5MlLPr6ItXfVp//wQHIieu6hC74BpUu+FYiOCXmb9m2nXb+VrZtC73PUm0HZBNuC2vrD7Zq64qtMixDru3qslsu69WtLxPXdrXjpzt01T9cpZe/9rIMy5BcqaOtI6dQkbMMRSG7o+9qkWu72vXTXWmvM4OmXLmyQuk7DPZX9ExURih9ojNDpmRlXqg5OCKoiVdNLPoxwRvMuS2dYn4WMqcLfsIrFb5lGIZs207O35o5c2bO33j5JXQR1AozFEJu08omPXbpY9r83c1yIo7sDltOxNHuJ3fnVaFyuhxt+LsNyX3YnbZe/sbLRQ8xRsCQWWH2OX8rV7M+OyseNKNuUY7VqrA0/c+m97o8U8dFO2xnvV/XdpnLBXiM4YXwE0IXfKu9vV3t7e265JJLNGXKlEH3LeVgezwonmN7j2n1Z1dLmadr9WJWZHm775krvJjKZUofeuBDuvGxG1OGMyZYFbmfOAVHBDW+brysUPFOtpb9epnqP1Ov4Ihg1ttlqnwZQUNG0FCoOqTAsICWrFhSlLlcg/3LAww9xfxsI3TBTxheCF86dOiQDh8+rBEjRvQ5fysdP1W6CF/ormllkxruasi6IG86l3zkEu3/9f6c2px7wY242vjVjfHmHGkO3TXyqM7FHE2YN6FXR0MzZMp13Lwfo1VpyQpaqp5cLdfOvG1weFBz756r1370miKnIimXL31qqcbVj0suPF3M5hm8B3iP91p/Yp0u+AmVLviK4zjatWuXjh8/rrlz5/arm2C5h66hMETOK4P1uUt0JCxkON2+X+7zLHCZAVMXXn1hn7eLnonK7rTTzhdzOvsIkd3+1F3H1dGdR7VkxRIFhgWS1aUFX1qgQGX+3yUahpEMSol9pqt4uY6rmmU1vVrRu46rcfXjVDWmShPmTqBbIVAizOmCn/BKhW90dnZq8+bNGjFihGbOnKlAIFDwibUfGmJ0D5SJnwdjkEDu2pvb4936yowRMPTu1ne14L4FRT2+QFVAC768QLc03JIy/NCJOGpY3qBJiyfp9t23a9kzy3T77ttVd1ud7EjfgXT8vPGyKi2FRoRkVVi65qFrkkGpdlmtbt99u5Y+uVTzPz9fVoWl4PCgzApTl3/hcg0bPaxX2CvWUEIMHCpd/sTwQvgJwwvhC8ePH9frr7+uyy67TOedd56kgQkgpa6sEbIK4/dKV7gtnBymJkmtja2SpJEXjVS0o+9W56WWWGdryz9t0VX/cJU2/P2GrMP0cuXEHNUsq1H0dDTeobDbel5m0FR7c3tKZanxicacui6+u+VdGQFDTtRRYFhA6+9dr4qRFapdVitJan6hWWvuXhN/bF227Jgt2dKrD7+qVx9+VUtWLNHtu2/3ZCghMJgV+32Z4YXwE0IXyprrujp8+LDefvttzZkzR8OGDUte158T61Kv08XwQuQi3BbWjn/ZoU3f2SQrZCnWGYsPZXt/NJsZNIsSZrziuvF5W5mO0awwZZqmZvzpDO382U4ZlqFYV0yGa6Tdxok4evKqJ3Xtt67tNX/LiTop3QG3P7Fdz9/zfK99GAFDZqD3AsyJoZbR0/EQm6icSeq9qPT7myYua1jeoNt3364JcydkezrgI7zX+hOhC35C6EJZa2tr04kTJzR//vxeb6z9GQrit+GF6X7H4BFuC6vxiUZt+vYmOV3xcNEzJEjqFTy6S6zTVSpG0OjVmj7dMadsI0N/8uKfaHTNaNX/Rb1atrSocnSlfvXJX2Xcxok4WnfvOi3+5mKtv3e9zKApJ+qkDOkLt4Xjixj3EKgK6IYf3RDv9NjX47EMtTe3S3p/weWOzLdNVNmocA0uvMd6r9jDOJnTBT8hdKGsjR07VmPGjCn6m6ofKl2F3hf8VSVsWtmk1XetToatQlgVlm549AadeueUXvrKS0U8uszSrQWWLoh1Z1VYip6OqmllU3L4XkpFKQPTMjW+bnzGIX2tja1pZyi7tquJH5qoS5ddqteffD3rfURPR/Xujnc1bem0Podw9qyyARgYzOmCn/D1AMqaYRiefPvYn0pXqe7PT8EBhQm3hfXsXz7br8D1gaUf0K0bbtWkxZMUCAbyWu+qP6wKS2bQTK7/ZVaYfS7KbEds2VFbDXc1KNYRyylwSVKsK5Yx5DStbNIzf/yM7I7eVbbF31qs/b/anz5wpflTXveldTr+xvE+/867N97wGu8BpUEjjdLwotJF6IJfUOkC8lDKsMYJQP/44WR16w+25rXAcToHXzioJ1c/mTL3K1dWhVVQ+3lJcuWq5vM12vvdvZKUU3C3/KNfAAAgAElEQVS8+KaL9fTSp/O+T8M0tO9X+/TifS+mDC+ctHhSvIV+j2GNRsDQ5V+8XKMmjdIztzzTa3/WMEtuzO01XNPusrXyD1Zmfe0kFmYuJd4LMFgUO3Qxpwt+QqULQ9JAzOlieGHp+OEkNdwW1pbvb8lvI1NSj/OL6OlofKHkAopldsTWrDtnxdunV4dkBI3UTwVTumjRRbJClqzK+B2bFaYMy5Acad/39+W8SLNZYerAswcKCnmBUEDrv7xesY6YIu0RxTpialjeoNbGVhlm+n/rTQ9u0i9v+WXaFvJuzJUVSn+i5kSdrOuZubbL0EKgTDCnC37CKxVDEosjo5TCbWG1bG1RuC2cvGzLD7fk3/jCUbKTXr7MynSTnqSdP90pSZr31/N03bevkxWyZASM5P0dfumwbNuWXKnmEzWSGw8eTtRJO6Qv5T5D5tmFi7+4IGPQ6YsdtXut/2UGTW378TZFz/Sef5UITW4k/fNbd1udHDu/lBoYHmBNrkGM4YWlQaULQxnDCzEklTrQFBq6ULhyCayJphGJYXFXfuVKORFHW/4pzypXP2WqSCWC06Zvb4r/nq4DoR3/Rnnvf+zN+37n/dU81d1WF7+Phzf1voGh+Bpc3SpgZigesAKVATlRR9c8dI3W35vanTDaGdWBVQfyPh5J2vWzXXJsR2bIlBW00ga3nmbfMVtzPzeXwAX0Q7Hfl5nTBT+h0oWy5lXw8EPLeKl8goPflEtgDbeFk2s+JYbFvXT/S9r4tY0FDQf0kmEZMq3ifiQ4EUevfudVSVLVmCpNum5S7xu56jXk0Ik4MgxD8/5qnm7ffbvqP1OvJSuWxIc/JjbrR3v8WEdMbtSVYRpa+tRSzbpzVp/bbHtsW8H3h/JHpat0aKSBoYrQBeSB4YXoy7G9x7T733bryO+OaM/Te+QaZfJv2EfIi3XF8h5yl6vWxla9tfYtNa9pznkbu8tOBjZJGjtzrEyj20dWjsMszZCZnI/WkxWyVHlOpabeMLXv/Vhmch0vAIXxYnghc7rgFwwvxJDkh+GFKNxAPd9rv7BWjT9pLPn9FoNpmlp4/0K9dH/mdb5m/OkM7Xl6jwzTyGlInhSvKv2///n/ZAbMrIs7Z9Le3K7mF5rVcFdD2qYY3V246EK1bG6RYRlyYo4WfHGBpt08TU8teirt7RPrbVVPru5zjTE7ag9IAw3eNzCY0DIeQxmhC0OSH4YXEtT85djeY74NXFJ8/lS2UGMEDF391at19Vev1qEXD+m3f/HbPtflSnC6nILWIot1xGRH7Xhb+GxdD6348bdsbtGcu+Zo4qKJGnnRSEVPR3V442G5TupxBoYF5LquLv/C5ZLiQx9v+vFNWnXnqoxz3xZ/a/GAzedi2Jv3GF7oT4Qu+AmhC2XPiw9DuheiWMJtYbU2tmrL90rbGCMfweFBObaT7DqYTqwzplcefCXzPqqCam9u1/HfH483BjFN2QW2UgxUBeTarkbXjlZrY2vW2767/d1458KOLDeypdiZ+IJnmx/ZrK0/2CpXrgKhQK+KnFVhafZfztZrj72mLd/bolcfflVLVixR7bJajZ05Vk9d/VSvgLfo64tU/5n6gh4rgLOodGEoYyAskIeBrJDxLWzuShVYm1Y26cc1P9Z//eF/6eC6g33efv7n5/daZ8trVqWlpU8t1TUPXZP5OQkqHsqyVK6cqKPgiGCyMUgimBgBI/2cqQyP06q09LF/+5hu3XCrju091ufxJzoY5sOJxh9LuiGQVtDSa4++JrvTTlnzK9wW1uia0brh0RsUGBZQaERIVoWl6793veb/1fy87h/+wxdcpVHs0OW6LnO64BtUulDWBkv3wkIeB5Wu8hRuC6u9uV3BEUE1LG/IeYidJFVPrtad++/UG795Q8/9zXMFr7mVK6vS0g0/ukHj6sfpV5/8VeZFf7NMz7IqLRmGoSUrlih6Otqr6hSoDPQakmeGTMlVr8YcieOZcv0UtWxtibeKT9eivpvqidVasmKJGpY3yAyaipyKSP34s0is+ZXSoj4Yb5JRNaZKtctqNWnxJLU3t6t6cjUt4ocQvtjyHypd8BNCF4akgQg0DC8sLS+eu83f26yNX9soK2TJiTl538e6L61T5FRELz/wsueBywyYuvWlWzW6ZrRatrb0PUQvjeu+e53OmXKOuk52qWJUheyo3WvonR2xU+ZMGZYRD1s9Hl9weFBLn1qqKddPif8+Iph9npbi4W1c/bh4u/n3g1BwRFBPXv1kQXPErApLi7+1uNeaX4mGGglVY6oIW4AHGF6IoYzQhSHJD3O60mGyd268eI5WL1+t3U/ulqSCuvBJ8Tbo2boDFlOgKqDo6XgJq3pytSKnI3nv4/m/eV6GaaSGqvfXyrIqLLmuK8dxpNjZbTKtnxWLxDSufpykswtGK8s/k1lh6sZHb0yGn+5B6MZHb0xWvhILTm/43xuyrt1lVVi6dUM8hFaMrEjZfsmKJYSsIY731tJgcWQMZYQuDEmlHCZY6Hbdj9FxHL311lvq7OyUYRgp/yVum+vPXm7j1T4KUcwP9yO/O5IMXCkseVaxsir7HnqXTaJ6E24L69CLhwpejLln57/uwynPX3q+jvznkZz2k/i37L5gdPI6y5AZMGVVWLIjtq74whWqu60uYxBKNwRw5AUjtfqu1TIsQ67t6rKPX6am/2iSGTTl2q6WrFii0TWjM24PoDSKvU4XoQt+QeiC7/nlG8pChxfatq3GxkZVVVVp4sSJMk1Trusm95f4uefvuV6X+NlxnH7vI5/b5bJNoSKRiAzD0KFDh5L7KjQUtqxp0Y6v7kh/Rx4OEexP4DKDpuo+W6dVy1fp0NpDGVsmmUFTpmUq1hmTETAyz/nKsO3bz7yd8+0DlYHk4sI9hzoGhwf10Z9+VJXnVOYcgnoOAUwXpK7+6tUZg5VfhhAyxLg0/PI54ndeDC+kkQb8gtAFX0sEk3zfxP2yOHIsFtPWrVt1wQUXaPTo0TIMgw+YHBw8eFChUEgTJkxIXlZICAwfDavhaw0FV4k8kUN1zYk6eu2R1/rc1SX3XCKrylLsdEx2xJbdaav5n5tzOoxYV0wKKmVoYbbji3XF9Pvjv5dhGPFte1x31DqqimCFjr5zVEZLPyqr5xrqONUhnXr/8jGG2sJt0sHSV3cLuV3i5+4IA0B6DC+EnxC64GsDPcfKy/uzbVt79uxRTU2Nxo0bp87OTo+ObnDq+XwXMlxxy+NbilLNMoLx+8608G7G7d4fKpcw4YoJOtp4VLbd/4MyLENv/uDNlIqaYeX2/FiVlq7++tV66Ssvye3WStCsMGUYRq/jsyotLfnhEl167aWSpOofVmvtX62VGTDlxBxd+0/X6tIrL/WsqpqtutvffRfzeNK9R/Ss2hZioIJjuQ9b7v4zFcXSKHali+GF8BNCF3zNL6ErX2fOnNHRo0c1depUjRs3bqAPx3cK/VBPtIOvnlyt428c15Yf5LjgcUC66n9dpY3f2NgrpJkVpuYun6tRU0bp+S88n1fw6tkYom1Hm2Z+eqa2P7Y95310Z1VYWvDlBfrdN38nu8vuFY6yNaKQ4uHxynuvVN1n6mSNtNR2qk17v7U3pSGFpGSTCjti64ovXqG6z6TOz5p+y3RdfP3FzKnKQbqqba4GalhwLrdLN5zZy2Poa5vOzk6Zpqnm5twqvdn0ZzjzQG1TqmOIxWJy3fiw+WzV3VwRuuAnhC4MSaUerpNPyDt58qR27dqlMWPGaOTIkR4fGRISHfXMoKnImUh+Fa6YdHz/8bTbOBFHmx/ZHP/FUnx+VQ65ywyaMiwjpRLluq52PJF+fpkRNLKuGWZVWLrh0Rt0zsXnaPM/bc7Yrj1RfUq3faL7nyR1dXVpwocnaNGnFvUKT7k0qfDLnCo/K6S6O1QdOHBAI0aM0NixY4uyv/6ExWIEzr6uG6jgHY1GFYlEtH379ozV3WzOnDmjv/3bv03+HovFFIvF9C//8i/Jy0zTVDQaVUtLi2zb1nvvvadFixZp3bp1KftyXVcPPvigHn30UbW1tWn+/Pn6/ve/r1mzZuV1TECuCF3wtf5UrEpZ6cr1OI8dO6a9e/dq9uzZOnToUFlX48pZvq+LlI56ea5llbDnP/ekv6L7YdjK2NSiO6vC0rJfL9N/3vyfKZdnaq5hVVq68bEbteovV6UNU+dddp6W/mypRteMVrgtnLXlvREwdMtvb1HT/23S7n/bLavCSlaxEoFLOvvFRbrwRKCC3xR72BuBN70TJ06otbVVl156acH72Lp1a/Lnf/7nf1Z1dbVuv/12SWeHDf/yl7/UPffco4ULF6qpqSntfh566CE98MAD+va3v63a2lo98sgj+vCHP6xdu3YVVFkG+sKMfPjaYBpe2NLSov3792vu3Lmqqqoqy2McbMJtYe39r7169buvyjX691wHQoGs604l9VHlsirjFakLF1yoJSuWJNfFysYwDE380ETN/NTMlMtHTh4pI2To9JHT+rcP/Zv2PL1HVWOqtGTFEgWGBWRVpg7LMUOmbvhR/L4//E8f1l80/YWWPbNMt+++XbXLanN4cACQWbHDbc9GGoZhyLIs/dEf/ZEOHz6s//qv/9L06dN7bdfZ2amHHnpI9913n+6++259+MMf1sqVK2UYhn74wx8W7fiA7qh0wdf6E7pKqa/jPHjwoN59913NmzdPgQB/lqXQtLJJz/7Fs0XrTBjtiMZDVz+y29SPTNWSHy5JGabXc52sdGb86QxJ0q4nd6Vcfqr5lKR4MwYpPtdq0uJJKe3VgyOCOnU4frtx9eNSKlR9Vaz4UsB7PMcYTIr9es40p6uvLr8vv/yy2tvb9YlPfCJ52fDhw7V06VI9++yz+vrXv17U4wQkQhd8zi/VoEzH6bqu3njjDZ05c0Zz585N+aDwy2MrR309d+G2sFZ9dlVRW8G7thtvod6PfR5YfUAdxzqS86FaG1tzmlu268ldmnrT1F7rX/VkBk21N7cnw1QiUHUfNojywzA17xW7AoPMit29sJBlVPbs2SPLsjRt2rSUyy+77DL94he/KNbhASkIXShrfb05++VDMt1xuq6rpqYmua6r+vr6Xrfxy2Pzo8YnGuVGPAi00f5t7tqunrzqSQUqA3KijmZ8akZO25lW/KQj21ytxPXVk6v7d5AAUCCvhxfm6vjx4xoxYkSvbc8991yFw2FFIhGFQqFiHSYgiTldGAT8Ug3qfpyO46ixsVGhUEgf/OAHM34I+eWxlaN0z92xvce06eFNeuXBV7y500R3wn5wIo4i7RHFOmI5t4a3o7bG1Y9LztUKVYcUGBbQrDtmpfy+ZMUSGlwAafBe60/9WRw505ehma4D+otKF3zNL0Pwuh9nLBbTtm3bNH78eE2aNCmnbZCfdM/d2i+sVeNPGr29Yzs+hC+x6G6xGQEjvhhxLPXyxd9arKoxVSlztRLt2hfcu4D1sIAccKLtvWJXugpdp+vcc8/VqVOneoW2EydOqKqqSsFgsGjHCCQQulDWchle6IdgYhiGHMdRV1eXtm3bpsmTJ+v888/vcxsUx7G9x7wPXO/ra4hfoYLDg1r61FJ1Hu9Uw/IGGZYhJ+po8TcXq/4z9cnb9Wx+Qft2AOXCi9BVyJyu2tpa2batN954QzU1NcnL9+zZo9paOrXCG4Qu+JpfQpcU7yC3detW1dTUaPTo3BoXdH9sfnqs5SDxXB353RFt/PrGAT6a/FhVluxwagcN13GT3QVzWXy4FHg9eo/nuDRopOFPhQ4vXLhwoaqrq7Vy5Urdf//9kqRwOKxf//rXuuOOO4p9mIAkQhd8zi9BpLOzU4cPH9acOXM0atSonLbxy2MrR4mTp1/c9Asd2XiknztTwW3gzYApWZIVjC8wfOHVF+rg2oNZt7EqLd38bzfr5MGTWn/v+vhwxfcXJ04ErHKoXnGCWjo81xgsStVIIxwO67e//a0k6ciRI2pvb9fTTz8tSfrIRz6iqqoq3XvvvXrggQd07rnnJhdHdhxHn/vc54p2fEB3hC7AY++9954OHz6sCy64IOfAJXGi1R+d73Xq1b9/tf+BS5JcaUzdGLXtaMt5E6vCkmEaWrJiSUpVqrWxNW3oskKWrEorGa6mXD9FkjRt6bSyqGgBQDGUap2u1tZWffzjH0+5LPH7gQMHNGXKFN17771yHEcPPvigjh07pnnz5mnNmjUaP358UY8RSCB0wdfKvRrU2tqqN998UxdffHFBzRXK+bGVq8YnGrX2b9b2a5HinvIJXJLk2I4+8etP6MIFF0pSMjCNqx8nM2TKiZx9LZghU7duvFXR09Fe4aocKlrAUMDwwtIpxZyuKVOm9Pn5aRiGvvKVr+grX/lK0Y4HyIaW8fC1cg5dhw8f1ltvvaV58+YpFArlfZzpHlu5PtZysfn7m7X2nuIGrkK4MVdPL31ae57ek3J51Zgq3fjYjbIqLQWHB2VVWrrxsRs1uma0JsydQMACMKiVyzpdwECg0gVfG6jQle2Dw3VdHThwQCdOnNDcuXNlWVZBx8m3rvnZ+OBGbXpw00AfRpLdZatheYMmLZ6UEqbStXUHMLCodJUGoQtDGaELvlZulS7XdbV3715Fo1HNmjUrOeyh0A+Zcnps5WzV8lV6/cnXB/owejGDptqb23sFK4YNAkD/FbpOFzAQGF4IXxuI0JXpPh3H0c6dO2UYhmbMmNFrnHkxhheit2N7j5Vl4JLia3ZVT64e6MMAkAMqXd7zotJVyDpdwECg0gXfK4fQFYvF1NjYqPPOO08XX3xxTtsUcj/o7YX7XhjoQ0jLqrRS2rwDheA9oDR4nkuj2M8zwwvhJ4Qu+NpAfDPZMwxFIhFt27ZNF110kS688MKM2xSCE4HMju09pl985BfqPNo50IeSZFXGP/yv+MIVqrutbtAHLl6fpUEFBoMJc7owVBG64GsDXQ3q7OzUtm3bdMkll2js2LFZb0ulq3jKbQ6XFbK07DfLZAWtIdMcgyCAwYRGGqXhum5RhwO6rkvogm8QuuBrAzmn6/Tp02psbNQHP/hBnXvuuTltk+/9ZPt9qNr44MYBDVxm0JQTTV1n64bHbkiuyQUASM+L4YXM6YJfELpQ1voKGv0NXYV8u2kYhk6cOKF9+/aprq5OI0eOzGmbQo6TSleqxicaS9IW3hpmye6we13+4e9/WONmjlNwRFCnDp+SFF/weChUtoDBjPfa0mF4IYYqQhd8rT+hK7Ftvh8A0WhU+/bt05w5czRs2LCC7jsXDC9MdWzvMT3/t897fj+hESEt/PuFWv+/1suNnX3+jaChSz56STJgja4Z7fmxACgdRhN4j3W6MJRRk4WvlTqYvP322wqHw6qrq8srcLE4cv9sf2K7fjr/p3Jt7/+tHdtR7bJa3fSTm2RVWgoMD8iqtHTTj2+iogUAZYR1uuAnVLpQ9rwKH/kGobfeekttbW0655xzFAwGPb2vBCpd8SGFz9/jfYXLqrBkmEayzXvtslpNWjxJ7c3tQ6Y5BsoP7wGlQSON0ij28+w4DnO64BuELpS9bG/SxRhemMv979+/Xx0dHZozZ462b99ekhMhhhdK4baw1t6z1vP7MStM3fx/b+41P6tqTBVhCwOOMIDBguGFGMoIXfA1r0OX4zh6/fXXZVmW6urqZBhGyRY65kRL+td5/+rJfg3LkBEwFKgIyIk6WrJiiaZcP8WT+xrMhvqXAgDyw+LIGMoIXfA1L0OXbdvasWOHqqurNXXq1H6FIIYX5m/lzSvV9V6XJ/u+7pHrNG3pNIYO9gNfCmAwYXhh6RR7eCGhC35B6ILveRFMotGotm3bpvPPP18TJ05Mua5UVauhPLzwuc8/p0MvHPJk34u+sUj1n6mXJMIWfCncFu73FwbF2AeQLy+GFzKnC35B6IKveVF96uzs1LZt2zR16lSNHz8+5+36MlQDVL5+dvXP1Lajrej7NUOmrv3Wtaq/rb7o+wa8EG4L6/iu43LGOYo1x1Q9uVrNLzRrzd1rkot0L1mxpFfDl74CVdPKJq25e40My5AdsTV3+VzN/dzcIR2+qHT5E8ML4SeELvhasYcXhsNhbd++XbW1tTrvvPMybleK4xyKla6nrnnKk8BVd1udFt6/cEifVKJ8JUKSHbV14s0TmjBvglp3tGrN3WvkOI6cLkdmyJQMSa7kRBypI77tqjtXyTANWSFLTtTRjD+doV1P7soYyiRpzd1rFOuIJe9/83c3a8sPtuimn9yk2mW1vY6LahiKxYvuhYQu+AWhC75WzNDV3t6unTt3aubMmaqurs66bakaafTcZjCHsDdXvanWba1F368RNAhcGFDZwkui6uTEHDlR5+wVpqRuvzoRR+kkLrc7bUnS9p9sj1/xfih79o5nk6HMtV1d/oXLZZi9T3rdmKvVd63W2JljFT0dVUtji16878WU8NY9kAGFIHRhKCN0wdcMw5DjpD8ZyWXbRIg5duyY9u7dq9mzZ6uqKvvJ+UBVoAbz0JeN/7hRmx7a5Mm+r/v2dQQulFT3kNVzOOA1D16j8fXjM1adkgp7W+vFjbly5SbD2csPviyluTspfgL71NVPyQyYip6Jxi98P7w1LG/QpMWTBu3fEsML/Yk5XfATQhd8rRgBqKWlRQcOHNDcuXNVUVHhyX0yvDCzf/8f/653Nr1T1H2aIVNypWsfvjbZNAMopnBbWK2N8cps9/XdEpUrM2jKjthybEdu1E2Gl7X3rFWgKr5UQd2f18kMmsnrSiJD4JIkN+LKli27y+51nRk01d7c3mfoylTVY6giJNbpwtBG6EJZ6+vNub/DC99++20dP35c8+bNUzAYLGg/ud4Xoau35z7/XL8DV2BYQK7ras5dczRx0USNvGik3mt5T52VnZp5xcwiHSmGunBbWIdePKQTvz+hM61ntP3x7ckAYwQNXXnvlZr2sWlnK1dZglQsHN9w+2Pb48MIfcCJOsnqXDrhtrAan2jUqw+/mpxflhiS2L1xhxN1tPibi8uyoQ2VLu8RujCUEbowJLmuq9OnTysajWrOnDl5vWkPhTBUCquXr9buJ3fnvd0V912hCy+/UJI08qKRip6O9vr23BpvqbW1+PPDkGqo/B00rWzSqjtWybXTP1436urlB17Wpm9uyj9EOZJZYUqOUud05cmqsGRYRjLQFZNVYWnJiiWSpJatLQqOCOrU4VOS4n+D+//ffm16eFOyQpaYX9awvEFjZ47tNYRy7T1rFTkd0cSrJvZZ+SpVhWyovJYHG+Z0wU8IXfC1QgKQ67pqamqS4ziqqanJ+w2b4YX9d2zvsYIClyRteWSLZjfNznoCNpifu3IxGKsC6U7ww21hNdzVkDFwdWdHeg/Ly8WHHviQzpt2ntoPt8vusBWLxvTyAy9LruJBpkdTjXRc181rHlhweFBOzJFhGunnlHWz8O8WynVd/fMH//nscMkcmEFTLVtaZFi9Xysv3f+SgiPixzDnrjkaVzdOFaMqUoZqNj7RqHVfXhevnMVo5jEYsE4XhjJCF3wt35Nrx3G0Y8cODR8+XKNGjSrr9u+DOTg897fPFbxtrnNLgHw0rWxSw/IGmZYpx3Z0w49uUO2y2vi8rTz+DM2AKZlSoDKgWDgmJ9Z3Ejq04ZBe+ruXZIUs2VFbk66dFA83iaCXQ5i69lvXqqK6Iv4YgqZiXTFN/5PpmnrjVP3mT3+TMk/LrDC19KmlGnnRSD216KnUHVmSemTHl7/+spyYIzeW3/uRE3U0Yd6EjGE0ejrerGPzI5vPHlvA1LXfuVau6+r5e56XpOSxJ5p5SCp69YtGGqVB90IMZYQu+Fo+wSQWi2n79u0aO3asJk+erJ07d5Ys1PBhftbKm1fqyItHCt7etd2sc0sknm9k17OiFW4La/VnV8uJOLLfTxyr7lylrvYurbt3XV4VLCfmyAgZqr+9XltXbM3auCLhzV+9KelsuDjw7IG8Ho8ZNDXtY9NUNaZKkxZP0u++9Ts1Pt6oPb/Yo6Z/b1LtLbVq+nlTMgC6jqvO45060XxCdrTHY0vzlmiYRt6BS5Ku/MqVat3RmtewSSfmaO1fr007TNO0TG354RZtW7Et3g0y5uiKL16hus/U8SXMEMb7PfyC0AVfyzV0RSIRvfbaa5o8ebLOP//8vLYt9D576m+lazB8sPx4+o915tCZgrdPzC3J5QRrsFYJUbhwW1hbf7BVr614TVbF2SFrledW9loHy4k4Wvel/AJXghtxtfWHW2UFLTldRer9noVhGTr04iHV/FGNnv/y89q3cp8kKRqLV5J2/yx1KK8bdfXsHc+mD1JpDrfQuWZWyFLD8oa8KoXZjiPSEdGWR7ZIOhtQX37gZW369qZkZbJQVLpKg+cZQxmhC76WSwDq6OjQtm3bdOmll2rMmDF5bVvofQ7UNuUq3BbWzz/8834Hrls33KrRNaOLeGQYKppWNunZv3w2WXlKhKnVd63WjE/NSLuNETCkSLffg0bO85mciJNxQeNisztt/fen/1uvPfpazt1A86lc1f15nRofbyxoeGFRZci/dqedbNoRPR1VcEQw2WBHKv5QRBSO0IWhjNAF38sWTE6dOqUdO3ZoxowZGjVqVMp1pQ5dxeDHD6umlU169s+fLWhbwzLiLeFtV0tWLMk5cA2mwIrCdB9C2HGsQ6s/uzrtUD+701bj4429rzDVq3lGroFroBR7vTsp/je48//slBkwZceyVP0MpVa0TGnDVzdkDp49b99PiYWdE41BrEpLju3IMAwFKgMpLewBYCAQuuBr2ULI8ePH9frrr6u+vl4jRowo4VGlNxQrXeG2cMGB67JbL9M1X7uGb6mRk+4hq/mF5vgCxQFT0Y5oPDxl+1NKkyUM04jPgcqhc+CgZpxtAS/FFx6/aNFFOrj2YPKymk/U6I1n3khdVNlR1kqfYRo5dYTMVc9hnIljduUqEomXK6jGV/sAACAASURBVBONONK9l1CBKQ2eZwxlhC74WqZg0traqjfffFNz585VZWVlXtsWep/F3kby/7ykf/8f/17wtpOuip8cEbaQTc9Fee2ILddx+z20r5DGEYPNBQsvUNvONkVOnR1jGagM6Or7r1bwoaBatrQofCysV77xigzz/RPpNN0P0zEChmRkf54Ny4hXHItUYTQsg86nA8zvn2lAfxC64GvpwsyRI0d0+PBhzZ07V6FQKK9tC71Pr7bpyU8fWK//x+s6+ebJgrefMG9CwdsOhiphuSuH5zjR5j1R1ehekSkLOQaQYqkcW6nOo51F2987r77TKxQ5USdZeR42epgen/546jpfOT7eXBqMmAFTruvKLdI4xOjpqN7d8a4mzJ3Qq4MlFZjS4XnGUEXogq/1PPE7cOCA3nvvPc2bN6/PtTvKfU5XOZzUFmr18tUFL34sSbPumEXDDKQVbgurtbFVXSe7UgJX2bGkW569Rf9x038UdRhdNsUMXFL6KtSV91+p9uZ2dRzrUMuWlvi6ZEUQqArIddyUf0/DNFKHLPbBDJl9VjjX37teruvqxftejLedf3+uly4u+NCRB8IthjJCF3yhrzdq13W1b98+dXV1afbs2WW5Qr1fA1S+Xv3+qzkHrvHzx6ttZ5uskBVfzPXW6Zpz55yiBK6h8nwPJU0rm7TqzlVl39BCkgwZat3eqmBVMGV4Xtky4i3es4Ucs8LUy197OdmsIp9ujn1xok58OGE3KRW0HFz9v6/Wi3//YvZqmyGt+9K6eDjriF/UsLxB838+P88jBoD8ELpQ1vr6RswwDDmOo507dyoUCmnmzJk5f4vmh+GFfgsOR353RBvu35DTbc0KU3/4iz+UVPyWznyTOviE28JqWN5QksBlBszkQsKFcm1XL/7di3lVajzxfiOQvgKSGTS1+JuL9cKXX8g49K/n5d33FxweVPRMtNc2hpVbwwzXcXXtw9dq/b3rZQZNxcKxvP8NNnx1Q5/DG2Ph3kHODJrqfKeT940SoNKFoYzQBV9zHEdtbW2aPHmyLr44v/EhpV4cuVzvp1j++8//W3tX7s3ptoZl6MZHb0yGLCa2oy/tze3xAFECrtzk0LP+KCRwmRVm5vlO5vvvC3IVqAwodiaHStD7u+orrAZCAbU2tsp1MtzOkkwz83Ny9f++WmaFqRe++EJyiJ9hGZn310NwWFCjJo3Sx37+MXWd7EpZUy1XaYcWWpJpZR926EQdVUyoyO/OUBBCF4YyQhd8KxqNas+ePaqsrMw7cEn9C12l2MZPfvPnv9G+lftyu7Eh/dnv/szTOVt+C6w469jeY2rZ0qIJ8yakvEaqJ1eXrGrkxorXvCEfRsDI/l7hKHlcibWoijWnLXI6op3/ujPzDWzJsTMHl3OnnauRF41MuSyfuWyxSEzP/PEzySGOpmnKKUavfltyjewh+poHr1H0nN5VOnhjsH8eApkQuuBLnZ2d2rZtmy688EKdPFlYh7z+nJhT6TrrzVVv5h64JC28fyFNMtDLsb3H9NxfPacjrxxJXjbtD6fp+u9cL0lqbWwt6mK65cgKWZp952xte3SbbNuWG8nygJ3y6dZoWIaO7j6qZ/7nM7m36jclGVJoWEh2zJZjO3I6HU8eU7YQHagKaHz9eB1yDiXDQM/OhigeP3ymAV4hdKHs9fxW7PTp02psbNQHP/hBBYNBnThxouTHMxChqxy/HVz7hbVq/Eljzrc3g6bqPlPn4RGhVIr5eszU7XL/L/dr/y/3ywya8XWdPFyk2AyZkiHJzb6or5di4Zg2f2+z5v/1fA2fMFwbv7ox7TypbJIVnRzb1ZtBU4Zl9CvsuLarl+5/Kb+N3n+KJ/+PyZr5ZzP1m0/9RpFo6RuOuI6r6snV0oH4700rm+ILa3frbFi7rLbkxzVYMbwQQ1n5tXgDsjh58qQaGxtVV1enc889V1Lh35yV+5yucnfkd0fyClySdO23ry3JN8f8G/lHLt0unagju8Pbqo4TcSRHqvt0nazK7MtNZBMcEZRVaWnqTVNlhkyZFXl+zNrS5kc2x5twRAt7zLc03KJPPvdJLbhvQZ+3daLeVJdytf+X+xUcHsw6f86sMDV6emp1/Jxp5/T7vs2QqRt+dEPyPanjWIfW3L1GsY6YIu0RxTpialjeoHBbuN/3hTjelzGUEbrgG21tbdq9e7fmzJmjkSPjcwf6840ZwwsL17SySb+46Rd5bXPFfVeo/rZ6j44IfhRuC2vjP2wc6MNIcqKOdv50p+Yun9urfXlPhmXIDMY/Qq1KS4FhAV3/ves1/6/jrccPbzgsQ4Y+eMsHCzuWLifnJhTdBSoCsoKWJsydoIX3LdT1/3R9vEqYy7bDAjIrTC38u4X61OZPaeH9C3Petj+a1zbrmgevyRx2XenEG6kjGtoPtvfrPiddP0l37LkjpYrV3tye/DdNMINmvInL+8JtYbVsbUkJYukuQ2ZUujBUMbwQvvDOO+/o4MGDmjdvnkKhUPLy/gSTcq90lWvoCreFtebuNTkNXUowQ6Y+sOQD3h0UfKm9uT3e4S7NIrzFEKgKyO6y82roYHfZevU7r6a9rvviu67tJvc7+drJmnXHLI28aKSeWvSU7E47WT3a9bNdmnDFBLVsasn7+K2QpZgRk/IYYRiLxvT25rcVHBHU6JrRqr+tXpXnVOq/P/3ffW7r2vGhX+dcfI5G14zW6C+NVt1tddr6w6167YevyQpZcmxHV37lSm38h439bqufsPWHW+U6rubcNUdbf7RVTmfqfp2II6sqNZAFggFN/shk7f/l/oLu8+Dag+o41pFSeQ+OCPZq1uJEnfjwQ0mbv7dZG7+2UWbAjB/v8jly5Wrbj7bFnxuGI/aJ4YUYyghdKHvvvPOOjhw5onnz5ikQSH3J9jeYFBq6HGdg5nyUg+2Pb1esM79ezoZpJE9cSqFcA+tQlq45QXBEsGgn7unEOmK64t4rtOnBTUXZX6a/+98/+3sdevGQYl2xtAEyEbiMULw74bSPTctpeYV0a0r1eYxdjtZ9aZ0kadYds3Tdw9dpzPQxOW1rR+KBY9WdqzRp8SRVjalS1ZgqLfqHRZp799yUf79Th09p+2Pb8z6+dBLz1rZ8f0va588MmLLDqWEocjqi82rP63vu2vvz9NLZ+/RezfrLWaoaU6XWta165buvyDDjgcCqtGQYhpasWKKqMVUp8w4TQyE3P7I5ua9EyF792dUaO3Ps/2fvzMOiuNK2f9fS3YCKGkAZjeKG4gYE3GI0YsyAyZvoLEyWUSeTjElMTGayL+9ksr/Zk/kyGTXbOImacZw4STBRBIPiRlQEWURARQU1yhYFsaG7q+p8f5Td0vRW3V292ed3XVyJ3VV1Tm9VdZ/nee6HmgVRKBQbqOiiBD0xMTEYOHAgOM429cTbSJen+4VrpGvFqBXobOp0a5+edROU8KP6y2rkL80Hw8pRrYy3M6DtrUXekjy3IqZuQ4C9b+4Fw6sUTXOigZQYXhCj7KJ39NujmPqs+2KQ0TAAgeLXUvZxGVLuTYGpw+TQXt7e45JRQlN5E4bNGWZ5zCzA9C167HlzDyr+WeHW3AH5XMCwDMACYqdoE+V09LocCXMl71/qvanQxejsblvy9xLs/9t+zHp9Fo68e8SqPxoRCbI3ZmPwtMForW11WXdoRjSIWDNjDbJWZNGIlx3UjHQF2/WRQnEFFV2UoKd7OmFPApVe6A+CTXR9ceMXigUXwzOY894cRA+JxoCUAX4XXMH23oUz+hY98h7Is3IELPhTgdMIhKpI8Kg2ypeIXSLaT7SDj+LdimbFTYxDc3mzW2OVrijFdc9dZ/e8NfP/ZqL1YCsOrT2k6Fhm8eyp8cbst2bDeMGInS/sVCwevW1SfXD1QSyuWoyOUx02wskslAufLrSp4ZNMEtbfuh4Zb2bg4pmLbo0pGkTkL823RAspl1FTdImiaHcxlkIJVqiRBiWkCYToAsJvhS1nYQ4a9zUq3v6Gd25A8u+TMWzOMHrTEaaYzQWOfnfUvgV7eP2EbKheW+12+mBTaZNb9WmALDo6WzuRuSwTfCQPbW8tOB2HOe/Pwfg7x6P2aztpjpfuY3uaRWx5aIvHgkvbW4u2hjbs/MtOxdb/nI7DDe/e4NF4ZgghaK9vR9ayLNxVfBfSHk4DF2l9o+5I2IkGEQWPFGD/B/vdH5gFTu44SQ02fAgVXZRQg0a6KGGLp7VZ4ZZeuP257ajbUKd8BwbQRet8NyFK0FO+shyFTxWCgASs55WvYDi5LstlLRoHWVgG+OUTE8Hq6asx++3ZWFy12Kou62zJWXBa2/RCBgy+u+s7K2MIs+mJp4iCiNK/lzrdho/kQSRiEUEZb2Zg1C2jsPWJrR5/j8QuESd3n0R8ejyaKppQ/km5zeslIsGIpSNwYvkJS11bdzyprRMuCtj4+41gtAxYVk6xpumGMmpFuiRJoqKLElLQSBclpAmEMPGn6Ao0OQtzUPK3Evd2IkDeg3kBXd0NFsEajpStLEPBIwUQjaJ/BRcLTPvfaXLaokI4nWz1PnjGYMX73PDuDbjhPdfRl7gJcTb244FCMkkoeKQAe97ag67zXZbHoxOi7UZ4iEhs+lQ52lYJrJbF1CemgtO6vkGe/tx0SEYJDMdg29PbUPHPCsx+a7bDfVmehaaXBqyGReqSVLt90YpeLkJrbav91EgOchQwigdhnJ8zWC3rtvAkRgKxS8SmezehtbbVrX0pzhFFESwbHL8xCkUJ9NtKCWkClV4YDmz8w0b3IlzdYWHV24YSHrTWtmLbE9sCM7gE7Htvn+K0RUbDYOYrMzHtz9NwZt8ZcDpOkWDb9uQ2FDxW4HK75vJmK2OGYKDswzJ89cuv8HHSx6hZXwMAmPL4FKfikBCCmvU1aCpvwvTnp7s/KAMs2r0IyfckO0yNNPc5m/X6LOx+ZTdEowhBL0AySCh6pQiFTxdi4j0TwWpt5zn85uGQBAmcjkPlZ5V2hb5oFJF7X6791EgRaD3aisNvH3b5eUlGye30zu7jrLlujeV9p3gPTS+khBo0vZAS0lzJfboCyek9pxVZWjuCCMSvFvE9CYfPKNio/rIam+/f7LOeW0ro2d/JGcREUPh0odu1Zd6YOgQLklHC5vs3g+EYcBrO6WsSu0SLBT3DM3YNUFgNC7CwK1pG3DTCYp+euSwT+UvzZfdCg4iUxSlI+YPsrhidEI2m8ib7oskgyvb0du5YzAtDPftr9aTpQJPD5/a+5twFkY/gIUkSWI6F0Ol+qqEZ0XjZYAOATQsFintQ0UUJNWikixL0OEuzCyfRZa5BkyTJp+OXryzHusx1Xh1j9luz6Y1EmKBv0eNEwQlsfiCwgssj/Dxdb2qi1EYySRC7RBgvGBXvQwRi9z1Lfzjd4Xm6fmu9JdU4KTsJs16fBSIQaCI1OPj5QTRXNiM+PV7Z+cJzveMVkiiBgNit93IXlmNR8Y8KfDr+U6yfvx6fjv80rKJfal67aE0XJdSgkS5K2BJqouvUqVM4fvw4NBqNovGVbMMwjOVmiWEYHP/ncTSsavBqnmMfGYte1/dCXV2d1bF7/vV83N52nm4jiiJEUURnZ6fiY5n/TVFOU0ETit4rgiRIQSe4GJYJOqt4hmU8T08LUhgNg3F3jkPchDhsuneTTd81Tsuhvb7d0uNr+7PbIRpES2Sqe+RH3gG+7d3mAWpGN40dRux5a498zEsdOKi9vGdIkkRruighBRVdlJAmXNLITp06hcbGRqSnpzvtW+YO5veNEAJCCPIfykfDF94JrlG3j8LUR6baHNvev7s/1j1652gbZ/82u1CaH5MkCZ2dnTh69Kii8d39Djna3h+C0hMB64tjd7V24fBbh4NObJkhEpGvcH6OjjA8Awb23Q2T/5CM8n+Ug5gC+56xGhYERLV5fHH9F8hclom79tyFVdeusvpOCJ0Cus53Qd+iR1N5k9wcucdcyleWo/jdYrAa1rUw9Vd/Nx/SU8SxGtYiTK901FzYoumFlFCDii5KSOPNCTxUIl0//vgjzpw5g9TUVJhMJtWO2/0GurW2FdVfVHt9zBMbTuDG128M+M2DIAioqKjAxIkT/TquO2LR023cecwTAat0v8MrgldwBRKWZx2moVV+VonrXr0O5w6fQ9U/quxu4wkj/mcEjm085nQbhmcw9jdjMTxrOIZcPwRHvj0iN6n2EmIiEEyyy+GCHQtszEgkk4Rv7vjGEnXsKfREg4i9b+2Va7kuRX4YzonwUvCV0/TWIH5SPE4WnrQ8xmgYsJzsojjk+iFYf8t6VdIF1UA0iND01gR6GiEHFV2UUIOKLkrYEgqiy2Qy4dSpU0hLSwPLsqqKru5sWLRBleOE04qtPbpHg65k9C16fP+v7wM9DedwwHWvXoc9L+4BwzGQjBJir4lF0z7HhgpKYLWsUyt8Z82DxS4RRc8Xue7xBbiVZnc877jLbYhAcOg/h1C9vhpjnhqDzjOdyg6uEMEk4IdPfgCjYWyElSNXQIZnIJpEm15mLM9ChOhxmiERCX6+4uc4V3cOpwpPoV9iPxATwcBJAxE7JhaNBxrBRXCBE109onWiIGL1tauRvDgZ056aFrbnT3ehoosSalDRRQlbvBFP/hBdjY2NMBqNuO6668DzvEeNnJXw2bTPcK7mnCrHkkxSQF0LzYRL2qm/aa1txdn9Z+UbZW/eXhYeNQ2OS41Dc1mzom0ZlgG5SLBw50IczjmMfe/sw7lDnn/PWS2L2W/NRkS/CGz8/Uab5/levCVtzJkoY8AoEhMMYUAUvsk2EUdHKXiiLEhqXq9Rv4eYANStqYOkV/bBshFyA2R73wNXToSuiL85HnvX7kX1m9VydNZILP27Rj85Gv3S+kEwKMs7ZbQMBv1qEE7/57R6ja57fjYiIEFC2YdlKPuoDGmvpiFuWhw6z3Si16Be0F2l81nqsVrpyYGoi6VGGpRQg4ouSljjaaTLm/GU7N/U1ITjx48jKioKPO+7n+mq6avw06GfvD6OppcGRCLIXJZJV2mvUAqeKED5x+WqHGvCggnofXVv7Hl9j1v7NVcqE1yAnMZW9EqRnLomSSAmIkdPPIEFfrHuFxiQMgBN5U0YcdMIHMvtls7HAMMzh+PYpmMuBYNSQeGpCQijYTDp4Uko+XuJY/Enwaa2yimsHH1y1exa1Ct/fyWT5DPDjDMbz+DMxjNWETbz/x95+wjurb4XV624CnkP5jmNTAKAJkKDqbdPRc43OS63VQUCHHjhgGznr+UgGSVMXDoRiXckQneVzq10Yk9TipVs42g7V1y8eBHFxcUut3Mk8D744AP8+OOP4DgOkiTh9OnT+O1vfwuO46z+eJ5HREQE3nvvPQDAZ599hrvvvttmnBUrVmDJkiWK5k6heAsVXZSgx1dRC0/Fk7dpia7GbW5uRl1dHSZNmqTo4uQpRa8VoeVgiyrHSn8oHan3pwaV4KKRLvVorW1VTXABwKF/H3IaxWE08m/ExujBg3teb6MmgOzA11bfhm9u/8a+8CDAka+P2DzM8AxA4FfHQmIi2P/BfpcmGY7eF1bDWhk9cBEcFu5ciAunLuCbO75R1vBZSWqkD/ULy7EOv1+iQcTWx7billW3IKJ/BDbcuQFCl+Ool/m94LScf0QX5MglEYjlvS57rwyVyyuRtTwLSdlJfpmDryguLsbkyZMdPu9KCL788sswGAwQBAH19fX47LPP8Pzzz1sca81/giDYvQZs3boVkZGRln+PGDFC5VdIoTiGii5K2BKMNV2tra04evQo0tPTodHYFlarNa6+RY997+xT5VgAMCZ7TFAJrnCoq/IX+hY9it4oUvWYziy4R/9qNK599lqsmblGTmMMMIyGQcYbGSh8ptBlpKc7fBQPIqjT28ldFLkS2nkp2t5aJNyYgCPfXBaQE383ETFjYhAzJgZzV8yVmxsDzpsEq/iS+Sgegt49C0pJdP45Hf7mMFprW9Hn6j4OI4p8FG+J3g9IGRDwpthil4i8B/IQNzHO0mz6SsRVmuLgwYMt/y+KIqKjo5GUpFyITp48Gb179/ZukhSKh9AGB5Swxd+iy9V+P/30E2pra5GWlqaaLbwjmsqb5FV4NeCAyJhI19tRQo7qL6vx4cgPceS/tlEcX5E4LxFNFU1B0WOL1bL45X9+iYEpA8Fy7l0uJZOk3m/MT4iCiGObrV0QK1dV4kTBCehb9EjKTsLiqsW4bdNtuD3/dnBaO/U0rBwds/e4MxiOsX2/NMCMF2cgdUmqovlremnA6ThkvJmBrOVZ4CN5h59B6fJSfHH9F7bz4iAvR3fbLSo2CpnLMsHpXNcP+fIzFw0i1sxYE1bNlJ1Ba7oooQYVXZSwxd9mC87GO3fuHGpqapCWlgadTuf0GN5S/WU1cu5Urz5BE6lBe327KsdSC2qk4T36Fj1y78sNSE+kLQ9tcR1V8sPVSzJK6HN1H0QnRLuMntjsK0puR2i8QYkgcLX/1Cen2ggpsUvEhoUb8On4T61u9k0XTXY/A3vilIvgMPPlmc4nwMjCywoTUPh0IQ6uOuhy/iPnjYQkSGA1LAqfLkTzwWZkrcjCnPfm2N2+6l9VEDqFy+dBHrjxbzeC03CAAAgX5efyl+ZbBOfCXQvtC81u+LqNgmi4PKdwRxRFt5sjjxw5EjzPY8yYMfjoo498NDMKxT40vZASEig1oPAH3kS67HH+/HlUV1cjLS0NERER3k7PIebmpPlL81WtTQgWx0KKupR9WubTuht7mKMEiqJcfsj2YnUszu4/i+FZw5G1PAubl2xWnmLo52w0byKDjIbB7HdmQ9dHZzcdUrgoi8fc+3PBciw4LQfBINit7+K0HCY/Nhn73tlnqQ/LXJaJpOwkaPtoUfhUIRiWsUlPJAKx/54RuBSvrJZF3YY6AJdr1Yrfu1QPa0cjJf4yEfUF9TAajFbz5jScTe0Wq2HRVH65zUDG2xnY9vg2h7b/nI5TpY7QKaycrTBszjDfjhPkuGMZ/7Of/QyvvPIKpkyZAlEUsXbtWixZsgR6vR6PPvqoj2dKochQ0UUJWwJR09Vzv7a2NlRVVSkSXN6IzrKVZdj+9HYwHKN6MXjGmxlBVc9F8Z5/pP4Dbcfa/DsoA6Tck4Lc+3Pt3swzPOP3ZsySQcK2p7ah4LECZC7LxH0196FmfQ12PLfDrfouTsdh4t0TUfZhme/m6mnNESMbfXz/8KW+a6wsYjgNJ0ezukFMBKJJdHoOkQQJyXcnI/nuZLTXtyM6Idpyfki5OwWJtyaiqbwJOXfk2IgTT4Wj08+ix1QZDYO0B9JwfLN1bzMiEsRPird5H02dJnxz2zeWxxkNgylPTsHe1/fajuWnTDfhooCcO3OuCGMNb3BHdGVlZSErK8vy75tuugkGgwGvvvoq/vSnP7kdMaNQPIF+yyhBj68iXIFOL7xw4QIOHjyIa665xspNSW3KV5Zj6yNbIRpE9dKdGPlGcs77c5ByT4o6x1SRYImKhiJf/eYr/wsuAGNuG4PKVZX2BZeWwcTfTQSr9f8ly3jBCKFTsBhIJMxOcEtwAXL0ZfC0weAiA1sTZIEHJj82Wa6VIrCOMEkAGGDWG7M8er8z3pIXYaJioxCfHm+zIBMVG4Vhc4Zh6pNTvXoJnkJMBOtvXY8JiyaAj+ShjdaCj+SR+EQiYsbEIHNZJvhIHpreGrnRs0SshBgxERS/W2y3zxnLsZAEyTZN0gd0T30MV7yt6crOzsZPP/2EEydOqDcpCsUJNNJFCVsCaaTR0dGBiooKpKamIirKd1Gi1tpWbHtym/oHJkD2t9kYPG2w620pIUNrbStO5J0IyNi162odPkeMBJWfV7q0XneV2sVqXfeakjcEOI31sSRJQtlHZYgZGwMuwj37cC6Cg66vzmV9HKtjvUoTZHkW4OT/mlMC7SIA+/++HwyxLw4YMNj2xDab8xzDMVafAatlwbCM3MPLJCHjzQyk3K1sESb5nmQUvV6kOIWV1bIYe8dYVP+7GizHys2NPQzuiQYRB1cfxIIdC3Dh1AUAwGnpNAAgKTsJhnYDtj6+1eH3jWHtZwy4K8btwgMQlEd22+vbwzbTQJIkVSJUdJGO4i+o6KKELYEQXYAsuMrLy5GSkoJevXq5fRylVH9ZjbwH8nxmdXy+7jwVXVcQ+hY9fnjjh0BPwyGuBNfIeSNtUsa6w0fymPLkFPzw2g82N7M2YoJjbcSbZJCw581LzZzdvEdjGAYDUgZg0qOT7Kal8b1ke/m0pWko/bDUY6t8c5TsmvuvQenyUqfCkBiJ015Wdve59B7xkfKtQ+ayTAzNGGqpeRqQMsCyrb5Fb0kvBGCVamiuL2VZVrFBCcMyiE+LR81/Lpl5eHlaYzUsjnxzBPvek2vPBIOAmBUxGJoxFIXPFDr9vhGJ+Kx2K/2BdPQf3R9N5U2o+LTC6bZCpwBNb9vWIsGKO02UleBOeqE9/vvf/yI2NhYJCQmqzYlCcQYVXRSKm3iTlnjx4kVUV1cjOTnZp71C9C16bF6yWVm/Hg+JnxTvs2NT/Ev1l9XI/UNuoKfhMT+b9jOcyD/hNNIgdApybzoiixNWy4IIBOkPpaP803IY2y+bKvRsEGyDGz8rVscic1kmfnjjB7sNplktC7FLBKfjsP/9/Y5v9nlg5kszUfRykcObfbPIOrDiADLeyMD2Z7eD1bAQjaK8j5J5s64bAUuChN9s/A0GTxuM6i+rseWhLVamGYQQ5C/Nl2tILxlzaCI1kEwSJiyagIOrDwKse3VohBAUPl2omtARjSL2vrtXfp2d8mN5D+Zh/tr5ztMDWSD5D8mo+IdzQeQppctLFTfT5nQcTB1y3V13kRvMkS81o0ruiK5f//rXmDJlCpKTkyGKItatW4d169bhb3/7G63novgNKrooYYu/a7okSUJVVRVSUlLQp08fj46hdL5N5U0+FVxjRTQYnwAAIABJREFUbhtzRTfoDCf0LfqQFlwAcLb4rKIb1e41jWl/TEP6Q+kAZJHSHTUNO65/5XrETYzDpns22X3eLBRd1VtOf3Y6Jj88GSDAzud2Ot2WEIKBKQOxuGoxmsqbYGgzYOMfNrpM5WM0DG7+5GZsXrLZ6XaSScL6W9Yj7aE0lC4rlYVQN+EiCZLNe2g0yaK27GPPzEQkgwRNlAaiCpaaZnv8ng3ixS4RJ3eedP5dkoCyFZdfAx/JQzAKqjl9KhVcgByRbCxvxLlj52yEbzAabKjtQuxOTdeYMWOwcuVKnDx5EoQQjBs3DqtWrcKiRYtUmw+F4goq7ylhiz/TCzs7O9HW1obRo0cjOtr39uq13ziuj/EWTsch/YF0nx2f4l/WzV0X6Cl4jTs3qmZK/l5iSYszmyeYTRUy3s5QzbQjYXYCzu4/69UxuAgOyXcno7W2FUWvFLncXuwSoemtQf22emz47QbZBESBKOB4Dl3nuxSl/IlGEcXvFds6EIL4xGWS1bF27ezdhdNxWLhrIRLnJdrY1gNA8fvFyHgzA4xGmTiQRAk3/vVGz+cTwXl1J7bt6W3IX5oPoVOAsf2y6Us4GGy406frtddeQ21tLfR6PTo7O1FSUkIFF8Xv0EgXJWzxl+jq6urCgQMH0KdPH48iXO6uDm5YsAFHvz3q9jjuQPtyXRnsfm03zh0+F+hpBATJKGHDwg0gIsHUJ6ZiwY4FMHWYLOlZuj465D2YJ5s2dApWBhcx42Lw05GfXEeTWeDU7lOI6OdF/z0emLB4Ao5sOGI3vY6L5ADJug6Lj+TRUtWC/AfzFafjcVoOs16fha1PbrV+XaxszKHUJELq8k0NqWSQPHd25AFex4OIBFnLsxAzJgZnS87K7oQ9P0MRiOgbgUlLJ2H/sv2ypb7R8efM8AyELs9cYcfeORYjskYg975cz004pEspqt1UNathg9JgQ+1Il7c1XRSKv6Gii3JF4M/mye6MYzAYUFpairFjx6K+vt5tkWcWeErH3PiHjT4XXGZLaEpoo2/RY+8bdnoNhRFmh7+iV4uw9529yFqeheiEaJwoOIGI/hFYuHMhWqpakHtfrtWN9/lj58GwjLURBQOLi58FCSh4pACczosbQwEo/7ttLZgFAhtjD1EQsfm+zXYjQ46cFwlD0N7QbitCVNJQmt4amDpNXqXhdY+gMVrGVgwxl/56zlkAoLV+KDoh2mFELvfeXMX1ZkQgGJg6UNG2Pan7rg6HvzrstjFLdySTBIZlbB7T9NbgbMnZoKrxoqKLEu5Q0UUJedwVJj338wQl+xmNRpSWlmLMmDHo378/GhoafFpDdnrPadR+6bu0QkCu+Ui8NdGnY1D8w8djPw7Y2FwEh9gJsWjc3xiwOfRE7BKRe38uGDCXb7jN93M9hALLsSAg1j3FyCVjCM52e1+43AFyqlzWcrnha/7SfItpBpGIQ8E1f+18tNW3ofCZQivxJRkklPy9xO446Q+lo+SDEsVChNNxIBIBq5Et8DPezEDfoX3x9e1fe5QKao+MVzMwIHUA1t+y/vJrJXBoFmKumctfmo+hGUNx7ug5h9u6Y/Ax7vZx4DQcWB1rt8ecM4wXjK43cgHDMVZul6yWxYRFE/DF9V8EfY2XtxBCqOiihBS0posS8gSy35YjjEYjSkpKkJiYiJgYzw0nlM6x+stqfPk/X3o8jlI0kRq017f7fByKb1k9a7XbN4hqclXSVR4LLk0vDVKXpILTcXI9jIoQk3UjXIiwG5mRRMmxePCNvrJL9rfZSMpOQlJ2EhZXLUZ2Tjbmr50PPsJ2PdUs0IbNGYaUe1Iw98O5Nu8fp+XkXl/dYLUsdFfp7AoRVmf/FkI0iLI7pEiQ8YbcuyuiX4TL+huzFb0SCAhMF01ufwdYDYvyleWqnS+r1lbJokeFnxOrY+V+ZL8dCy5K2esiIrEaWxIlVK6qDMoaL19EuqjzICWUoN9WSsgTbKLLZDKhtLQUo0aNQmxsrFfjKdlH36LHloe2+KwfV3ckk0TruUKcjX/YiOYDzQGdQ3OZ5+MTiWDaU9OwcNdCt6zb1cIsXrKWZ4HV2L+EOrUcdwKrZcFFcIp6L/GRPDjN5RvzqNgoxKfHY0DKAJtzgdk8whztqP6yGpuXbLZJMyQiwex3Z8tz6KUBF8Fh9tuzseuFXTbjczoO056ehruK78LASbbpdcJFAaJBxLant+FEwQmIJtFlQ+nRvxitWETtfmk3cu7MkVMW3UA0iNj3zj7VzpdEIFg3d51Nip8nMGCwaPciDJoyCKLeQ/UuwmYuLMcGxWKZ2pkeNL2QEmrQ9EJK2OIL0SUIAkpLSzF8+HDExcXZ7OcLTu44qYqrlxImLJoQNPUBFPdprW31eQqqL+F0HDKXZSIqNgrt9e2qNqhltezlFEEn4y/ctdDSLqHP1X2wLtPW/XHe2nn4btF3tnPrmXp4yaSCj+AtaWBDM4aivb4dh9YdQtmHzu3V7S2ARMVGIXNZpiXd0Hxc85zNizQ9BRAXwVnS0BJvTbT0fGoqb7IbvRMNIopeLsJP1T85jVpKBglf/+ZrMCzjsv9Z7Ve1yHhT7i/GcAxMnSYwYOxGFU0XZbHFallAA8UtMsYvGI+a9TUuBaBbSOqkkLI8i5aqFhQ+U+jddHq8x8YOIxrLGxGfHvjeirSmixLOUNFFCXn83W/LEYIgoKSkBAkJCRg40H5htTeRLvPFqnuKRt7SPFStrvJi1u5xcPVBTHtmGhVeIcp//uc/fhuL1bJIvicZseNise2JbaosDMRPicfQjKEAZMGhVrTCLKaaK5uxecnmy05ynBw1MDf27S5eAGDwtMFIvS/VqvdU6n2pGDl3JLJWZFkaBEsmCdOfn44h04dA01uDC6cuAAAGpAwAAJumtlGxUYhOiEb5P8ptxIS2txaSKFnEpz2SspMs4q2nkUJ7fbscoeu03mfi7yei3/B+0LfoERUbpfg3XvNljcttiECsTUccIBpEtDe0Y96/5gGQ35/O1k6smbHGoajhtXKfLCXHZ7Usxt4xFofWHurxBFQzDOEjeRBCPBJ1posmRf3UXGHvd7H92e1InJcY0HN3IPt0USjBABVdlKDH1Uk6GNILRVHEgQMHMGTIEMTH219NVDu9sOi1Ir8KLiB4rYgprslZmIPOpk7XG6qEZJRQ+c9KLNy1EBlvZ6DgTwVeH/P0ztP4eOzHmLtiLpKyk6wiOqJRxKBpg3Cy8KTNfpyWg0QkpwImZkwMYsbEYGjGUEv/LkeiqDs3vHMDUu5Nwdn9ZxE/Kd4iypwJn56Nxe0dNyo2Cjd9dBM2P7BZNu6Q5PqogSkDFTnSORJO0QnRMOptDRzKPixD1ZoqEJFYGS8MSBkAVqvcMt5bit8rRvkn5ZCEywYQE+6agPKP7Ts4iiZR/nydzM/sdMhyLP47/7+YsGgCDq4+eNl4RCSQJJXSDUXiXeGGj5IWCEPQVN6EYXOG+WYAhdCaLko4Q0UXJeQJtOgSRRGlpaUYNGgQBg0apPp49ihbWYY9b+xR5VjuQGu6QpPW2lbUbajz+7iiQcSq6aswYdEE8FG8xUHOGySDZHGg6ylsAOCTcZ9YRRm6R7G6p9zNen2WXQETFRtlc2PqSuCYBVtP3IkY2SMpOwmd8Z3oi76IT4pXbbGDAWM3MmTqkFP2zO+vef5zP5yLvAfzAAYQO32fymx29ctfmo+4iXE4uOqgw22nPz8dP7z6g8PnWR0LSLLxhrkZcuXnlcj+NhucRm4G/d1d38FoUuYkmPpAKso+KnMYGUu6PQkJsxOsI6ZBgKgXkXNnDrKWZwXMyZDWdFHCHbpEQAl5AiG6zEiShLKyMsTHx2Pw4MGK9/N0jgzDQN+iR+FThcoPwsJhwb9SuAgOfCTvNKWJErx89euvAjY2MRFUrqxURXCZMUdcgcsGEmaBkLU8C3wkD220Fnwkj6wVcjPc7g5/i6sWI+WeFMt+wYy2vxYDrxmo2jzb69vtuht2p/v7C8ji795D9+L2Tbdj/KLxDvfjdNxlm30VYDUsSleUOkzV0/bWYsj0Ibj2z9eC4RmwkbbnuQETbY1FRIOI9beux/nj5+0ajziCi+AweOpgp6mItetrETcxzqGxBqtlwWj801OyJ2KXGFAnQ5peSAl3aKSLEvL4W3QB8sXDLLji4uIwZMgQxfu5g705Ht14FJLgxgqqBEiMdyuuM1+eiaTspKC/QaXYsvmBzbjQcCHQ01AVZxFXZ2l93kaergSiE6Jd9sqy9/6a37v49HhM+uMkNGxrwI6/7LCptRqaMRQNBQ2qzFU0iqj6wnEKtSRKKF9Zbkmzttfs+Oz+s/aPbZAFyOKqxbjxgxuRvzQfvI6H0CWAEAJNpNzMmWEYK6MTVxBCUL+t3qmbIcuxVr21/EkgU8TVjnRR0UUJNajoogQ9vqrp8hTzeOXl5bjqqqswdOhQt/bzhq9/9bXdmhWXeHl9vyrxqrC/WQ1F1t20Dqd3nw70NKxgOAZEIpft3jn5JhSA3XQsLlKu1yEg0PbSWm5+nX0fqbhyTHd3Q7PJx9jbxqJmfY2V26Gz98+cThkZG2mVRicaRPuC65JrIxfBgWEYzHp9FjpbOrHnrT0OU/C4CA5Tn5iK/X/bD6PBNvWP1bCYcNcElw6PzjALkNG/Go1WTSuu0l+F+EnxiIyJtEpZba9vh6a3BqYOE9rq25weU+wSUfjnQsCRk70km5aU/bPM8TY+xHTRBNEk4mzJWUW1gWqjdk0Xz9PbWEroQL+tlLDFUxFECEFnZycGDRqEYcOGub2vO3Sf48mik54JLm/hLhsKUEKH03tOB53gAmSjAS6Cw9wP50LXV2f5bjWVNyHnjhyryAkXwWH+v+YrMrSgKMdeNHDGSzPcfn+HZgxV1p/K/JESYMHOBZb6t8T5iVh17SqbCNXkxyYj/aF0AMDed/baPaRkklD5WaWieTqclkGEprcGtetrUfJwCXidrXV/dEI0zh07hy0PbbEYb4CB8x5xTsSUJEgo+6TMan+GY2QBLEo+b65NRIJ1messjai7m6b4Gl80R6aiixJK0G8rJeRRozZLKYQQVFZWguM4DB8+3OfjdX9t393zndv7q8Gcd+fQm9wQ5PvHvg/0FBzCaTn0Tehr1Tdo2JxhFpv17hGX7qYW9HuoHj2jgZ5EB9vr28FpOeX26BxQv60ekTGRiIqNQsyYGNz08U3IezAPDMtAEiTMfms2Uu5JASA3cXaWCqlkXIaz3+cLkM/na2asgSTJzpbmiFru/blgOVZ+bUYRknjJ+fKS+SerZWW3Q0/LFHtMh4gEWR9lISomCoY2A47lHUP12moPD64Ms6lId9MUX0ONNCjhDhVdlJDHX+mFhBBUVVUhMjISOp3O7f29mefJopNoO+E8rUUtGPZS+hcgpwUFpuab4gVFrxWh9WBroKfhEEc1Wc7qsSjBh7u90kS9iMKnCrH9f7djxkszMGT6EMRNjMP8tfMByBF182dubuLsVS82Fpjx0gzsfmm33eM4Sm0kJgLRJDoUdXwEj5//7efIvS/XtUMhd+ncb6ferDub79ss9/gSCaY/N935MVXE3zVe1EiDEs5Q0UUJefwhugghOHToEDQaDUaNGoXm5ma3j+FNn64T359wezxPsQguABAh91cisKw+U4IbfzfMdoamlwbpD6VD00eDH/7vB0U1Q7Qey5pgaPzuiO71YeaGwObmwFOfmIrI2EgUPlNoI16IQLDzzzsttV72Ut0cNXG2B8M7EDUSUPRKERJuTMDx3OPevtzLhzVJ0PXVKUqtZBjGeSqi5aCAcFGOPu16YZelt5iv8WcbEF+4F9I+XZRQgoouyhWBL29MCCGoqakBy7IYPXq0qhcNV5hFF2HUe33xk+IdOno5ovDpQiTOS6Q3w0FOa21r0AguQBbwqfenIio2CuN/O55GsDzEn+ccd+kenTSbTXT/jPsm9EXOnTn2o0aXHrKX6hadEC3XT9lhzG1jUPdtnUXEJ/4yEdX/sp+OJxpEZYLLVZ3WJVgNi2uWXIOW6hZF6Y2uIlx29xGViROGu7SQ50EwkIuQI0RTnpji/s5BAk0vpIQaVHRRQh5f3pAQQlBbWwtCCMaOHevVWJ5G5DpbOrH3XfvF5D0ZkDoATZVNjouxGaDxQKPbc2B4JmA2wxTl7Ht3X6CnYIHTcVYRLRrBunJx9tm6Y8LTPdUtKjYKU5+YiqJXi6y20fbWYvyd4zH+TrlfWJ+r+6ClqsWh6FLEJQfNnqmCml4amC5au2JIJgnFfy32fCyFpCxOcenM6Mr63x4Mx2DU/FHoNaAXKj+rRPFfi7H3rb3IeDPD59kMvjDSoKKLEkpQ0UUJeXyVXkgIwZEjRyAIAsaPH+/1xcLT9MK2hja5aFsBzVXN4LW8ZeXYBuLZhZoIxG8pKBTP+Hza52g9FBx1XJyOw8JdCy0udZTwxdywetN9m1waT0gmCZreGoudefI9ydj7zl6riJLJYELOnTngtJylpxavc/NWhoVVdIgBA9IjzKXprcHQjKGo+67OvWOrAKthoYnUWCJ5AOTaMDg2BVEEI5//j3x1xPKQeGmFruCRAhg7jJj8x8neTN0ptDkyJdyhybCUkMdXoquurg4Gg0EVwQV47l6o6aVRnNtPTMSx4HJC0h3OLYMz3sygUYogpm5zXWAFFy87uml6a8BH8shakUUFF8VCUnYSlhxegsmPTQan5SypbQwvnxP5SB58JI/xi8bji+u/wPr56/Hp+E/RUNiArOVZ4CN5aKO1lj5fYpcIY7tR7t9mIjB1uNnwqsepmIjE5hwrGkUcyz/m8Wt2ODTn+jogSXI0rbv5B6fhcFvubd4ZG7m4jOx8bifKV5Z7MYB/oTVdlFCDRrooIY8vRNexY8dw8eJFJCcnq7oy58k8jR1G2aLYlUuWF9T8u8ZhTcPMV2dSE40g5/tHA2cPz0VwyFqeRV0HKU6Jio3CzBdnIv2hdKv6r+7//eL6L+RFo0vmGflL87G4ajEW7FiAs/vPgo/kseWPW2A02jZLtgsHaHQamPTWooxhbCNbjIaRb+AZ2YqeYRhIBvXPuYoiVXbSwzmew6ldp5SZcnSD4RnwETxEg6jICdKX9bs0vZAS7lDRRQl51BZdx48fR3t7u+qCy5156pv1aKtvQ8eZDnQ0dLgvuBQWhVvhYPu48XFuHojiT1prW3Hx9EV1D8rKN3mSJDk0AmA1LK5ecDVufv5mq7otCsUZjuq/zpactXErZDUsKv5RgX3v7bM0JrZyV3UBy7M2gguwb27BMAyyv83G+lvXA4BVk24l8FGy3bu7+ynF2GHED2/+4PZ+c/46BwMmDIBoErEuc53L7RmOQVN5k1V/PLWgoosS7lDRRbkiUEt01dfX49y5c0hNTVU9bUGp6KpaV4XcJbkWC2aPsDcMe2kO3tQEUIKOf8/9t/oHlYDs77Jx4dQF5C/NB8MxkEwSpj8/HXHjZBE+IGUAqo5XUaFFUQV7Pb9Eo4i9716q6bokxhgNA07HgeUviTAQsBwrR6e0sj07EQhA4FakauDPB4LTcOB0nEfCiYjEJnrmCQ7t7+He6zGz9fGtmP32bKTcnYLU+1JR9rFzcw5BLyDnzhxkLc+y2PcHK7SmixJqUNFFCXpcrYyptXJ28uRJtLS04JprrglYnri+WY9N92/yXGw5Q4Lrm4JLfXPMsFrWLfcxin/5a8xfQUy+EdHn685j/ILxztMG1Wt9RHFAMPfpUpPuPb/MBhJTnpiC/e/vtzofcjwHSZRAQMBwDBJvTUTtl7UA4FVfq8b8Rmhe1HjcjHnEzSMQNyEORa8Uud7YAZpeGkx+bDL2vrVXtYiZZJQsvRavGncVGA0j9xeT5O+WPYEndolW9v1qQft0UcId+m2lhDxqpBeeOnUKjY2NPolwmVEyz33v7/ON4FLI6FtHg4vgoOmlARfBYe6Hc2kkI0j57p7vfCa4ALmfGyDfDMenx9PvQQAJ5j5dapKUnYTFVYuRnZONxVWLkXx3so0IEjoFSEYJwkUBYpdoEVzewvAMTB0mZC7LtJwDWQ2r2LjiWO4xJM5LtJiEuILVsmB11tca00UTImMikf1ttjy2ihQ8XoCtj2wFMRFIBgmSyXHqMCALpPb6dlXnQNMLKeEOjXRRQh5vRdePP/6IM2fOIC0tzacncFfzLP2kFHve2eOz8ZVQt7kOC3cutGlwSgku9C16HF5/2GfHT70vlboPUgJCz5qv7tEv0SBajC7URuwU0VjeCG0frfxvozLjCTOcloOpw4SMNzOw7fFtkATH+7I6FnNXzMWFHy9g53M7rZ7b9uQ2MBwjuxyaZGdHSZTk9MUeqeFcxKVUSCWXPzffMrFLxMndJxGfHu/ejn6Eii5KqEFFFyXk8UZ0mUwmnDp1yueCyxX6Zj0KnihwuZ2vXQxZnoWpwxTUF1oK8K8b/qXq8Vgdi5s+uglCp4D4SfFUcFGChqTsJEuKq9nhUBV6pFIDQOEzhQA8E3WmThMayxtR+EyhU8EFANf95TqcO3YOe9+ybXovmSSgm/cHkQgW7V4EAFgzY4112iEBrn/1eux6eZdPnBaLXinC+N+OV23xjfbpooQ7NL2QEvJ4KroaGxthNBqRlpYGnvf9+oOzebbVtylKJ/Gl4ALkCz5tghzcrJqxCu0n1E37YVkWQ64fgvELxlPBRQk6zCmuMWNikLks09K3i4/kkXpfqkepeCMyR4CPsj7vM9yleicPYMCg8JlCRYJt53M78cOrPyg6nzM8gwunLiBmTAyyVsg9y8wpjEQi2PHnHR4LrqTfJDlNhxQFUdUUQ7XrE0VRpDVdlJCCRrooIY8noqupqQnHjx9HVFSUXwQX4HyefRP6ulwdVW0enGMHQ9oEObjZ/fputFS0eH0cVsdCMkhgdSxYlkXmskz6uVNCgu6RL3MK9ODpg7Hx9xvdOs6xXNvGx5IgAR6ehjktB9GkftqjcFHAN3d8g2lPTUPy3clYsGMB1sxYAwAem34AAKfjcPS7o8h4MwNN5U2oXFlpu5EI1V8TremihDNUdFHCjubmZtTV1WHSpEkoLi4O9HQAADXf1EA0en9xS743GRWfVDjdxpHgmvbstCuuCbLa6SyBRN+ix97XbdOR3GXas9MwInOEpSktrd2jhBo9676GXD8EjIbxyliG4RkQiXgcOZEEyWeZCJJBQtErRdj71l6MXzBeFnheuhua99/+zHYs2LEAVauq7C78NZY1YvC0wV6NZYYaaVDCHRqXpYQ87kS6WltbcfToUaSnp0Oj0Xg1rrvRNUfzPPDJAeQ/nO/xCmt3Dq05hAmLJvQYWMHctAz2/7/9qFlf4/0kKD7hu9995/UxRs0bhenPTrekalFXQsqVQFRsFG766CZwERz4XjwYngGrZS2pc64cBblIDgQExOR+c2NWy4KP5DH1yaleOw5yUXKfsNQlqdD0sr0+iQYRFSsrYLxgdDiXno6IrmA4Bi1VLYgebj+tnI9Qb21e7fRCQggVXZSQgka6KCGPUtH1008/oba2Funp6dBqtZbHPVl9M4/pzn725qlv1mPLo1vcGtsZLMci+Z5k9B/dH7tf3g2GZRTdRBAjgQDBJ71ZAoUnn1GwsmrGKq/TCkfOG4l5a+apNCOKvwiXPl3e0jPtEIDFfMPUIZtcbH92OxhOtobvjmSSAEHBIHbMNwBgwY4FAICiVz3v0WVuiszyLCr/WQlJUr4Kx+pYMGAw/S/TIRkl/PDaD4rT1U0dJqepmbponeJ5KEHtSBet6aKEElR0UUIeJaLr3LlzqKmpQVpaGnS6yxcRf96Y2xujsaxR1VouY4cRJ3eflC+6HuT7MyyD43nHMTxr+BUhvK4EchbmeCe4WGDmyzMx+Y+T1ZsUxa9cCQsH/qBn2mH3/49Pj0fivES017ejsaIR25/ZLtvQG0XFdUssw0LqkZLAR/AWEcdoGbcbNGt7ayGYBBCBQDJeTlFkOMahyLOCAxjCACxs7OfVYNN9m9CwowFpD6R5bbJD0wsp4Q4VXZSQx5XoOn/+PKqrq5GWloaIiAi/jOkIf6xa7355N3idZz9t00UTvn/0ezAMg8xlmUjKTlJ5dhR3aK1tRd2GOs8PwAB37b2LOhJSKLgsyuLT45F4qyzAus534dvffQvTBZPL/fkIHoJRsKrdEo2iJbLGMAyIoqZZMlwEhzG3jcHB1Qdtam2JSMBqWEiii8UzURYfvoIYCSpXVqJyZSVS70vFDe/c4PmxqOiihDk0LksJeZxasbe1oaqqCtdcc41dweWpePJkP3v7DEwdCEaj7io2wzNemXKIXSKETjnVUN+iV3Fm/sXbptnBwFe//sqr/buvwlMolMuYxdeAlAGKswIkUcLst2ZbnbOJQHDk2yOo31bvdnaB2CWi6osqhwYgDB9cEc6yj8vQWtsa6GlYoH26KKEGFV2UK5YLFy7g4MGDuOaaaxAZGWl3m0CKLn2zHo1ljZjyyBRVhRcRCdKWpik6JsM53obVsKr2aKG4x+k9p3Gh4YJXxyCE0L5rFIoTomKjcP2714PVXTbe4CN5Sw+w7j3BMpdlInFeIlju8q2TJEgo+FMBcv+Q69wMyc6pltWyYHknt2Eu1s5YHeu1eYcSo6XunN1/1uOhfNEcmdZ0UUIJml5ICXnsCaCOjg5UVFQgNTUVUVGOa5O8EV3eULWuChsXb7SsjDIcA5ZnVanvIhJB+afl8sWUAexlu3A6DresvgXfLfzOYWoKbZQcWL6+/WvvDsABWcuzaG0eheKCkfNHgh3FYqB2oE0rhWnPTENTeRMAYEDKALTXt4PTcIqaIAPyuT3toTT0GdwHO/5i3ciYYR33TAQDTH58MorfKwan4WDUG61E3ehfjMa1f74WpStK7ffYUoqbl7/4SfGeD+WD5sg00kUJJajoogQ9rgQOwzBWTk8dHR0oLy9HSkrW+jBzAAAgAElEQVQKevXq5XJfTy8Enka69M16K8EFyNEpwhJwWtkyWOgSPG58SUwERpO1pbC5ITKrYwECpC1NA6eRx+qZisjpODAsE/INc0M5vXDVdatgPGffFlopnIbD0IyhKs2IEkiokYbv0fXXIT7JVlDUb6vHloe2yPVVJgmzXp8FoUuJ1aHMlCenoOT9ErAaFkSwPh9N/N1EDJo2CHkP5tmKOALseX0PuAhbwQUAR749grrcOnBa/4mO1PtSva4PpTVdlHCGxmUpIU/3m2u9Xo/y8nIkJyejd+/efhnT3X0ayxrtCypJTpcQjSJG3TxKpZnKEJFg5LyRlgaexe8V46tffWXT74XRMJj70VwsrlpMTTQCxPbntqOl0jt7eADgtBxND70CCNWFg1DDnhjQt+ix5aEtEDoFGNuNEDoFbHtim1sLYsXvFlv27xnVOrj6IIZmDMX8tfPB97K/Bi52iXbTFoko9xRz1LNLVVjg9vzbvTLRAHyTXkhFFyWUoKKLEvJYIkh6PQ4cOICJEyeiT58+bu3r6ZieUP1VtcPniCBfSA/nHLa/AQuP49N1G+qsawTsTJ/lWOQ9kIeGwgbPBgkyQu2Gdftz21HytxJVjkXTQykUZTg6T7TXt9vUTLmbAu5MoJnrZgekDHBeD6YCmt4acBEcBl07yPmGHKzrzHi55cT5uvNBZaIB0D5dlNCDflspVwQmkwllZWWYMGECoqOV32j6MwWNYRi01bWhcrUX+fcSlDXx9BCzc2Heg3kh7VwIhF5K1rqb1qkmuMAh5NNDKZRAE50Q7XGatxLMCyNRsVHIXJYp9+VSCU7HWQxAZr46E2NvGwsQoPFAo/MdRWthyRAGO5/bibwH8vD55M+x9YmtHs+JWsZTwh0quighjyAIOH36NMaNG4e+ffu6ta8/I111OXXYettWm7z+YETsElHxz4pATyNsOL3nNE7vPq3eAUW5FoVCobjGkRgwiyFOp9KNPSencHd3QzQvjHS1d7luhKwQPpLH/H/PR3ZONq5//XoUvVqEipUVEA2iYgMQMz1TIr2xjafphZRwh4ouSkhjMBhw/PhxxMXFoV+/fm7v7y/RpW/WY+cTO62aagYLjqzl9769N6SjXaFkpHFo3SHVj1m1uiro0oEolFAjKTsJC3ctdNpeQykcz+G2jbdh9puzsWDHAkvdrL5Fj62PK4sgDb95uMXa3hGiUUSfq/sgOiEaO57d4bbQckXxe8WqHs9TqOiihBpUdFFCFqPRiNLSUgwePNhu42Nf4u4NfVt9m/N+LAGEmIjdtBZqxOAfqr+sRuU/vEg5dYI3PXUolHDBVQQmZkwMZrw8Q5Wx1t+6Htue3oY1M9dgz9t7oG/Ry5b0CnQRp+WQ9fcs3HvoXkx/brrDdEQiEqyZuQYVKyu87+Nlh0NrD6H4A/eFly/SC2lNFyWUoN9WSkhiNBpRUlKCxMREREdHexzR8Fc0pG9CX5/WBtjFHcMNOxf8UDdiCIWaLn2LXm6q6iO86alDoVAuM/nhyRi/aLxXxxANouw42G6E2CWi6JUifDLuE5zceVLR/hlvZyAqNkruH/bUNNyee7vjsbpE7H17LwSDb4qAd/55J8pXlru1D63pooQ7VHRRQg6TyYTS0lKMGjUKsbGxXgknf6UXRsVFYfrL090ex1MYloE2UitH17pf4xT84rkIuX/XrNdnhbwRQ7CnF35z5zc+OzbDMYiMifTZ8Sn+IxQWEMKBrGVZuKv4Lsx+a7bbdV4Mx9hNCxS7RJQuL3WY5m1m5qszkXJ3itVjnIaTey86QDSIVs2Y1WbbU9vcSkGnzZEp4Q4VXZSQQhAElJaWYvjw4YiLi7M8HsyiS9+sx5n9ZzD85uGY+L8T5ebDWt/eRBGJwHjBKLtQdZ+mguuvJEjgtBy2P7sdNetrfDbHcKe1thVn9/ou/U8TqaHpoVcAwb5wcCXgTgQmZkwMrllyDbJWZIGP5MFHKkspmLd2nsMxOC2Ha5+5FlwEB00vDRieAatlLf+fuiQV439rG2UTTfZ7eLkLwzHQ9taC1bp3SygZJVSsdM9wiRppUMIZKrooIYNZcCUkJGDgwIGWxwOxCqx0zKp1VVg+ejnW3rwWX0z+AppeGoy/YzyI0fZGiuVZpD+cDjbC8c9S00vj8ZyVQgRZsAmdAvKX5oesmUawG2mszVzr0+OLJjGk00MplGAmKTsJi6sWY96/5jmNNgFy9kCvuF649s/X2n1eMAhIvjsZ9x66F7/57je4//D9yHgrA0KXACIQlH1Yho9Gf2RJ59O36PHt777Fusx1qqStsxoWt6y+BTNedFK35uCSt/cd5YZLtKaLEu542GaVQvEvoiiirKwMV199NeLjretUApFeCLhegdY365G7JBdCpwB0yo+VvVTm0MGQ1bAo/6Tc4fN8JI+0pWkoXV4KU4fJozm7i7l5Z6inGQYbq65bBeM5o0/HmP6X6fRzo1B8SFRsFCL6RYDX8TAanPyeCXC2/Cx2vbDL/tMiQUNhA5KykxAVGwV9ix7bn9luZddOBIKCRwpwpuQMav9TC9GgniMhwzFo2NGAkg+c9Al0cLkzGy4F4lxDI12UUIMuEVBCgmPHjuFnP/sZBg0aZPNcsNZ0tdW32ThHEcnxPkKnAKFLcJguQkSCMdljbPqmqIada5dopNEStanbXIeWyhbfDqIBhlw3xLdjUChXCN5EYJQ0UB41b5SNiLIaXyDYvGSzJWLUXt/u0KL+0OpDqgouABAuCtj/1/0e9ZB05xqhdqQLoPWOlNCCRrooQQ/DMBg1apTDNIJgFV32HAu9aYx847s3ok3ThhGPjsDRd4+CSATERMDwjPcNlxnYdTCMmxaH5ovNYPQMGObyHwCrf/f889Xz5scVvaQgTC+s/rLap26FZliwVCxTKH7A3EA5f2k+WA0Lo94I9DAMrF1f6zIFUTJKqPysEqNuHYWu811yPW4IMHLuSMVRLl+ILgollKCiixISODtRB6voioqLws0f3YxN928CwzGW/HxPGPPrMeh3Yz+0t7dj7hNz0fbLNqyZsQYiRO8FF+AwdaRxZyNwEdBepQUhxOpPkuSbgp6Pd/9z9ryn+wLW77+j70ZnZycqKipsxLqnYs98HE9FpOGcwS+CCwCG3DAEkTGR9CbnCiDYFg6uRLz9nSRlJ2FoxlC017ejqbIJ3//x+x4DAFKXaxG1++Xd2P3ybrA6Vs6KYKGKUYYvObzhMPQteprKTKEogIouSsgTjBENM+NuG4fjBcdR+bl3zW8P5xyGZoIGNz56IwghMHWYwGk51dNMekJEAnKGIH5c6PV7qqysxMiRIxEVJd8MeCv2vBWRdTl1fnvt9Xn12PDCBgy61TYd112cicnOzk5UVlb6RKQGeyTVnwTjnCjWmPtn/Vj8o9fHMtu8cxEcJv5+IipXVoLTcpBECRMWTUDFZxUOa3/9jgSc3HESY341xuWmdBGIEu5Q0UUJCXx1ovZlpAsAWmpa3BdcDGwiT0QgqHmzBjPumgFRFNF1vsvngivU6fmd6X5j7W+qv6xG5ZveCW93ObHiBH7+x597vAKtJOJYVlaGUaNGqRrJVPrn6fGd7acGakdSOzs7UV9fD47jqEgNARJmJzh9ntMpXyxjeRbjbh+HaU9NQ3t9uyVluOJz92zalY7laUqjvkm5eyGFEs5Q0UUJebyJdPladJ0oOOHWcYfNGYaGnQ12VzEZjkH5ynIUv1sMVsNa0vuczpNjwOk4CHrB5basjpVr0LodltEwGJAywK3XQLFG36L3W1phd7x1nlQiUlmWRWQkbcAMKBOpnojE1tZW9O7dGxzHOd1XkiS/CtRgFameiMgLFy7AYDCgubnZa5HaZ3gfTFw8EZWf2l9kcWexTDJJiE6ItvyG2+vb0XW+SxZIKjc9vvVft6Lys0oc23TM7X0Fk+vrixk1RToVcZRQg4ouSsgTKNHliqp1Vdj6v1sVHzP9oXSUf+rYMl40idj3zj6IXaLFgh4c7BpgsFoWs9+ajcR5iWivb0djeSO2PrkVxGT/tSbfk4zpz03Hnjf2oOzjMsvjKXenhGyuvjffCzX5zy3/Cci4RCTUTMOP+CqS2tDQgJiYGGg0vu/R5098IVDdeb67SDWZTDCZTOjo6HA5L2e1rObH434XhynXT8HJL0/i7OazYFjGI5E06LZB2JO7BxeOXMDxFcdl0yQT8SgixUQwgHTJzKnH7jHpMdiwYIPD64Mrdr+0G4OyBiEyNtKpSDUajTAYDOjs7KSRVEpYQkUXJeTx9uba032d7adv1mPT/ZvcutCWflTq9KJ39XVX40zxGYjdVJa2lxYpi1Ow//39l+2IOVnAJc5LtNQZRCdEo/CZQogmW4XG8AxG3ToKna2dOLj6oNVzB1cfxLRnpoWs8Ao0xe8X46dDP/l9XE7HIXNZJv3cKEFLMN1UNzc3o6OjA8OHD1fvoKkAfiFHupvKm5BzZ468YKYQVsPi5OqTOPXvU5evCwb5PwzHgPTMQXdhukFMBNNfnY6fan5Czec1Vs+dqzjnseACZOfF8pXlGL14tFPxe+HCBZhMJjQ1NSlK9e15jf3666+Rl5d3ed7nziE9Pd32tV7ab82aNRg3bhwA4NChQ3j44Yfxww8/oF+/fli8eDFeeOEF2ueL4leo6KJcEXgT6fJ0P2djHvj0gFsXWAAuL3oN2xtsLqqSScK4O8ehdHkpRPHSeCJQ/F4xSpeXImt5FpKyk9Be3y4bb9iZExEIvl30LSSTBIa1fj9oc2TP0bfosfP5nX4fl+EYLNy1EDFjYvw+NoUSihDiO4OHqNgoDJszDFnLsyy28qJBlBfAnIgkc7sRe9cFu/2+XK3viUDR/xbZ9I7sPpY3HFl5BBlPZDi9VtTU1GDQoEGIjvYsAj958mS89tprln/PmjULJSX2Gzp3vz6fO3cON954I8aNG4ecnBzU1dXh8ccfhyRJePXVVz2aC4XiCVR0UUIeby6Wvqjp0jfrUfRGkcdzkgeArY27nevitX++9rKTYQ9BJXaJyF+aj7iJceg63wWT3uRwOFOH/efMNQWhSKDTCzfdu8mhFb8vIYQgMobWWVEowUR3W/mG3Q3Y9dwuu9u5Y7ThNgQ+cz3ktJzLBTq1xa2z83v3cT788EN0dnbiq6++QnR0NH7+85+jvb0dL774Ip566imPRSCF4i7Ou/VRKCFAIGq6nLHr9V3eXzQJFP06d7+8G0e+PeJwPMkkYc2MNfh20beK+nlxERw4HQdttBZ8JE9T1DyktbYVDQUNgRlcAko+sL/6Swk9gqEu8UrHl5Gu7phTvff83x67z3M6Tl5wUwoni51gQOgSXC7Q+et97klubi6ysrKsxNUdd9yBzs5ObN++3e/zoYQvVHRRQp5gci/cdP8mlC4vtXmc1bLIeDMDw+4epngMlmXB6lhwkY4vqpJRQvF7xXZrtQBAEiSIBtFhJKsnoklE9rfZyM7JxuKqxUjKTlI8X8plvr7964COX7KsBPoWZTbOlOAnGOqeKOrQXt9uN8WP03HIWpGFjDcywGgUft4iIBqDo3WIJPq/b5jS30VNTQ2SkqyvZUOHDkVUVBRqamoc7EWhqA8VXZSQJxBpZPbGbKlpcdg/ZdxvxuGq0VeBGJXPk4/kkfVZFqa8MwWs1sVPVa3rnQisn7ce54+fBwCcLTkbsjfvgUovzFmYg/Zj7X4ftzsMy6C9PrBzoFBCBX9GYKITom1qqDgdh4W7FoIQgu3Pbgen8Sx6xXCMe5EyFWF51uU5J1CRrnPnzqFfv342j/fv3x/nzp3z+3wo4Qut6aKEPMES6TpTfMbh9ge/OIiDXxx0+Lw9JEFC3IQ4NG5oVFTozPCMohRCV4hdInLvzwXLseC0HCSThMxlmTTqpYDW2lbUbahT74DspT/lbXAAyJ9hW32bVY8fCoUSeKJio5C5LNNiqmE+v0bGRGLLQ1sgdLr5Y++GXYMNMy7cDb1FMkhorGhEfHq8w20CmSprT+wFSgRSwhcquighT7D06eo30nYlzRM4HQeGZXDzRzcDAA68dECRIQMRCBiWAZGUvR4ukgMRiF1BR0wEokm0mHPkL83H0IyhIXcD7++L/L739ql7QEleQSYccX5DZYe8B/NARIKMtzKQcneKuvOiUCge091Uw7wwcrbkrJx22Ol6f3fhtBwIiM9MNMxsfWIrEm9NdHqdCITI6d+/P86fP2/zeFtbm90IGIXiK6joooQ13gi2nvvxWt6raNPERRMRNyEOQpeA/iP7I25CHI4WHHXrZptIRPEcxE73esaEmnW8vy/uxe8Xo3ptterH9fRGSdDLK+YFfyqAscOIyQ9PVnNaFMoVQyAiHuYeimbspR2qhb/qvoiJoKm8CcPmDLP/fIAiS0lJSTa1WydPnsTFixdtar0oFF9CRRcl5AlEc2R7Y/ZN6OtVPn3l6krbcTQM4Ob1kuM5iIzoVbNLhmOsxF4oW8f7g7KVZdj5F//35FLKzj/vlBtp30MjXhRKMGJOO8x7MA8sx0I0ipAEKSBtJ640brrpJrz99tu4cOEC+vTpAwBYt24dIiMjMWvWrADPjhJOUCMNSkjgbHXM2/RCT7E3pqLjufGr80Q4iSbRpsmx21yaIxfBhax1vL+MNPQtemx7cpvPx/GWwqcLQ9YUJZyhlvG+J1hqewghIIRAMAhy1EvBRz/i5hFAcLjGg9WyGJAywOHzgXqflyxZAp1Oh1/96lf4/vvv8fHHH+PFF1/EY489Rnt0UfwKFV2UkCdYarra6tvARygIHvvBWVcSvBvELPbELhHXPnctNdFwQnt9uyoGJr7GnCJKCT2CQRBQfIu+RY/NSzZDMkhunU/qC+rBcZxym3kHTH12Kq57/jqvjnHdC9f5rTmyO8fq378/CgoKIIoibr31Vrzwwgt49NFH8dJLL6kyFwpFKTS9kBLyBIt7Yd+Evj7LyXcHdw0XXFH0chHG3zk+JCNd/uBi88WQSAESjSJNEaVQgpSm8ibPMhsMDvLP3XQrbKtrQ9TPvDvHR13lv2uEKIpgWeVxg3HjxmHr1q0+nBGF4hoa6aKEPMEguvTNerTVt2HsbWM9modbY2sYcDoOml4asDrWdQ8vL+E0XMhGSHydmlX9ZTU23LnBZ8d31hjbXSQp8AsCFEowEizphc4YcfMIpC5JdbkdF8GBi+Dcvrur+U8NSt8v9XB2MvGTHNvFA+q+z6IoguOCJK+SQlEIjXRRwh5PRZf5JrZqXRVyl+SC5VkYLxh7bAjFURCGv2Re4WJ7TYQGt6y6BRH9IhCdEI2GwgZLzxfRKEISJfsrpqxsHWy2gVeKJFITDXvoW/TIX5qvemSxO2paPPM6PuQcKCmUcGFAygCwWtbhb75+az3mfjgXFSsrnJ8XCDD3o7nY8sctMLYbHW+nMvFT4xEzJsbpNlR0UcIdGumihDzenMS9vQDom/XIXZILoVOwFVyALKBYIP7WeNzw/25weiwiuBZcgFyvNSBlAKITotFe346hGUOxuGoxbvn8FsxfOx8zXphht7Ca1bBuCy6GZ0LSRAPwvZFGe327V26VSlBT0BGRUPFMoQQpUbFRmPvhXNm8yE5tsNglIvfeXJcLMZyOg66vzu+p7mf3nkX5ynKn26h5PpYkiYouSshBI12UsMbb9MK2+jbXDS0loCm/Cbe8cgu2clvdtoA3w0VxYAiDGz+4EfXb6rHloS1gNSwkk4Txi8ajanUVCCEOhZVkcP8izLIshmYM9WzCVzjRCdFe2fL7m8HTB4ekeKZQfA0hxK36IF9hbprcVN6EnDtzbM7lSoSUYBAwIGUAMpdlIn9pPiRJ8ujc7wmFTxcicZ5/miO7W9NFoQQD9BtLCQl8lW/vrejqm9BXUQoYy7MwdZiQ9EySx0sdkx6chPsO3Ychs4Zgy0Nb5OhauxFCp4Dyj8shdApuR7JcwWlDt57LHyTfmxy4wd08ezdsbUBrbatv5kKhUFQhKjYKw+YMQ9byLPCRPLgoN6M5ItBQ2ICk7CQs2LHAp+nPPWF4xun1gqYXUsIdKrooYY23KWjHtx6HKF4WOgxn/4IimST0TeiLfun9wPOeqa6SZSUA5LQ2VuOfn24o13P5Mr2w+stqfDr+U1StqvLJ8RXhweL12f1n1Z8HxafQPl2+JxiNNJKyk7C4ajFmvjjTrf0kQULeg3k4UXACVWur/NrOQvz/7J17XFR1/v9f5zYzDAgqIJgJaCKICqgY3kqMArPM/RbVlraVq2lq362tLL/121vtdt2+u99Nu5ndrDax2mqVi6Gg5i0vgCLifbQSFVoZYYaZc/v9cZyRYc7cZ4DBz/P76PFdmXPO5zPDGc7n9Xm/36+3pescUkl6ISEcIemFBIIfUBQFc7MZJQtLHFLMXO0qDhw/EPp4PSyNFsVtsN33MWmORsupFvRJ6hPSfH2KocBFcJBEKWzruUKJqclkjzSGG7pYHUxNJpyrOQdAKd4nv9+eT08TBISuQR+nR3pROjY/u9knUx2xXcTXs7+GYOrav1GeNgiCKW6J6CKEI0R0Ea5oAkkvbPuhzXM91yV+/O5H7Fu5D9qr/C9wtrZZEZMUAzaGtefr22q6Rt03Cgc+OuC2pstbZFHGTa/fhMHXDw77BXkoogRGgzHg5tPdxVd3feXQv4fW0Jj+5nTS/JpA6KHo4/SY9so0VPymwqfzulpwAQDDMm4dUoOdXkhqugjhBrljCWFDKBbQgYgu/VV6nwTUt7/9Fq1HWnHd764Do2XARvq45yECR74+AuBy6knRV0WYVzcPN7x6A+bVzcOsT2eB1nr+WjM6BmwEi9TbU1VfF8yCw4PT1GRC455GmJpMvs25GwlVdEDkxZBFGimWUnWeDCodpi5ZJZQ9XBZWv1cCIdj0xPTCjiRkJoCL4rp7Gh4RLWKXzZPUdBHCERLpIlzRBCK6NP00mPHWDKxfsB4UTYFv492eI1pFHHjmACAArI71y/mu4skKDMgdANms2H8njnNsRtnW2Aaapd26Vc1aMwuR8ZGITo6GudmMI18ccTqmY5PL+uJ6B6fEguUFV3Rk5MKxCyG7tizJoBiqS4vfRYuI2vdqMeHJCV02JoFA8J7o5GiIvOcMBm97PYYKWqsYRrmDGGkQrmRIpIsQFoRyFzKQCFrGXRnIfzkfkiCB0ngxx0sZH0K7ANHqXxrgP6f+E2tnrcXKkStxaO0hAJeNHTY8ugFCm/u0kpaTLfb/HZsWi+yHsh1eH3nfSPCtPExNJof6JZtTYvni8rCIjITKSKPvNX2Dfk07FLrFhn7nKzvD4ndKIISCnh7p0sfpMXLOSPcHMZeeZd3ouyIJXWe8RGq6COEIiXQRrmj8fdDaFvSm8yZULK2AaAmuVbsrbMXUtvHKF5cjfnS8T8YOVc9WgdWwkHgJk343CRn3ZCCtKA0Xjl2AqdmE7X/ejiNfHYFoFZExO8PJkZHmaLd5+72Z+uJ6lC8uD90AXXMbOWFrDeDP77SnL1gJhN7A2IVjsf/d/U4/5yIV0yNJlJw2bCiWAiQlgt7bIDVdhHCEiC7CFU2gfbqajzc7WMZ3NTRHo3F3o0urejVkqwzeqqSAbHlmC2gtDZqmMfWFqdj+5+2KeLtkDqL2kJf48LWRDwRTkwlli8q6rNFoMBg2cxgMGw0eU1+FduGK/J2GA8QyPvSEw8aBLSuh+u1q+8/S7kpDyrQUiIKIisecjTa8tYunNbRiDhTgnzaG83/zxldIpIsQjhDRRbiiCSQFTZZlnPjxBGRrAIsiBqBpGjJkv9LKJF5CYk5iQMYOkkWCBAmVT1WC0bh+iHFRHGRRDhsb+WCnF3772299FlwUS2HITUNwvOR40ObhC+MeGYcTG054PK437oT3Jnq6ICB0DTe8egOy5mehcXcj2prbsOPPO3D066OBOdbSwC8++wXqi+tR/0l9QPOTpK7bkCM1XYRwhMRmCVc0gSzMm5uboaN0YCMC2LsQAVDwa4eR0TIoWF6A2LRY5L2U5/ZYmqPB6Bi3zng0R7tMUdREaXDDK4pD4pVootHc0Iyj/zrq83myIAdVcPkS0cx+KBv9hvVDwpgEj8fa0gsJBELPJjYtFkMKh2DHn3dAMAsBtwiBBJyvO4+GzxsCntvEpyZ22YYciXQRwhEiuggEPzh79ixkWcbIyR6Km71Asko+u9UxWgZzts5BelE6TE0mJGQl4LrnFSt6Tu9s2UvRFOZsmYP8v+a7nocgQZLV1Z8kShhSOCQsIlyhoHF3Y3dPAYDr5tuAIshmrZmFwjcKcf/392Ng7kC8Nfwt/LT9J4/XFUwCztacDeZUCYSwIRzSCztiNBh92oDxxHd/+i7gtGlGyyDzwcwgzcgzpKaLEI6QO5ZwReNPpOunn37CxYsX0a9fP0QOiET+K+pChtEGeReOATTRGrARLArfKEREbAR2vLQD72S8g7Wz1mL7n7cj76U83PDXG5SoVgcomgLfyiNrbhby/54PRsvY58dolZ5dQ24eomrkQLNKvZfRYERzQ3PY9OsKZnphSB0LgwUD/PtX/8bFny4CAEofLvW6pgMAKp+uDIvfK4FwpROdHB3cXoFBeFQNnTG0SzflSHohIRwhNV2EKxpfF+Y///wzDAYDUlNTce7cOQBAYnYiuCjOqT+JJPjwUKTg1uqX0TD4ZekvQbEUdIk6/LjlR7yT8Y49tcT2/6uWVeGOr+5wSjkRzAJEXkTjnkakzkyFLMuoeqoKbCQLWZAx8dmJ2PbcNtWxJVmp9wIU10RGx4CiqCuqXxfDMR5/R10KDaeUVNkqQ4SIbc9tw7bnt/k8V7FdRO2qWkxYSvp1EQg9GX2cHnkv5aHiUWfzDAcoKH8rPGQgSubABdyx9cdgajK5FV7BrLEloosQjhDRReg1+JMi4ovoam1tRX19PcaNG4f29nb7eTHJMarucF6nDLIABcptVNINNe0AACAASURBVEKSJHx2y2eY/sZ0JCYmYsOSDaq5/DRH48KxC2B0jMPrFEth7a1rlQbHggRJumQvbFFe3/anbaA5GqLa01mEg0Oj7brli8uRlJfUo1MOg/WQ56I4r0QMraGVFE33ZoEBQXM0xj0yDkOnD4WhwoDdr+927s3m59ve+epOZM7N9Pp3avv+hFNqFoHQmXC8h7PmZsHaasWWZ7e4PkiG098CiqEgQw56ewqa7dpWIqSmixCOkPRCwhWNt6Krvb0dNTU1yMrKgk6nczjP1GwKKAJCUzQouH/gy4IMwSyg9OFS/LDlB8iU+oCCRUBiTqLTAkIWZIhWEXwbD9EiOjklSpIE3uSbUrD16+qpBHMRdfGHi14dN/n3k8HQoV0ISLyE71/7HsW3FCPyqkiv+7N5A6NhcK7mXNikkF4phJsgIHQN4/97PMY/Nt79QZ0j4qIMmqFBa4K7/BN50aNzYTDvY0mSSE0XIewgdyyhVxBse/COCIKAffv2YcSIEYiKirKPZ+PM92cCur7ESz6lIpY/XA7RpL5NKQsyzu8/j4LlBaA4H3p38bLTw7lzXVhnwqFfV7DuidNbTns8htNz0PfXY9htw4IypickXsLG324MuLdOR3gTjy/v+hJrbl2Dd0a8g5pVNcG7OIHQQwnHSJeNcY+M8/i3ujOSVYJkDW6/wVH3jSI1XQSCB4joIvQKAm1y7ApJklBdXY2UlBT079/f4TXbeQPHD/R5XH8RzILbh6UsyihbVIY+V/cBTfn/9WY0DK7/0/XgIp2dEG1MfKbr7IH9IViLKFOTCXtX7PV4HG/isfGJjWgoDtx62Vt8db1Ug2Io+663LCj94oQ2AaJFRMWjFah5jwgvAqGnoo/To3BFoc/CK9iMXTi2S8cjoosQjhDRRegVhEJ0ybKMuro6xMbGYuDAgS7Pi0uPQ+YDXWOV6030ShZlrJmxBqLV/6R9iqbQL7Wf26a53/3xuysiEuJLCqVabV9PRxZlt0K+cilxNSQQejLpRemYf3A+Jj07KahW8t4SlRSF2LTYLh2T1HQRwhEiughhQahSP9yJrmPHjoFhGKSkpLg9z3TehBF3jMCIe0YADMDoFQv2AdkDXI5LszSGzfQ9Da1zLZYaEi+5NuVwHbhyHEeWMSBrAAqWF7jcQZV4qUdHQoKVcspFcYE3IA1jGI40Tib0bsI5vdCGPk6PCUsnYMGRBbj9y9sx/rfjQWtpsJFs0Ou3OtN6qhXNDc0hHaMzpE8XIRwh7oWEXkGwa7p++OEHGI1GjBkzxuXDWJZl1H1Wh3Xz1zlECmSrjOufux5b/ujGVYoBjn5z1K+50RoaFENBNPsuBGjQoPU0BJNr8wWKoVD4RiH0cXqkF6UjKS8JtatqsfPlnarRs8qllUidmdqjUw0DgW/llb+UwfOrCBkUQ4FmaSV6JUpBsbjnLXyPr90jEAgK+jg9UvJTkJKfgnFLxsFoMKLF0IJ1D6wL6binNp3q0mgXSS8khCNEdBF6BcFML2xqasKPP/6InJwcl4KLoii0nmjF9vnbnVKzJEHC5t9vdvvtkiwu0rm86AWVfnc66j+td3+QC1gtC5F3Fk7pd6WDi+aQkJWAYbcMcxBQth3U1Fmp+GDCB05Ww7ZISG8VXY01jWEhuAAlVbCjvX9QrinJMDebYTQYEZ0c3Wt/zz2VUBkEES7TGyJdaujj9NDH6XHk6yPqB1DK328Z7lOMvcF8wRzQ+b5CRBchHCGiixAWeHogBkt0GY1GHD58GDk5OW7/oB/+/DC2LtrqcjEuWkXA6vN0PEcmaODgRwf9uLCCyItImpqEU1WnQHM0hHYBsijj0JpDAIA6TR00kRqkF6XD1GRyXmirzE8UPFsFdwfBiH6amkzYvGxzkGYUpojAhxM/BBfBQRIkFCwvQFJeEowGI6wXrEQUEAg9ENvfby6Kw54Ve9QPkoFJv5+Ei6cvovrN6oDGs17054HnP7IsE9FFCDuI6CL0CoIhusxmM/bv34/s7GxoNBqX55jOm1C+uLx7oh+BrG8pQLSIOFF+AgDQP70/mg81O9R/SVYJZYvKcPGni9j2nNIwWRZljLxvJA58cEDVnjz3idxeG/0wGoxEVEBxNbQtqkofKgUYJWoqWAT0Xd4XGXdldPMMey+9MQJDCC31xfXYsGSD0vDeIrr9G7blGTdp8D6QOjM1KNfxFlLTRQhHiOgi9AoCFV08z6O6uhojR45EZGSk23POVp/1ytAiJAQybKdzz9ecB61zfmhJooQtzyoPYtGipKrVvK1ulsHoGGTO7Rrnxu5A5MUr2kRDDUmQAAGwWhQRtmHxBiRkJXS5exmBECx6U3qhqcmEDUs2KE3TuyjjLyIxAoMmDOqawS5B0gsJ4QjZJiD0CgJJJZNlGdXV1Rg6dCj69u0b5Jl1D5TGuwWEWh6/t4KS0TIoXFHYY6NcgaYX1hfXY+3MtUGcUe9EtIhYPWU1Dq091N1TIRCueIwGI2iua5d2t314m8djgp0xQEQXIRwhootwxdPa2ooBAwYgISHBq+MTshO86pfVXYy8b6T3aRcygI7PLS+fYbSGxpytc5BelO7r9MIC226xLdJHcI9oEVG+uJz08yKELb0l0hWdHB1Qj0ZfGZA1wKsoV7CjiaRPFyEcIemFhF6Bv1GN48ePg6IoJCcne32OPl6PiU9PxLbntvk8XihgNAxuXX0r2pvbkZiTiNi0WCSOS0TF4xVOToNOyIp71bT/nQZTkwlCm4Bdf93lcczMuZngW3mYmkw9NtIF+L+7at8t7lpDrrCG5uhe7WJJ6L30prpNfZweuU/kYtvzXfN8mvKHKV0yTmdITRchHCGii9Ar8Ed0nTp1CmazGTqdzufxMh/MxI6Xdjin53VxPyeao5G7NBcDcwbaF7v1xfWoWlYFjV4D3sQDUKzE3VHxWIXHYzpSu6oWdavrIPES8l7KQ9bcLP/fRIgIJL0wOjkaEh+YhXKXwgHgu3hMGg7GKhIv9UgXSwLhSiNzbiZ2vKzyfAoBfa7u49VxwY50kfRCQjhCtgkIvQJfF9jnzp1DY2MjRo0a5dd4kfGRSH86HWwEC00fjVLf9Hohblt1m/KzaA3YCBaFrxfi7m/uxo2v3Qg20s89jk7f0uF3DMftX96O8b8dD4qhsPvvu/HOiHdQ816NQxG19aIVsih7FFNiu+iT4AKUWjC+lYdoEVHxaAVq3lM32ghX9HF6THxmYndPw2tGFI0Ao+3aBUhSXhJoLa3c/zoG1z5+bZeOTyAEi95kpAEof7+mvTIt5ONQLKU0j/eCYEcTSXohIRwhkS5Cr8AX0dXS0oKjR4967MXlabyE/ATcOP9GtBhaEJMco1zb0IIHtj8AvpVHTHIM9PFK9CkhOwGVz1T6NVZnm/bDnx9GwtgE7HtjH8T2y+56Fb+pwIkNJ5QGy24YevNQnKo8ZbcTBuBUu8RGsBh83WAYKg2gKAqiRQStoSFLMkA5m21senwTUmem9qjUskCNNC4cv+D9wV0c4ezM4S8OQxKDv6tNcZRLY5VTG08h6/+yIO+Xsf+9/dj52k7sfGVnj418EghXElkPZgEysGnpppBFvGRR9im6TWq6CFc6JNJF6BV4u8A2mUw4cOCAvRdXoFbz+ng9BuYMxImNJ7Bi+Ap8OuNTvD/xffzn+H/sggtQ6sBmvDXDa6MKT2z9/VZVcXX838chmNyv/k9uPInCNwpx6we3ouibIoi8c+GXYBZwovwEJKsESZAwYOwASFYJsiCrLsIlQcLpzafRuKexV5gpmJpMOLD6gNfHUzSFkb8aGcIZeRifCdEuvYfLHnvjGGrfqYUsyBBNomrk09Rk6jX3BaF30tsiXTay5mbhoUMPYdL/m+Txu+wPfQb38XqjLRTphaSmixBukEgX4YrBarWiuroao0aNgl6vPCj8fQh0PM903oSShSUOfVHWL1iPlGkpDsIrZVoKaJYOWkTCk7hyhWSRUL64HKJVhCRJqg2POyKLMs7tPefxuiUPlYDVsZB4CQXLC8La2dBoMCrC2svGaLJVxqHPQm+ZTjGUaiqoZJXAcAwEwfU9QTEUaJYGo2XAt/FepZSOmjMK+9/f7/Ieaa1vVf35xsc34upJV+Nc7TmULy63z7twRWFY3xcEQrihj9Mj88FMbH9xe9D7Sw4pHOL1saGwjGdZsoQlhBdkm4DQK/AUsRJFEfv27UNqaipiYmKCMqYsyzCdN+FY6TEl7a7Ta2erz+LM7jMwnTeh6VAT9ryxBzLl+cFDMRRorfuvpiwE9gDj23jFKCKIzsKSVYLVaIVgFnqEfXjARhqCb+K4K+zlZVFWolqdbw9GiU6qYbuXGA0DUEDGvRle1/Bl/DID2fOzfZ+nIOODCR+g5KESiO0ihDYBYruIkgUl3X5fEAhXGkaDEawm+AJlQOYAn44nRhqEKx2yTUDoFbhbYMuyjNraWlx11VWIj48P2nhnvz2LFTNWALTzgltsF7G2aC0YLQNrq9VjNMlhvrTsUQy5inh0JZSGUqIr7YLTfCmawrmac9D11SE6ObpH1Xp5gz5Oj9yludj5ws7unooTsiiD0TKY9so0bHxio5ICalG/wdLuTMPRr48CuCzKat+t9W4gWhHn+z/Y799EVe5hmZdxevNppN2e5t81CYQQ0FvTC21EJ0e7zLAI5Fkimr3faCJ9uggEEukihAme/li7E12HDh1CVFQUBg8eHLT5mJvMOPzqYQhmAUKbeoRBtIiwGn0TXADAsIxT5Kwz/j4kac7zV55iKI+1Z0NnDMWCQwtw2+rbwLDOB/NtPL64/QsUzyzGypErcWht6FPvgk3/Yf29qoMIWaNsN78qiqbw85GfQbHuxz769VGn37kke3lDSoClxQKadZ4IrfH/0VEyvyQs7wcCIVzRx+mR92Ke8wsMkP+3fL9XggOyuy/SJUkSqekihB3kjiX0GtRE18mTJ8HzPIYNGxbUsVoMLR4XvP4iWkVwEVxIrj1uyTgwOveK6obXbsCUP7pveJk9Pxv6OD10fXVK2poaMsC38t2WbhhIeqHNet9TSRfN0qACqFCnNbTSY6vTX2KKpXB36d1I/a9U1fMEs4C9/9gL0eRhp5mGs6Wzl6WAjI7BuZpzzucz8Pi5uEPipR6RfkogdKQ3R7oAICErAZo+GscfisCmJzb5vDFog+G8jzSFoqaLRLoI4QYRXYRegdoDs7GxEU1NTRg1alTQH6gxyTEB11W5hPI/kuUWFhiQNQCj7x/tLBgZJWKT/7d8pM5MxfbntrueHkdhQJayw9lY0wjrRavHoSmGgtFgDGj6XYnRYPQqKuhr3VdnKIoCDdopmiQLMtbcsgZ8W2Adj31J/1Fjz4o9KheF1wYjrqA5WvV+IE6HhO4g2IKgJ+KqTtXfWlRKQ/lkF0+aIxMIRHQRwgh3f7A7RzX+85//4MSJE8jOzg5JCoI+Xo/hTwy3N0L2yQqeBlgd6zItTaPXYNyScf5NzNVbpQBKprDugXWofqvaWTCKSr1N88Fmt4KD1tK4+a2boY/Tw9RkwuZlm72altgugosKTfTOFQEbafDeCSpvj1NDtIiQeEm1j47MyzhZftLvawfKNdOvcRnFC9QFTbSKDgs2U5MJ21/ejncy3sHaWWvDNiWVQOip6OP0mPrC1KBd7+Y3b/apVpc0RyYQiOgihBHu/mh3XGC3trbi4MGDGDNmTEgtZQfkD8Ciw4uQ+1iual2TKixwy8e3YNGRRZj57kywOuf5iVYRfQb2AaP1/YHiMt1D9i56Vv12NdrOt6kKifG/HY+H6h+yW357Gw0ClIjQh5M+DJuFtD5Oj4LlBYqojtJ4PqEXcrTkaMgcGXOfyLUv2OqL6/H2iLex/fntENvFHuWASbgy6O1GGjaC9X1KvjHZr9YPpKaLcKVD3AsJvQKb6LJYLKitrUVmZiZ0Ol2XjL395e1eL04H3zIYV+ddDX0/PTLuykDKtBTse3cftr24DYyGAW/mIYkSNj27ya8FbzAWyd/c+41dTNFapWYp76U8ZM3NcjjOZTSIVoweOkfTZF5G2aIyJOUldZmbYSC7q+lF6UjKS4LRYMTZmrOofLoSYnvobeF7CjRDQ9bIkK3B3aGmtTRSZ6WicU8juCgOJQtKVOvMZFmG0WAMO+dLAqEnYmoyYderu4JzMT+0E0kvJBCI6CL0EiiKgiAI2LdvH9LS0tCnT58uGbfF0KIIFLN3x/+4/kf8fPhntDPtiEmOgT5ej8lPT8aYX4+BocqAr+//GrIoQ+S7b3EvCdLl3H8ZmP72dAy+3tn50RYNKl9cDpqjIVgEjJw9En2H9sV3f/pOte7HVtvVFQvpYDzg9XF66OP0SByXiJZTLdj92m6vzuMiOQgWAZBw2YmSuuQMicD7rHUFkiCBQqcG0YxiHsKwjH/1Zgww+v7R+Pj6j0FzNKxtVpftEdRSUk1NJhgNxrBsQ0AgdCdGgxGMhgnKxpE+vvu/e0R0EcIRIroIvYaTJ08iJSUFsbGxXTZmTHKMTzU9MiXj85s+B6tjIfESZrw1Axl3ZeDExhNYN3+dxxRAVscqfbEChQHSitLQ8FmD28Mkq+I0J0syCpYXOKWU2KJBNatqsOvVXTi05pCz213H6/FSl9d2BYqpyYTTm09jzz9UTCVUoDQUCpYX4GzNWexdsReURCn3iBweYsuGLMlgOAYSJFCsErm0pdGmFaXhwAcHnM6htbTyXl18JRiWQe17tUpNmIeNCjaCdbiX6ovrsWHJBtCcMoba/Ugg+MOVkF7oS52qJzIfyPT5HNKni0AgNV2EXoAsyzh37hwiIyNx1VVXdfn4E5+aCEbHQBOt8WgjL1tlSFbJXreyfsF6NB1qQsnCElUzBRsUR6Hw9ULcu+FezN4+G7e8f4trq3a46cfFKK8xHONRcNng29Rt321Oc+ZmM3a9ugtiu+hWcAFKytrH13/cZbVdgRZv1xfX4+30t7HugXVem0dk3J2B0oWl2P2/uyFZpKAtdLoUWhGItobKNrEoWkSIFlFVcAHAqDmjVPt62RAtotefoyzLdrON5oZmlC8qh2AWSM0XgeAHtsyEQPsKavtrMWjCIJ/PC4XoIjVdhHCD3LGEsOf48eOgKArx8fFdOu65inNYMXwFdr62ExQo5D6Wi1/v/rWqOQYbyYLRME4PPJqjceb7Mx4NKWiGRtqsNAzMGYi+w/pi2KxhKHhDMXpgIy6Nd0mDMVqlubKqABSVaJOnFBMmwlnQUTSFczXnAChiZOXIlVh721p8OOFDt9ejWMreTFcwC122YA70AW9qMqF8cblbMaxG3Sd1XqfwZP4602szki7FT51Y93Gdz5+XK2xmG/XF9Vg9ZbVTvSLFUDhRdsLlfUTs5wneciVEugAgKS8p4HYkCVkJQZpNYJD0QkI4QtILCWHNTz/9hAsXLiAhoWsfBKbzJhx+9TAki2RPk9r+8naMmTcGM96egfUL1tvToPJfyYfpvAnfvfidkymBxEsYOH6gx2gIo2HQYmiBqBOxd+9ecBwHOUXGuNXjYGm0QORFHHjygFIP1nFxSsOnBTTFUkh7NA0RgyJQ81SNwwKab+PxxZ1fYNiDw3D8g+PeL65lRbA5QAOGGgPisxShTFFU0P6zXS9QjAYjaIaG6KroyBU+HK6N1ip1Xj6UR9EaGldfdzVOVZzybV5dQDCNRlJnpdqbVKsZxPCtPDYt3YRvH/sWuU/kInOukvJkNBjRWNOIzcs2g+ZoiFYRuU/mIvPBTFIHRriiOb35tN8bKjb0Cf59h4iRBoFARBchjGlubsapU6eQk5ODH374oUsbXLYYWpRIkuXyzyiawtnqs3ZXwhZDC2KSYwAAK4avUARaBxgtg/xX8nHx9EXkLMnB9//4HoyGgWARIIuyQ/2PxEugtBS2FW9D+sR0JA5NdHiAnaw4iXquHgLfqd6LAhid8mDytCCe/NxkpBWlQRergyzL6K/rj8rHOjn2CcDRd4768EkpVvWi6Di20Cbgpz0/QTdUGStY/wGXUwoFQYAoimhubvZ6rh3FG2/kQ25osnfFXoz5nzHY+/xe79IQaSC5MBknvjnh+VAt7XTP+QKjZUJmGe/N2HwrD76Vd2tUY2vMve35bdj2l20ABXA67rLJx6Xztj23DTtf2YnCFYVIL0onhhwEJ66ESFfbubaArxE73L+aaVLTRSAQ0UUIUy5evIhDhw4hJycHLMsG1AjXH2KSY5wWtHwbj7V3rsUtb9+CjLsy7A5PZ3afUV04SoKEskfKYDOHozkauY/lYsy8MTi56aQ9WiZYBGTMycCHUz4Eo2GwX9iPm16/CSPuHAEAqFlVg8qllRCtzgtkLoJDwesFKF1Q6vE97Xh+B2IGxdjNCbJmZyEmMQZf3fsVRHNgi2+1BXzdX+swce7EkC16m5ubceHCBVxzzTVeHa8m4MwPm7H373sDmkfCpASk35+Oo2uP4scNPzq9HpMWg1sqbsGOp3fg/Lbz7i8mwSvBBRoYsmAIooZFofaxWt9TiiggeX4yjq84HvDOuD/IkNEe0Q4KlOp9rcqlebpyVRTbRZQvLof5ghlbntlCDDkIdrry2dGdJE9LDvgaw2YOC8JMAkcURVLTRQg7iOgihAUdd8ja29tRW1uLrKwsaLVa++td/eBUG09sF7F+wXoMyBwAvpVHTHKMS4fDzgthiZew/SUlRTFlWgruWHMHAOD0xdPY8eAOxZThktDbsGQDkqcl4/DXh7Hx0Y0u5yhYlMgXzdIeoxaiRVmUduyjNSBrQHAW3bJS1ya0XY7EdaV9vDd0TE+0kZKXErDoOrvtLM5uO6tawC5aRFx9zdUA4Flw+YIEnHz7JApXFCLutThU/KbCt/NlINIS2S2CCwCG3DEEdBQNWZYx+snRqH6uOijXlSkZlU9VOrgnlj5ciuaYZmj6et8E23rBCutZK3QDddD203qd9sq38Gg/046IqyKg66+D9YIVLQ0toECh34h+oCgKLYdaAAron9EfulgdrFYrfvrpJ69SantSei6h5xERGwGKofyv6+KA2LSeEeki6YWEcISILkJYYevFlZGRgaioKIfXujq9kNExENuchYzIi3gv9z0wWsZuCz/jrRlYN3+dR+FDMRT2rdyH7S9vt+/ED/rlIKdURpqjca7mHKqeqnI/UQkoWVDidZoZzdEwGowAYE+/ynspDxWP+rho78TYJWOx7419Dj/jW3mcrT2LxHGJAV3bFcEQ4gOyBoDW0A71azRLAwycP1MP9XNqrn2MTkmjaz7kfQqkt4jtIsoWleG6P13nJHi9Yf87+4M+J28xfGnATc/fBH2cHrW1tcG7sACwWhY8fzkaxnAMBtGDAOW2x4CsAfaNAFOTyW4eY/t5Z+v6/P/Lx/Dbh0OWZZjOm9ByqgWcnoO11Yqoq6MgQ8bFUxdxfv957PjDDlCM0kJg6C+G4tgXxy6nEdvWo7Z/shQmvDQByFBSqbxJqw1Wiq6/eCvogi0QA/1PFEVYrVaP1w13jAYjuEgOVqPVr/OjB0X7PTYRXQQCEV2EMEKSJFRXV2PIkCHo16+fw2uBLrB9fSDEJMe47LkkCzJEQbQLrPUL1mPR4UV4cOeDeDfnXbe9miRBwraXtil1VJd24g2rDU5pFLbImVoDYoe5iLJPu5q8mcfZmrNYM2ONfVE5vGi403EUpyxCvDXTiE6KxtQXpjqJt8qnKpE6M7XHRLs6o4/TY/qb01G2qAw0Q0MSJUWE/lZFhPoRFaIoCtHJ0X73LqM4Smm+7KbB8NY/bIVgCkJvty5EkiQYDUaYm8048tWRoF5XMndKC27l8cXtX1xO89XQmP7mdMiyjNIFpfbvK83RGPfIOOxdsdfh+/ntkm8RGReJFkMLqpYpmyCCWQCtpZXvH2SlzqxTO4WjazrVRnb6msqCjF3P7ELOxzm4+uqrg/MBhBBPglCSJLfH+fpfMK/X1taGo0ePgqZpu8DtfG1/CaXYtD0XvBaXfUR7Gwh/yF2WC1EUe4QQlWWZiC5C2EFEFyFsOHToEGJjY5GY6BwZoSjK/hD2FZtg8+UBoo/XY/gTw3Hk1SMeo1c0R6PF0IKBOQMx9pmx2PNH9Sa7tIbGpKcnYef/7nQwr6AoykmopRWloc/VfXw2SrBZt7M6FqJVhMRLDqJMlmRsemqTgyvjwY8OOl2HAnV5Z74zDJxEQNWyKtz2yW3Q9NHYzQ8ARRTUvleLCU9O8Ol9eEswop+2BtC2yN/hrw/75FDoCoqjMPGZiYrtebNJ+Tx9mC7FUkgvSkf92nq38wma4PLRCTMQJIuE09tOQ9/fdzFOMcq9yek5iFYRoiAClz4ClxseHX4sWSWUPVymmKh0eL8SL+H71753OlW0iPjX3f9y2oDo+N301L/O3XuxNFo8H9gD6O5FeCBUV1dj5MiR4LjgNm4PZTTSJjw7X9tdVLS9pd3v5yQYgE/jUV1d7ZcQFQQBgiDgP//5j19C89SpU/jnP/8JhmHAsixOnDiBf/zjHxg0aBBYlgXLsvbXWJbF1KlTMXbsWJfzycvLQ1WVc6aI2WyGTqfz+eMhELyBiC5C2DBkyBDo9eqLsGCkkvnKgPwBGBg5EJv+Z5Pb4yResrsYXnP3NeA0HL7/k+JUKPESsuZmod81/ZCSnwJ9rB7bX97ucH5nm3kAqPuoDvp4PdgI1mHnkmIp0AytGFdYRUii5JDWRjM0Zm+ejYs/XMTPR37Gtue2OYggiIAken4o04x6ih2jZZD7ZC6+/9v3DgtNmqNhabGANzsvPne+sjMkdt7BXADq4/TQx+lhajJ5Tun0FgnY8uwWv0+XBRn1n9YHZy4eYDQMiv5dhDUz1riN1AaTrb/bimuXXuvTORRD4Ya/3oDU21JhNBjRfqEd39z3jc+iR7SKPgngYPUm64wsytAmakNybcJlQvXs6GlCtPE/jdBEavxKL0y+Idmt9i4ivgAAIABJREFUiPGEzdho6NChAHwXoNHR0bj//vshiiJ4nsfHH3+MiRMnYvDgwXanWpuwE0XRK+E0bdo0/OUvf3H4ma1OnEAIBUR0EcKGiIgIlw+wQESXv+daL1ix+7ndbo+hORr5r+TbnQwpisLwe4bj2l9dixZDC87sO4ONSzeC5mhUPlt5uf7roXWgWAoyL0MSJNUUwb2v73Vqb85wDGZvng2+lUd0cjROVZ5C+eJyex3J1Bem4lztOZQvLgco+O1KKMvqKW3DbhuGzLmZ2PXXXQ4/59t4h1QthzmzTI8y1HCH0WB0HeHzEW/SPimGAmj1ejD3J0K5N1R+R7SGxqhfjcLgKYNRvqTcK0Ey9Jah6DesHyiacpnSOnruaAzIGoDKpZXKjnuAQkQWZex8eafP51Q+XYnU21KROC4RNatq/Isy9QAzO4qjULiiEMYYY3dPhdBLiE6Otpsr+UpCZnB6Yfpr1tKnTx8MGjTI/u/PP/8cU6ZMQUZGht9z6d+/PyZMCE2WBYGgBvHbJPQaulp0WRotihW8G2gNjYonK3BwzUGHsfTxesQkx2Dj0o0QzAKsRisEs4D1C9ZDP1KPKWun4N6Se/HLkl+6XJzTHI3cJ3PBRrDQRGvARrAoWF6A2LRYJI5LhD5Oj/SidEx9YSokXgKjYVD5dCVK5pdAbBc9Ci5Gq54vTzEUCt8oxKRnJzm91lDcAHOzGQXLC8BGsGAjlH0dp6bNHRDaBUQn+1+g7Y5g72BzUVxQGwB7gtWxmPHODJe/C5fIcJlyKFkl1K6sxdF1RyEJ3gmjY98cw9F1R8Hq1PfpaC2N1Jmp+GHrDxAtoleCa9LvJuGW92+x95FTxY+PmmYUMxhTkwmVT1d6cYLvY/gDraW9Hmvy7yZjQcMCYmXfRQTb5KGnoo/TI+2ONL/OHfHLEQGNHezPmPTpIoQjRHQRegXdEenSJmo9NrQV2gQIZgH//vW/cWT9ETTvb0bL0Rac2X0GZ6vPOok2mqXRsLMBOVNzcNX4q8BqWKVGSgVJkJD5YCbm1c1D0VdFmFc3z2mR1tzQjMqnKiFaRFgvWhXB4MU6m9EwGP/4eNXX7iq5C+lF6dDHqkemGtY2ICkvCbM3z1ZMHjzgyQzEX0KxiOJbeXtdXFcg8RLiRsYhd2musmgPIg3FDbh6kncGDZIg4dtHvnUZNZJ4CV/e/SUaihu8uh6toZH5QCbSbk9D4YpCVeFFMf79/kSrCC6KQ82qGo8CmdEwuLv0bvfCzwcoWn3O2Quy8Yt//gIjZ4/0eA1aQ2P0A6Ptkd8rQQwQuo6hBUN9PqdPSh+/reJtBHsDTJKkgPt0lZeXQ6/XQ6/Xo7CwMLhOqQSCCiS9kNArCGRh4rfo6qfFzW/cjJKHS0CztGNtVCckXsLnt39uN0uwLfI6ixLewmNw/GDwF3hw8Rwa9zW63O3PeynPvjDrmJpnajLBaDCisaYRVU9VeTT6UJ2vJGHHX3Y4/ZzRMWA4Ze6JOepW77v+bxd2vbYLmb/OVG2K3BlOz6mmF9reR3RydI9JPYxOjna5sA4YFSMN0Srio8kfgdWxoGRKSTn1p6bKhQmGocpgd6n0BpciWlKvPVSD0TIofKPQ/ju1GZVUPF6BI19ediocfvtwHP7isF89hVZft1oxwvAAraFx4dgFTHp2kk/1dbTm0mfWeWq0EmmzfZ4UQyFjdgYOfHgABz856PZvhI3MB4Jf30gg2Bh8/WCfTXGG3Rychsg9yTJ+6tSpuP/++zFs2DAYDAb8+c9/xnXXXYeamhqkpKQEbZ4EQkeI6CL0CrrDSIOiKKTfmY4h+UNwrPQYyh/zoj7m0hTtO/CskkJGa2hY26ygZAqlvy5V+v+8ko+Kper9sTLuy0DW3Cynn9esqkHlU5WgWRp8m3+OaYBrlzebxbmNwXmDcbrytMMxNkvu6jervap/knjJKb2wcy+kguUFPqdaheKe0MfpkfdiHioeqwhK3Q+jZzD+kfFIK0rDjpd3qEaKJKsEq9W/vjqXL+Li5yLs+Q60hoYsyaBoxYwlEGtpV7CRLAqXFyImOQamJpODuDhResLh2IbiBgy6bhB+3PKjT2NIvAR4eevzrTwqHq+A0O7be3WVPsnpOdz6wa2X/x3JYe2taxVjDi858NEBTHh6AhFeXciVkl4IKH/Dsudlo/pt7xuOR8RHBDxuqPt0tbS04MyZMx7PS09XniN//OMf7T+77rrrcOONNyI9PR1/+9vf8Le//S1o8yQQOkJEF6FX0B3phR3rs66Zfg3k//ZjfAHIeTQH9DAaO36zA5JFgpVXFtjfPv6ty4fU4bWHcf0fr3dYmFWvqsbGRzcCgF/RLUbDADRcpmQxWgYFywugj9Oj4okK1Lxdc/lFV3bnMkBpKHAaDoJVwLgl4xCdFI2qZVWgORqiVcS1T1wLc7PZHtUCgA1LNiiL/ku29eWLy5GUl9TtC9H64npsfHJj0IwWKJlC9oJsHPjkgFepeYxOcaUMpnW7LSojWSXQWhrTXpqGhKwEtJ1vw1d3fRW8gaBE7koXltqdO21i2mgwKk2nO/Hjlh8BSokYMRpGqQ300VnQE8HsYSZaRfS5ug/4Vh6NNY3Y+PhGn+vSbA3Ku/teJ/ROTE0m7P/Qt8bnqTNTAx432BtgnUVXcXEx5s+f7/c8EhMTMXnyZOzduzdocyQQOkNqugi9gu4QXZ2Z+NREMDrGbmox+ZnJXp33/T++h9lsBqt13AOhWMrlDrxtYWYjUCvzEfeMwJzv5rgUeYyWwZytc5CUl4SGLxocBRfgdhEsCzKsZisYDYN9b+yDNlqLeXXzkPNIDgBg16u78MH4D/DZzZ9h5ciVqH2v1rnWrdP79YZg71ybmkwoX1yu6iTIaBlQDAU2kvXJ3XDUfaNw5Osj2PrsVq+OF9tFcBGc0pzaz5ond0gWCVXLqhCdHI2LP1306VxPNWe0llYatLaLduOYsofL0NzQrLiquYqsyQBoYMofpmD0g6N7hLOgK+JHxeOjyR+h+NZiZQPEDyMQtcgvIbRcSZEuo8HoVeqtjdiRsQHXc9kItpFGx5quefPmed3jrKvmSCB0hkS6CGGFu4djd0W66j6rQ8nCEmURLAFjHhqD3N/kQh+vx9nqszi67qjb68iUjKEpQ7Gfd9x9lAXZZU1U54WZ0WBUIkd+RLgA4PAXhzHkpiEoWF6gCAtZhtgu2t0HC5YX4FztOWxYssH3Re+lqIwt9bJ8cTlmb56NXa/tcoiq2f73zlecbcL9XYgGc3fVaDCCZmiIKitp0SKC1bPK5+/DkLUf1Pr8eQaSNuoNNEfjXM05n0T80BlDkT0/G+cPnMeW329xisQxOgbjFo/DntcdG4OLFhGrp6xG3st5bn9XslXGlt9vcem4SXGXat1cXcLHxtP+0ri7EYDvfbtoDQ1Wx9qjfyTKRQgVIi/6tBlwzfRrgjJuqNMLA+Xs2bP47rvvMHfu3KBdk0DoDBFdhLDA0x/r7jDSoCgKbefbULKwxGGXfuerO9E3pS80fTQ4UXHCzRUuXUemwLKsUsP1ZIW9jsn2784wOgY3vX4TAKBxTyOik6MRnRytbjjgZcG0aFHSvh469BDm1c2D0WAEF8Xh4g8XYWmxAADKFpZ5tkv3YnFLczQadzcq0Syz8+uMhkHOf+dg1193OdR0dfdCNDo52m3jaH/S1CSLBIrrWTurokWEpcXik6vk8fXHceLbE0oUUOU0sV106t3WcbzKpZVgtIzbz9BdiwOaoiHKbl5naAycONDn+rCuInNuJjLuzuhRpjGE3smFYxd8Oj5+dHxQxg2Fe6G/oqu2thbLli3DnXfeieTkZJw6dQovvPACaJrGo48+GtR5EggdIaKL0CvoLiMNo8Gomua14dENAKMsqt1CKw+PL2d/aRdaidmJiEmOgT5eD220Fuvmr1NMDngZE5+aiPQ56fih6gesHLnSQZRMfWEqKh7tJNJ82HCXrBLO1ZxDSn4K9HF61BfXo+zhMp927bPnZyOtKA1rbl7j0nVO4iUk5iS6dMyTeAmZczOROTfToc6rcU8juCjO3vjZ0+I02PeEPk6PwhWFKF1YGnDj34743Pg4xFA0hZIFJS7vXZqlVft7eeteqD4ovHZQdJqPlsbYxWPx/WvfuzxGEiQ07mkEraWRdkca2s624VTFKX9n6xc0d+lzU/mYat+txYSlxDyju7hS0gtNTSafUguBS26HQaKnRLpiY2MhyzKWLVuG5uZm9OnTB3l5efjXv/6FpKSkoM2RQOgMEV2EXkF31XT1SeqjuliUBAlwE/igGApD7h4CwxcGpcalg3nGgzsfhD5eWXxl3JUB6yArdBYdkkYnQR+vR/PpZmx4xNloovCNQq/nTWtpt4LQVr/kq7iwOa/d8NoNqPiNepTO1sB56otTVY+Z+MxEe6QNAI58fQRVy6pUUx67unlselE64kfH48OJH/pn3d6TuRSl9OhayAA0TQdVeIrtonM/OkYR8bWrat2OJQkSdP11oBjKrb28aFIWm4e/OIz5B+fD3GxG4+5G9L2mr9tNgoC4VHLC6ljIkoyRvxyJuo/qnN8Df3nDg0AIBfXF9ShZUOL2udSZxPGJQdsI6EnNkQcNGoT169cHbS4EgrcQIw1Cr6C73AsjYiNw419v9H1QBsi5J0dxDOyAaBGx6tpV2LdyH87sPgPTeRN0sTrEZ8Xbhdj52vNOvaJojkbbuTbf59GJPlf3AXC5fkkNLpIDraFVI3w2w4vUmalOaXM0S2POljl2oZSQmWAXVjYYLYNtz23DZzd/hg/Gf4BPb/oUFY9WQDAL9tRGwaw0nC5fXA5Tkyng9+wrfCsPVtcL96u8/ArQNI1xi8cFv0m0ygb8VddehdRZHpzTRGDLs1uQlOfdDrXYLqLq2Spc/OEihhQOQb9h/UL3JJSU/wSTcv8eWnMIlKb3R1TCkd4c6WpuaEbJQ74JLgDIfTI3aHMIhXthoM2RCYSupheuHAi9FXcPxe60jB8zbwwAYMNjG7xOkeJ0HChQ6lEyq4SyJWXgojjIoozs32cjbk4cAKDuszqse2idU5RK4iUkT0tWmrZ6iEDQWhrJNyTjRIljvRmjZdC4uxERsRGITo5W7S1Ea2nMXD0TA7IGwNxsxuopqx3MO2yGF0aDEVwEZ4/gAQCrZx36mKnVoXU2AvEUTXJnrR2qlFOX9XO9DQaqQkgwC9i7Yi9YLQurYA2qfb0DIrD+1+u9FoOnKr1PF6z/pB71n9SD1tCYsHSC070aMihAtji/IYqlMCBrQOjHJ1xx1BfXo/zhcr+cNCPjI4M6l56SXkggdBdkm4DQK+iumi7bmGPmjcHc7+d6vfsv8RISshMw460ZLs/hW3kIZgH7/rAP5mYzTOdNWDffWXDZ+mfFpsVi+pvTwegYMFrXD6Orp1ztJLgARfBsfHIjVo5cibpP6iBJzqvpaS9Ns9d8xabFovCNQrARrN0m32Z4EZ0c7SQoOzsQ6uP0KFheADaC9Wg3roZgFpwiZV2Bbd7uPmM1hs4YGqIZhYZrZrh2LRMtIqwXvRNctIYGq/dzf8+Hr7Q/QliyStj5yk6fmhcHgpoRDcVSuPntm0k9FyHomJpM2LBkg3/3N4Wgti7o6e6FBEJXQEQX4YonWIItLj0Ok/9HvTeXbYFOaSkwOgYz3poBfbweGXdlYOaqme7nx1C4eOoizlafVY1iydLluacXpWPOljlur+fOQMAm9LY8u8VpZ1QTpUFCVoLDz9KL0jF782xMe2kaZm+ebU8d7CioOguyzudP/J+Jng1HVKBYyiFypkaohHh6UTrmbJ3jtfBi9IzPluWsnnWZxhkI3lyP0TGIGxXn87UZLYPxj41Xfu9RGtAaGqn/lQrB4pzXRHM0Mudmdotw7ogkSBjxyxFgI1gwESFexHV64lIchf8q/q8ur00k9H5MTSacKDvh9yovOT+5R28EBFLTRSB0FyS9kNAr6M70wo6k/SIN2/6yzWFnkdEymPD3CdAP1ENH64AYIGVICs7sPoOY5BgkT0126QgHKBGiyKsjIf3g+vXyxeVIykuCPk4PvpV32d8rEERBdNr5rC+ux4YlGxxcFG0LyPSidCTlJdkdCNUe4KYmE7Y9v82v+ciCjBZDi8trh7pGwxbpK3241KNolAQJx0uO+3R9ySqB0TLgxeD25fImIpSYk4hdr6pbvLtLYRUtIjLuzYA2Vout/28rIAMNnzWoHksxFMY8PAYHPz3o/eRDgCzKOPD+AQzMHYh+w/rh4Me+z4diKcVi31PNTKePTeZlex2ly/l1cQSfEP7Y/i5LouS34U3yDclBnVMojDRITRch3CB3LKFX0BNEV91ndXh/4vtO3ypJlNDS2IKxBWMRnxWPs9vPYsXwFfh0xqdYMXwFTm46ianPTXU5zrA5wwAACdkJbns6GQ1GmJpMaL/QHpJ0KVmSHepmbKkrglmA1WhVNbfQx+mROM61A5bRYAxoTusXrMfb6W+jZlVNQNfxl/SidPzin79wn1bKwK9IhiRISiPkrsl8c+DHrT+qWtnf8v4tGDZrmMvzKI7CwU8OYuuzWz33a2No/Lj9R4y4dwRoLe1XimkwObPzjF+CCwDuWn8XZrw9wx7h8xZGx3iM1hIIvtDx73IgDqMMG9woUihs+Xuz+Qmhd0JEF6FX0F2iy4bpvMneJLlz3YYsyDj00iGYm8xo/7kde36/x0GorF+wHgNGDQCjc37IUQyF42uOY83ENTi56SRmvjtT1f1MMAs4vfU0Vo5ciX/f/2/IkgyKo9RTt2hlscdF+pbWJVklB1FlNBiVBscdL33JvdBbuChONSI36oFRXtUByRYZklVCxaMVqHnPUXh1VZ2fmgECzdHIXpgNRsNAo9fg8OeHQz4PVWjg2sevDdrlDJsMOFzs+r3IvIzv/891v6yO8G08vv3vb7H/3f2QLP7vyPcELhy7YE+1Hbt4rJJO6g2y57oZsrAk+ILRYATNBr60S5pG+lURCMGGiC5Cr6A7jDSAy6k/LYYWJwHSEYqhcKz0GJoPNINine3eAfXFlSzKEFoVIbd+wXqkTEvBrH/Ocoqs0Foa257fZhdzklUCRVOY/LvJuO7P14HRMWAjWaWebOUMzD84H3f++06Mum+UT++3o6jyZJZhajKhcU+jW1t3vpV3EpuMjsHwWcN9roHa9OQmNDc0exwzFHS+9yRJwv5V+yFaFcMJ0SIGvTbLG2iGxsDcgUG73oEPDng+yN/IXA/Pohs6Y6hTiwcbfa/pi/rienx8/cfYu2KvvSeYJ/JezuvRdTOE8IOL4iC0++gN34m+w/siNi02SDNSuFIaUBMI7iA1XYReQXenF8Ykx7i1i+dbeWz47QaIvOhUu2VzMsx/JR9lS8rcjtliaMGAzAFOC1RZlMFGsI727RYJ3/3xO8iSjLyX8pCQmeBU/3Ro7SFv3659rjZRZTPLKF9c7lDTpY/Tu6316khjTaNTZJCiFPvsjtcWrSIkXnJbjyRZJXw44UOwOhaSIGHSc5MQMSXCp/fnD2r2+BAVd62OMBwDkRI9N1W+1KTY4UcMBTCAbPXxPpWBr+/52rdzQghFX3ofKqmLPZ1TVacgySrfcQo4V30Om3+3WdWdUA2KpXDDqzcg68GsIM+ScCVTX1yPsofLvG5d4ooJSycEaUaXIaKLQCCii0AIiujSx+sx460ZWL9gPShG3VXPelFZlFMcpdSwsDRkUbY7GSZmJ4KL5JQ6HhVsFunmZrOTnbsMGSLvvOCzXavq6SrMq5vnILjs6YHmTu+Lo1wuikfdN8rhGmpmGaYmE8oXlysL0EvX7mj0YcPUZMLmZZudxpj64lTo4/RO1z7y9RFUPFqhOi/75yDK9ve8ZekWDFs8DKNe8C2a5ytqET81vN59VhFdsigje342alfVqqfhqZwDwKU5S5dDAdkLs9FnUB/FGdMNNqHu1zAMFbIeakKbi9+fDFQ+U+n0nXE3l7vW34VBEwYFe4qEKxjb391gpOmGYlOEGMIQCCS9kNBL6I5IV2cy7srAosOLkPuHXPc1HTRAyRRs/2ejcV+jS8EFKGl3DV824JPrP3FK4WJYBmMfHgtGy6iOTTM0TpSdcEi7c9UAmQIFNlJ9P+bARwecUvc6m2XUvlvrtOOvVuulVhPGRXFIyLxsS9/x2llzs5D/93yf0vSOLj8acpONjvb4vtbJqeHKlGP/qv1gtaxSr9HxEAbI/998ZC/MDnjskCEDtatq8d2fvvN4qE1wUbTvu+KBCi5aQ+OW92/Bdc9f59u4KotUV3NhdAwYjlhdE4LLuZpzQUvRTcxJDM6FOkEiXYQrHSK6CL2CQIVTsCzjRZ0IYajgtmmsbJEhWkXwbTyEdsVIo+lQEyqedB/FAYDtL21XNZ4Q20XsXbFXiZ7xstM329pqtTc+tqUU6uP0yH0y1+lajIZxmQLXUTyp1WyZmkzY+dedzvOzOtvNq0WIZFEGF8WhcU+jan1W1oNZWHBkAW7/8nbc+H83uq2js7Fp6SacrDgZ0jqv9KJ0zKubh5mrZ6oaovgCBcqp7g+AvT5MEiQwGgbZCy4bdVQtq0LsiNiAx3YgyE8HX80yZMn5PvYGWyqmE15ca/qb05F2exoGTx4MTR/vXQgdhvHQIJ2iqKA2nSUQqldV4193/ysobUKS8pOCXs8FkPRCAgEgoovQSwg00hWMMXmex/79+9HnfB+HhsWg4fGbdub7My4jOEwEA0bHYNLTk9wu6ESLIuQkXlIVfbbGx2WLyuwiJPPBTKeFOt/GY9htw1THstV01RfXY+XIlVg7a62DkDMajKpmA7lP5joZBqg1UB513yh8fP3H+Ozmz/DB+A/w2fTP8E7GOw61Z/o4PVLyU5D5QCamvzXdo9CQrBK+mfONwzxDgW1ehSsKfRI/NEeD1tDgojiwESwKVxTi5rdvViIibpov73//slGHYBZQ9XQV8l7MAxvBgo24FKkMZI3TEzIT/ZiDLMrqO/4erkWxFJLyFMe26ORov1MzHb77Kkx9YSoxzyAEjZpVNdj46MaguX9Oe3FaUK5DIBCcITVdhLDBnbDqbiMNWZZRU1ODQX0HofjRYscHoIdnoWAW0PeavqrpSIyWwZR/TEH86Hj01fbFthf8ayTcEbFdxNdzvgYkoGB5AfJeykPFbxyjbA3FDUqqnKTUi3F6zm6IAcDeB6ZzzZZa9IrRMsh8MFN1Lh3rtrgoDh9f/7FyXdtcL+3cli4sdaoJ63j+ntf34PvXXFuV29I2yx4uQ/zo+JDs5Hac0/n95/H9/3pnnT7ukXHIuCcDfCvvYHQSPzoeH03+SPUcsV0EF+lot0/RFFgtizu+ugOfFX6m/LDDLZV8YzIM3xr8e1Phhh/rT0bD4PTm04hJjkF0crSDkQtv4l2LuQ7QLO229xYXySEhK0H1NQLBF0xNJpzefBqbntgUvIsyCFnfOBLpIhBIpItACEpN15EjRxATEwONSeNVyltHGB0DVsNixtszHKNLFDDizhGIvCoSZ7adwfsT37fXudiiYmwE67ZhsiuENsHezDgmKUa1nxffxkMSJNAsjVs/uBXz6uYhvSgdRoPR6fOSZRlGg9Eever4PiRJsjdV7pySaGoy2Y0y+Fbe5WcnWSWlZkEFc7MZ/VP7I3dZLhgtY2+yq5qiZxHx0aSPQlrnZWoyYe8be70+vvqtanx8/ce4cOIC9HF6NDc0o+7jOtSsrHG5e01rnc0m+DYeGx7dgDW3rFEVBz1OcHnY8qM4ymOqXjARTALWPbAOa2aswcqRKwEAszfPxuRnJ4NmaK/qZVIKUtxGyCRBIqmFhICpL67Hm8PfxLoH1gXVLIeiQ5f6SkQXgUAiXYReQndGuhobG9Ha2ooxY8bA3GT22XmNoijEJMdgYM5ApExLwa6/78KOv+4AZODA6gM4sPqAkzsdzdIoKikC38bjq3u+UnUu7AytoZ0W8TSjLGrdGRAwLIO2xjbgkrs1F8U5GWWI7aJduCXlJTmYIMi8jLJFZbAYLahaVmV3pxt13ygc+OiA/d9TX5zq82dX8UQFat6+LKBG/moksh7MAhfF4ecTP2PdnHVO71nilWbKoBASy25biqW39uG2KFz54nIcLTnqtvmwHQkQJefrS5Yuzgm0pc56YcxIszQolrr8ubg4h9WzmPKHKUgvSseRb46gcmklKIaCYPLO/TFQB0NbpLV0YSlAKd9Pb2tljq8/DppT3qdaXSTpy0UIlOaGZpTMLwlJ+m/OIznk/iQQQgiJdBF6Bd3RHJmiKJhMJhw/fhyjR48GRVF263g2glWNHgEAaEUA2eqYZrw1AwBwZvcZmJpN2PWPXc676p3+zWgUBzRdX51qDRXFUU5RIwqUPQpkw9pqRYuhBQXLC1zWIXU24eBbeafoGsVQuPjDRQDqdV1iu4iNj2+0N28WzAKq3652+HfV01WY+sJU1XlQnNK7qyPNDc0OggsA6j6sAxfFITYtFknTkjBi2QiXdVGbntwUEnMNby3kOyNJkneCC5cc/gKvmQ8cCZj+3nSPjpI0R+PO9Xd6J4ZkJUXTsMmAqqcviXRB8jqiqzqGH086ySpBskhei2f7ebyk7Oh3DFqzFPL/lk/6chECor64Hh/kfhCyesuMezJCc2GQSBeBABDRRegldEekSxRFHD9+HJmZmeC4ywLLZh1/b+m9KHy98LJRhI7FtcuuRX5JPpYcW4J71t+DRYcXQZZlrEhdgU8KP8F7177n1QPVlqbkaoFPgVKsxTvA6BiMWzzO6diqZVVIykvCrE9nubSKt5twPFyGtvNtThbZsijjX7/8F2pW1aD9QjsEi3NUwtOCm+ZoJGQlYP7B+Uj9r1SH17IezHLq8dWwtkH1OoZNShodRVFIyE/AnK1zVNMWJauE2lW1bufkD50NQlymm3Zaf3R5lCoIUByF9uZ2sDr3SROLc26hAAAgAElEQVQylP5p7oxBAOUenfjsRBxaewilD5dCMAvgW3lIVgmyLNsNR3xpGwAgaItUNoIFo2Uw8r6Rbs1SOpvZ0CyN1NtSXR5PIHjC1ocrVIKL0bquRQwGpE8XgUDSCwm9hK4WXbIs4/z587jqqqsQFRXl9Lo+Xg99vB4DcwYibVYaWgwtiEmOgagTceLECfvrpvMmrJvvnAKnBq2lwWpZSLyEG/9xo12EFCwvQNmiMocdeYmXnMSYaBUx+LrB2Ltir9PuvdFgVCJJHqYhWkR8M/sb1Qa2kkVJ29P00fiV3mVzRgSAE6UnHF478NEBTHh6AvRxetQX12PDkg0ut4yqnq2C9aIVKTenwFhvRMRNEZj2yjTVxso7X92J1FmpTiYWgdLRIKTF0IJ1D6xzOoailWgIq2UhWkSlNiMM1yVsBOux8bMt8unuvqA4Csl5ydjyjIvmyQJA62mlt1w3bZiLvAhWx6JhbQPS70rHwY8PenWvMxrGXvNIIPiCre61xdAScuES6npDEukiXOkQ0UXoFXS16Dp8+DB0Oh1iYmICGuts9Vl1wdWphmvY7GGY8eIMtBhaoBuog66/zv5aelE6rG1WbPztRgchxOiUflu2QmtJlHD+4HknwSWYBbQYWpwc20SrCFmSVWui3GG9aPX0MYDRMRj9q9EONV0Fywugj9OjcU+jEh0yXz6+Y38wu3OiC2SrjG3PbcO257aB1tKopqtRsLwAQ28eiuMlxx2OpSgKq6esBqNl7HNIL0r3OH9v0MfpoY/TIzo5WrWeThZl0LTyOTMc41dKYncjCzI2PbrJo/AQ2gTUfVKHa5+4Fjtf2QlREJ1qumRexvHS4+oXsF3Hy7quUCELsj0aUPdhndfnddxQIBC8pb64HuWLy1X/DgebUNcbkvRCAoGILkIYEcq6LV+u29jYiLa2NvTv39/jeXWf1aFkYYldWOT/PR9UpucHz6yPZgEA2s62QT9KD32y3h4ds1gskKTLD+DOZhIOMLAvbmVexnd//E71sLJFZYCsRM3m1c2zOwqeqjyF0oWlTg98V0YBDkPrGMii7CQm2EgWhcsLEZMcg6z5WU5RJrWUSdGiGHUYDUYnQeYOySJBgoTShaWqD3ybeLMZJZQtKlO1pg8EfZwe09+cjrKFZUqUpuP8Lr3PUC+o/IK59J1z93uWAdHsXc1TQ3ED2EhWqc+SKcjhGNbzES6SgyzJ9g0FAsFbmhuaUfpQaUCmMN4y7LZhXVJvSEQX4UqH1HQRegWB/DH35dyLFy/ajTNomnYrukznTShZWOJgFlHxmwpY/3M5EpSQneBsEMAA8aPiMaJoBHIW56Bval/IsoymQ03Y/9F+NDc02w9VM5OwMfbhsWC1jvsqNrfCzggmwd44GQASxyVCH6d3uTvpSXAByud657o7nWy/RauI0oWlWDtrrYNVuo2ONVG2Jr+yLGP1datxtvasfyYVVknVgc5pbu1iSOq80ovSMee7OR5rmoIJraHBRrAY+auRTvV9XiF6rsPzFaFNgCzIIV9IDpoyKKTX9woGmLl6pr3VAoHgLfXF9fho8kddIrgAwNQcfEOhzpCaLgKBiC4CwesIGs/z2L9/v5NxhitaDC1OJgo0S8P00+UHnD5ej5nvznSMOYv/n71zj2viTPv+b05JiBy0ILCteKZQUVARD3gAdVe0B+360L7tiu22r9p62G63tR522227bR/rod1nD9qTax+rtq/V7lZtVbAooKKAWkEQAU9oa5FCBdQASWbm/WOYIZOZJBMIKnS+nw+f2mRm7slkkty/+7qu3wX8K+FfOP35aemh428cx/qh6/H13K/xychPcGCJ0BCz6liVmxemTAXked5tHzG2iUXRx4LosNRYsG/RPoVYESfzjjDdGCS8kNBqGuJHY8raKWi43ACea722BEMIFtxNrCREMxZmKFwEo1OjMStnlmSFz1kFF7kDiw9gzJ/G+KR/E2WkVGuD8tbkdYirYXBUMFLeazVWcSWEaLNg1uB8jb2BZEhM+3Aa5pTMQco/UzCvfB6SVyV73UPuTghGUQZKteea+sbA+LfG4+rxq+0elzbTgkuoG8MMd5AEidC4UD3CpeMV4vfuLY1+34IAlJ5eqKOjiy4dHU2ii+d5FBYWYsCAAZJxhqf9gvoEKc0m7BxM4SbZY30n9gVFySd2vI3HV3O+Qs2ZGtSfq8fZT8/Kni/6qAi1ZbUIHxHucvwT604gaUWSMMn3N4AyUkhemYypH0wVGjKb1Sf1R1cdlYq3nSfpTDcG0z6cptiH53jEL4rHrJxZmLhyImblzELv5N5In58ui4rxHK+MvjEkqgurZU2TAeD6d9cVETXOxuHQq4fcRm4oI+U2oiSKmuRVyRgwbYBy/xbTg44gOjUac0rm4MGND7pMrxvxuxFIO5Tm+WCEegNoQLCfT5+fLjWlNoeY0Wdinzaf9+2C8qMwatkoTdv2/mVvzNw+Ez0H9dQkLikTJSwCODshUgBo4TPP8Rw4tm2TX8rYcfeRTtdF7Xu3o+k9oXeHj+HLSJcu4HQ6K3pNl06noiO+bAmCkNVIqVFeXo6goCCEhYXJ9nP3QyL27Nr9zG6pputX//gV2B7yyNHVk1dlzYRFOCuHj0d+jPCx6sLq0oFLGPbsMAydNxQnPzypeJ4yUAiLC8OEFROQvVTod5S9LBtT1k7B3NNzUV1YjaOrjuLKkSvycZsFK/XYp2OVkTKOR8SECJnhhmhAUXmgEvsW7ZMeGzZ/mHK1loXCBMPeZMeOx3eAMrSaWfRO7o2qb9WjeDzLuzVUGDh9IM7uPAvKTIG1OKUU0oLwpQwUspZmCYYOTrBWtkNND8whZqG/mpGC3a58HUyA0Gcs6e0kZP5e6bgowbtJ82y5zhkLM9A7uXfre0MrXSdvF2rmIs6wjSzy1+R7TGcNHxWOK4ev4Kv8ryQDGJdQwKglo9C9d3eEjwiHX7Afqgur0VzfDEBoisw2sar3hjeIbR10dLQgLnSxNtajG6ivuTvh7lsyjq9+u1mWBUnqMQOdzocuunR04H4VTjTOGDZsmNfHHfToIPSd2FeyjCcDSJSUtLqelWwtwe5ndrtswMpaWXx/4HvV53JeyYFfiB8mrZmEqNQofH7/57LJKWfjwPgzyFmeA7aZldIEMxZmIGlFErKWZbkcN2+VYKWuJq7MIWaZJbo4sVwfs14QVC0mF8f/eVz12KKbIiBEuXieB9fU2oR2zzN7QFKkqhDVQtk2Zf8uxp8RUhXZlqa3bib7oxaPUvQEE1+nr1LFAvsEurTnP/zGYcT8JkbqN9YuSOByzmWPjo+3C7XWA85ocSysymsR6KLBCiW0WBBTWWWwQN6KPBgCDODscsfKquNVIGkSrHPnaRJe90dKXtmxbnA6XYeTG04ie2k2ePAe+/WRDCmkjvsq/ZCCovF8R+DLBVOWZRXZITo6nQF9qUCn09BR6QTujutonOG8ndZaMLFfl7mnWbaPaLThSvh4gm1mpXqoHgN7YMyyMaBMlKymynbDpkhVIShCiPK4GZe1stg8bjMAYE7JHKTuSMWsnFno3q+7lAJoDjEjPF6Iwl1Iv6BI06INtMcmtjyU6Ya8jQfbxPrMHpz2oxH5UCTAywWfGpSJQuzTsdL/l24rxfqY9dg+fTs+uu8jFH7swiXSS0SzELU0SK6Zw+65u3H2y7Mqe3qH/aYdu+fuVrgm3glQDIX438VLqa4kQ4I0+ugniQXAuX+/rdeFmsL0Z9NR9u8yWGosLpuNe1PbRhpITP7bZMQ93fFucDqdn8INhdj//H6hV5+GBuljXx2LMcvG+CwFcejcobdkccCX6YW66NLprOiRLp2fPa7EkyfjjLZY2DsKN8low8H+nDAQAKfNHRAQVj0LNxSi4J0C6Ud4xO9HIPapWJhDzLDUWJR1ZTYhvU7Nzc8RtplF+oJ0zPhsBuor65G9PFsW8YpOjZYaFZM0KfUvksZhOUx6ZxKylmUJx1MReRTdzv5UTv3M1LA32nH6s9Mun3dsOu1o7S0WtDtGiDJ/nwnw8MmEOjo1Gj2H9MSmxE2Ka3Ap85LqPnfddxd+Kv1J9TmCIUDRlCKixdt8NNlhANg8buUap2iR7aYNJ9adwH2P3IfSz0tBGSjYbrZnADla7yvWyuLr334N0kBi6vtTkbwyWdlIW+Ml7D+tv24Pr6MJS40Fl3Mu48BLB7za7+DLDs3DKYAxMe363PRP6d/mfb3FVwunHMfpokunU6JHunR+9qiJJ9E4Y+DAgZJxhpb9tCDuo2a0wVuFFAytbm2sVah5EW3p2Sbh/0Uc7dcNgQZQJgrDFw6XXAE9Hr+Jxc5ZO5H5fKbM+j5jYQZqy2qRsTBDeNyhITLjz0iRtrin4zD39FzM+GyGelSH45C8Mlk6P2+WgUiGBNNNKYbvffhezY5zlInCw//vYaTuSFVYezdUNqgadmQtzfKZu2FwVDBiZsdo3r7+fL3b56d/Oh2Dnxjs9XncnXi3W7dEphsDinR9TSkjBcrg4ZqrfFTYJhbFm4rBNrOyiaPPIl5ewFk5pC9IR+T0SIx/c7zX+zPdGIxeMloXXDoeKd1Wig+iPsDXv/26fYtOLGBrat9Cxa1ILQR8n16o13TpdEb0u1bnZ4+aeBKNM0JD3f8gtSXSJe4jGm04CwTOxoGiKYx6aZRShBCC7bwobEYtHqWY7JIMKXNNEx3zRvxuBACgcH0hOJYDaSAFIWaghAibC9TS/EiGxLfvfauIXhn8DZi0epJMwJhDzOg7uS9S3ktRpMTwHA9joFFy9KNo7auX8b+LV/SxoUwUJr07CTM+m6EqyJwhCAIBvQJUnwvsE6ielkfAp650w+cP17TdvQ/f69aVkbfxOL/3PIo/Kfb6HK7kXnEb+WRtLBJfSQRldHGvEPD8a6Lxo8J0Y7yun/LVLxlJCZ+diLERXlvF25vsunGGjkcsNRZkLMzwXQS6HZnD9yTe0ykXCfT0Qp3Oii66dHScEI0zBg4c6Ha7tqzaOQu8QY8OQuq2VIVAIA0komdE47kLz2HqlqlIWJWAUYtHgTbSoExCSl7SiiRVh0HOpu6alv9uvtQfi7fxIEgCD258UGja6+UPGGtlUbKlRPm4nUW/lH6yFD3RCp7necU3Dm/jkb4gHY21jbhZdRMUozwPyqx8jKAJxC+KF+qiTJQQiTFRSFmXAnOIGaFxoaoOduJEmjIJfbBiZsdgy4Qt2D5jO9bHrMeZ7WekcwaAxFcSla+xiQXj71nQaSU4KhhD5w11+TxlovDA/z6ASe9Ogq3R/ap20b+0NXZWi6S6c/zjbBxy38wFSZMgeAKhw+WLEUOeGIKUdUIPMi1i1x2cnQNt8jLz3UeeAqLj4NXCq17XWvIsj8baRs8b6vysaahs8FjreqsY99q4WzaWLyNdenqhTmdFr+nS+dnjKIRE44yEhASPPxBarOa1EDY0TDHh5awcgvoEwdzTjF5JvUBWkMi4P0NmJZy1NAu9xvZy6TDoiNT7xWFOSBkomLqbEBwVLDsGa2UxfMFwnFh3QjWSxbEcRi4eiWN/O6aIjox6qdX5T6r3ajkmx3Kqq7tsE4tPRn8C2o9W1IVRJgpT103Fnrl7ZOJSdDYU3zfHnlei2+CEFROQtTQLFCOI1MRXEhExNgKMPwPbDRsYfwZbJmyROS6Kzomiff3IF0eCMBDgrfLzrthRgeAlwYrX0lYmrZmEuLlxqDxQiZxXcmQF9QRBIGJChPRvV/29QAppfu7MIwiGQNJbSQCArCVZ2k+QF94n0dWv+kS17OniTcWImxuH6Z9OR3N9s2S77i0ETSB5ZbJUB9geCIpodcfUYFAACJO5ip0VyF6e3aYxLx24hOAo390XOl0Pxp+5I4xtekT2wD2j77ll4+miS0dHF106OpLoslqtbo0zXO3XlrGcGbFwBPL/J1+aMLMsi4sHLmLQo4NAEARufn9TIZrYZsFhMOW9FMwpmSOzNXe0OW+sbcSVgiuwN8vTBB0jYmoW8IyZQd6aPEmAJK1IQlhcmPS8Y+2YiF+wHwAnEwoNi/88y8sElyjupqydgqA+QaD9aFhtrXVjJE1KVuiOk3tn0RQyMQS1B2pBGSgceesIAtYGyO3Bna4pb+PB2ljpmEdXHlUVinlr8hD7dKxPU3OCo4IRHBUMc4hZVURXHa8CbaJhtVpV9094PgEn1p1wOwZFU4hOjfZ5RIbneWwet1kQfTYOQ54YglOfnAKgbqDi8jgtBjKjXhqF3Ddy23VOTDcGD258EDerbiLj9xkK4aw6vo0XhLqn+jQXmEM7X6qWzq3BUmNB4YZC5K/JB0mqtCW4xUz/dPptHb896DVdOp0VXXTp/OwRI1ZFRUVujTN8NZaj6CrZWoKv5nylmNjzNh67n9mNvhP7gqAI+P3CT7XgWrSNn1MyR7Jvd4wwWW9Y5alXFGDoZlCNiJlDzDCHmGX7A0o3RFGYqTXvzV6ejcjpkaqRNa1QfhTG/nksolKjXDow2i12fP3014rJsbNoqt5bLV0nAFKzYHOI2bU9uAOunqcMFBoqG2RplI6CtT19vZwFsHgMT+c76PFBqDlTgwu7Lyieo000ePDSe24OMSPqkSjVnmZtQbze4nUu/LhQmBQRkFKpnOvvXJG1NAtph9Jw9O2j7TIZ4GwcQuNCcfDfBzUJLhExMustBNUakdTRcfxOqDxQiYyFGR4XIAiaAEkLi0b2RnvHNTInWxfIbhV6ny4dHV106egAAH766SeEhIR4NM5wpK3uhSKWHy3Y/cxulwXVJEOivrIexv5GGO8y4v4P7sfXc79WpPSJxf+iQHEbYWKBX/39V4iYEKHaAJjxZxT756/JR+xTsTIxJqbeial60jUhCVQXViM0LlQxYdDSCBcA2EYWOX8WGj9Hp0bDHGJWFXjgvIuiiOcgXivR2VGMKtmb7ULzZA+9vAB5lNDxutgabSAIArSp1YLe0RFRK+L5OT82Ze0UpM9PV9wDlInC6U9PqwouoGVlmJKvDE9cORGNPzW6tKf3Buf3lrfxbW4wTDIkrn93XfV9IBhCWCRx0xiW7kYDHDBl7RQ01jaiZJOy9tAdPMsjfEQ4vj+s3pRc7XwJkkDKeymd0pTg544v+0eJOKdW8xyvqZnxpDWTpEWrwD6BqNhVIbQv8PEpMmZGtmh0K9BFl46ObqSho4Nr167BZrN5NM5wpr3phfWV9VJtkho2i1B3JO4z6NFBeCrvKYWDnfWGFVcLrwIAqgurPX6q7Y122Y+t1AB4xnapIbIjJEOiurC61R6+xTY+b02eYmJsu2nDjsd34FLWJZlVPe1HY+oHUzH5b5MFe3EHQwvSQCqWf9im1sbPABAWGwbarFwj8rYg3dlkRHR2jH8uXrNVP2WipIiRo8gVDUo4Kyez1veVvbx4vmmH0hT3AM/xOP7P4y73ExtOi+cjvudV+UKK5d2Jd7drCU7TirzGRXue5dFc36w60SQIAo989QiGPD0EBKP+XrHNLJLeTkJ0ajSqjlVpG9SB2HmxHgUXwRBIfCURTxY8iccyHsPc0rltEtc6XQ/n7wS2idUkuAChjYhj0/mw2DA8mf8kek/u7dNzdGW21FnQa7p0Oit6pEvnZ83169dRVVWFkJAQr1fh2tscOahPkNuoCm/n8b+j/xdJf01Ct1HdAAAh0SFIXpWsiPpkLctCw6UGHF973KNpAO1Hw1Jj0RYZg/ADfTnnsmpUadRLo5C3Ok/2HNvEYu/8vXj4/z2MWTmzYLthk6XJRT4UKUXVxOeqC6uxK22XvFeTQ1QqsE+gqruex5Q1EqAYCpSRAmtlMfLFkYpNGmsbkb8632OzaNJAYvTS0YicHgnbDZsUHXSXRun4GnxFcFQwUt5LEWyneUFMcXZOcxTpcs5lZCzIkL3eK7lXXO5DGSlwnLoJirSNiQJ44fjOZihaoUwUCIJA0ook3Ky+qbpN38l98cWMLwSDDPCqzbF5O4/9i/cj8qFIXNx/0evzOPE3F3VxJNBnYh/0GtsLAx8aeMsMMzoiEqPTii8jMIC2hS93WGosKPpXEfLeEepp7U121d8JykQhNC4UP+T94PUYia8k3vKorN6nS0dHj3TpdDG8maCIxhkDBgzw6Y+uVsw9zfjVu79yu429yY6sP2Sh4XwDfjj2Ayw/WhAeF66wLGebWBS8W+DZpY0A9j23T7JHl0SDA5RJEClihCppRZKqQQPbxCJyeiRmfDZDiFY5wDVz+PL/fIktE7ag7kKdonYsPD4cwVHBCI8Pd2nx7rgaaw4xI2VdimwcgiIU4zpDMiTSDqUhbk4ceI7Hsb8dk147IET5No/b7FFwUUYKsw/PRlDfIJnF/NWiq26jPB21ohydGo1ZObNaBYfGKJKt0Ya98/Z6fL2ODHlqCKZ9MM1tA2uCIJB2KA2TVk8CY26bZTzP8RjzxzHIXp6Nw385rHieZEhc3H9RiiDABpdpV7yNx9mvzvqsZg0AwAGVmZU4/JfD2DR2k3QP6eiIFG4oxI7/swP2m069DTX8vBAMgbrKOnw06CPkvpUrtffgrMoFFaYbg3vG3tMmwQUaiBh762sPdfdCHR1ddOn8TOF5XjLOMJvNbVpNbm9NFwAMmzMMKf9UNg2WwQM5v8nBZ/d/hnX3rsPVwquaTQnUjuWY+sb4MwrRIE6gU3ekYk7JHITFhYGkledHGSnYbtgQ0CtANX2Gs3KwN9qRviAdFzMvukyzEyNGSW8nydIRnY0+olOjkbwqGaSBBGWmhFRAF5eB8hPSFvvN74fLhy8LgtTKwXq99bXXltUK7oduBIjYhDrlvRT4BfspUiyzl2UjaUXreRMMITWdVnsNvsR2w+a2WbIaBAivTSIK1xfC1MOEWTmzXDaw7j2xN/yC/dAvpZ+mmjg1OCuHQ68dgr3RLouW0WahN92ABwZotn4HgPJ/l7fpPLTAWTmkL0j3aeqoK27HgtDPjfZcY7GvX/7f85H5fKb650vle4r2o0EaSNDdhPt70ppJyFmeo6lO1dZoa3MtJkmSnTq1ENBrunQ6L3p6oU6nQUvfLK2raeXl5QgKCkJoaCiuXbvW5vPxRerPsDnDEDEuAhtGbFCdsIqiQLQKz1qWhXtn3ovTW057PDbJkKD9aOEYhNx4gqAI2G7YBHOGBekgKAI8KzjcOadOcazKZJcQHPUaKhuE9D0X4oVtYrErbRd4jlcYS5zccBLZS7OFdDGWl9nSO4sVS40FOctzBIHX4ppOMITcxIGE0FOqUTiXc38/h3P8OeWpkwTKtpd5rAkb++exkpnH0ZVHFRMigiIQFhcms+wHXLsXOjqaObtBeivOtLgvOtMWNzTezuM/j/4HJEli+MLhIGml3fX53efx0aCPkLIuBcMXDUfBuwVejwMo00VJI4nJ70xG+IhwbB6vrDd0x6Ws9huEuIPn+FtuRqDje7z9Dnd2Jdy3aB8IkpClRmtl9uHZshRrzcvg7TA1nLhq4m25Z/VIl46OLrp0uhBaRdAPP/yAmzdvYtiwYV7tpzaer7DdsIE200LalAMkQ4KgCNlkn6RIlG3XljZFUAQe3PggAnoFYMuELYoxrxZdhcHfIGwL9ca7jbWNGPSbQSj+pFjqo0QwBFLWpQAAmuqaXDfsFcdqmZA4WrYX/L0AB18+CKBVWGYvz8ackjmqk4KGygbFYxRNSf1mGi434JvffyNfVXYxObHdtOH4P47DZnE/Ubor8i6YQ8yoLavF0dVHlcdpuYZimqSI2vk7uz9Gp0aj9PNSSXB663To6L7I2bmOs5dGqxthwbsFLoWqaNQxK2cWCv5eANhVN/MKrplD+IhwIapnoNrUcLmj4KycIs1Xp2ujteG7O2gzLSwwvZ0kLW6VbivVZCnfXgY/ORhxT8d16Biu8GVtol7TpdNZ0UWXTpdBi3i6fv06Lly4gJEjR0qiqT0RK1/9kAT1CVJMmikjhcf2PIatD2yVPc7aWOFHX8U23PlHm6RImLqbEBwVjKQVSYL9sAMHlhwAwQspZ2L0wlEYZS7OROGHhdL2/e/vj6FzhyI0LhSVByqxPma9kBrJA6AAxwAIaSAVaYeisUTFzgpJcDlCUITL6AHjzwiGHw7YG+0I6BWA6qJqZL7gnbWyJ8FFMARC40JRuq0Ue5/ZKwlOZ7KXZSPyoUi3q8dqhiXFm4oBqPcQ04pjTy/WxqLuXB26D+iOqyevIuflHM2uad7gLrVVNNK4/8P7pegpZ+PAg5f1yiKNpCZ7fjGFlfFnYG/ygYpTO2cjib6/7IuL+y56db1oP7rNpiE6dw5aIzDeNnx3hb3RDtpMI3tZNsAL3/23QnABQM+Ynh0+hjt0y3idnzv6UoFOl8GTeBKNM2JjY0HTtOb92jqeN5h7mhH7ZKzssbin4xCRGIFJf5sE0thaJzRx1UTFxJcyUZj6/lTJil3EdtOGog1FAICwuDAYAgyy57lmTlGDIAqj2rJameAChDSygF4BaKxtRMaC1vomzsqBYig88L8PYOZ/ZuLJgifx8NaHFefD2YTowP4X96teB1ujzWX0oOLLCsVjlInC9e+uC05+LkRRWyAMBMYsG4NrZ68hY777Y4vXyxGxzkOs+VEzLFEeCDiz/Yzb+jc1RGOSe0bfg5hZMbhn9D2ITo1W9OXyJa5ei2gcEp0ajbmn5+LRrx7F2FfGKpoT83Ze+PXxNG8igMuHL+OT0Z/4XEASBgIJLyRg+ILhuPiNd4JLpLPXxuhoR9NnWAs8YL9ph73RjsznM7Fz1s72Cy6NWiZ0qPY+lL5G79Olo6NHunQ6EVprutRwNM7w9/fXvF9bx/MWy48WFG0skj1W+HEhxv1xHO6deS/sve2I8I9AUJ8gGHoYwLIscpbngGIocCyHpLeTENQnCCP+MAJ5K/JkxyneVIz45+KFGiAvGv9eSFdvtHti3Qmc/vS0MtJmoBDUJ0jqMRMcFe2McFUAACAASURBVIyUdSlS82GxWfD17667jpawwObxm5GyLkWWaldbVosjbx9RbM7zPH6q+MltvzPp/NzUnTm+hv7398f5veeRvyYfuW/kejyus0OhcxrhlLVT0Du5t8f0P/tNO7KWZAEQomzTPpjW5t5PYurh3mf3dki0y9VrGTx7sBSpE/97eKrSiZBneU1mMP73+KtGRNsNBYADjv/juOa0zL4pfXE5+zIoAyW9r3o9V9fGsX6rLTWUWrBbfBDBpaApnbctdWe+wpfp+HpNl05nRRddOj8LHI0zfImvRFd9Zb2i3xPbxCLvb3kYuXwkDN0N+MXQXwAATn16Cgf/dFBIMbSxuO/R+5C9TDCjcE6/E6k6VoWYWTEY86cxbiexlKG18W/4iHDVbUo+LVF1kVOzR3dMfxPNIi5mXnR7LcTaIDHVrnRbqRBtUpmk83YeuW/kup24kAYSE1dNRMOlBvcGDxSQ+lUqvpjxhaaVZ7GvlOPkWy0FKX1+OtIOpUn1V6KBiTt4G4898/YgoFcA7hl9j8dzUSM6NRo9h/TExlEb21V47w2nPjmF/tP6IzQuFOYQM7554RuvHAedqT9X78Ozc4CFkPLoRT5qzOMxmPre1DYbn+jcmThGYESRxfgzKN9Rjvw1+SBpYfEk8ZVEDH5yME6+f/I2n7EKHZN5e8fCcZxe06XTKdFFl06XwVXkydk4Q+t+WsbzFUF9glSthvPW5MF8txnGRCMAISKWvjBdJq7E2iB3dQaigDIHu58oTv1wKqJmRgEQIlVD5w3FyQ9bJxmRv44Ual9UJtJRj0SpOvKJfyKhcaGq9V6OOKbs7Vu0z6XNOc/ysF63Kh4nKAJxc+Ng62fD+EfGAwA+GvSR29dOUiRsN21umx3LxuZ4pB1Okzk9qjVLZptZbB63GSnvpWBWzixUHauC5ScLjrx5BCRFwt5sB8dxcDIEBG/nsXXKVgydNxST1kzyfEIqBEcFY/JfJyuaaQNCrx93K9+EkQDfrPxcEAzh0jzA0alyzJ/G4OyXZ9t03u2CBBKeT8CJdSd8VydDAhETIhT3sk7XwFpnxdGVR5H3jpAlIGv23vLBPPjyQfdupwyE3nF3KGKNaldATy/U6azookuny6AmntSMM7Ts19bx2oq5pxmJyxJx8DVlFCpneQ4m/GcCLD9acG7vOY825zILdQgpX6IwcBW9AoQf5YgJ8qaZk9ZMQtzcOFQdq0L4iHD4Bfvho/vUxcuZrWcQNjwMOctzZKl1zily5hAzpr4/FekL0gV7d5WUPzFqVl1YrSl1EBAiT+P/Mh53Rd4lTS6O7hEcBxsqGzRdt+b6Zs0pRJyVQ8WOCgQvaRVdrlKQ2GYWe5/dC4IkpPS0pLeTEBYbBtbGYuuUrYp9RE5+eBJxc+MQHBUsE7Ti6/IUdYl7Kg7ggaylWQpr/qtFV4WCfggF/gRNgKRIRD8ajdOfumhJ4OGWF4XcoVcPud/QAdqPBs/xXjVtdgkHDHp8EHoO7on0+eltOyYJWXRw6JyhutjqopzZfga5v8tV1B2q4TYl1oPgCo4JRm1JrZdn5xsoE4WUdSld5h7WRZdOZ0UXXTpdBmcR5Mo4w9N+bR2vvQz7v8OQ+9+5qsYWl/5zCQf/66Cm1DSSJpHwYgIK3ikAZaBwZvsZ9J7YG72Te8N2w4bBswe3RscAgAIohpIs4KuOV8km8sFRwbJoTvLKZIULojhu9tJsYZIrptYtSFd15HNMO2T8GVTsqEDemjxZvUzlgUrXrl40FCk1bBOLPhP7IDgqGIUbCpG1NAuggOLFxUhakeSxns1+0469z+7FkCeGoHhTMXieB9vEgjSSIAhC1R46b00eYp+OldUxTVk7RXWyL0b2xNeTvSxb6u+l5jzpyIn3T6BXYi+pVszWaANBEKBNtEtx60jc03GInB6pEGnh8eGIfChSeh9Ep8AtE7a4nGCOe30cDr12yKNVtpaaLYImMO71ceg5SHBV+/ajb3Fht3otoTdUHqjE3Ql3I3VXKrY/tN298HJy3QSgSMcs3lSM0ctGd5lJq46ApcaCA88f0CS42svtElykgUTawTRF78XOjF7TpdNZ0UWXTpfBUQS5M87w5Xi+xNzTjF+++0ukL0qXPc7ZOZzfeF45MWAAkiTRa3ovfLfzO6H2wM5h0AuDULC6AJyttXfTnnl7QFBCI2HeziNuSRxMPUwI6BsA2kDDv5c/fsj9AR8N+kiKUo1bPQ4DHx4IgiBkf5GPReLmtZs4+vpRxXk6W9mzTSyOrjqKSasmuUw7tNRY0HdyX0TOiJQahQLA+pj1qkKENAi5/DzDyyb+lEmwFz+54ST2Py93Rzyw5AB4zun6UUKTZMdjsE0sijcVY8yfxiD3jVww3Rhwdg7JK5PRWNOoMNagDJTC4l6spdo0ZpNboSemUAb2CfQYPSreVIzTW04L16NF0PLgpYbZWuzmXaXGOT9edbzKdVSQBAJ+EYBnyp7B5ZzL2D13t9d9ihzh7TwOvXoIJEkKRicu0ki9JfvlbDAmBpyNw5An5SJagYYhxffqVosuXy7q6ChpqGwASXft2iCxjUNXQu/TpdNZ0UWXTpekvLwc3bt312SccSf06RIZNkeoO/vmxW+EqI+dQ8ILCcj/a74yAgYSM9NnovvA7rD8yYKGSw2gzTRObzitqJfi7Tx4Oy/VYhX/vRgP7HsAhh4GNNU24Ydvf8CRZUcEC/mWienBxQdhiDbA0N0AjuPA8zyaf2qG5YoFpgQTohdHo+xvZVLKWv+F/XH2n8oanpPvn8S5I+dw88xNEDQB3s4jcnEkQieFojqzGhXvVMgeD5schutl18GT6tfWVS0Yz/P44acfkP1Stsd9CIbAtB3TcOHLCyj9sFT+HEng8F8Og7NykoDcv3g/Htr+kCIixdk4+P3CDzabTSZMTXeZwBPu7w0xhdIcYkbyqmTVuisRiqHcCjOe43E55zKC+gS12+TBrUsb12oMEjEhAgOeHoALGy+AoilYbyhr67TA24XGy74SXADAW1sFafGmYvzXjv/C5w983ubjsVZWt4fvAjgv/Gh1dO3M8Czf5e5dPb1Qp7Oiiy6dLoMonjwZZ7jar63j+Zphc4YhakYU6ivrEdQnCM3WZhxddVS5IQkYeAMCAwMRGBiIa8evYc/CPdqc9wwU/O3+uJZ3DfsW7QNBEgpzDNpIoyfdE+FRQh1Y6bZSHFx0UFavlVyWLJvEHO12VNVm/XrhdeEfzcJ/zr17DqMfHo0jfxWEnuPjSU8lwWK2oNBWqDiOO3iWR11unWDS4aEuizIK/b3KNpYpnmOtLAgDAThoCN7GY9fMXbj7/rvxQ8YPkkiMWhKFC9UXwF/lwfOtfw2lDZK7pGJsPwo8x6P/H/qj+HwxcB5ADNB3Xl9c/NdFwaiiSX5f2ZvsbiMybDOLr3/7tRD9JEgMf304Iu6PAEEQIElSEa10+0cSGPnqSBz5o9KiXxxr05hN4MELgpvjce9/3YvSz0vBNnZ8g1dvIRkSB1892K6I3KjFo/TUwk6OcyuHpBVCm40hc4fg5PsnhRTiZk74/HE8SMq92Y/PIOBVU3evDs0QXaqWS0QXXTqdFV106XQZCILAjRs3PBpnqO13J4kuQEg1NPcUfihpK40Bcwfg7Dp5FIlr5qRGwqJVuSvBJaYeSvvaOLA2FhkLMlzWuzhawKtZoWcszMCckjkIjw+XmgFHTo9E7lu5Hi3KSYZE1bEqhdMfyZA49b+ncHTlUdkkmaCF99Jdk2LezqNobZHqc6JIkra18Qg0BII20rA2yyM08b+Lx4l1J5THZ3l8v+t7jH9zPCLGRriNKFn6WnDqhVOKx+luNCavmYx+Kf1k+5ZuK8V3m74D4yekxEWlRaH8i3KQtCDceJYHx2qYANoADhyOv3Ic/Sb3g/EuoxSlFP+c/1/tLyQlBIOvD0bJmhJVsSLeS6xduHeKPynusImjSzROVq3Xrbhy5Iq2Q1KEYCPv8JEgjSQG/J8BuHnzplfiVef24BzNEh9z/v6S1aWSkNKPxftd0+fNF3TU54YAnsh9okvVconwPK+LLp1OiS66dLoMPM+jvLwcw4YNc2uc4UxHiidfETAkAISBkNV10X60lKuvZlXuyH2/uQ9l28qkVd6Y2TEuDQZEJ7mkt5OkSUtDZYPiGvE8j4bKBlQeqJRWkFkrK1xPDzMJtokFa1OmlLFWFnmr8xQTfZIice/Me1H6mTwV0BnKQGHE70cgf00+CIqAvdmOSasnwRhoRMbCDKmuhyAJoXGw08SKNJIY9PggVB2vwuXsy6pjHH79MGbnzlYILufJnmrKICc4SIp2+GJNmzQhbKH8i3LMypkF2w0bKnZVuO8vpgJv58F+zyI0uu0W0ZHLIzFu7jgUfVyEoyuPul/1vw0fn8HPDEbx+8WeN/Tm3Eig78y+uPjFRVAGCjzLY8jLQ/DjzR/B33AvVB3/vEXsFaX2Z7FYcOrUKe+ilRr/vI6C3uGiU4pm0cJ3UfKqZEQ+FIkL6Rfcu5e6ubXFBRufOmzeCnjg+nfXu6To0mu6dDoruujS6RLwPI9r166hX79+HWac4cytEmscx4ENENIp7E6WfWIkym0dDoCybWWYlTML17+7jub6Zux9dq/q5IFkSHAsB8pAIXtZNowBRkSnRoPxZxRRNFE4Oa8gqxE2Ikxy77I32sFaWXzz3DcAJRhjiC58I18cify/5itSHQmKQP+U/h5FF2tlEftULGKfikVDZQPO/XQOcb+KAwD0HNITm8dtls4BaDHlYBxWt+0cNo7Z6LbZKGfjpL5bomOgc+rSlLVTVK3aB88ejC0TtrSmOL2dBNpAK4r5xeL3wD6BqlG3W4U5xIzRL41G5PRIbB63ue0TTicL9nZBAZPfnYyw2DCc/tdpzRb/WuBtPC5uvQgAYHkWk9+dLLyPHYyjAZDjH8uyKCwsxMCBAzULPk9/jpFOLVHPtvy1hfaKPGudFd8s+EZ2j2b+PhOZL2SCMlDtSn2dvmM6KAMFa50VX8/6WvVedu49SNAti08/s8bFtwI9vVCns6KLLp0uQXl5OYxGI3r06OH1vndieqEjFRUV8A/1x/0f3I/dz+yW1SQ4RkymrJ2CjIUZIEhC0fSWZEhUfFmB/HfzAQKqaYiUgQLHc+CtvDR5EF3xrn93XXCXc5jQ0H406s7VeWwmTFAEfv35r9FY24hNYzfJn2QB0MCDGx+UemvlrclTHMNusaOpvknRrNkZjuVQ9HERYp+KRXh8OC4XXJYiUE11TcrXYKBht9pbI3Ma52VsMytdGwCqqZe9k3vLrNpFK3ZZitPvM0F3o2G/KZ+ZiamdDZUNIClSatDqCMEQ6PerfriYqWxWTRpI1UaolhoLqgurAQjNkevO1SF8RLjH1fDgqGCkvJeCjIUZICnSa9OMhOcTENgnEPtf2K/JSh5oSfUjeVn/I4IR7qW+k/vCUmMR0mZ9KLpksEDmi5mIfCiyw2tixMiQc4SIoihQFAU/P78OHf92016R11jTiMvfXhbSkJudDs5CLrjUWgS4gTSQ+LH2RwTeF4jr1667XDxwvg95lsfdj96NK1u1pbb6GoImYAu24fLly7c8IqqGL38rddGl01nRRZdOp8HVl7lonBEQENDm496pouuHH36A3W6HwWDAoEcHoe/Evqg9X4vvj32P7OXZiibEvZN7o7qwGjse3yETVqyVRd47eS5rvigjhakfTMW+5/bBamudUJMMieP/OI7ja4+rppeFjwj3OOkV03psN2zC+Todh6KFH08xNS9lXQp2z9utWCHOXpaNCSsmgDS21KepvBTexiP3jVzkrc5DyroUVJ+txpG/HpFSH53TCe1WuyA221AwL9qIi/92rk1zthivKakRIj5OOAou2o8Gz/OYsnaKtK8rV7/E5YkYtXgULDUWFG0oQt7qPEGEsJxq8XzptlKkz09Xfa1D5w3FpDWT3L5ex95qVwuvImtZFgAhEsuzvMuJLEETiF8UD3OIGb0Se2FT4iZNQilubhxOvi8X2LyNR0Av4XPeWNuIQY8PQsmWEiGV1NIBIQU7UF1Yjb6T+/r+2DoS7UlJdEwpdF68UMXLgBfBE4hLjoM5xIyLVRddb+j8U8ADzcXNQpTNh86cWiAZEmNWjUFAeIDX9Zzt2d7d76HFYkFBgTJN2lVqrbPQe+ONNwAICxEWiwWNjY24cuUKGIYBTdOyv+joaDzyyCPSGFu3bsXWrVtx5MgRVFVV4eOPP8Zvf/tbxbl8//33WLRoEfbt2weTyYTHHnsMq1atgtnctYxIdG4fuujS6dRcv35dMs4oKyu7Y8WTM+IPjTssFgvOnz+P+Ph4nDwpTD7NPc1gWRZbp25VjayYQ8zoO7kvUta1RCVaRNnIxSNx7H+OqUe4TEJj5IgJEYrJsK3RhoK/Kn8oKROFKWunIDgqWIqwiT26CJKQ1SfRJloSVGpRDnuzHTse3yFrjDxz20zsnLVTNpEmSAJZL2VpmrCzTSzSn00XInc2XrpOJE2CpxwEAg/YmtrWw8bRaMT5nMTnxAmhWEvmEafLYw4xI/b/xirEBwB0799d2mb0ktGIfTpWYSAgYqmxIGNhhktxefLDk4ibGydFvNTMCMSxzCFmoany9EgU5RSh37B+uHb8GtIXpIOgCLBWFjzPgzbS4FleJgBtN2zS++wOykShf0p/FG8slt9LLXWMmYszUfhhq7tl71/2xqVvLrk9pk7XQozaumyg7gPE7znx/r2co17n6Sp9trakFvG/j8fxvx3vkPNTY8J/T8CgxwbdcY6F+fn5SEhIUDzuKrXWWfj98Y9/hN1uh81mw8GDB1FXV4dHH30Udrtd8efcKmb79u24ePEiHnzwQaxfv171/Ox2O1JSUmAwGLB161bU1dXhhRdeQF1dHTZv3uz7C6Lzs0QXXTqdFqvViqKiIsTFxYGm6VsesepIscZxHIqKihATEwODwSB7rv5SvTKyQpG4kH5BcsVzjEqIwiBvlTJtj/QjMePTGVK61sjFI5G3Ok9anVWzPKf9aEz/dLq0+u84lphCJ3stDv2oUtalYM+8PZKTIMEIq5hsEytNnNLnpyN1V6pCgDinTHpCbXXZuSdPW1LTKBMFgiBkkzFH4SkKRwAKgwxP2JuEbR1TF/un9FcVXU31TbL/d2xyLIomxp+B7YYNTXVNLtMURaqOVSE4Kli1Pk2sXXMer/ug7vAL9kNYapjiflMTbYF9Al27wlGAoZtBGlMtPRIAWBsrE1wAcOmbS4LVdzts4dVwlaapc2twJf7FexSkeqq0L6C70Zi+ufV7zlJjwYn3XNRXuvkaqTtfh4QXErw2w2kLJEOi15hed5zgcoer1Fpn4uJaayvPnTuHu+66C+PGjdM0xtatW0GSJG7cuOFSdG3btg2lpaU4e/Ys+vXrBwBgGAaPPfYYXn31VURGRmoaS0fHHbro0umU8DyPoqIiREZGSsYZtzpi1V6x5u5Hpry8HGFhYejevbu00icS1DtIIRasN6zY/9J+8C/w0iTZcRIOQNVNj2vkUH+pXjbRBoARz41AeHw4ds3eJTkkSvvYOSnFS8RxrKS3k5C1JAsUQ4FjOZk44XkeJE2CMBDg7BziF8WjcH2h1MgWEOqltj+0HUOeHILiTcVtqiHqSHiWR1pumqwOSk3kunNMY7oxiJgQgfN7zqs+T1IkCjcUouCdApAMqSoospdlq9YbOUfXxJRFTylO3Qd0d9kaQIyiAvKJsOM97Hy/qU38ROG999m9UtSNoAhMencSIh+KVEyw1cRs3bk61fMneM+umVohjUJqU1fscXQn43hvObqiOop/NbfPDoGDTHA3VDaAYiivRd759PMY9+dxOP6P4x1Xf9gCSZN3bCNkXzpachznVU2XFqfDPXv2ICEhQRJcAPDwww/DYDBg7969uujS8Qm66NLplJSXl6N79+6yNILbEelqC57G+/HHH3Hjxg1ERUWpbm/uacbkv09G5nOZMkEiiiPnSbJI3FNx+O7QdyjbJm8InLU0C0DLinHLRDtvdR5Sd6Wqmx6QwJYJW1QjIKXbSpG9LFtqDJy8MlnaRq2X2PG1x1WvI9vMonhTMWblzELVsSrsf2m/QvyJTos+c8XTCEETqlbMougo3FAoOBbSpMvoHMdyqDxQ6XIM6w1ra68yFyYlPM8r6sbUJqRaJqckI5yrmlAkGRLVhdUwdTehqrAKOctzpIlw9PPRoBIp0DG0ZnHiWHsICBNbcV/nYziLWXOIGbVltarHHfv6WBx+/bCm+jzKSCHxlUTkvpmrmERTJgozPpshOy+djsdx4Ye1suC5FkMfJ/Hvqj0GZfIgiCgI3xUOX2mUSZi4D5gzANRPFM5sOyOlxTouFgFClLYtQo8xMbj+3XWfLQi4I2lF0s/invVWdGnhzJkzGDRokOwxg8GAAQMG4MyZMz4dS+fni97oQKfTIRpnDBgwQPb4rRZPQNscmdyN19TUhPLycgwZMsTtdlH/FYU5JXMwcfVEqUGyiDhJrjpeBUuNRXrcUmPB2Z1nnQ8FgiQUE222mcW2B7ehf0p/xdIM18zB3mhHxsIMxfHFCb/thg1sM4vs5dnSNtJkyelY/af1B2VU/oCKtun9Uvqpij+CJBAzK8bFFXI4jkH71xxpIEGZKBgCDaD9aMQ8oTw+28hix+M7cGa78of45IaTyHw+E2wzKxNcpFE4B9qPBu1HY/iC4e77BgEeU+XYJlbWHLvqeBWqC6sV11grOx7fgQNLDijEra3Rhh2P7cDnD3yO/c/vh73RDmuDFfZGO4pXFGPP43uwPma96vVwhVh72HdyX4+TRLGGTNwuOCoYQ+cNlW0zdN5QJPwuAfPOzMPM/8xEwh8SQBpJ0H40SAOJmCdiQPvR0vua8l4KEp5LwNzTc5H4SqLsPU9Zl6LpvHR8h1hzKN5bbBOrKp5F8e0cMaJMFKa+P1USUWpQDKVqdjHipRGoeL8CpZ+WgrfxsDfakfR2khRVu5h5ERczL6KxtrFNwkk8V9rQsWvcTDcGYXFhHTrGnUJHuBdeu3YN3bt3Vzzeo0cPXLt2zadj6fx80SNdOp0KR+MMNVHSGdILAfXz5Hkep06dQnR0NIxGo2wcNcwhZkGQvCA/lr1JaUwRnRotiR7nXku8nVddfuGsHMq/LHf5Gpwd+tRWoB23CewTqJridnbnWYx8aSTy3pbXnDnWgk1ZOwXpC9LljozNLMq2l2H8W+OR+5dcKZ1x8OzBQloiQ8LebMfol0Yj/518TavUE1dNlCzexbHDh4fjwJIDskkg28Sqpt1lL81WPW7MrBgMnz8cths2VBVWIXtZtk9qUSp2VuC74O+QtTRLqMOzKR0atcBzPDgbJzsnxp8BZ+eEx1Vq+0Q8RVg7gklrJiFubhyqjlXJLO8dxVz87+Jl7+P418Yr0hfFPmRiXzc1E5Lbya02+OkIXNVlOT5/+I3DHj8P9kY7GH9G1h7Dsd9dUJ8gJK9MRtbSLNVjqT1G0iQK3i6QakwBIX34wJIDaLjYgGP/OCY959xLzxOEgQABAsPmD8OPJT96rEkVX0tb4ezcHZta6Gtu3LiBhoYGjxGo6GhlLao7XM0pblezb52uhy66dDoNPM+jvLwcsbGxoGnlrXurvxh9nc54/vx5BAUFITjYfc8kR8whZsTMjpEZC3A2DuBbJxniZNiVe2Dy6mQYA4xIn5/uVfNbR/c+QL1Bs+M25hAzhvx2iNIGnOWRvzpfcXzHVJno1GiYepiwK22XPILEkIhIjMDc0rmyid3oZaOl5sixw2KR/47y+GoE9QlS1CbFPR2HoD5BqmOriU61a3j609MY+/JY+AX74fP7P9cmuDQ0FM59I1f6tzguaSBBmoQJomwcSqhtcH6PSAMJ2kjDer21bs7gb8DE1RNB+9H4+rdfez5XqNvkA0pTD18Jm+CoYLf9xdRqzFyN6+65201nnvA5m7IkrUhCWFyYdA+UbivV7D5I0IQk8B3TTsVFDHGMxJcTcXHfRVzOduE06IDL9N9mTuHa6mzC4/pEgahHolD+73Jwdk6zgQbP85i6fioyFrh2GXVH8srkO/Ye9vXiwbfffosvvvgCf/7zn302bo8ePVBXp6wXraurU42A6ei0BT29UKfTQBAEhg0bJhlnqD3fGSJdavtdu3YNNTU1GDhwoFfHstRYULKpRP6g0ymRVOtkeMraKaD9aDD+DCgjhcn/MxlxT8UhOjUaaYfSVNP81BCtlAFIaYyOxxdTtRy3KdxQiFMbTqkez1kMGvwNilSZ0LhQ8Jx8O9bKoqlOcPFzTEETU9IM3Q3SeblLPRK5+u1VWcqklrHF7V2JWkBoPN1Q2aCaYumK8W+M13TOztAGGjM+m4EZn82Qv5+sYFqR8EKCLJ1u4qqJSldHlkO/lH4wBhmhFWcRDgiT7vUx67F12lZsTNiIz+//3OtURJ3OiWO6sZiOmvl8JrZP3471MetR+HGhosbTHbydl6VSi9HznOU5sjEOvnxQk+DqKCgDhfJ/l8uiZ1rg7Tz2ztsLgpSLbIJWpn87k/BCAuKejnO7ze3E19GihIQEbNy4sc09w9SIjo5WRM6sVivOnz/vdcRMR8cVeqRLp1PhzoXodvTb8gVWqxWnT5/G8OHDNbksOeKqqFx2/BtWVOyqQGCfQFVjApHgqGCkvJeiSONzhqAIpB1MQ3VRNdbHrFdt0OzoQLY+Zj0IilDUCrmDY5UTeOe0InuTHRzL4asnv3JrbQ4IK+PNDc3Y/+J+l8IIAI6uPoq81XmKYzmPbWu0ged4xdhqaZCA+55ezpAGEhNXTUTc03EI+EWA1xFI1sYiNC5UcFszUrJ9KQOFyIciEb9InnpnDDQqXALNIWbUV9ZrGtNZhIuv1ZWpx61MRdS5NdSW1crSPV19N4kR1awlWSBo7ybizgY2Wr7/bjUERYBvbuPv+jJD0gAAIABJREFUEKdMg+TtPAiGUJiAiFAGCvGL4ts2XieF4zivfys9MW3aNHz66aeorKxEnz59AAA7d+5Ec3Mzpk6d6tOxdH6+6KJLp8vQGSNdPM+juLgYAwcOhJ+fn9fHUkvpU6Pg3QKc+OcJJK9ORtxTcS4nu6Joyn0zF0UbilS3YboJblzO1uLp89PRc0hPBEcFwxxi9s7amRYENWWgVJ3DnM+vurAaXz72JXgrD6tNmMS5m8hbaizIXp7tVnABgkmGq2M5jr3j8R1gm1jJ6l7cXtymaEMR8tbkyerqJEv9FUk4sOQAQAhpTM7XdsraKQjqEwRLjQXRqdHoOaQnNo/brFl4Jb6SKKXzuUr3dE6nU7O8v5h5EVnLsjyORxpITH1/Kn46+xPSF6RLr3nkiyNdTohdpSLq3Pmo1Wg5N6seOm8oRi8b7fa7iaRJl20MwkaE4eqxq4rHr34rPCY6S2r9/vMFWmuuPLVmaAsuTXUIIOX9O7+tga8jXd4aaZw+fRqnT59GU5OQFXHs2DH4+/ujZ8+eSEpKAgCkpqbirbfewsyZM/HGG2+gvr4ef/jDH/Cb3/xGt4vX8Rm66NLRaSO+EF2XLl2CyWRCWFjbXKdcmUyowVpZoU8XDykVxXECBbS6gyW+nIiST0tUj8nZODTXNyvSYNhmFpvHbUbKeyky4w53q9B0NxqslQVBEKCNNNhmFsMXDZcaA7t6zZdzLisEi7uJvLcr4q6OZQ4xw9TdJJhWOFwbx+3NIWaMXjIasU8rzRlKt5UK/dRcTKJYG4u9z+5VmKC4jECSwko3SQsTwvsevQ9H3jqCPCYPnE1uKuIs/tRoqmtCxY4KnHj/BAiK0JT6xVk57J63G7xVeE3iPnlrlM24pX1UUhF1bj2WGouqdb8rxBotgiLA2Tgkr0xGr7G9FM2qT354EnFz46TosFqk23bThtDhoag+US17nGRI/HjqR9XxD//lsLBNi9CPTo1G0ookZC0Vomb2m77v3TX02aHon9If3x36TnNtKCjATR9yn0AyJGbnznZb13in4OvFUG9F1+eff47XX39d+v+1a9di7dq1SEpKQlZWFgChEfLevXuxaNEiPProozAajXjsscewevVqn567zs8bXXTpdBluR6SrPTQ0NODKlSsYOXJku44jRVc+LkLe6jyhP5SbVL6spVmInB4paz5qa7QJwsdES5PzlHUpyFiYIWuyCwAxs2Ow99m96g5hzazMuENtZdjgbwDHtjiO9Q5SRI0K3i3AiXUnkLIuRTVd8OSGk4oid0AQlWoTeUuNBU11TV6tQLsTBYw/o4g6eRIR4uQ2fUG6quCSnAJZDlwTpzBBEY1EdqbtlE0saT8a414dh26h3QCg9X1pEZdirzPbDZtkZCHW3zlSuq0U6fPT21TAD0ASXI5QBgojfj8C+WvyFfeQO/Hnye3OFa4WEO70KMDtonBDoSzd1lHIqKEWuc58PhORM9WjAFXHqhAzK0aKDp9PP68w0XEWXIAwQfeUnsdZOaQvSEdzQzOyl2eDMlDCeRFQTcFrKyRDYvSS0TCHmFH1bZWmfWgjjYQXEpD7Zq7nc9FgluMMZaRAkASmrJ3SKQSXyO1sjvzaa6/htdde87hdr1698OWXX7bjzHR03KOLLp0uw+2o6WprpMtut6O4uBixsbFe9xtR+/Fytr6+WnRVsDlvVvlFp4DqwmpFeiAPXpYuN6dkDuaUzEFDZQNYG4u6c3XoPqA7vpjxhdsIiBj1CY8Pl61C83Yeia8kImJshDQZrjpepYgaAUK0JH1BuiLFz50t+6iXRikm2NWZ1Tjy1yMgGRI811ob4ZxmSPvR4Dle5rKmNlkXV/pBtO4HKEWEo2ubKGgphlJ9P2gzjbF/HgsAOPT6IdhtrZNaxwhaaFyoYoJmv2lHzp9ywNk4EAZCIX7EXmfXzl+Tucg51qxZaiweHdNEQ48hTw7ByQ9OutzOEc7GIfapWOmedOdeKAqmq4VXkb08W/U83SG64JGU0CaAIAghWmjnMOqlUYh9OrZTii9vv1+0CFZLjQXH/nEMx/56TPY4Z+WQPj8d9Rfr0b1/d0RMiJAdo6GyQdXQoeLfFerj1AoGM5UHKoVoFzxPumkzDRCA3e45YkWQhGAP70W9o7eQdOvnL/KhSOT+JdfjPrabNlh+tIBglJ9HX8DzPNJy0jqV4PJ1emFH1HTp6NwKdNGl02nw9KXdWSJdBEGgoqICffr0cenE2FbE9Lbw+HAE9Q7Cfx79jyKywlpYXD542W26naNwcoyIsc2sIq3QGTHqU7qtFNnLBYFkv2kHZaJw5K0jCFgbgMA+gbiYeRHN9c0uI1BsE4uiDUUYvWS09JgrW3bKQCH2qVjZY5YaCyrWVAhiouV1UkYKHDhF6g/P80h8ORG5b+aCMlDIXp4NY6BRVufUWNuIjAUZsrF5jkfaIfkESBYRcBC0rkQNZ+Nw8M8Hpdesdi0B4b1NWpGEzOczFdsA6tEmzsaB8WeU9XcL0mHqYUJoXCgKNxR6nLgSJAGe4xE8KFgwCvBQGycaazi6STriKA6kSTlJwG5pmWy3nKcWww1LjUWK0rEtbywPXrouuW/mIm9NnhQ51dI3yjnlTss+tyqy5mosZ3t2NcHqyaKdbWalFD6CIjDto2nSMRh/xqveckfeOoL+Kf29iqA6O4S6g7Nzbr+LaDONca+Nw8HXDoK1yM+boARHQNpEw94oGPJQJkqxnb3RjvrKegT2CYRfsJ+mex+AIqLn+kVo28wR2kR7ZUrUFemI5sg6OrcCXXTpdBk6i3thY2MjTCYT7r777g4dJzQuFBRNySInIsf/eRy8m9wXcbKvJiA8MXj2YABK5zpxwrb32b3gOb7VUplyXaSetyZPFqVwZcue+GfBPAJoneAXbihUTPZImgQBQnFN7v31vch9KxdsMysJkL3PCvbNlIESolU8obBWp4yUYgLkTf0YyZCCQGhSn305RtwsNRbQRhqMmYHN4n7SxXRjwHOCIYnthk1xPmwTi11pu4R0Rg3NlEUxlL0sGyOXjkTefyvrtZhuDDiWw/AFwxExPkKIzKngKA5YKys0XnYxl1errXMWHdWF1R4n9WIz66aGJuQsz3EpTEq3lQr3p6015W7Ib4egZFOJ215Tar2oPPUl09q/zHFxR01Yiel76QvShUiqC8EqfpY1W7SzPNLnC+K8vrJeiJxr7VUF4b2rPFCpSXDR3WiAEyLGzQ3NioUFZwiKQMKLCchb4bpu0G6x44eCHxRCijJSSDuUBr9gP+E7owdQXV0N6hyFb57/RrEAsffZvQCAUYtHgfbzkeChhNYOmkyGnOiM9ZC320hDR+dOQRddOl2GziC6bt68CYvFgpiYmA5veiqZbKhYjnNWzmXvF8rYGqWoOl6lmLBTJsFh0JWTV/GmYvSf1t+l8FBMwlgANHDfb+5D6ael8nNp6W/lOBkduXikVLumZh4xZe0U9BzSE3mrlBMyzs6pis0z288oIoLieYqTVLX91CZAWhzVImdG4t7p98IYZMRXT34lOTA64tir7OSGk8hakiXUu7hyMmtBjDIZg4yS8FE7H1eNYYWDAEN+OwRln5fJmiaTDInuEd1BGklZqiRpJDFpzSTYmm3IWZ6DwvWFqmmM1YXVrZEWDaLU+fqqiQ5PkVfpHCkS2Uuzhc+CijCx1FiEGkaH68tZuVaTiJZ9Mp/PhCHAAM7OYcyfxiD3jVzZMTOfz5Ss+h3TTx3F3ckNJ5G9NFsQ3M2cy+1EXF27Pc/sAUmRAK90wlRr3u0tbDOLLx/7Uj1N2QOcjZNqDd1BmShMXjMZ/VL6Sd85hgCD7L5zhjSSKHinwGPkqWxbmeKxxFcSERwVLNV63vz+JogwAv1S+qneS+LnP/ctDTVaGiFp0uvfKspMgeAJj2Y4dyK66NLREdBFl06X4k4WXRzH4dSpU+jevfst+8FwZzmuNlkRV4HFdDk1AUEQBFK/TsX2h7arpqWRlJBr742VM0VTuO+R+1D+73LZSrzjpNtxwg0ACc8nIHJGJLZM2CKLxIkr02or7P2n9cfZr88qHvckZFTP2UipToAUPb0sNkWj1Ip/V+D87vNIfjvZ5XVi7YIxSOGGQux/fr+2czJRGPLEEKTPT5ciSaMWj0LS20nIXpYNkPDo8EYaSMw+PBsAcHrzadlznI1D+IhwkCQppGmK+5AkwkeEK96LjIUZ6DmkJ8p3lCN/Tb5mR0TaTAO8vFZOLeqasTADKe+laLo2rI2Fc1kRz/GoLqxG38l9XdYsqSEKgoMvH1Qfq+VzodaXTO39dNe/7Psd3+PguoMApdLDycYLr0vtHJyMZRh/pm2RFS8Fl2OUNWJChFDb5ObzxXO8JLiAlu8ctYgaDaDl9J2jV95w6NVD+KnsJ5RuLW39jqCAptebMPLFkTi6+ih4llc2N/bhTwttpBE3Jw4F7yoNgVShgF++80vZdfo5w/O8XtOl0ynR71qdLkNHR47aS1lZGcLDw2EwGG7puGLTY8qoFHq0Hw3KSMEQaADtRyPlvRRZfZIoIGg/WtpmytopuGf0PcIxTcpjWm9YUV9ZL+0nbiP9W2WpR5xkJa9MVoxlDjGjtqwWGQsyYG+0w9pgBdvEIv+dfFz/7rokwqRjWTlVwUUaSZzfe96jwGK6McJ5uvl2FMWpYxSn6ngVLDWCeUB0ajTmlMxB6o5U/Hrbr8H4M4pjsE0sspZlIentJNB+tBTtEOE5HhW7KoSeXhpgujGY+v5UFG8qll2n3DdzkbU0C0krkjB983TV98yRiasnorqoGlsmbJEZhojvR3BUMKJSo2T7DJ49uDWN0QGO47ApcROOvHkEbBOrzdKbBqZvmY45JXOkGqyq41WoLqxWHJ9kSBiDjIJBihtIA4khTw1RGrY0s9jx2A6c2X7GZeqqLxCjTpYaC7KWZrnd1jEiVfRxESr+WiGkvXopNJyNZWw3bB7f+/ZCmSg8tPkh6b0zh5gx7YNpoEwU6G40SCOp+FyJwlf87Dh+50jnS0ESXO2FZ3mUbCqRf0ewgoDOXZELrplTCi4fY2+2w+Bv0LzsTdFUpxZceqRLR0dAj3TpdBkIggDH3ZpGmd5SXV0Ni8WC6OhonDp16pZH5NxFvNIOpbmtKXFsCgwAAb0CUHW8Cr2TeyPtYBo2jt6oqMnZv3g/njjyBKZ/Ol3aRxyjYmcFMv+QKVs5Zu0svnryK5c1M84GFgDAEzyqvq3SZgVPAaOXjMaxvx3zGGkZ+sxQDHp8EDaN3aQQb4w/IzVvFsWpFIGjSanPWPyieMnUxFJjcTmZZ5tYNFQ2YE7JHKHp8mM7pNfJWTkceEmb4AIAjuVgDDKqpnWKAm/GZzOQvDJZcJQEAXuTfCZLd6MR1DsIO3+zUxYV4VgO0z6chogJESjcUIiSTSWy/Yo3FSNubpyyGbMXURKCIUBSJFLWpaDv5L4A5NFNe7NdcR05G4fQuFBMWj3JZR0QQREgCEJxziJim4M5JXOQvDIZ+19wsFGnSXC80njFW8SIbXVhtdtomr3RLgl0S40FB/+oHkljujFg7azL60uZlMYygX0CfTfxpYTvW4IkwFmF9Eie5zFq8ShFvy/HxttNdU1SiwgR3s5jV9ouKToWnRot9Pm70oBDLx8SNmrD9ScNJAY8MAAV/1F3V1Slg3triXDNnGRYooXkVcmdVnABuujS0RHRRZdOl+FOrelqampCRUUFEhIShInKbTpPMeIlpr2JNTGieBAjCmriS3QwBISJIWWiQBAERr44UqhfcVqF5+08No3dJOv7FZ0ajdJtpchalqVM1WEBa4OQspW9PBtzSuZIgmXfon2qaYyshRUsnJ1/y9V69bAtzoUaUh6/fe9bRIyPAG2iJQt9QKixmrh6omzFWa13UcG7BTj2j2OY9sE0abXfXQPrgncLYAo2ISIxQqoFEnFrQkADBN9a08KxHOor612nKzax2Jm2UxKpJK0M5dlv2nE+/bwiGsFZOaQvTFdPuwKk5rfumuF6ggCBtINpsvvRlYmLeP+JkdCwuDDVOiDSILwQR4MUNUiGROGGQhS8UwDaT2jYHb8ovlV8azAboYwUEl9JxJG3jqj2JRNdGt2JfsrUasziyqmTNJB4aPNDAKDqTkoZKaSsS5EixFXHqhA+IhzBUcGytFfWygo1jirvJ2WgwLJOBicU8Mv/+SUCewWirrIO2cuyQVIkCIJA36l9cWHPBRz7+zHkv5OvqE0TFyBqy2pVX79YX5g+Px09h/SEX7CfJnt2NQY/ORj3PnyvVM94bve5NtWk3SkMenwQ4p6Ku92n0S5ud3NkHZ07BV106XQZ7kTRxXEcioqKcN9990lphb44z7bu77jq7Ciu3NlNqwkLceJ0dPVRlzbPnJWT9f0K6BWgGrFyxtEAQJMToNPwJEWq1oTkvpGL5FXJyF6WDZ7jXZ6HmMKmiNqwnCLFp7qwWin6INTaOPYZEyONh/9yGGd3KWvKDv7pIMa/Nd69uYXD+Y1eOhqRMyKxefxmYXLcMmb28mwkvS30RlOb3Dqm97mqBXJld+0uNVCM5ITHh6PnkJ4o216Ggr8XgG1UjkEYWnqlOU32aWOrM5ylxoIL6RdcRoV4lkfq16m4Z/Q9ANTrgCgjhakfTMW+5/bJxLMarJVF/pp82TX79r1vMejxQYhfFK+svSGA8W+Mx5G3jiicBHvG9AQgj+4CwPqY9R6jrARBSNu7SnecuGoi+k7ui9qyWtVU2dRdwnXJXJzZagICYOi8oZi0ZpL0+a+vrEf6gnRFTyySIZF2OA0/nvpRaObNCe0OaAONrCVZMvMQ0aL/7H+Ee9q5qbfz4o2Y4ujOsn7zuM3oP62/R9dDgvr/7H15fBT1/f4z1+5mc3El4QzhCgQICYRbkAAqQStaLR5VQREFtFbrAfawWmv7E7FW2yrgVUHtV1G55AgKCQECBBIgBySEKwlHCAFCErLZY+Yzvz8mM9nZmdndhKCC8/ji9TI7M5+5d9/P5/28nzfV3BRZBgvETohVMqUAkLY4DRse2/CDZbHaGiOeHfFjH0Kb4MdsjmzCxE8FZk2XiesGP0XSdezYMXTo0AEdOnRo03Gv5AdM7uOll61x17nBN/L47snvlBoLhfjogLgI4m6OC2q/X932VVCNTL3NM4JxAvQFbaF1iRDN0YgZEoMHtj3gtx+QLFnTq2Xz7Yu05v41zb2lfPfH0Ep9TvFXxfj8xs9RsbXCcL/Zf8n2W1PE2lmkvpGKxw8/jtHzR0sBrEUdeMjn+NihxzD2pbFgbAy4UG09WVtj7EtjFSno5zd+jrx38/QJF0fhl1/+EpPenKRZRoTm/m4fDvoQmfMzDbNlxEPw9e1fo+TrEgBNPcxenwDGwoC1S7VAqQtTYY20auSnjI3BiN+NAGNrrmUc9fwozTsleCQCkP9BPjRouk1y3d7sg7MhiiI+HPQh1s1ch7W/XovqwmrlPTuXf07jjMeGsug1tZfqs8EPDVb1Nhv/2nhQHCXVGVoZTH5nMpJmSVkPz2WPppaN4qQm3BcOX1ARLgA48P4BXDh8AfZOdtQcr0H63HTdZ3fioono2L8jYlNjkbYkTWlqzDfy4Bt5bP/T9qAnTnxRlV8VkHgKLgFHVgeWBI754xhMWTxFqhOTwUP13QVIE1QMxyhZT8pCgeZoifz/xJH8ePI11QTZCFdDXmgaaZi4FmFmukxcN7hS0tXWPwwXLlxATU0NRoxQz1T+1MihXjZJDpoaLzTizN4z4F3GWY6KjAr0u6sfjqw0DpT8uqaxkvudLEWc8P8mqHpuaSRRAvFrhmFEgggvBfV15XWSdFDHpp220EpvLKOsIBBczyOZROhlCvUQ8NkTocgVAX1CKhNWeyc7Rr8wGkMeGYJz+edabfsdLHa+thOWcAuyXszye54MyyA6KVrKRFDA1vlbwXAMiCBligBtfzcjCC5BySaWZ5Yj4/kM6blwA6CBzPmZ0jPFE9Bs0/MlNGdxU55KUTW+3vmaWs4m8iIE3liWuP1P22EJtyDpkSRDZ0X52PRkhaIgojyjXPVZ0adFGP3iaIXAbv/TdlCc1B8udWGqSmbGhXGa90D0iODCOJzNPat7zGdzzyKkY4jus8tYGKQukvYhZ75BI7iaSR/otVJwnHcozdJV0JMDB4E9b+7RnaTwzpTLbQBUNWRuEXQIDdLoY7FvpZHyZAry3s0DSMvcV9saKU+lYPCMwdcF4boaMOWFJq5VmKTLhAk0E6G2Il1utxslJSVISUnRjPlTI11GwbvGMIGRgmbfIJSxMIifFq9LurhQTpJ9UVq7a8bCYNT8URgySyr4ryuvQ1V+FbJ+n6WROXobedRW1DYH2JBkRqC0cjVfjHphFADAecmpK62jWAqslUXW77NgjbAqBEevgD2Q7JG20EpdjV6vMz0YZd+864LkQFImC96EVL5evsdbmVeprkliAIr2b+PdUghOAVvnb9W6C1ppgEjSQZnwyMeX9EgS+t3eT0Vqy7aUafQXljAL+tzeByVflWjuseAUkPefPOx7b5/6fIha3ipCBO/mMfGNiYps1vve1pXXgbbQQTXy9cbW+VuVc9CbuDiXf06f4NgY9E7rrcno0AyNE5tOoPPwzhrymfX7LPSb1k855tI1pZrjkWvC2vVpp3u87fq00z1WNpTFtM+mIW5ynC5RaQnkPnG+z6HefimWarVToNHkiuAW4LzkhOO8A/kf5+ueh14WdsjMIRj/yniljk8XNICWPCKUVGNW9ElR8NswwIjfjbimjTN80dYTmqa80MS1CpN0mbhu8FMhM6IoorCwEP369YPNZmvz8dvaGt83m0Q8UtNXTQ8iAbjh1Ruw45UdKpJGPAQ9buyB5MeTceD95nqgwQ8NxpBZQ8CFcfhs/GeqoXz7gclYcesKVbZALqw/V3BOVXM2adEkRPaMBABEJ0XjXP45rH1wrWHdEWNjYOtow4eDPgTN0RCJKMm2rBx4Ny81l/UQxYjBqCZFhj/ZI83SSu1MoHW9kfJUCva+vVcd1FHAlMVTlEbHerV3sw/O1s3GFX9VjE1PbNJkuBiOQdqSNHz35HdB1ZAFC4qmNFkRClJPN4ZjdA1avIlP8VfFusE+7+Z1CZeMff/ZF9QvGXETbH1xq4q4yDibf7bFhAuQrqV87fUmLgDoEpwp705R+sl5w33ZjYwXMkA8RCNH9M3g7Hlzj+4xydlcDaFhJMOK9knttc8jgWI8YURUWDtrSHRkcKEcbv/sdkQnRWtMefSu0dWwZhfckhMq7+L1+30ZQM4y1p+ql7Kvvs8DhZYRLgAQ0TLCBWDyPyZfV4QLMEmXCRMyTFGsiWsG8pe2EbG6EtLVloStvLwcdrsd0dHRV31fbQXvvlKzD87W1ArJ2PHKDsX1jrExSq0TILls3fvdvZiyeApm7p2JW969BZ1TOuNcwTlVFofiKE0/MEC/dkxwCfjshs+k+hOvmrOs32cpMjV7JzvCu4fru7DZpWNMXZiKbb/fpoxB3AQ0Q+MXn/4Cd355J1ibOmqXMw7etSHekImqXu8zwhNs/u1mLO2/FCVfl2h6nTE2RlOLQ1tppPwmBbd+eCtoKw3GxoC20kh6LAmb5m3Cupnr8MHAD7Bp3iZN7R3QHGjLx+s470D63HRdSSFjYWCNtPqtawOk+8tYGSXTFqgGhm+UyCvFUUp/JYqm8M0d3+DSiUt+A0kjuSZtpUGI/75JNEcHHbwLTgEFHxdo9r3t99sMt7GESXVf/af31yyTJaRKTZmVUda/5d1bEJ0UrZXnEcAaaTXcn+eyB4JL0EgsvSV7deV1uu/oqOel3lwRPSPAcD7LBWDN/WtQsbVCt14RAMq2lCFnUY5mXMpCYdrn0zD57cnq55jR1sFdKr+EDwd9iK/v+BofDvpQVXfnvV+jOtErBpGcUImrZVb/FE0h+7VsrL5vtf5kxA/wlT3+b+OVmj0TxjBrukxcqzAzXSauG/wUSFdtbS3Onj2LkSNHtvm+2nq20Bdy1qH4q2Jse0k/CCUe0jxbLQIPbH8A5wrO4YOBH0iugQLBlPemaGy/vWeNaZpWskDeMMoI6daU0JJzYNzkOCX745sZAAt0+2U3JN+RDMEhaEgGRVGwtbPhbP5ZjdW4nHEQnxU19tcy/PU+A9QOhrGpsUrPsuqiask0wyuKE4mIiq0VKimlq9aF9LnpEhExkCaKoqhYnXtnv2ztbYbyQW+jkO+e/A40Q4N3Sz2wvGtkRCLioeyHULqmFDlv5ICiKMWtzgjEQ0CxlJIRkImDXubQWyapJz3jQjnc8PIN2PGXHRqHPW94GjwY/NBgHPziYPM5M9Jzpvc85byZo5K0Oi85deWfjFUy4/DuGdd9XHdNHZr8zmS9KMliBY+A1IWpSosE72tKcZLNfXj38IDyPdpKSyYWDAABmPD6BL9ZI8bGKOdl1KZAcDb3JJN7w7lqXThXcA6bntgkvcN6tX8EcNY4kTQrCf2mSXJKLozD8rHLVcRGJCKyXsxSPbPe9967TlLwCPjyli/9XoMfEp4GDwo/LtQuaKmksJUY/9p4jHjq+nAq9IXZp8uECQkm6TJxXeHHJF08z+PgwYNISkryOwvXmh+fq0m2vKGQJJ3Ai+LUdUCMlUH9qXpsmrcJxE2UgDx9broSZOkF04JLQMF/CzD6hdGq8ZVAcd6mgO5ofAOPNfevQerrqcj6vYF5Aw9UfF6BkytO6hIQvpHHxWMXDbMcsnOeP6mh3Pts09xNuuSQoigVKXI73IDOoYoeUWW8IJPIgE5vTgG7/r5LCgq9gtzUN1J116cttEIUBvxqAJx1TmQtkMgC71YfmEhEnD94HrsX7m5R/ZfIi6DslGRoIe/XRxqX9+887Ht3n9Q7jZfMUzTSMyKi58Se2P5n/QbB3ij5ugQzds5A/al6AJJUrvFCI3a8ugPHvj2mWpexMCjaff0wAAAgAElEQVT4qAB73tqjMmdRrWMgf/WuQ+PCOHgue3Dh8AXd+qvuN3SX3g2v86JAISoxCmdzz/q1TgckZ9C+d/XFsW+PSbWGL2bBGt5ca9h1dFdUZDa7YXYb203TlNjW3oZvH/xWlbmRa80q8yqx+/XdqiyhEakWeREb52xU3gO5VpEL4VSGNKyVVU0mAFLNpfe995bC+kqSgwFtNSCGVwGMnYHoFkHI1d0fbaPR44YeV3UfPyZM0mXChASTdJm4bvBjZrpEUcTBgwcRFxeH0NDQoNZvzT6uNvnSI0mMhcENL9+Ana/tBO9pDiyJh8BV69LUPhA3wbn8c4hOipZMK3QIVM6iHAx5ZIiGyBhlj2QbeO9gS3AK2Lpgq6EUUoY/wpA+O10j9fOFN2HwhhxAxqbGIu39NKx/eL1mW8KT5v5PAYw0vI0XgnHva96J+k9RFLHld1u047M0Hsp+SJWF3Pb7bdJ1dmmHFXkR6Y+nt8pww5eAytK4Ax8fQMZzGUp2RF5v64KtSmNh38bdU96bgo1zNirHQbM0wKifBdBA/al6pT+Tkv3U6fPFO3nkLMqR9t10T2gLDdpGg7EwmqbhMrwJQ83xGqW2TnAJmiwrxVAoXF6ofTc8RGoabmW1UkpOm5k7ulLqf+XxqCcAGi80qggXILmIXjh8QXXc0UnRmgyvp9GDNfetCap9gzdEj4i8/+Rh/CvjARgY8Og0kfZc9qCqoEq5ZhRDgXgkN8Yuo7og/+P8oOShtIXGkFlD9LNRVwjKQkF0a49B5EUpc9uC19EIA6YPgEiJOLzisHYhD43bowljiKJoki4T1yRM0mXimoI/0vFDZYP0cPr0adA0ja5duwZctzUEz/fcrlZNmF4gJbgFZP81G4kzElH0aZEqKDaqTanYVoG1v14rratTzE4xlCIP9IWcPfK2iR/2xDBYwizIeTNHXczPoMXBoy8CkQo9+2tvQwv5+PSc2Ab8agCOrjsalBOckfECIJkviIIIwvuvbwK0LpGAlLnxraMLpvF0a+zCAQBiU02YF4k5svYIMp7J0N+PS5CaV/vI+YDmht4nt51Ew7kGxCTHYMVtK1Tby5nPKe9NQWxqrF/iqmuYIQJ3/N8dsLWz6Rp+HPj4gJIRJDxpbltgcO08lz0o+LBAd5m3qyLQZP0uiBj53EjkvpOrkbp6Q54AqNxbqbv8bO5Z1T3Wa7ngrzF4IOT9Ow8D7x+o7GPk8yORsygHjIWB4BYw6vlRYGyMxoQn4/kM0Ayteja3PLMFFEP57U3nDSIQFH1a1PpnUg8sMOyFYcj/Z742y8dAaQzdFji67ijuXnO3Lum64S83XHfmGd4w+3SZMCHBJF0mrhv8WJmuy5cvo6Kiwm8d15Xuy3cbUWyWvLTlj4+/WpCiT4vwwLYH4LnsUQJTx3mHRnZIsRT2L97vN7vjHSQb1UvFpsYi/+N87F64G3vf2qs7juAQQLGUbpagteg4sCMuHLqg/O3dsBaAbk+mvW9J8kGRlRqxCm4BoIDStaWGjooyaCsNmqYV4wW9Wp1pn01DdFI0jqw9gi3PaLNYfse30Rj/6nhJ1ublKNeaxtPBQhREDHt6GPrd3k8hrB8kfOB3G8ElIOv3WZh9cLYmAJUll97EQbN9U73StP9NC8qi3xvEQyB4BHRO6axZlv9xvkIWjcgKZaFAUzRojlZkqcFkK7lQDpMWTUKvKVKT5D3/0Hck9D7Oqvwqw5rLzsO1x+9dR+W85MS6metUpM8X/t4l4iH4bNxnSJzZPAEDAN3GdUP55nLsfXuvLikSPaJutBEs4QIACAj4LhnCoC4rYXoCBs0eBDqSxoG/HJAkwA1uUJDIoEYqyVGgQGmvT1Pdnd9D4GgwHKORVA56aNB1W8slw5QXmjAhwZwqMHHd4McgXbI9/ODBg8GyV3cOQz4+mWzxPA+e5+HxeNr0X587+uC2T28Da/dx9GNpOGocCOkSgovHLqLubB0s7Sy45b1bJCdDOwvGJvXe0vQmYylJIugFOUiur6qHIAgghGj+7XlzT8BMlMiLICJps28zb8IFSFbS3i6Gei6LgBSQMiyDtMVpknMcH0SQyAB3fnEnZh+crdTq+DrLTXlviuLSmDQrCSOeNQjQDGIa4iTY/uftWDZiGb5I+wLvD3gf21+RMhG++xrx7Agw9gDBDA3E3xXvfx0A+97bpxA8I7c9zdBNmRxveJNcd51bIvMGAa58X1pDJtfevxb5/83X7Hvrgq0BtxXdIvpO64tJiybBEm4Jep+eBg94F6/USd3y7i2K86MvGBuDCf9vArJ+n6VL/mInxRo205VJNuA/e0kxFEY8P0KS1BlAcAk48P4B1f04seEEiJvAc9ljmBlqy75wLcWoF0fpfl66shSN5xsRe2ssZh+cLTkHCvpkkAvlMOFvE3Qlq8E4G8oZ80lvTsLMvTMVl9cp705p6en87GGSLhPXKsxMl4nrBj8G6XI6nejbty8iIoLX41+JvJAQAo/HA47jwLJs0AXe/vbnm0EDgM5DO2sCCcITXDh4AavuWKXMht/075uUOqyzeWfROaUzRIjY/ffd6n3wIlLfTsW2BdvUAaMI1JbVwtZB28/s0olLugEObaUlJz1vGZ0Pt2GsDATeIDin0CL7Z5qlcSbvTLP0rJvdMHClaAr1lfWgWTqg0x8AWOwWEJHgUtkl5V5GxEXg/q33w9PgQUSsVuo28P6Bupk/mtGXcgLNkkO5DmrvW3uR+69cTH1/quJiBwDh3cOx7719fo+ZC+FwdP3RgOfGWBilFi6iZ0RQPZP0pJzByCBlCG4B4d3DVbI3d4M7KOtwURCx5ektgAjFtlsmixqSo5M5OfzVYSQ/ltyi3lCAuumxbH6x9oG1Khkta2cx7pVxiOwZaXgtzuw6A8d5h65MzVcOawRREJHz/3Ka358Wviv+kPxkMva9o362aI6GCLFtCBkLpP49FYyVkZwkm1w5U36TgqGzh6J6fzWObzyu2oSxMrh8+jLsfaVrlvufXMPhRSIiJjlGXyoc4JZ7G9gAkoTaiCBfjzD7dJkwIcEkXSauG/zQpKuqqgqiKKJ79+5XfV/yNrJ1tpxVu1q69sgukUhbnIb0eekKwZq4cCIyF2SqZHWbn9oMoUFA5ouZEtFwC0h5KkXjzEZbaHAcpwleeSePsA5huk2ko/pFtajPjjcYK4OERxNQ9F6R5nNQ+nVPRvA4PFj/0HqlPmnggwMNZVG8g0f2K9lBB96eRg++/fW3YCwMPI0eUKDAhrAgHoLJ70xGVFIUeJ5XBSyOGgfYEFYlX6MttG79nF6dmQyRlyztx702DtkvZSsGB7ETY3Ei/YTxMctOeL7EwydAF9wCQruHQhAEWNtbMf7v45H5u0z1YIxEalkLC8IT3Pzvm2HrYAMhRHm29WSQspmGL/kWPAKWj10OLoQDACQ9moR97+6DIAR/v7cuaG6gbEQWE+5LQPH/ijWfXzp2CRNen4Ct87eCZumgmk/7GrVcKr+kaULMO3js/OtOCB59aaXeODL05LCBoLynIqQo4UqNJGggf3G+ROa8vgNEImLcq+PAcAy2vbTtylwJeemZGzZXkrUWfFSA3W/uxv4l+7H3nb2gKf3sdFi3MIiUiHP55wzfFdpKY+RzI6X7GYSUULWtj4HNzxFmTZcJExLMp9aEiVagsbERR48ehd1u/8EMPHie/0FlFQnTEzCneA7uWXcP5hTPQUxyjEZWRzEUMuZnSFKjejcElyC59fm617kJtvxui0a2xNiaMhE6sEfZkbYkTSVLpDgKty69FYkzEzXHodqfhyB0cihS/5EKxiJJH1kbi6lLp2LqkqkqSd3QuUP9OhiKggjBKSgNiQs+KPArX9NzszMcW2weW/SIIB6i7GfL01tA6glsNhssFovyr1PfTppxKFrfkCCgKxwF7PjjDvCNvNKU90T6CaUBtgyao8GGqufoLKEWJPw5ARPenoAHdj+AIY8OUS0nHoKKzApFKho1OApcGKfevwCAAPF3x+PejHvR95d9IQiCSjbLRXKY/I7UlFdpusxSoCgKyXOSQVtp1XiiR1Rkb3n/yfMrldMDzdKoOV4DnudhaWfB5H9J++bCODBWBhPfmogO/Tvobnv53GVsXbAVFENB8AgY+OBA6Zj9HILgEsDYGRBC/DZqdtdL5ySKovqcm6CXJQSM5bBBow2c+0AkQuQ76SIKIrb/cTsEt9Am36M7/7oTjvMONF5oxK7Xd4G4iERgBWjIM2NjJDOgDpIZkKtWx8ITQOcRnUFRFHL/lYtV965qMeFKez/tZ024rgbMTJeJaxVmpsvEdYMfKtNFCEFBQQEGDhyIw4cPX7EpRrDweDyw2Ww/6AyfPcoOe1TzzLnGItpDFNts9QLtWEZ9rCyhFlTmVSIyNlK1L0Aifj1Te6IqvwqggIhuEag7VYfCZT620TTAsAxolpZMHP4yDD3690BjXaM0tURBKYqXx6ytqEVkbCQAoPCTQpUdfktAc7TUU8vrGrAhLJJ/m4zcf+f6dT+jWVrXZls+p6qCKvSa3EsVkIbFhGmykGmL0wBA+oyl/TrgeYO4iUQKfOJNwkv3Vc66yVlOb/AuHkK1gIh+EbByVhz87KBquSiI2PLbLeh7S1/Yo+wI6xCmS1aJh6DokyIUf1GMqUumImF6gkY2O/j+wegytAs+HfcpgOZM5YElB8BaWLhd+uerauYdJEQiIqJnhHLNvRtWUxSFsG5h+GLiF5rt4n8Vj12v7VLtr+TLEvxyzS+x6s5Vxs8BBfxf6v9h0juT0K5Xu4BSStbKYswfx6BiawXKNpUpnw98YCC4SE6xl5dh72q/IsMUX6Ocq4Gdf92JsS+NlXqyXUGyi+EY5H+cj5w3cgKadKQtSUP/u/qj/FA5ak7UIAQhuuudyz8n9SFsQXZcxvQN09FtdLcWb3e9wTTSMGFCgkm6TFw3+KFI19GjR9GpUye0b9++TZwIA0EOQMvKysBxHGhaqmny989oHX/bBlpm62jDlPemYNMTm1SSw4zn9W3A9cCGsBCJKDXF9RAkzkzE8nHLVeQhYXqCaht7lB29buqFQysOYfW9q3WbBtMMDZFIbmMiRNTV1iHKHoUPnvhAtW76vHT0TO2pkElHtQPHNh1rcTZEdX8MiMSIp0Yg9sZYrPn1GkOZmT85Fd/AY/U9q5G2RHtNfImjTFZ7pvbEsU3HsOW5LYqLXmuOHwBAAdM+nYaYpBjYo+ywRlgVouducIO4CUoXl6J0cSlAQTdbSDEUaitqUZZZhk1PbPKf8XEKqvujuR6NvEaeFqhGyRu+26qOk6XA2iRb/rTFaWjXtZ1q+dEdR7Fp3iZFgumrEWFDWXQf0x2lX5eqPicegppDNVK9nS+baJJnys9nxtMZeHDbgwEJkueyR+qZ52PScujzQxj7h7EI6dhMHkRRRFhMGG7+9834/impR1awz4UMiqJAWakWS/8olpIkx8G0SxAJdv51pySb9Tkvim3K4gbxlSm4BeQsygnK5l0QBBz84iA2/3ZzswzXVzJLS0SuNbbxFEMhsnekbt3tz00a19YtTsxMl4lrFSbpMnHd4IcgXefPn0dtbS2GDx9+xfsMFoIgoG/fvsoMtiiKmn+EENXfPM/7XR7oc8NlPUWkfJYC11kXrJ2tqMiraFG9jMALGPr2UCmQ4Qn2P71fCjKbZvY3zNkAZ1cnQjqGqEifu8aN9LnphoGfYhTRFBwd+ccR9OjfQ0OmKJbCmeIziLHF4MiqI8h6NitgIDp4xmCUfFUCIDgbcNbGIm1xGuxRdsQkxRjW4ABqEupp9EiBn9fqvJM3JCLy37UVtcrf9ig7+kzpg81Pbw54nPKxxk6IxbENxzTLKJqCrb1N2Y9M9Cq2VeDbGd+qVxah31xWEGEJtWDTE5uCunY0R6O2olaXdEXGRupmWsf9eRyyX8sGRVOG5JYL4zD5H5NxatcpFH1SpFn+i49/gci4SCXzeWLLCUAEYpJiAAAb52z0H3gTIDRKvym6b/2d9zbeoDkalysvY9gTw3St47lQTjk/PVdMmqNx+dRlhMeEa5YNvn8wet/UG7UVtag6UIWM+RkALbVcCITxL49HeLdwpM9LN3xXRj03Cvvf36/KsLI2NmiyIrpFyXjGK+NKW2kQF5HeH99HS4ccgUjZ7KDJIQVseXqLmhSyTdJVQinZ3oB1eXSTiY3Ps8nZOVw6cQnW9upehlezyb3e2PLvk/xdGgzaer2WrhsIZk2XiWsVJukycd3gahMgl8uFw4cPIyUl5Yp+QFoqZeR5HmFhYT+5HxlHtQNLH1zaohoHiqZQ8HwBBj4wEAc/PagJVFgLizA+DFGdo1Rkb//y/brBFBPCQBRETfaLYinUVtVqMhuCW0A9U4/zWeeR/XR2wKAwemo02s9sjyGpQ7B/zv6gzrHv831RF1uHPXv2gKIoxL8Qj5KFJQADEIcPaSAE4z4dB9JIcGHfBRS/ozVnAA2U7C5BxyEdQVEUXDUuNJ5pxMVDF7Hv7/uULOHYhWPR544+OPHtCfCu4KSSAi+gLKNMf5lTgCVUbX9uj7LD49APQimWkgLkplOkLTTSlqTB3eAO2n2QeIhCfBzVDlUmzx5lV2SVci0cRVPIfi0bExdORGTPSKy6d5VuZkUURHQd3hXfP/29ZhnN0Yi9MRb2KDsOrTiEDY9vUOR0tIXG8KeG+5eIWmikLU5D7I2xWikeC0R0j9AYy+jB7XBj9T2r9S3JAcRNjkNZRpnhBIH3tdODfA0jYyMR2TMSoCTn0MwFmcozlDgzEYXLCpXrS1tpZL+WjbTFaZixYwbO5J5B4/lGbP/LduWaUCylazgiuISg3VV9QVvo5vddbwjfz+RVW5CROpd7Tvtc8oDIiIo0MSgCR4A7VtyBtQ+sVX3fEJ4gql+UxiToajnOtnYsebn8myZ/57Z0DH9ju91uiKIIj8fTJqTz1KlTiqmUCRPXEkzSZeK6wdXMdMn9uOLj41U/oldTXijbw9M0/ZMjXICUYWlxE1oXAQFBwYcF+st5gm4Du8HezqsZcbUDBe/qr3/r+7ciamAUlo9brvpccAnY99I+RdbF2BhQFIW0xWkQT4vInJsZVIB2cetFDFk8BLVcLQqthZp6GT0MGj4IcSPimkljsogbHroBhR8XImdRjmJuQXM0Jr49EX3H94XjvAPZs7P1r4mHoH2v9uA4DifWnkDOH3NAMZSS7ZCD+ewXsoFIIPu57OBsvhkg7qE4lP9fuf5yDtjx5Q6EDQgDaSSwdpZm7C9WXNRdXeRF0CE0RF5Ej3t6oOe9PeHs4MSp2lO6JJAOoaV7IEqW6CIvYugrQ3G2/ixOrTiF3D/nSjVvPMGov41C3O1xiLwhElNXTcX6aesBNGceM+Zn4N7d92L0X0Zj95+ldgWCS1DcKoc9Mwznj5/XDfbGvDgGoijixOYT2Dh3o4o0ETdB7r+MbcQBaSJBzkTe9sFtWD97ffM9pmnUlteC8qerlMcBBd5pHEge2XgELKP9ybaEW0B4omRX/eHQikNKxkoURExdMhVziueoyO3Qx4Zi2dhlAJrf1w2PbwBFU5J9vltQB/28iIwXMtDvjn4oWVGifH4ldWStkfP5gg1lIXgEdEnpgjN7zmgmhw58eEBf7qrDjVk7i/g743H468O6ctaD/zuIqUunauos9e7HT/G7/GrD6XSiXbt2sFj897ALlmiyLIvwcG1G14SJnzpM0mXCBAITobKyMoSHhyMqKqpF2xntKxjwPA9CyFVvutxa6Mm9rgSMldENVGoraiWZoI/ZA83RsEZY0XFAR6QtTsOGORsU2aJIRFUAKwoi7tl4Dzr07YClCUsNa3t8IYqiEpAGUztEcRQ6J3fWBFYWzoLct3NVboIUQ2HA1AGwR9hR9F6RoVnBwPsGotfgXnBUO7DnT3sMMybETZD9WLbfuilAMu8Y/vRwjHhKarK8ePli/RU9wNF3joK4JNIqkqYZcD/jk0bpeTiz8gxuefkWhHQMgSiK4P7FIePpDFA0BSIQjH11LDoN7oTQ7qEQRRH1J+sR2jUU1g5WNJ5vRO6fcyE4BaXXWc4fcxA1OgrW9laUflWqCcoplkLe0jwc+fgIKJYCcRP0/21/EBfB0f8eRd6/8iR3SJ1g/vS509g1YBdAGWQ2moxYDIksA+RsykHkwEh4OnokJ8mmlYmbYMsLW9Djzh4o/9KA3Mq7sdBSbywjeABrFyv4iubnOv6+eAx8aCDCY8MRGhWKy5cvG9ZlNl5oxIbHNqiewfWPrccTR55Al5QuymfuBrfmHsvXzejZE1yCinAFBZ1eZwAARjLFCfYd1QPFUIhJisHpnadxZtcZ3XWImyB6dDTO7T4XcDzewePwysMY9/I4bH9lu+Z7r3RlKcb9cZyGwJqQUFdXh7i4uDYhnFVVVYiLizNrukxck/hpRnMmTLQCVyvTdenSJVRVVWHkyJFtts9A2wiCAEEQwLLsT3Zm1FvuBQqa3kItAgPM3DkTHQdorZUjYyN1nciIh2Dl9JWY/OZk9LmnD0Z/ORq92vdCXXkdNs5V1+AQD8GK21Zg9ILRLcrOyRK7ssyyoO4zRVEo31quMb7QywoyFkapx8pZlGM4ZslXJZjw6oSgMotGJJixMrj1w1thjbAqxhiAlEX0d14yCWmpcxvN0jiVeQp9pvSR9nPKIZEWImV02sW0Q7/UfoqEMDYxFgBQlV+Fi0cuguF8+ryxNMKFcFR9X4XDHx3W7E/0iDj6X4kgyuT82PvHJFsVt2jczNpCoeLjCr+TBzRFY/izw3XrrACAIhSGTR6GkI4hOJt3FqyVhdvdXNtEURROrjrp93oBCIpkNFQ0qP4+uuoo4mbHweP04ELFBSW76rroguOMA9YYK7h2HFw1LpT+p1TTQkD0iMj6IgvtR7Rv3kd5Q6uc+loCiqMQ/0g8Dr+vvZfdJnTD6YzTVzS+KIg4vTPwGNV51UrtWCAITgHZr2VjwD0DcOjzQ5rlZ3LPIPHBRJNs+UCWFQbKcgWLwsJCJCUltclYJkz80DBJl4lrCv5IztUgXR6PBwcPHsTQoUPbjPwEOs6fuqzQG7K5QvHXxYYuhhRDoVdaL1RsqZBm890CiIeoiZQAnMw+qUu67FF2TF0yFesfW6/JBhE3wfe//R5lZWWYPH8yTm48qarJ8YbgEiQr6aC0dxLYEBZ1p+qw6YlN+pkoRpILyUE7cRNd44vI2EhNlkWuwamtqJV6kTn1j0E2l2htZpG20Ji6dCoG3DVAs6y2ohZcCAe3p5kkyFLMYIwvjOCud2PLc1vw3VPfSTUsPkNteHwDnLVOZC7IlHpauQTJjMPA5ttz2YOT209ix6s7dJf3mtIL5RnlSmYMgHEmxQuiW/T7PNAsjYlvTET8tHjse3efRv7H2KTsbGQXqZaqU99O8DjVEtRgCUxrXAIZjgF9jEbclDjFjXPvv/Yi7z95kkMoTzB4xmAULis0PI6uYV0RzUUr2ZlKrhIFIQV+7z/FSdmz1soAR708CtEjonVJ15kd+pmpqwGKo9D93u449b9TUl1oo/97JdIiamprdJc52jtQXFwclBtsa5e3ZpsfGw6HA6Gh+iYzrUFRUZFJukxcszBJl4nrBm1tpCGKIg4ePIjevXvDbtefvWytvNBfMbVcIPxTlRX6wh5lR8KvErD1D1vVQRgDJD+WjMJPCnFq+ymIEDHymZFwX3Zjz1varEHGCxmInxavO1PsTe6yXsrSBEdH3j6C8Q+Mx6Z5BuSoCbSFxshnRmLXG7uCn82noJthYqyS5M63EbKeA19ZZpnK5VE2X5DX8dts2S0oAbFvf64b/nQDdry6wzBLQrM0Ht71sIbMyhkmS6hFd9/B2rD7gz9HSOIm2Pzs5haZsOx4dYehyUT5lnKNy5xe5pW2SD3VaJY2PD7aQiNpVhIKPi4AbaGRuSAT1ggrBs8cjANLDyjrxd8Vj5vfulnzvFIU1SJir+yXpTHkkSHY//7+oK+L57IHW57dgu8936PnTT1x4rsTSjZLvofex6yH737zHdgQ6bsmbXEaeqb29Ls+xVG47YPbEJ0YjWVjl/nN0HGhXLOhhvyY0QDrZtGjfw8MnTsU+5c0G9TE3RSHM3vOqDKFVxMUoXD7y7cDLwP5y/Kx42V9Ui+DuAgq11VqPu9/f38kjE9osSOs/Le/bVrrQNsaE5PWthPx93ldXR0IITh58mSrxqypqcH58+dhsVjAcRz27duH0aNH4/z582BZVvnn3U7FhImfKq6NqM6EiSDQ1pmuU6dOgWVZdOnSxWCrtid63rLCawn2KDtuff9WpM9tLtKf+IbUUFdwCgrB2fXGLsPaGH924fI+En6VgKw/ZGkXEqBsa5lhUK6s5iFImpWEpFlJ2Pvvvcj9V64u6fA23ogZEqNPTAyCTV8XOUe1Q0MGZfMF+bzSFqdh45yNumOOmT9GyWK0690OM3bMgLvBrRAx2c5bT+JJeIK6U3Uq0nVoxSFVrzXZsc6799rmZw0s5xko0j/aQqtJNgskzUzCoS8PBdcLqqW8zo+E1ZtwMXZG1wqdsTGYumSq0sss4/kM3SbSxE0k4kOaiUv63HQNkTq+8Tjwlnrb2opa/Z5cQUBwCti/ODiHTG/I5358w/EWbytDzmqlz0vHnOI5SFucpptZBgCGYRCdGI26U3XoObmn4X5lm/6uw7viv6P/29w6gUgEetfCXZi6dCoaLzYq9WBlm8sC1iS2FSgLhYlvT1RcK3e+ttP/+qz+dz1rZzFi3ghERERcrUP9wXClbUb0ll+4cAHh4eHKb6Xe9v7GzMnJwbp168DzPHieR1lZGd58800IgqB85vF4wPM8BEHAP//5T9x4440/9qU0YUIX11ZkZ8KEH7Ql6aqvr8fJkycxatSoNt+n0TayrPCnXMflD74Ne/VqkCiGAgVKl1yIgmhoFy7DHmAHDy0AACAASURBVGVHylMpuvU1oVGhGttqX0xc2Bxk7XtvH1gbC17ktduJwIzsGQpZUWrXaP0eSTK8e3TJOPDRAa0sramey7sHVnRiNJaNWabKMrE2FkmzknDgwwPImJ8BxsIoTnWy+UFAiadXEOuodjT3zGq6L4XLClVErraiVmpqq2PqMGnhJHQd2RUN5xqw+t7VqmU0RSPliRQc/N9Bw+ujOqYWvqrBZCYpTl+ex4VyuON/d6DXTb0AAF2Hd/WfzfMdgtYa4OhNElhCLYayvGBs44MFY5NcGQPJ4VqDqvwq2DrYQNO0Wq7ZBEII/jvqv5r6MF+Igog+U/qgKr/KUO67btY67bW+um0PAUgEKn5BPJIfTFbeiUDSXQoUGBujef+9v7eudXhLEtvKqKKiogK9e/du9UTiwIED8cgjjwCQXBCnTJmCDRs2tMmxmTDxQ8MkXSauK7QF6RIEAYWFhUhMTLwqDkl6pEsmXLK04lqF3AtIhm8gY1Sz401WfDMxaYvTFGMKR7UDsTfGYs87e1R1QrRF6rU0esFoZL+qb71uCbcgJjlGTTwMwFgZ1J2qU4iITGyqCqqw+p7VutbelIXCnSvuRMyQGKW5bkT3COxetFuzLnFreypVFVSBiM3Xi+akPleH1xxWmh3LZFWvbqxDvw7SbLy3QyJHIaJbBCrzKg2JMM3RcDe4VQ52RoFv3MQ4VBVUYeOcjZp7STxSVk0mqBQjWaCLEMFyUoNg2kJLhIsEYSnOABCaCIYIEIEEDvQNpKUiEZVGx/LzJZNR+TnzB97BaxptyxlN7wkCd4Pb0JiBeAgm/G0Ctv15m+F70CIEybcG3DMgaGdBvpHHyntWSqTbKJMboI6LsUnfmcrkg7/MVduZn7YIIi+i9PVSlPQpkTLzfhqYyyA8keoEfTBp0STTPMMAhJA2deAtLi7GwIED22QsEyZ+DJiky8R1gyvVcstEqLi4GD169AiqD0hbyQsFQep9cz3Z4OrVIKUtTgMA5TPBLWDM/DFImpWkSOh8MzHpc9Nh62BD7YlaZL4oNXKlaRqEIWCtLECAtCVSgJc8Kxm739itm1EgPDEkHr7gHTy+mf4NGI5R+hklTE9Ar8m9kLZEXwooukUc23AM39z1TXOfJpbWBOsAMGr+KFWgJp+3qkeUh+DQ14dwYtMJzfY025xl8SapFE1BZEWwVhaiIGLIw0OwfNxylXTQl2D4yiHtUXZMWjQJ3//Wp5Fw06OZPi/dMPDe9/4+3L3ibrhqXciYnwEuhAPxEIx6YRT639Ef7gY3nDVOrPn1Gs1xUByFcX8ah+y/NTWtbrq8glPA8KeHI/cd//2yjODdiiAYwm0In9c8cWYiyjLLVBMEExdONOzJJQoiInpESIRGCIIx6WQDvWWv9afrkfVHHamtsjJw8z9vhiXcgtJVpUGbsBAXaZGZh2Z7gagmjmKGxGibRv8EIHpE/UybHyQ/moyCTwpAMRSIh2DSoklIfjT56h3kNY7Lly8jLCyszcYrLCxEcrJ5vU1cuzBJl4nrBlcqLwSAyspK8DyP7t27X7V9+m5DCAHP89esrNAffCWHMtHQ+wzQt1bnnTxW3bequU6naRltpXHnF1JmSR7DyOmQ4ii/xhWywQIgBfmy3JB3S8H5+sfWK5mlhOkJqCqowt639mrO19sUAGiaHfeJ7xkbg+RZ6sBBlvT54vg6/XoZvpFXsiy+JJW1sbjz/+5ERLcILB+3XLUsc0EmJi6Uau28iYJsXS9fn5jkGHBhnKo2yxJqQe57uX4lcsfXH8epXaeQ+WImBJegENOcRTlInpWMjgM6Sjb1OpkemqERkxwjSSh9SN2+9/Zp5Hm0RSqap7mmrAyt7bNFc7SqFYHe88WGsIi7PQ6lK0sNzwvQZmkLPylEwScF0jF5Xd9xfx5nSIYaqhvAWIPsQUVJMlTVuk2y16qCKmS/lq3NqjHAoPsGofeU3oi9UbLhX5qwtE376QWC6BEhQMD6R9ermkavm71O8y4AMJSasnb2itpQBCXnbOFl6Z3WG2MWjDF7cQWJurq6Nq11Kyoqwt13391m45kw8UPj+orwTFz38JfNulLS5XQ6cfz4cQwaNOiqOiB5HychBG63+5qwh28t7FF2dEnpoqnN8v0MMG64rGeMwFpZ2NrZNGP0TO2pyRgyDKMxrmBDWFgiLGBDWNz6/q0Y99I4wyBN9IioKqiCo9qBE5tPIO/dvOBOHlKmhbEyyr6mLpmqe94tcQwkhKCqoApV+VUSifACbaFha2eTpG6+yziJ2MwpnoN71t2Dia9LBGzFL1ZgacJSFH9VDAC6roaCW8DBzwLXa5VtKdPdr0zsAGD0/NGguOZ3jOIoTF0yFTFJ+qYleoE5zUiE6t4N9+Lh3Q/rvj/jXxmvMhHRe76Ih+Dmt27GrLxZSFuahgl/m6BI5PyBYiiNcQvFUOgxvgcm/G2Cdn2OQlxqnGb/rI3F4JmDtTsg0EjzZNmrTLRlwsVYGAx+eDAYhkHpmlJsnLMR5VvLm0lmkPDNytJWGiOfGwnWJr0rijw0CIiCiIptFdL/+8ni0ywNcOrPWBuLqUuntujYfSE4BSU72xLQVlrKKPrcW9pCKz3u9L67TGhRV1eHyMi2q3crKCgw7eJNXNMwM10mrhtcqdSvrKwMiYmJ4Dgu8MpXsE9vQifbw1+vhKulsEfZMXjG4IA214BWFidDr+8VbaE1xhXe2TYAWNJ/id/9Hd94HKumr5KkRS2QX1EUhRnZasdBXxhK+oxAgNX3r4YoiJp6FO/r4hvg8y4ezhonLKEWOC9JfbJ4p5eUc146nLVObH1xq2bcnpN74tT2UwGzNHGT47D3bXUWUK5h85ZCMgyDYb8dhtgJsapspV6miLileqjs17JVUlVvQpW2OA3pc9OlOhI3AW2lkf1aNsK7hSs1gXqSVznTFxkbicQHEwEAgx8YjAMfH0DOGzmKSyPv5lWZEd7Fa7KTnsseVB2owshnRsISbsGW57dIwbsITF0yFR0HdNSV3HpYD4qWFWmupe8kAPEQ3RYGIiWi6BNpe8VxcV46ZuyYEXSWa+RzIxGdGK3OEotAdGI05pTMQVV+FVbdu6pFRhcN5xqUbKy/tgYQAJETFTlq2uI0RPaMBBvCqnrI6UFu3aB7nk27pFgKE/46AYe+OIRz+ef8jnfbh7chdnwsyreWq9xYZQmzieBRX1/fZvJCURRx6dIldOjQoU3GM2Hix4BJukyYAHDx4kVERkaiXbt2LdqutURPFEWVPbxJuiQ4qh0oWq4NPr3B2BlQIqVxCZRhlM3wJWjeph+VeZVaKZcP9i3eF+xpqNB3Wl/dps++SH40Ge56t/86HS/ILmoUR4G1sRI5aApY5fPytf4mLoKVv1opXR8WGrkXzdLInJ+pex2Orz+uIRlyQCpj6Nyh6D6mO9IWp2HD4xsUmaDgEVD0eRGyX8tWyR33vbcPI54aodRb1VbUImpwlK65Be/iMad4jqG0SxRFEJEo+yQuAgKCjXM2IjoxWrkH3oT77P6zSoNm7xode5QdYxeMRfKsZFTlV8FV68K6R9epiChFUxj3kpYgZi7IRPy0eCQ/moz4afGq4zWy/d+5dqfGBMUXcm83vRYGepMAFEPB3eBWkzw3wZBHhuDARwdUEk7GxmDEUyOk/2cY8B7pwZCbfc8pngNbe5v0jngRQSak6Z0x4HVxE+MC1lDK9XWsjcW0z6YholsE3A1uwx5yvhBcAsb8YQx2/X2X4TqcnUN49/CAhGvo3KFKE3EjabSJ4CAIAiiKarM65VOnTiE2NrZNxjJh4seCSbpMXDdorSSwuroaLperVV/oV9Ic2ePxXNeywtbAKEDjQjmIRETs47EYMW0EOvXp5LeflxJospJZh2wVb4TI2MiAdvN6YEKYgLbdJStKwIawmPCXCQEDODlD8v3T3wedUeBCOEz7bBps7WyasWWppRxEA17ZL51yGcEtNNdI6UC+Rt7NdKMTo3Em9wy6Du+q1GzZ2ttUMjRREJH1xyyNbE+WHXobUvAuXjfY3r1wN5JnJatdFpug2H7rkA/BJWDZ2GWYunSqKuMFAF9M+UJlqiFnGmVzBPm4KFprBEEzNEI6hcASblH1+/K2kpf3U1tRi9I1pYoRjEyOu6R0QcHnBdj1m13SPvzcdLm3m2+2TnAJkn28TlYsMjYSXVK6aMhD11FdNdk2e5QdlXmV0vvnnSVuOp/I2Eh4GtX914ibSDVqOu9A79t6K89DMOSJ5mhU7q3E6ntXq3rI5X+c79cxkbExiOwZqalB9L0WNcdqjHfOAPdvuh/dx6hreX3dWE0Ej7bMcgGmtNDE9QGTdJm45iCKYpvVXDmdTpSWlqJz586t2r61pEt2L7vWmiBfbehlqRgbgzv+dwfqw+rRoXuHoExOEqYnwFnrROZ8KcjNXJAJa4RVCbr1MPqF0dj1xi4wHCNZnVMiRLf/zMOEv07Ajr/s0G2y642iZUUo/qIYjJXR2OD7Qs6QVGyvQOXeSuxbus+vnJF4iEqe5w09qaUeWDsLiFBMNgJBJKLKoEIOrrNeykLuv3MNJZh6xMASatGYgeiBYijD5tlV+VWKEYoeBJeguGDK16q2ola3mXbGCxmInxYPAH6dDvlGHu37tNeQdcEtwFnjhKPa0UzaGKqZEHhJOaMTo/H9k98HR0oYGlX5Veh1Uy9VFsYSasHyccs163tbmfuSB6Msztn9ZzXPsneWmKLUxJCiKEP7+z5T+ij7VtoI0JSqkbU33PVuZP8tW8qaNV2jgo8LAl4XiqLQdXhX3eNgQ1mIvCi5Svp5PiAAFdsqNKTLROvR1vVcpnOhiesBZsRn4mcLURRRWFiI/v37o76+vk2s34Pdb3V1tWKgITek9P73Y33u3Rzzx4CRzXynUZ1wvuQ8unXrFtQ4F0ouKDI5f72tgKa+TfM2KbU3I343Av3v6C85/+narUkQiag0Kw4G3seyce5G3WORYY+yY8BdAxA7PhYHPjgA4qXfkp0WGQujkRP6Qi87oYcbX70RCb9KgD3KDkEQkPE7nSbLXmCsDNwNzcH5oRWHsPHxjc3kwWCXtJWWmsx6kU/F8MMP4QKk3kp6NXyHVhxC+rz0gE51vJPH6vtXSy0GFqehZ2pPXbLDWBhUFVThcuVlXVKmrGdjwFgY1fPqafRAJCLWPrQWgluQao2MsjQUkLs4N+iaK0+DB6vuXaW0L/DOoimOlE2Z3WCszH2JmKPaga0vbtWsJ2eJK/MqwdpYuN3N953wRDLfoKGRGMoyS3uUHT1Te+LOL++E65IL6x5ZZ9ynzGeMQOYyjI1Ravt8Ja2gJZLP2lhs/t1m/6QLQM4bksOmmdlqG9TW1iIuLq7NxisqKsJDDz3UZuOZMPFjwCRdJq4ptCUhOH78OCIjI9GpUydcvny5VaSrpZkuQgjCwsIwZMgQABIBk/8RQlR/G30u/x3s+i39vKVoayJoH2nHbZtvg+OMA2HdwxDSMQQFBQXo2rUrKoor0HC6AeE9wmGPsuuOcWTVEWx9ZqtGIkezNC4evwhrB6uyfuP5Rmycs1EVGO96fReSZyVrgmlA3XxX5EWNBbvgFtB9XHeUby73e80Ep4ADHx/A2AVj/a5nREL91Zo4qh2oyq8CKCCiW4QmO6G5fxZaIVwAwEfxAe26vbMfjmqHZGARTLaGpjX1TMHKzya9qW1Cq5g0+BAu2kJLDZh9CLFcByfXKemZl3icHqy+ZzUoljKUqwHSuy/L96ITo1G2tQxZf8iC4BJUxMQIvINHwYf6mRzKRkF0au+Z4BSUyQO9HmExyTGtrj/StdO3s4jsKd1nI2dRkRdBMRRoC60iSXrSUeImbdIYmrEyGL1gtIok9UztqSZWBBAhKpm1QPv1NdsxcWVoaGhAaGhom413/Phx9OnTp83GM2Hix4BJukz8LFFTU4Pz589jxIgRymdXm3TJdVwMwwTVePlaQFsTPvkfG8XC3skOURRx4cIFWK1WnNxwErl/zlUMB4a+PBTd0rqpxnJedCLzmUxdaRvv5lFRX4HKfZXK+hdzL2oyEcRNsPXLregwvANSPkuB66wLdAiNS3mXUPZRGYizeX2RFnEp5BLGfT0Op9acwvFlx3F612mpPof4fy52LdyFjrd0REjHEL+ktFNqJ0zPni6Rzdhw2DvZ4aE8CO0XCoES0NDQoKxburIUm5/c3Bwc01LmxhuMhQERpFoc78bSAOByuXB672kN4aJZGmAkm37f3l4HPjrg14CEYiWjD1EQVY6DjmoHKvMqERkbqRBL0M3EyBsjnxupm7nRJQqhUp8y50WnoaRNJgTJjyajMrdSbd5CoKqBA6SMikgkp0i58bScYZQdGSmaCq7/VgBQLAUaNAQYuP1xkszQV5KZuSATc4rntJo06JEq3sFj5fSVmPzmZCQ/Kk1E6DYGF0RNw+eWSEeDARfKgQgEY+aPQfwd8apMKyA9C75GHy2BkRuqiZZD/p1rq3rl+vp62O32Fo136NAhPPXUU9i1axfatWuH2bNn4+WXX24zYw8TJloDk3SZ+NnB7Xbj0KFDGDZsmPIl/kNI6gRB8Nuv5lrE1ZYjut1unDp1CoN6DcJHaR+pAqoDrx7AqPtHqYLMyrxKsFYWbpc6IGOsDCYtmoSY9upMwImGEzgIbe+phIQE9BrdCwBUQbU34QIAilBIujEJoihix6c7JMc8uXeSlUGv23vhxLcnJJLnQ+4YjsHlI5fhrnIjpGsIrO2tSqNsDSmlRVDdKdQL9ag7W6dLVl0XXdj2m23qwJlo66gEtwAqhILgEdD7yd6o7VGL3bt3AwDqq+pxYskJzfXo+0xfxNwYA2eVE/WH67H5+c2gaVoKtAPMOQx6ehCih0dLWctOITh58iTK15djzx/3gGZpEJ5g7MKxuHv73bh46CIyHstQBfW0lcaAhwegvr5eQ0xtnW0aoiDyIiK6RaDX5F7omdpTsTr3vg5ygO2odqDkqxL19joZEVEQMe6Vccj+azbEpv8AqJtT64DiJPc22Vky8eFEFHxU4Fc2d9NbN8EaYUX6vCb7e58JBCPbeG8Dj9ZAyarOTZfaCMj7cxN8/9vvUVtei8G/HozJ/5iMzc9s9iurZW0sJi6ciDO5Z/xKNFuCtMVpiL0xFmWZZVg+brkq85swPaFFve4YK4MBvxqA4q+LlYkEfzJdEy1DWzdFPnjwIBITE4Nev6amBjfddBMGDhyINWvW4NixY3juuedACMFrr73WZsdlwkRLYZIuEz8riKKIgwcPok+fPggJCVE+b631e7DbycG0aQ/fMpSWlqJPnz5oONkQVJBpJIHqd0c/RQLoHajFDIkBxamd6SiOQkS3CFTmVapn6r3A2BhQlGRb3757e5zYfEJTM8JYGJz49oRh9kNwC8ial6WqzfJn9OEN2V7dm0BW5lWC4RjDGiIulGuWWjVK51u+tBxpz0jBptPpxI4VOzSklQvjMOzWYYgZGoOG6gZ89MRHED2iYSbGF8XvFiNhWwKsHawQRRGNFxqx5497IDgFZYydC3Zi6qapCE8Ox9BXhmLfK/sUk4aBzw7EBecFnK84r0s2+8/vj+LXi6W/3RIh+mTsJ+j3fD9ET4oGwoC+z/XFkTePKBb3fZ7tg9y8XNTk1IBQQdRUscD2V7arnpMNj2/A0L8O9duAN25aHJKfT4bjtAM1B2uQ9/c8v8SAC+MQ1i8MET0iMPGdidjymy2adUb/YbTUbsKt71ZoBL1nxhcJ0xNg62CTSKqPI+Gef+zBnn/sMT7ZJjA2BsOeHKbUmPmTaEobANGDowPauYMCGi80In1uuvROeRmSyPWRY+aPwY5Xd/gdhrWxSFsivWupf0s1LeGvAtqadLXURGPJkiVobGzEypUrERERgZtvvhl1dXV45ZVXMH/+/DY9NhMmWgKTdJn4WeHkyZOwWq0at8KrSboIIYpphkm4gsfFixfh8XgQFRWFRqox6N5bExdO1NTplKxoymboBGq3fXAbNs7dqATkQx4eosykGxEmURAxc7fk3ndoxSFsnLtRk5EIZL8umyzIGRjZzU6udwKgGxB6NxgW3ALGzB+DpFlJfm3vGTuD4b8djtx/56qCYG/ievz4ccSPiMeBRnVjat7Fo2PvjrBYLDhdclpjnR4IjIWB1WlFly6S1XtlZaW235OFQTuqHbr06QJXZ5eq2e3BRQcR1z8OA6cP1B1/6NChGDVtFJaNXQYBgnIfjr11DDc9dpN07UYDjsccqCqoAkSgtqwWmQ9KpIA4ApMuikjGJR5P87UjboJ9f9oHCsaZnPJvy5H8fDJCuoZg84ObA8oPBbeAI1lHcOifh6TMqg+BpjgKO/6yQzpuDwGYpubATUSy4FgBcEw77rkt53DkH0cUaW7vJ3sjIj4CIV2kDKt39tDDelrVPkEGEQhy/5MbVANx2kLj9q9vx9q71gZcd93D66QMo88l9H6GGas+A2ZCpGs09sWxSJqVZOjqaKJtUFdXh+jo6DYbr6ioCLNmzQp6/Y0bN2LKlCkqcnXfffdhwYIFyMrKwu23395mx2bCREtgki4TPxvU1dXh9OnTGDlypGaZ3DurpQiGdPG8lCUxCVfwIISgtLQUSUlJkrmGgaGEXsAUkxzjt2cPoA7U9Oy3A9WgyO59jmoHNjy+QUNEGCuDlKdSsO8/+g2VGTsDmqLh4dXHuGzsMjBWBp5GDyhKqoXyzoJdKLmgmenf8eoO7H5jN9KWpGH0gtHIfjVbu0MBSPhVAva+vVf1sSKzczjQ0NCA6LBoUKLWFlyG65JL93xojgbFULr1NL7k2F/zake1A5vmbdIYlqx/bL1ft0d3g1vqF+VNaigoFusA9O3bDcDYpCBdJjQTF07E5mc3a9YTPaJfkxLWyiLUI5kJ+MpwaY5GlxFdcHrn6ebr4CYoWlhkKNlUmlw3kSKKpfDLL35p2DIAkDJcS3+xVCJBTbfv6FtHwYVxEAURN/37JsTfFa+StAp/F7DthW2G5+UPHYd0xPm88wHXo600Bj47EKVZpX6bQsswMsLgXTyOVB/BkfQj2POKTiaOA2LnxSL6hmhYoiwoOVkC6tSP5xDrzzlWb9m1CIfDAbu97chsUVFRi+SFJSUlmDRpkuqz2NhY2O12lJSUmKTLxI8Gk3SZ+FmA53kUFRVhyJAhhjVVV8MyXhAECIJgygpbiPLycsTExKgkoEa9hXxxdv/ZgEG14BJgCbUof8sz3kpzWC/CpQnmIQWAkbGRqCqo0s38EEJw4P0DEARBIYnqAwAEUT2mLGGU9yVCVFzw0uelK33H9LIlvJNH+rx0zNgxA7vf2K0hP5MWTVJstfWIa1FREUgBwfIXlmuyHKyVxbFNx9BnSh9YI616lxM3/fMmbHlOK4WjrbSGHNuj7EicmYj9S/YrnyXOTFSuP3ReE9EjqgiUL4xMIL65+xvc9uFt6Jna02/tlS8oisLM3TOVrOPhNYeDIga+ILxEJhsvNGr2TTwEp/ee1m6ksxs2VCLfvpkv+Zj8ZWuMGo7L78jm32xGWHSYirglTk+E86wTe/+1t8WZzWAIFxvKYticYdj39j5j0qpjQ69ZxULj1qW3IiEtAZV5ldhv2w+3x6eek2YQNSYKYyaPAYA2d331rsFsa1fZlqKtCV9rPud5HjRNq2owjdb3/UwPgiCgsbGxRY2Wa2pq0K5dO83n7du3R02NnybZJkxcZZiky8TPAsXFxYiNjTX84m7tjKK/TJfsVmjKCluGxsZGnDt3TuUsKSOQHMio15AvRIhYPm65xmY7MjZSE9gKLgG0lQZxEdBW6V4qRMJPRkIO/igrhZHPjUTeu3lgLFLjZcEjqAJKmqVBsfqZInm5EeFS1uFouBvcmLpkqkSsdHo29UztiTu/uBOgoATZDQ0NqDtbh5wFObrju+vd2PzsZnzPf4+Rz2mzxABgjbDqklNK1L5XjmoHCpcVqj4rXFaIsS+ORWRspDG58fOKGslKRV7Exrkb8csvf+m3F5ivO6Ovy2Lm/MANo4Emq3pRqhsifDOpra2oBWNTSyppi/SdQAIwC9YmuTG6Lrnw7YxvtSsE4ERGdY4yfPuXiaKoyFcZhkHv23vj+IbjAAUVcaQYCoMeGITiFcWBHQMZqGSBIi9KEkSjHmZAQMIFqL+3jeS1o18ZjXZx7cBxXOABr2HoEbe2JoF6y3w/czgcEEURJ0+ebNH43r+jL730Eqqrq5XzunTpElJSUlTnyrIsWJYFx3FYvXo12rdvr7oeer/poihes9lDE9cHTNJl4rrHmTNnQAjx21j3atR0ybJCljVfs2AhiiJKSkoQHx/fKqJqNKvvC+IiIJBc2SzhFiVAFkWt9bW8vnSAwIwdM5SAPCYpRnKm8xM8EhcBF8phbslcVOVXYeU9KzUBpQhRl6DICFQfBkjBc2RsJCJjIzXEClDXgnlLFo8fP46OdEe/1022cd/1912aZYyNgbWdVTewF9yCpim13j2S5Z5dUrog4b4EtYV7E2rLag3P3VHtAGNlwIawmowSxVAABf1GyE1EiGIpUKAw4pkRmga5tRW1fgmfN4ibYMwfxqDbqG7K9Qf0CYFIRN2snur4rAzSlqSh1+RecFQ7NM8abaER0T1Csd7Xm5Dwlubq2ecDzfd3w5wNoERKMulouj/HNx7HjGypt5ol1ILCzwuR9x9pAqHkqxKkPJmC/Uv2647bfGG8/p+WMsVXUjcmQ3Cpny8lk+s14WAfb9cE5NcjfipyxGPHjiE8PPyKarq+/7558uSbb75BWVkZXnrpJeUzmbx5PB7wPK+RMrZv3x6XLl3SjFtbW6ubATNh4oeCOf1u4rpGQ0MDysrKMGjQIL8/SFdCuvQgywqvJ3v4HwLnzp2DxWJpdZAUaFZfD+56N/hGHhvnbtTUE/mCuAkOrzms/G2PsuPW928Fa2PBhXJSIb8Ox855+RBwvwAAIABJREFUIwcAYGtv07gcAtLMv8AbZLksNCYtmhSwuasoiihdU4qlCUux9qG1WH3vapRvlZo0e1ubu+uk802fl47qsmq43W70SOyhuW40R4OxB/f8xgyJQdriNF0jA5lQyQhU06WYnvggc34mHNUOzeeHVhzCkgFL8P3vvteVD/IuXjk+NoSFJcICNoTFhL9NULJEglMA7+SRsyhHs70l1KKbyRn2xDBpDB/s+vsurPzVSqx9cC2WJixF8VfFuvJEiqZw05s3Gf4KM1YGM3fORML0BMV5cPKbk5VnjbWxSJqVhOXjlmPFL1Yo+9JDwvQEpL6eGtBSnbiIZh05g9olpQtCOoZg/+L9IG4Cz2UP+EYeee/mBW547L1Yp2n1lcD7+UqYnoA5xXNwz/p7MPfwXCTNSsLFixfRoUOHNtufCf+ora296s6FFCW1YrDZbAgLC9NM0A0YMAAlJervkZMnT6KhoQEDBgxos2MzYaKlMEmXiesWhBAUFhZi0KBBAbNNrSVdgLYWTHYrNOu4Wgae53H8+HH069ev1WPIs93ewXX8XfFBbUsxVFA9hXLeyFEF/wnTEzCnZA7u3Xgv5h6ei6GPDdVsQ1topRbNMEA1iIdFUUT8tHjVeTFWBoxNTXBYK4uM+Rn/v707j4+qvvfH/zpzZkkmCSFskTWBCCRhCcgispRFuIAVrQvWayt6rS1otSpW0au1WqiKeK3S+71gr9da2tteRGvVnywKiVYFFFQkQSKQkJAQSEICM0kms51zfn+MZ5jlzGQymclkeT0fjzw0J5Mzn8yEyXnN5/15f4KClXrBruXovqPIycnRfNzmPDknovU8Vzx8hbchyW17bwvajFlySn6NNLTuy7cML9RzIIhC0M+hNjKR7BIkm/YDqL4x4r0g//9uwsqjKzF8zvCgkKh1H84WZ9BjrTPpkH9zPobPGQ59SvBri+ySvc/B9p9tR+EvC4NuozfpkTkpEz8v/zmW/XkZ8m/Jh2gSvYFq6ctL0T+3P7565StsHrsZW6/aiqI1RZj/3Hz8cMcPseLTFSj+U7Hm8x34GJ3ccxKFvyxs9xsSgOeNBvsFu/f3SGfwf00TjSIuf/hyz/OZZgxxlvgJbNRiHmjG4CmDvaWzycnJfPOrkyiKAofDAZNJe+1nNEpKStrVLh4Ali5dil27dqGpqcl7bOvWrUhOTsbcucFvlBB1FtY9UY/17bff4pJLLkF6eui9azoqMKxxHVf0ysrKMHz4cBiNHbtwC2y4AQBl28vaXHeiFYbUFtu+1AAV2BzCPNCMD1Z/gEMvHwo8jd+F4dR7p0a035F3XN81kdDqshh4H6LRf12VGiIkpxQ0C+RudUNIErzlNr7nP/XxKc9+RxGUvxXcUQDAc3H/7T++hSQHNB2RFVR+WOm3B5lWUxRbvQ32C/aQsyCyS/ZrfgIgZCMTvzEaRW+QCmzCEhhCXM0u1B6qxeApg73H0kekB81oC4LgfT7barARqvRUDaPmgWaMmDMCjccaocBT3qq4FTSdbsKhVw5h932eronq81q0pggrj67ULtPU+/9uqiWlCpSwgStwrzrf80mShHd+/A5kl4z56+drzlJOumMSxl47FjUHa3Dum3M4+NLBsI9JrIhJYthNjevr6zFw4MBOGQsBdrsdSUlJMS1zrK6uxrBhw9r1PatWrcLGjRtx/fXXY82aNSgvL8eTTz6J1atXc48uSiheFVKPVFdXB5vNhqysrIhuH6s1XZIkQVEUBq52ampqgtVqDbvurj183+02DzRj6ealF2eJkkTMfmI2Fm1c5DfbsnTzUizZ7D8Ds/CFhUHv7KtrpwI1lDZoBi7R5LkwrCiqwMt5L+PQfx/ynFME9GZ9RLNr6poi9edSOxH6jnXBhgVBgcXV7MKhVw7h9e+/HnxKo4BL+vnvV2ceaEbtV7X452P/hOSQ/PZaMqQYIBgEv/JIySHhoyc+wt5n92Lz2M34dO2nQECFn+yUsWPVDpzcfdJvFsb3OVJLBP/xr/+AJEnaj4kO2DJ7i7eEzlZvQ+OxxjYfOsWt4OxXZ/Fy3st4/erXsTl3M/at96xNm79+ftDti9YUBY1zyaYlEAwXx6QGSfNAM2Y/MbvNMWhZsGEBWhtasesXu7BpzCZ8uvZTz1pDuwzFreCjxz7CB/d9EPyNwsXwGBjonE1O1B6qBeBfUhq40bFKNIqY+9u50AnBr1eCwTPzq7gU70xa0ZoizF8/36/EUf3d3jJ7CwofKsShPxzCsDltXyTrU/TerQYM5vY3uZj+4HSsKl0VdkPx+vp6DBgwoN3npuhYrdaYvsnZ0NCAfv36tTvEZWRkYM+ePZAkCcuWLcOvf/1rPPDAA3jqqadiNjaiaHCmi7qVSF58W1tbcfz4cUybNi3iF+tYlBfKsgy3282ywnZSm2fk5ubGbSF4qHbzY64ZE3QscJZs94P++zOF+j2pOVijeVyWZDisDhStKfLb/0stIdvx0x1wS6FbmQsGwduQIZKfKbCDn1ZTCsDzOz803z/k2uptKHw4uBROTBIx56k5yJyUib8t/FtE5/cl2SW8fcvbUGTF28DD9z6D9jrTA8u2LIOjyYHd9++G7PLfRNphcaDoEc/mxm0p+EnBxc6PAXubzXh4BoxpRjibLrYZ993DTZU1LwuiKMLt8jxPapBMykjCwAkDgzoThiIYPG2yF2xYgPoj9UHPVSTcNjcOvXIIWfOz4HYG/94UrSnC8FnDUXOwJnzbcRG4bd9t3vLJwLVcE1dMxNFtR/1mTnUGHWz1Nm+bdwWK5u/22QNncd0b1+Htf31bu4GJScSYa8eg9M1Sb8fI3Jtycewfx8J3NPzO3N/OxfT7tTtpqux2O0RR7PDMOUXOYrHEdP2c1nquSOXn56OwMPi1jCiRGLqoR1EUBcXFxcjLy2vXH9uONtJQ13GxrLD9Tp8+jfT0dKSlpcX1frTazbd17MwXZ2BINvjt/WNINvhdlKtrXTJytJt/KG4FhQ8VBs2Y6Yw6uGwuT+tw+8XjokmEIiue2R7FMyOilse1NX6tRhNaBIOA+S/ODzqf5ZQlqEQR8ISmfz7+T+T/KD+i82tRu9sFdjPUKhFU3ApMfU1oPN4YdNEuiAIKHy4M28nRSwS+fuVrzQYSbrsb+57bByGgNaFvUw810FpOWYKeJ2+QlBTIUkATEpPO0zAicOyCgNv23gYgOBy3R8mWEhzdelSzrbrkkvDHGX+ETq/zm6lUiUkiFEXBzDUzkdw/Gcn9k4PGqU/SY8rdU1D8Z//W/u5WN/Zv8N8HrvChwqB1fG67G/WH63HVf1+FnXft9HQFtUvQJ+shSzJkScY3f/0GwMXOoKWvl8KQ4tmwWdB5Ngb3DcOqSAIXAJw7d46zXJ3MarUiOzs7ZucrLi5GQUFBzM5HlGgMXdSjOJ1ODBw4MKp32zpSXqi2h2fgah+n04mqqirNPbm6gnCd9oDgNuxZV2ahck9l0HlEY/BMguySMWTqkKDzSw4J0AN6UQ/JKWH3g7thSDb4tXnXYqu3Yf+G/RH9XKNXjsZlKy7T/nlDrKly29048pcjEZ1fpbV3l06v8262HG6vM+spK/avD/55JKcEvUkfWeiSoLkFgHd8RhHZV2bj2FvHvMcm3DYBFUUVfs+r1lom4GKQDCyHzF6YjaT0JG+wUOmT9HC2OHHuaNsbCEdLXWMmubR/7szJmaj7qg6fv/g59m/YjyWblmhump3cPznoNVGRFeiT9P77jYXYymDv+r2469u7vOvPjClG1B+px3t3vhdyHZz6eOoMOlzzl2tgqbSgaE0RBFGA7JL99pxrS11dHfLyQpceUmwpigKXyxXTmcWSkhKsXr06ZucjSjReIVK3Eq78rLGxEZIkYeTIkTE9b1vf59senqGrfY4dO4acnJwuu5dZuE57Wm3YT+89jeveuC5oVkt2y5j9xGyIRhF6s967FqZ/bn/NdUVwe/ZOUlyK35oatTudrd6GM1+c8ZvZUmepAuV8PyfoWNkrZZqzYr4/r7p5ry9BJ7TZDVI0iZj+y+lYtmUZrvpvTzt9X+pmy5vHbsbnL34OCAh6vARRwO7VuzVnqKbdOy1mLcdlp4yyHWV+xw6/dhi77vJ/XovWFGHW47NCniewCUv5e+VBgQu4GNhDzYpqEfSxLbmt2VcDt92/42HWvCxvZ8cVn6xA31F9UXu4FoZk/7VW+mQ93A7/kkZFUjDl3ikIJDtkHHr1kHftXu3hWmz/6faIygdFo4ikjCRM+skkrDy6Ej/c7ukMGmngcrvdcLlcSE5Ojuj21HEtLS1ISUmJ6TmPHj2K/PzoZ9eJupqueaVD1E5OpxNHjx5FSkpKVAEq2vJCdTNdlhW2X2NjI1wuV5fvLhZq7ZRW9zhBFJAyKMVbVqXOHIxfMR4fP/Wx54LT6X8hnTkpE4ZUA1zNYTaX/Y7OoMOh/zmEz57/LGiT41B7lPUZ0Qd6sx5u28WLZbWjX2CJZPqIdOQtz8OgCYPwxxl/DDqXu9WN2Y/NxpS7p+D/Fv9fUNjQGXWY8vMp+PL/fekd34TbJ6D4T8XQ6XXecjF1M96PHvsIOqMOChTPvmBGEbJbhizLmhfn+iQ9pt47FQMnDPRugqtVghaKIArQ6XUQTSJkl4zLH7ocB1484DdzI4hCUMmhzqBD8oDkiJ+noPs1CBD1Fxuq7Lp7l2ZnTC06vQ5Z/5KF8u3lfmOc+G8T8fWrX0cUYsKe36BD7de1SMpIQu1XtZ61cgbPJsyBs4Ruh9v/sdEBE2+fiPG3jMfB/zwYVM742XOfYdIdk9Da0Iqdq3ZGNjsJ/9lkrRLgtjQ0NKB///7t+h7qGKvVGtPOgE6nE4qixLT9PFGiMXRRt6eu4xo9ejQqKipi0oUwUkajEZWVlTh79mxE9xH4odPpoj7W0e9vz/3EusGFLMs4duwYCgoK4tY8I5a0Lvy0Qo7acnzSTyb5t3eftcXv4lhxK9ixagey5mWF37srgOSU8NmGz+C2X2xa4LtGav76+UFrhb7a9FXQeWRn6BLJ+evnQzSJnrKxgBI1ndGzUe6wK4Zh3I/GBTXR0Ol0+OK/vvCEmO/GV/ynYqz4ZAVqDtZg9+rd3sDlOxYA0CXpcO1frwUE4J0fveO3jk41/7n53j3BsuZl4eO1H+Pw/xxu83EzpHrWCi3ZtCSoUcreZ/b63VZySBD1wXuNya7gjYPVx0SRlLDPoQABKz5ZgeT+yXg572X/9v06aK7N8n5Zr8O4fx2Hit0V3sdKkRQU/6kYt++7HdX7qvH+fe+H3OetLW67G2/98C0IonDxuWm9+LPpkjxh2O1wA1LAxsYy8OWmL/Hl5i8xYu4InPrwlP/YDTp8vvFzfPH7L0K2rBdEAd/7zffw6bpP/d5IaG/Q8lVXV4cRI0ZE/f3UflarFYMGDYrZ+b799luWh1KPw9BF3V5lZSXMZjMGDRqEysrKTgtdLpcLffv2xYwZMyKa5VIUxfshy7Lf56GOtee2arv6aM7X1v2097FsK8y1tLRAEAScPHky6nCpdbwzw2WokFO0pghjrhnjDWpnvjij2QJd3UNr8JTBmPX4LHz02Efad6QDjKlGyC4ZMx6a4SnJ82no4NttL9JZM0mSUPlhJbLmZXlLJNUL7Q9+8QEMqQbNzYZ1Op23ycSRvwWv77rs55fh0B8OBa35cbY4kbM4Bx+4QzePEHQCkjKSkD4iXTPc6FM8mwn7OvK/ba8x0xl0mL56OibdMcl7Ia/+t3pfdVDgESBg1q9meUOAq9UFySXh/Xve995GTBIhuSUIEDzr9eySt6OfFnUtl/W0NaioX5/0XXMJjaYXAOBqdWH7T4LL8nQGHb79x7f47PnPoDfqg/ZhC7X3lsqQaoDi9rxuyHbt+9Yn6THv6Xkof78cZdvLQs/MKQgKXICnlPTACwdCjgHwbEUwfM5w79ov39nkaMiyjObmZu7H1MmsVisuvfTSmJ2PTTSoJ2Loom7NYrHgzJkzuPzyyzv1fqNpD+97US+KwWtveoq2glxraytKS0uRn5/vDbvdNVw2GZogmkW/gKLoFBzcfRB9x/WFIAiei3Z3cIiQ3TLONp7Fl2u+ROnLpSHvR2fQIf/OfIy9ZSwcFxxwP+t/cS05JegydGhqaoJhgCGiWTPFpWDnXTvxg//7QVCJJADN0KYz6rBks2cG4uSek5oX9C6bK6jcTy0VMw80Y8GGBSG79qmt0JduWqp9Oxl++6NZTlkgGtpu1S67ZOxbvw+DpwxGZkHmxdb6oTaydsv45KlPsOD5BUjPTsdby98KmvFTZAWi6GkSEkm5oeyWPaV7a4o8s5QBP3c4gk7QDKGSXcK+5/YFhTUx2dP9Mu/GPHz71rdB5xdNIhZsWIDMSZmwX7Dj7Vvehsul/TM4W5x+YTMefH8/OhK2VBcuXEDfvn27xQx6TyHLnpLgWK7NLS4uxrJlyyK+/WuvvYZ/+7d/Czq+adMmrFq1KmbjIuoIhi7qttxuN44cOYKCggJv8InVJsfhyLIMl8vFdVwhhAuX6p5ceXl5Md1EMxEURUFLdguKV/u31RZkAeNnj4epn8kb6vA7oOi+Im+JlaAXMOaHY1D4w8KQMxwq2SHj8P87DJvFhhN/PnHxfoyex3nC4xNwrvUclErPfeU/ko+Sp0sAEZBtoc+tCApKj5bCZQ8dGsRkEVk/yULKiBSkjUlDS0YLvvjiC5w/fl7z9odeCQ4x4x8cj4qKCtj22ZA6KRV5d+fh6H8d1fz+ki0lyLk1B0OvGYormq/AZ0961q4pkoLv/cf34Da50dTUBJ1Oh6rPqiJezyU7ZLx101sQdAKWbFqCtGFpmoFLJTkl7PnlHlz/xvWe9XeOgBsonpmkoOMBdCbPa8T89fM1A1coYpIIKMDEOyaieEuxd38w/yEomr876kbIWrOAgt7Tsr5/rme9k63eFrLsTy31izkdIBpE77q6jpYSBqqrq4tpmRu1rbm5GampqTE9Z3FxMR5//PF2f19hYaFfA5VRo0bFclhEHcLQRd2Soig4cuQIsrOz/TomdUbocrvdUBSlR89WxUt9fT0MBgMyMiLv3tZVCYKA1MxUzXbb/Yb7b1lw2W2XIfeqXNR+XQsIQJ+hfbBl9pY2A5dKdsg49j/H/I4JsoDbP7vdewGtmjBhAubcNgeWUxbUHvLMriiCElQuKCgC5t48F31tffHJbz7R/hkVAZMXTcagCYOQPCDZOyP49YGvg28rCtCb9EGzJue/Oo/DGw5DEAVIDk/TmXClb9+++S1G/XAUMq/KxL9c/i9oqWlB8uBkGNINqKqqgqIocDQ68PHjHwePIUxzCrWJw3t3vhfRv3XZKaP0q1LNWSbZJUMR2j5H3r/nYfSi0bCdtgWVmIomERAQNFM3dN5QTF8zHecOn8PeX+8NOZMXTQMNRfaM+cwXZ8LOPoomETMfnYmPnwx+jDtq0YuLNDcljwVFUXD+/HmMGRO+wybFltVqjembaIqi4Ny5c1E1WZo2bVrMAyBRrDB0UbdUU1MDQRAwZMgQv+PxDl2y7Ono1Z6yQvJwu90oKyvDlCnB7aW7s1DdDQOZB5oxcqFnO4NQ67wAzwyDoBPa7PQmu2VYq61+sxa+Y1BbdSeNSULVZ1VI16drNisouKMA+5/bHzQLozPoIEkS3r31Xb8uibZ6Gz55PDikfe8338Onaz8NOl75nv++ZYEbCQc68ecTOPGnE1iyaQkmLJ+geZszX5yB3qSH03Fxpks0ixi5cCTKdpSFXcsUScdA1bBhw5D6y1Tsf8Z/vzCdSYfL7rsMX2386uI+VYr/ZsiCQUC/wf1gHmCGIAhBbe4VBG+qDACnPzyNmh/V4MATB4JDud5Tbqg42/8aBwCQ4dk42aiD4laQ+3AuLll0CXJ/mYtjLx3zhGFJwbjHxqH+XL32OcTvZrONAmSHjEEzBqH+83rNx1zt0qk36SG5JMx4agayrs+CU3DCfKkZbuHizGWk6y7DaW5uRkpKCl+bO5nFYsGwYcNidr4zZ84E/W0n6gkYuqjbaWlpQWVlJaZPnx70tXiGLlmW4XQ6WVYYpfLycgwfPjymm2d2Fe1djxKqvTsAzHx0JvqO6oudd+0EhDbW/Hx3DXrolUMofLjQ23JdDUhHth7Bzrt2Qm/SezsTZk7K9AuH5oFmTLh9Ar7afLHL4airRqGysBKyXfZ2EVS7JGq1yjemGTFw/EDk/yg/om6C4agd9NT7AxAUaLWabUg2CSfeOYFYSh2QCqlZu6HI5Xdfjsvvvvxih8rZW/yeU8WlYN8v9iF9s6cN/9LNS4NmRKs+rsLX/xM8a6gr1wWFSkOKAUs2LcGOlTvghn/7f0EvtLk2zHdc6hq1Y88fw6wVszD+38dj9k9nw1JpQeqwVCiKgj9P+XPQ9w5fNByz18+GoihoqmqCeYgZpn4mXDh+Aduv9W/2oTPqsPCNhTCmG9Fc3YzkwckwZhhRV1cX9VrMtjgcDuh0Ouzf7wnJkYS5jnaLjVfH2O6kubkZaWlpMTvf4cOHMWlSZHuyBcrJyUFDQwNycnKwevVqrFy5MmbjIuoohi7qViRJQklJCcaPH6+5aDfa0BUJt9tzUcPA1X5NTU2wWCwYPXp0oofSJYQq69In6VFwRwHMA83ImpeFo28eReGDhZrnEAwCMidm4qtXvsLu+3YDuFhCt/OunRg0YRB23b0LskP2XrwXrSnCyqMr/QKird6G4j/5r0ur3FPpmcGBfxdCNfwEBka33Y2/L/970CbHkbj8ocshOSQc+p9Dfu3kw+1JVlFU4S2Vi5SYJEKAZzPzcDNhKkEvwJBiQNEjRUFfm79+flAnxCWblmDHqh1+5YBu+8XNh7VmRAdNGKQZurKvzMaBF/27/imyghHfGxFUzqquF4uGzqBD65lW9B3SF6ZhJmQM85T9nvnijLcro0qfosfcX83F4LGDPQdyL55n8ODBwB8QFCrzrvyu5ffUqIbXbp9//jkmT54Mg8HQ6d1iY3E/kYbLQNEGvFiES/WxaGpqilm4LCkpaXfoGjx4MNauXYvp06dDkiT87W9/w6pVq2Cz2fDAAw+0+zEligeGLupWdDod8vPzw7YDjsdMlyRJLCuMkto8Izc3t9u9gxtPk37iuagofMh/hsr3Yj7vhjwUPVIUFBJ0Jh2uevkqAEDRw8EX3Dq9DjUHagAx+HjZrjLkLM4Ju8mzaBSDZpJ8u8ypF/6CKMDd6vaGMN+ZDmOaEZLLs79VuI6KX23+yrMHVsBGvKH2JPOGyQjXNIlGEbN/PRvD5wxH+oh0VH5Y6R27ZufB7/bNEg0iXv/+6xB0/r+zxjRjUOt6AMial4W5v52Lf/7qn36zTr4t/dWPhtIGlO0qw5CpQzB51WS/WcbJqyZj2BXDPI/xKs841T3GfPco8w1vpj6m8D9TCLJLhjHF6LfGCwgxExvQPTJQpGW28dLa2gpRFGEwGACwW2xnhUu73bN/xenTp6MOl7t378Ybb7zh/dxmsyE9PR0bNmzwHtPpdNDr9TAYDJg+fTqef/55v8dh8eLFWLx4sffzpUuXwuFwYN26dbjvvvv4d5u6BIYu6lYEQQhbxhDtRX240KV2KxRFkS/cUTh9+jTS09NjWn7SU0z6yaSwTQXMA834/n9/HztW7fBcfLsVzFgzw7vn1JkvzlxcU+RDckrQjdAFbZjrbHJiz4N7sPv+3d6Ngu3n7cEByy1jwYYFKFpTpLlhbd7yPDgsDhQ+VKgZqPQpeix4fgFyFufg2DvHQraJV8cE+G/Eq+5Jtn/D/qDb1xys0Wxzr0Wn12HB8wu8AVcde9a8LJTtKkPhLwv9OiDqzZ4yTFmWg/a98n1sAsOHusG0IAaX+alhVRXYqj7ryiyIJtH7GjR0xlAA311Mf7f3l6IoOF9+HrZ6m194C/yZLKcsqPq4KvSeb98xphkhu2WMXzEeW2ZvCZpJ9A3W7dmwOFZt36NRX18fVeOF7i7R4bKyshL9+/fH0KFDoz7HjBkz/DoVzpo1CwcOHPCrZlG3aVEbWUXixhtvxOuvv46Kigp2MaQugaGLepR4rOlSywp78rul8eJ0OlFVVYVp06YleihdVlsXquFmENJHpGuGnnnPzUODrQHTH5yOA/9xwLNB8XfhQp0Jee+n73neSDDqoMgKBIMAQ7LB7+I7VCC01dtQ9EiRZmc/wNOsQp1N09qwWTSKgHixvTngKa285s/XeDdIbm1oDeqq6G51IyMnI3Sbc5POr/mE7Jb9NqtWmQeakbM4B7vu2eX3/ZJDgsFs8K5jAy62bw/V4txWb7u4wbQPNdgs2bQEAHByz0lYT1mDWtVX7vFvNLJz1U4IOgE779rpV9736W8+xf7n9mPp5qXIW54X9LP7Nk8xphmx+4Hdmr8bYrKIBc8vwJCpQ7Bl9ha/jbHVUshQM2pdWX19PcaNG5foYfQ6VqsV2dnZMTufzWaDyWQKWj6g0+lgNBqjWhPMCgvqKhi6qFtp68Uz1mu6XC4XZFlm4IrSsWPHkJOTE9NNM3ujUMEssNRPdsmY/cRs1JbV4puHv4HepIcCBbk35eLo1qN+wUdxKZ79nzzVQZ7Q85drkDnRs4FwYDdEX7Vf1waV3flasGGBX6la4MV/qDbsvpsXW05ZICYFb3586p+nNNdPeU7smWULXBumlvcFEgTBO5sEfLcRccBGyIIgYMWnK2CttgICkDnRv7RQqzzTkGrwzvRVFFXgv0b/V0TryADPOrDtP9uu2Speskt+wSiUMdeMQeFDhUElm4Dncc5ZnKM57sDHKpEzV+3hcrkgSRKSkpISPZRep6WlxW/blo765ptvMH78+Jic680338SAAQOQlZUVk/MRdRSvhKhHieVMl1rOwHVc0WlsbITL5eqVJT+dyXdG4uxXZ1G0psh7wa420Pjmf7/xCxdadEYdkvomwTzQ7FcuJ7s8pYZyKrOCAAAgAElEQVTqrFfgfQSe48rnr/Qr51ODoWZIgieg+K5ZUoVaP/TZc59hZelKXLf1Orx9y9twtVwMkrJbDmrNHljeB3hmp8p2lXk6BDp9yguT9Zh+/3Ts37Dfr6yu9nAtdt29K6gMTx1n4MybInlm+lobWrFj5Y6IA5cq1N5cgGc/NN91eVrh2HLKAtEkam47oIZlrXFrPVbdwblz59C/f/+2b0gxFY+y++LiYhQUFLT7+2644QZMnz4dEydOhCRJ2Lp1K7Zu3YqNGzfy7zd1GQxdRAgOXeo6LraHj44syzh27BgKCgpY2tEJ1Ivt/1v8fyHD0PT7p2Pfc/tCb7b73QW3VrncB7/4ALtX74Yh2eC3BkolmkS/tWZqEDCmGOFscSJrXpZmSDKkGDD13qnIuzEvaJNn80Azrnj4iqASQ53RMxuTWZAZtoOhb3mfb5jzBkqd4DcW9TEouKMABXcUeIMMALyc93LIMjzf2UZFUCAoApZsWoKKogrsXLWzzYYfWVdm4fTe05rj0eJqdqHwl4XYff9uTLhtAor/VBwUBsNtSaBP0sNyyoLBUwZHtW6rK6qvr8fIkSMTPYxex2q1hm1qFY3i4mL8+Mc/bvf3jR07Fq+++qp3A/X8/Hxs2bIFt956a0zHR9QRDF3U7YS7iI/VTJe6WJdlhdGprKxEZmYmkpOTEz2UXkOrXEylholLplwSFHwAT2iav34+LKcssF+wa27crLgVzcClT9HjB3/7AUZe6bnoVUONoiiQ7BL0yZ4/M/PXzw8KSa4WFw7+/iA+/93nuOLhK7zt8lUFdxRg3/p9fjM2svNiF8X56+drNunQGXXe8r5I1l+JSZ5GFoHdIwF4m5WEK8PLW54HYZQAR60Do6d5tkV4Oe/lsBtcC3oBN++8GcOuGAZbvQ21X9firR++FXaWS6U+D96uhxphMNTsou9sVndbt6VFlmW0tLQgNTU10UPpdeIVuiZOnNju73v66afx9NNPx3QsRLHGt/Cp2wkXqmIRutT28OxWGJ3W1lbU1tayjr6TaW0YDHhmNtQwoTU7JJpEzH5iNorWFOH1q1/HP276B1ytkbcdh3xxnZNvqFEv9t2tbrhb3ShaU4T56+dDn6yHMe3iYnhXswuSXcInv/kEL+e+jKPbjnq/VlFUEbRvkSRJqPzQ03wiPTsdgik4IMpOGUOmDgkKEZZTFuj0wf+mFUnBik9WaDaoiKQMT1EU1NXVeUvcvAE4DIPZ4GkoAk/AG7lwJJZuXup5fPoYoU/SQzC0b5ZYDYOAJ1CtKl2FWU/Mgj7pu3Mm64Nms9TmG90xcAGeMuaMjAzOqCeA1WpFenrsylFlWUZzc3PMgxxRV8GZLupROtpIg2WFHaPuyTVmzBg+fp3M0NeAnNU5KP9duaeNvFMKmj3SagWubq7rWz4nGISwe2sB2muxLKcsIf/96Qw6ZE7KxMqjK1G2qwx7HtwTtKeU72bCADwzZgHroRSXgp137UTT6SZ88tQnUJzB96cz6OBsuTgr51vuqBVMRZPod3tfkbRP//zVz3HgoQP4yuTZc2zW47PCznIBgNPmDFo/FTjzpO4ppjPoIDvlNjd2DgyD5oFmzFwzE5PumNStZ7PCqa+vR2Zm8L5pFH82my2m1QwVFRUsE6UejaGLepSOznSp7eEZGKJTX18Pg8GAfv36JXoovU5lZSWm3DYFi362KOwFduCFvWb3vWQDJv1iEr74zy8gGkW4HZ5yW7Wl/Pz185E5KTPoPowpxjbXjKnt2nffv1vzdupsjf2CPWQthizLYfeiUjf9BS6WO6qBafD0waj+uNrv9oqkRL3xr63ehk8e+gSyQ/Y2LvnosY+gM4V/DRGgPTPj2zEwbAhzyZprukJ1uexpYQvwvMlz4cIFjB07NtFD6XUcDgeMRmNMZxiLi4sxadKktm9I1E0xdFGP0pHQJcued5LZrTA6brcbZWVlmDJlSqKH0us4nU6cO3cO06dPh06na/cmtlrlc9PunYZp907zayjR1myJs8UJfbI+aM2UoA9eLxVuzdHZr87iwzUfwm0PsUGxI3xzCjFJhLXaCutpK3bdtctznu9CZWDgAoBZj8/yluWF+tlCBZe6Y3UQ9ALgaN8Y1YYW7XmutMLfzEdm9thZrLZYrVakpaXx9ToBYl1aCHhC1/Tp02N6TqKuhKGLepxoQpeiKGhtbUVVVZW3tFAQBO9H4OehjkfyfYHHeory8nIMHz48qs0rqWMqKysxYsSIqC4+2yqfC1z/E076iHRodaYXRMFbMqhSA8ShVw/hs+c+g84YUO6oEbjUjYoVKGFDjSIreOuHb0EQhZDBzfecn/zmE7/Nj7XWdoXSYmgB2u59ETzGNmbXQgkMfz11FisS9fX13JIiQSwWS8zXXpWUlOCnP/1pTM9J1JUwdFGPEk2IkWUZsiwjNzcXiqL4fciy7C071Doe6vNIbhPYICASsQh5sQyQ6vGWlhacP38eWVlZcLvdQbeh+HE4HGhoaMCll14a9Tli1cXOPNCMyx++HJ/+5lO/43qT9qyO1pojyymLZvdEnVGH616/Dn2G9sGfZv5J8/71KXpA8jTbkO2R/ftSZ9rUNViRbD6skmUZVsmKJf+1BLt+vgs6vU6zw6Mv0Sx628r31rAUKw0NDcjOzk70MHolq9WKYcOGxfSclZWVfD6pR2Pooh4lmvJCSZKgKAoGDBjQpctUYhHyAr9HK1hGcm7fY7Is4/z580hNTUVJSUmHgmUswmFHA2Q035fIYFlRUYHs7OwOjyFWMyaT7piE/c/t9ysbbGvT3bbKHQFPcEvqm4T+uf2xYMOCoFbx+iRP63oAeOfH78Dp8g8/hhQDFFnxWwclOSRA8N+MOLAdfDh1dXUYMGAARl8xGtkLsmE5ZUHtoVoUrSnyNPNodgI+P8r4FeMx6c5JvbIUMNZsNhsMBgP0el7GdDZFUeBwOJCUlBSzc164cAHp6elhX8dOnDiBDRs2YP/+/SgpKcGcOXPw4YcfBo3tmWeewaZNm3Du3DlMmzYNGzdu5Fox6hL4akU9SntDlyzLcLvd3WIdl+/FfVfaP6y6uhrJyckxWczekZnEtr7PNyS2N7C2daw9OhogfY9JkoTa2lokJyejuro6bsFTHXckzAPNWLp5adSb7poHmjVDley+GNwm/cRzAVX4UCFEo+jdBHnklSNhq7cFhTYxScS1f70WmQWZfuugjClGbJm9xf9+2giIvqqrqzFu3DjvuNX262OuGeOduWttaEXNwRoMmTokaANoil59fT0GDRqU6GH0Sna7PeZ7MJaUlLS5P9eRI0ewfft2zJgxA06n9ozys88+i7Vr12LDhg3Izc3FCy+8gIULF6KkpASXXHJJTMdM1F5CGxcM0ffeJooDWZbhcDhCBqSysjKkpKRE9OKqtocHwHdLo+R0OvHFF19g2rRpfAwjoL7etncWMtRtqqurkZKSgrS0tLgG1miCpdvqhuOsA8lDkmHKMLV7VvLktpP4ev3X0Bl0UCQF0387HdlXZ/vdxtHoQMvpFqQNT4N5oNl7jrK3y/DPB/8J0SBCcklY8OICjLlhjOZ9ffvGt57SQJ+AGMmarubmZhw/fhyTJ0+O6neBOubgwYMYP358TGdbKDJnz56FzWbDqFGjYnbOTZs2oU+fPmHXdMmy7P3bf+ONN+LcuXN+M112ux2ZmZl48MEH8cQTTwAAWlpakJ2djZUrV2LdunUxGy9RGCHfoeRVEnUrbb3b3p6ZLrWcrivNGnU3x44dw6hRoxi4IhTLmcrW1lZIkoSxY8d2qXVzWuExmvLXiXdMxOhrRsNaZUXKkBSY+pmgKAokSbq4xjJZgWmUCQ7FAXuj3fu9KZenYP4782GrsSHpkiTo0nU4fvy49phGKpj6v1NhP2OH6RITLH0t2L9/f5s/p8PhgMFgwMGDB2M2cxnr22gd6wmcTidkWWbgShCr1RrzbUGKi4txzz33hL1NW9Uoe/fuhdVqxU033eQ9lpKSgmXLlmHHjh0MXZRwvFKiHiXS0CVJEtvDd1BjYyNcLhdLfBKkvLwcI0eO7HIX0jG9uB8EID82p4oll8uFAwcOeNtbRzNzGe7zWDTu0ZopbY9oAl20ZaztPXddXR0yMjLgcrk0z03xZbVakR3jhhdHjx71lupGq7S0FKIoYvTo0X7H8/LysHXr1g6dmygWGLqo11HLCtXW8NR+sizj2LFjKCgo4EVOAthsNthsNgwYMCDRQ+mVamtrMXjw4B49w9vRctR4Ne5RFM+GyGazGYcPHw66TXvEI0DGe+Yy0cFSfe5iuTWI2+2Gy+Xq8DoxtaFTYCVBRkYGbDYbnE4ntzShhOq5fzGoV4pkpsvt9uzb05MvmOKtsrISmZmZMV9MTZEpLy/HqFGjGHgTQFEU1NTU9PhuaL4X912pBFuSJBw4cABTp07t8O9/e9ZPdvfGPbEKkOo66I407nG5XKirq4PRaITBYMCpU6cwcuRI2O126PV6iKIY9XOr9X3qY8bXS0o0XnVSj9JW6PItK6TotLa2ora21ltaRZ2rubkZDocj5msqKDIWiwXJycl8xzxBGhsb0a9fv5hcQHfVYBkr6t/CWJa/2mw275tt6h6X7Q2QNTU1ePHFF+F2u+F2u9Ha2orm5mZceeWVcLlckKTg3cZfeeWVNpvWZGRkoKmpCZIk+T2f6syowWCI4aNL1H688qQeJVzoUssKRVFkWWGUFEVBaWkpxowZw8cwQTjLlVjV1dUx3xSWIldfX4/BgwcnehjdQjwCpcViwYgRI5CRkRH1OSZMmIDFixd7P//Vr36FRYsWYcmSJR0aW25uLiRJwokTJ/y2MCktLUVubm6Hzk0UC7xqoh5HK3SpgUsQhB75jmZnqa+vh8Fg4CxLgjQ1NcHtdnfogoei53Q60dLSgr59+yZ6KL2SoiiwWCx8/BPIarUiLS0tpucsLi5GQUFBh88zc+ZM9OnTB9u2bfMes9lsePfdd7F06dIOn5+oozjTRT1KqJkuSZKgKGwP3xFutxtlZWWYMmVKoofSa5WVlSEnJyfRw+i1ampqMGTIEM4yJojFYkGfPn34+CeIWk4Y6/L8s2fPRrS3ps1mw/bt2wEAp0+fhtVqxRtvvAEAuOqqq2A2m/HII49g7dq1yMjI8G6OLMsy7r333piOmSgaDF3UowiCENTBSpZluN1utofvoPLycgwfPpxrWRLEYrFAURSkp6cneii9kqIoOHv2LKZOnZroofRa9fX1GDhwYKKH0Ws1NzfHfJartrYWmZmZEQXpuro6LF++3O+Y+vnJkyeRnZ2NRx55BLIs45lnnkFDQwOmTp2KDz74AJmZmTEdN1E0GLqoRwmc6WJ7+NhoamqCxWIJ2v+EOk9ZWRkf/wRqaGhAeno6m/AkUENDA0aNGpXoYfRa6kxjLLWntDA7O7vN7o2CIOCxxx7DY489FovhEcUUr0KpRwkMXW63G7IsM3B1gNo8Izc3l2U9CXL+/HmIohjzd5kpcmygkVgtLS1ISkpiiXgCWa3WmIeukpKSmKznIuoOeCVKPYpv6PJtD8/QFb3Tp0+jT58+vOBPoPLycq7lSiC73Q6Xy8V/AwnE0sLEi0d54eHDh9tsBU/UU/BKlLqlUCUGauhiWWFsOJ1OVFVV8YI/gRobG2E0GpGamproofRanOVKPIauxJIkybvJcSwdP37cr707UU/Gq1HqViItb3O73QDA9RcddPz4cYwaNYqPY4IoioKysjKuY0kgWZZRX1+PQYMGJXoovZbD4QAANvFJoHi0irfb7RBFkZsWU6/B0EU9iiAI3rJC1v53zPnz5+F0OnmxmUANDQ0wm81ISUlJ9FB6rfr6egwYMICvJwl07tw5znIlWDzWcx09ehTjxo2L6TmJujKGLupxWltb4XA40NraitbWVtjtdjgcDrhcLrjdbkiSBFmW2+yC1JvJsoxjx46xeUYCKYqC8vJyznIlWHV1NYYOHZroYfRqdXV1DF0JZrVaY75dxeHDh9lEg3oV1gxRtxMqBMiyDJPJBEVRUFFRAUVRvOu71P8PPNYeOp0OgiD4fQQea+s28f564OfRqqysxKBBg5CcnBz1Oahj6uvrkZaWxucggZqbmyEIAsxmc6KH0mtJkgSHw8HZ3gRraWmJ+XNQUlIStO8WUU/G0EU9hiRJSEpKwrhx42K+2DdUaIvF5+r/d/ScWsci5RvaFEVBc3Mz+vbtC4vFElG4bO/nsTpHT6UoCk6ePMl3gROsuroaw4cPT/QwerWGhgb0798/0cPo1VwuF0RRjPlrbnFxMdatWxf2NidOnMCGDRuwf/9+lJSUYM6cOfjwww/9bpOdnY3Kykq/Y5mZmTh79mxMx0vUUQxd1CPIsgy32x239vC94SJfURRIkoTDhw9j3LhxSE9Pb3fY1AqU6nMTLnC2FUg7OksZj1nEeM5k1tbWIj09HUlJSXF6xqktkiTh/Pnz7KyWYPX19SzvTLB4rOdSFAUXLlxARkZG2NsdOXIE27dvx4wZM+B0OkPe7pZbbsG9997r/ZxNV6grYuiibk+WZTidTraH7wD1ov/cuXMwmUzIzMxM9JBiJjC0xTL4KYri3YC7o7OSvp83NzfDbDZj//79bf58bQXFeJewRjuz2dWdPXsWmZmZ3WKsPZWiKLBarcjPz0/0UHq1eKznqqqqQlZWVpu3W7ZsGa699loAwI033ohz585p3m7w4MGYMWNGTMdIFGsMXdTtqe3hGbg6xu12o6ysDFOmTEn0UGKqu1zkq2pqatDc3IwxY8ZEdPt4hUl15rOjM51aX2+PWAW/9oRJwLOu8dJLL/WW2EZ6H+qYqeMuXLiA9PR0Pp4JZrFYYv5GXHFxcUTl0/y7Tj0JQxd1a2p7+HiVFfYm5eXlGD58OMsyEkiWZZw6dQqXXXZZxN/jGyp7WlvztmYpOxoutWYpFUVBa2srFEVBY2Nju2cp21v6Guvw2BkznZ2FXQu7htbW1pg39CkuLsakSZNidr5XX30VGzduRHJyMhYtWoT/+I//iGgmjagzMXRRtyXLMlwuF8sKY6CpqQkWiwWjR49O9FB6tZqaGgwYMIDB9zuJmqU8cuQI8vLy0K9fv7jeT3uCXHs/7+gsZajP26MjwQ8Azpw5A1EU0dzc3CnhtLvNincGh8MBk8kU88eluLgYK1asiMm5rr32WsyYMQPDhg3D0aNH8dRTT2HOnDkoLi6OeVkkUUcwdFG3pZYV6vX8Ne4IRVFQWlrKPbkSTJZlVFVVYerUqYkeSq/mcrnQ1NTUKeuIetssZXtmIW02G8xmM9LS0kLOUsaijLYzZynjUSbb3s/by2KxxLyJBgCcPHkyZnsQvvTSS97/nzNnDmbOnIlJkybhj3/8I+6///6Y3AdRLPBqlbol37JC6pjTp0+jT58+SEtLS/RQerXTp08jMzMTBoMh0UPp1WpqajBkyBC+AdFBHZ01slqtGDZsWJdt6hOrEtdQM4rtXX8Zr1lKh8MBvV4Pq9Ua9Syi3W7H3//+dxgMBu/fbFmWsW3bNu8xg8Hg9/9Dhw5FdnZ2VM/N+PHjMXbsWHz55ZdRfT9RvPCKlbod9V1OruPqOKfTiaqqKkybNi3RQ+nVJElCdXU1n4cEUxQFZ86c6XHNZLqj+vr6mK75ibWePksJeILRoUOHMGbMGJhMpqhLXgGgT58+cLvdcLlcqK2tRUZGBiorK+FyueByubxfU/87a9asqEOXim+cUFfD0EXdzqZNm3DixAkYjUbo9Xro9XoYjUaIouh9p0x9t8z364HHA29rMBi85wh81833Nr4dznx1xxf4Y8eOYdSoUZwxTLDq6moMHjyYz0OCNTY2ok+fPpxtTDC73Q6dTse1jQmi/i3T6XRwOp0xqYLw3UPrD3/4AwoKCrBq1aoOn1dLSUkJvv32W6xcuTIu5yeKFv/CU7dz5ZVXoqCgAJIked8l8/1wu91wu91wOp2w2+1B76QF/r8kSXA6nX7vtGndVj0uSVJE41QUBaIo+gU5rUAYGOp8by+Kol9g1AqNocKhbwgNDKAGgwEff/wxdu7ciZdeegmtra3e79HSHQNld+F2u1FTU4Pp06cneii9XnV1NUaOHJnoYfR6586dY9fCLsBut8e8ayHgCUV33nlnRLe12WzYvn07AE8JttVqxRtvvAEAuOqqq1BUVIS//OUvuPrqqzFkyBCUlpZi3bp1GDFiBG6//faYj52oIxi6qNuJZG+PzhZqAbZvMPQNcoEhUetz9b9agdDpdMJms4UMkoHnUL9HHY/D4cCBAwcwefJk3HDDDd7jaqBsK2SpgTLcTGFg2AwVNNX/aoVT3xnMSGYow81odtVAeejQIQwdOrTHlSh1N3a7HU6nMy5NA6h96urqkJeXl+hh9HrxaqJx5MgRTJgwIaLb1tXVYfny5X7H1M9PnjyJ4cOHo66uDvfffz8uXLiA/v37Y8mSJXj66af5b5m6HIYuohgIdeGuBoB4vFvYEevXr8fcuXPx7//+723eNlSgDDUj6BsSA48HhlCn06k5u2iz2cLOTvqGT9+ZynAzlL7rCwRBCPv/aqAMFxgDF39rzSi2VfLqdDqxbt06bNiwASdOnAhbAqvOUGqF0FBrGxMdKLuT06dPY+jQoYkeRq+n/rvtaq+ZvZHVakX//v1jek5JkmC325GSkhLR7bOzs9vsKrlnz55YDI0o7hi6iHqhyy67DHPnzo3otqEu3NUL/+58caT1x1zd40gr6PmGxMDjgaHP90M9nzpDqR7fs2cPxo8fjwMHDrRZ8hoqeLpcrjYvSny/rs76RVPyqrVGMlwQDTc7Gfh5qNt0RqB0OBzYuXNn3NaYUOQaGhpifqFP0bFarTEvty0rK8Oll14a03MSdRcMXUS90KJFixI9hC4hVEMUnU4X92YKFosFb775Jnbt2hWXhgGhAmUkM5TRlry2tLREXfKqtdYykkDp+7O11SwnVKlqbW0tGhoacP78eb/vCVXCGi60RlryajAYQgbH3jxDWVdXhxEjRiR6GL2e+loR69fB4uLiLrlEgKgzMHQRESVAnz598N5778WtQ1uoQGk0Grt9V7hwgbI96yfVYw8//DB+9rOfYdCgQZozlC6Xy9uUJ5Ylr+3ZjDcWM5Th1lVqdXlta21muJLXaAKlw+HAa6+9hueffz7ix4Xio6WlBWazOebnLS4ujrjKgqinYegiIkoAQRAwZMiQRA+jW4ploKytrcWwYcO6TGlhW4Ey0vWTvoGvrRnK1tbWNsOkbxltJCWv7aGGOFmW4XA4cP3112sGRq3gF279ZKgZyo6WvPaGGUqr1Yr09PSYn7e4uBi/+MUvYn5eou5AaOOdtsjfhiMiIuqGZFnmRuudIFSgVAPbgw8+iAULFmDOnDntWj8ZrilPuFLXwPWWoUpdfYNnNDOUoWYWtWYnA8th29oyJNoZylDnU4PjQw89hJtvvhlTpkyJaZi84oorcOjQoR4VUIkChPzl5kwXERH1agxcnSPUDKXJZILJZILRaMQPfvCDbln+Gi5Qtqfkta0S2VBNecKVsYYrdfU9pxooBUFAVVUV9u/fD0VR/Lq7+go3U6gV+tSyWwYu6q0400VEREREAACn04mZM2fi4MGDALQDpSzL7S55tdlssNlsuO666zr7RyLqTJzpIiIiIqLwWlpacP/993s/15qZEkURoijCZDJ15tCIujXWVBARERERACAjIwM//vGPO/1+t23bhmuuuQZDhw5FamoqpkyZgr/97W9+t1EUBU8//TSGDx+O5ORkfO9738OhQ4c6faxE0WDoIiIiIqKEeuGFF5Camorf/e53eOeddzB//nzccsst+P3vf++9zbPPPou1a9dizZo1ePfdd5GamoqFCxfi7NmzCRw5UWS4pouIiIiIEurcuXMYMGCA37FbbrkF+/btw8mTJ2G325GZmYkHH3wQTzzxBABPKWR2djZWrlyJdevWJWLYRIFCruniTBcRERERJVRg4AKAyZMno66uDgCwd+9eWK1W3HTTTd6vp6SkYNmyZdixY0enjZMoWgxdRERERNTl7N27F/n5+QCA0tJSiKKI0aNH+90mLy8PpaWliRgeUbuweyERERERdSl79uzB22+/jVdffRUAcP78eaSmpkIURb/bZWRkwGazwel0dss93qj34EwXUQ904sQJrFy5EgUFBRBFEfPmzQu6DbtAERFRV1RRUYFbbrkF1157LW6//Xbvca329aE2bybqahi6iHqgI0eOYPv27RgzZgzGjBmjeRt2gSIioq6msbERS5cuxYgRI/CXv/zFezwjIwNNTU2QJMnv9hcuXIDZbIbBYOjsoRK1C0MXUQ+0bNkyVFVVYdu2bRg3blzQ1+12O5599lk8+uijuOeee7Bw4UJs27YNgiDgP//zPxMw4t7htddegyAIQR+bN29O9NCIiBLOZrPh6quvhtPpxHvvvYeUlBTv13JzcyFJEk6cOOH3PaWlpcjNze3soRK1G0MXUQ+k04X/p80uUIlVWFiIffv2eT+uv/76RA+p1/nmm29w5ZVXwmw2Y8iQIXjiiSeC3kEnos7jdruxfPlyHD9+HDt27MCgQYP8vj5z5kz06dMH27Zt8x6z2Wx49913sXTp0s4eLlG7sZEGUS8UrgvU1q1bEzSq3mPatGlITU1N9DB6rfPnz2PhwoXIz8/H22+/jbKyMjz44IOQZZl7/RAlyN13343t27fjpZdeQmNjI/bv3+/92uTJk5GUlIRHHnkEa9euRUZGBnJzc/HCCy9AlmXce++9CRw5UWQYuoh6IXaBot5s8+bNaG1txd///nf06dMHixYtgtVqxZNPPomHH34Yffr0SfQQe7158+bho48+Cjre2tqKpKSkBIyI4u39998HANx3331BXzt58iSys7PxyCOPQJZlPPPMM2hoaMDUqVPxwQcfIDMzs1eEAp4AAAjKSURBVLOHS9RuLC8k6qXYBSpxcnJyoNfrMXbsWLz88suJHk6vs2PHDixevNgvXN18881obW3VvNCnxJg/f75fGe6+fftgMpkSPSyKk4qKCiiKovmRnZ0NwPO36bHHHkN1dTVaW1vx8ccfY/LkyYkdOFGEGLqIeiF2gUqMwYMHY+3atfjzn/+Md999F5dffjlWrVqF3/3ud4keWq+itfB+xIgRMJvN3GS1C+nXrx9mzJjh98E3hOJr69atuP766zF48GAIgoDXXntN83anT5/Gddddh9TUVAwYMAD33HMPbDZb5w6WqJtheSFRL+TbBWrs2LHe4+wCFV+LFy/G4sWLvZ8vXboUDocD69atw3333ddmAxSKjfPnz6Nv375BxzMyMnD+/PkEjIioa3jjjTdQUVGBq6++Gq+88ormbdxuNxYvXgyj0YitW7fiwoULWL16NS5cuODX4p2I/PEvPFEvxC5QXceNN96IxsZGVFRUJHoovUqo8lrOpHQd77//PsxmM8xmMxYvXozDhw8nekg93tatW/Hll1+GnX3ftm0bjh49ijfffBPf//738aMf/Qi///3v8de//hXHjx/vxNESdS+c6SLqgWw2G7Zv3w7AUwZitVrxxhtvAACuuuoqmM1mdoHqYnix33kyMjJw4cKFoOMWi0VzBow639y5c3Hbbbfh0ksvRWVlJX77299izpw5+Prrr73reyj2Iplt37FjB6ZNm4aRI0d6j/3gBz+A0WjEzp07g7riEpEHQxdRD1RXV4fly5f7HVM/ZxeoruXNN9/EgAEDkJWVleih9Bq5ublBa7eqqqrQ0tLC8to4sVgsOHPmTJu3Ux//p556yntszpw5WLhwIXJzc/Hiiy/ixRdfjNs4qW2lpaXIz8/3O2Y0GpGTk8M1kURhMHQR9UDZ2dneToShqF2gHnvssU4aFd1www2YPn06Jk6cCEmSsHXrVmzduhUbN27keq5OtHTpUmzYsAFNTU1IS0sD4CmrSk5Oxty5cxM8up5p27Zt+OlPf9rm7UK9bl1yySWYNWsWvvzyy1gPjdqJayKJosPQRUTUScaOHYtXX30VVVVVUBQF+fn52LJlC2699dZED61XWbVqFTZu3Ijrr78ea9asQXl5OZ588kmsXr2ae3TFyZ133ok777yzw+dhGW77tHeGMVJcE0nUfgxdRESd5Omnn8bTTz+d6GH0ehkZGdizZw/uueceLFu2DH379sUDDzyAJ598MtFDoxBqa2vx6aef4o477kj0ULqVjs4wagm1JvLChQtcE0kUBkMXERH1Ovn5+SgsLEz0MEjD4cOH8eijj2L58uXIysrCqVOn8Mwzz0Cn0+H+++9P9PC6lVjNMPrSWhPpdDpRXl6OVatWxfS+iHoShi4iIiLqMvr37w9FUfDoo4+ioaEBaWlpmDdvHv7xj39gxIgRiR5er7d06VL89a9/RWVlpbcB0DvvvAOHw4ElS5YkeHREXZfQxpRy5PPNRERERNRtffPNN/jmm29gt9tx66234uc//znmzZuHgQMHepvMuFwuTJ48GSaTCWvXroXFYsEDDzyAhQsXcnNkIiDkwkaGLiIiIiLCk08+6deuXzV37lx8+OGH3s+rq6txzz33YPfu3TCZTLj55puxYcMGmM3mThwtUZfE0EVERERERBRHIUMXN4YhIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI4YuIiIiIiKiOGLoIiIiIiIiiiOGLiIiIiIiojhi6CIiIiIiIoojhi4iIiIiIqI4YugiIiIiIiKKI30bXxc6ZRREREREREQ9FGe6iIiIiIiI4oihi4iIiIiIKI4YuoiIiIiIiOKIoYuIiIiIiCiOGLqIiIiIiIjiiKGLiIiIiIgojv5/cAeJUdqVub8AAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plot_data( swissRollDataset )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Combined Dataset Plot\n", - "The train-set is shown in purple and the test-set is show in yellow." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 0 ns, sys: 0 ns, total: 0 ns\n", - "Wall time: 8.34 µs\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA10AAAL5CAYAAABLgU4TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt4VOW9Nv57HWaSTEIITYDIISiKBMGABITScvDwglJt6LWD1qK71U2tNbbaX62H3fa9dre2umsP1rdRd612W7GtQvdl1IIEEeIByykQCAQ8AAGCISQQcpjMzDr9/hhnMmtmTTIZZk1myP3x6lWYWbPWymIyM/d8n+f7CIZhgIiIiIiIiOwhDvYJEBERERERnc8YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZSO7nfrY2JCIiIiIi6p8Q7Q5WuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENmLoIiIiIiIishFDFxERERERkY0YuoiIiIiIiGzE0EVERERERGQjhi4iIiIiIiIbMXQRERERERHZiKGLiIiIiIjIRgxdRERERERENpIH+wSIqH+6rkPX9aj3C4LQ7z6SuQ0RERER9WLoIkpxmqahu7sbmqYlJfAYhmF5HMMwAFiHrr7Oq79zjnb/uRzH6/UiIyPDdPtAAmUiw2e8P/9gbUNERESJx9BFlKIMw4CqqlBVFYD/A7MkSYN+Tone17nu0+rxtbW1KC0tPef9AH0Hlb6C6GCIFpj7um8goTeU1+uFpmnIzs6O6bHxHIeBeWDbEBFR6mLoIkpBhmHA5/NB13UIgpAyH7gSeR52/kypEFBTTaIDc0dHB7q6unDhhRcO+jmdz4G5s7MTuq5j+PDhEffFG5gH8th4q9gMzAPbhojOfwxdRClG13X4fL7ghzC+YVMiJDowB/4n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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "%time\n", - "if useMatplotlib3DFlag: \n", - " ax3D = plt.figure(figsize=(12,12)).gca(projection='3d')\n", - " plot_data( X_train, 'purple', 10000, ax3D)\n", - " plot_data( X_test, 'green', 1000, ax3D, 3)\n", - "else:\n", - " ipv.figure()\n", - " ipv_plot_data( X_train, 'purple', 100000, True)\n", - " ipv_plot_data( X_test, 'green', 1000, True, 1.5)\n", - " ipv.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "------\n", - "# 3. ETL \n", - "First we write the dataset to disk (as a comma separated file - CSV) so that we can subsequently demonstrate data loading." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 34.3 s, sys: 404 ms, total: 34.8 s\n", - "Wall time: 35.4 s\n" - ] - } - ], - "source": [ - "%%time\n", - "pd.DataFrame(data = X_train).to_csv('X_train.csv.txt', index = False)\n", - "pd.DataFrame(data = X_test).to_csv('X_test.csv.txt', index = False)\n", - "pd.DataFrame(data = y_train).to_csv('y_train.csv.txt', index = False)\n", - "pd.DataFrame(data = y_test).to_csv('y_test.csv.txt', index = False)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "!echo 'no data\\n0' > warmup.csv # write a mini csv file used to initialize cuIO kernels" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Check Size of Data on Disk \n", - "using the default value of `nTotalSamples = 5000000` should produce a training set of `~184MBs` in size." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "62M\tX_test.csv.txt\n", - "184M\tX_train.csv.txt\n", - "4.8M\ty_test.csv.txt\n", - "15M\ty_train.csv.txt\n", - "du: cannot access '*.gzip': No such file or directory\n" - ] - } - ], - "source": [ - "!du -h *csv.txt *.gzip" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.1 - Load Data" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 3.2 s, sys: 208 ms, total: 3.41 s\n", - "Wall time: 3.41 s\n" - ] - } - ], - "source": [ - "%%time \n", - "startTime = time.time()\n", - "\n", - "pd_X_train = pd.read_csv('X_train.csv.txt', delimiter=',')\n", - "pd_X_test = pd.read_csv('X_test.csv.txt', delimiter=',')\n", - "pd_y_train = pd.read_csv('y_train.csv.txt', delimiter=',')\n", - "pd_y_test = pd.read_csv('y_test.csv.txt', delimiter=',')\n", - "\n", - "pandasIngestionTime = time.time() - startTime" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# get column-names\n", - "f = open('X_train.csv.txt'); colNames = f.readline().strip().split(','); f.close()\n", - "# warmup rapids data ingestion engines [ cuio kernels ]\n", - "cudf.read_csv('warmup.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 236 ms, sys: 72 ms, total: 308 ms\n", - "Wall time: 311 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "\n", - "cudf_X_train = cudf.read_csv('X_train.csv.txt', delimiter=',', skiprows=1, names=colNames, dtype=['float64', 'float64', 'float64'])\n", - "cudf_X_test = cudf.read_csv('X_test.csv.txt', delimiter=',', skiprows=1, names=colNames, dtype=['float64', 'float64', 'float64'])\n", - "cudf_y_train = cudf.read_csv('y_train.csv.txt', dtype=['float64'])\n", - "cudf_y_test = cudf.read_csv('y_test.csv.txt', dtype=['float64'])\n", - "\n", - "rapidsIngestionTime = time.time() - startTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluate Load/Ingestion Speedup" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10.965336843034255" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pandasIngestionTime/rapidsIngestionTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.2 - Transform Data ( Normalize )\n", - "Transforming a dataset is a common requirement prior to training upstream models. For each feature in the dataset we remove the mean and divide by the standard deviation -- this makes each feature behave like a normally distributed variable (e.g. gaussian with 0 mean and unit variance). \n", - "\n", - "For the data on the CPU we can use the pre-built sklearn.preprocessing.StandardScaler function.\n", - "In the case of the GPU, we demonstrate how the same transformation can be built using a custom (user defined) function written as a just-in-time numba kernel. \n", - "\n", - "Note that we compute the mean and standard deviation statistics on the training data, and then apply the transformation to the training and test data (i.e., the test data is never seen when computing the mean & standard deviation)." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 288 ms, sys: 132 ms, total: 420 ms\n", - "Wall time: 420 ms\n" - ] - } - ], - "source": [ - "%%time \n", - "startTime = time.time()\n", - "\n", - "scaler = sklearn.preprocessing.StandardScaler().fit(pd_X_train) # normalize\n", - "pd_X_train = scaler.transform(pd_X_train)\n", - "pd_X_test = scaler.transform(pd_X_test)\n", - "\n", - "pandasTransformTime = time.time() - startTime " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "@cuda.jit \n", - "def gpu_scale(outputCol, colGPUArrays, colMeans, colStDevs):\n", - " iRow = cuda.grid(1)\n", - " if iRow < colGPUArrays.size:\n", - " outputCol[iRow] = ( colGPUArrays[iRow] - colMeans ) / ( colStDevs + 1e-10 )" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "def standard_scaler_numba( targetDF, trainMeans = None, trainStdevs = None):\n", - " nRows = targetDF.shape[0]\n", - " \n", - " blockSize = 128\n", - " blockCount = nRows // blockSize + 1\n", - " scaledDF = cudf.DataFrame()\n", - " \n", - " if trainMeans is None and trainStdevs is None:\n", - " trainMeans = {}\n", - " trainStdevs = {}\n", - " \n", - " for iColName in targetDF.columns:\n", - " colGPUArray = targetDF[iColName].to_gpu_array()\n", - " outputCol = cuda.device_array ( shape=(nRows), dtype=colGPUArray.dtype.name) \n", - " if iColName not in trainMeans.keys():\n", - " trainMeans[iColName] = targetDF[iColName].mean()\n", - " if iColName not in trainStdevs.keys():\n", - " trainStdevs[iColName] = targetDF[iColName].std()\n", - " gpu_scale[(blockCount),(blockSize)](outputCol, colGPUArray, trainMeans[iColName], trainStdevs[iColName])\n", - " scaledDF.add_column(name=iColName, data = outputCol) \n", - " \n", - " return scaledDF, trainMeans, trainStdevs" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "_, _, _ = standard_scaler_numba( cudf_X_test.copy().head(2) ) # warmup" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 12 ms, sys: 8 ms, total: 20 ms\n", - "Wall time: 17.7 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "\n", - "cudf_X_train, trainMeans, trainStdevs = standard_scaler_numba( cudf_X_train )\n", - "cudf_X_test, _, _ = standard_scaler_numba( cudf_X_test, trainMeans, trainStdevs )\n", - "\n", - "rapidsTransformTime = time.time() - startTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluate Transform Speedup" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "23.75515620158694" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pandasTransformTime/rapidsTransformTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Verify [approximate] numerical equivalence between CPU and GPU" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "({'0': 1.3118409084568703, '1': 5.996848171342335, '2': 0.4851316446150071},\n", - " array([1.31184091, 5.99684817, 0.48513164]),\n", - " {'0': 4.504542997068648, '1': 5.745629278854799, '2': 5.235717201603314},\n", - " array([4.5045424 , 5.74562851, 5.2357165 ]))" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "trainMeans, scaler.mean_, trainStdevs, scaler.scale_" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[-1.17920981 -1.04059779 -0.09265812]\n", - " [-0.95594125 -0.37150592 1.37218828]]\n" - ] - } - ], - "source": [ - "print(pd_X_test[0:2,:])" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0 1 2\n", - "0 -1.179209653937578 -1.0405976535883976 -0.09265810698430794\n", - "1 -0.9559411234875343 -0.3715058731389722 1.372188101348538\n" - ] - } - ], - "source": [ - "print(cudf_X_test.head(2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# 4. - Model Building with XGBoost\n", - "-----\n", - "XGBoost is a popular algorithm for classification. It uses a sequence of decision trees built in succession such that each new tree attempts to correct the errors made by its predecessors (analogy to multiple golf swings [ each improving on the past ] to reach a target). For a deeper dive into how XGBoost works check out the following dev blog:
\n", - "> https://devblogs.nvidia.com/gradient-boosting-decision-trees-xgboost-cuda/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
img src: https://explained.ai/gradient-boosting/L2-loss.html
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prepare Data for Training" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "X = pd_X_train\n", - "y = pd_y_train" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/conda/envs/rapids/lib/python3.7/site-packages/xgboost-0.83.dev0-py3.7.egg/xgboost/core.py:604: FutureWarning: Series.base is deprecated and will be removed in a future version\n", - " if getattr(data, 'base', None) is not None and \\\n", - "/conda/envs/rapids/lib/python3.7/site-packages/xgboost-0.83.dev0-py3.7.egg/xgboost/core.py:605: FutureWarning: Series.base is deprecated and will be removed in a future version\n", - " data.base is not None and isinstance(data, np.ndarray) \\\n" - ] - } - ], - "source": [ - "train_DataAndLabelsGPU = xgboost.DMatrix(pd_X_train, label=np.squeeze(pd_y_train))\n", - "test_DataAndLabelsGPU = xgboost.DMatrix(pd_X_test, label=np.squeeze(pd_y_test))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Specify Model Parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "noteable parameters: [ to see all available options execute '?xgboost.XGBClassifier' in a new cell] \n", - "\n", - "* __max_depth__ : int [ CPU default = 3, GPU default = 6 ] -- Maximum tree depth for base learners.\n", - "* __n_trees/estimators__ : int [ CPU default = 100, GPU default = 10 ] -- Number of boosted trees to fit.\n", - "* __n_GPUs__ : default is 1 GPU, set to -1 to use all GPUs\n", - " \n", - " \n", - "**Note :** For apples to apples comparison, `cpuMaxDepth` is set to the same as `gpuMaxDepth`.\n", - "This will result in a large processing time on CPU.\n", - "If you wish to work faster, it is recommended to set `cpuMaxDepth` to its default value." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "'''key CPU PARAMS '''\n", - "cpuMaxDepth = 6\n", - "cpuNTrees = 100" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "'''key GPU PARAMS '''\n", - "# number of GPUs to utilize -- we typically need > 10GB datasets to benefit from multiple GPUs\n", - "nGPUs = 1 # default is 1 GPU, set to -1 to use all GPUs \n", - "\n", - "# GPU multiple shallow trees [ default ] \n", - "gpuMaxDepth = 6; \n", - "gpuNTrees = 10; \n", - "\n", - "# GPU few/one deep trees [ experiment with this setting for faster training with comparable accuracy ]\n", - "# gpuMaxDepth = 15; \n", - "# gpuNTrees = 1 " - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "nCores = !nproc --all\n", - "nCores = int(nCores[0])\n", - "\n", - "paramsGPU = {\n", - " 'max_depth': gpuMaxDepth,\n", - " 'num_boost_rounds': gpuNTrees, \n", - " 'objective': 'multi:softmax',\n", - " 'num_class': 3,\n", - " 'tree_method': 'gpu_hist',\n", - " 'random_state': 0,\n", - " 'n_gpus': nGPUs\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "paramsCPU = {\n", - " 'max_depth': cpuMaxDepth,\n", - " 'n_estimators': cpuNTrees,\n", - " 'tree_method': 'hist',\n", - " 'objective': 'multi:softmax',\n", - " 'num_class': 3,\n", - " 'n_jobs': nCores\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# 4.1 - Model Training" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train on **CPU**" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "xgBoostModelCPU = xgboost.XGBClassifier(max_depth = paramsCPU['max_depth'], \n", - " n_estimators = paramsCPU['n_estimators'],\n", - " tree_method = paramsCPU['tree_method'],\n", - " objective = paramsCPU['objective'],\n", - " num_class = paramsCPU['num_class'],\n", - " n_jobs = paramsCPU['n_jobs'])" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "using 40 CPU cores for parallel xgboost training\n" - ] - }, - { - "data": { - "text/plain": [ - "(XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", - " colsample_bynode=1, colsample_bytree=1, gamma=0,\n", - " learning_rate=0.1, max_delta_step=0, max_depth=3,\n", - " min_child_weight=1, missing=None, n_estimators=100, n_jobs=40,\n", - " nthread=None, num_class=3, objective='multi:softmax',\n", - " random_state=0, reg_alpha=0, reg_lambda=1, scale_pos_weight=1,\n", - " seed=None, silent=None, subsample=1, tree_method='hist',\n", - " verbosity=1), None)" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xgBoostModelCPU, print(\"using {} CPU cores for parallel xgboost training\".format(nCores))" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/conda/envs/rapids/lib/python3.7/site-packages/sklearn/preprocessing/label.py:219: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - " y = column_or_1d(y, warn=True)\n", - "/conda/envs/rapids/lib/python3.7/site-packages/sklearn/preprocessing/label.py:252: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - " y = column_or_1d(y, warn=True)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 11min 55s, sys: 5.62 s, total: 12min 1s\n", - "Wall time: 45.5 s\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "\n", - "xgBoostModelCPU.fit( X, y );\n", - "\n", - "cpuXGBoostTime = time.time() - startTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train on **GPU**" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 8.35 s, sys: 152 ms, total: 8.5 s\n", - "Wall time: 777 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "\n", - "xgBoostModelGPU = xgboost.train( dtrain = train_DataAndLabelsGPU, params = paramsGPU, num_boost_round = gpuNTrees )\n", - "\n", - "gpuXGBoostTime = time.time() - startTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluate Training Speedup" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "58.51295471080951" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cpuXGBoostTime/gpuXGBoostTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# 4.2 - Model Inference" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Infer/predict using Trained **CPU** Model" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 1min 13s, sys: 140 ms, total: 1min 13s\n", - "Wall time: 2.36 s\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "\n", - "yPredTrainCPU = xgBoostModelCPU.predict(pd_X_train)\n", - "yPredTestCPU = xgBoostModelCPU.predict(pd_X_test)\n", - "\n", - "cpuXGBoostInferenceTime = time.time() - startTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Infer/predict using Trained **GPU** Model\n", - "> note that our objective was changed to a regression [ gpu accelerated ] so we must take care to convert each of our predictions from a continuous value to a discrete class (essentially by rounding)." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 36 ms, sys: 32 ms, total: 68 ms\n", - "Wall time: 67.7 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "startTime = time.time()\n", - "yPredTrainGPU = xgBoostModelGPU.predict(train_DataAndLabelsGPU)\n", - "yPredTestGPU = xgBoostModelGPU.predict(test_DataAndLabelsGPU)\n", - "gpuXGBoostInferenceTime = time.time() - startTime\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluate Inference Speedup" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "34.830304546351364" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cpuXGBoostInferenceTime/gpuXGBoostInferenceTime" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# 4.3 - Evaluate Accuracy\n", - "# note: for binary classification problems consider using AUC \n", - "> from sklearn.metrics import roc_auc_score\n", - "\n", - "> roc_auc_score( pd_y_test.values, np.expand_dims(yPredTestCPU,1) )\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU test accuracy: 0.999890 \n", - "GPU test accuracy: 0.999910 \n" - ] - } - ], - "source": [ - "print( 'CPU test accuracy: {0:.6f} '.format( accuracy_score(pd_y_test, yPredTestCPU) ))\n", - "print( 'GPU test accuracy: {0:.6f} '.format( accuracy_score(pd_y_test, yPredTestGPU) ))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TODO: to increase model accuracy, increase complexity, number of trees, max_depth\n" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " confusion matrix on TRAIN data -- \n", - "[[1249747 0 308]\n", - " [ 0 1250225 0]\n", - " [ 0 160 1249558]]\n", - "\n", - " confusion matrix on TEST data -- \n", - "[[416515 0 96]\n", - " [ 0 416441 0]\n", - " [ 0 41 416907]]\n" - ] - } - ], - "source": [ - "print('\\n confusion matrix on TRAIN data -- ')\n", - "print(confusion_matrix(pd_y_train, yPredTrainCPU))\n", - "print('\\n confusion matrix on TEST data -- ')\n", - "print( confusion_matrix(pd_y_test, yPredTestCPU))" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " confusion matrix on TRAIN data -- \n", - "[[1249759 0 296]\n", - " [ 0 1250225 0]\n", - " [ 0 65 1249653]]\n", - "\n", - " confusion matrix on TEST data -- \n", - "[[416514 0 97]\n", - " [ 0 416441 0]\n", - " [ 0 16 416932]]\n" - ] - } - ], - "source": [ - "print('\\n confusion matrix on TRAIN data -- ')\n", - "print(confusion_matrix(pd_y_train, yPredTrainGPU))\n", - "print('\\n confusion matrix on TEST data -- ')\n", - "print( confusion_matrix(pd_y_test, yPredTestGPU))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4.4 - Visualize Model Outputs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Visualizing a CPU boosted tree" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Djjglh9kmqzP+WvVa3DT89eq12BDnv+8886r6mUve1lVF1544VBb/f29Nf7lX/6lqo9+9KPD2tve9raqPvnJT1a15ZZbDrUzzzyzqhe84AVV7bPPPlWdcMIJw54nPelJ6+w7FWcbM9Xv97Jly6p6zGMeM6z98Y9/rOq9731vVX/zN39T1RVXXDHsefnLXz4u289+9rOhdv/733+9+92010T9xnpN1G8yvW7ubBP1m+zZpvLnhNveggULqvrXf/3XYe1FL3pRVW984xurOvLII4fau9/97qre9a53VXXggQdOSU4AAAAAAAAAAADgjmNkugMAAAAAAAAAAAAAAAAAAAAAAAAAAAAws7ixLQAAAAAAAAAAAAAAAAAAAAAAAAAAAJMya3R0dLozTMaMCgsAAAAAAAAAAHBbGvu+11vf+tZh7V//9V+rWrhwYVXveMc7qnrQgx40xelmtpe+9KVVvfvd7x7WLrrooqp22mmntV63cuXKqvbaa69h7corr6zqvPPOq2revHlrXLdixYqq7ne/+1X15z//eaj96le/qmrTTTed5Cmm3m11/lr1GmzI8z/zmc8cl/cVr3jFUNt5552ruuyyy6pavnz5LeqxaNGiqjbZZJNh7T//8z/Xed1PfvKTqh7wgAdUtdtuuw21X/7yl+u8firONl3v9+GHH17VJz7xiWFt7DVZsGDBWq9btmxZVdtuu21VP/jBD4ba/e9///XuN5leE/WbTK/J9pvs2abi52TMfvvtV9W73vWuYc1n04Z3/vnnD/NXvepVVX32s5+t6kUvelFVb3vb24Y9M+GzBgAAAAAAAAAAAJhWi28cj56oODKFQQAAAAAAAAAAAAAAAAAAAAAAAAAAANgIzJ7uAAAAAAAAAAAAANy866+/vqrnPve5VX3mM58Zam984xurevnLX17VyIh/7/yW+O1vf7vG2rbbbrvO6771rW9VddZZZw1rRxxxRFXz5s1b63WbbLJJVc94xjOqOuaYY4baySefXNVTnvKUdfa/rfz6178e5p/4xCeq+upXv1qtOuNEbqvz16rXYEOe/0Mf+tA6s91axx133C26bu+9965WZTvvvPOG2ujoaFWzZs1a6/VTcbapfr+XLl1a1Qc/+MGqnve85w21BQsWrDPv5ptvXtV11123zr1jvSbqN5lek+03FWdb3VT8nDC9dtlll2F+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uP3zLUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZfZ0BwAAAAAAAAAAAGCVe9zjHlWdc84505yE9fHIRz6yqje84Q3D2plnnlnVs571rHVeP7Z3dY961KPWed0mm2xS1WMe85hxY9Wf//znqj73uc9V9YlPfGKove51r6vqqKOOquqhD31oVYcddtiw55BDDqlqm222WWeO6Tr/TPP85z+/qr/85S/Vqvemavbsib/K+Vd/9VfDfMmSJVXtu+++Gyriepnq93u//far6h3veEdVl1566fqHrS6//PJxjxcsWLDOXre03017rW+/qTjbTHPJJZessbb99ttPQ5I7lrPPPruqu9/97sPayMjIdMUBAAAAAAAAAAAAZgjfNgQAAAAAAAAAAAAAAAAAAAAAAAAAAGBSZk93AAAAAAAAAAAAAFZ54hOfWNVLX/rSYW3p0qVVLViwYFoysXYPf/jDq9pjjz2GtRNOOKGqt7zlLVXNnTt3jetWrFhR1ac+9amq7n73uw+1xz/+8bcq02abbVbVoYceOm6suvzyy6v69Kc/XdWSJUuqesELXjDseclLXlLVIYccMm7PRG6r89eq1+DWnv/24phjjhnmZ511VlVf+cpXqtp0002nI9KtNtXv9+Me97iqdtppp6r+93//d6hdd911a+035qSTThr3+ElPetI6e03U75b0Wt9+U3G2qXbcccdV9f73v7+qM888c72uGx0dreozn/nMGrWDDjroNkrHTV1//fVVffzjH69W/XcIAAAAAAAAAAAAwPoYme4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAzCxubAsAAAAAAAAAAAAAAAAAAAAAAAAAAMCkzJ7uAAAAAAAAAAAAAKxy6KGHVvVv//Zvw9qLXvSiqo4//viqZs2aNfXBmNDIyP//78t/6EMfGtYe+chHVvWc5zynqne+851VzZkzZ9hz1FFHVfWrX/2qqpNPPnmozZ07d4Pl3X777as64ogjxo2//vWvhz1Lliyp6mtf+9o6n28y569Vr8FNz1+rXoObO/8FF1xQ1a677lrVypUrh9qZZ55Z1QMf+MB15t6QPvKRj1T1+te/fo3aFltsMcVpbltT/X5vuummVR133HFVHXTQQUPt6U9/elVvfetbq7rLXe5S1UknnTTsefOb31zVwoULq3rJS16yzl4T9btpr4n6jfWabL/J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/OEPSZLf//73Ve2hhx5Kkjz44INJkqVLl25UK29Xfrxq1apNPtbEiROr9Z577pkkmTlzZp9Mkt122y1JsvPOO/ep7brrrtWZzdV22GGHTfYAbPtWrlybJLnllieSJOvXP5YkWbfu0erME088kiRZs+aPSZIVK1ZUteXLl/fJ3rWHH344SbJ69epNPv6kSZOSJC9/+cuT1J+vkmSPPfZIkuy1116brM2aNatPjh8/fjNXCwAAAIxEz60t5hcP3n13kuQPd92VJHn4gQeqM4/3zFqX9cxV1/7xj3WtZ26x4Yli/tF7elBOUaf3zBR2njatyAkTqjM7TJ6cJFl8yCFJksbBB1e1XXbZJUmy++67J6lnp+XcNTFDhaHw1FNPJanfWynnlUk9p1y2bFmf7F0rz5e3L/eT5Imezx0D2WmnnZLUM8wyk2Tvvffus1d+PHv27OrMvvvum8RcEwAAAAAAAAC2so6ebB+o2DaEjQAAAAAAAAAAAAAAAAAAAAAAAAAAADAKNJrN5nD30IoR1SwAAAAAAACwec8880ySZOnSpUmS+++/v6qV601lkixatChJsn79+o3ue/z48UmSPfbYI0my2267VbXdd989STJ79uw+tXJ/oFrv2zcajRd8jQBb29NPP50kefjhh/tkkjzyyCNJ6s+Vrdb6mz59erUuPy/2z4H25s6dm6Tv504AAABg61q5cmWS+rX+nXfeWdXK2Wkrc9Xtt9++WvefoW5uDtC71n+eapYK9Nd/vrm594Y2N9984IEHkiTd3d0bPUb5OaicUyYbf86aM2dOVSvP7b333kmStra2lq8LAAAAAAAAAEaxjp5sH6joXXYAAAAAAAAAAAAAAAAAAAAAAAAAAABa0mg2m8PdQytGVLMAAAAAAADwUvHYY48lSe64445q76677kqS3H777X0+vvvuu6szy5Yt63M/jUajWu+xxx5JktmzZydJ9tlnnz450N6sWbOq2k477fSirwfgpWbNmjVJkvvvv79PLlmypDpTrvtnkvzhD39IknR1dfW53xkzZlTr/fbbL0lywAEHJEn233//qtZ/72Uve9kWXQ8AAACMJGvXrk3Sd7562223JUluvfXWPh8vWrSoOrN69eo+9zN58uRqXb4OL/NP/uRPqlq5Lmv77rtvkmTq1KlbeikAQ2b9+vVJknvvvbfaK9f33HNPkmTx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7373u0mSz3/+80mSxYsXJ0mefvrpjc7eeOONSZI777yz2vve976XJLn11luTJOvXr0+S7LnnntWZ1772tUmSv/mbv0mSHHTQQVvvAkao8tfrb//2b5MkN998c1Xr6upKkhx22GFJks9+9rNJkiOOOGIoW9yox6Tuc1M9Jq31+dxzz1Xrb33rW0mS888/P0myZMmSJEl3d3d1Zvbs2UmSM888M0kyf/78qrbddts97+OVfX/lK19Jklx00UVV7Z577kmSjBs3Lkkyb968qvbpT386SXLsscc+72OUjjzyyGrd+/f3hfrYxz5Wrb/85S+/4Ntt2LAhSfLVr3612luwYEGS+honTJhQ1crrLD+PnnDCCVWt0Wi02nYfJ510UpLkqquuSpJ87nOfS5J85jOfael+yudJ+RxJNv08KZ8jycbPk809R8rvy7jllluqvcsuuyxJcu211yZJHnzwwao2bdq0JMl+++2XJPnABz5Q1U4//fQkm//1+8Y3vpEk+eAHP7jJM61405veVK2vueaaTZ4rn5cv5jmZ1M/LVp6TLzVPPvlkkuTyyy+v9r72ta8lSRYuXJgkOfroo6ta+XebP/3TPx2iDgEAAAZWzlw/9alPJalfB7///e+vznz4wx9Okuy7775D3N22b1Nz1mTjWevtt99erQ844IAkQzOL25aV159sPDPtf/3J8M1MS//xH/+RJPn4xz+eJLn//vurWu+Z54sx3POb/teW1Nf3Yq9tKGdho3nO1/vflpXXN5jX1l85e07q+XP/2XNSz59bmT2vXLmyWpefT/u//5Rs/B5U//efEu9BDWT58uVJks7OziTJl770pSR9Z+blnPLss89OkowdO3YIOwQAAAAAAABgK+noyfaBim1D2AgAAAAAAAAAAAAAAAAAAAAAAAAAAACjgB9sCwAAAAAAAAAAAAAAAAAAAAAAAAAAQEvGDncDAAAAAAAAMFQeffTRJMmnP/3pJMlFF11U1ebOnZskufTSS5Mkp5xySpJkzJgxQ9jhyHfzzTdX63e84x1Jkk9+8pNJkptuuilJsnz58urMG97whiTJX//1XydJFi5cWNW+8IUvJEkuu+yyJMnUqVM3OvOBD3wgSTJv3rwkyRVXXFHVTj755C29nBHjV7/6VbX+sz/7syTJSSedlCS56667qtq4ceOS1H8Gyl//H//4x9WZ4447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AAAAAAAAAAAAAAAAAACAiWXSpk2bet1DNyZUswAAAAAAsCv68Y9LLl9e7Q0OlvzBD0quW1fVDjqo5OLFJQcGqtoxx5Tcfffn1svDDz+cJNl77723evYTn/hEkuSjH/1oe2/9+vVJkilTpox6uze+8Y1Jkq9//esjag888EDHfX/zm99s11avXp0k2XPPPZMkx2z+Yv/iL/6ifebQQw8d9XHXbf5N/OQnP5kk+drXvtau/fznP0+STJ06NUlSq9WSJO9+97vbZ0455ZQkyeTJk0d9jPF07bXXJklOO+20Uc/ce++9SZKzzz67vfcv//IvSZLddtstSfK6172uXbvkkkuSJI888kiS5AMf+ECS5Pvf/377zPTp05MkixYtSpJ89rOfbddmzJjRdY9r165tr1u/3y3rhv1B3/I6bXmNkpHXqXWNkpHXaTzuu5uvd/h9b8vtfvrTnyZJli5dmiT59re/PeLxjzrqqCTJ5z73uXbtZS972aj32XL33XcnSc4555wkyfe+97127emnn06SvOIVr0jS+fz667/+6yTJd7/73Y77e+c739leX3755Vt9fNgmm98PMmtWkuTa889vl04b9udyuNbzJhn53Bn+mrDlc2dbnjcPPvhge916DbnuuuuSJL/4xS/atT322CNJ8upXvzpJ9Xq8cOHCrT4GAAAAALDran0kmiSzZj28eTVx5nVJNVMY63ldMnJeY1639Xnds/X5fOd1w29nXrdjzOuSamZnXgc7mc3v60mSVatKNholm82q1nod+Z//Kbl5bpnh78v1esnWe+yw9/HstdfY9EtXnsv7UTJyDv5c349ac/AtZ+BJNQffcgaemIMDAAAAAMA2av2DuHOfqdi3HRsBAAAAAAAAAAAAAAAAAAAAAAAAAABgJzBp06ZNve6hGxOqWQAAAAAA2Nk88EDJ73+/2hscLHn99SX/+79LvvCF1Znjjis5MFBy0aKqNmfOWHc5upNPPjlJ8p3vfKe9d8899yRJXvayl2319kcffXR7/f73vz9J8ta3vrXjzH333ddeH3XUUUmSp556Kkny5S9/uV1bsGBBkuRnP/tZkuRP/uRPkiS33npr+8yKFSs67me4d7/73UmSa665piOTpF6vJ0keffTRJMlnPvOZjkyS733ve0mS41oXp8de//rXt9fXXXddkuQNb3hDkuQjH/lIu3bggQcmSf75n/85SXLGGWe0a6997WuTJLvttluS5OMf/3iS5OUvf3n7zNVXX50kee9735sk+bM/+7N27bOf/ew299nqce3ate3a1KlTO862rlEy8jpteY2SkdepdY2SkddpPO97y681Gfn1bvm1bu12v/u7v5skWbp0aZLkla98ZfvMzTffnCQ59dRTkySveMUr2rXbbrvtGR/jP//zP9vrww8/PEmyxx57JEmuuOKKdq313Gk9z84666x2bdWqVUmq36fW8xTGResNdNaskptf35MkCxcmGfn60nreJCOfO63nTTLyuTPa8yZJ1qxZk6Tz/ezJJ59Mklx++eVJqven4ec//OEPJ0m+8Y1vJEn+7u/+rn3mXe9616iPBwAAAADsmlofiSYjPxa98MKT27XWzG5Hm9cl1cxurOd1w9c72rwuGflZ9a4wr0tGn6v2el6XjP719npel1QzO/M6YNwMDZVsNEo2m1Wttff//l/JyZOr2gEHlGy91tdqVa31mvt//s+YtspI2/J+lIycg3f7frTlHHzLGXhS/b1vyxl4MnIObgYOAAAAAADP6PzNee4zFfu2YyMAAAAAAAAAAAAAAAAAAAAAAAAAAADsBPxgWwAAAAAAAAAAAAAAAAAAAAAAAAAAALoyadOmTb3uoRsTqlkAAAAAAJhI1q8vuWpVyWXLqtry5SXvvLNk37D/Ou+QQ0ouWlRy8eKShx1WnZk0aWx7fa5uvPHGJMlJJ53U3nvf+96XJLnssstGvV2z2UySvPnNb27v/fSnP02STJkypePsH/3RH7XXV111VZLk6quvTpK89a1vHfUx1qxZkyR5yUte0t57xStekST50Y9+NOL83LlzkySzZ8/u6PHZHHDAAe31F7/4xSTJcccdt9XbbQ+vf/3r2+vrrrsuSXL99dcnSV73uteNervW71GS/PjHP06SrFy5MkmyYMGCUW/X+v3bbbfd2nt33333NvfZ6nHt2rXt2tSpU5/xMZLndp1a1ygZeZ3G875bnumatL7eLb/Wrd1u2eYXlEWtF4pncPrppydJvv71r7f3HnjggSTJvvvu23H2TW96U3t9zTXXdNzujW9846iP0bq/pHqubdiwIUny1FNPjXo7eN5af/ZmzSq5YkVVW7gwycjXl2XD3oi7ee6M9rxJkj/+4z9Oklx55ZXtvX/8x39MkrzlLW8Z9THW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j6+++uokybe+9a0kyY033pgkefHFF+sxhx56aJLkTW96U5LkvPPOq2vleO7cuaM4YwAYW6tWraqPf/jDHyZJfvCDHyRJbrjhhiTJkiVL6jF77LFHkuTss89Okvz6r/96XXvb296WpPn/FAAAgIlly5YtSZKbbropSbM3KEmuueaaJMny5cuTJPvvv3+S5Pzzz6/HlD1BJQ888MBRnjEAL3fPP/98fVz6mWVPUMnHHnusHjN79uwkyUUXXZQkeec731nXyrnSAwUAgImm9HZuueWWJMmVV15Z18reuaeeeipJ8opXvKKuvfnNb06SXHzxxUmS+fPnJ0lmzpw5yjMGYHeyePHiJMl3v/vdJMl3vvOdJElfX189pvzuprPOOitJe2/m0ksvTZIccMABoz9ZAACA0XX5QC7oVOwew4kAAAAAAAAAAAAAAAAAAAAAAAAAAACwG/CLbQEAAAAAAAAAAAAAAAAAAAAAAAAAABiWrv7+/vGew3BMqMkCAAC7nscffzxJ8i//8i9Jkquuuqqu3XXXXUmSAw88MEny9re/PUnya7/2a/WYc845J0kyY8aMUZ8rAOyMZ555JkmycOHC+ty1116bJLn66quTJGvXrk2SvPGNb6zHvOtd70rS/D+47777jv5kAYCOli1bVh9/61vfSpJ84xvfSJLcdNNNdW3KlClJkvPPPz9JcvHFFydJzjvvvHrMkUceObqTBYAJaPny5fXxDTfckCS57rrrkiTf/va369rq1auTJKeffnqSZs3cenzUUUeN7mQBAADYpvK5iNtuuy1J+56gr33ta0mSJ598Mkly8skn17V3vOMdSZILL7wwSXLqqacmSbq7u0d5xgCwcx5++OH6uPQ1y88Ub7nllro2c+bMJMnb3va2JMk73/nOJMn8+fPrMZMnTx7dyQIAwHZ64IEH6uOvfOUrSZKvfvWrSZInnngiSXLSSSfVYy699NIkzZ651lpXV9foThaAl7XnnnuuPr7++uuTNJ/XKpkk69evT5JccMEFSZLf+q3fqmtvfetbk/i8MgAAMGFcPpALOhXttgIAAAAAAAAAAAAAAAAAAAAAAAAAAGBYusqVySeICTVZAABgfGzcuDFJ8n/+z/9Jkvzd3/1dXevr60uSzJ49O0ny9re/va69853vTJKce+65SZJJkyaN/mQBYBysW7cuSfLd7343SfK///f/rmvXXnttkmTTpk1JkosuuqiuffjDH06SzJ8/P4mr2APASFi7dm19fNVVVyVJvvjFLyZJfvSjH9W16dOnJ0kuvvjiJO3r2XJu5syZoztZAHgZ2bBhQ318ww03JEm+8Y1vJEmuvvrqurZy5cokyfHHH58k+Tf/5t8kSX77t3+7HjNnzpzRnSwAAMDLzIoVK+rjz3/+80mSL33pS0mSxx57LElyzDHH1GPe9a53JWn2Bh199NFjMk8AGC/Lli2rj7/2ta8laX4WefvttydJ9t1333rMe9/73iTJ7//+7ydJXv3qV4/JPAEAeHkqe9mT5J/+6Z+SJJ/73OeSJIsXL65rhx12WJLkt37rt5Ik7373u5Mkxx133JjMEwB2VOv+8G9961tJkiuvvDJJ8v3vf7+uTZ06NUly6aWXJkk++tGPJklOOOGEMZknAADAMF0+kAs6FbvHcCIAAAAAAAAAAAAAAAAAAAAAAAAAAADsBrr6+/vHew7DMaEmCwAAjL6nn346SfKFL3yhPvf3f//3SZKnnnoqSfLWt761rr3//e9Pkpx//vlJmisaAgCVF198MUnyf//v/02SfOlLX6prP/jBD5Ikxx57bJLkD/7gD5Ik73nPe+oxM2bMGJN5AsBEtWTJkiTJ5z//+STJFVdcUdfWrl2bJHn729+eJPnN3/zNunbBBRckSaZNmzYm8wQAtm7z5s318c0335wkueqqq5IkV155ZZJk48aN9ZhLL700SfI7v/M7SZKzzjprTOYJAACwu7j33nuTJJ/97GeTJF/96lfr2l577ZUk+bf/9t8mSd797ncnSU488cSxnCIATBg///nPk7T/f1r24D7++ONJkksuuaSulf1B55133hjNEACA3c2KFSuSNJ/3Kpkkq1evTtL0dD7wgQ/UtZ6eniRJV1fXmMwTAMZC+Ux00uw5K/83ln3m5fPPSfKHf/iHbef8vwgAAIyjywdyQadi9xhOBAAAAAAAAAAAAAAAAAAAAAAAAAAAgN2AX2wLAAAAAAAAAAAAAAAAAAAAAAAAAADAsHT19/eP9xyGY0JNFgAAGHlPPvlkkuSTn/xkkuSKK65Ikuy55571mH//7/99kuT3f//3kySHHnroWE4RAHZbixcvTpJ89rOfTZJ85StfSZJMmzatHvMf/sN/SJL88R//cZJkr732GsspAsAu5Qc/+EF9/Od//udJkptuuilJcvjhhydJPvjBD9ZjPvCBDyRJDjjggLGaIgAwwl588cUkyZVXXlmf+4d/+Ickyb333pskOemkk+raZZddliS59NJLkyTd3a5RDQAAvLwtWrQoSfLxj3+8Plf6qscff3yS5A/+4A/q2nve854k7XuHAIDh2bx5c5Lk6quvTtLsDUqG/j+8YMGCuvaOd7xjrKYIAMAEsXLlyiTJJz7xifrcl7/85STNvvLf/d3frWvls18HHnjgGM0QAHY95Xc/XXfddUmST3/603Vt4cKFSZITTjghSfJf/st/qWv/6l/9q7GaIgAAQJJcPpALOhV9GgYAAAAAAAAAAAAAAAAAAAAAAAAAAIBh6SpX7ZggJtRkAQCAnbNu3bokyWc+85n63F/8xV8kSebMmZMk+ZM/+ZMkyfve9756zPTp08dqiru0q666qj4uf26PPPJIkmT9+vVDxt98881JkgcffDBJ8i//8i917b777kvS/J0ccsghde3MM89MkvzxH/9xkuSkk04amSewG/jOd76TJPmP//E/JkmWLl1a1zZt2jTm8+nt7a2P+/r6hn37j3zkI/XxX//1X//K8Zs3b06S/O3f/m197h//8R+TJD/+8Y+TJFOmTEmSnHbaafWYP/3TP02SzJ8/f9hz/FXKVUivueaaJMmf//mf17WPf/zjO3Xfo/n3XW5/xRVXJEk+//nPJ0l+9rOf1WO2bNmSJDniiCOSJB/4wAfq2gc/+MEkydSpU4f9WJ0erzxWp8crj7W9j1eU15k/+7M/q8+V79PyvTRv3rwkySc/+cl6TE9Pz3Y/RrmfpPm+3Nr3ZNJ8X47m9+RE9/TTTydJvvCFL9TnPvWpTyVJpk2blqT9SsDvf//7kyTd3a63BcDu6e67707SvH/4/ve/X9cuvPDCJM37xQsuuCCJ/xc7Ge56dvHixUmS448/Pknz3jJp3l8Ofm+ZDH1/OZz3lrujXfnPbXveyydD15jl32IyvPfzZf28I2vnpFk/b8/aORmbNd+qVauSNP++xqrvs7XnlgxdY+7serbYuHFjffy5z30uSfLP//zPSdq/X/bcc88kzffL7/3e79W1Sy65JEnS1dW11ccZy++T1r7C1r5PRmKtXvaP3HrrrUmSK6+8Mkly/fXX12Mee+yxJMnee++dJDnqqKPq2u/8zu8kSd797ncn2faf38vVHXfckaS9X/bVr341SXLiiScmSf7rf/2vde2iiy4aw9kBAACMvUcffbQ+/tjHPpYk+drXvpakvZ9z2WWXJUnOO++8MZzdxFD6PYN7qcnQfmrZG5QM3R80uEeUNH2iwT2ixP6gYvBekaTZLzIee4NabU/Pt/R7k53v+Q7e99HaN9vZfR9b61slTe9qLPpW4/33XfY9JUP3Pu3ovqfSTy291GRoP3VwLzVp+qnb00vdHqPx3Iry95YM3dc13v9OJ4ry77vsCWr9N/j6178+SfLpT386Sfv3CQAALw/lffV//+//PUmyYMGCJO2f7Srv68tnv3zuqzGc3k7ZJ5cM3Ss3mp/D2JWNdf9jZ43H546Sre/TSobuL9qefVrj/fm0sncwmbifT9tV+l2dTNTP3u3O7r///iTN/xWt+z/L/vS/+Zu/SdL+fQIAADAKLh/IBZ2KPikLAAAAAAAAAAAAAAAAAAAAAAAAAADAsEwe7wkAAAAM9s1vfjNJ8tGPfjRJ8swzz9S1j33sY0mSP/zDP0yS7LnnnmM8u11fudLpb/7mb9bn/vN//s9JkkWLFiVJnnrqqSTJOeecU4/5oz/6oyTJ3XffnST51Kc+VdfKVT9nzZrVNiZprvBZrmj69a9/PUny1re+dSSezoRRrl5bvm+T5sqo5c/75aJcCbd8D3zve9+ra5/+9KeTNN+fq1evTtJ+9dYLLrggSfN99653vWun5vO//tf/qo/L1WJ31lj/fZcrIP/zP/9zkuRP/uRPkiTXXnttPWbSpElJki996UtJkg9/+MN1rfwdbM/zH/xYnR6vPFanx2v9+96ex7v99tuTJOeee26S5sq+SbJkyZIkzZWTy9WSW1+7vv3tbydpvm86Gfw92TrPrX1PJs335eDvyWTnvy93F/vtt1+S5u8mST70oQ8lST7xiU+0fZ0kn/vc55Ikf/d3f5ckOeuss8ZimgAwKh5//PEkzVoqSb72ta8lSebNm5ckufHGG+ta63sYOtvR9Wwx+L1l0ry/HPzeMhn6/nJ73lvujnblP7fhvJdPhq4xW+c0UmvM0TAWa77yWnXFFVckGbu+z9aeWzJ0jbmz69k1a9YkSS666KL6XPme+Nu//dskyRlnnFHXVq5cmaTpM7auRxcvXpwkOf7443/l446F8ueYbP37ZCTW6o888kiSpLe3N0kyf/78JM3fe5IcddRRSZLly5cnST7+8Y/Xtfe+971Jkvvuuy9J+/cZlTPPPDNJ8k//9E/1ucsuuyxJ8/r65je/ua6V19rPfOYzSZKTTz55LKYJAAAwatavX58k+eQnP5kk+eu//uu6dthhhyVp1q6XXHLJGM9u4ii91KTpjw3upf7/7N17oFVj/vjx9zldXRqUEZJbLrmU8m2mkChNocsoETHNb4y7kdwNEc2YYTCZzIy7ryhKplBDEQa55VquxWCoyC2DEqrz++NrPWtfzjntfdpn7bPPeb/+2eusZ+39fPbeT3uv57M/qwey86mp+ezM+qDMHFHqMZk5IrA+KKoXqYu1QfnkfFN/669JzjfqK7W/zL4q6y/fuo+q8lYQj8XayFvVlfc7qn0qVN0TZOdTU+tlMvOpmblUiN/ndc2l1sZzq+p9g7r1b7WURHnJKD992mmnhbbodY5yn8OHDwfS/521atUqkTglSZKUnKeeeipsR3mDhQsXAvE54gUXXBCO2XDDDROMrjRk1srlkttJlcR1GHVZkvmPmormp5BMbqEmdVqQXV9UyDn6uqrq+rSodhBK9/q0YuW7qlIfrr2rz/bYYw8AJk2aBMApp5wS2kaMGAFAhw4dgPj1jn6HAWjWrFkicUqSJElSebEDkCRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiSVFv9jW0mSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJElSXsoqKiqKHUM+SipYSZIkSWu3cuVKAEaMGBH23XjjjQD88pe/BOAPf/hDaNtyyy0TjK40jRw5EoC//OUvYd+iRYsAaNOmTZX3O/bYYwFo1KgRANdff31O/c2bNw+ATp06AbDjjjsCsHDhwnzCLnnDhg0DoGPHjmHfWWedBcC2224LwEcffRTaVq1alVxwP+jevXvYvvrqqwHo0qVLwfsZP348AP/v//0/AE499dTQNm7cuErvk5qf2HXXXQFYunQpAO+8805o23jjjXOOY8mSJQDsvvvuYV///v0BuP322wH43e9+F9pGjRqV82Mn8X6nPu927doB0LlzZwBefPHFtd6/T58+Yfuhhx4CYO7cuQD85Cc/qbK/zL7y7S/qq7r+1qxZE7aj1/Dzzz8H4N///ndoW2+99dLut3r1agB22223sG/FihUAvPXWWwA0a9YsK7bMMQnxuKxqTEI8LjPHJMSvVz5jsqF64403wvZpp50GwKOPPgrAJZdcEtp++9vfAlBWVpZgdJIk5S86l4zOJzbffPPQdtlllwFwyCGHJB9YPVDT+Wx0fpl5bgnx+WXmuSVkn19mnltC5eeX9UUpvG6FOpeH7Dlmdefy0fw5mjtD4efPSc/5ksz7JP3cIieffDIAEydODPuiOFu3bl3l/ZYvXw5Aq1atwr7nn38eSM8pZMocJ7WRY8mcq0PNXstc5uoAb775JgAdOnQA4OOPPwZgk002qbKP7777LmxHuduvv/4agP/+979A/f4srQ1PPvlk2D777LMBeOGFFwAYPXo0AOedd144przcNa0lSZIk1X0LFiwAYOjQoQC89957AIwZMyYcc9JJJwHQpEmTZIMrQVEuFeJ8aj61QZBfnigzRwTWB0V51cxaEYjrRZKuDapJzjfK90J+Od/MvlL7yye/XFl/leWSqspbQdW5q1zyVlX1Fyn2+51Z+xTVPUF27VM+dU+QnU9N/bdcVT41yqVCnE/NJZdamdp8blW9b5Bd11WMGr76JvpNZsqUKUD8eqfWA95xxx0A7LvvvglHJ0mSpEK74oorADj//PPDvt69ewNwzTXXALDDDjskH1gJyqyVy6dODpK5DqMuSjL/sa6i+WlqvLVxnVlV1wLlUlsE2fVFudRpFfv6tFxqB6FuX59WrHxXplK/9k7xZ9wNN9wAxNdmpX4fR3mb7bbbLuHoJEmSJNVDUbHX6MoavbpFkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkpSXxsUOQJIkSVLD9MUXXwDw85//HIBXXnkltE2dOhWAQYMGJR9YPfDBBx9k7WvVqtVa73fTTTfVqL899tgDiFe0jVa4TV3htKysrEaPXRNvv/122J44cSIADz/8MACPP/54rfV78803A9kr+zZE06ZNS/t7wIABa71P6hiJPhcuv/xyAO6+++7Qduyxx+Ycx3HHHQfAYYcdFvbtu+++QLxqbE0l8X5X9m95l112yfn+7du3D9vRysnvv/8+UPnKyZn95dNXan9RX9X1l/pv8bXXXgPilZOre00bNWoEwJFHHhn2XXzxxQDMmDEDgEMPPTTrfpljEvIbl5ljEuJxmc+YbKhSx9KsWbOAeFXuc889N7RFK05H/76aNGmSVIiSJFUpWsX+7LPPDvui77GRI0cCcOmll4Y25wPrpqbz2ej8MvPcEvI7v8w8t4TKzy9rS9Lz2VJ43Qp1Lg/Zc8xin8snPedLMu+T9HNbunQpADfccAMAxx9/fGhr3br1WvvbYIMNAFi5cmXOMSalUK9lLnP11OO///77nPto2rRp2G7bti0AL7/8MhC/ps2aNcv58QT77LNP2J4zZw4AY8eOBeCCCy4A4LnnngvHTJgwAYjHsiRJkiTVFU8//XTY7t+/PwA77LADAC+99BIA2223XfKB1QPFrg2C7DxRkrVBEOdTM3Op0HDrg2qS843yvZBfzjezr9T+aqPuo7byVlB97qrY73dm7VNU9wQ1q32KcqmQnU/NJ5cK655PLfRzS1Xs962hiT7/Dz/8cAB69+4NwK9+9atwTLTvtttuA2Do0KFJhihJkqQaWrNmTdiO5nzRXOKyyy4LbWeccQaQfG6g1GXmd/Kpk4NkrsOoTTXN7SSZ/1hX0fy0utgKodDXAlVXW5S0+nx9WrHyXZlK/do7xZ9xJ510EgB9+vQBYMiQIeGYvffeG4AHH3wQgA4dOiQZoiRJkqQGpLzYAUiSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSSkvjYgcgSZIkqeFIXfmxX79+QLyK5xNPPBHadtttt2QDq2dWr16daH/Lly8H4JtvvgGgY8eOQO2utvzJJ5+E7cmTJwMwYcIEAJ599tnQ1qRJEwAOP/zwWosl4uqhsaVLl6b9vdlmm+V1/y222CLt7zlz5oTtXFbEveWWW4B4BeZJkyaFtnvvvTevWKqSxPsdrb4L8Vh+8803c75/6rHRv8fqVlSN+qtJX6nHp/7br6q/Rx55JGtfly5dcu6rsmOjFborWyU7c0xCfuMyc0xCPC7zWaVZ8fg4/fTTgfTv/Mz3bvz48Wn3kSQpSRUVFQCceOKJANx+++2hLdo+6qijkg+snqvpfDbz/DKfc8vKjo/OLaHy88t1UZfms6XwutXnc/mk53w1VZO8T9LP7b777gPiz5Du3bvn3FddlzlXh5q9lrnM1Wvqiy++CNtvvfUWAJ07dwZgo402KmhfDVF5+f+tV33mmWcCsPfeewMwaNCgcEz//v0BeOCBBwBo3rx5kiFKkiRJUpaXX34ZgL59+4Z9vXr1AuDOO+8ErLFYV8WuDYJk64Myc6kQ51OTrA2Cuj12k8z5Jl33UROFyFsV4/2O6p4gu/ZpXeueolwqFCefWpvPLVVd/nfaELRs2RKAadOmhX1nnXUWAMOGDQOgWbNmoe2QQw5JMDpJkiTl47zzzgvbN998MwB33XUXkP6btWqmJvmdUpiPp8rM7UB2rVy+uZ1SqHmLJDU/LfS1QLVRg1ZTDeH6tHwUsk6rvlx7p2zt2rUD4PHHHw/7Bg4cCMABBxwAwNy5c0Pbtttum1xwkiRJtxNdwQAAIABJREFUkuq98mIHIEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEkqLY2LHYAkSZKkhmPEiBFhO1rN88knnwTi1UGVn3vuuSdsV7ficeYKl127dgXgmWeeWecYpkyZkvb3BRdcsM6PGVmxYgUQP8+JEycC8OCDD4ZjVq1aBUC3bt0A+Nvf/hbahg4dCkCrVq0KFlN9cfvttwPxCrPRSq0AjRv/X7qgY8eOAJx00kkADBs2LKfH3nTTTdP+zlwhd22iVZkj7733Xk73W7RoEQBnnnkmAP/4xz8AaNGiRV791xWtW7cO21deeSUAZ5xxBgDnn38+AKeffno4plGjRgDcdNNNAMyePTu0XXTRRQDstNNOa+0vs6/K+ov6qqy/qK/q+qtsBeitttqqytgytWnTJmvfwoULqzw+c0xCfuMyc0xC7uNS1evTp0/Ynjp1KgD9+vUD4tXQU88fJElKSnRONH78eACmTZsW2qLvKq2bQs5nM88v8zm3hOzzy+rOLXNVCvPZuvi6ZSr2uXw0d4bs+XPm3Bnymz8nPeerqZrkfXJ5bpA9x6zpc3vxxRfT/t5kk03CdpQjuOuuu4D08bPFFlsA8POf/xyAiy++OLS1bNmyyv4yZeZYoOpxEo0RyG+cRK8jVD1O1nWunqsvv/wSgFdeeQWA3/72t6Ft8803B+C2225bpz5Utb322gtI/3fSo0cPAE4++WQAbrnlluQDkyRJkiTgq6++AmDgwIFAnMuDOMfQpEmT5AOrB6I8Yz65VChcfVBmjggKVx+UmUuF7HxqZi4V4nyqtUGxJHO+Sdd95KLU81aZdU9Q+NqnzFwqxPnU1H4z86mZuVSI86m55FKTeG6qe8rLy8P2n//8ZwBWrlwJwNFHHx3a5s2bB0C7du0SjE6SJEnVieboqbUKUW1EdbkJVa1QuZ26OB/PJ7cD2bVy+eZ2SqHmLWlVXQuUS50WZNcX5VtbVN+uT4vyGFD869NqI99V3669U9VS39Pp06cDsO+++wJw2GGHhbboOya1/lCSJEmSaqp87YdIkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkhTzP7aVJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJOWlcbEDkCRJklT/Pf/88wDcdNNNYd+kSZMAaN++fVFiqi8OOeSQsF1RUZG279577w1t33zzDQDNmzcvSL9Lly4N2+eddx4Axx57LACHH354Xo+1evVqAGbPng3AhAkTQts999wDwNdffw3AjjvuCMCoUaPCMUcffTQA7dq1y6vfhm7ZsmUA3HLLLQDsvPPOoW3RokUAXHrppQAcddRRADzzzDPhmHHjxlX52H379gVgxowZabcAffr0WWtsM2fOTPt7+fLla70PxGNw2LBhAPTq1Sun+5WCESNGALDFFlsAcMYZZwDwxz/+MevYTTfdFEj/zD3mmGNq3Fe+/eXS1xdffJG1b4MNNsg5xg033DBrXzSmK5M5JlO3azImIfdxqdz97Gc/A+D8888H4s/6I444Ihyz2WabJR+YJKlB+c9//gPA6NGjARgzZgwA/fr1K1pM9VUh57OZ55f5nFtC9vlldeeWqUp9Plus1y0fxT6XT31OmfPnzLkzZM+fq5s7p0pyzpeLQuZ9qnpukP38avrcPvzww7S/U+9zwAEHAPDYY48B0LJly9B23333AXDyyScDMGvWrNA2d+5cADbaaKO19p+ZY4Gqx0k0RiC/cRK9jlCzcbKuY+T3v/992L7wwgvT2vbff/+wPW3aNAB23333depPa5f6Go8fPx6AgQMHAvCLX/witPXs2TPZwCRJkiQ1aNH8d8WKFQDceeedoa1JkyZFiam+iHKnmblUiPOpha4NgjhPlJkjgvzyRJm5VIjzqZm5VMjOpxY7l1oqksz5Jl33UZ0od1XqeavMuicofO1TZi4V4txhlEuF7HxqZi4V4nxqLrnUJJ6bSkOUD58zZ07Yd/rppwPxOJMkSVLxrFq1CojP0VJ/e06td1D+MnM7qfvyye0Uaz4e5XYgu1Yun9wOrHt+pxRq3oqlJnVasO71RcW4Pi2X2kGo2fVpqTnQYl2fVpv5rvp87Z2qFn32Rb/b7LHHHqEtqj0rdB2qJEmSpIapvNgBSJIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZJKS+NiByBJkiSp/rvhhhuA9JX8Dj/88GKFo3Xw2WefAXDggQeGfdFqn9ddd12NHnPrrbcGYMmSJUD6qq+//OUvgXh13m7dutWoD/2fOXPm5HRctDrubbfdBsCCBQsAuOaaa8Ix0Sq5Xbt2zbp/tHrrrbfeCqSPjeixjzjiCCBe7fZPf/pTOGbx4sVpj7feeutVGeuNN94Ytt966y0A/vGPf1R5fClJXY37hBNOAOLX9PLLLwfiFXIBGjVqBMDUqVMB+M1vfhPaHnzwQSBeFbtx4+yUUNRfZl+V9Rf1VVl/UV9r629dpL42kbKysiqPzxyTEI/LqsYkxOMyc0xC9eNS6+bcc88F4OqrrwbgjjvuCG0jR44sSkySpIYjOr9s2bIlAGeddVYxw1FCMs8vqzu3TNXQ57M1fd3ykc+5PGTPMWt6Lp/L/Dlz7gzZ8+do7gzZ8+ek53y5KFTeJ5fnBtlzzJo+t5UrV6b9nfoeR/1Wdr/hw4cD8MEHHwAwatSo0HbVVVcBMGbMmEqe4f+pyTiJxghkj5PKciyZc3WoepzU5lw99bU555xzAHjnnXcA+Mtf/hLaOnfuDMDo0aMBuPDCC3PuQzU3YMAAAHr16gXAuHHjQlvPnj2LEpMkSZKkhuP7778P27fccgsAp59+OpCeL1PpiHJEEOeJCl0bBPH4yMylQv3Mp5aCJHK+VfW1Lv1FuatSzVtFv00lUfeUmUuFOJ+amofPzB1m5lIhft2ry6Um+dxUGqKxlTpeDj30UCAeX23btk0+MEmSJAHw8MMPA/Cf//wHiOdQqj9qOh+PcjuQXStXarmdJPMfSanqWqBc6rQgu74ol9qiYl+fFj0uFP76tCiPAcXLZRQ631Wfr71Tftq3bw/AkUceGfZF4+OYY44pSkySJEmS6pfyYgcgSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSSotVS+TI0mSJEkF8vTTTwNwyCGHFDkS1VS0amnfvn0B2HXXXUNbtGpqtGrrumratGnYbt68edptbXj11VcB6NChw1qPPeWUU8L2X//611qLqa4ZMmQIAHPnzg37pk+fDlS+Im70fj366KMAjBkzJrRdeeWVAJx++ukAtGrVCoDBgweHY6ZMmQLAvvvuC8Dmm2+e1cf7778PwNlnnx323XvvvQBssMEGOT6zuu32228P29Hqp6eeeioQv36VOf744wH46KOPwr5oBd5o5euRI0dW2V9mX/n2l7oye1X9bbzxxlmPE33O5KKyYyt7zEjmmIR4XFY1JiEel5ljEioflyqMaBXs3r17A/DUU0+FtsrGriRJhTRnzhwABg4cCEDjxv6UVgoyzwXzObes7Pjqzi2rU2rz2bryulUnn3N5yJ5jRufyUP0cs1Ay58/R3Bmy589Jz/mqU+i8T9LPLTMPEM0lILfP8QEDBgAwatSosG/WrFlAek6jEKIxAtnjpLIcS+ZcHWr2WuYyV89V9FnXvn17AK699trQtnTpUgAuuugiAPbaay8g/T1R7Yk++1Lfb0mSJEmqbW+//XbY/uSTTwDo379/scLROsjMEUGcJyp0bRDEOYYkc6mQXz611GqDksz5Jl33kYua5K2geLmrzNqnJOqeKnvs6Pnnk0uFOJ9aWS61GM9NpeXggw8O22VlZQA888wzALRt27YoMUmSJCk+J4vmVdtvv30xw1El6tJ8PMncTqpSqHlLWlXXAuVSWwTZ9UXrWltUnUJdnxbVDkLhr0+L8hhQ/FzGuua7GsK1d6qZgw46KGxPnDgRgFWrVgHWzkuSJElaN+XFDkCSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSVFr8j20lSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSXlpXOwAJEmSJNV/y5YtA6Bly5ZFjkT5WLVqVdg+7LDDAGjTpg0A48ePD22NGjVap37ef/99AB566CEAJkyYENquu+46AK666ioAdt11VwCOPvrocMywYcMA2GabbWrU/+677w5ARUVFje7fEGyxxRZZ+z7++OO13q9FixYAXHHFFWFf6nZVZs2alfb3nnvumXXM9OnTAfjvf/8b9u2///5rfexMF154YaXbAG+99RYAO+ywQ96PWwgzZ87M2te7d++c73/AAQeE7dGjRwPwwAMPADBy5Mi19pdPX6n9RX1V11/79u2z7r9o0aKc+1q8eHHWvp122mmt94vGJMRjsSZjEioflyqsVq1aAfDvf/+7yJFIkhqSzz//HIBNN920yJEoH5nnl/mcW0L2+WUu55ZQ+vPZYr1uNVEq5/KZ8+fq5s5Jz/ky1WbeJ+nntu2226b9Hc0lcrXZZptl7fvkk0/yeoxc5ZtjKdRrmctcvRAGDBgAwLRp0wCYMWMGkH+OQTXz4x//GIAvvvgi7FuzZg0A5eWuey1JkiSpdqTOQSL5zs1VXFGeKDNHBHGeqNC1QRDnUzNzqZCdTy1ULhXqd31QkjnfYtV91FRVeSsoXu4qs/apJnVPENc7ZdY9QXbtU2YuFfL7zM41l1qM56bS0rRp07Ad/QYU1RlLkiSpeKI8zyabbFLkSFSVYs3Ho9wOZNfK5ZPbgZrndyKlVPOWlEJfC1SbtUWFuj4tl9pBqNn1aeuax8jchtrJY+SS72oI196pZlJzgtFvBF999RXgeYAkSZKkdeOVK5IkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKkvDQudgCSJEmS6r+2bdsCsHDhwiJHonyccMIJYfvbb78F4lU8GzeuejoZrbAZrb4L0K1btyqPb9SoEQAHHnhg2i3AihUr0vqdOHEiABdddFE45oILLgBgn332AeIVfQEOO+wwAFq2bFll/1q7JUuWZO3bbLPNaq2/OXPmpP09ePDgrGNOOeWUtNtcRePyF7/4BQC/+93vQtuoUaPyeqzatnz58oI/5tdff10n+uvZs2fYjt6DF154AYDhw4ev9XGjY1NFq0TXhswxCZWPSxXWggULAGjXrl2RI5EkNSTbbLMNAG+88UaRI1E+ovPLzHNLqNn5Za7nlqU+ny3W65akpM/lM+fP1c2dk57zZarNvE/Sz6179+4A/PnPfwbgww8/zOuxP/7446x9rVu3zusxcpVvjqXY4yRfzZo1S/v7888/r7W+lO31118HYOuttw77ystd71qSJElS7YpqglJF9UFbbbVV0uGoBqI8UWaOCPLLE+VTG5S6nZlLhex8amYuFeJ8qrVBsSRzvpl9pd6/LtZ91MW8VU1qn1Lzspm1T7nUPUW5VKhZPjXXXGoxnptKy9KlS8P2F198AcS/00qSJKl4ojzPpEmTAFizZk1o87fnuqFY12FEuR3IrpXLJ7cD2bVy+eZ2GkLNW74KXV9Um7VFXp9WOLnku0r1uan2pV7n3aJFCwA22WSTYoUjSZIkqR4xiyhJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJykvVS2hLkiRJUoEMGDAAgLFjx4Z9f/rTn4B4RT/VHRdffDEAr732Wtg3e/ZsIHs1z9q2/vrrA3DUUUel3X788cfhmMmTJwPxaqAnnnhiaBsxYgQQr+AbHdPQ3HTTTQBce+21YV9lKy1nqqioAOCuu+7Kaov+XVfm008/BeJVcxctWhTattxyy0rv8+WXX2bFe8QRRwCw0047rTXW+qhr165h+7777gPg4YcfBmDgwIFrvf8jjzySta9bt25r7S+zr9rob7/99gvbu+66KwB33303AJdffnloa968edr9Vq9eDcSrwEO8Mny/fv2qjC1zTEI8LqsakxCPy8wxCQ13XCbh7bffBuCJJ54AYOTIkcUMR5LUwAwePBiAk08+GYDFixcD0KZNm6LFpLWLzi8zzy0hPr/MPLeE7PPLXM4tc1UK89m6+LplKtS5POQ2x8ycP+czd4bs+XN1c+ek53yRJPI+ST+3gw8+GIg/q2fOnBnaVq5cCVQ+liPTp0/P2nfIIYdUemzqmKrJOMk3x5I5V4fafS3POussAD766CMg/8+eBx54IO3vn/zkJ3ndXzUTjfPx48cDcOihhxYzHEmSJEkNzFZbbRW2O3XqBMCtt94KQK9evYoRknKUmSeqK7VBqdtRPjUzlwpxPjUzl5p5XENSk5xvlO+F/HK+mX2l9pdPfjnX/sxbFUaUS4XsfGqUY4Kq86n55FKl6kTnCgAbbbQRAD169ChSNJIkSYpEc4YzzzwTgIceeii09e3btygxKV3S12HkIp/cDmTXyuWb20ky/1EqqroWKJfaIsiuL6qutqiuXJ+WS+1garx18fo0810qptTxVh8+ByVJkiTVHeXFDkCSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSVFoaFzsASZIkSfXfcccdB8BVV10V9o0aNQqAv/zlL0WJSdluvfVWAC655JKsthYtWiQcTfWilVYBTj311LTbt99+O7RFq0dmrh5bqt57772w3a5dOwDWrFkDpK9wu+eee1Z6/xdffDFsn3LKKQCcfvrpAGy11Vah7T//+Q8Av/vd79IeO3qNIV7RtzrRirq/+tWvwr6//e1vQLy68bx58wAYOXJkOKZ169ZpxzZUJ598ctiO/n1GqxpH73+0ajBAo0aNALjnnnsAuOyyy0JbmzZtgHhF3+r6y+yrsv6ivirrL+qruv7Ky+O1lm6++WYAevbsCaSPl7FjxwLQpEkTAC644AIA3nrrrXDMjBkzgOxVtSsTjcnUfqoakxCPS8dkMqLPs2gs7rbbbgD079+/aDFJkhqeI488EojPbY4//ngA7rvvvnBM6rmQ6obo/DLz3BLi877Mc0vIPr/M59yypurSfDbJ121d57O5nMtD9hwzOpdPPT4X0fw5mjtD9vw5c+6c+lyi97S6uXPSc74k8z65PDfInmPW9Lk1a9YMgJtuugmAAQMGZPVxxRVXAPDjH/84tE2fPh2AP/7xj0D6+zVixIjqniKQPU6iMQJVj5PU8Z7POIleR6h6nKzrXD3VHXfcAcBOO+0EwPDhw0PbFltsAcCHH36YFg/En13/8z//A8Cxxx671r607s4//3wAli1bBqTn2SRJkiQpSeeddx4Aw4YNA9LnhT169ChKTEqXmmPIzBPVtdogiPOpmblUiPOp9a02COJ8amYuFeL8UmW51JrkfKN8L+SX883sK7W/zL4q66+mdR+ZeSuIc1fmrdYuyqVCdj41NR+dmU/NzKVCnNfMJZcqRaLPt0svvTTsi3Lr6623XjFCkiRJUor27dsDce322WefHdr2228/oHbrqrR2xboOo6Yyczup2zXN7SSZ/8jM0UB2zVtV9W5JqupaoFzqtCC7viiX2qJiX5+WWgtY6tenme9SkqJx8+yzz4Z9Xt8tSZIkqZDK136IJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEkx/2NbSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSVJeyioqKoodQz5KKlhJkiRJ6e64446wffTRRwNw/fXXA3DccccVJaZSd88994TtQYMG5Xy/p59+GoBu3bqFff379wfgn//8Z0Fii/rI7Ke+mjFjBgADBgyo0f1vvPFGAI499tgqj3nvvffCdrt27QCI5vXz5s0LbR06dEi737fffgvA9OnTw77o3+P8+fMBWLRoUWhr3rw5AJ07dwbg+OOPB+DII4/M9ekAMHv2bACuueaasG/u3LkA/Pe//017HkOHDg3HnHnmmQCst956efWX6cQTTwTiz5lc9e3bF4CZM2dWeUwS73eqZcuWAfDHP/4RiN/Ld999NxwTjYW2bdsCcNBBB4W2UaNGAdC6deu8+6qsv9R8UmZ/UV+59hd56aWXALjgggvCvieffBKANWvWAPDTn/4UgDFjxoRj9tlnn5z7iMYkxOOyqjEJ8bgs1JhU9U4//XQArrvuOgAee+wxIH7fJUlKUjSf6dWrFwDDhw8Pbddeey0A5eWuH7kuCjmfzRSdW0J8fpl5bgnZ55f5nFvWR7X5utV0PhvJ5Vw+9bEzz+Uht/P5zPlzai4rc/6cOXeGms+fk5jzFSvvU9Vzg+w55rrOZyuL7ZJLLgHgmWeeAeCbb74Jbdtvvz0ARxxxBADnnHNOaKtqvERjJPW5ZOZYoOpxEo0RyG+cRK8jVD1OCjFX//LLLwGYMmVK2u2CBQvCMUuWLAGgadOmAOy8886hbciQIQCcdtppgPPo2nT11VeH7TPOOAOA22+/HYCjjjqqKDFJkiRJUuTQQw8F4Iknngj7ojzTjjvuWJSYSl2UT80nlwrZ+dQoRwSFzxM1hNogSLY+KDOXCnE+tapcaqpccr6pv8eva648s+4j6quy/vKt+6gqbwVx7qo28lZJ1wdlqkntU1T3BNXXPkWif8NRLhWy86mZuVSI86k1zQHWp7ourV2U4+7RowcAjRs3Dm3RGIzy6ZIkSSq+d955B4AuXbqEfVH9QfS7tLVz+SlUbqcySVyHUZfVZv4jM0cD2TVv1eVoovkp1GyOGs1PIbc5ak3qtCC7vqi62qK6cn1aVDsIpXt9WrHyXZnM0TQML7zwAgD77bcfkH4t99ixY4sSkyRJkqSSFSWYRlfWaNZQkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkpSXstTVm0tASQUrSZIkqWrRCqcXX3wxAFdccUVoi1bDlCRJ9dOqVasAOOWUU8K+W265BYAJEyYA6StlS5JULPfeey+Q/r108MEHA3DbbbcBsOGGGyYfmCRJalCiefS5554LwNixY0NblFs3ry5JkiSprli+fDkAvXv3DvveffddAGbMmAFAly5dkg9MkiQl5v333w/bBx10EBCfI8yZMye0bbXVVskGJkmSpJzNnj07bPfv3x+AIUOGAPC///u/oa1JkybJBiZJktbqiSeeCNsDBw4EoGvXrkD8Ww1A48aNkw1MkiRJUqkb88Pt6MoayxMMRJIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZJUD5RVVFQUO4Z8lFSwkiRJktZu7NixAJx11llh36GHHgrADTfcAMDGG2+cfGCSJKng3nvvPQCGDRsGwLx580LbpEmTABgwYEDicUmStDZz5swJ24MHDwagRYsWAIwfPz60de/ePdnAJElSvbZgwQIAfvnLXwIwf/58AG6++eZwzJFHHpl8YJIkSZKUg6+//jpsDxkyBIDHHnsMgCuuuAKAU045JRxTVlaWYHSSJKk23HvvvQD8+te/DvvatGkDwP3335/2tyRJkkrHww8/DMCgQYMA2G233ULb5MmTAdh6662TD0ySJAEQ/d9R48aNA+Ccc84Jbf369QPgzjvvBKBZs2YJRydJkiSpHhnzw+3oyhrLEwxEkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJklQP+B/bSpIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZLyUlZRUVHsGPJRUsFKkiRJyt2jjz4atn/xi18AsHLlSgAuvPDC0Pab3/wGgEaNGiUYnSRJytc333wDwLhx48K+Sy+9FICtttoKgMmTJ4e2Dh06JBidJEk1t3TpUgCOP/54AKZPnx7ahgwZAsDvf/97AHbaaaeEo5MkSaXq008/BeDKK68M+66++moAdt55ZwBuv/12ADp27JhwdJIkSZK0bqJrFqLfDs8++2wAOnXqFI4ZO3YsAPvss0/C0UmSpJp6++23ATj//PMBmDJlChDXAQNce+21AGywwQYJRydJkqRCW7hwIQCHHXZY2BedE0b5nt/+9rcANGvWLOHoJElqeObNmwfAqaeeCsBTTz0FwKhRo8IxF110EQDl5eUJRydJkiSpHhrzw+3oyhqddUiSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS8lIWrX5eIkoqWEmSJEk188UXXwBw2WWXAXD11VeHtu233x6Aq666CoCDDjoo4egkSVKm1Bzj3XffDcA555wDwCeffBLazjrrLADOO+88AJo3b55UiJIk1ZrZs2eH7ei77rXXXgPgmGOOCW2jR//fIpRbbrllgtFJkqS6aPny5WH7r3/9KwB/+MMfAGjRokVou+iii4D4nKJx48ZJhShJkiRJter1118H4Mwzzwz7Zs2aBcCQIUMA+NOf/hTatt122+SCkyRJlfr6668BuPLKK8O+qM53u+22S2vr169fwtFJkiQpSd99913YvvbaawEYNWoUAJtvvjmQfi2Y54eSJK276LrrqCYd4O9//zsAnTp1AuCaa64BoFu3bglHJ0mSJKmBGPPD7ejKGssTDESSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSVA+UVVRUFDuGfJRUsJIkSZIKY8GCBWH7rLPOAmDGjBkA9OzZE4BTTz01HDNw4EAAGjVqlFSIkiQ1KCtXrgTgjjvuAGDcuHGh7ZVXXgHgmGOOAeD3v/99aGvdunVSIUqSVBSrV68GYPz48QBcfPHFoe3TTz8FYOjQoQCccMIJAHTr1i3BCCVJUjFEOe4bbrgBgFtvvTW0rVmzBoBzzz0XgBEjRoS29ddfP6EIJUmSJKn4pk6dCsDZZ58NwIcffhjajj76aCCeM+2+++4JRydJUsPywQcfhO2///3vANx4440AlJWVhbZLLrkEgOOPPx6Axo0bJxWiJEmS6pg/vD7MAAAgAElEQVT3338fgDPPPBOAu+++O7Ttv//+AJxxxhkA9OvXL7SVl5cnFKEkSaVjyZIlYfuvf/0rANdffz0ATZs2DW2XXXYZAMOHDwfS8zaSJEmSVAvG/HA7urJGM32SJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSpLz4H9tKkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkvJSVlFRUewY8lFSwUqSJEmqPY8++igAV111FQAPPPBAaNtmm20AOOWUUwD49a9/Hdo23njjpEKUJKleWLx4cdj++9//DsANN9wAwFdffQXA0KFDwzFnnnkmAB07dkwqREmS6qyVK1eG7VtvvRWA6667DoB58+YB0KlTp3DMCSecAMBRRx0FQIsWLZIIU5IkFcB3330HwLRp0wC4/vrrQ9u//vUvIM5dH3fccaHtxBNPBKBly5ZJhClJkiRJdd63334LwC233BL2jRs3DoA333wTgAMOOCC0jRgxAoD+/fsDUF5enkickiTVJ3PmzAHi79wozwmw2WabAXDSSScB8Jvf/Ca0WZMrSZKkqjz22GNh+/LLLwdg5syZAOy0006hbeTIkQAMHz4cgPXXXz+pECVJqjNefvllAMaOHQvApEmTQltUVxZdL33qqaeGto022iipECVJkiQJYMwPt6Mra7RqS5IkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKUl7KKiopix5CPkgpWkiRJUnLefvvtsH3NNdcAcOuttwKwevXq0DZo0CAAhg4dCkCfPn1CW9OmTWs7TEmS6qSvv/46bN97770ATJ48GYCZM2eGtk033RSAE088EYATTjgBgNatWycSpyRJ9cnTTz8NwPXXXx/23XXXXQA0atQIgAEDBoS2wYMHA3DQQQcBsMEGGyQSpyRJin3//fcAPPLII2Hf1KlTAZg2bRoAn3/+OQD9+vULx0Tz6L59+wJQXu461JIkSZKUj+iahwcffBCAcePGhbbo98ytt94agCOPPBKIa4MA9thjj0TilCSpLnv33XeBuCbozjvvDG3z588HoGvXrgCcdtppoW3IkCEANGnSJJE4JUmSVH+9/vrrAIwdOzbsmzBhAhDXwx1xxBGhbdiwYQDstddeAJSVlSUSpyRJteGzzz4DYMqUKWHfxIkTAZgzZw4Au+++OwBnnHFGOCb6PmzWrFkicUqSJElSNcb8cDu6skavlJEkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk5aUsWr28RJRUsJIkSZKK68svvwTi1XsB7rzzTgCefPJJADbeeOPQNnjwYACGDh0KQK9evQBo1KhR7QcrSVICvvnmGwDuv/9+ACZNmgTAP//5z3DMqlWrAOjTpw8ARx11VGg79NBDAWjatGntBytJUgO0bNkyACZOnAjA3XffHdrmzJkDxN/Dffv2DW3RfHbAgAFA+lxXkiTlJ5o7P/jgg2Hf1KlTAZg+fToQf2cD7LnnnkA8Zx4+fDgAW221Ve0HK0mSJEli4cKFANxyyy0ATJ48GYD33nsvHLPLLrsAcU1QdAvQvn37JMKUJCkRixcvBuCuu+4K+6Lvxrlz5wLQqlUrAIYMGRKO+dWvfgXAT3/600TilCRJkiIff/wxADfffDOQfg3Y66+/DsB2220HxHXtw4YNC8dEeR9JkuqCqPbsvvvuC/vuuOMOAGbOnAlA48aNQ9vAgQOBODfzs5/9DICysrLaD1aSJEmS8jfmh9vRlTWWJxiIJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJKkeKKuoqCh2DPkoqWAlSZIk1V0ffPABAHfddVfYN2nSJACef/55AH784x8D0Ldv33BMtN2nTx8ANttss9oPVpKkPLz77rsAzJo1K+0WYPbs2UC8AvD+++8PwBFHHBGOGTx4MAAtW7as9VglSVLuPvnkEwDuueceAKZOnRraHnnkkbRj99prLwAOOOCAsK9Xr14AdO3aFYDGjRvXXrCSJNVRUY3M/PnzAXj44YdDW7T92GOPAfHcGeLv1mjOHN0CbLvttrUXsCRJkiQpb9Hc75lnngn7Jk+eDMCUKVMAWLJkSWjbfffdATjwwAOBuDaoe/fu4ZjmzZvXYsSSJOVm9erVAMydOxdIrwmKtqO2H/3oR6HtkEMOAeL6oOg3RH8vlCRJUl338ssvAzBhwgQgvu5r8eLF4ZgOHToAcPDBB6fdAuy9996A576SpMKKfmN44IEHwr77778fgIceegiAFStWhLbevXsDMGzYMAAGDRoU2lq0aFG7wUqSJElSYY354XZ0ZY3lCQYiSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSaoH/I9tJUmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEl5KauoqCh2DPkoqWAlSZIklaa3334bgKlTpwIwa9as0DZnzhwAvv/+ewA6d+4c2vr27Zt2u/feewPQpEmTWo5YktQQLF++PGz/61//AuLvqNTvqoULFwKw4YYbAtCrV6/QduCBBwIwaNAgADbffPPaC1iSJCXmiy++AOD+++8H4MEHHwTg4YcfDscsWrQIgBYtWgDQo0eP0HbAAQek3Xbo0AGAsrKy2gxbkqRaEeV3H3nkkbAv+k589NFHAfjkk08A2HTTTcMxPXv2BOLvw4EDB4a2LbbYohYjliRJkiQlZc2aNQA8/vjjYd99990HxL+5vv766wCsv/764Zj99tsPiH9vjWqDAHbeeedajFiS1NBEv+ml1gJF27NnzwZg2bJlAGyzzTbhmOi7qV+/fml/AzRr1qwWI5YkSZKSE+V2HnvssbDvnnvuAeLauahmAGDjjTcGoE+fPgAcdNBBabcArVu3rsWIJUmlZvXq1QA888wzYV/0HRPdzps3D4DmzZuHY/bff38gzs0MGTIktPldI0mSJKkeGfPD7ejKGssTDESSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSVA+UVVRUFDuGfJRUsJIkSZLqnxUrVgDw1FNPATB79uzQFm2/8MILADRp0gSAjh07hmP22WcfALp37w5Az549Q9umm25aW2FLkuq4jz76KGw/99xzADz55JMAzJkzB4Dnn38+HPPtt98CsP322wPQv3//0DZgwAAA9t13XwCaNWtWW2FLkqQS8s477wDx3DV1PvvII48A8NlnnwHQokULIH0++z//8z9APJ/t0aNHaGvdunVthS1JEgBff/01AC+//DIQ52CjuTPA448/DsDSpUsBWH/99UPb3nvvDUDv3r3Tbjt37hyOKS93bWhJkiRJUjyvjOaZANOnTwdgxowZACxbtiy0RfnRn/zkJ0CcQ4W4TqhLly4ANG/evLbCliSVgOj3uqgWKDW/Ge174403gPTvjOj7JDO/ueeee4ZjysrKaitsSZIkqaRE590Q18hFuZ3o75UrV4Zjonr8zOu9UvfttttutRixJCkp33//PQDz588H0mupM/M1qb8DbLfddgD87Gc/A+LczIEHHhiOiWqvJUmSJKmeG/PD7ejKGr0qR5IkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKUl7KKiopix5CPkgpWkiRJUsMUre772GOPAfFqjQBPP/00AG+++WbW/XbZZRcA9t5777RbgD333BOAXXfdFYAmTZoUOmxJUoGtWLECgFdffRWA559/PrQ99dRTQLyS73vvvRfaGjduDEDHjh2BeKX31O+Fnj17AtC6devaCF2SJDUwa9asAWDevHlAfK4yd+7ccMyzzz4LwMKFCwFI/Y1x++23B6Br165ptwCdOnUC4nObTTbZpPBPQJJUcpYvXw7Aa6+9Fva99NJLQPz9E333ALzxxhtA/J3Vtm1bIP07p1u3bmm3P/3pT0Ob+VRJkiRJUiGsXr0aSM+dRnVB0W+/UX4V4JNPPgFgvfXWA6BLly5A/BswxPPYKJe6zTbb1ErskqTC+/jjj8N2lN+M8ppRrWjq98KXX34JwI9+9CMg/g6AuC6oe/fuQPp3RfPmzQseuyRJktQQRbUK0fVeEOd2nnjiCQCee+650Pbtt98C0KZNGwB69OgR2qJz9qg2oUOHDoDn75JULIsWLQLghRdeANJzMtFnfXRd13fffQfENWgQf8ZHuZnoui2AnXfeubbCliRJkqRSM+aH29GVNZYnGIgkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkqR7wP7aVJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJOWlrKKiotgx5KOkgpUkSZKkqnz22WcAPPXUU2FftP3kk08C8Pzzz4e2b775BoCmTZsCsPvuuwPQqVOncEy03blzZwA6duwY2n70ox8V9glIUgP06aefhu2XX34ZgJdeeint7+gWYMGCBQCsXr0aSP8s3muvvQDYe++9Adhnn31CW9euXQHYcMMNC/sEJEmSCmDZsmUAzJ07N+x79tln025T21LPoQDatm0LxPNaiOevHTp0SLsF2GWXXQBo0qRJYZ6AJKmgojkvwL///W8A5s+fD8Arr7wCwKuvvhqOmTdvHgDvvvsuAGvWrAltLVq0AKBLly5APD9O3Y5ut9hiiwI+C0mSJEmSasfChQuB7Jqg1HqhN954A4Douo5NNtkktEU1QFFNUGZtEED79u0BaNy4ceGfgCQ1INHncJTnzKwJSt2ObpcsWZL1ONtssw0A3bt3B+IaodR90e9kjRo1KtwTkCRJklQQK1euDNvPPfccAI8//jgQ53ZSt7/88ksgrm/bddddwzF77rlnpbcAe+yxBwAbbLBBYZ+AJNUT77zzDgAvvvhi2BdtR7dR/gbg448/BqCsrAyI648B9t13XyDOzUR/R3kcSZIkSVLOxvxwO7qyxvIEA5EkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk1QNl0YqyJaKkgpUkSZKkdbFq1aqw/eabbwLw8ssvp92mrioZ7fv888+BeHVJgHbt2gGw2267AbDzzjun3UK8CmW0r2XLloV6KpJU53z00UcAvPHGGwAsWLAAiD9vU7dfe+01ABYtWpT1OFtuuSUAnTp1SrtN3e7cuTMQfxZD+me0JElSfbZ48WIAXnnlFQDmz5+f9nfqdnRu9t1334W2Jk2aANnz2B133DEcE21HtzvttFNoa926daGeiiTVe8uWLQPgrbfeSrtduHBhOCZzX/TZDbBixQoAGjVqBMAOO+wAQMeOHcMxHTp0qPQWYPvttwecM0uSJEmSGpavvvoKgHnz5gFx/U/qdlQf9OqrrwLpOdTmzZsDcU1Q+/btQ1tmLVBqnVCUR23WrFmhnook1QlR3eW7774L/H/27jzOzqrOE/+nKgkJkIBAABFZXYggrS0600zjQtiU1W4FFUmmcYki8hp326UtOj09rt20tgQNIpiANEhLFG1BZbFtccbfoNIOCILsixCEsBNIUr8/Tp16bt2qgqokdStVeb//+Tx1zrm3vrduVcHzzXnqGdjDrHuB6j6h1rn6O7b+Xq59ztbfne37g+qeoNax2bNnr6+XAgAAbMDWrFmTJLnxxhuTJL/85S8H5FBjdV9G0pxz1B5N7e3Ufk6S7Lnnnkmafk9r36f2hAA2dK3XYtXeTO3JXHvttYPmal98xYoVSZrfl0nTp3nZy142IFuPa49myy23XI+vAgAAgD4L+7JnqMnuDhYCAAAAAAAAAAAAAAAAAAAAAAAAAADAJNDV29s73jWMxoQqFgAAYDzceuutSZq7UybJ1VdfnaS5m+X1118/IJPkscceG/A82267bf9xveNvvatlzSTZfffdkyS77rrrgNxqq63W7YUADOPee+/tP7755puTJLfcckuS5Kabbuqfq7/j2n/3JcmDDz444Dmf9axnJRn4+63e0bz+DvzTP/3T/rl6B9/ttttuHV4JAACtnnrqqSQD/7/t//2//5ck+c1vfpMkueGGG5Ikv/vd7/rX1LH289ok2WKLLZIkL3jBCwZkkrzwhS9Mkjzvec9Lkuy0005Jkp133rl/TR3bZJNN1u5FAYyxVatWJUnuvvvu/rHaH6xZz5mTwb9H68dJct999w147vq7r/6eTJrfnfX36Z577tk/9yd/8icDxjbddNO1ek0AAADA0GoP9dprr+0fq/uDag+1/vt40vRaa29g9erV/XNTpkxJ0uzzqf9WXv99PGnO/3fbbbcBa5Nkl112SZJMnz59HV4RwGC153n77bcnGdjfrMe1r9m+NyhJfv/73ydJnnzyyUHPXf/dp/7Oq3uDkmTvvfdO0uwJqh/rcwIAAOtLvfYhSX75y18mSX71q18lac5rWvs+9fym9oS6u7v752q/pvZyWvdv1L0ddU297uu5z31u/5qpU6eu8+sBNg4rVqzoP66/x2reeOONSZLrrruuf80111yTpOnbtF+/lSSzZ89OMvB3V+3T1J7My172siTJS17ykv41m2+++bq8FAAAANbdwr7sGWqye6hBAAAAAAAAAAAAAAAAAAAAAAAAAAAAGI4/bAsAAAAAAAAAAAAAAAAAAAAAAAAAAMCodPX29o53DaMxoYoFAADY0LWeE956661Jkuuvvz5Jct111/XP1eM6VzNJ7rrrriGfe8stt+w/3m233ZIku+6664BsPd5xx+clSZ73vB3753bYYYckyfbbb58k6erqGsnLAjYwq1atSpLcc889SZI777yzf+62225Lktxyyy0DsvX45ptvHvDxY489NuhzTJkyJUmy00479Y/tscceSZI5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AAAAAAAAAAAAAAAAAKMydbwLAAAA6KQ1a0peeWXJpUububPPHrjmiCNK/uhHzZoDDijZ1TV2NQIAAABsCC67rOTrX9+MvelNJU8/vaQeCYxA/UGZP78ZO/jgkh/5SMlDDmnmjj665Kmnltx227GtDwAAAGAjd911zXFt07zoRSX/7d+auc0371xNMOnst19z/Ktflaw90E9+spk755ySixaVPOigsa8NAAAAANaHKVNKHnhgM1aP77+/5AUXNHOnnVay9sD22KPkm9/crDn++JK77LJ+awUAAFjPuse7AAAAAAAAAAAAAAAAAAAAAAAAAAAAACaWrt7e3vGuYTQmVLEAAMD4uuOOkuec04x99aslb7655D77NHMLFpR8y1tKzpo1tvUBSebOLTlnTjO2aNH41AIAAECS5Oc/L3nwwSUPOaSZ+5d/KTl1amdrgknve99rjk88seTDD5f8zGeauXe+s2RXV2fqAgAAAJjErr++5P77N2PPe17JH/yg5MyZna0JNkp33tkcv+99JS+4oOTRRzdzX/5yye2260xdAAAAMMnVS7h6ekouXz5+tcBG7ZprSi5dWvKMM5q5++8vWa/DnDevmau9s003Hdv6AAAAioV92TPUZHcHCwEAAAAAAAAAAAAAAAAAAAAAAAAAAGAS6Ort7R3vGkZjQhULAACMvZUrS373u83YkiUlf/CDkttu28wdc0zJd7yj5N57j219wDOodwqdM6cZq7f7BQAAoGN+9avm+IADSr761SXPP7+ZmzatczXBRuuxx0ou7LuR8Re+0Mztt1/Jr3615B57dK4uAAAAgEnid78r+ZrXlNx992au7jmbNaujJQHtLrqo5EknNWMPPljy5JNLvve9JadM6VhZAAAAMJnUS7h6ekouXz5+tQAt6oXTSXPxdL1w+uKLm7mZM0vWC6fnzStZ9xkCAACsX30XOqVnqMnuDhYCAAAAAAAAAAAAAAAAAAAAAAAAAADAJNDV29s73jWMxoQqFgAAWP+uuabk0qUlv/a1kitWNGv237/kggUlX//6Zm7atLGtDxiluXNLzpnTjNXb/QIAADDmrr66ZD09S5KXv7zkd79bcvr0ztYEtPnVr5rjd76z5LXXlvzIR0p+/OPNmk026UxdAAAAABPMDTeUfM1rSu66a8mLL27WzJrVyYqAZ/TYY83x5z5X8tOfLrn3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GBERp556akRE3H///T1tt912W0REXH755f2ec+HChRER8cwzz/RpW2WVVYbV3z/84Q8RUVbIvOCCC3ratt5664iIuPLKKyOi96pp2bbbbhsRER/72MciImLPPfccVn9aZeWVV17qMXkV0rwC5JQpUwZ17nz8kiVLhti7pcuvU+1rFNH3dcqvUcTgXqdmnnukDfb7f7nlluv1db3XJv+cPffccxERMTmv5BgRU6dOHXSfVltttUEfO9YN5v+3kf/b6u+w/P+70korDbo/a6+9dp998+fPH/TjAQCAZcPpp6c8++yy75JLUu6338g/X20tKNeBIvrWghqpA0X0rQWNVB0oom8tqB3qAEPVSB0oorFaUCvrQBFDq9dF9P86tVstcCi1ioi+r0/156y2FtRIHShiHNWCdtutbOef9VmzUh5ySMq5c8sx+Xtnww2b37dBaEadMP8OrtYJ1bIAAAAYC6plw/e/P+Ujj6T82c9SbrTRyD3fUGqgEf3XQUe7BhrRfw1sPNdAI4Y2Hy4fGzE68+GGWwNt9rlHmhroGLDllinvvDNlroWedlo55vrrU55/fsqddmpN32qM1PdLRP910UZqohF966JqogAAAEuX628RfWtwuf4WMbR5iK24HzViaPMQR6v+MlTL+jzEwdTfmnHuZhjpGlyuv0WowbVc/j10yikpTz45Za7tRZQPNDjzzJR5XmRExI47pjzwwJTV78WJY/djwtz3CwBARETn0g8BAAAAAAAAAAAAAAAAAAAAAAAAAACAYuwuxQAAACPo6adTXnddyosvLm333pty441THntsaTv00JQbbtjc/jXb/vvvHxERn/70p3v2nX/++RER8clPfjIiIr74xS/2tB100EERMfCKessvv3xERKy66qoREfH888/3tL300ksRETFxhFZ/6+jo6NmeOXNmr1y0aFFERPzsZz/rOeYLX/hCRER86EMfioje/7YTTzxxRPpEX/l1qn2NIvq+Tvk1iuj7OtV7jZp57rEs/5zllQSrK2Xmn7nBrJT52GOPNaF37S3/31ZXgsyrOOb/58Gs4Pjoo4/22bfOOuuMRBcBAIBx4LzzUs6enfLCC0vbYYc173lra0G5DhTRtxbUSB0oom8taKTrQBHLbh2gnQymXhfR93XKr1FE/6/TcM/drrXA6s9ZbS2oWntdZmtB3b974stfTrn33imPPLIcs+mmKU89NeVJJ5W2CROa278mq61l5TpWhFoWAAAAo+uFF1LutlvZ9+CDKX/605QbbTTyzzuUGmhE/3XQwdRAI0Z+Ply19tnffDg10NHTX616uDXQZp97rFIDHQH5d9AnPpFy331L2ymnpNx555S77lravva1lBts0Nz+jbD+6qLVeZRDqYuqiQIAACxdrr9F9K3B5fpbxNDmIeb6W8TYm4fY7vWXdtPM+4aX1XuSa+9HjehbgxtM/S1iGa7BjbTOzpTbbFP25e1zz015442l7eqrU374wynXXbe05XmThx+e8s1vHtm+jgHu+wUAaG+do90BAAAAAAAAAAAAAAAAAAAAAAAAAAAA2svILVcDAACjbMmSlLfdlvKqq0rbd76Tsqsr5a67lrZzzkm5/fYpKwvxjRt5hbJjjjmmZ9+sWbMioqwceM011/S03XfffYM+d16B8Otf/3rPvjvuuCMiIt7znvcs9fHndL8AF1xwQc++Bx54ICLKCpvVVTjvuuuuiIiYNm1aRERMmjQpIiJ23HHHnmO26V6tbsUVV4yIiO9973s9be20OmK7ya9T7WsU0fd12qayumDt61TvNWrmudvBzjvvHBER1113Xc++H/7whxERsXdeZbGO+fPnR0TE/fff38Tetbc999yzZ/uKK66IiPL98pGPfKTfxy1cuDAiIm699daefSussEJERLz//e8f6W4CAABt5qtfTZn/DD333JRHHdWa56+tBeU6UETfWlAjdaCIvrWgRupAEX1rQbkOFNG3FrSs1gHawWDqdRF9X6f8GkX0/zoN99zjoRZYWwvKdaCI/mtBuQ4UsYzUgrbdNuWvflX2nX12ytNOS3nTTaXtkktSbrZZ8/vWRLmWletYEUOrZeU6VoRaFgAAAEPzwgspP/CBlNVyRJ6/t8kmzXv+0aiBRgxtPtxgaqAR/c+HUwMdPf3VqodbA232udvBUGqgEebD9bHuumU7T5r+8IdTHn98adt885Sf/WzK445LOWFCc/s3QmrrotXrAEOpi6qJAgAALF2uv0X0rcHl+lvE0Gpwuf4WMbR5iLn+FtG3BpfrbxFDm4c4nuov7aCZ9w0v6/ck5/pbRN8a3GDqbxFqcC2x8sopDzyw7Mvb+f//2mtL25VXpvzKV1JOn57yyCPLMfvtl3KllUa2ry3mvl8AgPbUOdodAAAAAAAAAAAAAAAAAAAAAAAAAAAAoL34YFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAaMnG0OwAAAEPx0ENl+9prU158ccr//d+U06eXY847L+VHP5py6tTm9m+sOuaYY3q2zz777IiI+Od//ueIiNh999172v7+7/9+0Oc866yzIiLi5z//ec++Qw89NCIizj///IiIeNe73hUREYsXL+45Zu7cuRERMXv27IiIuPzyy3vaJk7s/0+Vo446KiIivvKVr0RExJve9KaIiHjmmWd6jvna174WERFdXV0RETFjxoxB/VsOOOCAiIi45pprIiLigQceiIiI17/+9YN6PEntaxTR93XKr1FEY69TM889lv3Lv/xLRETccsstPftOOOGEiIhYZZVVIiJi66237ml78MEHIyLi5JNPjoiIddZZJyIi5s+f3/S+tpv8Oyyi/B7L/7dTu98s3vOe9/Qc87e//S0iIj71qU/1+joi4uLuN6K11167iT0GAADGqq9/vWx/4hMp858cJ53U+v5ElFpQrgNF9K0FNVIHiuhbC6qtA0X0rQXlOlBE31pQI3WgiJGrA9TWgSLUgoaqv3pdRN/XKb9GEUOrBQ3m3O1eB4roWwvKtYqIvrWg2jpQxDJWC5o8uWyffnrKvfZKeeSRpW2LLVKeeGLvY6uPbwP16vFDqWXlOlaEWhYAAACD9+KLZXvXXVP+/vcpf/rT0rbppq3rUytroBH9z4cbbg00ov/5cMOtgUaYDzdcY60GOthzj2VDqYFGmA83KLvskrL6PXLOOSlPOSXllVemvOiicszb3978vg1R7e/l6vdLbV20Op+vv7qomigAAEBjamtwuf4WMbQaXL17uRqZh5jrbxEjPw+x0fqLeYgjp5n3DTfz3GNVrr9F9K3B5fpbhHmIY9rGG6fMcx0jIk47LeVtt6W86qqU//iP5Zg8iX233VJW51Fuv33Kjo4R7WozuO8XAKA9dY52BwAAAAAAAAAAAAAAAAAAAAAAAAAAAGgvHdUVY9pAW3UWAIDhefnlsj1vXso5c1Leemtp6170LfbZJ+Xhh6d885ub2792d2T3KmuXXHJJRJQVyyIi3v3udzd8vieffLJn+3Of+1xERNx4440REfHQQw9FRMSqq67ac8wWW2wREWUFvx122KHfc//617/u2c4rH/7iF7+IiIg///nPERExefLknmM2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JEmSJEmSJEmS6uLAtpIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKkuvSsWbOm3XWoR6GVXblyJQA///nPAbjgggsAuP3225N9dtttNwBOPPFEAI477rikbMMNNyyknpIkSa2yevXqZP2mm24C4NJLLwXgiiuuACAbT7773e8G4KyzzgJg0qRJRVRzwFu+fDkAP/7xjwG46KKLkrK7774bgN133x2A448/Pil7xzveAcCmm25aSD0lSZK6wYMPPgjAZZddlmz76U9/CsDDDz8MwIEHHgjAmWeemexzxBFHADBokHOJFWHWrFkAfP3rXwfgO9/5DgCLFy9O9nnjG98IpDHwm970pqRsnXXWKaSekiRJnWrVqlXJ+g033ACkMfCvfvWrpGzFihUAnHDCCUCa+91xxx0LqedAt3DhQiCNewG++tWvlpQdc8wxALznPe9J9jnggAMA6OnpKaKakiSpH3r++eeT9WiH/t73vgfAv/71LwAOP/zwZJ9zzjkHgH333beoKg5oL7zwAgDf+MY3Spbz589P9on86EknnVTyN8Dw4cMLqackSVKrRG4M0r6s0bf15ptvBmCrrbZK9om85imnnALAyJEjC6nnQFetXR/Stv18uz6kbfu260uSJKVt+/l2fUjb9qu164Nt+0W75ZZbAPja174GwJVXXgnABhtskOwT93JFDLzXXnsVWUVJkqSOlm3zjtxvxMAxzgHAFltsAcDpp58OwH/9138BMHbs2CKqOeDlxzWAdGwDxzWQJEmqTz3jGkA6tkEbxzWY/spyWqVCR1mQJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJNWlZ82aNe2uQz06orK33nprsv6DH/wASGf6WLJkSVJ2yCGHAPCud70LgLe85S2AsztLkqTONWPGDCCdIesnP/lJUjZr1iwA9thjDyCdyfekk05K9llvvfUKqadq96c//QmASy65BEjjVoCFCxcCsP/++wNp3Apw9NFHA76nkiSpf4rY9vLLL0+2xUxmd955J1A6+2vMCHvyyScDMGXKlCKqqTosXboUgJ/97GfJtrieueGGGwAYNWpUUvbWt74VSGf+Peigg5KywYMHt7aykiRJbfDXv/4VSGftzcZNs2fPBmDvvfcG4LjjjkvKTjzxRADWX3/9QuqptYvYN/L43//+94H0PQaYNGkSAO9+97uB9FoGYLPNNiuimpIkqQusWrUqWb/mmmuANLb47W9/m5RFXi3ixNNOOw2AV7/61YXUU2u3bNkyoDTOjz4CN954IwDjxo1Lyt7+9rcDab+PffbZJynr6elpbWUlSZJqtHLlymT9D3/4A5DmxH79618nZatXrwbgzW9+M5D2aY2/AQYNGtTayqomkduENHbNt+tDeg2Sb9eHtG3fdn1JktQf5dv1IY2b8u36kOZsbdfvXE8++SQAP/rRj5Jt0V/5wQcfBGCbbbZJyiL2jfd2hx12KKSekiRJRYtc4VVXXQWkMdLVV1+d7BN53Te96U1A2r4Naf7XPGHncVwDSZKkcv1sXIPpryynVSq0d4YkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkqS49a9asaXcd6tGxlY3ZQH7zm98k22I26JgdesSIEQAccsghyT6HH354yXKTTTZpfWUlSdKAtHLlSgBuu+02IJ217He/+12yz4wZMwDYcsstgdKZrmImM2d77W7Lly9P1n//+98D6SweMbMdQFwnxKxnhx56KACHHXZYss/kyZNbW1lJkqQGrF69GoDbb78dgGuuuSYpi/W//e1vAIwdOzYpO+aYYwA4/vjjgTQOgnSWX3Wn2bNnA6Uz2f30pz8F0s/ChAkTkrKIeWN58MEHAzB+/PjWV1aSJKkBixcvBuD6668H0vbpyAEDPPHEE0Ca3424F+C4444DYJtttml5XdU69913X7L+/e9/H4BLL70UgLlz5yZlr3/96wE46qijADjyyCOTsq222qrl9ZQkScXKtg/fcMMNQNrH8de//nVSFjm0Aw44AIBTTjklKYvc6TrrrNPSuqo1nn76aSDtFwBpnHjvvfcCpXHgG9/4xpLlgQceCPj+S5Kk1pk3bx4Af/zjH4E0rxn9GwHmzJkDwH777QfAiSeemJQde+yxAKy33nqtr6xaJq5JIG3bz7frQ9q2X61dH2zblyRJnSnfrg/lbfv5dn1I2/Zt1+9/7rjjDqA0dxuxcOR1d9lll6QsYt+4vyuuj4YNG9b6ykqSJDXgySefBNK4N5YA1157LQAvvfQSAAcddBBQ2rf1rW99KwBjxoxpfWXVMn0d1wDSWNhxDSRJUifKj2sA6XgG/XRcg+mvLKdVKuzomkuSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSOo8D20qSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS6tKzZs2adtehHl1V2fDCCy8A8Itf/AKAq666Kim78cYbAVi2bBkAr3nNa5Kyww8/vGT52te+NikbPHhwC2ssSZK61ezZswG4+uqrS5YA1157LQDz588HYLvttgPgjW98Y7LP0UcfDcB+++0HQE9PT4trrE6ycOHCZP3KK68E4He/+x0A1113HQBz585N9tliiy0AOPTQQwE47LDDkrKDDjoIgLFjx7awxpIkaaCKuPeaa65Jtv3hD38A0rj3xRdfBGCzzTZL9om45YgjjgBK45fhw4e3sMbqVI888giQ5m4h/Vz9+c9/BmDVqlUA7L777sk+8dmJz9TUqVOTMnO3kiSpWbJt+XfffTeQxr3ZWDjilpUrVwKw6667AqXx7jHHHFNSpoHh5ZdfBkr7KFxxxRVA2n4wb968pGzKlCkAHHnkkQAcddRRAOyxxx7JPrYbSJLUmSIfGu27v/3tb4HSuHHJkiUA7LbbbkB6rgc4/vjjAdh6661bX1l1jLjO+PnPf55sizjxrrvuAmDEiBEA7L///sk+0c8kln5uJElSJZXymxFr/P73v0/K/vKXvwBp3mnfffcFSvu2vv3tbwdgyy23bF2F1bGiXR/Stv1q7fqQtu3n2/Uhbdu3XV+SJDVTxL75dn0oj1uiXR/K2/Zt19fq1asBuPnmm4H03i5IP1cPPvggAKNHjwbgwAMPTPbJx8DmbiVJUissXbo0Wf/Tn/4EpHFvto/CAw88AMCoUaMAOOCAA5KyyP9GDLzhhhu2rsLqWLWMawDp2AaOayBJktqlnnENIB3boJ+OazD9leW0SoWDCqyIJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJKkf6MnOgtwFuqqytYiZSG666SagdObpmI360UcfBWDcuHFJ2X777Qeks1HH33vssUeyz4gRI1pUa0mSVLSZM2cm67fccguQztYbfwPMmDEDSOOA/fffPymL2cti6ayrqseqVasA+Mc//pFsi9lDYkaRbFlPTw8Au+22GwD77LNPyTK7vummm7aq2pIkqQs99NBDAPzlL38B4LbbbkvKIga+//77ARg2bFhS9rrXvQ4on3V15513bnGN1V8tWrQIgOuvvx5I49/s+uOPPw6UzugbOdvXvva1QBr37rXXXsk+o0ePblW1JUlSl1i+fHmyfscddwDlMXDEvwDPPfccABMmTADgkEMOScoi9j344INL9pF6s3LlSgD+9Kc/Jdt+85vflCwj3t1oo42SfQ488EAgbX/ItkPssMMOLayxJEkD0+LFi5P1W2+9FUj7Gt58881JWbTVDhkyBIADDjgAgKOOOirZ54gjjgBgs802a1l91X88++yzQNqPNZYA1157LQALFiwASvufRF/WfB/XbKwY/QkkSVL3iv6Ed999d7ItTurzNQAAIABJREFU4tX8EtLYIvJMhx9+eFIW65HfzN43I61Nvl0f0vb8fLs+pG37+XZ9KG/bt11fkiRB2rZfrV0f0rb9fLs+pG37+Xb9/H5SrZ544gmg/J4ugBtuuAGAhQsXAjBp0qSkLB8Dx9877bRTss/gwYNbVGtJktQtXnzxxWQ94tx8DJy9lzzGTIp7tyLuhfT+rrjfa/jw4a2qtvqhaIeA9DPXyLgG2XXHNZAkSZXkxzWA8vu66hnXAPr92AbTX1lOq1Q4qMCKSJIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZL6gZ41a9a0uw716KrKNkuM5hwzR0D5LNbPPPMMUDpDyR577AHAfvvtB6Szp0E6i8SrXvWqVlVbkiStRcwUNWPGjGRbnNtj5oZbbrkFgFmzZiX7DB06FEjP9dkZo/7jP/4DgAMOOACAkSNHtqLqUkVz585N1q+77jqg/DN9zz33JPusXLkSgC222AIojVfzMwDvsssuSdmQIUOaXndJktQ6MfsuwB133AGkM5RFjADpTGYvvPACACNGjABg9913T/aJ2Hf//fcH0rgXYNSoUc2uurRWkbu99tprk23x+Y5YeObMmUBpHBvxbXymI/6FNAaeOHFiq6otSZJa7LnnngPgr3/9a7ItP1tvxMYAy5YtA2CDDTYAynNjAAcddBAAu+66KwCDBjmHrVov8rlXX311su3mm28G0nh30aJFSdlGG20EpNdqce0WS4Add9yxdRWWJKnLZM+jcW6Nc+1NN90ElMaN0b66ww47AKX50egrcOihhwIwZsyY1lRaIv0sxnXODTfckJRFP5e///3vACxZsgSA8ePHJ/vEtU6lvq3RJjBs2LCW1F2SJK3d4sWLAfjb3/6WbMv3A4zcZzamXX/99YG0DTTO9QBveMMbANhtt90A6OnpaUndpUqiXR/Stv18uz6Ut+3n2/WhPH9vu74kSd0r2vUhjW/z7fqQ5mirtetDGhvk2/XBtn0Va8WKFUD6Gb7xxhuTsuinHZ/3hQsXAqXtCVOnTgXSz3c2Fo4y2x8kSeo+Ma7UAw88AJTGuxEDR6zw4IMPlv3/9ttvD6Qxwute97qk7OCDDwZgs802a3a1pbWqZVwDSPvCOq6BJEkDQ1/HNYC0H6PjGlQ0/ZXltEqFZsQlSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSXVxYFtJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJUl161qxZ0+461KOrKlukZ555BoDbbrst2XbrrbeWbLvrrruSstWrVwOw8cYbA7D77rsnZbEey5122gmASZMmtaTukiT1FytXrkzWH3zwQQDuuOOOkmV2/Z///CcAS5YsScpGjx4NwNSpUwHYd999Adhvv/2SfWLbOuus09wnIBUg+3mP+DS+E9lY9oYbbgDgxRdfBGDo0KFJ2bbbbgtUj1sBXvOa1wAwfvz45j4BSZIEwPz58wGYMWMGUDnevf/++0v2AVi+fDkAG220EQB77LFHUhbn9Ih9YzlixIjmPwGpQM8++ywAt99+e7ItYt/I4WbL4nsyduxYAHbeeeekLB/7Tp48GYA999wz2Wf48OHNfQKSJAlI22PzOd9sLBwx8OOPPw5Ati0+2lp7y/nGub2np6f5T0BqslWrVgFpWweU91G47rrrAJg3b16yz5gxYwCYMmUK0HtfhfhOgN8LSVL3WLFiBQAPPfQQUDl3GufK7Hk0zq0RN77hDW8A0lgR4MADDwRg8803b0ndpWaKz/QDDzwAVO7bevPNNwMwc+bMpGzIkCEAbLfddkDv8WL0C4i+NpIkqboFCxYAcO+99wK9922N/q9xPof0vpPIa1bKc+66664ADBo0qPlPQCpAvm0/366fLcu360Patl+tXR/Stn3b9SVJao1q7frZ9Xy7PqRt+/l2fSiPgW3XV7fL526z35N8DPyvf/0rKYvvSW/jEuRjYNv8JUlqjeiXAOV9E/JxL6T3csf92iNHjkzKIq+bv6cL4IADDgBggw02aGr9paLF2AbNHtcA0hjYcQ0kSWqt/LgGUD0G7uu4BuDYBmsx/ZXltEqF9hiRJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJNWlJ2bI6hJdVdlOE7NCAPztb38D4M477wTSWSWy69kZBwE23HDDZD1mXdltt92AdOYIgB122AGA7bbbDnAmYUlSd5s9ezZQOsPofffdB5SfR2M7pLOdjRo1CoBXv/rVSVmcR2O55557JmU777wzAIMGOf+ABrbVq1cD6XcvOwPwP//5TwDuvvtuIP0Ozps3L9knZvKNGbOz8Wqsx/dtxx13TMpi/+xMapIk9WfLli0D4MEHH0y2xfo999wDpOfe7PrTTz9d8jgbb7xxsh7n2vwS0th3q622as4TkPqJpUuXJuu33347kMa52e9gxMAxY+DLL78MlOZgI86t9B2cPHkyANtvvz0Am266aROfhSRJ3WHOnDlAGvfGjLyQnmvj/BsxMcCiRYsAGDx4MJCeT7O53zjvRu53r732SsrGjh3bxGchdYeVK1cCpf0Roq9CxL2xBHjggQcAWLVqFQATJkxIyuJ6MmbIju9ZxL+QXmvaxiJJaqaFCxcm6xE7RpwY57F//OMfyT7RbyD6DKy33npJWZzH8uc1gH322Qco7aMnDRQPPfRQsh7fp4ghK/Vtjb4BEfdFX1Uo75Ozyy67JGVxHTdx4kQg7VcgSVI3iXxL3OuRzW9GnFrpPPrEE0+UPE608cc5M7sey6lTpyZltitK/xZt+/l2fSjv25pv14e0bT/frp9dz7frg99BSdLAk2/XhzT2zbfrQxoLV2vXh7RtP9+uD2nbvu36Uqm4rxLg73//O5B+9yr1bX3sscdK/v9Vr3pVsp7v05rN3cZ9XfGdHTNmTHOegCRJXSDupX7yySeBNAa+9957k33yMXA2To6c8ejRowGYMmUKUDnvVGl8oCFDhjTrqUhdrZFxDSDtv+C4BpIk1SbGNYA0rm1kXANI+z04rkHhpr+ynFap0Lt5JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEl16VmzZk2761CPrqpst5s/fz5QecbuO++8s2RbdkaXVatWAemshjFSdXbGiB122KFkGTMKZ7eNGzeuWU9FkjSAxXnp8ccfT7bFTEmxjPNYzN4L8MADDwDp+TBr/fXXB9LZefPL7Pp2220HpOdFSa0zc+bMZD0/A3DMgpbdFr8L2WuimNEsH8NmZ+qO73WlsuxswpIkFemZZ55J1iOWfeihh0r+rlQWM/rGrKKQxq5xjnv1q1+dlFWbtWzChAnNeiqSarBixQogva7NzkCYn407WzZ37tySx1l33XWB0pg21iNPW6ksYuIRI0b09alIklS3OA8+9thjQGm8m5+tt1LZiy++WPJ4o0ePTtZ32WUXII2Bs7P0xvqUKVMAWGeddfr6VCTlLF68GEj7I9x+++1J2T/+8Y+SbY8++ihQmt8dOXIkkOZud9ppp6Qs1vPLiRMnJvv09PQ066lIkjpUnGsipzJjxgygtK9Aflu2DTJEDLnbbrsBsMceeyRle+65Z8m2bbbZpnlPQBKQtvVX6tua35ZtPwkRN1bKgUZf1nwfV0jzosOGDWvCs5AkDXRLliwBSu/DiHxmxKJRFvErwMMPPwzAyy+/DJTmM6LPW/RfjXg1uy2WG220UbOeiqQq8u36UN6nNdueH+v5dn0ob9vPt+tXKov4FWzblyQVL9+uD2m8m2/Xr1SWb9eHNC+bb9eH8j6ttutL7bFgwQKgcryb33bfffclZcuXLy95nE022SRZj5g34tvecrfR/j9o0KC+PhVJkuq2aNEioHK8G/mhuJcrWxbbli1bVvJ42fNhvk9rpb6t0TfB86BUrOhX1OxxDaA81+u4BpKkTtLXcQ0gHdugkXENwLEN2mj6K8tplQq9IpEkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk1aUnO4p/F+iqyg4kMeM3pLPDxEjZsczOMpyfQfGll14qe8yYBTw7S3DMMBHLSZMmlfyd3ZadgUaS1L3iHBEzEGVn681vi78BHn30UQAefvhhoPRcFTbffHOg8kydkydPBtLZHLKzG8U5SlJ3W7JkCZDO7ALlsWyl2RF7i2HHjx8PwLbbbgukceqWW26Z7JPfli3bYostABg2bFgDz0iS1I2WLl0KwBNPPJFsi7g2tuX/zm6LeHfhwoVljz1u3DigdBbOiHljW34J6XnM85HU/zz//PNA7zN+R1lsy/72rFq1Ckhn8Z44cWJStvXWWwNpfFspFs6Xbbzxxn17QpKkrjRnzhwgPcf0FgvHMvK9kOaDV6xYUfbYkVuJ9sVsnBs53nxZ/I+k7rJo0SKgtB/CvffeW7It/ga4//77AZg1a1bJ46y77rrJelwzb7PNNkAa42a3VSqz3UiSirF8+fJkPWLCyI9m48VHHnmkZFu2LTDiy+gzOWLECCDtH5Bd33nnnQHYaaedkrJYjxxHT09PX56SpALMmzcvWY9+ABEbRg40G1PGevxeRE4UYMiQIUCa34zYMLst36c1/s5uGzt2bJ+ekySpM7zwwgtA/X1bI16dOXMmkMamkLbRxzkmcprZPGfEq/m2f4DRo0f37UlJ6gj5dn0ob9vPt+tDeQwb7fqQtu1Xa9fPbqtUZtu+JA08+Xb97Hq1dn1I87L1tOtD+b1bldr8bduX+pds7jV+V/L3dGW35csibs6Kdp9K4xL01rc1v23MmDENPCNJUjfKno+efvppoPd7uPIxcbavQvx/yN6TFTnfyOtmz1X5MQ4iBo57wiT1H/WMa5Bdb2RcA6geAzuugSQNbPWMa1BpW7PGNciuO65B15n+ynJapcJBlTZKkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJklSNA9tKkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkurSs2bNmnbXoR5dVVmtXXz+nnjiiWTbgw8+CMD9998PwKOPPpqUPfbYYwA8/vjjJf+3fPnyssceMWIEAFtttVWyLdYnTZpU8vdmm22W7LPpppuWLDfZZJOkbNiwYbU/OUka4F588UUAnnnmGQCeeuopAJ599tlkn/gdj9/1+J3Pbps9e3bVY0yYMAEo/13Pbtt+++0B2HHHHZOy2LbuuuvW9ZwkCdIYdubMmQA89NBDSdkDDzwAwCOPPAKUx63ZbYsXLy577EGD/j33SMSiW265ZVIWv3Gx3GKLLQDYaKONkn0233zzkm0bbLBBfU9OktSr1atXJ+vPPfcckMa7sXz66aeTfeJckY97s9t6i3fXX399ID0fZOPd2LbddtuVLCGNfTfccMManpUk9S6be3344YeBNIcbS0iv6fO/eZEPAFixYkXJY0cOF8p/67KxcKxHnBz53Eqx8MiRI2t9apKkGixbtgwozetGzJuPhbPxbj4nks2NLFq0qOQYkQ+B8pxIvm0P0tg38ryxBBg1alTNz03SwDR//nwg7Y8wY8aMpCzyu9FHIfK8kMa78buYNXr0aAC22WYbALbeeuuSv6G8b8LEiROTstg2bty4xp6UJHW4yAdkY8rInUbeIP6G8t/h+HvWrFnJPtlcLZTmCOL3N5bbbrttUha50ylTpgDp7/PgwYMbeGaS+rPIi0aMCGk+NB83QnodHMu4dq7URzvaf7LXuvnr30rxYr5Pa7YdqKenp56nJ0kDzsqVK5P1aOvP92nNtmlFPjN/70J2PZ/nHDJkSLIe7VaV+rZG3mCHHXYAYPLkyUlZ7J99LEmqVcSw+Xb97Hq1dn1Ifwfz7fqQtu331oepWrs+pNfttutLUmtk268ivs2362fX83mMbHt+rOfjXah+r0Ole7ny7frZddv1JTXDvHnzkvWId//1r38BaUwM1fsw1dKHH8r7tGb7tkYeN38vVzYWjjzu0KFDa3hWkqRaLViwACi9hyvfpzWb8612Psj2VajlXofe+rZGzjeW2XOGOV9JfdHIuAZQngdu1rgGUJ7zdVwDSWqNWsY1gDQubva4BlCeG3FcAwHTX1lOq1Q4qNJGSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZKq6YlR+btEV1VWrRef3+xMOvkZI2NG4Urb4u/sKOKrVq2qerwYEXzjjTcGSmdNi9knNtlkEyCdVSL2zZaNHz8eKJ1pwtnWJLXDwoULgfR38IUXXgAqz8gbM5PF7L2Vts2aNSspy874m7Xuuusm6zErZaWZyfIz+ERZdiZfZ+mV1M3mzJkDVJ7lprcZcGL55JNPAvDSSy9VPcbw4cOT9YhL83FrLLNlleLdiF1jGTEtpDOySVInyM6QG7+1scxe/0ecGzmFSjFt7B9xb8xmBrBy5cqKxx87dmyyHrNQ5mcjy27rrWzMmDHVnqYkdY1svjV+Y3uLd/P53WxZ/C7nZ0PPit/ObCybj33zcW92/5glOBvvxrZsTkOSOsmSJUuANO6FNHaNZW9xbvyd3Sfi4+xj5kU+INrPsjFtrFeKd/Nl2dnbhw0bVvV4ktRO0TchfisfffTRpOyRRx4p2Zb/G9L4dv78+VWPMXr0aKD0dzHi1FhGP4TsPhHfxjLbDyHWzeFKqlW23SnixFhm+2fFerRXxe9jNqacOXNmyf+vXr267HjRXyp+wwC23nrrkuU222xT8nelMvsOSOo0y5cvB9LcJlTvv1qpLH5fAebOnVvxGNlr6MhhRtyY/V2t1qc1/oY0HzphwgQAXvWqV63tKUpS02XjxejLmm/rrxST5vu4Qnn7f7atv9q9AvFbCo31bc3+rg4ZMqT6E5WkDhW/j/l2fUjj1Upt/fmyetr1IY1h6+nTmv3NjljWdn1JnS7a9SGNc/Pt+pD+Dldr18/uU0+7PpS37efb7tdWFu1TtutL6g+WLl2arOf7rWZj4XwMnC2LtrDIY1TS09MDpL/B2Xi3Wp/WbP/X2BbLbH+AiIVHjBhR9fiS1E4vvvgiUPo7GbFr/l4uqC8W7u2e2vhdzLaXVevT2tt9Xtl7DSSpP2jWuAZQ/Xe4lnENsuuOayCpP+jruAZQPRauZVwDSMc2cFwDFWT6K8tplQo9S0uSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS6tKzZs2adtehHl1VWXWP7MzrMUp5jFqeHdk8tuVHP4d01PP8rO+9zfaTtf766wMwYcIEoHSmiJg9ImYQzs8qUWmf9dZbLykbN25cydKR0aXOE7MvzJ8/H4B58+YlZbEeM5LFrAzPP/98sk/8duX3gXQ2hijLzmy2fPnyivWpNCNvpZlwNt9885Jt2Rlw8vvHvqNHj654TElSYxYuXJis52dfz8arEafWMpNPnFdefvnlqseNWYMhjV3zs55lY9qIUyuVxXqcc3qLZbNlkjpfXG9HnLtgwQKgNN6N2LVSLBvrvcW7+fg4+9i9yc/AW2lWx/jtilg2fqey22Kf+L+RI0fWdHxJUv2iPSPOCxHbZtcbnbEyu15NzBzcWyxbaSbgavtkyyLOzce/AKNGjVpr3SR1hqVLlybrEfvmc769xbLZnG9+lt7e9qmlLSp7PV3LDOf5WDj+zu4Xv2tDhgxZ6/ElSf+2ePFiAGbOnJlsi/g04tb4O7tfxLlRlv3/JUuWVD3e4MGDgTQGjf4I8duf3Rb7ZNsCoyy/hPTcEn0d7IcgtU6010RMOXfu3KQs1iN3mr1WjtixUllsi+vhuI7u7Tcl248g4sMtttgCSGPEbEzZW9nEiRNLHif72JKkUpFvyPcHyMaN+fxo7JvdP2LI+O2P/mqVZK/18/1VszFhPpaMZbZNLd8nNpujyOdFo/1OUueI+DDynLGENBaNPGW0w0B5f9VYZvfJ9xXI9m2tdo9L9ncirl/zfVQhve7N93GFNC8a8WnsO2zYsIrHlCTVJ9+uD9X7r0Iar+bb9aG8bb+edn0o76/aW5t9fp/sfpVi2Xzbvu36UneJa+1q7fpQvc0+u17PPrXeYxq/NdXa9SGNZfPt+tlt+XZ9sG1fklol7tGt516u7P7V+rhC7213Ie7X7S2WrTQuQT6/W6nfaz6HCzB27FjAXIrUTbL3n+ZzvbHM5mfj+jufw81uq+U+r5UrV1atU/Rpyv525XO+jcbC2d8zSVJrxLmlkXENsvs3e1yD7LrjGkgDU7VxDaD8vq56xjXIljV7XAOoHufWMq4BOLaBCjf9leW0SoX2CJckSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk1cWBbSVJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJdelZs2ZNu+tQj66qrASwYMGCZP3ZZ58FYM6cOQC88MILSdns2bNLtsU+AM8//zwAzz33XNV9Ytvq1avXWqfBgwcDMG7cuGRbrMdyvfXWS8piPb9Ppf1HjRoFwDrrrFO2T2zLlsX/xbYRI0aUHV/qi2XLliXrS5cuBWDevHklf2f3y5dl95k/fz4AixcvLvk7ux7/X6mst32WLFlS83OK79kGG2yQbNtwww1LtmXLJkyYULLMlsV6/v/jb4ChQ4fWXDdJUv8S8SeUx7ARo2a35ffJxruxf6VYOLatWrWq5rplY9KxY8eWbOstzs3vm12Pc2y2LOLTkSNHlvx/tiz+b8yYMSXbAUaPHl3zc5LqEdea2Xg3YsqFCxeWlUUMu2jRorKy2Bb/l49fs8erVBbr+X2yj12LYcOGATB+/PhkW6znY9pK+1SKZaMsltmy9ddfv+a6SZL6v5dffhkoz8Fmt0Xcms3Lxnrkd3vbJx4nmzOuxZAhQ4Da4t1ayrIxbcSyEbeuu+66SVnEtbEtG9tGWcTA8ThxPpeaKa4VI16NuDcb08b36qWXXiori/g0cr3ZXOz/b+8Odtu6tSiA0sYrOm8mbX82QH7nfc/7hUwKZNJRmgB+g2ZHx8cUeympie2sNbEiUtJ1osDbhxRPz7Kr+u4s7/Z8/PHjx63vLf+vkmWTd8d4mnNnmbaP1Zyc5/r111/HGI/XZgB4XfLzK/sRapZ9//79o/tSp839s7E8T73vyM+47EOoa/2pv+S+I2O1ZpOflb2GW29nTs25qefma83JcE7e58mU+b81xilDZqzWPXtOTS22PseHDx8e/bk+95Gxnf0Eb968+Xq77wP47bffvo71muvvv//+aG4dy+OSLcewjwDgJcse09l+gNy32g+QWmgd61/rnJ31wtn+0VUN9Mje1uTE1DlrjSRZMnXOOtb3AczG4BrJkWM8rV2uxlKnrHtbM9b3qNb7jozN5nz69Onw91SzaN/Lmq81U/YaaK2PJsv2PQM1rwLw4+nr+mOcMmhf16+3z63rz+bU595Z2+/r+vX2znr+bG9sr4WOccq3fV2/zju3rj+GtX1ur6/rj/F0bb+v69exvq5fH39uXb+O9TmzsbrWv7O239f1x3i6l7Wv3Y/xtD672htbc7K1fQCqrD1mjf9olu113Xyttd/+Oa/6c/iIvh6/+zmvPqfWhfPcybT18avzCHJf5uRxd3d3W98bHJH/M/18gnpf5iSL1r2tycWznHwuyx7Nu7mWzD9y/ki1yrl9L+uRvDvbG5vHZ78RAIxx/bkGs/m3OtdgjPNZ9si5BrOxW51rUMeca8C/pWbR5Npbn2tQbz+3cw3qmHMNYLz78vXtbPD+G14IAAAAAAAAAAAAAAAAAAAAAAAAAAAAr8Ddw8PD976GHS/qYuFbSqekdIWYdR/NfauT6Pvco4/LnHSDql2hrpXOaL1D2hinDhM///zzGOPU5XiMxx2Hxzh1lfjpp5++3pf5fe5s/uq5Z9Lh4tJOxukwVTtk7Pj06dMY49TB4FLpbrDqNJLXmr1e7WTw+fPnf7y2zO9zZ/PrezFdy3r3smt/ztVOfHnv5b0x65qS7n6rjio7c+p96dSQ9z0AvDazLNs7JfVsWm/PuirtdGVKV6jaMWq3I+k5yY/peFbv67mz5tXeGa3+OfNWubHn5armjXPyGtd2aEs2HuOyfFw7P9eOXJc4km8zlrlVftf5+PHjk7H63h3j8bX27tWzrrfnOvLWsVv9rjX7/SbvoVt1zF6N1fffmzdvHs0BgNfur7/++no7Gbjn1N28e6Tm259njFO22OlGunJ/f+qnmJ/tyaQ1C9e8MMa8lpq6XJ9bnys14yrz8/g8Z82kK9fWdc9dx65ZXtyxyrQzPYtGfU+l1pr3cH6Hqnp9t97u77P657x+7qu14Fojvkbei7W+2vPqkdrtqmP2aixfayff2XsYAJ6jZJM//vjj630fPnwYY5xqYvma+2djtX525PHJBDWTXKPWOZMJcl/9OZ5c22u3NSP2fDmrt86y5U7N9UgN9994fDLhpbXYc9myOpcRx5hn4X5Nq7w7qwHnd59k2Pq6R2rGR+T3lPpvm3+DX3755dGf67/NuTlHH5+x7Ce49ncZALi1rKsmS872tq72r65qoEf2tiZbzOpW10qGTI2n1p0ylmxZ60DJDasaaOb3ubP59XVnewO6a3Nmv7ZdyWS1Vr5jp/ZZ19fzXkzOrLXyPr/Pnc2fPfcs5+Z2Mu21e3qj/lvnd4/V/tMjY7P9AL1mOhtLFq37EADgNUhe6ev69fZqPf6S9fw6J89163X9MU45ta/rj3HKebOc2muet17Xr6+xcut1/XotO67db1xrkkfy7ar22j9DVfN2X9uffc5rVbPNfX1df4xTvr31un69fW5dv47t7ns9N1bnZG3fuj4AP4qaGVLPXeXUI1l2Z6zWhVef27lErWX2swrqWP/s9mwfaOpys8955zM5+ZzX6lyC3Ux7bV332s+H7e5JPWd3P0Jfz1/l1lk2XdWD+7XM5ua9mDm32r9S5X3u09jbAAAHc0lEQVQ2W2O4ZI/qGKf3y5HPeWVu3dua9zAAvHY75xrU+y4512D2+OdyrkG97VyDv73mcw3GOL3Pntu5BvX2rc81GOP0HnSuAVzt3Zevb2eD97M7AQAAAAAAAAAAAAAAAAAAAAAAAAAA4Jy7dGF8IV7UxQJ/y2n8OZ2/nuifk//7WD3BPyf3Z6x2AEj3iXSSXXWUzeNqd4rM73PHeNrxYPXcM72rwa5VJ90d13ZhS/e52oWjq523ekeNWReLVfeN3mUunaDHeNrpoD4+15nHZ27tjNu79dax3M7f15HvGwB4/dK9Kpm0ZtHktd4RrXazyliyZc12fSy5s3bM6l2sZt2w0kk2nWWr3m22ZuFZt9mu5+1L1Xx/SR1i1aV4107Om2XpPK5myUgGTYat3erOdamrc5KBk2lXeTdj9fvIc+bvqF5jH6t/pwAAUTNlsuuff/75ZCyZN1k2YzULZyyZsmbh3kE2r/H58+ev9626zfacWjNmzZ71mo7WWa+t667y+Y5Vl+IdtaZaa61dz6JR83cyZL7Osnmv744xxt3d3RjjcZfbMR5n5OTa5Nx6Hcm1faxm4Xyf+XurWVgHXQB4Peo6fW4nd832EfS6bnLnbM4sB/babc27yZepuc7qrbOc22vOM9dmymsfv8p7R6z2A0Sy6SyrzWqYycXJe+cy5hjz2muyY99PUF8vz505tT7cx+rfTb7Pum8CAHi+kpXGOOWl1Xp+cl4dS5Y7sje2v1a9hlUNtK/1Z+5s/uy5u9n3famek3edq0XuqnnzXBarNcS+xr+7H6DPnz33LAsnn2ZOsmTNlBnL3CN7Y1f1XgDg9Uum6+v6dezcuv5srNZe85yznNprnjvr+mOc1vbPrevX1195buv6Y9xubf+Sdf0xntZVV/tuZ5/zOlJz7ev69bn6un4dy+P6un59nHV9AGBmlh9X5xHkvuTLfobBbGx3H0B/jSrXkutenUtwpM56y7pu6tr1M2uXuLY+eWQ/QdXX/1d7DVafF5vVg/s+hNncXjNejdUsnfv6WL22/roAAGNcdq7BbGznXIPZ68a15xrUxznX4Hmca1DnXXKuQb0m5xrAD+vdl69vZ4N2NAEAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABsuXt4ePje17DjRV0sAAAAAAAAAAAAAAAAAAAAAAAAAADAC/Xuy9e3s8H7b3ghAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAIOtgUAAAAAAAAAAAAAAAAAAAAAAAAAAGCLg20BAAAAAAAAAAAAAAAAAAAAAAAAAADY4mBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAtjjYFgAAAAAAAAAAAAAAAAAAAAAAAAAAgC0OtgUAAAAAAAAAAAAAAAAAAAAAAAAAAGCLg20BAAAAAAAAAAAAAAAAAAAAAAAAAADY4mBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAtvzne1/Apv9+7wsAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AfxvNXj/ra4CAAAAAAAAAAAAAAAAAAAAAAAAAACA1+Hu4eHhe18DAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8j9974AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXhYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAWxxsCwAAAAAAAAAAAAAAAAAAAAAAAAAAwBYH2wIAAAAAAAAAAAAAAAAAAAAAAAAAALDFwbYAAAAAAAAAAAAAAAAAAAAAAAAAAABscbAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAW/4PFN/KXGeuCGoAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig = plt.figure(figsize=(100,15))\n", - "plot_tree(xgBoostModelCPU, num_trees=0, ax=plt.subplot(1,1,1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Visualizing a GPU Boosted Tree" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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ynzxi19Mknz/+99P0lisd+utt+aTn/xks1nGjx+fCy+8MCeddFKz629l1apVuf322zN48ODMnz8/SfJP//RPueiiizJ58uRcf/31u/2apXLcccflJz/5Sa644op8/OMfT5IceeSRJU4FAAAAAAAAAAAA7AlK8AAAAAAAAAAAAAAAAAAAAADYqZ///OcZO3ZszjjjjFJH2acaGhqK24VCYbu1Qw89NAsXLkzSWIb293//97n44oszevTovZLhzfP3hRUrVmTcuHE58cQTc/PNNx8Q83Z2v8aPH5877rgjN998c7HI8WMf+1hqa2vzwx/+MAsWLEiStGvXbofX+/SnP5077rgjP/jBD5IkF154YcrKyvIf//Ef+exnP5snnngi99xzT1q23PrfuNxyyy2prq7Or371q92+hmeeeWa7/aa8d911V6qqqvKzn/0sF110UY477rjdfu1Sueyyy/LjH/84v/zlL5MkP/nJT0qcCAAAAAAAAAAAANgTlOABAAAAAAAAAAAAAAAAAAAAsFPPPvtsPv/5z5c6xh5XUVGRJKmtrW12fdvjTec2p3Xr1mnbtm3atm271zK81fy9oba2NqeddlqGDBmSu+66K2VlZfvFvHd6v9q2bZv//M//zHe+85386Ec/SpJ84QtfSNeuXXP22WfnwQcfzNixY9OrV6/tnnf33XfnlltuyYQJE/KFL3xhu7V/+Id/yOLFi/Otb30ro0ePzpVXXpkkmTdvXr7yla/k4YcfTocOHXbzTry1c889Ny+88EIeeeSRA6oEr1Ao5IwzzsjTTz9d6igAAAAAAAAAAADAHtSi1AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4cCjBAwAAAAAAAAAAAAAAAAAAAGCnVq1alW7dupU6xh53xBFHJEnmz5+f+fPn77C+YMGC4vagQYO2W5s3b14ef/zxPP744/nQhz6Um2++OUcffXSGDh2a73//+/nTn/602xma05ThzfP3prq6upx33nnp06dP7rzzzpSVle3VWbszb1ffs0GDBu1wz8rLy/Ov//qvef311/P6669n8+bNWbRoUW688cbU1tYmSd73vvflfe97X/E5v/3tb5MkJ598crN5PvzhDydJHn/88eKxRx55JDU1NTnxxBNTKBS2e1xyySVJkm9+85vFY7Nnz87s2bPf+kb9n8rKyiTJ0qVLd+n8/Um3bt2yYsWKrFixotRRAAAAAAAAAAAAgD1ECR4AAAAAAAAAAAAAAAAAAAAAO3XooYdm5syZpY6xx33oQx9KkkyZMiVTpkzZYX3bY01lZ03Kysoybty4jBs3Lvfcc0+WLl2ae+65J3379s0111yTww47LGPHjs3YsWPzi1/8IitXrnzbDM1pOv7m+XvTpz/96WzatCkPPPBAWrZsud3agAEDMnny5D06a2fzBgwYsMO8XX3PPvzhD+/WPXvmmWeSJGeffXbOPvvs4vGmcry3s27duuL2FVdckYaGhmYfd999d5Lku9/9bvFY03XuioULFyZJevTosUvn709effXV9OvXL/369St1FAAAAAAAAAAAAGAPUYIHAAAAAAAAAAAAAAAAAAAAwE6deeaZuffee7Nhw4ZSR9mjPvjBD2bIkCGZOHFiJk6cmI0bNxbX6uvrc9999+WQQw7JIYccktNPP/0tX6t9+/a56KKL8thjj2XBggX56U9/ms2bN2fz5s35zGc+k8rKylx88cVvmWHb+W/O8Hbz95Rrr70206dPz8MPP5w2bdrsk1m7M29X37PTTz99u3u2fPnytGjRolgit601a9bk1ltvzcc+9rEMGjQogwYNKq4dd9xxSZInn3yy2TxPPfVUkmT06NG7dtFv49Zbb82oUaOaXWtoaMgDDzyQJDnjjDP2yLx9ZcWKFXnooYdy5pln5swzzyx1HAAAAAAAAAAAAGAPUYIHAAAAAAAAAAAAAAAAAAAAwE5NmDAhNTU1ueaaa0odZY9q0aJFbrvttqxcuTIrV67MpZdemsWLF2fFihW54oorUl1dnVtuuSW33HJL2rZtu8uv26NHj0yYMCHPP/98nn/++VRXV+eqq67KvHnz3jLDtvPfnGHb+XPnzs3cuXNTVlaWQqGQF1988S++F3fccUfuuOOOfPvb387zzz+f8vLyFAqFHR6vvfbaXzyraV7TrJ3Ne+2113aYt6vvWdu2bXd4zxoaGnLppZdm9uzZmT17djZt2pQXXngh48aNS8+ePXPjjTfukPPyyy/PwIEDc9NNN+X666/P9ddfn6VLl2bFihW57bbb8i//8i/p06dPvvzlL++R+5IkL774Yq644orMnj07GzduTFVVVaqqqnLJJZdkypQpmTBhQrGc70Dx+c9/PuXl5fnEJz6RT3ziE6WOAwAAAAAAAAAAAOwhSvAAAAAAAAAAAAAAAAAAAAAA2KnevXvn+uuvz49//OP88pe/LHWcXfLQQw+lUCjk4YcfLh5r165dCoVCJk+eXDw2evToPPfcc3nuuedSU1OTwYMHp1+/fqmurs5//dd/5bTTTstpp532F2UZMGBArr322jz99NPNrjdl2Hb+mzPsTKFQSKtWrXY4/uijjxbL5BYsWJD6+vrtCuZuvfXW7c6fOHFiJk6c+I6u79FHH31H896pXXnP3qxbt26ZNGlS2rZtm7Fjx2bs2LHp0qVLPvWpT+UjH/lI/vCHP+Sggw7a4XkVFRV5/vnnc+WVV+amm27KTTfdlEMPPTS9e/fO97///Xzyk5/MlClTUllZudO8n/nMZ4r34ZJLLkmSfPOb30yhUMi4ceO2O/eSSy7Jgw8+mEWLFmXcuHGpqKjIcccdl+OOOy4LFizIvffem+uvv/4d37tS+Pa3v5377rsvt956azp16pROnTqVOhIAAAAAAAAAAACwhxQaGhpKnWF3HFBhAQAAAAAAAAAAAAAAAAAAAN4tvve97+Waa67Jd7/73Xz9619P0ljCBvBmdXV1+eIXv5gbb7wxN998cy677LJSRwIAAAAAAAAAAADemRuSTGhuocU+DgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABrGWpAwAAAAAAAAAAAAAAAAAAAACw/7v66qtz0EEH5fOf/3yeffbZJMntt9+eXr16lTgZsL+YM2dOkuTiiy/O1KlTc//99+fcc88tcSoAAAAAAAAAAABgb2hR6gAAAAAAAAAAAAAAAAAAAAAAHBguv/zyPPvss6murk51dXUGDhyYa6+9Nhs2bCh1NKCE1q1bl2uvvTbDhg3LsGHDsmbNmkyePFkBHgAAAAAAAAAAALyLFRoaGkqdYXccUGEBAAAAAAAAAAAAAAAAAAAA3o3Wr1+fJPnZz36Wf/7nf055eXmuueaafOpTn0pZWVmJ0wH7Sl1dXW6//fZcc801eeONN/LVr341SXLllVemTZs2JU4HAAAAAAAAAAAA7AE3JJnQ3IISPAAAAAAAAAAAAAAAAAAAAADescWLF+db3/pWbrvttgwcODBXXHFFkuTjH/94OnXqVOJ0wN6wfPny3H777bnpppuyaNGiTJgwId/4xjdSUVFR6mgAAAAAAAAAAADAnqUEDwAAAAAAAAAAAAAAAAAAAIC959VXX81PfvKT3HvvvUmSFi1a5JJLLsnll1+eoUOHljgd8Jd64YUX8vOf/zxJcv/996dt27a59NJL87nPfS79+vUrbTgAAAAAAAAAAABgb1GCBwAAAAAAAAAAAAAAAAAAAMDet3r16iTJHXfckZ///Oeprq7OmDFjcv755+ecc85Jkhx88MGljAjsotmzZ+fBBx/MAw88kKlTp2bkyJFJkssvvzwXXnhhOnToUOKEAAAAAAAAAAAAwF620xK8Fvs4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewQkN8K+TuAAAgAElEQVRDQ6kz7I4DKiwAAAAAAAAAAAAAAAAAAADAe1lDQ0MmTZqUe+65J7/5zW+yZs2aJMkHPvCBnHfeeTn33HNz8MEHlzgl0KS6ujoTJ05Mkjz44IN56aWX0r1795x99tm55JJLcvzxx5c4IQAAAAAAAAAAALCP3ZBkQnMLSvAAAAAAAAAAAAAAAAAAAAAA2Os2bdqUSZMmJWks1/rNb36TmpqajBo1KqecckpOOeWUJMmYMWPSpk2bUkaF94za2to8/fTTmTRpUiZNmpRXXnkl3bt3T5KcffbZOe+883LiiSemrKysxEkBAAAAAAAAAACAElGCBwAAAAAAAAAAAAAAAAAAAMD+Y/PmzZk0aVIee+yxTJo0KdXV1UmS9u3bZ8yYj2TkyI/m4x8fmWHDhqVQKJQ4LRz46uvr89JLLxUL75Lkueeey6ZNmzJs2LCccsopOf3003PiiScmieI7AAAAAAAAAAAAIFGCBwAAAAAAAAAAAAAAAAAAAMD+ZNWqZM6cZPr0ZMaM5MUXNyVJXn65LkuWtE+hsC4NDZ3TqVN5jj322Bx//PFJklGjRuWEE05Ily5dShkf9mtr165NkkybNi3PPvts1j70ULpPnZr/3bgxiw46KD0/9KEkyYmnnpq//uu/ziGHHFLKuAAAAAAAAAAAAMD+SwkeAAAAAAAAAAAAAAAAAAAAAPvWn/+czJzZWHI3Y0by6quNx2fMSFasaNzu0iU58shkyJDG/SOOSIYOTQYN2pIVK17Mc889m8mTJ+e5555LksybNy9lZWUZOnRoPvCBD2T06NEZOXJkkmTIkCFp3br1vr5MKKmNGzfmlVdeyUsvvZQ//OEPmTx5cmbOnJkkaWhoyMCBA/PFnj1z7uuvp+vSpSm88UbSsmXjkwcOTIYNS446qvGLN3x40r9/41qLFiW6IgAAAAAAAAAAAGA/ogQPAAAAAAAAAAAAAAAAAAAAgD1v4cLGUrvp07f+TZL/9/+SNWsat7t0aezVaiq6Gzq0cXvo0OSww5JCYXfmLSyW4k2ePDlTpkzJxo0bkyStWrXKkCFDMnz48IwYMaL4SJLu3bvvqUuGkli4cGGmTZtWfLz88stJklmzZqWuri4dO3bMMccckzFjxmT06NFJktGjR2//2a+rS+bN2/pFnTJl6xe3qiqpr0+aiiQHDNj6ZR01ausXNtm9Ly0AAAAAAAAAAABwIFOCBwAAAAAAAAAAAAAAAAAAAMDu27Yza8aMZM6crf1ZU6cmtbWN2126bC22S7ZuDxuW9Oq1N/PVpaqqKkny8ssvZ9q0aZk6dWpefvnlLFq0qHheZWVlhg4dmkGDBmXw4MEZPHhwBg0alL59+yZJWrRosfdCwi6oq6vL3LlzU1VVlZkzZ2bWrFmZNWtWkuSVV17J8uXLkySHHnposegxSbHsccCAAX/Z53jz5qS6urEYL9m+3XLOnMZjFRWNfw8/fPtyvOHDkx493vlsAAAAAAAAAAAAYH+10xI8//oWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAXVZoaGgodYbdcUCFBQAAAAAAAAAAAAAAAAAAADgQvPFG8uc/J9OnJzNmNP5NGrdnzEg2bGjcr6xMhg5Nhgxp3G/aHj486dSpNNnfytKlS/Pyyy8nSaZOnZqZM2emqqoqVVVVWbZsWZKkTZs2SZJBgwYVHwMGDEjfvn3Tt2/fJMmhhx6a1q1bl+YieNfYuHFj/vSnPxUf1dXVmTVrVpKkqqoqc+bMyebNm5MkvXv3zuDBgzNo0KAkyZAhQzJ8+PCMGDEiXbp02ffhV69OXnml8Qch2fpjMW1a8n/fpeIPRGPgrT8Q73tf0r79vs8MAAAAAAAAAAAA7Ak3JJnQ3IISPAAAAAAAAAAAAAAAAAAAAID3gE2bktmzt5bcbdtlVVWV1NcnLVsmhx66fcld//6N+0cfnXToULr8e9qqVasya9asVFVVJWksIZs1a1ZmzZqV2bNnZ/369cVzC4VCKisrc9hhh6Vv37459NBDiwV5ffv2zSGHHJKePXume/fuJbkWSqehoSFLly7NkiVLkiTz5s3bruiu6ZEkixcvLj6vU6dOOfzww4sld4MHD84RRxxRLGIsLy/f9xfzTi1c2PwPy0svJevXJ2VlSd++O7ZnjhqVHHFE4zoAAAAAAAAAAACwv1KCBwAAAAAAAAAAAAAAAAAAAPBut3p18tprW7uopk9vPD5jRjJ3brJlS9K6dTJgQGMPVbK15K6pl6pdu5LF368sW7asWF62bZnZ66+/vl2xWU1NTfE5rVu3Ts+ePdOnT5/07NkzSYrbTX+3Lcvr2rXrgVV29h5RU1OT5cuXZ/ny5Vm6dGkWLlyYRYsWJWksslu4cGHx75IlS1JXV7fd87t27Zq+ffsWH/369UuS7fa7dOmyry9r36urS+bN2/EHacqUrc2brVolAwdu/UFqKscbOjQ57LCkUChdfgAAAAAAAAAAACBRggcAAAAAAAAAAAAAAAAAAADw7rBq1dZOqTlzGo817b/+etLQkLRpkxx++Pa9Uk0ld0cckZSVlS7/u83q1auzYMGCZsvRkmTBggVZunRp5s+fn3Xr1u3w/FatWqVr167p2rVrDjrooHTt2jVJivvdu3dP586dU1FRkY4dO6Zjx45Jko4dO6aioiLl5eXp2LFj2r3H2wvXr1+ftWvXZt26dVm9enWSFPfXrVuXNWvWZMWKFVmxYkWSZOXKlVmxYkXxb9N2kh1K7Tp37pzevXsnSXr16pU+ffqkR48eOfjgg9OjR4/tSg8POeSQ4nvEW9i8Oamu3lqON2VK4/Ftf8g6d25s7BwypHGtqRxv+PCkR4/SZQcAAAAAAAAAAID3FiV4AAAAAAAAAAAAAAAAAAAAAAeKbYvupk9vPDZjRvLKK8nixY37FRWNRXfJ9iV3Q4cm/folLVqUJDpvoba2NkuWLMny5cuTZIcCtm2L2JqOL1++PDU1NVm9enXe6v8JadmyZcrLy5OkWJjXunXrtG/fPm3atEmbNm2SJO3bt0+rVq3SsWPHtGjRIp07dy6+RkVFRQqFQnG/S5cuO53Xrl27tG3bttm19evXZ9OmTc2ubdmyJTU1Ndsdq6+vz5o1a5Ikq1atSpLifn19fWpra7N58+Zs2LAhGzduzMaNG5OkWG5XU1OTLVu27DRrWVlZOnXq1GzJYHMFhAcddFC6deuWbt26pUePHu/5gsF9rqYmmT17aznejBmNx19+OVm6tHG7S5fGH7ymYrykcf/oo5MOHUqTGwAAAAAAAAAAAN6dlOABAAAAAAAAAAAAAAAAAAAA7E8WLtxactfU8TR9emPP09q1jftNPU9JY89T//5bi+769y9NbkqntrY269atS5KsXbs2NTU1WbNmTdatW5e1a9cW11atWpW1a9emrq4u69atyxtvvJH169cnSTZt2pRNmzZl/fr1qaury9q1a4vleqtXry7OeuONN4qv15ym129OU8neznTq1CllZWXF/UKhkIqKiiRJ586d06JFi+LzW7VqVSzca926dTp06JDWrVsnScrLy9O5c+d06tQpHTt2THl5eTp27Fgs72s6psTuXaSpIbSpHG/69OSllxrX/u8znsrKreV42/6ADhuW/F8ZJAAAAAAAAAAAALDLdlqC12IfBwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAVmhoaCh1ht1xQIUFAAAAAAAAAAAAAAAAAAAA3rvq6pJ585Lp05MZMxqPNW3PnJnU1jYeq6xMhg5t3O7fPxkypHH/qKOSnj1Lkx3ggFFf3/j3T3/a+iM7fXoyZUpSVbX1nFatkoEDG39gm35ok8btIUOSQqE0+QEAAAAAAAAAAGD/dkOSCc0tKMEDAAAAAAAAAAAAAAD4/+zdfXBdZ30n8K9ky/KrZCU4jihJY8Um9r0mcRDpNGwITEkLFEJDytvw1pYQYChh08wAAy2lsLS0W+h2O0kphSUwkO1Mw5QAyQx9AUpnmVI2XuLEEo6dyIlNFccmkS2/yLJsaf94uLq6thwwsXUt+/OZufM85/yOdX/PjWd0zrnO+QIAAAD8nA4dSrZsKZlLAwNl39QMpoMHy77u7jJOzV6qVJLLLkuWLGlO7wBnvLGxMm7e3BiO19+fbN1aahMTSUdHCcirVJLe3noSaSKNFAAAAAAAAAAAgLOdEDwAAAAAAAAAAAAAAAAAAACAn8fwcAm6Gxgo+UlJPUvpwQeTI0eStrbkggtKbWrIXbWarFmTLFzYvP4BmMaePWV86KHGcLwHHkgef7x+XFdXYzhepZJcfnmpLVo0830DAAAAAAAAAADAzBKCBwAAAAAAAAAAAAAAAAAAAHA8Q0P1kLv+/rKvNt+6NZmYSObNS1auLLWpIXc9PWWcP795/QNwEg0N1VNPa+F4fX3Jffcl+/fXj+vubgzHq1aTtWtLrb195vsGAAAAAAAAAACAk08IHgAAAAAAAAAAAAAAAAAAAHB2q2UaHR1yNzBQXknS0ZGsWlXmPT31TKNKJVm9Opkzpzm9A3CaGBwswXhJPRyvvz/ZuDEZHU3a2kpt1arGcLxKJVmzJmltbV7vAAAAAAAAAAAAcOKE4AEAAAAAAAAAAAAAAAAAAABnvsHBerBdUs8muv/+ZOfOsq+rq4xHh9xVq8mKFUlLS3N6B2AWGxtLNm8+Nmm1ry/54Q+TiYnGpNWpv4CuuCI5//zm9Q4AAAAAAAAAAADHd9wQvNYZbgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBZrGViYqLZPZyIWdUsAAAAAAAAAAAAAAAAAAAAcHIdPpxs25YMDCR9fWVff3+Zb9iQ7NtX9nV1lbFSSarV+tjTU14AMGOGh5MtW8ovq/7+sq+vL/m//zd5/PGy3dVVflkl9V9cvb3JunXJ4sXN6RsAAAAAAAAAAACSW5PcNF1BCB4AAAAAAAAAAAAAAAAAAABwWhkbS7ZvPzbkrr8/+eEPkwMHyv7u7jIeHXJ36aXJeec1p3cAOCFDQ+WX3Pr1jQF5992X7N9ftru7yy+5pB6OV62W1/z5zekbAAAAAAAAAACAs4UQPAAAAAAAAAAAAAAAAAAAAOD0cehQsmVLY95Pf38yMJBs3JiMjiZz55bahReWcLta0F2lkqxblyxe3Lz+AeCUGxysh+NNTYat/aJsa0tWrWoMyKv9olyzJmltbV7vAAAAAAAAAAAAnCmE4AEAAAAAAAAAAAAAAAAAAAAza8+e5KGHGnN7BgbK9qZNyfh4ye9JkgsuaMzuqY1JsmBBc/oHgNPS2FiyeXM9HG9qomztF+ySJcmzn13/pZqU+fOel3R3N693AAAAAAAAAAAAZhsheAAAAAAAAAAAAAAAAAAAAMDJNzRUgu2Seg5Pbdy6NZmYSObNK/WVKxtD7np6krVrS629vTn9A8AZZXg42bKl8ZfyvfeW2o4dZezqOjZxtrc3ueyyEp4HAAAAAAAAAAAAdULwAAAAAAAAAAAAAAAAAAAAgJ/P0FDJ0EkaQ+76+pLHHqsf19lZgu6mhtxVKsmaNaXe2jrzvQMAP1H7hV77Jb5+fbJhQ6nt21fG7u56OF5vb9lXrZbX/PnN6RsAAAAAAAAAAIBmEoIHAAAAAAAAAAAAAAAAAAAAHN/gYMnESer5OAMDJRtn1676cV1d9XC7WkZOtVpqK1YkLS0z3zsA8DTVTgRq4Xi1eZIcPJjMnZtceGE9HK92EpCUtFtJtwAAAAAAAAAAAGeq44bg+ZdjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/MxaJiYmmt3DiZhVzQIAAAAAAAAAAAAAAAAAAMDp4vDhZNu2Mu/rS/r7k4GBMt+wIdm3r35sV1dSqSTVan2sVkutu3vmewcAmmBsrIzbt5cThvXrywlEX1+yaVMyPl7q8+YlK1cmvb2NJw9J0tPTnN4BAAAAAAAAAAA4WW5NctN0BSF4AAAAAAAAAAAAAAAAAAAAcIYYGys5NUk96K429vcnIyP1Y7u7G3NqKpXk0ktLraNj5nsHAGaRvXuTzZvLfOpJx/r1yWOP1Y+bLll33bpSe8YzZr5vAAAAAAAAAAAATpQQPAAAAAAAAAAAAAAAAAAAADgTjI4mDz1U5lND7vr6kgcfTI4cKbW5c5MLL6znzfT0lHmSXH55smhRc/oHAM5wQ0PlxCRpDMe7//4SnlczNZG3t7c+X7CgOX0DAAAAAAAAAAAwHSF4AAAAAAAAAAAAAAAAAAAAMFvs3p08/HCZ10LuBgbKfNOmZHy81NrakgsuqAfd1cZEhgwAcBoaHCwnNkk9HK+/v7xGRuopvsmx4Xhr1iStrc3rHQAAAAAAAAAA4OwkBA8AAAAAAAAAAAAAAAAAAABOJ0NDZTw65K6/P9m6Nak9DqC9Pbn44saQu0ql1FavTubMaU7/AAAnzeHDybZt9WC8pJwUTU0AnjcvWbmy1KaG41WrSU9P83oHAAAAAAAAAAA4swnBAwAAAAAAAAAAAAAAAAAAgJl2dNBdbdy4Mdmxo37c0qUl6G5qyF21WmoXXZS0ts546wAAp4dDh5ItW0o4Xn9/2Tc1RTgpJ1O1k6epJ1OXXZYsW9acvgEAAAAAAAAAAM4Mxw3B88/cAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+Jm1TExMNLuHEzGrmgUAAAAAAAAAAAAAAAAAAODMNzhYxv7+pK+vPt5/f7J3b/24rq6kUkmq1aSnp8yTsr1iRdLSMvO9AwDMakNDjSdgSZnfd1/y4x+X7e7ucsI19eSrUkme+9xk4cLm9A0AAAAAAAAAADB73JrkpukKQvAAAAAAAAAAAAAAAAAAAADgKRw+XMZt2xozVvr7k02bkv3768fWMlZqIXfVatn/nOcky5fPfO8AAGetwcFjU4qT5P/9v2RkJJk7N7nwwsaTtkol6e1NVq9O5sxpXu8AAAAAAAAAAACnDyF4AAAAAAAAAAAAAAAAAAAAcDyHDpVxy5aSkTIwcGxeysGDZawF3dXyUiqVsv+yy5IlS2a+dwAATsDhw/V04/XrG0/4Nm1KxseTefOSlSsbT/Z6e8v2ihVJS0vz+gcAAAAAAAAAAJhZQvAAAAAAAAAAAAAAAAAAAAA4u42OlvGhh+pZJ7XxwQdL7ciRpK0tueCCY0PuqtVkzZpk4cLm9A8AwCl26FBJRZ4ajtffX2oDA2VcujS5+OJyktjbW/ZVqyURedmy5vQNAAAAAAAAAABw6gjBAwAAAAAAAAAAAAAAAAAA4Oywe3fy8MONIXf9/ckjj5T6+Hgyb16ycmXJK+npaQy6q1aT+fOb1j4AAKej3buTjRsbTzA3bCi1XbvK2N1dT1Gemqb83OdKUgYAAAAAAAAAAGYrIXgAAAAAAAAAAAAAAAAAAACcOYaGjg25GxgotdrY0ZGsWlUPuatWy/5KJVm9Opkzpzm9AwBwhhkcbDwx7etLfvCD5MCBUp8zJ/nFX2wMx+vtLTUnpgAAAAAAAAAAwOntuCF4rTPcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALNYy8TERLN7OBGzqlkAAAAAAAAAAAAAAAAAAAB+foODSX9/MjCQ9PWV+QMPlNrjj5exqyvp6UkqlaRaLftq8xUrkpaW5vQ+0/bt25fLL788l1xySe6+++6mvG+SGX1vAIDT2uHDybZtZV47me3rS9avTx58MDlypNTa2pJVq8oJbKWS9PbWT2zPphNaAAAAAAAAAADgdHVrkpumK8yd4UYAAAAAAAAAAAAAAAAAAAAghw+Xcdu2xpC7vr5kw4ZS27evjF1d9WC7V7yi7KtWS/hdT8/M9346mpiYyPj4eMbHx8+K9wUAOO3NnVs/We3pSa69tl47dCjZsqXMp4bjffGLyUc/mkxMlFpnZ7JyZWM43qWXJuedN7NrAQAAAAAAAAAAmEbLRO0fO80Os6pZAAAAAAAAAAAAAAAAAACAs93YWLJ9e2PIXX9/8sMflvqBA2Xs7q4H21UqZZ+MDwAAzjq7dycPP1zmtXC8/v7k/vuTnTvL/q6uMk4Nx6tUkssvTxYtak7fAAAAAAAAAADAmerWJDdNVxCCBwAAAAAAAAAAAAAAAAAAwNNy6FCyZUtjyN3AQKlt3JiMjiZz5yYXXlgPuatWS71SSdatSxYvbl7/AAAwKwwO1k+6k/r8Bz9oTJdOGsPxqtVk7dqkvb05fQMAAAAAAAAAALPZcUPwWme4EQAAAAAAAAAAAAAAAAAAAGahPXuS9euTO+9M/uiPkte+tmRpVKvJggUlU+ONb0y++MVkZCS55pry+tu/Te69t/z5hx9O/vmfk//5P5O3v728rrrqqQPwdu/enZaWlmNeH/vYx5Ikhw8fPqb26le/evLP79q1K+95z3ty0UUXZd68eZk3b16WLVuW66+/Pvfdd98x7zc6Opo//MM/zOrVq7Nw4cKcc845ufbaa3Pttdfma1/7Wo4cOfK0Pse77rrrmH4fffTRvO51r8uSJUty7rnn5s1vfnOGhobyyCOP5JFHHsm1116bJUuWpLu7OzfeeGP27t37lD/z4MGDOXjw4HHXNHVdR69pdHT0uJ/B1772tYbjp1tL7X2PrtXW8rrXvS5Lly7Nueeem1e84hV5+OGHp/2cNm3alOuuuy6dnZ3p7OzMwoUL80u/9Eu5++67c80110z+3Le97W1529ve9rT+mwAAzBrPfGY5yf6v/7W8Pv3p5P/8n2R4uJxsf+1r9VpXV/L1rydvfWvyvOclS5bUT+Bf+9pyUv/1r5f06omJZq+s6aY7tz3e+et057BPPPFEbrnlltxyyy25+OKLM2/evHR1deVlL3tZvv3tbzdhRQAAAAAAAAAAcOq1TMyuf3w0q5oFAAAAAAAAAAAAAAAAAACYTYaGSgZGX1/S318fk2Tr1pKNMW9esnJlyc6oVEqtWk16ekoQXnv7qentpS99af75n/85mzdvTpJcfPHFDfXnP//5efe7350kecMb3pAkeeyxx3LllVfm4MGD+dznPperr746SfLoo4/md3/3d/Mf//Ef+da3vpUrr7xy8ufceOONufPOO3PnnXfmqquuyvDwcD7xiU8kST7xiU/k29/+dl70ohc97fVcd911+epXv5okuf766/PBD34wq1evzj/8wz/kLW95S172spdl3rx5SZI/+qM/ysqVK3PHHXfkne98Z37v934vf/EXf3HcnzkyMpIkmT9//rRrSjK5rqPXdOONNybJtJ9B7XM4+jOYupaRkZHJ951a+43f+I0kyfvf//5ceuml+fd///e88pWvzNq1a/P973+/YR0PPfRQrrjiiixatCi33357kuTKK6/Mo48+mptvvjkbNmzI8PBwQ9AfAADHMTaWbN5cP8FPSrp1f3/9JL+zs5zk107we3vLSf5znpMsX9683pvguuuuS5LJc9jpzl+TNJzD7tixI89//vNz4MCBJMlnP/vZXH311dmxY0c+8IEP5Ctf+Ur+9m//NkkEOAMAAAAAAAAAMBvdmuSm6QqtM9wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs1jLxMREs3s4EbOqWQAAAAAAAAAAAAAAAAAAgNPN0FDS15f099fHpMwfe6zMOzuTlSuTSiWpVsu+np6yvWZN0to6833/0z/9U17ykpfkXe96V5Lktttum6x997vfzete97ps3bo1SdLW1pYk+e3f/u184QtfyB133JE3vOENDT9vx44dueiii7J27drce++9k/t7enrS3d2d7373u8f0cMkll+TTn/50XvSiFz3t9Vx33XX56le/miS555578uu//uuTtbVr16avry/f+c53kiRXX311Q3/z5s3Lpk2bjvszR0ZGkiTz588/4TX19PQkybTHX3LJJUlyzGcwdS0jIyOT7zu19vWvfz1J8opXvGKy9prXvCZf/vKXs2vXriTJM57xjCTJa1/72tx555358pe/nN/8zd9s6GHXrl256KKLcuTIkRw8ePCY9QAAcAL27EkeeqhcDKxfX784uP/+ZOfOMu/qKhcCvb1lu1ot25dfnixa1Jy+T6HrrrsuSSbPYac7f03KeWnt/PV3fud38vnPfz5/93d/lyR5/etfP/lnRkdH09PTk6GhoSTJ1q1bs3z58hlZCwAAAAAAAAAAnCS3JrlpusLcGW4EAAAAAAAAAAAAAAAAAACAU2xwsDHkbmCg7N+wIflJ3li6uurBdklyzTX10LsVK5KWlub0fjy/9mu/luc85zn5/Oc/nyT56Ec/mnPPPTdJ8ud//ue56aabJsPvau666660trY2BFfUnH/++alWq1m/fn1+9KMf5VnPelaS5KUvfWk+9alP5e1vf3ve+ta35oorrsicOXOSJA8++OApWdvznve8hu1nPvOZ6evrO2Z/kvzCL/xCNmzYcEI//+g1JZlc19FreulLX5ok034GT2f9V1xxxTH7LrjggiTJ4OBgknoI3je+8Y0kyUte8pJj/syyZcuyevXq9PX1/dy9AADwE52dJdyutzd5y1saa7X07Fo43vr1Zf//+l/J/v1l3t1d/mwtObt2QbF2bdLePnPrOEWOPoetnb8m5Ry2dv76la98JUny8pe//Jif0d7enhe/+MX54he/mCT5x3/8x7zl6M8aAAAAAAAAAABmKSF4AAAAAAAAAAAAAAAAAAAAs8zhw8m2bSXcrhZ0V8sE27Ah2bevzLu66jkUSfKKV5R5tVryKmabm2++OTfccEOS5K//+q/zoQ99KJs3b863vvWt3H777Q3Hjo6OZs+ePUmSzs7Op/y5W7ZsmQzBu+2223LllVfmC1/4Ql784hcnSV7wghckSd7xjnfkVa961UldU5J0dHQ0bLe2tmbOnDlZuHDhMcfOmTMn4+PjJ/Tzp2faol8AACAASURBVFtTUtZ19Jpuu+22JJn2M3jHO96RJD/XZzDdf4N58+YlScN6RkdHs3fv3syfPz+LFy+e9md1dXWd8PsDAHCCurqSq64qr6MNDtbD8fr6kn/5l7L/L/8yGR1N2tqSVavKhUctdbs2X7MmaW2duXU8DUefw9bOX5P6OWztumP+/PlZsmTJtD9n+fLlk/MdO3acgk4BAAAAAAAAAKA5hOABAAAAAAAAAAAAAAAAAACchsbGku3bjw256+8vr5GRst3dXfIkenvL9lvekvT0JJddlixb1pzeT5U3vvGN+eAHP5gkufXWW/O+970vn/zkJ/Nbv/VbxwSjtbe3Z+nSpdm3b19GRkYyd+7P9r/Xt7S05M1vfnPe/OY3Z2xsLP/6r/+aT3ziE0mS66+/Pp/85Cdzyy23nNyFnWJHrynJ5LqOXlNLS0uSTPsZXH/99UlySj+D9vb2LFmyJHv37s2+ffumDcLbuXPnKXlvAAB+Rs98Znlde23j/rGxZPPm+gVMf39y552l9tGPJhMTSUdHCcirpXXXQvKuuCI5//yZXcdJ0N7ens7OzuzZsyd79+5NkmPC8B5//PHJ+fmzcI0AAAAAAAAAAHA8QvAAAAAAAAAAAAAAAAAAAACa5NChZMuWxoyIpMwffDA5ciSZOze58MJ6NsQ11yRvf3vZvvzyZNGi5vU/09rb2/Oud70rSfLhD384n/zkJ3PHHXfkvvvum/b466+/Pp/73Ofy3e9+Ny984QuPqf/Zn/1ZbrvttgwMDEyG5C1dujTf+973snr16rS1teVXf/VXc9VVVyVJFi1alHvuuWfWheAdvaYkk+s6ek1Lly5Nkmk/g0U/+ct2qj+Dl73sZfn7v//7fOMb38irX/3qhtqOHTuyefPmU/beAAA8DW1tJdiuWk1e85rG2vBwufjp60vWry8XP//0T8mUgLh0dTWG49WSvtetS6YJRz5dvOpVr8rnP//53HPPPUmS17/+9ZO10dHRfPOb38yCBQuSJC95yUua0iMAAAAAAAAAAJwKQvAAAAAAAAAAAAAAAAAAAABOoT17koceqofcDQyU/X19yaZNyfh4yYq44IJ60N211ybvf389++EneQkkkyF4f/qnf5o/+IM/yCtf+cqsXLly2mM//vGP5zvf+U7e+ta35tZbb83zn//8JMmRI0dy55135qMf/Whuv/32yQC8mne+8535q7/6q1xyySXZs2dPPvWpTyVJJiYm8iu/8isNx77pTW/KHXfckSQZGBjIihUrTup6T5apa0oyua7p1nT08VOPTTLt8SfTn/zJn+Rf/uVfcvPNN6ezszNJcuWVV+aRRx7Je9/73px//vnZsWPHKe0BAICTrKOjhNr19iZveUt9/9BQGaeG4/X1JXfckezfXz+uu7sxHK9aLfur1WT+/JlbxzRq1x0333xzkmTx4sV54QtfmMceeywf+MAH8thjj+XTn/50kmT58uXNbBUAAAAAAAAAAE6qlto/Mp8lZlWzAAAAAAAAAAAAAAAAAADA2WFoaPqQu/7+ZOvWZGIiaW9PLr64ntVQqdQzHFavTubMaV7/s9Hb3/72fOYzn8l3vvOdXH311cc97sknn8wf//Ef56677sr27duTJEuXLs3ll1+e9773vbnmmmsajt+wYUM+9alP5d/+7d/y6KOPZv78+Xn2s5+dJLnhhhtyww03pKWlZfL4F7/4xfn+97+fJNm9e3fm/JT/kN/73vdy5ZVXHrP/93//93PdddfliiuuOKb28Y9/PFdddVVe8IIXHFP78Ic/nHXr1uVVr3rVMbU3vvGN+dKXvnTMmpJMruvoNW3YsCFJpv0MbrjhhsnPoaWlJXfddddx3/fd7373cdf5sY99rOEzrHn5y1+eu+++O0myefPmvP/978+3vvWtJMnhw4ezbt26fPzjH8+HP/zh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W3bv3p1f/dVfzde//vUkyVe+8pWZ1/3Kr/xKHnjggTzwwANJkltvvTVHjx7NRz7ykXzkIx/JX//1X+enfuqnXpT9vOENb8if/dmf5c4778wHPvCBbNmyJV/84heTJL/4i7+YO+64I319ffnt3/7tvOxlL8vnPve5JMm73vWu/PN//s/zH//jf7zomlNTU6lUKi17SpIHHnig456SzOyr+T249dZbk+Q534NO33f23D/8h/8w73//+/N3/+7fzd/+7d8mSV7/+tfnpptuyje+8Y2Z1//gBz9IkrziFa/I0qVL86lPfSo333xzdu/enfe+9735zne+M3NPzQ/gAgDgebrnnuSRR4rzr3+9489tSfK3f/u3HX9uS5J9+/blVa96VU6ePJlPfOITue2227Jv37785m/+ZpLkT//0T/P7v//7HiYKAAAAAADMi2fagfLKVya33fba/M3fPL9eoyS5+eabO/YaFet//bLqNUqSL37xix17jZLkc5/73AvqNUrS0j/UvKckLft6Ie/B8+01Sp79M6sf/OAHF+01SpLvfOc7eo2AK9+5c8kTTxQhd+VIGuff+15y4kRRK//dOzSUjIwko6NFAF85rr++mF9MTcYLSL8FAAAAAMC8ui/JezpNCMEDAAAAAAAAAAAAYNE5dSo5dKg1sG52iF0ZYJc06gcOJOfPt69Xhtk1B9YlnUPsqtVkeLiYX7Vq7vd6OfjLv/zLvOY1r8m73/3u3H///TP1Rx99NEny1re+NY8//nh6e3uTJP/kn/yTfOYzn0lSPNCpfGBVUjw84vpnHtJx00035Zvf/GaSpFarZXBwcGbNZps3b87HP/7xF/3BVA8//HD+wT/4By1zN910U8bGxvLVr341t912W8tcrVZLX19fvve97110zeYHRJV7StK2r3JPSSME74W8B5fyYKqHHnooP/dzP9cy9+Y3vzl/8id/koMHD+YlL3lJkuQtb3lLkuJBWn/yJ3+Sf/SP/tHM6w8ePDjz53b+/HkPpgIA+GFcJATvUn9uS5Jf/uVfzqc//en88R//cX7+539+pn769Okkxc+W9Xo9jz/+eNatWzf3ewIAAAAAAK5qzSF4n/3sX+auu9p7jZKih6ZTr1GSfOYzn+nYa5Qk119//VXRa5Sk4742b96cJC37Wuheo6ToN7pYr1FS/LnpNQJI0cQ8Pp6MjRXX27c3QvJ27EiOHSvqfX3FccOG1nC8MjAvSTZtSrq7538PlyH9FgAAAAAA8+qiIXg983wjAAAAAAAAAAAAADBjaqpzWF1ziN3ERDHXKdxutmq1NbDumecC5ZZbWkPsymC7JFmzJnnmeUpcxN//+38/f+fv/J18+tOfzoc+9KGsXr06SfIf/sN/SJK85z3vmXkoVZI8+OCDWbJkSZK0PVRi/fr1GX3mQRzf+ta3smfPnmzYsCGvfe1r87GPfSx33313kuTtb397XvGKV6S7uzuPPfbYnOzrx3/8x9tqQ0NDGRsb6zg3PDyc73znO5e8frmnJLn77rufc0/N78Hb3/72JHlR3oNXvOIVbbWNGzcmSSYmJmYe7vEXf/EXM/Ovec1rWl6/Zs2abNmyJUkyVj6EBQCAF9Wl/tyWJH/6p3+aJPnZn/3Zltf39/cnSX7mZ34mn/3sZ/O//tf/yi/+4i/O1S0DAAAAAAC0efWrO/caJUW/UadeoyRZsmRJx16jJBkdHb0qeo2StPQPXWqvUfLivQfP5zOrst+oU69RkmzZskWvEUBSNC9v3VqMTsqQvPHx4ro8HxtLvvCF5PDhxmt7e5ONG1tD8sqG6TIw75pr5nY/lxn9FgAAAAAAC0sIHgAAAAAAAAAAAAA/tHr94mF1zcF2SaP21FPJ2bPta1UqncPqarX2enmdJOvXJ8/krjEH3vve9+Yd73hH/vN//s/5rd/6rezYsSNf+cpXkiSf+tSnZl53+vTpHDlyZOZ65cqVz7ru97///WzYsCH3339/br755nzmM59JUjxEIkle/epX553vfGfe+MY3vthbyooVK9pqS5YsSXd3dwYGBtrmuru7c+HChUtev9xTknzmM595zj01vwfla5/t9Zeq059BX19fkszs5/Tp0zl27FiSpFKpZNmyZW1fUy3/xwYAwJy41J/bkuTIkSOpVCpZvnx5x7XWrVuXJNm3b99c3CoAAAAAAMCz6tRrlCRf+cpX9BpdxP33358kbf1D5Z6StOxrrt6D5/OZ1bFjxy7aa5ToNwK4ZJcakpc0AvLKsW1b8vjjxdz0dHEcHExGRzuH5G3enFzk39uLlX4LAAAAAICFJQQPAAAAAAAAAAAAgCTJ1FRrWF2nELvJyWKuubZ/f9LpWT2VSuewulqtvT40VMwNDyf9/XO/V56/t73tbfnABz6Q++67L7/xG7+Rj370o/mlX/qlJK0PK+rv78+qVaty/PjxJMnU1FR6ep67bbmrqyt33XVX7rrrriTJ2bNn87//9//ORz7ykdx555356Ec/mve9731zsLO5U+4pSe66666Oe0oys6/m9+DsMwmR8/Ue9Pf3zzzQ49ixYzl+/Hjbw6kOHDgwJ98bAIBL1//M/2FauXJljhw5kmPHjnV8MNv+/fuTJOvXr5/X+wMAAAAAAEg69xolyS/90i917DVKkuPHj1/1vUZJWvqHmveUpGVfC/kelJ9ZLV++/KK9Rol+I4AXTRmSl3QOyjt1qjju3Jls394ekrdrVzFfNnxXq41wvJGRolaG5r385UmH4NfFTr8FAAAAAMDcWbLQNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDi0bPQNwAAAAAAAAAAAADAi2tqKqnXi/PJyWRioriu1xvXSaNWryd79yZHjrSvVakk1WrrSJLR0WRwsFEbGiquk+J67dqkR6fqFaW/vz/vfve788EPfjAf/ehH87nPfS7f/va3O772zjvvzCc/+ckkyaOPPpqf/MmfbJn/9//+3ydJ7r///oyPj6enpyerVq3K1772tWzZsiVJ0tvbm7/39/5ebr311ixdujQPP/xw3ve+983hDl985Z6SZMuWLR33lGRmX83vQW9vb5LM63twxx13JEm+8IUv5C/+4i/ypje9aWZu37592bFjx5x9bwAAnp83vvGN+fSnP52HH344P//zPz9TP336dJLkr/7qr3LNNdfkNa95zULdIgAAAAAAcBXr1GuUpGO/0Z133pkk+eQnP9mx1ygp+o2uhl6jJC39Q817StKyr8vhPbjjjjsu2muURL8RwHypVIrj6GgxZnumlyB79ybj48UYG0u2b08++9libvfu5Pz54rxaTWq1YiSN81qt0US+SOm3AAAAAAB48Xm0CAAAAAAAAAAAAMBlql5vD6ybHWpXzpX1p55Kzp5tX6s5zG5oqKgNDhbPImgOsWsOuqtWi1pX19zvlcXh3e9+d373d383/+pf/au8/vWvz8te9rKOr7v33nvz1a9+NUny9re/Pffdd19e9apX5fz583nggQfyoQ99KEnyqU99Kj1NaYnvete78nu/93tJks2bN+fIkSP52Mc+lunp6fz0T/902/f5hV/4hXzuc5/L+Ph4brjhhhd7uy+K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HTuWQYMGsWjRIhYtWsTEiROJi4uLdWgNbNiwAYCOHTs2mHvqqaeYMmVK1N8bPHgwbdq0YfXq1dTU1Bz09VetWsV9993Hfffdx9lnn92k33366ae56667uOuuu0hISDjoGA7VtGnTALjooosazMXFxXHJJZdQVFTEX//610bPceONN3L55Zdz+eWXc/755+/zev/4xz9YsmQJ3//+92nTpk2dufj4eCZMmMCGDRt466236swVFBTwX//1X1x99dV06dKlwXnbtm3Lrl27GDhw4D6vfyD+8Y9/NBpnfHx8o3GecsopjBkzhjFjxkQ97+OPP87jjz/O+PHj6dq16yHHeSQkJCRwyy23sGDBfLp02UiXLhuZPPlUfvKTWWzbBh98AP/6r3D66aEjPj70e0lJEBcHhYWxjV+SJEmSJEmSjifLli1j+PDhDB8+nEWLFvH+++8zZcoUunfvHuvQGrVhw4ZG8zsH+/18UwX5nabmdg42x7EvhyNPc6Ai3/tTTz016mv69esHwD//+c9Dvt6h5E2efvrpcC4tlnm0fenXrx+VlZWkpaU1mEtKSqJnz57s3r2bXbt2xSC6A9e2bVv+7d/+jUWLFtGuXTtGjhzJyJEjefPNN2MdmiRJkiRJkiS1CE8++SR33303d999N48//jh//OMfad26dUxjCr7vh4b5lmAtTbT1NMFamsO5nqap+RagReYAgnUx+1sTc7Dvb5BnaiwPNmHChMOSB4u1lJQUnn32WX75y1/yy1/+khtuuIFXX3011mFJkiRJR53f//73XHbZZVx22WUsWLCASy65JNYh7dO+9nw4EnV39UV+Rq3/OTXy+o19Hguu35QYIj/bHujn2+as34ODr09srDYuKSmp0dq4adOmNXq9uLi4Rq8X6zrDA/0+oCVJS0vjD3/4Ax999BG5ubmMGDGCESNGsHz58liHJkmSJEnNquVkmyVJkiRJkiRJkiQ18Le//Y0rrriCm266iccee4xWrVrFOqR9qq6uPqjfKysro7y8nJycnCY39yssLOSll17iueeeY968eSQmJgJwxRVXNOk89Yu0Y6WgoACAjIyMqPOZmZkAzJ49m0mTJjWY//Of/8ySJUt48cUXAXjjjTf2eb33338fgNNPPz3qfDD+3nvvcdlll4XH33zzTaqrqxk9evQ+z384BDFGxlNftDjPPfdczj333KivLy0t5ZlnngFg+vTphzPcI6JXr1588MEHAFx77bV85zvf4cMPP+Scc87gnHPggQdCrysthVmz4L334J13YOvW2MUsSZIkSZIkSceTlStX8s1vfpOsrCwAXn/99Ua/629J9pXbOdjv5/ensLAQoEF+p6m5nYPNcezLoeZpmiLYICcxMbHRzU6WL19OXFwcgwYNOqRrwaHlTVpKHu1gbd++nZUrVzJ06FDat28f63AOSFZWFh988AF33nknAJdeeikvvPACl19+eYwjkyRJkiRJkqTY+fjjj/nJT37Cb3/7WwBuu+22GEcUcqhraYAmr6cJ1tIAh5RvgZaXB4hcF7O/NTH7sq/3d395sMixpuSaWqrg35ni4mKuu+46Bg4cSHZ2doyjkiRJklq+3/3udwD85je/4bHHHuN//I//EeOIDsyB1AUezro7iL7nQ7TPqE25PnDAMRzMZ9t+/fo1W/0eHP76xO3btwNErY0LrtXU68WqzvDPf/4zwGH5PiBWRowYwbx588JNMs855xw+/vjjcF2xJEmSJB3rbIInSZIkSZIkSZIktVDr16/nqquu4rrrruOJJ56IdTiNev311wH43ve+Fx4LClSHDx8OwNy5c/d5jldeeQWAX/3qV/u93s6dO8PXfP7553n33XepqqpixIgRPPnkk1x55ZUAdOzYsYl3cmT85S9/CRf9rly5koSEBHJycrjllluYOHFig9d36tQJqFtYHCnYGHbdunUN5jZu3MjPfvYzXn31VVJTUw8ovqAou0ePHlHnu3fvDkBubm6d8S+++AKAtLQ0fvazn/Hyyy+HY87MzOSSSy7h3nvvJT09Pep5g/cl8j0Bor4vkYXjTY2zMf/n//wfTjzxRADOPvvsA/qdWGvdujUAL7zwAhdffDHjx49nyZIldOjQIfya1FT47ndDB0BVVSwilSRJkiRJkqTjS2lpKeeffz6nnHIK7777LgAnnHBCjKPat9dff71Obgfq5nfmzp17WL+fD/I7QW4HaJDfaWpu52BzHPtyKHkaaJj/ABrNC3Xp0gWA//W//hc//elP+bd/+zf+5V/+hfj4eJ566ikAZs6cyW9+8xv69u17QNcLrgVEzUM15kjmTf7yl78ARI1zXzE2NccWTUlJCV9++SV33303Xbt25dlnnz30G2pGCQkJ4TxxXFwc1113HdnZ2eG8miRJ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RETkGr39tnH+zDPGeXw8HD16+fB2ejr8+tdGH5+JE+Hf/x2mTOnaWEVERG5p1dXwj3/ABx/A+vXGznbmTFi82Nj+4IPNC4BERERERERERERugo8+gkcfhfbK240aBZs3g79/18YlIjfo5ZfhpZfa3ubuDiNHwtdfK9lURERERERuaw89BCtXQkND29tTU42aPCIi0okuXjQGlTduhLVrISenuR7P9OnGGsk5cyAmxrlxioiIiNwZ1ARPRERERERERERERESuLCMDVq82Lm/cCNu3Q10d9OsH8+bB/PkwebKxvUcP58UpInJH+c53jPNPPmm5EtrTE370I/iv/3JOXCIiIiIiIiIiIiIiHbRiRXPfHbvdOHd1hb/8xRgGP34c/u3fjNv/9jej8Om//IsxPykiIiI3oLQUVq0yusuuXWvc5usLCxYYO+d77gEPj+t//uxs4zw29sZjFRERERERERGR20JFBQwYYNQkNueFHLm4GHlpe/bA0KFdH5+IXKevv4a77mq/ywMYk8DvvANPPNF1cYmIiIiIiHSxL76A++5re1tkJOTmqje4iMhNd+aMUSANjPM1a+DSJaNQ2syZRrE0gFmzwMvLeXGKiIiI3J7UBE9ERERERERERERERFoqKoKtW411HKtXQ14ehIYa26ZONdZzzJ0L0dFODVNE5M725ZfG+dy5l29LS4MRI7o2HhERERERERERERGRa7BhA9x7L9hsxnUzjcnFBcLDjd47H34IiYnG7a++ahQHUQEQERGRTnbhgnG+YgV88AHs3Ak9expz0Wa32nvvBTe3jj1fTQ1ERRmXf/ELePFF7cBFRERERERERITnnoO334bGxvbv4+5uzBMdPGhc79Wra2ITkeuQn2+cDxsGJSXNE7/tCQiAU6eaE1VFRERERERuM/X1xk+eiorm2zw8jPMXX4T/+A/nxCUickerqYHUVKOQ2saNsH+/cbuXF0ycaBRSmznTqNGjdY4iIiIiN0pN8EREREREREREREREbhVNTZCeDkOHdt5z1tbCjh3N6zTAWKvh5gZjx8L8+c3rNEBrNUREug0z8zssDEpLm2/v1w9On3ZOTCIiIiIiIiIiIiIiHfD11zB9ulHww26/fLurKwQFGQU//s//MW7raN8dERERuUE5ObByJXz6qVH8BSA6Gh54wGiKN3HilRcQLV/e3DwPYNEieP998PO7qWGLiIiIiIiIiEj3tXcvjBvX9rxQa+7uMGmScXnDBuO6iHQzNTXN/1EPHDASX6/GwwMefRTee+/mxiYiIiIiIuJETz0Ff/kLNDS0vP3QIUhOdk5MIiLioLDQON+2DVatgn/8A0pKICICJk+GefOM7fPmQXBw5/3dkhLjvDOfU0RERKT7URM8EREREREREREREZFbQX4+PP44ZGfDsWPX/zxnzhjnZtO7tWuhstLomTRzprFt5kyYPRsCAm44bBERudmefRbefdeoFOzpCb/4Bfzrvzo7KhERERERERERERGRNh0+bNRDrKq6cqHTXr2MuVEfn66LTURERFrJzDTOP/kEPv4Yjh+H2Fi47z547DFj28iRLR+zaJFRHAagsdEobBwTA6tXw6BBXRe7iIiIiIiIiIg4nc1mnI8YYQw1NTZe+f7u7sZ9evY0ri9dCrNm3dwYReQ6FBfDkiXG5ffeg5wcI6epvv7Kj3NxMQqMmw30REREREREbjNffQXTpzdfHzDAOD950jnxiIjIVdhscPBgczG2rVuN2+12SEkxCrHNnAl33WWshbweJSUQH29cfuMN+Pa3Oyd2ERERke6n3SZ4rl0ciIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiNzCXJqampwdw7W4pYIVEREREREREREREbkWn34KTz0Fly6BzQbnzhm39+599cdevAibN8PGjbB2LeTkGLf7+cHUqTB/PsyeDbGxNy18ERG5mbZvhylTmq8fPw4JCc6LR0RERERERERERESkHSdPwvjxUF4OjY1Xvq+7O/z7v8NPf9o1sYmIiEgHZGQYC5k+/BBOnzZuGzwYFi+Gb38bIiOhVy+or2/5OHd38PQ0HrdwYdfHLSIiIiIiIiIiTvGHPxjnP/kJ2O1t38fNzTh3dYVZs+Dxx+G++4zbPD1veogi0hnS0uCDD4wx4JISY0wYLp8UdnOD/v0hPd247uHRtXGKiIiIiIjcZHa7sXymqMj4yfPSS8bt/+//OTUsERHpqEuXjPOvvoLVq2HdOsjObi7WBtdesO2TT+Dhh43LTU3Gesu33oLg4E4PX0RERMTJ3gSeb2uDmuCJiIiIiIiIiIiIiDhRRYVx/uKL8L//Cy4uxhoGNzd4+21j2xNPtHyMzQYHDxqXN240Tlu2GI9LSYGZM40TwF13KUdIROS2YLdDdDQUFEByMhw65OyIRERERERERERERERaOH/eOB87FoqLoaGhY4/z94ecHONyUNDNiU1ERESug90OO3calz/+2GiMV1QEiYlG19u2Kpq7uBjnP/uZ0ekWjMrmIiIiIiIiIiJyWyoogAEDjMtVVc23u7gY/bHM3lhjxhg5cg8/DAEBXR+niHQim80oEP7ee8b1FSuaJ4dtNuPc3b15jPinP+36GEVERERERG6yn/wE/vu/jcsnTxrn/fs7Lx4REblBZ840F3MDozFeRQX069dc0O2ee4xt/v6XP/6JJ+DDD43LDQ1G0beAAPjLX2Du3K55DSIiIiJdQ03wRERERERERERERG5Xly5doqGhgdraWgBqamqw2WxUmN3VgPLycuxtFR1yeA6AhqtUIezZs+cVtwcGBuL6TdEiHx8fevToAYCnpye+vr64uroSGBh49Rd1h9i0Cb7zHePyxYsti0C6u8PChcblTz5puUZiwwYoKzO2Oa6RmDVLRSFFRLoLc99bXV1NXV2dtY8197mO92lPTU2NtX8HSP7wQxK/+IJDjz3GiXnzAGN/C1j73La4u7vj77CALiAgADc3NwC8vb3x8vK67D4iqFgKdAAAIABJREFUIiIiIiIiIiIi0lJpaal1ubKyksbGxsvGcRsbG6msrGz3OZqamigzJ/raYc6ttqet8VxzntbX1xdPT0969OhhjR93laIiGDfOuHz+fMcb4Hl4GPf91381rr/88s2JT0RERDqBzWYseHrhBThxormYcVtcXY3FTAAffQRXWXd2K3E8pnOc9zfX8cHl8/2tmWsJ2uPm5kbAFarBu7u7A1jHhS4uLgR9s3DMcQ2fn58fHh4eHX1pIiIiIiIiInITmfl+reeLHOegrpRj0DpfsC1BQUG4uLi0ua31HJNjnp9jzuCVnqMtDz5o9L8CaGpqnvsZPNio+fvII8a2qKgOP6WI3GrKy2HZMnj/fUhNNZJjGxrAy8vYfuwYxMZe9WnKyspoamqipqYGgNra2su++6qqqqivr7/qczl+t7bH39/fGmttS1v50GbetON3qjmWa+ZqiYiIiIjIrcNc92uu8ygvLwfAbrdTW1tr/T5xZLfbKS8v5/TpYH7+8xn061fKf/6n0TCpvTXAjmMvZn2HwMBAPD09VeNB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gK1bt9KvXz+eeOIJHnjgAQYOHOjkCEWksxUWFvLZZ5/x/vvvs2vXLgAGDhzID37wA773ve/Rs2dPJ0cocudpaGgAYPXq1bzzzjusW7eO0NBQHnvsMR544AEAxowZo8RLkTuEzWZj+/bt1gLtv/3tb1RXV7NgwQKefPJJZs2ahaurq5OjFBERERERERGRa1FQUADAu+++yzvvvENOTg7Tp0/nscces4rwaY5G5PZy8OBBPv30UwDef/99CgoKmD17Ns888wxz587Fzc3NyRGKiEh3kJeXB8Dbb7/N22+/TXFxMQsWLOC73/0u99xzD4Aa34ncQux2Ozt37uTvf/87H374oXXbo48+ynPPPUdycrKTIxQRERERkdvV1q1bef311/n8888BiIqK4umnn+aRRx6hf//+To5ORNqSkZHB3/72N959913Kysp46KGH+NGPfgTAqFGjnBxd93Ts2DHee+89/vrXvwLGPPxdd93FI488wrx581TAWkQuU1lZybp166y5+88//xwPDw8efPBBvv/97zN58mTlbIqIiMgto76+nj/+8Y+8+uqr2O12fvazn/H0008DWoMst689e/bwH//xH3z22WdMmzaN3/72t4DGTkSkWV1dHZ988gkAS5YsYffu3SQnJ/PUU0/xwAMPEBkZ6eQIReRanT17lk8//ZR33nmH06dPM23aNACee+45FixYgLu7u5MjFBG546gJnoiIiIiIiIiIiFxZRUUFv//97/njH/9ISUkJ8+bNA+CZZ55RUw2RO8ihQ4cAeOutt/jb3/5GY2Mj3/72t/nlL39JbGysk6MTuf1dvHiR119/nbfffhuAoqIi7r77bp588kkWLFiAh4eHkyMUke6gpqaGZcuW8c4777B9+3bi4uJ49tlnAeP43d/f38kRioiIiIiIiIhIezIzM3n55ZdZuXIlAAEBATz++OM8/fTTJCQkODk6EekqjY2NfPHFF/zpT39i48aNREdH88///M+AkYir5kYiIneeEydO8Ktf/Yrly5cDRjGyJ598kmeeeYaYmBgnRycinaGiogKADz74gP/5n//h6NGjTJkyhZdeeskqyiIiIiIiInKjPv/8c1566SUOHjzIhAkTrLHnRYsWqQCkyC2itraWjz76iNdff52DBw8CMHHiRF555RWNIWDMsy1btow33niDnTt30qdPH773ve8B8Pjjj9OvXz8nRygit5KSkhL+/ve/895777F//34GDBjAM888A8DTTz+tHC0RERHpttatW8ezzz5Lfn4+zz//PD//+c8JCgpydlgiXSY1NZWf/exnfP311wA88sgjvP7664SEhDg5MhFxlqqqKn7/+9/z5ptvUlpaCsDChQv54Q9/yOTJk50cnYh0Brvdzvr161myZAkAX375JdHR0bz44ov80z/9E56enk6OUETkjtFuEzxVrRYREREREREREbnD1dXV8dprr9G/f39ef/11nnnmGbKysli5ciUrV65k9uzZTm+At3TpUlJSUkhJScHb2xsXFxdcXFxIT08H4ODBg8ydO5e5c+cSFBSEv78/M2fOJDU11alxm8z4HGPrjPi+/PJLEhISrpqA2NTURGpqKs899xzPPfccCQkJ9OjRg7CwMCZNmsSHH35IU1MTTU1NHfq7CxYswMXFhVdffbXd+zQ2NvLuu+8yZswYxowZQ0hICD179mTkyJG8+eab1NfXXzHOhISEduO82uN69OjRoce99dZb1mfpSqc5c+a0+Rpb/7t25HPn+L44vidXel+62rBhwxg2bBh//OMfyc3N5bXXXmPr1q0kJibywgsvUFxcTHFxsbPDFLntlJaW8tOf/pS4uDiWLFnCk08+yZNPPsnp06dZs2YNDzzwQLdpgGful1vvk839MnR8H3Uz3IzjAsfv/I4+p81m47//+79JSUnBx8eHwMBAAgMDmT59Ohs3bmz3cW3tK662D22Lub9ub59dWlpKaWkpb731FtOnTyc4OBhvb2/i4+N59NFHefTRR63GqG29trZen/na2np9Hd3vtt73OsbYVpztxXi19+VKxzEADQ0NvPbaa7z22muMHDkSf39/wsLCmDNnDqtWrerwcdPN4u3tzXe/+122bdvG0aNHWbhwIa+88gqvvPIKcXFxvPrqq1RVVTk1RhERERERERERaSknJ4cnnniC5ORkjh07xrvvvsu7777L+fPn+d3vftdtGuBdbQy4rbnP1NTUbjE3ez1juVfSmeO8V5oTfOuttzp97rKj/y7mWGhb46BtjYWa70l748NtccY4b+t/u47E2dXc3d1ZtGgR69at48SJEzz00EP86le/4le/+hUJCQm8++672Gw2Z4cpIiJdoLi4mOeff54hQ4Zw5MgR/vznP/PnP/+ZnJwc/u3f/s3pDfCWLl3a7jGio+6wTuBa1nG1pTOOy+DG3wvH452rzW2397j2TJo06Yqv64UXXuCFF17otL93PY+73n+DttZA3Mhx580QEBBAQEAAP/zhD8nIyGDjxo34+voyffp05s2bx7x588jMzHR2mCIiIiIicgs6dOgQhw4dYsaMGSxcuJCEhAT27t1Lamoq3/rWt/jWt77l1AZ4bY0tuLi4sH379jbXs3eH33Ktf2fe6PxGa+b4QUfHEFrPP3UkV6+tx92s/ARH15NLea35CWY+YeucQsd8wrZyCjs7z/Jm8fLy4vvf/z4HDhxgy5YtbNmyhYCAAKZPn86iRYs4deqUU+NzhsbGRhobG3n77bdJSEjgO9/5DtHR0axbt46zZ8/y61//ml//+tfdpgFee+Oq5vdee7k83WEMCzpvzPVKz9mR74b25t7ffPPNdr/DujLnqbVrGRvuyFhta9ebg91WjNcyht16XUFHcqyud72FMwQHB/PDH/6QtLQ0Dh06xL333svLL7/Myy+/TJ8+ffjlL39JeXm5s8MUERERAYym6T/+8Y/58Y9/zJw5cxg9ejTHjx/nN7/5jVMa4Dn+7mnrt8/NGlfpTJ213mXSpElXPM7vzPUYNzpudT31OK7nN8zNNnHiRFJTU1mxYgUrVqxg+/btDBs2jM2bN3d5LCLiXDabjf/93/8lISGB3/3ud/zgBz8gKyuLrKwsli5d2i0a4HWkhmJ7OSFdpbPqJF6tnpE5p3WtsbSXH3O94/6dUQepM45zbtZ6Sri+OaLOWEN7M7m6unLPPfdYOU8nT55k8eLF/PznP2fw4MF88skn3WKeR0TkTqYmeCIiIiIiIiIiIiIiIiIiIv+fvfsOj6Lc3z/+TiihqgiKgBSpURBU0CBNglQpgShNikdEEQSPoGI5gihylIN+OXSRFqogJSAoHURAmgXQKBKKShOQXgOE5/eHv8nZbHaT3ckmswn367q4Ls1mkntmYZ7Zz/N8ZkRERERERERERERERERERERERERERERERERERERERERERERERERERMRnegieiIiIiIiIiIjIDWrmzJnMnDmTihUr8tZbb/HMM8+wd+9e3nnnHUqUKOF0vCQbN26kY8eONG7cmMaNG3P8+HH27NnDnXfeCcCWLVuoVasWBQsWpGDBgvzyyy/s37+fsmXLUr9+fVasWOFoftd8rtns5tu7dy979+6lVatWvPHGGxw9ejTNbX799Vfq1KnD7t272b17N/PmzePMmTNs3ryZUqVK0aVLF1599VVeffXVNH/WtGnTWLx4cZrf9/TTT9O9e3caNmxIw4YN+eWXX9izZw/t27enT58+PP7446nmnDdvntecaW135swZn7bzVa1atVJ8zdP76svfO9fj4npMUjsuTipYsCA9evTg559/Zvjw4Xz22WeUK1eOcuXK8e6775KQkOB0RJEs7/r164waNYry5cszdepUBg0axG+//cbgwYMZPHgwZcqUcTpiMq7jsvuYDPg9RgVaRlwXuJ/zffmZiYmJtG7dmv79+9O9e3cOHDjA9u3b2b59O2XKlKFx48bMnj3b4+/zNFakNYa682W8tsb+Pn36EBUVxc8//8yJEyeYPHlyUtbq1auzcOFCj/vmaf+sfUtt/3zhOva6ZvSU08rontMTX69jLly4QIMGDYiJiSEmJobhw4dz7Ngxvv32WwoUKECrVq2Ii4uzvX+BFh4ezv/93//x22+/8dtvv9GnTx+GDRtGpUqVmD59utPxRERERERERERueOfOnePll1+mUqVKrFu3jqlTp/LDDz/QpUsXunTpQp48eZyOCPxd/02rBuxt7rN+/fqOz83aqeWmJtB13kDNCbrPXW7ZssXW+3LhwoVktVBPdVD3WqjrMfFWH549e3aK4+JrndcXvtR5Pb13nnIGk3LlyjFs2DDi4+OJj4+nRYsW9OzZkypVqvDFF184HU9ERDLItWvXGDp0KOXLl2fBggWMHTuWHTt20LlzZzp37kxYWJjTEZOuD71dI9pZyxZodtdxpZenNWWBOBa+zmsHaju7giGn+3vgaQ2E3evOzBASEsKjjz7Kl19+yapVqzh8+DCHDx+mWrVq9OjRg5MnTzodUUREREREsoBTp07x7LPP8sADD/DAAw9w4cIFNm7cyJw5c6hRo4bT8QDvPQh33nmn1/XswfBZzj1beuY3XLnXD3ytIbjPP/nSq+dpu4zqT7D420uZmJjodV4utf4Eq5/QvafQtZ/QU09hIPssM8sjjzzCI488wpdffsny5cvZvXs3lStX5tVXX+XSpUtOx8sUixcvpkqVKlSpUoU+ffrQpEkTfv31Vz777DMaN25MaGhw3UoxtbqqdW7x1svjT49MRsmImqvdPmtvc+/WMXQ/h2V2zxP877yeGXVyuz3Yrjn9HX88rStIq8cqPestnFa1alVGjBjB77//zu+//84rr7zC2LFjKVeuHCNGjCAxMdHpiCIiInID+/XXX4mIiEiqnUybNo3Zs2dTsmRJR/K413w8ffYJdF0lUIJhvYs3vt4nwu7xDfb7dNlhfQ7csWMHtWrVolGjRrz++uu6fhe5AaxevZrVq1dTrVo1evXqRXR0NHv27OHdd9+lePHiFC9e3OmIgO/3UPTWE5IZ5+ZA3icxrfsZVa9e3etYZac/JjPq/t7ug5Te65yMXE8JgZkj8uf3OaFs2bJ89NFH/Prrr9SuXZuOHTsm/Xvatm2b0/FERG5Mxpis9EdERERERERERETS6dixYyYqKsqEhoaa0NBQ89xzz5mDBw86Hcurf/7znwYwBw8eTJEzMTHRVK5c2RQrVsxcvHjRXLx4Mem1a9eumUqVKpmSJUuay5cvm8uXL2dq7sTExBT5XLO55/NVx44dTceOHc37779vrl69akqUKGFy5MiR6ja//PKLyZkzpzl58qQ5efJkstcSEhJM4cKFTVhYmAkLC0s1y6FDh0yhQoVMly5dDGAGDx7s8fv27t1rAHP//fd7fL1Ro0YGMFu3bjVbt271mNOda073jHa3GzdunImKivK6v7t37zZhYWHmyJEjyb7u7X01JuXfO8vevXv9Oi7B6vz582bIkCFmyJAhpkCBAqZq1apm586dTscSyZLi4+NNfHy8qV27tsmdO7d57bXXzOnTp52OlSbXcdkTf8eoQMqI6wI753xjjImJiTGA6dOnT4qfef36dRMeHm4KFSpkTp06ley1QIwV7uO1tzH7mWeeMc8884x57rnnUry2fft2s337dgOYChUqeNw3T/tn7Zun/bPGXW9jrzXuuo+93jJaOa2M7jndj4mv1zHGGNOzZ09z0003mT///NP8+eefyV47f/68CQsLMz/++KPX7YPB0aNHzfPPP29CQ0NN8+bNzZEjR1Jc04iIiIiIiIiISMZav369Wb9+vbnrrrtMkSJFzOjRo01CQoLTsbz65z//6bUGnNbcZ6VKlWzNfQaK3VpuajKzzjtu3Dhbc5fWftt5X3r27JmsFurKqoO610Jdj4m3+nChQoVSHBdf67yp8afOa/e9Czbx8fGmXbt2BjDdunUz586dczqSiIgEyL59+8y+fftMzZo1Td68ec0777xjzp8/73Qsj6zrQ2/rBOysZQukQF8H2r0us6T3WHi63kltbju17bypXbu22bZtm9m2bZtf2Vx/lz+/z852dt+DQFx3Osn63DVt2jRTvHhxc+edd5q1a9c6HUtERERERILYN998Y0qXLm2KFy9uZs6caWbOnGmuX7/udKwUUutBCObPchmVzb1+4EsNwW6fQWb2J9jtpYyJifE6t5Naf4LVT+ipp9DqJ/TUUxioPksnXb161YwdO9YUKlTIVK5c2cTFxZm4uDinY2WIo0ePmrZt2xrAtG/f3rRv397s2bPH6VhpSq2uap1bvPXy+NIjk5ECXXO1e25Iqx+3UaNGHs9h6e158sZbz5Mx/zuv+1sbtmq1/rDbS+2a05/xxxjjdV2BMd57rLLLnL3l1KlT5rXXXjNhYWGmRo0aZufOneqrFhERkUy3ZcsWU7hwYRMREZG07sRpWbXmY0zGrHepXbu2ret8V76uq7B7fP25H4e79O5bZpo0aZLJkyePadu2bVCv3RcR+xISEkzfvn1NSEiICQkJMa1btza7d+92OpZXvt5D0VtPSEbfQzHQ90lM635GVv3Ofayy2x9jt+5vtyaY2f0xdtdT2p0jSs8a2mDwww8/mMjISBMZGWly5cpl3nvvPZOYmOh0LBGR7GiU8fJcudAAPEdPREREREREREREsohffvmFiIgIduzYwZo1a1izZg3jx4+nRIkSTkfz6sCBAwAULlyYwoULJ3vt66+/Ji4ujieeeIK8efOSN2/epNdy5MhBx44dOXDgAEuWLGHJkiW2M+zZs4d33nmHevXq+bzN119/nSKfazb3fL6aNGkSkyZN4vXXXydnzpw+bRMeHs7Vq1cpVKgQhQoVSvZa7ty5KVmyJAkJCSQkJHD58mWvP+fZZ5+lbdu2NG7cONXfZ+jZ2UgAACAASURBVL1nd999t9c8AH/88Qd//PGHx5zuXHO6Z7S7Xfny5albt67X/Rg1ahStW7fmjjvuSPZ1b+8rpPx7Zzlw4IBfxyVY5c+fnzfffJM333yTHTt2cNNNN1GrVi0+//xzp6OJZCkrV67koYce4qGHHuLixYts27aNDz74gJtvvtnpaGlyHZc98XeM8ldqY3JGXBfYOecDxMbGAtCyZcsUPzMkJISoqChOnTrFvHnzkr0WiLHC1/F64sSJTJw4kfHjx6d4rVq1alSrVo28efOyd+9ejDEp9g1S7p+1b572zxp3vY291rjrPvZ6y2jltDK653T17LPP+nxcjh49yieffEKnTp0oWrQoRYsWTfZ6/vz5uXz5MlWqVEn15zjt9ttvZ9y4caxbt45ff/2VGjVqUKNGDbZt2+Z0NBERERERERGRG8KkSZNo0KABDRo0oEqVKvz000+88MIL5M6d2+loXrnOZ3mal01t7rNjx4625j7d2ZmXtfLZqeWmJjPrvOXLl7c1d2ntt7/vi1UHda2FurLqoO61UNdj4q0+fOrUqRTHxdc6r9Xo5Ik/dV67712wKV++PHPmzCE2NpbFixdTp06dZP9ORUQka9q6dSs1a9akZs2aXLp0iW+//ZaBAweSP39+p6N55DrueFonYGctm7/8WSfgys51oN3rMkt6j4Wv1zuB2s4Of67L7G5n9z3w57ozGIWGhhIaGkqXLl3YuXMnDz30EI0bN2bKlClORxMRERERkSAUGxtLgwYNuPfee9mxYwdPPvkkTz75JCEhIU5HSyG1HoTM+CznWlvwZw4qEPMbntipH9jtM8jM/gS7vZSxsbFe53ZS60+w+gk99RRa/YSeegoD1WfppJw5c9KzZ09++OEHbrrpJmrXrk3t2rVZt26d09EC6ttvv03qgVi2bBmzZ89m9uzZlCtXzuloaUqtrmqdW7z18vjSI+OLYJl7t3tuSKsfNzw83OM5LL09T95463mC/53XM7JObrHbS+2a05+M7j1W7rz1WGWXOXvLLbfcwgcffMAPP/xAWFgYERERREREMGPGDKejiYiIyA1i165dNGvWjIiICNasWcNdd93FXXfd5XSsgNV87H722bNnj+3PPpmx3sUOf+4TYef4+nM/jqysW7duLF++nOXLl9OtW7d0/T0TkeBz5swZHnvsMSZOnMjUqVOZOnUqsbGxVKhQweloXvl6D0VvPSEZfQ/FQN8nMa37GVljkHsN1G5/jN26v92aYGb3x9hdT2l3jig9a2iDwX333cfq1atZvXo1Q4cOZfDgwXTs2DFo53xERLKj4PmULSIiIiIiIiIiIhkqPj6eyMhIypYty8KFC7n99tudjuSTxMREr6+tWbMGgBo1anh83fr66tWrAXj88cd9+p3Hjx9nzpw5SQvQt2zZQq5cuWjXrp3Pua1svubzNZt740h6nT59mvj4eO6//34Ajw9gmjx5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169fP/bt28fzzz9PgwYNgurBKyIiIpL1nT17FoDRo0czYMAArw+lcYKn+0H5up7En88+1uceIKD3g8po1nW+v+sxwL/7OnmS1vFN72c+130D/PoM45T+/fszYcIEAD766CNGjBjhcCIRsevrr79m2rRpfP7551niAXiQde6hmFnrMF3HKSDFWJWeviVX6a37B9t9kNKT0+4ckaffBanflzGYRUREMHz4cF544QW6du0KwN133+1wKhGR7CvU6QAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKSdeR0OoCIiIiIiIiIiIhknIsXLwIwadIk3n77bW677TaHE2UuYwwAISEhKV4rVaoUhw8fpkiRIgA89dRTdO7cmZo1awZFvoz01ltv0b9/f/bt28eIESO4//77efvttwEYMGBA0vdNmDCB+Ph45s+f79fPN8bQo0cPYmJiGDp0KABPPvkkOXLkYMGCBfTu3ZsVK1YwY8YMAHLmTFmqfuuttwA85nTN6G3fAL+2syxduhSAI0eO0KVLF7/22+LpfbW+5npcXI8JkOy4eDomwSw0NJT/+7//46GHHgJgy5YtREREOJxKJLisX7+eb7/9lu+//57Q0FCn4wQd13E5o8bkjBh3vf3M7t27ExMTw8cff0ylSpXo0KEDFy5cAOA///kPhw4dAiBv3rwpfp6nsQJIMYZaY8WECRMAbI3Z7k6cOEHTpk2pX78+AB9//HGK77H2zXrddf9c983T/nmydOlSv8dd15yeMoL965jLly8Df2e39tM61l27duXAgQO89dZbfPTRR7z77rt+/exgkDdvXj788ENatGhBfHw8FSpUcDqSiIiIiIiIiEi2sWTJEv744w+++uorp6NkOqtWCinrpaVKlQLI8BqwL/n8qQ8Hus5rZ07Qqp8CtuYuvb0vVh3Uyh8TE+OxDgokq4W6HhMgXfXhjKzzenrvgBQ5falhB5vy5csD8MILLzBmzBj69euneScRkSzgwoULxMTEMGTIEG655Ran4wQFa40AkCXWCaT3uswb63oH8Ouax+52ABs2bEjxtUqVKjFt2jR+/fVXRo0aBUCnTp2S1n/ZvS6zu503/q4vOHHiBECa153BLiQkhP/85z/cf//9AGzatIlatWo5nEpERERERDLb0aNH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n/v8qaumJtA1V7vnhrT6cdesWePxHOZEz5MdvtZqW7ZsmaweGIhean+491i589ZjdSPM2Vvi4uJYuXIl7du3dzqKiIiIZDPWtfQff/zBTz/95HQcWwJRV8mXL5/X+0E9//zztj/7BJp1je/pOj+j1mPYOb7+3I/DlT+fYYLRF198wRdffEH16tUpWLCg03FExKaoqChmzZrFpUuXnI4SUK7nZm89IRl9D8WMuk+ivzVQu/0xgar727kPUmbPH/mznjLQvU1ZfR3tiRMnWLhwIVFRUURFRTkdR0Qke/P25Ncg/SMiIiIiIiIiIiI2zJo1y4SGhppVq1Y5HcVvUVFRBjCXLl0yly5dSvH6pk2bTJ48eUyHDh1Mhw4dzJEjR8xff/1levToYXLmzGmWLVuW7gzx8fHm7bffNnXr1vV7W9d8rtm85du/f78JDQ01oaGhBjDfffddqj+/RIkSJkeOHKl+z8svv2xCQkLMO++8Y9555x2zf/9+c/nyZbN//37Tv39/A5jq1aub6tWrm4sXL6a5T9OnTzeAGTx4sMfXT506ZSpUqGBy5cplRowYYUaMGGGOHj1q/vrrLzNx4kSTL18+U6JECXP48GFz+PBhjzn379/vNad7RvftLl++7NN2roYPH26KFStmrl69aq5evZrmMfD0vqb29+7UqVMpjovrMXE/LlnNwYMHTZEiRUyvXr1Mr169nI4jErSef/55U6RIEXPgwAGno9jmOi6nxZcxyl9pjcl2rgussdfbuOt+zvflZx4/ftwApnHjxiY+Pt5cvnzZbNmyxWzZssU8/PDDplq1aubEiRMptvM2VngaQ9NijdfexuwpU6aYKVOmJH1Pan82bdqUYt887Z+1b972z5Xr2JsaXzO650zruHi7jjHGmKVLl5qcOXOaqKgoExUVZXbv3m1OnTplpk2bZvLnz28iIiJ8umYKRj/++KPJly+feffdd52OIiIiIiIiIiKSLbVu3dqUL1/enD592ukofrPqYanVgL3NfebMmTMgc7OBnJdNb3040HVef+YEfa2fWvtt531ZunRpslqopzqoey3U9Zh4qw+fOHEixXHxpxYdiDqvp/fOU86saPr06Wb69OkmJCTErFmzxuk4IiLihylTppgcOXKYb775xukofrGuD7PKOgFf1nEZk/Y6AYs/12Xu0nMsXK93UpvbTm07TyZMmGCApDVe8fHx5tKlS2bXrl2mU6dOBjB9+vQxffr0CcjvC8R21nsQyPUFvlxzBpPjx4+b4sWLm27duplu3bo5HUdERERERBw0ZMgQM2TIEJM/f34THx/vdByfpTb/lBmf5VxrC/7MQdmd33CvO6RWeyhRooRPNQRP80/eevXS2i6j+hMs/vZSHj9+3Ou8XGr9CVY/oXtPoWs/oaeewkD3WQaTTZs2mRw5cpiYmBino9jWt29f07dvX3PLLbeY3bt3Ox3HttTqqoHukfEm0D3Rge7NSuvckFY/br58+TyewzK758kTX87rrrXa+Ph4r7Vad3Z7sD1l9LWG7WldQVo9VnbXW2Q158+fN/fff7+pWbOmuXbtmtNxREREJJtJTEw0iYmJ5u677zadO3d2Oo5Hgar52P3sY11L2/3s48qX6+PU7gdlXeO7Xudn5HqM9BxfO/fjcP8MY90DLK3PMMHgwIEDJk+ePCZPnjxm7NixTscRkXQ4dOiQuemmm8wrr7zidBS/+XoPRW89IZlxD0U790n0VhO0ez8jK4e//TGBqvsH+j5IgeqP8ZTRl5yBmCPy976MwaxTp06mRIkS5syZM+bMmTNOxxERyQ5GGS/PlQtFRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERExFfeno4XpH9ERERERERERETEpg4dOpibb77ZfPvtt05H8UlsbKwBPP7ZtGlTsu/9/vvvTbNmzUyzZs3MTTfdZAoUKGAaNGhgNmzY4FD65Kx8rtm85du/f78JDQ01oaGhJiQkxOzcuTPZ64sXLzaLFy/2emwAM2HChGTbnDlzxkycONE0adLENGnSxJQpU8bkzp3bFChQwFSvXt28//775uLFi+bixYup7kePHj28/s4mTZok+96TJ0+aV1991YSHh5vw8HATFhZmcufObcqVK2d69+5t/vzzzxQ/3zVnmTJlvOZMa7vcuXP7tJ3l+vXrpnz58mbgwIGp7r879/fVl793rsfF9ZikdlyC3bFjx0yVKlXMPffcY86ePWvOnj3rdCSRoHX27Flz7733mvDwcHP48GFz+PBhpyP5xJ8x2d8xKiP4e11gjb2exl33n3nTTTf5fK2xcuVK06pVK3PHHXeYvHnzmipVqpgqVaqYwYMHpzoueRor0hpDXfk6Xjdv3tw0b9481ffL2/u8cuVKj/tn7Vta1xT+jL2+ZvSU0/WYeDsu1vWRu2+++SbptZtvvtnkzp3bhIeHm0GDBqW5f8Fo9+7dZvfu3aZ48eLmkUceMVeuXHE6koiIiIiIiIhItnTo0CFTokQJU7duXXPu3Dlz7tw5pyOlyZ8asDGe5z43bNgQFHOz/tZy06oPB7LO6+ucYKDmLn19X6xaqKc6qKd9tI6Jt/qwJ/7UogNV53V/73zJGexWrFhhwsLCTFhYmOnXr5/TcURExE/Xr183LVu2NLfffrvZtWuX2bVrl9ORUuXrNWJaa9kmTJiQqesEfF3H5cs6ATvXZeldM+HP+jw7212+fNnMnTvXtGnTxrRp08aUK1fOhIWFmZtvvtnUr1/fzJo1K819tDP/7st2nri+B4FcX+DtmjMYnT171tSsWdOULVvWnDhxwpw4ccLpSCIiIiIi4qCEhASTkJBgHnzwQVOpUiVz/PhxpyN55WttIZg/y9md33CvO3jqDbRTP3Cff/KlV8/TdhnVn+DKn15Ki7/9CVY/oXtPoWs/oaeewkD1WQaT/fv3m/3795tixYqZ5s2bm+vXrzsdybZLly6ZS5cumYiICFOyZEmze/dupyP5xZdzXyB6ZDJDRtRc7ZwbvM299+7d2+s5LD09T9evX/e7NmznvO5aq7XWEvhSq7Xbg203p8V9XYEvPVZ211tkBVYfdWRkpClatKjZs2eP05FEREQkG5s/f74JCQkxX3zxhdNRkgTys09q60Yzkp17N6V2PyjrGt/1Ot/f9RjG+HefiPQcX3/vx+H+GcaqTfm7f5ktMTHRNG3a1FSsWNFUrFjRXL582elIIpJOMTExJiQkxIwfP97pKD7x9x6K3npCMou/90n0VhNMz/2MUsvirT8mvXV/f2uCmdEf4y2nP+spjUnfHJHd3qZgNGjQIJMjRw6zdOlSp6OIiGQno4yX58qFGGPIQrJUWBERERERERERkWCSkJBAVFQUGzduZMaMGURFRTkdSUSyuLi4OFq1agXAunXruPPOOx1OJBL8jhw5QoMGDTh//jwACxYs4MEHH3Q4lYhkZytWrKBjx44AVKhQgRUrVnDTTTc5nEpEREREREREJPuKi4ujQYMGFC9eHIDPP/+ckiVLOpxKRLKyiRMn8sILL9CuXTsApk6dSmhoqMOpRETEXxcuXKBRo0bEx8cDsHDhQmrXru1wKhEJVgcPHqRly5b8+eefrFu3jooVKzodSUREREREgsSRI0eoW7cuOXPmZOnSpdx1111ORxIRh2zfvp3mzZsDcMcdd7B27dps0Stw+vRpmjRpQnx8PNOmTaNFixZORxIRAeDnn3/m8ccfB/4+V61YsYJ7773X4VQiIiKS3T311FMsWrSIDRs2UKVKFafjiGQZL7/8MmPGjOGrr74CoGbNms4GEpGAeO+99xg4cCCDBw/mzTffBCAkJMThVCISjK5du0a/fv0YM2YMH3/8Mc8++6zTkUREspPRQB9PL6jjUURERERERERE5AYRFhbG4sWLefLJJ2nTpg09e/akZ8+eSQ/hERHxxfXr17l+/TojRozgwQcfpHjx4mzevFkPwBPxUbFixdi0aRNVqlShSpUq1K5dm4EDB3LlyhWno4lINnP+/Hn69OlD06ZNadasGc2aNcs2Te0iIiIiIiIiIsGscuXKbN68mWvXrnHt2jWqVq3K9OnTnY4lIlnQiRMnaN++Pc899xz9+/dn2rRpTJs2TQ/AExHJovLnz8+qVauoXbs2tWvXJjIykn//+98kJiY6HU1EgkxsbCz33XcfV65cYdOmTXoAnoiIiIiIJFOsWDE2bNhAvnz5qF69OvPnz3c6kog4YPz48dSqVYu7776bu+++O1v1Ctxyyy2sW7eOqKgoWrVqxT/+8Q9OnDjBiRMnnI4mIjeoq1evMmTIEKpXr06hQoUoVKgQ3377rR6AJyIiIpnik08+4f7776dBgwZs27bN6TgiQc8YQ9++fRkxYgQxMTHUrFlTD8ATyUbeeustRo8ezaBBg2jevDnNmzfnzz//dDqWiASRffv2sW/fPurVq8fEiROZM2eOHoAnIpKJQowxTmfwR5YKKyIiIiIiIiIiEqzmzp1Lz549AQgJCeGVV17hpZdeIiwszOFkIhLMVq1aRf/+/QH48ccfefnllxk8eDC5cuVyOJlI1mPN0U2YMIGXX36ZW2+9lcGDB9OlSxdCQkIcTiciWdn169eZP38+r776KmfOnGHo0KE899xzTscSEREREREREbnhXL58GYBBgwYxbNgwHnzwQT744APq16/vbDARCXoXL15k1KhRDB06lLCwMCZOnEjz5s2djiUiIgHiul6gb9++lCpVinfffZe2bds6nExEnLRr1y4ABg4cyNy5c+nSpQtjx46lQIECDicTEREREZFgdfnyZV577TVGjhxJw4YNARg+fDhVqlRxOJmIZKTvv/+evn37sn79evr06cOHH34IkG37+5YsWUKvXr04ffo0AP369eO1114jb968DicTkRuBMYZ58+bx5ptvcujQIfr378+//vUvIPued0VERCQ4Xbx4kbZt27JmzRo++OADAF588UXdl0LEzbFjx3j66adZtWoV06ZNo3379k5HEpEMsnXrVjp16gTAn3/+ycsvv6y6ocgN7vz583z44Yf85z//AaBs2bLMmjWLqlWrOpxMRCRbGg308fSCHoInIiIiIiIiIiJygzpx4gQAw4YNY8SIERQtWpQ333yT7t27Exoa6nA6EQkmW7du5fXXX2ft2rVJjbEfffSRJndFAuTgwYMMHjyYiRMncu+999KvX7+khVY5cuRwOJ2IZAXWg+8A3n77beLj4+nWrRvvvvsuRYsWdTidiIiIiIiIiIhs27aNN954g9WrV9OwYUOGDRvGfffd53QsEQkirnXe/v37c/z4cXr37s0bb7zBzTff7HA6ERHJKPHx8fzrX/9i3rx5REZGMmzYMB544AGnY4lIJvrrr78YPHgwY8eOBaBatWoMGzaMyMhIh5OJiIiIiEhWsXbtWvr16wdAXFwcTz/9NO+99x633Xabw8lEJJCOHDnCoEGDmDRpEtWrV+e///0vDz/8sNOxMsW5c+cYNmwYAP/3f/9HwYIF+ec//0nPnj01jyYiAXft2jVmz54NwH/+8x/i4uLo3Lkz7777LqVLl3Y4nYiIiNzIEhMT+fDDDxkwYAAAkZGRxMTEUKxYMYeTiQSHFStW8NRTT5EnTx5mzpxJrVq1nI4kIhns4sWLAIwaNYp///vfFCxYkIEDB/LMM8/ofk0iN5Br164xefJkBg4cyNWrV+nfvz8AL730EmFhYQ6nExHJtvQQPBEREREREREREfHu999/Z+DAgcyYMYNKlSrRo0cPunbtCkChQoUcTiciTrhy5QqxsbGMHz+er776inr16vHBBx9Qs2ZNp6OJZFvff/897733HgsXLqRChQoAdO/enaeeeorbb7/d4XQiEowOHDjA5MmTmTx5MocPHwbgySef5M0336RSpUoOpxMREREREREREXfLly/nzTffZPv27TRr1gyA559/nmbNmqnJVuQGdfToUSZPnsyECRM4dOgQAM899xwDBgzQ/JCIyA1k48aNvPLKK2zdujXpOrF37940btyY0NBQh9OJSEbYsWMHY8aMYebMmRQpUoQhQ4YAf8/569+9iIiIiIj4KzExEYBJkyYxYMAArly5Qvfu3XnhhRcoU6aMs+FExLZdu3YxcuRIAKZNm0aRIkUYOnQo7dq1IyQkxOF0zjh69CjDhw9n3LhxGGNo27YtTz/9NHXq1HE6mohkcbt372bq1KlMnTqVo0ePAtChQwdee+01qlSp4nA6ERERkf/ZuHEjAJ07d+bChQsMHDiQHj16kCtXLoeTiWS+vXv38tZbbwEwZ84cnnrqKUaNGkWBAgUcTiYime3PP//k7bffZtKkSVSoUIEXXngBgK5du3LTTTc5nE5EAu2vv/4CYPLkyYwbN44jR47Qp08f/vWvf3HLLbc4nE5E5Ibg9SF4WgUvIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiPgsxxjidwR9ZKqyIiIiIiIiIiEhW89NPPzFq1ChmzZpFYmIiAO3bt6dHjx7UrFnT4XQiktH27dvHhAkTAJg8eTInTpygRYsWvPDCCzRq1MjhdCI3jri4OMaNGwfAzJkzuXjxIq1ateLZZ5+lYcOGhIaGOpxQRJxy9epVAJYsWcLEiRNZvnw5hQsXpmvXrvTs2ROAsmXLOhlRRERERERERETSYIwhNjY2qQ68evVqSpYsSffu3XnmmWcoXry4wwlFJCNZfVxr1qxh/PjxLFq0iAIFCvDUU0/Ru3dvQHVeEZEblTGGRYsWMWrUKADWrl1LuXLl6NmzJ08//TSFChVyOKGIpMeVK1eYP38+AGPGjGHjxo3cc8899OrVi2eeeYY8efI4nFBERERERLKLs2fPMmbMGMaOHcuRI0eIiooCoE+fPtSvX9/ZcCKSpuvXr7Ns2TJGjBjBypUrKV++PPD3v+Hu3buTN29ehxMGhzNnzhATE8OUKVPYsWMHFStWBOAf//gHXbt2pUSJEg4nFJFgd+7cOQA+++wzpkyZwsaNG7nzzjvp2rUrzz77LABlypRxMKGIiIhI6s6cOcPgwYMZPXo0JUuWZMiQIbRt25aQkBCno4lkuOPHjzN48GDGjx+ftOZ26NChtGrVyuFkIuK0X375heHDhzNr1iwAQkND6dKlC7169aJy5coOpxOR9Nq6dStjx45lzpw5AOTJk4enn36aF198UbU8EZHMNRro4+kFPQRPREREREREREREUjh79iwzZ84EYPz48ezYsYPKlSvzxBNPEB0dTdWqVR1OKCKBcvDgQWJjY5k/fz7r16+nWLFiAHTv3p3u3btz5513OpxQ5MZ26dIl5s6dy4QJE9iwYQOlSpWiTZs2ALRu3Zq6deuSI0cOh1OKSEZKSEhg7dq1xMbGsmjRIuDvhdmNGjWie/futGrVity5czucUkRERERERERE7IqPj+eTTz4hJiaG06dP07BhQ6Kjo4G/68C33XabwwlFJL2MMWzbto0FCxYwd+5cAPbt20etWrXo0aMH7dq100NPREQkhV9++YUxY8Ywffp0rl27RsuWLWnbti0Ajz32mG52LZIFJCYmsn79eubOncu8efM4efIkAFFRUfTq1YvIyEjdgFBERERERDLMtWvXWLBgASNHjgRg48aNVK5cmY4dO9KhQwfKlSvncEIRsfz0008AzJ49m08//ZT9+/fTqFEjXnzxRZo1awb8fbNm8ez7778nJiYGgJkzZ3LmzBnq1atHixYtaNWqVdKDBEVEjh8/zhdffMHixYtZtmwZ8PfDR6OiovjHP/5Bo0aN1KspIiIiWc7vv//OgAEDmDlzJlWrVuWll14CoEOHDoSFhTmcTiSw9u7dy+jRo5k0aRIFChRg0KBBdOvWDYCcOXM6nE5Egsnp06cBiImJYezYscTHx1OrVi3atWvH448/rnuqiWQhe/bsYe7cuXz22Wds376d++67j169egHw5JNPkj9/focTiojckPQQPBEREREREREREbFv06ZNzJw5k4ULF3Lo0KGkpo/o6Giio6N56KGHdCMOkSxi7969zJ8/H4AFCxawdetWChYsSPPmzWnfvj3NmzcHtLhLJBjt2rWLGTNmsHDhQgDi4uIoXLgwLVu2JCoqisaNG5MvXz6HU4pIIJw9e5Yvv/yShQsXsnTpUs6dO0f16tVp3bo1AJ07d6Z06dIOpxQRERERERERkUBKSEhgwYIFfPbZZyxfvhyAK1euUKdOHaKjo2nTpg0lS5Z0OKWI+CIxMRGADRs2sGDBAmJjYzlw4ABly5ZNeshlly5dqFq1qpMxRUQkizh37hyzZs1izpw5fP311wDkyZOHFi1a8MQTT/DY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hmnTphEZGUlsbCyhoaEkJibe7kcSEREREZEJ4o2ftLa20tvbS1tbG9231im322O3646RYjB2XTAc7zrC7qPbuEpERMRtv/5e8h//AR/7GHR2Bu4nEx5uivFv3ICLF81zmZnw5JPmwLutW01hvojIvcCbx9Xb20tra2vAuP7tYl5NTU0MDAyQcvEi2/7kT2jMywNg1//6X8DgXutwvO9D3v3YsLAwEhISCAkJISkp6e5/UBERERG5IzaG4Y1FeOMaI+WI2DwTW+L92c8+QUNDND/4waukp7cNyeXwZ+d7NifE5od4b72vi4iMm/5+UxgD8Nxz5oC7kUREQEqKCTw+8MD4j2+C2RzusYgbDGc0cQPA5ccobiAiY83u39lrnmX39+D2dSyWvX7ezu1yBQPVrMTGxhIZGenzmr2djLW0x47B9u2mB9ydnPVghYRASQnMmzd+YxORu+et8bPzvfb2drf3BAzpRRCI/9cs+5d/YcGLL3LqYx+j9Faut7e+byTea6r9mrCwMAASEhLcrX1ORGS8+dfmAa4+b7S1eYBbjw8M+MZfAdLTzX9ntLV54Fuf563NA0aM6YrIHaqrM7ezZ4Pnb/+2wsPNaeJgauGClLRo52veejgbDxxpvne7uaBd297uNVsfFxYWRlJSkosJiohMdXYOaOOQd1NfcLvaAmDY+gB7fQ1UX2Dnk3dSX/DTn8Jv/7a5HxYG9tM/+Un4wz+E+fNH/HIRmQoGBuA3v4Hvf988/vWvTeOWnh547DF4440hXxKoVw3wjtfDI9F6WEQmk8bGRnfrfy273X6z3XP5l39ZxosvLgDgYx87xRNPlN52TezfhyY5Odnl1KgHjcgYe+45+OIXzf0R5jM+IiIgPd3MrSZZIoSdu/nnzHjzZeDOcmbGMl8G8MmZ8ebLeF9T73kZI8Meghca6EkRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGRQELsqbZTxJQarIiIiIiITH49PT3cuHGDGzdu0NDQQEtLC21tbQA0NjZy8+ZN2trauHnzJk1NTdy8eRPAPd/U1ERrayu9vb20tLQA0NfXR3t7O11dXUH7ud6p6OhooqKiAIiIiCAuLo7IyEhiY2NJTk4mLi4OgNjYWOLi4khKSiIuLo64uDhiY2MBSEpKIj4+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s66xQktLC2FhYa6htf1dtk1FVMgiMjndvHmTo0ePcuLECde0Hsx+Vk9PD1FRURQUFLBixQqfQp358+cze/ZsFVrLpNXa2uoa2xcXF3P69GnAHM5TXl4OQFpaGsuXL2fFihWAifOuXbuWhQsXKq4rIiJyS01NDQcOHOD48eMA7tC7mpoaQkJCyM/PZ/Xq1YBZB9oGPXPmzNFcUSZcZWUl586d49y5c5w8eZK3337bHcbQ09NDfHw8K1ascIfjbdiwgXnz5gV51CKTm3/cAMy6SnEDmer84wZg6iUDxQ0AVqxYobjBFNbf309paSmnTp1ycwN7qG5ZWRk9PT2EhYUxZ84cAJf7aWtj8/LyyM7O1mG6cl9pa2sbckiePYS6uLiYxsZG97kpKSk+zVqXLFniDqO2ObYyNdmmqydPnuTMmTOA2T86e/Ysly9fpr+/n2nTprnchoKCAgoKCpg7dy5z584lPz+fhISEYP4IIuOisbGRCxcuAOb6WFZW5g6ELC0tpaenh/Bw03MgPz+fJUuWuIN9Vq5cqWax9wj/2jwYrDHyr80DXH2eavPkfuWtzQNcfV6g2jzANZRVbd7UUlFRwZ49ezhy5AhHjhxxObJdXV0kJiaybt061q5d62KJNj5v3zdF7saVK1cAKCoq4vTp0xw9epQjR45QWVnpYjmLFi1i3bp1rFu3jk2bNlFQUKD4nkwq/vUF9vo5XH3BggULAFRfIJOGt77AHqgSqL5g5cqVAKovmOK0HhYZHa2HxV9FRQWFhYUA7tC7t99+m9bWViIjI1m2bBkAa9ascfmYBQUF6qMo46quro6zZ89SXFzs1iPHjh2jqKiI3t5ekpKS3IF4AGvXrmXjxo06/GkKsPkygMuZ8c+XAVzOjH++DKCcGbkveXNm/PNlAJcz458vA7icmfsoX2bYQ/B01RAREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREZE7FjIwMBDsMYzGlBqsiIiIiMhU0tPTQ2lpKQD79++nsLCQ48ePc+7cOQYGBsjMzASgoKCAxYsXs3r1agoKCliyZAnTpk0L5tBFJoz9OykuLqaoqIjjx48DcPbsFcrLexkYSCc5eRFz5jzAe94TBsC7353H2rVr9XciInIHqqqq2L9/PwCFhYXs37+fEydO0N/fT2ZmJqtXrwZ85yOLFy8mJCQkmMMWuWvNzc2cOXPGzSmOHz9OcXExZ86cobu72+f3ftOmTWzcuJF169YRGRkZzGHLFFFVVeV+p4qKioDB3zGA5ORkFi9e7K6pYK6vBQUFbv0nIrfX3d1NWVmZz9+avV9SUkJfXx8JCQksXbrUXdNXr17N6tWrWbRoEaGhocEcvnjY92UbFzt06BD19fUAhIeHM3/+/CFxsdzcXADNR+W+0NzczIULFwBcXOz48eOcPn2a1tZWIiIiWLZsGQAbN2501zqt2UREROR+1Nvby6lTpygsLARMTGbv3r2Ul5e79YV/vHvDhg2kpaUFc9gi74iNR/rHuy9dukRYWBgLFixg06ZNwOCaoaCgIJhDFrnv2L1Y7/vT0aNH6e7udnsG3him8sLkXtXS0sLp06eH5H+dOHGC9vZ24uPjWbZsmdufBXjwwQdJTU0N5rBFRETGXVVVFWDqCHbt2kVhYeGQOgK7/7N69WrFMmRK6OnpAaC0tNTFLY4fP87bb79NR0cHGRkZAKxdu1b5eXLf88/hDhQ3gMH3AsUN5F7lHzcAE0cLFDcAE+9W3GBy6Ovr4/z58y7WY/8fHjhwgBs3bhAeHk5OTg6Ay5/Oy8tj8eLFrFy5ktjY2GAOX2RKaWxsHJIzbfcFL1265D7P1sPYj7Vr1zJjxoxgDVtGYPd6AbduGun6aW81HxTx1dvby9WrV4dcI48fP+5TWwK4+hLlW09u3uuj9/+nf20e4HN9VG2eyOh4a/MAN7/0r82DoddP1eYFR21tLXv27HE5SPv37+f48eM++bHe2In+P8lEG2mNk54m9Rr+AAAgAElEQVSezpYtWwDz+7lp0yZWrVqluZiMO299gf39DFRfYHOrVV8g9wJvfYF3beVfX2DzNFVfMHl4e9UAWg+LjBOth+99NhfH5mMWFxcTHh4O4OZ/9mPNmjVERUUFecQig2zfZTuXs3llJ0+epK+vj7y8PLeufte73sWcOXOCO+D7nDdnxj9fBnB7vv75MoByZkRGyebM+OfLAO7WP18GuFdzZr4PfD7QCzoET0RERETkPtXU1MRvfvMbdu/ezaFDhzh58qQr8k1NTWX9+vWsW7fO3aakpAR5xCKTW01NDUeOHOHw4cMcPnyYo0ePAqZBeHR0NCtXrmTDhg088sgjPPzwwwDExcUFc8giIkFXWlrK66+/zu7duzl48CC1tbVuI3b16tU8+OCDbNy4kQ0bNjB9+vQgj1Zk4rS1tXHkyBH279/PgQMHADh48CBNTU3ExcWxfv16Nm/ezPbt2wFYs2aNElPuY+3t7Rw+fJi9e/cCcOTIEY4fP05NTQ0hISHk5+ezatUqAFatWsXq1atZtWqV1ngiE6C9vZ3Tp0+7Bmpvv/02YJIPe3p6iI+PZ+XKlaxZs8atEzdu3KiihAlw4cIFdu/ezZ49ezh8+DAAFy9eBEyy4Lp161xcDGDFihVqcicyjP7+fkpKSlxcDODw4cOcPn2a3t5epk+fzvr1610B67Zt21i5cqXmryIiInLP6O3tBeDAgQPs2LGDvXv3cuzYMTo7O0lPTwdgw4YNrgmqCpLkfmML9g4cOODi3SdOnKCnp4fs7Gw2btzItm3b2L59u2ueKCLvjK0POXnyJDt37mTv3r0cOnSIhoYGoqKi3J7BAw88wIYNG9iwYQNZWVnBHLLIpNDb28vJkyc5ePAghw4d4uDBg1y+fBmA0NBQFi1axIYNG9i2bRvbtm1zcz0REZGpqqKigtdee42dO3eyb98+qqurAYiOjmbt2rU89NBDbNq0iQcffNA10xG5V3R3d3Ps2DHXoHffvn2u4Ud8fDwPPvggjzzyCACPP/44S5cuDeZwRcbU7eIGYPIMFTcQ8RUobgBw+fJlxQ2C5Pr16+zbt4/CwkKOHTvGqVOnaG9vd4cx2UaQq1atYtWqVSxbtkw5gCIToKamxuVLe/Ony8vLAcjOzgZMzdj69et5+OGHWbt2rf4+J1B7ezsHDx5kz549HDp0iGPHjtHY2OiarhYUFLBmzRr3oeunyNjo6Ojg5MmTHDt2DIBjx45x7Ngxzp8/T39/PxkZGaxZswYweUabN29m3bp1+vubIO3t7QCuPs+/Ng9w9XmqzROZWN7aPMDNL/1r8wBXn6favLFl+1Dt2bOHl156iV27drmm/evWrQNg69atbN26lQcffJDo6OhgDldkWH19fZw4cYK33nqLt956CzD7Qzdv3iQrK4tt27bxxBNP8O53v5v4+Pggj1amut7eXpczHai+YMOGDQCqL5D7ln99wYkTJwBUXxAEt1sP5+fnA2g9LBIEWg9PPQ0NDbz++uu8/vrr/OY3vwFMjmZUVJTrFffwww+7uWBMTEwQRyty91pbWyksLGTv3r3s3buXo0eP0tPTQ15eHgBbtmzh8ccfZ/v27VpfjxP/fBnAJ2fGP18G0J6vyASxOTOB8mXA5MzcY/kyOgRPREREROR+1tHRwf79+3nzzTd58803ARPMHhgYYOXKlWzcuNGnsffcuXODOVyRe0J/fz8AJSUlHD58mCNHjrBv3z6KiopcQcj69etdgeP69eunevBBRGREra2tvPnmm+zYsYMdO3YApug7MTGRLVu2uIY5q1evBnDFxyJi9Pf3c+7cOZfM9+abb1JRUQFAWloajz76KNu3b2f79u1kZmYGebQyXpqbmwEoLCxk37597Nu3j2PHjtHd3c3s2bMBk/BsN6BXrVpFYmJiMIcsIgF0dXVx+vRpt1F98OBBioqKANNoavHixTz88MNs2rSJzZs3q5HUO1RdXc3u3bsBXGysvLyc2NhYHnroIR544AEAFxtT4rXI2Ojo6ODtt9/m8OHDHDp0yB3YW1NTQ0pKClu3buWRRx5h27ZtLFiwIMijFRERERmdK1euuFi33X9vaWkhLy+PRx55hI0bN7JhwwbNc0SG0d7eztGjR9m/fz/79+9nz549tLW1sWjRIgAX6968ebOa4ojcocrKSt544w127tzp3ptqa2uZPn06W7duZcOGDTzwwAOsXLlSuSkio1BTUwPAoUOHOHDgAPv37+fw4cP09/ezYsUKHnvsMQAee+wxNm7cqGZEIiIyadkme6+99hoAr776KqdPnyYmJoatW7e6/WkwTXE0Z5T7UX9/P8XFxa45yM6dOwGoq6sjJyeHxx9/nMcff5xHH32U2NjYII9WZHRGEzcA9D4gMgo1NTXDxg3AxAwUN3jnLl26xL59+9i7dy/79u0DoKysjPDwcFasWMG6detcA6+CggIAIiIigjlkEfHT0NDgmnyBOSBv//79XL9+nejoaNatW8fmzZvd2vTBBx/UvHsMeA+8s4c8HDlyhO7ubvLz89m4caM77M6+d2l/VmRi3bx5k7ffftsdigfmMJaKigpiYmLYsGEDW7ZsYcuWLQA6GG+MNDc3D6nNA1x9nn9tHqD6PJFJxr82D3D1ef61eYDq80apra2N1157jV//+te88sorADQ2NrJ8+XLe9a53sXXrVh566CHi4uKCPFKRd6a3t5cjR47w1ltvsWvXLgoLCwkLC2Pbtm0APPXUU7zvfe9jxowZQR6pTAX+9QUtLS0Aqi8QuQP2ILbh6gu2b98OoPqCMTDa9bDWwiKTz2jWw5s3bwbQengcnTt3jpdeeomXX36ZAwcOEBYWxkMPPeTiuZs3b2bdunXqpSj3tLa2Ng4ePOj6yezevZtDhw4RFhbG5s2beeKJJ3jf+94HQG5ubjCHOiXZfBnA5cz458sAPjkzypcRmVwaGhoAXM5MoHwZwOXMTLF8GR2CJyIiIiJyv6moqOBXv/oVv/71r9m/fz+dnZ0sWLCARx55BIBt27axdetWNfYWmWA1NTWucHj37t28+eabXLlyhdjYWLZs2cJTTz3Fk08+CUB6enowhyoi8o7V1tby7//+7/z7v/87hYWF9PX1sWrVKpdg9O53v5sHHnjAHQ4qIqNjD0x6/fXX2bFjB/v27aOrq4tly5bx9NNP86EPfQhAybBTWF9fHwcOHOCVV15hx44dnDlzBjBNlxYuXOiTeDRr1qwgj1ZE3onGxkbA95DL48eP09PTQ15eHmBiOe9973vVUO02BgYGOHr0KC+88AIvv/wyRUVFLkHHHkb/6KOPsn79eiXuiEwgm5ty9uxZdyDlnj17aG1tJTs7G4DHH3+cp59+mkceeUQNGkRERGTSOXXqFD/72c/41a9+RUlJCbGxsWzdutWnoHbevHlBHqXI1NTV1UVhYSE7duwAYMeOHZw+fZro6Gi2bNnCM888wwc+8AEAkpKSgjlUkUnDFiw///zzvPjiixQXFxMdHc2mTZt8DuVavnw5ISEhwRyqyD2npaWFt956i507d7qDUUpLS4mJiWHz5s381m/9Fk899ZTyMkVEJOh6enp44403+Ld/+zdeffVVmpqamDt3LvD/2Tvz8Ciq7O9/OwmEJYQtrGEfQMRRFGQCEnYCGAKRCCSsboAsKi4wLj9lUGYcBURFZVEWMaCArGHfBAQkgDAiKA4hjiA7MSFAgJDlvH/wVlvpVHVX3a6uqu6cz/P4PDN0LnWodJ17lu+5BcTGxiI2NhYdO3bkl7EwjAqFhYUAgO+//x4bNmzAhg0bcOjQIZQqVcp5UFFSUhISEhIQHh5uoaUMo8zhw4e5bsAwFiCvGwDA1q1bFesGALh2oEJ2drazX7B+/Xps374dZ8+eRZkyZdC6dWvnYY3SoT8VKlSw0lyGYbzk5MmTRV5ymZ6eDgAICQlBq1at0LNnT/Tq1QutWrVCUFCQxdban19++QUAkJKSgvXr1yM1NRW3b99G48aNnf6zY8eO6NSpE8+fMIzNSU9Px86dO50vsTxz5gyAOy+qbNeuHeLi4tCnTx8+MFYD8tk8AM75PNfZPAA8n8cwAUBWVlax2TwAzvk8ns1TJi8vD8CdPPzzzz/H5s2bkZeXh+joaOfZN4888gjvO0zA88cff2DdunVYs2YNgDtxw61bt9C2bVsMGzYMiYmJ/DIgxok0WwBAcb5AmjHg+QKGEUM+XyD1DJTmC3i2QB3OhxmmZKGUD0u5HufDxnH8+HEkJydj2bJlAO7UcSMiIhAbG4u4uDj06NGDdWQMAyAjIwMbN27EunXrsHnzZmRnZwMA7rnnHiQmJmLo0KFo0KCBtUbaFEkz46qXAeDUzLBehmECA7leBoBTM+OqlwFgZ80MvwSPYRiGYRiGYQKdkydPYuXKlVi5ciUA4MCBAwgLC0OvXr3Qs2dPdO3a1XmYMMMw9iI9PR3bt2/Hxo0bsXnzZty+fRsA0L59eyQkJKBv3778/DIM4xdkZWVh1apVTrHeN998g7Jly6J3796Ii4tDTEwMv+CTYXzIjRs3sGvXLmzYsAErVqzA+fPnAQAPPPAAEhMTkZiYyM1fm5OZmQngjoBw3bp12LRpEzIzM9G4cWPExsY6D1CKjo5mf8owJYCcnBykpqY6G9WbNm3C999/j9KlS6NTp06Ii4tDr169SrxvLygowJ49ewAAK1euxKpVq/D777+jYcOGeOSRRxATE4MOHToAAAsyGcZm5Ofn48CBA9i+fTuAOwevHDp0CBUrVkSvXr2QkJCAnj17oly5chZbyjAMwzBMSeSXX37BkiVLsHTpUuf/b9CgAfr164eHH34Y0dHR/OJehvEh586dw+bNm5GSkoJNmzY5X6zdo0cPJCYmok+fPggLC7PYSoYxl++//x7Lly/H119/jV9//RUA0LBhQzz66KPo3r07oqOjUbZsWYutZJiSyalTp7B161bnkG5BQQG6dOkCAOjfvz8eeeQRVK1a1WIrGYZhmECHiLBv3z4AwJdffomlS5fijz/+wEMPPYR+/fohNjYWTZs2tdhKhvFvLl26hI0bN2L16tUAgI0bNyIoKAhxcXEYPHgwHn74Ya4ZMpYhrxsAwK+//sp1A4axCUp1AwDo0qUL1w3+P//973+xbt06rF+/Hnv27HG+jLZdu3bo3r07OnTogL/97W8IDQ212FKGYXzNuXPnAADffvstdu7ciQ0bNuD3339HzZo1ERsbCwDo1asXYmJi+FA//HmQ9dq1a7FmzRqcOHECAFCtWjXExcWhS5cu6Ny5MyIjIy22lGEYb5FeErpz505s3boVmzZtQnZ2Nu677z706dMHffr0AQA8+OCD/LJz3JnPU5rNA+Ccz+PZPIYpGeTk5ACAcz5PaTYPQImdz/v5558xf/58LFq0CABw+fJldO3aFQMHDkTv3r0RERFhsYUMYy03b97Eli1b8PXXX2PlypVwOBx49NFHAQBPPvkkOnbsyLFXCUM+XyDNFgDg+QKGMQml+QLphZM8X3AHzocZhpGQzqoBwPmwl1y+fBlLlixBcnIyDh48iLp162LgwIEAgD59+qBNmzYIDg622EqGsS95eXnYvXs3AGDNmjVYsmQJLl++jPbt22PYsGHo168fAJTYl87L9TIAnJoZV70MANbMMEwJ4Ny5c8X0MgCcmhkb6mX4JXgMwzAMwzAME4hcuXIFCxcuxIIFC3DkyBFUrVrVKVJNSEhAt27dUKZMGYutZBhGDzk5Odi4cSOAO4f3r1+/HteuXUNUVBSeeuopZ+ODD+5nGMZOfPPNN/joo4+wYcMGBAUFOQcLk5KS0KtXL35hAcNYQEFBgfOlSUuXLsXy5cuRmZmJtm3bYsyYMejfvz8AsJDWBly9ehXLli3DokWLnC9xCgoKQvv27REbG4u4uDjcddddFlvJMIxduHjxIjZs2ID169djy5YtuHbtGv76178CAAYOHIihQ4eibt26FltpDj///DPmzJmDr776CpcvXwYANG/eHAkJCUhISMADDzxgsYUMw4hw+vRprFy5EitXrsTevXtRpkwZZ8175MiR6NSpEw8IMgzDMAzjM27cuIHk5GTMnj0bP/zwA2rXru2soyUlJSEqKopjEYaxgOzsbKxZswbAnXr31q1bUapUKfTt2xfPPvssoqKiLLaQYXzDxYsXAQCfffYZ5s+fj//9739o1KgR+vXr59yfHnzwQStNZBhGgWvXrmHt2rXOF09s2rQJBQUFiImJwejRoxEbG4ugoCCLrWQYhmECiezsbMyZMwezZ8/G//73PwB3+qaDBg3C4MGD+ZAahvEhWVlZWL58ORYvXozdu3ejUqVKGDp0KMaNGwfgzovLGcaXXLx4UbFuANx5ITfXDRjGfkh1AwD4+uuvFesGAAK+dpCWloYvvvgCAPDVV18hPT0dVatWRY8ePRAXF+c8tLZKlSpWmskwjE04cuQI1q9fj3Xr1gEADhw4gODgYHTp0gVDhw5F3759S9TLfg8ePAgAmDdvHlasWIGMjAzcddddiI+Pd2ot+cBVhgl88vLysGvXLqSkpCAlJQWnTp0CANSuXRuJiYl46qmncM8991hspXnIZ/OAO4fE8mwewzBquM7mAXDO55WE2TwiQkpKCt59913s27cPDRo0wBNPPAEAePzxx1GvXj2LLWQYe5KdnY2vvvoK8+fPB3AnN/vLX/6CF154AU899RSf7xag3LhxAwAU5wuk2QIAPF/AMBYgzRcsXboUAErsfAHnwwzD6KGk58N6SE1NxdSpUwEAa9euRZkyZZCQkIBhw4ahU6dOAd/PZxhfkp+fj02bNiE5ORkpKSnOfKp///4YP3487r33Xost9D2SZsZVLwPAqZlhvQzDMMAdvQwAp2bGVS8DwGrNjOpL8DhaYhiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYTTjICKrbdCDXxnLMAzDMAzDML7gwIEDmD17NgBg6dKlCAoKwsCBA5GYmIiOHTsiJCTEYgsZhjGS3NxcbNu2DV9++SVWrFiBMmXKAACGDh2KUaNG4Z577rHYQoZhSiI3b97E4sWLAQAzZszA0aNH0aFDB4wYMQJ9+vRBeHi4xRYyDONKXl4etm/fjs8//xwrV65EREQEAGD06NF4+umnUb16dYstLDkUFhYCALZv346FCxdi5cqVICLEx8fj0UcfBQB0794dFStWtNJMhmH8gNu3b+Pbb7/FmjVrAABLlixBZmYmunbtisceewwJCQkoW7asxVYax+3btwEAK1aswJw5c7Br1y40atQITz75pNN/NmvWzEoTGYYxmIsXL2L16tX4/PPPAQCpqalo1qwZnn76aTz22GOoXLmytQYyDMMwDBMQnD59Gp988gkAYO7cubhx4wYGDRqEYcOGoX379ggKCrLYQoZhXPnjjz+wYsUKfPrppzh06BCioqIAAOPGjUO/fv1QqlQpiy1kGO/Yt28fPv74YyxfvhwAUKFCBTz++OMYOHAgWrVqZbF1DMPo5dq1a1i3bh0+//xzbN26FQ0aNMDo0aMBAE8++SSqVq1qsYUMwzCMv/Lbb7/hww8/xLx58+BwOPDkk0/iscceAwDcf//9FlvHMCWP33//HYsXL8asWbNw9uxZAEBCQgJeeuklZ+2CYYxAqhsAwPLly7luwDB+jlLdALij7w60ukF2djaWLVuGhQsXYu/evYiMjAQADBo0CH369EHbtm0RHBxssZUMw/gDGRkZ2LhxI77++mts2rQJ5cqVw4ABAwAAjz32GNq1a2exhcbzxx9/YNGiRZg3bx6OHj0KALjnnnswbNgwPPLII2jatKnFFjIMYzVHjhwBAKxevRrJyclIT09HmzZt8OSTTyIpKQnAnb5zIFFYWKg4mwcAjz76KM/mMQyjCWlWTZrPc53NAxAQ83nSTPPXX3+Nt99+G0ePHkV8fDyeeeYZdO7cmXWyDCPA0aNHMWfOHMyfPx8VK1bE+PHj8fTTTwMAwsLCLLaO8RZpvmDu3LkAwPMFDOMHKM0XjBs3DgACbr6A82GGYYygpOTDeiAibNiwAVOmTMG3337r1Hs988wz6Nu3L8qXL2+xhQwTeFy5cgXLli0DAHz00Uf46aef8PDDD+Pll19Ghw4dLLbOOOR6GQBOzQzrZRiG0YurXgaAUzNjkV7mYwDPKn3AL8FjGIZhGIZhGD+AiLBixQr8+9//xuHDh3HvvfcCAEaNGoUhQ4bwi2YYpoSQkZHhPPT7008/RVpaGtq3b4/XX38d3bt3t9Y4hmFKBDk5OXjvvfcwY8YMXL9+HQAwcOBAPPfcc3jggQcsto5hGK2cPXvWebD3Z599hmvXrmHIkCF48803nQcKMMZz+fJlzJw5E/PmzQNw5+Cjtm3bYtiwYUhKSkKlSpUstpBhGH/n9u3bWL9+PRYuXIgNGzagbNmyGDhwIADg+eef99sXxF29ehXTp0/HrFmzAACZmZmIi4vDqFGjEBMTwwMjDFOCOHLkCGbPno3FixcjPz8fgwYNwhtvvAEAqF+/vsXWMQzDMAzjb6SlpeH111/HypUrUaNGDQDAmDFjMHLkSERERFhsHcMwWtmzZw9mzJgBAFi1ahWqV6+OCRMmYMyYMShdurTF1jGMPlavXo3Jkyfj8OHDaNWqFcaOHQvgTj+2TJkyFlvHMIwRnDhxAjNnznTqv27fvo0hQ4Zg4sSJqFOnjrXGMQzDMH7Bb7/9hldffRXAnYNKIyMj8dxzz2HEiBE8T8AwNiE/P9/5UvP33nsP33//PaKjo/HOO+8E5Ms4GPNwrRsAwNixY7luwDABhFQ3AIDPP/88IOoGhw8fBgC8//77WLFiBYgIffv2xbBhwxATEwMAfJAXwzBecfHiRXz55ZfOmuuPP/6IJk2a4Omnnw6IXPnQoUOYNm0aVq1ahdKlSyMpKQlPPfUUAPDLthmGUYWIsHPnTsybNw8rVqxwxltJSUkYP368386VAHdm8wA45/N4No9hGKNxnc0D4JzP89fZvHXr1mHChAkA7uhm+/fvj9dee815bhXDMN5x4cIFvPfee5g9e7azVv/aa6/hueee47qXH+I6XzBmzBgA4PkChvEzpPmCVatWAUBAzBdwPswwjK8JxHxYDxs2bMArr7yCY8eOoWfPnnj55ZfRsWNHq81imBIFEWH9+vWYMmUKdu/ejTZt2mDq1KkAgOjoaIutE+Pw4cPF9DIAnJoZrhswDOMNFy9eBACnZsZVLwPADM2M6kvwQET+9B/DMAzDMAzDlDi2bdtGrVu3pqCgIEpMTKS9e/dabVIRlixZQi1atKAyZcpQmTJlCHdeXk1Hjx4lIqL//Oc/FBsbS7GxsVSxYkUKCwujrl270p49eyy2/A6Sfa62eWvf+vXrqUmTJhQcHKzp52/fvk23b9+m6dOnU8uWLSksLIyqVatGPXv2pJSUFEpJSaHCwkLVa+m5Xl5eHs2dO5dat25NrVu3pipVqlClSpWoZcuW9NFHH1Fubq7HdVWqVNG8Tm5nkyZNdN0X19+Pnu+P3t9Bu3btnN9fpf/GjRun6e8xi8LCQtq6dSvFxcURAOrcuTPt37+f9u/fb7VpDMMEIIWFhfTFF19QnTp1KDw8nCZNmkQXL16kixcvWm0aEanHI99++y3NmjWLOnfuTJUrV6bKlStTmTJlqHHjxjRo0CD64YcfLLM5MzOTMjMzi9jnapu39onEB/K93nWfV9rrtazTSu/evQkATZ482e3PyeMDrfFlfn4+vf/++9SiRQsqW7YslS1blsLDw6lz5860detWxTWFhYW0Z88eGjNmDDVp0oRKly5N1apVo2rVqlG7du0oOTlZMT5TW9euXTu366zixo0b9Nlnn1HDhg2pfPny9Oabb1JOTg7l5ORYbVrAcObMGRozZgyVLVuWqlatSq+88gq98sordPz4catNIyKiqVOnFol7IyMjLbVH8umSX3fNMc1CKVcUyWU9+Xu1/UhaY9Q+ocXHSr5S7i89+Ur5Oun3pnUdETnzYLVc2J2/1JtjiuwFSvTu3VvznmUlly5dog8++ICaNm1KTZs2paCgIOrTpw99//33VpummVu3btH06dMpIiKCKleuTBMnTqSJEyfSmTNnrDbNyZIlS4rEoq5xqC9jPSPwpu7iDr01GdF1rs+1/JlWeq5nzZrltvYj/69nz57F1v/nP/9RrSUqIff/at8DJbTa2bNnT1U79cbLStjZ1129epVmz55NjRs3ptDQUAoNDaVx48bRpUuXrDaNYRiGYRg/ICsri1588UUqXbo03XPPPfTll186e7V2wN/770TiOYEaeuJwb2zxpl8sWuPwJn7XUxtRq09p6Ze46gSkHoBIH8DXnD59msaPH09ly5alJk2a0Jo1a6w2iWE8Iuk82rdvTw6Hg/r160f79u2z2qwiaO3FSp9b0Yu1g/5LpMbu6p9F+tkieiwj1gUHB5uyTkKqVWntdWitGVrF9evX6fr16zR79mxq2LAhlStXjl577TXKzs622jSGYRjGpuTk5NDEiROpbNmy1KxZM2rWrBl9+eWXlJeXZ7VpHnumentlvsLbeESOWsyhVX9gRj9VS51Drdahty/qaqPIv09PfKqnn2oHdu3aRTExMeRwOGjIkCF09uxZOnv2rNVmMX6Ev9YN5Ho/Ud9gFEZpAUV1J3JdsZK2WNIVu9aRta5TQnRuTH6/vO1DeNKdeOvP9eiepPvrT/puf68b7Nixg7p06eL8Pd5///00Z84cysrKsto0J3L9tNXaaSJSjKmPHj1qqn7ayD6kUm9KSz7gTU/LFT16X6W5Xi29Pr3r8vPzhWqYeXl5qj07d/M+avdFRBdoZz2hnP/85z/03HPPUYUKFUR6mh4AACAASURBVCg8PJxefvllysjIsNosXaSmplJMTAzFxMQQAGrZsiXNnz+frl+/brVpRFRy/acZWg1fPp9KvsdTH0skXpP082atk/5ten2raIzuipV5jlaysrLok08+oU8++YTuvvtuCgoKooSEBDp27JjVpulCPpsnn8+zy2wekf/4RzMxaq6BSDxONDq+9EXP2tt6g1quq+bLjKhvSLVcM+oUVnLp0qUi83n+Npt3/vx5GjBgAAGgpKQkSkpKov/+97+W2qTkm/xFgySCaK/Gm3ld0bjVCJ+tJQ8Xifn8pbaXkZFBr776Kr366qsUGhpKrVq1osOHD1tqE6ONrKws1fkCu+AP/tMV0dlaPWjNybyZ1/X2vD05vsrfRc6xkKOnj+ZN/m4Fp0+f9vv5As6H9cP5sHfrlNCaD7vrYyj5TG/OfRA9J02OyDmxnubG5DGpEXMCVuHv+bBWTp06RX379qW+ffsSAOrXrx8dOXLEarOISNmX+csZNkTisypquPZk3c1tip7zJaFXG6qlRqcnZ9XbK/K1L7OK7777jrp3704Oh4McDgc98cQTfnWWjFwzY3e9jB1iOLWc1w7nDYrMJormw0bn0SI5qMi5gdKsuchMvZazzryJa/WeGeCpDqnXp5uNq17GJM3MR6TyXjmrX2rHL8FjGIZhGIZhGAWOHj1K3bp1o27duhEAio2NtU1RUc6ePXvI4XDQhAkT6Nq1a3Tt2jU6efIk1alTh44ePUqpqalUtmxZSkxMpMTERDp37hxdvnyZRowYQSEhIbR582bLbE9NTS1in6ttIvadPHmSTp48Sb1796b77ruPwsPDNRUEr1+/TtHR0RQdHU333Xcf7dq1i27cuEGnTp2ifv36qRZh5NfSc70hQ4YQAKd45uLFi5SRkUHvvvsuAaC4uDiP66QXH2lZ53pPtNqp9PvR8v0R+R0Q+d9L8OTs2bOHoqOjnYXahIQE+vXXX602i2GYAODgwYN08OBBat26NQUHB9PIkSNt8+I7CXfxSFRUFIWEhNAHH3xA58+fp/Pnz1NOTg59++231Lx5cwoODqZVq1ZZYvdTTz1FTz31VBH7XG0TsU80HpH2efle77rPK+31WtZpYeHChZoEL67xgZb4Mj8/n+Li4qhUqVL00UcfUUZGBmVkZNCvv/5KTzzxBDkcDvrqq6+KrTt+/DgBoG7dutGRI0fo5s2blJ6eTunp6TRw4EACQC+99JLmdQMHDnS7zmpu3bpF7777LoWHh1OdOnWoTp06tHTpUqvN8luuXr1KV69epQkTJlDZsmWpfv369Mknn9j+5YItWrSwtCkt9+mSX5fnmGahliuK5LKe/L3afiStMWKf0OJj5b5S7i9dfaWrv3T1sWrrlJByYSmnVcqFlX7vIjmm6F7g7l7qEQ1ZSUFBARUUFNDq1aspKiqKHA4H9e/f3/Y546JFi6hevXpUrlw5evnllykzM9Nqk4oh+Sx5LOoahxod6xmJaN3FHaI1Gb3rpMMKXJ9r+TOt9FzrEUO/9dZbRdZK90utlrh58+Zi90zu/9W+B0rfAa12vvXWW6p26omXXVm4cKHm+Nxqbt++TTNnzqSZM2dSrVq1qEKFCvTmm2/SrVu3rDaNYRiGYRibUVhYSLNnz6bZs2dTREQEVatWjWbOnGmLg+Ll+HP/XbQ27Q5PPX2lOFyyRTpMQ48tov1i0RqHaPwuUhtRq09p6Ze46gSkHoDePoCZnDp1ipKSksjhcFCXLl3o+PHjthr0ZhiiO4cSJCYmOusYHTp0oP3791ttVjH09GJzcnJM78X6Sv+ldx/RWmN3xdU/6+lni+qxjFqn9eUxouvkaKnNi9YM7cCtW7fovffeoypVqlD16tWdcatdh+IYhmEY80lJSaH69etTeHg4TZs2jW7fvm2bA/e09Ew99cp8HTMaEY9IeIo5POkPRGonojUX0YNVtfRFPf3b9P779ManevqpdmLVqlXUsGFDqlChAlWoUIGmTZtGBQUFVpvF2BSpbiDVDvyxbnD06FFh32AkRmoBRXUncl2xkrZY0hW7aou1rlNCdG7MiD6EVt2JN/5cr+5JqhH7q77bn+oGR48epR49ejjvtbuXetkFO2inXf2p3JeapZ82ug+p1JvSUvv0pqclR4/eV97rk/f5PPX69K6TcgmRGuaQIUNUe3bu5n3c3Rc9ukB/0RPKuXLlCr377rtUvXp1qlixIv3zn/+kf/7zn7bWFp46dYoGDBjgjP86dOhAW7ZssdosVUqS//S1VkNUt6t1nVotw1MfSyRe03MYvhHrRH2raIxOJK5JsQMFBQW0cuVKeuCBByg4OJiGDx/uPNDarijN5tl9Ps/u/tEsjJhrkCMaJ5oZX5o95yL5MrVcV82XGVHfOHLkiCl1CjuhNJtn5/m8BQsWUOXKlalhw4a0adMmq80houK1RKn/4S8aJDW9qjtEejXezOuKxq1GzaJpycNFYj5/rO0dP36c2rdvTyEhIfT3v//dNr1dpijSfEFERIRfzRfYzX+qoXW2VuQ8Hb05mTfzuqLn7cnxdf4uco6FhN4+mmj+bgeU5gvsDOfD+uF82Jh1rujpt7jrYyj5TG/OfRA9J020tqd1bkz+XfNmTsBOqJ1VY9d8WAsFBQU0ZcoUKl++PDVt2pSaNm1qm562O1/mD2fYiM6quEOpJ+tublP0nC9RbaiWGp3WnFVrr8hMX2Y1y5cvp+XLl1OdOnWoSpUqNHfuXKtNUkXSy7hqZuxMixYtbBHDqeW8ZupljJxNFM2HRc+oUkI0BxU5N3DXrl3CM/VazjrzJq7Ve2aApzqkHp9uJZJexlUz4yO9DL8Ej2EYhmEYhmH8gcLCQpoyZQqFhoZSVFQURUVF0a5du6w2S5Vx48YRADpz5kyxzwoKCuiee+6hWrVqOYuFEvn5+XTXXXdR3bp16datW6YPDki2ye1ztU1un1Ykccy///1vysvLo8jISE0FwdGjRzsLtRcuXCjy2fXr1yk0NJRCQ0OLJfHya2m9Xnp6OgGgBx54QPHzmJgYAkAHDhwwZJ2rnZGRkZrsdP3+yHH9/ni6np6X4B08eFDTz9qVlJQUSklJoebNm1OFChVo3rx5VpvEMIyfUlhYSFOnTnUe0te5c2f68ccfrTZLEXfxyFNPPUUjR45UXPfDDz8QAGrSpImvTVREapYq2SfZJmKfSDwi3+eV9nppn3fd67WuO3DggGKMQER09uxZOnv2LFWuXJmGDh3qtmEiGh98/vnnBICeffbZYn9nYWEhNWvWjCpXrkxZWVlFPjt+/DiFhIQovnQnNzeXqlatSqGhocWup7YuNzfX7Tq7cOHCBRo+fDgNHz6cHA4HPf7447YWwtmRlJQU54sEq1atSh988IFtf9+uWN2Ulvt0Jb9uBmq+RhKr6M0VPfl7tf1IWuPtPqHVx8p9pau/lPtKV3+px8e6+lkpF75w4YJqLqzUzBbJMUX3Ajnye+npftqZ1atX0913303lypWjqVOn0tSpU21zqNqlS5coPj6e4uPjKSgoiEaOHGmZL9CC5LOUYlGjnmFf4U3dxR2iNRm96z7//HPV51p6ppWe61mzZjm/Y0qcOHGCTpw4QaGhoXT+/Hnnn8vvl1otsW7dusXumWg+ItmphtxGNTtFf6+Sr9Oyd9iN69ev07/+9S8KCwuj++67z7Y5LMMwDMMw5vPHH39Q7969nWLz8ePH05UrV6w2SxF/7b8TiffK1dDS01eKwyVb/v3vf+u2RbRfLFLjMLIfruXfJ5qfeKMTsAPfffcdtWrVisqXL0/ly5enBQsWWG0SwxAR0cqVK6lq1arUpEkTWr16Na1evdpqk1Sxcy/Wl/ovvfuI1hq7a63cm3sosh8YuU7ry2NE10m49jnU6lWiNUM7kZmZSS+++KIzbu3ZsyddvHjRarMYhmEYi5BedPf888+Tw+GgYcOGFekL2QUtPVMl5LGOr3um3sYjcjzFHJ70ByK1E9Gai1Tn0FPr0NoXVao/icw1uK7TGp/q6afajZs3bzoPTwwNDaUePXpQRkaG1WYxNkNeN5BqB3bFXd2ASNw3GEFBQYHhWkBR3YlcV6ykLZZ0xa7aYq3rXP2ynrquvLarpw+hhh7diag/F6mvSwfU+LO+2+51g1u3btFrr71GpUqVotatW9P27dutNkkzdtBOe/KnvsYXfUjR2qcRdWe9el95r88Vd3pmveukXEJvDVPy62q+XW3exxWtmnLXNSLr7MS1a9forbfeorCwMAoLC6O77rqLvv32W6vNKsasWbMoPDyc7rrrLlqzZo3V5miipPhPX2s1RHW7etaJzlKIxGvSYfhGr1OLtUV9q2iMTiSuSbETBQUFlJycTHXq1KFq1apRtWrVaOnSpVabVQxpPo9n8/Rhx/hSjui8il3iS1/0rL2tN6jlumq+TKufdlffcMWoOoW/IM3myefz7DCbJ9XgRo8eTQ6Hg1588UW6fv261WY58XcNkppe1R0ivRrReV3R2p6Rs2ha8nCRWNFfa3vSC9bCwsKoY8eO3A+yGfL5gvHjx/vtfIHV/tMdvtILiORkovO6RsQxZuTvIudYiPbRRPN3OyGfL1iwYIEt5ws4HxaD82Fj1snRmg+np6e79ZkxMTGKPlM0HxY9J41IvLandW7M9UVcdt2nRZGfVWOnfFgPWVlZFBsbS6Ghoc6XwdjJz7rzZXY/w4ZIfFbFHXp7sqLnfIlqQ7XU6LTkrHp6smb6Mrtw7do1eumllygoKIiGDRtGN2/etNokJ656GX/SzNjhJXh2id+MnE0UzYeNit9Ezht0xZMeXkRnIxore3Nf9J4Z4KkOqdWn2wm5ZsZHehl+CR7DMAzDMAzD2J0bN25Q//79qXTp0vTOO+84m4F2JiEhgQAoFoF27NihmtASEU2aNIkA0PLly2n58uVC109LS6O0tDSaNGkStW/fXvM6yTY1+yZNmlTEPq24CoG0FAQvXLhAwcHBNHr0aBo9erTma0nXk6Plejt37iQANGjQIMXPn332WcV/t+g6Vzu1FqT1fH88Xa8kvQRP4tatWzRhwgQKCgqisWPHUl5entUmMQzjR+Tn59Pw4cMpJCSE3n33XXr33XepsLDQarNUcRePeKJs2bIUFBTkbDKKIBqPaLFNbp9WROIR+T6vtNdL+7zr3qt1nbt4LzY2lmJjY2nkyJGUnJzstmEiGh/Ex8cTANqyZYviupdffpkA0Geffab4uRr3338/AdAtaBVdZwUpKSlUtWpVatOmDYurNZCXl0fjx48nh8PhFOtfunTJarN0YXVTWu7TrRIbeJOLiCLi77XuE1p9rNxXKvlLyVe6+ks9Pla+Tp4L60UkxzRiL5DfS0/30+7k5uY6D1QLDQ2lnj17Wu7nf/75Z2rYsCE1aNCAGjRoQDt37rTUHi1IPkskFhWN9VwRjUN95etEazJ610mCZrXn+uWXX1Z8rrdu3UrTpk2jadOmKf690iHliYmJRf5cfr/UaolK8bIn1PIRyU41lGx0tVMJLb9Xyddp2TvsSnp6OkVHR1NYWBitWbPGbw6EYRiGYRjGN5w+fZruvvtuqlu3Lu3evZt2795ttUlu8df+O5FYbdodWnr6anG4SB+dSKxfLFrjMLIfbsRAmFqO6o1OwC7cvn2bJkyYQBMmTCCHw0H/93//Z+u+FxP4vPPOO+RwOGjkyJG2OmhKDaN6saJI+5LS3uRL/ZccvTVodzV211q5J9z1s0X3A6PWaX15jOg6Cdc+h1q9SrRmaEf27dtH+/bto0aNGlHDhg3p+PHjVpvEMAzDmMytW7eoT58+1KdPHypfvjwtXrzYapNU8bZnGhQU5POeqbfxiBxPMQeRe/2BSO1EtOYicrCq1r6oUv1JtB4jEp+K9lPtxsGDB6lBgwZ099130++//261OYxNcK0b2L124KluIOobtOKupr1jxw7D9TGiuhNPSLpivdpiuR5Zvk5PXVf+bzdbd2KlPkYJf9F3261u8Pvvv9Pvv/9OUVFRVKFCBfroo4/87qBDO2invanDGoEZfUhXROvHerXT7nyRdLif3l6f6Dopl9Bbw5T8uppvV5v3cUWrptx1jcg6O3Lq1Ck6deoU9erVi4KDg+mdd96xRc/wxo0bNHjwYAoJCaFXX33VVgc2eqKk+E9f+0hR3a6edaK1DJF4bevWrT5ZpxZri/pWT7iL0X2d55hJdnY2jRo1ikaNGkUOh4PGjRtn+XkE0myefD6PZ/P04W/xpVGYFV/6omdtdr1Bq58WvZ43dQp/QnrxljSfZ/VsXn5+PiUlJVFSUhKVL1+eVqxYYZktavi7BklkbkykVyM6ryvqe42sCWqZu/VVj8fOtb0ff/yRGjRoQPfddx9dvnyZLl++bLVJJR7X+QK7Y2f/6Q2iegGRnEzU9xgRx5iRv3tC6Xsg2kcTzd/thjRf4HA4bDNfwPmw93A+bF0+vHPnTrc+U/INSj5FJB8WPSeNSGwf8eZsHHcYsU9bgZQL2yUf1kNGRga1bNmS6tSpQ6mpqVabo4g3vszqM2yIjJ95NPP581Ybqsb999+vKWfV05O1ky8zmw0bNlDlypWpa9euttDVKell/EkzY4eX4NklfjN6NtEdovmwljNz9Wg8RH2eFTP17nC39xl9xrxWn25HlPQyBsWhqi/BCwLDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDMAzDaCTEagMYhmEYhmEYhgHy8vLw6KOPIjU1FZs2bULnzp2tNkkTBQUFqp998803AIAHH3xQ8XPpz7dv3w4AePTRRzVd8/Lly1i6dCkWLVqE/fv3AwBKlSqFAQMGaLZbsk3NPvmfbd++XbNtZcuW1WyDREpKCgoKChAdHa17rcj1mjVrhlKlSuGXX35R/PyXX36Bw+HAvffea8g6UTv1fH9cfz8i1ws0QkNDMWXKFLRp0wZDhw5FVlYWkpOTAQBBQUEWW8cwjN0ZNWoUvvzyS6xevRq9evWy2hyPuItH3JGTk4ObN2/ivvvug8Ph0LXWiHhEi20AdNvny/gAQJG93pv4AADmz5+Pn376CQCwZMkSrFmzxq2dovHBxYsXAQDVq1dXXFerVi0AwJ49ezB8+HC3NkhcuXIFaWlpeOCBB1CxYkXNawDoXmclvXv3xt69e9GzZ0/07NkTu3btQrly5aw2y5YUFBRg2LBhWLVqFebNm4cnnnjCapP8ElGfbiTe5CJ6ycnJAQDd+5HWfULys1p8rFZfCRT1l3p8LADnOrNzYW/3Aj330h8oXbo03njjDWes169fP7Rr1w47duwo8rs2i7S0NHTu3BmNGjXC6tWrAaj/ruyEt3EooD/Wk+JQAM5YVCQO9ZWvE63J6F0nPdOA8ndFzWd169YN3bp1U/w7r127hoULFwIA1q5dW+QzrfcL0H7P3OUjWux0tVGPnWo2yn0dAL/1d40aNcKOHTvw/PPPIyEhAQDw1VdfoX///hZbxjAMwzCM2WRkZKBLly4oW7YsUlNTUbt2batN8oi/9t8B43u03vT0zewXi9Y47NQPd5efeNsHsAOlSpXClClTAADNmzfHiBEjEBwcjDfffNNiy5iSyNtvv42JEydixowZeOaZZ6w2RxN26MWWKlUKAIrtTXbSf4nWyt3h6R6aVYuzah0g1ucA9NUM7UibNm0AAPv370d8fDw6deqE7777Do0aNbLYMoZhGMYMiAhDhgzBt99+CwDYunUr2rZta7FV6hgRLwIQ6pkuWrQIADz2TI3Moz3FHIB7/YGILWbWObypP5kZL4r2U+3Ggw8+iL1796J79+6IiYnBvn37UKlSJavNYiwkEOsGvvBhWmvanuoG8j/XWjcQ1Z24Q65HBqBLk6ymRxat65qtO7FKH+OKv+m77VQ3+O2335wzsKGhoUhNTUXz5s1Nt8Pf8TftNKC9D6mGaP1Yyzo9NcWUlBQA0N3rE10nWsOU/DoARd+uNu8jMX/+fADQrYPWO+9jd+rVqwcAWLduHT799FM888wzOHnyJObMmWPJvK2kI46Li8MPP/yADRs2ICYmxnQ7/Bmz/KcvfaSoblfvOtFZCrV47dq1awCgGK9JP2/0OrVY2xf9IU8xeiCdYRAeHo5Zs2YBADp37ownn3wSv//+O5YuXYqQEPOPJZTP5gHg+TxB/C2+9Da2BOwTX5o95+IOd77MF/VVX9Qp7E7p0qUBwDmfZ/Vs3t///nfnd3T9+vW2PLOqJGqQRBDVIIn6XiNrglriWaN9kD/U9u69917s2rULnTp1wiOPPAIA2LFjh/P7yJhLoM0XuMMM/ymKN3oBM/vLRp2n4+v8XQ1351iI9tFE83e7Ic0XSD0Nq+cLOB82Bs6HrcuHmzVrBgCqPlP6M1efKZoPi56TBph/Tqwa3uzTViOdVQPAFvmwVnJzcxEXF4esrCzs3r0bDRo0sNokRaw6wwZAsfhPJPYzun5u9PPnLj7yVhuqhFQzA+A2Z9WbW9vFl1nBww8/jB07diAmJgYDBw50nlFlRb9X0sywXsY7rI7hzK4LiubDeuI3QJvGQzQHtWKmXg0zYyqtPt2u1KtXr5heBoBPNTP8EjyGYRiGYRiGsQHPPfcc9u7dix07dqBly5ZWm+OR1atXo2/fvs7/Ly+ERUVFITU11dkcqFOnjuLfERkZCQA4ceKE22vduHHDec3Fixdjy5YtyM/PR5s2bfDJJ58AABITE1G1alXN9ssbF0r2SbZpsc9bDh8+DACoXLkyAOCll17CsmXLcPHiRdSqVQvx8fGYNGkSAKBKlSpeX69GjRqYNm0aXnzxRbz22msAgBdeeAHBwcGYO3cutm3bhokTJ6Jp06Zu173wwgsA4HGdKEZ9f/SSnJyM4cOHIy0tDSEhIc7i0OjRozFo0CBDr2UGCQkJCA8PR1xcHO6++24AwOuvv26xVQzD2Jk5c+ZgwYIFfvECPC3xiDu+/vprAMD//d//abrejRs3DI1HtNimxz5vkO/zAJx7ves+D6DIXq91nVJ8cObMGbz00ktYsWIFAKBChQoe7RSNDyIiIgAUbTTLkRrxv/32m9vrX716FUePHgUAvPrqq6hZsya++OILj3ZL61599VUA0LzOLtx1113Ytm0b2rZti9GjRztFQkxRRo0ahXXr1mHr1q1+3+xX4/Lly5g8eTJSUlJw7tw5VKxYEe3btwcATJw4Effff7/zZ/Pz853P99y5c3H06FFkZ2ejcePGGD58OJ599tkijS+tPj0kJER347pGjRq4cOGC5p83MxcR9fee1p05cwYAnH5Wi4/V6iuBov5S1MfKc+GXXnoJABRzYSPyYG/sBIruWVrupT8h1aD27NmDzp07IzY2FqmpqQgNDTXNhmvXrqF79+5o3LgxtmzZ4hcvW3X1WcCffktPHApoe/aV4lAAzlhUJA61qu5iFNIzDSg/12o+yx0LFixwHnLSoUOHIp9pvV+A9numNx9xtdPVRj12KtkYaL4uJCQEH3/8sVOkNGzYMNx1113OWh/DMAzDMIEPEWHgwIEoLCzEtm3bbP+ibX/vv/sCq3r6Ur8YQJGesVq/WLTGYae8zF1+oqQTkHoAAAzXCfiaxx9/HAUFBRgxYgQefPBB9O7d22qTmBLE2rVr8frrr+OTTz7B6NGjrTbHI2b2Yj3tTYmJiQBQbG+yk/7LqH6kHNH6UaCgt17li5qh1URERGDz5s3o1KkTevfujcOHD5tav2cYhmGs4YMPPkBKSgq2bt0KALZ9AZ5RPVNvtXsAhHumIniKOQCx2M9XJCcnA0AxbbxancNO9QpR3PVT7Ujt2rWxZcsWREVFYcSIEUX0BEzJoqTVDfQiouH2VDcAjPVr7nQnSsi1xXp0xVrWic6N2Ul34it9jBx/13dbXTe4cuUKOnXqhBo1agAANm/eHJAvc3XVTgNw6qddtdPAn/ppV+00gGL6aT0xtV79tPR70aqfNjsOFK19elqn1xdJfT7gz16fvM8HQLHXJ7pOtIYp+XUAij07tXkf+T0BoMtHi8z7+BMjR45EjRo1MGDAANSuXduSw62lQ6yPHDmCHTt2BJy2MZD8p698pGj8JLLO6D7WggULAEB3/u3NOrVY28j+kGiMHigMGDAANWrUQGxsLP7+979j+vTpptsgn80DEJDzeXr8ozQ3ouQfJW2TiH+UXnCo1z/adTYPsE98afacixLe+jK99VVf1in8iZYtW1o6m7dt2za8//77zp6A3V6Ap1ZLjIqKAgDDNUjS4ed20SDp7dWIxm6ivtdfaoKu+Fttr169eli7dq3ze/+vf/3LeZYYYw5EBAABMV9gJ/8pip20ke58jzfn7dkhf3c3y+6LPpre2NUOPP744wBg+XxBScyHpRdGcD7sHXbJh6W6qtrs0bZt2wBAV+7nzqeInpMmii/OxrHTXugNVufDenjttddw/Phx7N+/35YvwLP6DBsAxeI/q2dLgeLPn/TsARB6/tzdJyO1oa41MwCKOavI+WCimH3Oly9p0aIF1qxZg06dOuH9998HAOe/yQyuXLkCAE7NTCDrZQAonjeopd8LQOi8Qdec19fnDZo9m2hG/AZo03gYdW7gsmXLnH+P2TP1Wu6nt2fMa/Xp/oJcLwPAt5oZIvKn/xiGYRiGYRgmoNi7dy/t3buXHA4HLV261GpzdBMfH08A6ObNm8U+i4mJIQCUmpqquDYtLY0AUMuWLally5ZFPsvPz6dNmzbRkCFDKCwsjMLCwggANWnShCZNmkQnT570ym7JNjX70tLSitgnSmRkJAUHB7v9Geke1qxZk2rWrEmDBw+m9PR0ysrKooULF1L58uWpadOm1LRpU7py5YrX15NYtmwZ1alTh+rUqeO8FxERETRv3jxN66Q1WtfJwBKVugAAIABJREFUbdRip57vj6frab0n7dq1o6FDh9KhQ4fo+vXr9Msvv9DQoUNp6NChBICeffZZTX+PHfnggw+odOnSVLp0aTpx4oTV5jAMY1MyMzOpcuXK9PLLL1ttii7cxSNqXLhwgWrUqEHDhw9X/Rl5PCLFJEbGI1psc2efVvTGB657vdb4QO+6Hj160JgxY4r8WXJyMgGgyZMnK64RjQ8++ugjt3t5q1atCAA9+OCDqvZOnjy5SPzTqVMn+vHHH1V/Xmldp06dNK+zIykpKeRwOGj37t1Wm2I71q9fTw6Hg9asWWO1KV7TokULioyMLPJn586do3PnzlH9+vWpRo0atH79erp27RodO3aMOnbsSB07dqQyZcrQd99951yzdu1a53f/7bffpszMTLp8+TLNmDGDgoKCaPz48YrXl/t0PX7dSIzKRTwh+XtP+5HaOnf7RI8ePYr5WU8+Vu4rlfyl5Ctd/aUeHytfJ8+FBw8erJoLa8mDtex13uwFSvfS0/30R3799VcKDw+nV155xdTrvvjiixQREUGXLl0y9bpGIH2P9cSiWp7h/Pz8YrUx1zjUqNqYL32dnjhU77qPPvrI7XPdqlUrTTGeRGFhITVt2pRmzpxJM2fOLPa5/H6p1RKl74KWe6YlH/FkpxLe/F5F4nN/oKCggAoKCig6OpqioqKsNodhGIZhGBNZtmwZBQUF0f79+602RRf+2n9XQjQnkNDS09cah2u1Rd4vdu0Zq+UfojUOI/vhovf6woULmvMTpR6AHp2A3Rg6dCjVq1ePcnNzrTaFKQHk5uZSbm4u1a1bl4YOHWq1OboxoxcrujfZSf+ltcbuWitXQ2/9SHQ/8GZdcHCwT9ep9TnU6lVG1wztxKlTpygsLIzefvttq01hGIZhfExGRgaFh4fTpEmTrDZFM972TNWQ4kV3PVMRROMYCU8xB5E2LZrcFr3orXMoaePVYletfVGl+pOona5rvKkpeeqn2pmtW7cSANqxYwft2LHDanMYkylJdQOtz7gRGu6YmBjTtICedCeuuGqLteqK9a7TOzdmB91JYWGhT/UxEoGk77aqbvDYY49RZGQkZWRkUEZGhqnXNhol7TQRKWqn5fppV+000Z/6aVfttDv9dHx8vFAd1ki86UPqRUQ7p7WnpVfvK7/3SnO9ar0+0XVSLuFNDVN0bkePplzpXmpd52/MmjWLgoOD6eDBg3Tw4EHTrrtixQpyOBzkcDho27Ztpl3XaEqK//SVjxR9zkTWGVXLIPoz9tWbf3u7Ti3WNsK3EonH6ETe62PsRnJyMgUFBdHevXtNvW6gz+YR6fePa9euVfWPQUFBlvtHd5g5m2d2fGlmz9qseoPS9bRcy9d1Cn/Eqtm8Vq1aUXx8vKnXFMEsDZL0/TJag6RnbkxCpFcjOq8r6nuNrAmKzt1qqQnK8efa3pQpU2jKlClUvnx5unz5stXmlCik81ACbb5ADbP8pwiis7VqmNFfFjlvz+r83dM5Fkb30fTGrnbEqvmCkpoPHzt2jPNhL7BbPixHrY+hJ/fT6lNEz0mTo/ecWE9zY57OxyEyfi+0A1blw1r49ddf6ddff6XSpUvTp59+arU5HhHxZUacYeOL+M9bLSBR8edPevb0nk1F5Dk+MkobqlQzU8tZRc4HU8IKX2YH/vGPf1DFihWpYsWKlJmZadp1H3vssSKaGX+mRYsWqucN1q9fX/W8QSl+UzpvUIrfRM4btAKzZhOJxGMAkfiNyHc5qJJvNnOmnkh7XOvtGfN6fLq/MWvWrCKaGS/4iFTeK2f1S+34JXgMwzAMwzBMiWbQoEE0aNAgatu2rdWmCOHNIXwnTpwgAE6xnpzatWs7mwljx46lsWPH0r59+wyz21Oh4cSJE0XsE0VLQbBHjx4EgBo2bEgNGzakvLy8Ip//85//dNr6xhtveH29wsJCGjFiBJUqVYqmT59O06dPpwsXLtDly5dpzpw5VLZsWUpMTCxmh+s6Ken3tE7JRiNegqf192OUePxvf/ubW3vsTkFBAf3lL3+hv/zlL/Tiiy9abQ7DMDZl9uzZVK5cOcrOzrbaFF3obWBkZGTQ/fffT4mJiZSfn6/6c/J4RIpJjIxHtNjmzj6t6I0P5Hu96z7vutdrXZeXl1dk3aeffkqNGjWi69evF7HD25fgqcUHN2/epFatWlGpUqXo448/dg7bnzp1isaOHUs1a9YkANS+fXu39yk3N5eOHz9Ox48fp1GjRlFwcDC99dZbbtfI140aNUrXOjvStm1bGjJkiNVm2I6OHTv6xZCIFpSa0lLjHQAtXry4yGfnz5+n8+fPU2hoaJFnb+3atc7hAVeGDBlCpUqVouzs7GJ7jj+8BM+IXFHu7z3tR2rr1PYJyce6+llPPlbuK+X+0tVXuvpLVx+rtq59+/ZF1slzYdd9gujPXFhLHqxlrxPdC5T2rEB9CR4R0bRp0yg8PJyuXbtmyvVycnKoYsWKNH36dFOuZzR6D3TUGuvVrl27WG3M6DjUDF/ny0MbpX3C9bmWP9NaYzyiO0MCFSpUcA6Su+LpsEfpfmm5Z1rzEU92KiH6exWNz/2JAwcO+HVtj2EYhmEY/XTt2pX69u1rtRm68df+uxK+fgmenjjciJ6xvF8st0e0xmFkP1zk3yflJp7yEyWdgNQD0KMTsBunTp2ioKCggBgWZ+zP8uXLafny5RQcHExnzpyx2hzd6OnFSnVXvb1Y0b3JTvovrTV211q5EiL1o0B6Cd6nn36qWpt3d4CC0TVDu/Hqq69SvXr1qKCgwGpTGIZhGB8yc+ZMCgsLK9azsTPe9kzVkOJFo3um3r4Ez1PMoUeL5uuX4LlDqnO4xtJa+6JK9Scj7PT24BtP/VS70759e+d8EVOyKCl1AyLtvsEIDbeWwzuNqBsQedadKCHXFku6Yr2aZDU9sp65MXlt1w66k/Xr1/tMH+NKIOm75XUDM2oHZ86coZCQkGKaYn9F7VBWNe00ESlqp4n+1E8rIddPy/GHQ1n1xIFq6Kkfu67T0tMS0ftKhwrKe32uKPX6RNdJuYTeGqbk19V6dmrzPvJ7okdTXhL0hHKioqIoKSmJkpKSTLtmu3btqH///tS/f3/TrukLSor/9IWPFH3ORNep1TL0ztUR/Rn76s2/vV2nFmuL+lYlRGP0QHsJHhFRdHQ09evXz9RrBvpsHpF+/ygd+q82m2e1f3SHmbN5vogv7dKzNrPe4Ho9rRhdpwgE5LN5ZtSqjx07RgBMf3mpCGZpkPbt2+cTDZJWvapW1Ho1ovO6or7XyJqg6NytlpqgK/5a28vJyaGcnBwqX748zZ4922pzShRdu3YNyPkCV8z2n3rxZrZWDV/2l0XP27M6f9dyjoXRfTSR2NVuWDVfwPkw58N6sWM+LL3U2F0fQ0/u58mniJ6TpoTec2I9zY15Oh/HF3uhXTA7H9bK5MmTafLkyVSrVi2/uOd6fZmdzrBxxYiX4In0ZJXQEh8ZqQ11rZkp5ayi54MpYbYvswtXr16lcuXKUbly5Wju3LmmXFPSywSKZkbtJXhS/KYUw8njN6XzBpVQi9+I7P8SPKNmE0VjAC3rjMxBtZzHJ+qbjYqVReNhV7SeMa/Fp/szkmbGC1RfghcEhmEYhmEYhmEsY/fu3di9ezcSEhKsNsVwKlWqBADIyclR/Fz680qVKjl/1pXSpUujTJkyzv+0cuzYMTgcjmL/PfPMM0VsU7MvJyeniH2+pHz58gCAbt26oVu3bggJCSnyee/evZ3/e/PmzV5fLzk5GZ999hlGjRqFF154AS+88AJq1KiBiIgIjBw5Eq+88gqWLl2Kjz/+2O26GjVqaFonip7vjxn069cPALB27VpTrmc0QUFBiI+PR3x8PHbv3m21OQzD2JR9+/ahY8eOCA8Pt9oUnyDt7z169EDz5s2xePFiBAcHe1xXunTpIjGJVjzFI0r2udqmxT4jkO/z8r3edZ933eu1rvv444+d606fPo0JEyZg/vz5zjhIK6LxQZkyZbBjxw6MGzcO06ZNQ61atVCrVi1ERUWBiPD1118DAGrWrOn2+qVLl0azZs3QrFkzzJo1C3369MHEiROxbds2TetmzZqla50diYuLw3fffWe1GbYiLy8Pe/fuxaBBg6w2xWesXr0aq1evRlBQEOLi4op8VrNmTdSsWRP33HMPDh06hDNnzgC4813ZsWMHduzYUezva9GiBfLy8vDTTz/hp59+MuXfIHHs2DFF/yz3zb7ORVz9vdb9SMs+Ifexev2s3FfK/aWrrwSK+ktXH6u2TvquSMhz4ZCQENVc2Ig8WMlOT3vB6dOnvdqz/JVBgwbh6tWrOHTokCnX+/HHH5GdnR2QdTFXRGM9kTgUUI5Fn3nmmWK1MbvUXfQi3RPX51r+TGuN8QBgxowZGDZsGMLCwhAWFlbsc/n9Uqsluv6sEiL5iJqdSoj8XkuKr2vdujXq1q3LdTGGYRiGKUHs27evSJ81ELBz/90XaOnpK/2sr5D3i+U9Y9Eah5V5mTw38ZSfKOkEpB6AL3QCZlGvXj20aNGC692MKezduxd79+7Fgw8+iMjISKvN8RmSbxHpxYrsTYC99F9aa+yutXIle72pH/k7Uq1KpF5ldM3QbsTHxzt7FwzDMEzgkpqaig4dOgRsz0Y01hHtmfoCTzGHHi2alUh1DqCoNl5rX9Rd/clKPPVT7U5sbCz27duHffv2WW0KYzIloW4giqiGGyjqq3xdh/WkO1FCri2WdMV6NclyPbJ8nZ65MXlt1w66kxkzZvhEH6NEIOm75XUDM2oHe/bsQVBQUJGYIhBR004DUNROA3/qp5WQ66fNRuusrTd9SHeI1o+19LS80fuWL1++WK/PFaVen+g6KZfQW8OU/Lpaz05p3sf1nmi9LyVFTyhn0KBB+Oabb/DNN9+Ycr3bt28jNTUVAwYMwIABA0y5ptkEkv8EjPeRos+ZN8+nWi1D71wd8Gfsqzf/9nadWqwt6luVEI3RA5EBAwZg586dpl2vJMzmAfr9Y1xcnKp/bNGiRcDElyLo0T7pXWennrWZ9QbX62nF6DpFICCfzTNjPu/7779HuXLl0KZNG59fyyzsqkFS+llvUOvViM7rivpef6kJuuKvtb1y5cqhXLlyeOihh3Dw4EGrzSlRSD24QJsvkGO2/zTiPB2r8eR7RM7bszp/13qOhdF9NJHY1W5YMV/A+XBg5MNmnt9g13w4OTnZ7ezRK6+8oiv38+RTRM9JE0XP3Jja+TglYU7A7HxYKwcOHMCBAwfQtWvXgLvndjvDxheI9GRd0RofGakNda2Zueas3pwPJooRvsxuVKhQAQ899BAeeugh7N+/35RrSnqZQNfMSPGb2nmDUvymdN6gEnaL38w+m140BtCyzugcVMvZrKK+2YhYWTQeVkLrGfOefLq/I2lmfEHxbwfDMAzDMAzDMKaRmZkJAIiIiLDYEuNp1qwZABQRoss5e/YsAKBp06bFPjt9+jS2bt2KRYsWYfbs2QCA9957D82bN8eQIUMwaNAg1K9fX/Xaf/3rX0FEHm1Ts0+yTc0+I2nQoAEAoGrVqoqfV69e3fm/L1++7PX1Nm3aBOBOwUCJrl274h//+Ac2btyI559/3ut1onjz/fEFtWrVAgBcunTJlOv5gmrVqgEA/vjjD4stYRjGrmRlZaFKlSpWm+ET8vPz0b9/fwBAZGQkFi5c6LFoLY9HAGD27NmGxiNK9mm1zWi07vMAiuz1euIDAHj++eexdu1aZGdno1OnTqr2vPHGG3jjjTec/z8tLQ2NGzf2Kj6oUKECpk6diqlTpxb7TGqUtGzZUtUmJXr37o1Vq1Zh3bp1qvfAyHV2ICIiAllZWVabYSuuXLmC/Pz8InF7IJGbm4vs7Gzn/69YsaLbn09LS0OdOnWQnZ2N9957DwCwatUqnDlzBleuXCnyszdu3NBtT0hICAoKCnStqVGjBi5cuADgjm8GoClf9EUuIurvta7zxscCf/pKAMX8pbyp7OovRXys1lzYiDxYxE6pOa3nfsrvpb9SrVo1BAUFISMjw5TrSXUxte9BoKD32ZcOIpLXxlzjUACG1MbsUncRRe25duezXDlx4gS2bNmC6dOnq/6M1vsFKN+z/Px8APAq5jfSTrmNeveOtLQ0APBLfxcREcF1MYZhGIYpAeTm5gK4U3cItHq3nfvvvsBOPX1AvV8sWuOwKi9zzVEBuM1PzNYJmEnVqlWdtQmG8SUloQYm9y0AdPdiRfYmwH57hZYau1qtSqSfHYhItSoAwrV5I2qGdkTSl/7xxx/O+INhGIYJPK5cuRJw9QxArFcmxYsAVHumnuJFX+ILLZqZSHUOoGitw1/7yCdOnAAAj/1Uu1OlSpVi+iqmZJCZmRnQdQMRvNVwA57rBoAxfk2LnsMTkq4YgC5tsVyPDPxZxxXRdwPW606kewnAcH2MFvxd3w38OS/m69pBRkYGKlasiNKlS/v0OlYi109r1U4DcOqn1bTTgDn66Ro1agBAEf20HbTTgLb6ses6dz0tb/S+8mdFT69PdB1wJ5cAoKuGKfl1QNm3K837iGrKN2/e7JUW3R+pXr26s5dTWFiIoKAgn17vypUrKCgocM76BhqB5j8B432kaPyk9/nU2j+R/m7AGM21FetEfKsnRGP0QKF69erIysoyxS8CgT+bB4j5R+nnjfaP0oGkev2j3DfaJb7Uon3Su84uPWuz6w1GXs+bOoW/6c+UMHs2Lzs7GxUrVjTFX5uBERokaa7Z7hoktV4NIBa7ifpes2qCanmj1pqgJ/yttle5cuUis/uMb8nNzXXGTIHYjwes8Z9a5wuMmK31BVriH5E4xlsf6U3+rmeW3cg+mhGxpF0we76A8+GicD7sHjvnw1r6GAA05X5G+mcAhuSa3p6NU1LmBMzOh7Ui+Y9A098bfYYNAFvOlxr1/Ol59ozWhkovg5LnrN6eDyaCFed8mUHlypUBwLQzESW9DICA1cx4e96gFL8BsM15g1adTS+aD+tZZ9R5g2acG+htrCwaD6shcsa8kk/3dyTNjC/6woHRtWAYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmEYhmFMgV+CxzAMwzAMwzAW0qBBAzRo0ADHjx+32hTD6dy5MwDg0KFDip9Lf961a1d07dq1yGfBwcHo2bMnFi1ahEuXLuHSpUtYtGgR6tevj4kTJ6Jhw4Zo37495syZgzlz5iAzM1PINjX7Dh06VMQ+XxIdHQ0AOH/+PM6fP1/sc/lb4WvUqOH19XJycjT93PXr1w1ZJ4qe748ZnDt3DsCdt9T7Kz///DN+/vlnNGzY0GpTGIaxKXXr1kVaWprVZviEp59+Grm5ucjNzcWyZcsQEhLi/Kxx48ZITU1FampqkTXyeESKSYyMR5Tsc7VNbp8v0brPA0X3ej3xgbRu7NixICLF/5KTkwEAkydPLvLnjRs3BuC7+GDPnj0AgISEBF3rQkNDAUD37150nR345ZdfUK9ePavNsBUREREIDw/H0aNHrTbFJ4SGhqJSpUqoVKkSQkJCkJeXp/oME5HzOe3duzcmT56MyZMnY8SIEThx4gQKCwtBRHj//fcBwLlGD/n5+W6vr/TfhQsXdF3Dl7mIqL/Xus4bH+sJyVcC+vyl3MfK18lzYSWkXNiIPFgLrnvB2LFjVe9ncnKy4v3Uei/tzLFjx1BYWIhGjRqZcr0GDRoAQEDWxeToffaDg4OL1cZc41B5LCoSU9it7mI0e/bs0RzjzZgxAx06dEDz5s1Vf0Z+v9RqiRJK9+zpp59W/R6o5SPe2qmE0u9V797RuHFjv/R3ubm5SE9P57oYwzAMw5QAQkNDERoaiho1auDEiRNWm2Modu6/+wItPX0JM3IXeb9Y3jMWrXFYlZe55iZK+Ykcs3UCZkFEOHHiBOrXr2+1KUwJoH79+qhfvz7++9//Wm2Kz5D7FrXahyt69qbMzEzFvclO+i9PqNXKJUT62YGIlloVIFab11MztCPHjx+Hw+HgvYthGCbAqVu3Lk6ePGm1GYbjqVem1jPt2bOn255p+/btveqZ+gp/iDmkOgdQVBuvtS+qVH+ykhkzZmjqp9qdtLQ01KtXj/V5JZBArxuIYISGu3PnzqbUYY3wP5KuGNCnLZbrkeXrRPTdgPW6E+le+kIfowV/1nfL6wZm1A4aNWqEjIwM3fpcf0LST+vRTgN/6qddtdOu+mm96NVPX7hwQdfvx5s+pCdE6seu69z1tLzR+0ZHRwv1+kTXeUKthiky7yOqKfelFt2u/Pjjj05dblCQ74/gqlatGsLCwvDTTz/hp59+8vn1zCYQ/afRPlI0fhJZpxURzbWe+NeIdaKI9odEY/RA4dixY2jQoIEpfhEI/Nk8QMw/9u7dW9U/vv/++8L+MT8/X8g/6sHM2TxfxJd26FmbXW8w8nre1CkCAflsnhnzebVr18bly5cD5v4ZoUGSaopGa5AkjOqPqPVqPKGmQRL1vUbWBEXmbrXWBD3hb7W99PR0REZGWm1GiUGaLQjE+QIJq/ynVtv06gXMQEv8IxLHWJm/65llN7KPFgi9esCa+QLOhzkf1oOd8+GcnBzDcj8j/bOW62lBT09IqS+kZU4gEDA7H9ZKZGQkIiMjkZ6ebrUphmL0GTZK8Z8d8LYna/S5jqL9Btec1YqerLe+zK6cPHkSJ0+eRN26dU25nqSXCWTNjDx+EzlvUIrf1M4b1Iuvzxv05WyiaD6s54wqM84bdPV5Vs3Ui8bDaoicMa/k0/0dSTPji74wvwSPYRiGYRiGYSykb9++6Nu3LxYtWqSrqO4PdOzYEc2bN8fy5ctx69Yt3Lp1y/lZQUEBlixZgrp166JXr17o1auX6t9Trlw5lCtXDoMHD8aGDRtw9uxZfPjhh7h9+zZGjRqFUaNGoVatWhgyZIhu2+T2udomt8+XxMbGIjIyEps2bcKmTZuK2AIAa9eudf7vRx55xOvrRUVFAQC2b9+u+Pk333wDAGjTpo0h60Rx/f7Icf3+eMvcuXMxd+5ctGrVqthnUqFm2bJlAO4U1/yRS5cuYdWqVVi1apWtD1VgGMZaevfujYMHD+LYsWNWm2IokyZNwk8//YQ1a9ZgzZo1RYT7ejA6HlGyT9Q2b5Hv80p7vbTPA0X3eq3r2rRpY0iMIBofZGRkICgoqIggXOLq1auYO3cukpKS0LRp0yKfjR8/3u3vdOPGjQCA1q1bG7LO7ty8eRNLly7123jIVzgcDgwYMACffPIJcnNzrTbHJ0jDEPn5+di7d6/iz7z77ruoV68e8vPzUVBQgL1796JmzZqoWbMmnnvuOVSrVg0OhwPAne+SnVHzNQUFBV7lIiL+ftKkSabtE3Jf6eov5b7S1V/q8bHydfJc2LVmAPyZCxuRB+u1syQzffp0NGvWDPfff78p12vevDmaNWuGTz/91JTrmY1Rz7BSHCqPRUXiUDPrLr5AEoUpPdfSM63lub569Sq++OILjB071u315PdLrZZYt25dxXsmfQdEvwdXr14VstMff6++5KuvvsKNGzc4lmUYhmGYEkRcXBy++OILFBQUWG2KYdi5/+4LtPT01eJwEdT6xQCK9YvlcaVojcOK+F0kRzVbJ2AW27dvx+nTpzlHYEwhPj4e8fHxSE9Px86dO602x3BcfYtIDczT3lSrVi3FvclO+i+tNXbXWjlgXD+7pGNUzdCuzJs3D9HR0YiIiLDaFIZhGMaHxMbGYv/+/QF18J63vTIJtXjRm56pCJ5iDrvoD7TWOYCi2nitfVFP9SczkXqpWvqpdkY6mMFO95Yxj0CuGxiFSE27Y8eOPtMCSmjVc2jVFQNFtcV69MjydXrquvLarp4+hNHI76Uv9DHjx48PWH03ULRuYEbtoEuXLoiIiHAeUhWo6NVOy/XTrtppwN76aaP6kK6I1o/N0k7HxsYW6/W5otTrE10n5RJ6a5iSXweUfbvavA/jmStXrmD+/PlOjbwZOBwOPProo5g1axZmzZqF/Px8U65rJoHmP33lI83EiFkKrbGv2etEfatojF4SuH79OhYsWIABAwaYds2SMJsH6PePe/fuVfWPN2/etNw/usNXuijRONHM2Twz51wkX6bmz7T6MqPrG97UKQIB+WyeGfN5Xbp0gcPhwKpVq3x+LV9jlAZp8ODBPtEg6dWrivZqROd1RWt7Vs6iaa0JBlJtLz09Henp6Th8+DC6d+9utTkliri4uICcLwCs9Z9abbP6PB05euZ1zY5jvMnf9ca8RvXRRPN+O2LFfAHnw3fgfNgzds+Ho6Ki3PrMb775RpPPFPHPZvRN9MyNuc6OlaQ5AbPzYa08/PDDePjhh7F9+3bnS3n8GV+dYaMU/1k9WwoUf/5ccXc2ld77JKoN1VKjs0PO6o0vsyvHjx/HDz/8gB9++AEPP/ywKdeU9DKBrpmR4je1GE6K35TOG5TiN385b9BXs4mi+bCZebRoDirqm72JlfX6dNEz5j3VIe3i043gypUrRTQzPkHvGywt/o9hGIZhGIZhAooLFy7QhQsXqEqVKjR69GirzdFNfHw8AaCbN28qfr5v3z4qU6YMJSUlUVJSEp0/f54yMjLo6aefppCQENq0aZNX109LS6O0tDT6xz/+Qe3bt9e1dt++fUXsc7VNyb7//e9/FBQUREFBQQSADh065PYakZGRFBwc7NGWjRs3Oq8ZHx9PJ06coKysLPriiy+ofPnyFBUVRVFRUXTjxg2vr5eVlUVNmjShUqVK0YcffkgffvghXbx4kTIyMmju3LlUrlw5ioyMpHPnzrldd/HiRU3rlGzUel+Ufj96vz9arvXZZ5/RZ599RgBozJgxlJaWRjdv3qRffvmFBg8eTIMQIxbkAAAgAElEQVQHDyYA9Oyzz3q8nh35f+zdeVyWZd7//xcq7rlm7qjIDuKC+76T4VKWRnelps3YTMu0zDRz13e2x9z3NFP3XVnNXdliaaOZpo5L6SgqJriEsggiqGwqbrnginBxnb8/+J1ngKBAyHkB7+fj4cNKrwefi7iO8zg+x+dzHAUFBcb9999vdO/e3ejevbtx+fJlu0MSERflcDiMkJAQY9SoUYbD4bA7nHK71Xxk0aJFBnDbX+a8oDIqOx9ZtGhRheIz3Yn5SNHnfNFnfcnnfMlnfXlfl52dfds5gmEYxpIlSwzA+Mtf/lLm3yk5PyjP/PLs2bMGYEycONE4fPiwkZuba+Tm5hp79uwxhgwZYvTu3ds4d+7cTa976aWXDDc3N+PPf/6zkZ6ebuTm5hrp6elGenq68fLLLxuAERISctMcrazXvfzyy7d8nat7+eWXjZYtW5br/2Vdk5aWZrRo0cJ4+umn7Q7lJ+vdu7fRuXPnYv/NnPv37NnT8PT0NL755hvj4sWLxrlz54wPPvjA+OCDD4ymTZsay5cvt14zduxYawx7/fXXjbNnzxrXrl0ztm7danh4eBiAsXnzZmPz5s3FvlbRMb2sdWZ1KGutWNZYY44NpY3NlR3vy/uakq8ry+3G2KJjZdHxsuRYWXK8LDnGlvW60phr4WnTppW5Fi7POrg8z7rKPgtKs2TJknI9s2qapUuXGm5ubsaaNWuq/evWq1fP2LJlS7V+3apgjlmlzUWr+jNclsrmxQyjcnmXssa60pQ3/1OZ1509e7bUz3XRz3R5PtdvvfWW0bFjRyM/P/+2cZnfr7JyiRs3brzpe1YV65G33nqrUnFWZL5cltow1h0/ftw4fvy4cffddxu//OUv7Q5HREREqlFSUpLRsGFD4+2337Y7lAqpyfvvJZVnbn+7fPft9vRLm4dXNpaS+8Ul94xvtV9c2RxHVczfy5sbqUx+yjBKrxMw9wAqUifgSq5evWoEBgYaYWFhdocidcykSZOMwMBA48qVK3aHUiFVtRdbWeZzqaxnk6vUf5U3x15SVe1nV6Qeq6peV79+/Wp7nWH8mKsqK19VVTlDV7R69WoD+MlzPRERcX0Oh8Po1auXMWnSJMPpdBpOp9PukG6rpu2Zlmc+cqsakNvNOSpSf3An91OL5jlKq4038xyl5TrKsy9aVXGW9pqKvs7cSy3vfqqr+vOf/2w0a9bMOHbsmHHs2DG7wxEb1Ma8QWkqO/aVpTw57crUApY3b1Deeo6idcWl1RabdcUla4vL+7pr164Ve11F+sZK5narch+iInUnRb+XlamPuV3d00svvVRr67vtyhu8//77Rv369Y2IiAgjIiKiWr92VSutdtowjFJrp4vWT5esnTaMH+unS9ZOl6yfLsrcX6rIeHonVObzf6t6wsrmj6sy71zeet+ie31F9/lut9dX0deZa4mK5jDNcb2sPbuy+n1u9X2pTF1gbagnLKqgoMB48MEHjU6dOlnPkeqSkpJiNG3a1GjatKnxyiuvVNvXrWp1afysijHydvtRhnHnPp9l5TIq0ktRkVrm6nxdZcfWys7RS1PV6xw7OZ1OY86cOUa7du2MU6dOVevXru29eYZR8fFx7NixZY6PHh4eLjE+3kpl6qJqwvyyOvasK5pvKGutW96xrDL5DTOPXtV5iprOrt682bNnG15eXjd9711NTa9BKq1etei4VXLsquxezU/p161sbq+qetEq2ndb3pxgbcrtzZgxw5gxY4bh6+tbo/e1aqKkpKRa2V/gCuNnWSpbL3CrsbU0ldlfLu/8p6rO2zPdqfX7T/k5qOg+WkmVXfe7Gjv7C+rqetg8t0Tr4UI1fT184cKFW/Yemfnw242ZlRmff+q+SUXPib1d31jR+Wh1PKddhV3r4fK4evWqcfXqVaNLly7G3Llz7Q7ntm41lrliPeatlLcW8HZn2JS2J3urvs3KnvNV2drQ8uToKrJmrcxe0Z0cy1yV0+k0Jk2aZAQHBxvBwcHVembq+++/X6xmpiYzc9alnTfYs2fPMs8bNOdvpZ03aM7fyjpvsCRXmb9VZW9iZcfrqj4ztzJr0MqcG5iamlrpnvrynHVWmTG9smfM3y4PWdEx3VWZ9TJFa2Z+gneNMu6Vs/tSO12CJyIiIiJiGMZXX31l1KtXz/jrX/9qdyjlYjZIlSfpuX//fmPSpEnGpEmTjBYtWhjNmzc3xo4da+zcudOm6Isz4ysZW2nxFU00uLm5GQkJCcX+fN26dca6devK/N6YC+HSREdHG9HR0UZoaKjRsmVLo2HDhoafn5/xpz/9qcxk4K2+lvn1SnP+/HnjN7/5jeHn52f4+fkZjRo1Mho2bGj07NnTeOaZZ8osTC76ukaNGpX7dZWN0zBu/v9Tnp+fin49M9myYsUK44EHHjB69uxpNGrUyGjZsqUxevRoY/To0cbSpUvL/HquzOl0Gs8995zRsGFDY/v27cb27dvtDklEXFxsbKzRtGlT46mnnnL5Q3TKMx8JCwur0oR+VQoLC6tQfKY7NR8xn/NFn/Uln/OlPevL87pbMQvgSos1NDTUCA0Nvek1RecH5Z1fbt682Zg6darRoUMHo0mTJkaTJk2MoKAg4y9/+UuZGwk5OTnGxx9/bISGhhrdu3c3GjZsaM1HQkJCjNdee63U15b1OrNhpKzXubLFixcbbm5uxqJFi+wOxWWtWLHCqF+/vvHrX//a5cfPkt54441SP4Ovvvpqsb937tw548UXXzQ8PT0Nd3d3o127dtZhriU3mM+ePWt9vrt27Wq4u7sb7du3N+bMmWP87ne/K/Z1QkJCKrTGrC6lrRXLGmuKHoBWcmyu7Hhf3tfc7ntU1hhrjrNFmWNl0fHydmNl0dd16NChQq8zDMNaB5e1Fi5NZdeYlXkWFFWR72VN89VXXxnu7u7GSy+9ZMvXDw8PN1q2bGnExMTY8vUrqirnoXaOc4ZR8bxLWWOdqbKfz6r6XBf9TN/uc+10Og0vLy/jD3/4w22+Sz/av39/mbnE0vzU9YgZY2XirOh82VSbxrozZ84YQUFBRlBQkBEQEGBcunTJ7pBERESkmv3Xf/2X4e7ubnz77bd2h3JbtWH//Xa56dLm9rfLd5sqMg83Y7ldHKXtGRfdLy65Z3y7/eLK5DhKvreqfH8lVSY/ZSpZJ2DuAZR3H8CV5OfnG9OnTzfuvvtuIyMjw+5wpI7JyMgw2rVrZ4SFhRk3btywO5zbquq92Dutquu/KvocMYzK5dh/Sv6ounNx1f06U0XzVT8lZ+iK9uzZYzRv3tz4+c9/bncoIiJSTaKjo42GDRsar7zyiksfhF+T9kwrk6+43b5oWXOO29UfVGZuVJmcS9E8R2m18bfLc1R0X7Sy7+2nvM4wiu/5VmQ/1dWsXbvWqF+/vvHOO+/YHYrYqDbmDQzjp68Jq0pFawHLk7euSN1J0bri0mqLzbriks+Q8r6uNJXtGyv6/arMPkRl6k4qU8NTNM7y1D3l5OTUyvpuO/MGTqfTeOSRR4xmzZoZzZo1q5EHe5Wnfrpk7XTR+unSDucy66dL1k6XrJ929drp8n7+bzVvrmz+uCryzpUZi0rr6y3PXl9FX7d58+ZK5TDPnz9f5p7drfp9fur3pTL9PjVBXl6eMWvWLKNJkya29dt+8sknxieffGK4ubkZb7zxhi0xVFZdHT9/6hhZ1ryysnW7VbF/Ut5eisrO16rrdZUZWys7RzcM11nnVDWn02m89NJLRoMGDYz169fbEkPR3rza0p/36quvVnp8NA+JLas3z1XGx1upaF1UbZlfVlefizmWlbXWvdVYZn6tyuY3unfvXm15iprCzt68Y8eOGW3atDFmz55tzJ492+XGz7LGp6K1MDWhBqk0RcetkmPXT9mr+Sn9upXN7VV3L1pFx5/akNv78MMPrdxzeS8WlKpXG/oLXHX8LKmy9QK3GlsNo2r2lyuy5qzseXum6li//9Sfg4rsoxVV2XW/KzEvYrW7v6AurofbtWun9XARtWU9fKt9jNuNmRUdUyp7TtpPeY5UtG/MlZ/TVcnus2rKa9WqVYabm5vxySef2B1KqWpSPeatVOYzdrtaTcO4eU/2Vp+/yp7zZapobWh5cnTlWbNWZMytbM9T0e9lRXtgXc1f/vIXw93dvcy+sTvJzKuaNTO1uV6mrPMGy7PfW9Z5g2Yupzxr3upWVb2JlR2vq+LM3IrWePyU8/iKjs2V7akvz1lnlRnTK3vG/O3ykOUd011Z0XqZKqqZKfMSPDfDMKhBalSwIiIiIiIV8Y9//INnn32Wp59+mjfffBN3d3e7QxKRGuzatWs88cQTrF69mi+++IKZM2faHZKI1BBr1qxh5syZPProoyxcuBBA8xKROuzdd9/l+eef57e//S1//etf7Q7HpS1dupQnnniCCRMm8PnnnwPQtm1bm6MSESldfn4+v//97wF4/fXXee6553jrrbdwc3Or9lhu3LjBtGnTiIqK4osvvgBg2rRp1R6HiNQeSUlJTJ061fr3yMhIunTpYmNEIiIiYgfDMJg7dy7Lli3j888/5+GHH7Y7JBGxyZUrVwAIDw9n+/btbNy4keHDh9scldRFe/fuZeLEifTr14+VK1fSpk0bu0MSERe2fv16HnnkEUaPHs2qVatUtyEiUod89tlnzJ07F8Cq17FjH1dE7rwVK1bw2GOPMXv2bKteV+ou5Q1EpCJcIW/gcDiYNWsWUPhM+9vf/sYLL7xAvXr1qj0WEZHyOnbsGI888gjx8fGsXLmS0NBQW+NZsGABL774InPnzuXdd9+lcePGtsYjInXPpUuXAJgzZw4bNmzgs88+45FHHrEtHrM3D7D689SbJyKuzOzPs7s379tvv7V6aJ555hnefPNN7S2JuJBly5bx+OOP8+qrrwLw5z//2eaI6i71F4iI6cqVK4SHhwO4RH+B1sMiUpPk5+cDuMR6uCJ+//vf89prr/HJJ58we/Zsu8MRkUr629/+xiuvvMJ7773HL3/5S9viMGtmVC8jIjVFyXoZoCpqZt4Dni3tD3QJnoiIiIiIC1m5ciWzZ8/G39/fujQhMDDQ5qhEpKbZvXs3s2fP5ty5c6xYsYIxY8bYHZKI1DAbN25kxowZ+Pv7A4WFlT179rQ5KhGpLmYD2y9+8QuWLVvGa6+9xm9/+1ubo6oZdu3axcyZM8nLywPgzTff5D/+4z9cvlBHROqW3bt38/Of/5wjR44A8H//93/MmTPH1pjy8/N55pln+OijjwCYP38+b7zxBs2bN7c1LhGpWZxOJ++++y7/+Z//SUhICKtWrQKgXbt2NkcmIiIidnE6nbz00kssWLCAZ58trKH9+9//roPjROqQuLg4q0H9/PnzrF+/noEDB9ocldRlCQkJhIWF4ebmxuLFixk9erTdIYmIC8nNzeWVV14B4O233+bJJ5/k//7v/2jQoIHNkYmISHVbsmQJAPPmzePee+/ls88+02VIIrWEw+EA4P/9v//H66+/zrPPPstbb72lA1AEuDlvACh3ICIWV8wbmGfVvPHGG7z66qsMGjSIDz/8UP2wIuJSCgoKeP/99wF49dVX6dy5MytXriQgIMDmyAqtW7eOxx9/nA4dOvDxxx/beti2iNQtGzZs4KmnngIK8xUrVqxwiTFo165dAFZ/nnrzRMQV7d69G8Dqz3OF3ryvvvoKgMcee4wHHniATz/9lGbNmtkak0hdZxgGf/3rX/nDH/7Aiy++yBtvvGF3SMLN/QV///vfAdRfIFKHmP0F58+fB3CZ/gKth0WkJjDPqgFcZj1cEa+++iqvvfYaL730Eq+99ppq9EVqkOvXr/OLX/yCJUuWsGDBAp555hm7Q8IwjJvqZUBnyIuIazFrZu5QvUyZl+CpKl5ERERExIU89NBDHDhwgCZNmtCnTx/69OnD/Pnzyc7Otjs0EXFxWVlZzJ8/n/nz5zN8+HC6detGXFycLsATkUq599572bdvHw6HA4fDQUBAAL/61a+si7FEpHYyDIPFixfj5+eHn58fmzdvZv369boArwKGDBlCYmIi4eHhhIeHM3v2bAYPHkxERITdoYmIkJGRwfz58xk2bBht2rQhNjaW2NhYlygqdHd358MPP2T58uUsX76cFStW0KNHD/7+979z48YNu8MTkRpgy5Yt9O/fn1//+tc899xzbN26lXbt2ukCPBERkTquXr16vPXWW6xYsYIlS5awZMkSfHx8WLx4sXUop4jUThcuXOB3v/sdgwYNokOHDnTo0IHY2FiXaFCXui04OJgDBw4wbNgwxowZw5QpU5gyZQpHjx61OzQRsZFhGKxYsYLAwEA+/vhjPv74Yz744AMWLlyo5noRkTrq8ccf5/HHHycqKooDBw7g7e3NggULKCgosDs0EfkJIiMj6devH/369WPBggW89dZbLFiwQBfgiaVk3sDMHShvIFK3uXLewM3NDTc3N15++WX27dtHQUEBwcHBzJw5k/T0dFtjExGBwrrCkJAQXnjhBV544QXmzJnD999/7zIX4AFMmTKF5ORk/P39GTlyJDNnzuTo0aOaA4rIHZOcnMzMmTOZPHkyQ4YMYciQISQkJLjEBXiAFZPZn6fePBFxJUV784r257lCb97MmTOZOXMmW7duZfv27QQHB7N582a7wxKps9LS0pg4cSJ/+tOf+Otf/6oL8FxIyf4CHx8f9ReI1BEl+wvMcxZcpb9A62ERcWUlz6pxpfVwRfz3f/83S5Ys4f333yckJISoqCiioqLsDktEbmPr1q3069eP1atX8/XXX7vEBXhAqfUyqpkREVdStGamuutlVBkvIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi5aZL8EREREREXIynpyeRkZEsXbqUpUuXsnnzZry9vfnd737HxYsX7Q5PRFzMDz/8wO9+9zt8fHyIjIwkMjKSZcuWsWnTJrp06WJ3eCJSg/n4+LBnzx727NnDu+++y9KlS/Hz82PhwoUUFBTYHZ6IVLE9e/YwdOhQ5s2bx5QpU5gyZQqJiYncd999dodW47Rs2ZIFCxawYMEC9u7dS+vWrRk/fjwjRozgX//6F06nE6fTaXeYIlJH7Nu3j3379hEeHo6Xlxc7d+7k66+/Zvv27fj6+uLr62t3iMXMmDGDGTNmkJKSwrx58/jTn/6Er68vCxcu1PgpIjfZu3cvY8eOZezYsUyYMIG2bduyb98+/va3v+Hu7m53eCIiIuJCHnzwQRITE0lMTGTSpEk88cQTDBkyhN27d9sdmohUMYfDwcKFC/H19eWTTz7h9ddfJyIigoiICDp37mx3eCIAtGrVimXLlrF582YyMjLIyMjA39+f+fPnc/bsWbvDE5FqtmfPHkaMGEF4eDghISEcOHCAAwcO8POf/9zu0ERExAUMGDCA2NhYfvazn/Hyyy8zcOBAoqOjiY6Otjs0EamA7OxsZs2axZgxY2jfvj3t27dn//79/OpXv7I7NHFBRfMGZu5AeQORuqsm5Q2Cg4OJiopi0aJFfP/99/j7+/Pkk0/y5JNPkpycbHd4IlKHOBwOli5dSt++fZk4cSI+Pj5WvcCCBQto1qyZ3SHepGPHjqxevZpVq1aRkJCAv78//v7+zJ07l5SUFLvDE5FaIjY2lhkzZhAUFERaWhoRERF89dVXfPXVV7Rr187u8G5i9ueV7M0r2p8nIlJdSuvNK9qf50qGDx9OfHw8w4YNY+LEicycOZMffviBH374we7QRGo9h8OBw+FgwYIFBAcHc+bMGaKiovjtb39rd2hSCrO/YNKkSeovEKnlyuov6Ny5s0v2F2g9LCKupKyzalxxPVxejz76KPHx8XTq1MkaX2fNmqWaHBEXY9Zczpo1i3HjxuHl5UViYiL333+/3aHdpGi9TMmaGdXLiEh1KlovU7JmprrrZdwMw6i2L1YFalSwIiIiIiJVITc3l/fee4/XXnsNp9PJrFmzmD9/PgABAQE2RycidomJieHDDz9k2bJltGrVij/+8Y888cQTADRo0MDm6ESkNjp79ix//OMfWbhwIX5+fjz33HMAPPbYYzRt2tTm6ESkoszCtm+++YZ33nmHzZs3Exoayptvvql1xh2wc+dOXn/9ddavX4+npyeAtcnevXt3e4MTkVrnwoULLF++nMWLF7Nr1y4A+vXrx69//WtmzpxJ/fr1bY6w/DIzM/nDH/7AF198YRVBzp8/n1mzZtG6dWuboxMRO+Tl5bF69Wo+/PBDtm/fzsiRIwH429/+xuDBg22OTkRERGqKvXv38vzzz7Nnzx6mTJli5bvHjh1rc2QiUhk5OTkAfPrpp7z33nucOHGC559/nldeeYUWLVrYHJ3IrTkcDgAWLlzIn/70J/Ly8njiiSf4xS9+gY+Pj83Ricid4HA4+Ne//gXAP/7xD7Zt28aECRN444036N27t83RiYiIK0tMTOTZZ59lx44dAEyZMoUXX3zR2isREddz+PBh3n77bT777DM6derE22+/TVhYmN1hSQ1jHspYMm8AKHcgUguZ+cJ//etfNTpvkJeXx+eff87//u//AoXPxNGjRzN79mwefPBBl7yASkRqNvPwwMWLF7NkyRJOnz7NjBkz+M1vfkPfvn1tjq5iHA4HS5YsAeDvf/87hw8fZsKECcybN4+pU6fSqFEjmyMUkZri2rVrrFixgk8//RSA7777jr59+/Kf//mfTJ8+nXr16tkcYcWYvXmA1Z+n3jwRuVPM3jzA6s+rib15q1ev5plnniEvLw+A559/nmeeeYaWLVvaHJlI7eJwOPjnP//Ja6+9BkBWVhZ//OMfeemll3T+Uw1SWn+BegtEaq6cnBxrPVzT+wu0HhaR6lRb1sPl9dVXXwHwwgsvcP36dX75y1/y7LPP0r59e5sjE6m7MjMzeeutt/j444/p1KkTUDifmzhxos2RlV/RmpmS9TKAamZEpMolJyffVC8DVEfNzHvAs6X9gS7BExERERGpIS5evMjChQtZuHAhR48eBWDkyJHMnz+fBx98UIXrIrXclStXWLZsGR9++CEA+/btIygoiKeeeoonnnhCF1CJSLVJSkrizTffZOnSpQA0bdqUJ598kqeffhoPDw+boxOR27l06RKLFi3ivffeA+Do0aOEhoby4osvMmHCBJujq/2Sk5P56KOPAFi6dClnzpxh5MiRzJkzhwcffJC77rrL5ghFpCYyD77ZtGkTixcvZu3atdSrV4/p06dbl6XX9GaLxMRE3n33XaBw/CwoKODhhx9m/vz5uvRKpA5IS0sD4KOPPuLTTz/l3LlzTJ48maefflpzWBEREak0wzBYvXo1b7/9Nt999x0AvXr14rnnnuPRRx+lSZMmNkcoIreTkpLCu+++y+effw6Am5sbs2fP5sUXX6RHjx42RydScZcuXeKDDz7ggw8+ICMjw1rzPv3004SFhdW6hmGRuubUqVN89NFHfPjhh5w8eRKAsLAwfvWrXzFu3DiboxMRkZpkzZo1ALzxxhtER0fTv39/XnzxRWbMmKFDFEVcwI4dO3jzzTcBWLduHT169OD555/nZz/7mXp+5CcpmTcAmDBhgvIGIrVE0bwBwMmTJ2tF3sDpdALwzTff8Omnn7JhwwYaNmzIgw8+yJw5c4DC/tiadgGLiLiG8+fP8+WXX7J48WL27NkDgIeHB7NmzWLevHm14gBop9PJ2rVr+fjjj9m4cSOtW7fmscceA2DevHkEBQXZHKGIuKI9e/bw6aef8uWXX3Ljxg2mTp0KwM9+9rNaU3dt9ueV1psHqD9PRCrF4XDc1JsHWP15NbU3Lycnh//5n/8BsPrKn3nmGX71q19x99132xmaSI1348YNFi1axOuvv87x48f5j//4DwB+//vf07NnT5ujk8oo2V/Qq1cvAPUXiNQgRfsL3NzcAGpVf4HWwyJyJ9TW9XBFXLp0iXfeeYd3332XS5cuMWfOHF566SUAvLy8bI5OpG5ISEjgjTfeYPny5XTs2JEXXniBp556CoDGjRvbHF3lOJ3Om+plAKtmRvUyIlJZZr0MYNXM2FQvo0vwRERERERqC6fTyZYtWwD44IMPWLduHS1btuSBBx5g+vTpVmOTmeAQkZrr2rVrbNy4kVWrVrFu3Try8vJ46KGHAJg/fz7Dhw+3OUIRqcvOnj0LwMKFC3n//fc5ffo0EydOJDw8nGnTpgHQokULO0MUkf9ffn4+W7Zs4csvv2T16tUYhsHs2bMBePbZZ/H19bU5wrrJ4XCwceNGPv/8c9atW0eDBg0IDQ0F4L777iMsLIwOHTrYHKWIuKorV66wefNmNmzYwPr16wE4c+YMw4cPZ86cOTz00EO1di526dIl/vnPf/Lhhx8SHx9PYGCgtVaePn06wcHBNkcoIlXh+PHjrF69mq+//tq6lKZjx448+eSTPPnkk3Tp0sXmCEVERKQ2iY2NBeCdd95h2bJlNGvWjBkzZhAeHs7IkSMB1Ewg4iLOnTvH119/zZdffsn27dvx9PTkmWeeAWDu3Lm1Nh8idYvT6WTDhg384x//AGDz5s106dKFGTNmMGPGDAYOHGgdzCAirisnJweAtWvXsnLlSjZu3EiLFi2YN2+e1YxbGw5hFhERe+3evZs333yTVatW0bFjR+tgxUcffVT7piLV6MSJE3z55ZcsWbKE+Ph4hg0bBsCLL77I/fffr9yiVCkzbwDwj3/8o9S8AaDcgUgNkJOTU2reAOCpp56qlXmDc+fOsXTpUhYvXkxMTAxQeGHV5MmTmTx5MmPGjKmxh5eJyJ2XmZkJYNVOb926lQYNGjB9+nTrYs3Ro0fX2vn3iRMn+Pzzz1m0aBEAR44coW/fvkybNo2pU6fSt29fmyMUETs4nU727NnD2rVrAVizZg2HDh2iVzyg5bAAACAASURBVK9ezJs3j0cffbRWX3BUWm8eQGhoqHrzROS2zN48+HGOWbI3D2rXWQk5OTm89957vP322+Tm5hIeHs4TTzzB0KFD7Q5NpMY4cuQIAIsWLWLRokWcP3+eJ554gt/+9re1Mp9Xl8XGxvLOO+8AlNpfUFvzDyI1zblz5wBK7S+YO3cuULvmcyath0Xkp6iL6+Hyun79Op999hn/+7//S3p6OgCTJk3i8ccfZ9q0adrLFqlCly9f5uuvv+bzzz8HIDIykqCgIH7zm98QHh6Ou7u7zRFWLbNeBrBqZkrWy0DNvfBPRO68zMzMm+plAKtmxqZ6GV2CJyIiIiJSW2VnZ7N48WK+/vpr9u3bZyWMJ0+ezPTp07n33ntp2rSpzVGKSHnk5OSwYcMGVq1aBcC3335Lbm4uw4YN48EHH+Sxxx6jbdu2NkcpInKz/Px8Vq9ezRdffMGmTZusBOikSZMIDw9n8uTJmo+IVKOCggIiIyNZvnw5UFiwd/78eQYPHswjjzzCrFmzaNmypc1RSlHnz59nxYoVVtPhtm3byM3NJSQkhMmTJxMWFkZISIgOphGp49LS0qyN6MjISPLz8xk4cCBTpkwBIDw8HE9PT5ujrF67du3in//8J2vWrAEKD3jw8vJi+vTpTJ8+XQeCi9QwR48e5euvv2bVqlXs3buXu+66i7CwMB5++GEAwsLCrCIcERERkTvlzJkzfPbZZyxbtoy4uDg6deoEwIwZM3j44YcZPHiw1hki1SgnJ4c1a9ZY+e4tW7bg7u7O5MmTefzxx7nvvvt0kITUeocPH+azzz5jxYoVHD58mG7dulmNxboUT8S1mIfXr1ixgn//+98AGIbB+PHjCQ8PZ8aMGWpKFRGROyI9PZ2PPvrIOiAhMzOToKAgHnvsMR555BE8PDxsjlCkdrl48SIAq1at4osvviAyMpIWLVrw0EMP8eSTTzJo0CCbI5S6pLS8AcBDDz2kvIGIiymaNwD497//XafzBklJSQB8+eWXbNiwgbi4OJo0acL48eMJCwsDCmuFOnfubGeYImKjgoICdu/ezfr169mwYQMHDhwA4K677mLChAlMnTqV6dOnc9ddd9kcafUyzwnbsWMHy5cvZ926dRw/fhwPDw+mTp0KwNSpUxk1ahQNGza0M1QRuUOuXbvGli1bWLt2LevXr+f06dP07NkTgGnTphEeHs6AAQNsjrL6mb15AGvXri21Nw9Qf55IHVdabx5g9efVld68q1ev8umnn/Lxxx+TkJCAv78/AHPnzuXxxx+nffv2Nkco4lquXbvGypUr+eSTT/juu+8A6NSpE3PmzOGXv/ylVWsutVdp/QVmbwGg/gKRala0v2DLli0Adbq/QOthESkPrYcrpqCggNWrVwPw6aef8u9//5u77rqLGTNmMGvWLIYNGwagcVWkggoKCoiIiGDJkiWsWrWKgoICJk+eDMC8efO4995768znKikp6aZ6GcCqmVG9jEjdVrReBrBqZkrWywB218zoEjwRERERkbogKyvLujxr1apVREVF0bhxY0aOHMm4ceMYO3Ysffr0AahTm3QirsrhcBATE0NERAQRERFER0fjdDoZM2YMANOnT+f+++9XkaCI1CgXLlywNnCXL19OREQEjRs3Zty4cYSGhhIaGmo11YhI1Tl79iybN29m06ZNbNq0idOnT9O3b1+g8FKkhx9+2DrcRFzftWvXiIiIYMOGDWzYsIHjx4/ToUMHRo4cCcDw4cMZOXIkvXr10tpOpJbKyMhgx44dfPfdd+zYsQOA1NRUWrZsycSJE5k8eTKTJk2iXbt2NkfqGpxOJwB79uxh1apVrFq1irS0NDp16sT48eMZN24cAOPGjVORj4iLyMnJITIykoiICKvR5ODBg7Rt25Zp06bxwAMPMGHCBBo1amRzpCIiIlKXpaSk8OWXXwKF+e7k5GS6du3KvffeS2hoKOPGjaNVq1Y2RylS+yQlJVm57h07dmAYBqGhoUBhvnvq1Kk0a9bM5ihF7BEXF8eKFStYuXIlUJgz7NKlCxMnTmTChAmMGzdOOUORauJ0OomLiwNg8+bNbN68mZ07d1qH18+YMQMoPGy0devWdoYqIiJ1iNkrHBUVxT//+U9WrFjBhQsXGDBgAPfddx/33XcfAP369VO9iUgFHT16lG+++YZvvvmG7du3W/89LCyMRx99lPvuu097m2I7M28AsHLlSuUNRGxk1rPFxcWVmjcAmDFjhvIGRZw4ccKqmzZria5fv05gYCCjRo2yaqd1qLhI7eRwOIiNjbUuE9ixYwc7d+7k3Llz9OzZk7CwMOsARF3uVpxhGOzfv5+1a9eydu1aoPD506JFC0aOHMno0aMZNWqU1V9Uv359O8MVkQrKy8vj+++/t3IR27dvJzo6mtzcXAYMGMC0adOYOnUqgYGB9gbqgkrrzQOs/jz15onUfmZvHmD155XWmwfU6ZxZTEwMixYtAmDp0qVcvXqVMWPGcP/99zN16lT14UmddOnSJQC+/fZb1qxZwzfffENubi5Tpkxh7ty5AISGhmp9VUeZ/QVmbwGg/gKROywpKQmg1P6C8PBwAPUXFKH1sIgUPasG0Hq4Cpw6dYqlS5fy+eefk5CQQPfu3QGYPHkyU6ZMYdSoUaobEynFtWvX2LJli3WJ0/r16zl58iRDhgzh8ccf5+GHH6ZNmzY2R2k/s14GsGpmStbLAKqZEamlHA4HgFUzU7JeBrBqZlywXqbMS/C02hQREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREZFyczMMw+4YKqJGBSsiIiIiYrfTp0+zdu1atmzZwrZt2zh79ixt27YFYMyYMYwbN46xY8fi4+Njc6QitZ9hGCQlJREREUFERAQAkZGRXLp0ic6dOzN27FgmTpxIWFgYrVu3tjlaEZGqc+bMGVavXs3GjRvZunUrly5dwsvLC4DQ0FBCQ0MZM2YMzZs3tzlSkZrD4XCwa9cuNm3aBMCmTZvYv38/9evXZ9iwYYSGhjJ9+nTN82uRuLg4Nm3axHfffQfAzp07ycnJoVWrVgwfPpwRI0YwYsQIAEJCQmjYsKGd4YpIBRiGwcGDB4t9viMjIzl+/DiNGjViwIABjBw5EoBx48YxYsQI3N3d7Qy5xoiLi2P9+vVERESwa9cuAG7cuIGvry/jxo1j3LhxjB49mjZt2tgcqUjtd/36daKjowHYunUrERERxMTEYBgGvXv3Zty4cQDce++9jBo1igYNGtgZroiIiEiZ4uPjWbNmDRs3buT777/Hzc2NwYMHAz/mu0NCQqhXr57NkYrUHBcuXCAiIoJNmzZZOe9jx47Rtm1bxo8fz6RJk5g2bRqtWrWyOVIR1xQfH8/atWv597//ze7du3E6nfTp0weA8ePHM2HCBIYNG0aTJk1sjlSkdsjKymLLli1s3ryZiIgIzp49C8A999zD+PHjCQ0NZcqUKar9EhERl5GXl8emTZtYu3Yt3377LSdOnACgffv2TJo0iUmTJjFx4kStuURKuHHjBjt27ADgm2++4ZtvviE1NZUWLVowYcIEwsLCAHjggQf0+RGXpryBSPUqmTcAOHv2rPIGlZCbmwvAtm3biIiI4LvvvmP//v04HA569uwJwIgRIxg5ciTDhw/H29vbznBFpBKuX7/O3r172bFjBzt37iQ6OporV67Qrl07AIYNG8aoUaO499578fPzsznamiczM5MNGzawfft2IiMjOXPmDC1atAAKx89Ro0YxatQo+vXrp3pNEReSl5cHwN69e63Pb3R0NNeuXaNz584AjB49mjFjxhAWFkaHDh3sDLfGiYuLA7D680r25gFWf55680RqFvMcVbM/r2RvHmD156k379Zyc3NZvXo1q1atYuPGjVy9epUBAwYAcP/99zNt2jQCAgJsjlLkzjh58iRr165lzZo1bNu2DYCCggJGjhzJAw88QHh4OHfffbfNUYqriY+PByi1vyA0NBRA/QUilVCyv+DYsWMA6i+oJK2HRWqv262HzfWc1sNVKyEhgeXLlwOwYcMG4uPjad68uXWGbFhYGO3bt7c5ShH7ZGVlsWHDBtavX8/WrVvJy8ujf//+AEyZMoWHH35YNR63kZube1O9DGDVzKheRqRmK61eBrBqZmpYvcx7wLOl/YEuwRMRERERqUPS0tLYsmULgNVUdfHiRVq2bMmAAQMYNmwYUHhpwtChQ60L80SkYi5dukRCQgIAUVFR7Ny5k927d/PDDz/QvHlz6zDM8ePHM378ePr164ebm5udIYuIVIuCggLi4uKs+ci6devYtWsXbm5u+Pr6Mnz4cGs+MmLECHr06GFnuCIu4fLlywDs2bOHnTt3sm/fPr777jtycnLw9PQEfpxTTJw4kZYtW9oZrlQTp9NJcnKyNdeMjIwkKysLgAYNGuDj40NISEixX4AOqxGxWXZ2NgD79u2zfu3atYtz587RrFkzAPr06cPw4cMZP368DpmqQtevXwd+XKNHRUURGRlJfn4+HTt2BLDmoiEhIQwYMMBqdBSRisvOzrY+b+Z4Zx5O5enpac1fx44dqxy0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eu89W/zsgw+kVq2sVaxolyNH2mZ5znkWNrUpAAAAAF7atUtKSZHOOMNOk9avl8aMsbZhg51e1anjXXyMZ8mfYOabMZ4lK87RAcAcOCDt359zEzz6GhAVGjWy8Ql//CENH24tNdWS2osukj78UDp0KGLhxOtc9FicS+Xj9VwqAIhlkVqf0ice8r2CrE/J2JIgFS9uk/MXLZLmzrUJ/HXrSrfdJp16qo0B2bXL6yglxW+OCCC82AQPAAAAcWvzZjtvr19fuvhim8OxZIn0wgvW3zNhQng2YzmWfv36qWTJknrggQeUnJys5ORknXzyyTke9+STT+rJJ59UvXr1dNttt+mLL77Q7t27tWPHDo0bN07jxo3T8OHD9cwzz6ho0aJHf65v377q27ev/u///k9paWnatm2bnnrqKTnn1KJFi0j+qohSTz75pOrUqaNBgwZp0KBB+uyzz7R3716tWbNGN998szZv3qxRo0apSpUqqlKlytGf69KlixISEvTLL794GP2xBfr79/ce8D3Wq/fLE088oYoVK2rQoEFKTU3Vvn37tHz5ct1666269dZbVbVq1bDHAAChsn+/bTTSuLEtNpOYKP3wgw0KL1EifK8bbbkV35ehF9Hvy0cflTp3tnbdddZBGCK+v0FfHpY9B8uehwEAgNz99pvUrZvUpIlUqpS1H36wml84vkqz553+ck5JWXJOf3mnL+f0l3f68q14yTuDzSOz56iRzDt9OWegvDOiNZrRo6XTTpM6dLBBaSEYmOYvDw1UDwQAAJCkrVut3lurlrX775dat5ZWrpSmTrU8PBr4y9MD1Yfr1asXsD48fPjwgPXhYHLaWMnTc6t5B6oP5/VcJZSeeOKJXOvDVatWjViuntc+dvJqAAiN9HSpSxdp0yZbAP3jj23d57zy5QjB1vMy5wjZ63mZcwQpuP7WzDlCtOcJ2X+nQN/7weYUoeYvR/CsnufPOefYztELFli97623rOb30UdhfVn6pAEA8eLQIen66639/bf0ySfWH5xXvk3w8psP+uvfzUs+yJyNOHPlldaWLbOBscnJUp8+ue/KlE/M78j52EIxXhVAFmXLWh/U1Kk2LqxTJ+nIkcCPD2YOAX1EGeKlj6hQfiafcIItgDZunO3esG6dteees90jR460nKVaNemGG6ylpEi//hqxEKlNAQAAAIi0JUusbNunj1S9unTPPbZXyI8/2n7ivXtbK1nS60gN41nyJ5j5ZoxnycA5OgCYHTvsskKFnMeira8BhVj58tLAgdZ+/tk2wqteXbrpJpvUNWyYtd9/D2sY+Z2LHgv9ZLE2l+pYax4Uun4yAMinSKxPWZjGluQ23o+xJQVw0UXSpEnWVq+W2ra1tTBr1rT8cMMGax4JVGNivSIAufJ9ccRIAwAAAAI6csS51FRrHTs6V7Soc+XLO9e7t3PLlnkdXVa9evVyktycOXPcnDlzcn3sX3/95QYPHuzq1q3rihUr5ipXruwuv/xyd/nll7vU1NQsj122bJnr06eP69OnjzvttNNcqVKlXMWKFd2FF17oxo8f79LT08P5ayFSvv3WLZSc/LT777/fOef8HmvTps3Rp9i+fbsbNGiQGzRokKtTp44rVqyYK1eunGvdurWbOXOm35dt0aKFK126tDt8+HCewly4cKHf+O6//373/fff5zj25JNPurlz57q5c+fmOPbQQw+5yZMnu8mTJ+c41rlz56Ov6XsP+Pv7z/4eyPzYY71fAr3uwoULA/6ePrn9Pzjn3OrVq90111zjypYt60qVKuWaNm169LPh0ksvdaVKlcrTvzcAeGnOHOdOPdW5445zbsQI5w4fthYp0ZRbher78vvvvw/L9+WyZcv4vjyWgwettW7tXOXKzq1dm+X/q6C/iy8Py56D5ZaHAQCADPv2OffQQ86VKOFc/frOTZoUudfOnHfmxpdz+ss7s+eczuWsZ4Q67/SXv2TOO/0d8+Wd/o758k5/xzLnnXnNI/39G1SsWNHv43N73dx+T+eOXS9bvXp1wLzTl3NGrE6zebNzJ55oOWnr1s4dPhz079emTRu/9UBfHpqXeiAAACh81qxxbsAAy7dPOMFy74cecm77dq8jCyyYPD1QfTg1NTVgfTivOa1zwefpudWHw5mn51bzDlQfzu1cJZx5unOB68OXXnpp3uvDtWq5hf37FyiW/PSxAwDy51//cq5YMee+/jr/z9GrV6+g63mZc4RA9bxg+1udy5ojhKOe9+STTwbMEx566KGAeULnzp391vMy/07+cp9gcopg8wTf2DLnjl3vyp4j+KvnRY3Nm53r2tU5ybm2bZ3bsMGaH8fqk85L/kSfNAAg1nXr5lyZMtZ+/DH/z5PffDDY/t3ccifEkUmTnKtY0bl69ZybO9daJgWtgzG/o5COVwXg19y5ziUlOXfvvbk/Lq9zCGKtjyi3z+SC9BHl9plckD6i3D6Tw9VHxGeyH4cPO7d4sU3oSU62VqKE1aPq1rVJ1pMmObdjR65Pw3wJAAAAANFuzx7nxo1z7qyz7JSnUSNr48bZnLNoV5jGs+RW0yjIeJZAdZq4Gs8yZIhbePrpbuHpp3OODgAFtHy55QwrVvg/Hk19DUAOP//s3NChzlWqZK14cVtgNTXVuQB/Q6EauxDMXPRYWfMgluZSHWvNA/rJACCnb7+1vE/KOlUj3OtTRuPYktzG+xVkbElu4/0KMraE8X5+7N7t3AsvOFezpnOJidbatrU8MB8KWu/yV2NibjUA59xLLsC+cgnOOcWQmAoWAAAAkfHbb9J770kvvyz9/rvd16SJ1K2b1LWrVLKkt/H588Ybb2jMmDFavHix16EgFi1aJF14obRhg1SrVkRecteuXapevbo6d+6s8ePHR+Q1ITVo0ED79+/Xxo0bvQ4FAHLYudMuhw2Txo+X2rSxfOykkyIfS7TkVnxfeiNs35d790rNm9vlggVS5cqhfX4AAJBn6enSO+/Y9aFDpbQ0u7zrLql48cjFEQ15565duySJvDPCfDmnpMjVaZYulS66yK4PGCCNGBGZ1wUAAIXSvHnSyJHStGlSvXpS//5S797R2deeXTTk6RL1YS80aNBAkvJWH65dW7rjDumee8IfGACgQD78UOrUSRo3TurVK//P88Ybb0iS53kCOYI3onbM1ddfS/36Sb647rlHuu++yBa6AQCIco89Jj38sDR5st1u1y7/zxUtdSPEkc2b7URl+nS7fffd0vDhnuRznGt4I2rPNYA4NHGidNNNNj+hb1//j4mW73o+k73BZ3Ie7N8vzZ8vzZhh7YcfpIQE6eyz7XhysrWLL5aSkryNFQAAAABysXKlXY4dK73+unT4sPUf9O5tpzWxhPEshVue6xn33CN9841dX7Qo/IEBQBybO1e65BLr6q1aNefxaOlrAHKVlmaXn34qjRpltf8GDawTrUcPqXRpz0Ijr4y8oOZSAUAh4luiWcq6THO05Ht8Z3oj5seWpKfbxH/J1hxasEBq1MjWILrpJqlYMW/jA1DYjZZ0p78DiREOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQw4p6HQAAAACQH2lp0qefSikp0syZUtWqUrduUq9edrxePW/jO5axY8dq8ODBXocB5IlzTgMGDFDZsmX16KOPeh1OXNmyZYtOP/10bd26VcWKFTt6/4YNGyRJ69atU5cuXTyKDgAC+/BDqX9/u56YKL35puViXomG3Irvy/Dx7PuyTBlp2jSpaVOpbVtp9mypVKnQvw4AAMjV7NnS4MHS8uV2+7bbpMcekypXjnwsXuedvpxTEnlniPlyTkl+805PajTnniuNG2fXu3eXzjxTuvnmyMYAAADiVnq6lb4ef9xuL1okNWsmTZwodeggFSnibXzBiIY8XRL14TDYsmWLJAWsD69bt06S6E8FgDiydKl0yy3S3XdnjAPMr7Fjx0qS53kCOUJ4BOpDljys5+XFpZdKP/4oPfec3X74YWnyZOnlly0hBwCgkPvPf6SHHpJGjZLatSv483ldN0IcqlZNmjpVGj/ebt99t/T559KECdLZZ0csDM41wof5HUD06NTJxosNGCCdfLKUnJzzMdHwXc9ncngcq49I4jM5T0qWtDeP7w20fbsNyJwxw25/+KE0cqTNkWjaNOtjzznHJgsBAAAAgEcyryvlO42pX1964AGpZ0/p+OO9jS+/GM8S32J2PAsAxLEdO+yyQgX/x6OhrwE4pqQku+zY0dqSJZYo33ef9O9/SzfdZMf795fOOCMiITGXKnzysuaBxFwqAMiraMj3qMWER6EYW5KYmDGgul07ywNHjZJ69JCGDZN697ZjAwZIFSt6FycAZMOoMwAAAMSMVavsHHvYMOmkk6Qbb7T7J06Ufv1VGjHCNr+Lxg3wXn31VV177bXat2+fxo4dq507d+qGG27wOiwgT7Zu3ar169dr5syZqlq1qtfhxJ2dO3eqT58++u233/TPP//ou+++U6dOndSpUyeVLVtW//73v70OEQCO+uUX6YorbFJ569bWVqyI/AZ40Zhb8X0ZXp59X1arZovU/PyznYAcOWINAACE3c8/SzfcILVoIVWqJP3wg7Vx4yKzAZ4v54ymvNOXc5J3hsfOnTsD5p2+nDPidZquXa3ddZcNQvvuu8i+PgAAiDv79tn49rp1pWuusdy6cmVp4UJp3jybCxnNG+C9+uqrUVcf3rp1K/XhMMstT6c/FQDix+bNUvv20sUX2zjAYPnLEaIhTyBHCJ/sOYK/el5UKlZMGjrU2vLlUvXq9offrZv0559eRwcAgGcWL5a6d7f1uPr3D/7ns+eD0VA3QpxKSLCFQ3r3lv7v/6Ty5aUmTWwDmQiNLeRcI7yY3wFEj+HDbfzYdddJjzzyqh55JLr6iCQ+k8ONz+QQq1TJOoTHjbO2bp2155+3eRMvvig1bmytalV7A6ak2EQiAAAAAIiQtWttXakTT5S6dLENa1JTra1aZV3tsbQBHuNZCp+YHc8CAHFq507puONsD7FonI8C5EujRlbn37RJevRR2zV6xgzpzDOliy6SPvxQOnQorCEwlyq8jrXmAXklAATyqqRX1bt3dOV7fGeGV6EaW9KokTRhghVRu3WzcR4vvijVqiX16SOtXOl1hAAgSSrqdQAAAABAbg4ckKZOtbkSM2bY5neSdNttUr9+Us2a3sYXjClTpqhChQo6/fTT9cEHH6hoUdJxxIaqVatq3rx5XocRl6pWraoZM2ZozJgxuuSSS7Rp0yZVqFBBycnJkqT33ntPdevW9ThKALB1OV54QXrwQal2bWnuXKlZM29jirbciu/L8PH8+/K006QpU6TLL89YYemVV8L3egAAFGL79tnlM8/YQtd16kiffSa1aeNNPFOmTJGkqMk7yTnDx5dzSvKbd3peo3nqKZute8010vffSzVqeBcLAACIOVu32uUrr0gvvSQdPCjdfLN0991S/frexpZf0VQf9k06IVcPPd+/baD68HvvvSdJ9KcCQIzbv98ur7lGKl1a+uCD/G/Kmz1HkOR5nkCOEB7++pAlRU89L6/q1ZO++ML+8AcPlk4/3Qrkkk1ITUjwNj4AACJk40apbVvpkkukZ5/N//NkzgcleV43QiFQp440e7blcA89JH3yifTWW9Ipp4T1ZTnXCB/Px6sCyCIhQXr1ValFC2n0aLtv+/bo6SOS+EwOl2P1EUl8JodM3boZG/xK0vr1dulbMHfIEGnvXnvc//7tlZxsb8xY2nUCAAAAQNQ6ckT6/HNbq1mSZs6UqleXevSwKd0nnuhtfKHAeJbCI27GswBAHNmxwzbVzSya5qMABVKunDRwoHTnnXZ71ixbsPWmm6QTTrBxqHfcYcd8C7iGCHOpwicvax5IzKUCgNx89VV05XvUYsKjUI8tqV3bFua6/367/f770nPPZQy0GjDABmYzJwmARxKcc17HEIyYChYAAAD5s2SJXaak2Hn0wYPS1VfbPIqWLe0Y59Eo1BYtki68UNqwQapVy+toAABx7Mcf7bJnT+mnn6T77pOGDZOKF/c2LsATn34qdehg1598UrrnHm/jAQAgjqSnS++8I917r90+dMg2YL7jDom5A8D/7NwpXXCBVKmSLaSYlOR1RAAAIMr997/S009L/5vbpuOPt3mNffvmnMQLxL3ate0kk7ouAEQV56TOne369Ok2JOrkk72NCfDMnj3SAw9IL79sty+5RBo7NnZ3rgYAIA/27rXLiy6yRW7nz7f1uYCYtHy5LSC3erX0xBN234ABTH4CgBDYvl1q0sSuV6lii+EzbAaIkMOHbWKRb1M8SZozxxL4c86xDfGaNZMuvVQqU8bTUAEAAADElk2bpLfflsaMkf74w9ZmlmxtqWuvZT4ZCrl77pG++cauL1rkbSwAEOP+/W9bKsa3fhJQKPzxhzR+vCXbO3fafVdeaRvmtWzJOAYAQFzyLdEssUwzCqkjR6QpU6QXXpDmzZPOPlu66y47duONLB4LIBxGS7rT3wE2wQMAAEBU2L1bmjjR1uz44Qe7r0ED6ZZbpNtukypX9jQ8ILqwCR4AIMwOHZKee842HpGkxo1tbMvpp3sbF+C5V16xyzvukN56S+ra1dt4AACIAzNnSoMHSytXSrffbvc98ohUvry3cQFRafVq2wivfXvLRwEAAPxYuFAaOVKaOlU69VRpyBC7v3NnFgRFIcYmeAAQlYYPlx591K5Pn56xoBlQqPkG0PbpIy1bZgX0Rx4hmQcAxJ0jR6RrrrHrixfb8PiaNb2NCSiwQ4ekxx+XHnvMbicnS6+9JtWo4W1cABAHVq60y6ZNpcsvlz74gPU5Ac/s2yd9+23GxnhLl0pFikhnnWXHk5OtNW8uFSvmbawAAAAAooZvudPUVOnll6XPPpMqVZJ69LCN71g6B8iETfAAIGTuuENasUL6+muvIwE8kJZmu0BKUkqK1fRPPVW69VYbo8piDgCAOMImeEAmixdLzz8vffih3a5cWRowgBwQQKixCR4AAACi05Il1i/yzjtSerrUrp0NTpJsngMAP9gEDwAQRvPnS716SRs3ZmyCN2SIzUkF8D933y299JI0bZrUqpXX0QAAEJPWrJEeeMDGyyQnS6NGsekykCfTp0tt2tjO5ZINNAMAAIXevHl2OXKkLQxy7rnSwIG28R21XUBsggcAUWjyZOn666XRo+327bd7Gw8QdQ4flsaMsUJ6tWrSK69ILVt6HRUAACHTv7/0+ut2ffZs6YILvI0HCKlvv7XL7t2lbduscOubKAUAKJCvvrJhM//+d8ZcBwAe27JFmjvXFs+VpM8/l37/XSpd2ubA+jbFk6RGjbyLEwAAAIAndu2S3nzTurwlm0/WvLmNE7n2Wql4cU/DA6ITm+ABQMjcfLN04ID08cdeRwJEgcyLvhYpIt10k93fv790xhnexgYAQAGxCR7gx5Ytdjl2rPTii9KhQ3aSdPfdUv363sYGIB6wCR4AAACiw5Yt0sSJ0vjxdnvFCpu30Lu39YWUKeNtfEBMYBM8AEAY/P239Oij0tNPS61b22ByvmaAAJyTunWTPv3UBpGfdZbXEQEAEBN27rTLkSOl55+X6tWzfbyuuMLbuICY8+STtpqXZLvc8CYCAKBQSk+Xpk2Thg+XFi+2+5o1k4YOldq18zY2IOqwCR4ARJVly6SLLpJuuSVjEzwAAfzxhzRggO0c2aWLFdUlqVIlb+MCAKAAXnhBGjxYeu89u33jjd7GA4TN/v3SI4/YwNzrrrOBuccf73VUABDzXntN6tVLmjDBTpUBRKH1621TvBkzpNRU2/VCkqpWlS6+2DbFu+oq6cQTvY0TAAAAQNisWmUl0ddekxISbG1lyYbxnXmmt7EBUY9N8AAgZK64wsqQr77qdSRAFNm92xaDfeEFu71ypS0GO2CALQZbrJi38QEAkA9sggccw9690uuv24Jfv/1mYzYk6V//kpo29TY2ALEq4CZ4iREOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwxKcc17HEIyYChZYKZjsAAAgAElEQVQAAAAmPV2aNUtKSZGmTJFKlZI6dbJjfftK55zjbXxAzFm0SLrwQmnDBqlWLa+jAQDEgc8/l26/Xdq7VxoxQurd2+uIgBhw8KB01VXSypXSwoVSzZpeRwQAQNQ6fFh6/XXpgQfstnN2vX9/qUgRb2MDYpJzUufOdn36dKsXnnyytzEBAICISUuTJk6UHntMWrfOSlQPPmjHzjvP29iAqFW7tnTHHdI993gdCQAUelu3Suefbx/NqalS8eJeRwTEiKlTpX79pEOH7PZTT0ndunkbEwAA+fDFF1K7dtLjj0tDh3odDRAhqanSbbdZLpeSYvddfbW3MQFAjBs8WHrlFWnmTKlpU6+jAZCrI0ekZcvs+owZ1r75xuZj1K0rJSfbseRk6fLLpXLlvIsVAAAAQL4dPCh98oldT0mx1P+UU6QePaRevaSKFb2ND4gp99xj586SzRkDAOTbBRdIl1wiPf2015EAUSg93S59i8ROnixVqiR1727zb046ydv4AAAIgm+JZollmoFcpadL06ZJTzxht7/9VmrUSBowwNYxYiEwAHk3WtKd/g6wCR4AAADC4o8/pHfesetjx1oRqFEj21ClSxfbCA9APrEJHgAgBHbskP71L7uekiJ17CiNGSNVruxtXEBM2bNHuvhim5g9d67dV6GCtzEBABBlZsyQ7rpLWrNG6tvX7nv0UalsWW/jAmLe/v122by5tG+fbczMAkAAAMStPXukN96w6yNHWn33hhtsc+n69b2NDYgJbIIHAFHh0CGpVSvp11+l776zdRIABGH37owdsEePttV5xo6VTj3V27gAAMijFSukZs2kDh2k11/3Ohogwnbvlu69N2MTvK5dbdBumTLexgUAMSo93XKK+fNtyIwknXyytzEBCMLff9ub17cpniQtXWqLqZ11lm2Il5xs9a/ixb2NFQAAAECuNm+WJkywLuxNm+y+Fi1szeS2baWEBG/jA2ISm+ABQMiccop0663Sffd5HQkQA/74Qxo/Xnr5ZZu4duWVdv/AgVLLliT3AICoxiZ4QD7Nmye9+KL08cc2D/vOO6VevewYmwcAyB2b4AEAACD8Dh6Upk+X3n7bzl19G6h07y717MlEIiBk2AQPAFBAH35oa70WK2a3x4yRrrnG25iAmPXHH1KTJlLdunZ7+nQpKcnbmAAAiAKrVklDhkjTptmkxVGjMr4uAYTQpk3SeedZ+/hjKTHR64gAAEAIbdlie1q88ILkG+p5yy3SsGFStWqehgbEFjbBA4Co0KuXNHGirW3csKHX0QAxbsECqU8fad0620zlvvtYEBwAENU2b7bh77VrS6mpfG2hEPvoI7vs21cqXVp64w3p0ks9DQkAYtU//9hH6L59dnvBAql8eU9DAlAQ27ZJc+bYpnjTp0sbN0rHHWdzNaSMjfHOPZeFdgEAAIAosGSJzRX74AOpQgXbXOb22+0Yy+AABcQmeAAQMscfLz3+uHXPAsijtDTp00+llBS7PWOGdOqp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7t0UHx9P8fHxVL16dYqIiKCePXtSdna2wZaXIdnnaJu79mVkZNAdd9xBgYGBLn+2pKSEPvroI/roo4+obdu2FBYWRtWqVaPY2Fhav3697DF5eXk0ffp0io2NpdjYWKpZsyZVqVKFbr/9dho2bBjt2bPH5XrS303NenLnpvb8iMpfZ7Wfg86dO9s+T3L/Jk6cKHtccXExffXVV9SxY0e65ZZbqEaNGlSjRg1q3749TZ06lW7cuFHu5/Py8spdT8dr6ep6GoXVaqX169dTQkICAaDY2FjasWMH7dixw2jT/II9e/ZQjx49yGKx0KBBg2jnzp20c+dOo80ior90t0qVKuV0d+vWreU+x1p0wdNI95jSfbZnzx637fO07hKJ65LocUREN2/epMmTJ1P79u2pffv2FBERQbVr16Y+ffrQ8uXLyWq1qromavVay3HS39TZuUn/+vTpo3p9T7N582bq27cvAaCBAwdSbm6u0SZ5jJMnT9LTTz9NYWFhVKtWLXr11Vfp1Vdfpd9++81o04iI6P333y/3OWnYsKGh9rjya72FnH8q4j+78nGUtFdvze7fvz8BoEmTJin+jKguE/2lk5JWyumkvVZarVbKzs6mp59+2ubThoSEUO3atalz5840Z84cp9oqcn4SWnRZ6W9nhue6K86dO0cff/wxtWjRglq0aEEBAQGUmJhIP/30k9GmaeLcuXM0ceJEqlq1KkVFRVFUVBS99tprdPToUaNNq9T6qZdGKiHd02rva8fjJk2apHhcSUlJuXhcrdaJaqRo7K9XLC7F40qxuDPUaqu9rxwREaHJV/Y2JSUllJGRQYmJiWSxWKh169bUunVrWrBggansFOH69et0/fp1mjx5MkVFRVHNmjXpjTfeoJMnTxptWjl8MZa2xww5TDX64KgRWmJGpbgxIyNDdzvlkNNoV7qpR0ys5dwkHPWvdu3aptW/y5cv04wZM+j222+n0NBQmjhxIp07d47OnTtntGl+RX5+Pr3wwgsUEhJie8bMmzePbt68abRpNux1WM5f9JTOuYMn4jLHmFSKR9XGpCL3v1ZdVKttjvrmTt1KOje585POzfH8jHjGGMHx48fppZdeorCwMFseY9myZUabxciwb98+SkpKIovFQm3atKGvvvqKCgsLjTaLiMrnERo2bGiaPIL9M8Hbedjdu3crPnu04vi8UKt/cs8Zd2IRLXlYLT6vhOP1UnvNtORyRHPa0rk5y7uo6YMwggMHDtCECRMoPDycoqKi6N1336WioiIqKioy2jSX7Nixg7p06UIWi4UsFgulpKTQDz/8YLRZ5ZDTm61bt1bIBRjVH+KpfiqRnh6teTYRX1mq18j5w507dxb2hyV/z9FO0XqXZKOSnZKNSnYa4dd6kytXrtCMGTOoWbNmVLVqVapatSr9/e9/p4KCAqNNU3T9VyEAACAASURBVI1j/Ueq/XD9pyLe9Ns8nRfQUtPVepx9fcS+X9FVfUQkj+mOD6m1p1LCHR+SyP/zn3L1nwULFvhU/efGjRt048YNmjp1KjVp0oQCAwMpNTWV1qxZY/OzjYbj2oqYMa51t8bmSnPdrclo9XndXU+kt0FOqyWdVtJqX42Hicr+Junp6RQfH08Wi4VatmxJLVu2pNmzZ5tCe1yRnp5O6enp1Lx5c4qIiKA33njDVPUvJa1Siom9XR/XU8f0vF+12KI1XyZad/JELK2kf2piYrn11MTgZuHEiRP0wgsvUGhoKIWGhlKbNm1o8+bNRpvlEvbZtGMGn41IOd7Vimgt1ts+G1HFOFJN36I7dXQ9ax9q+1G15ClFtdUssM/mWczus0no1Vfh7XyYiB6J2umOz6YUCzrL2xUXF2uOIUX7gYzAV302xjycO3eOnn32WQoODrb1U86ZM4euX79utGlEVKb/rvopifTTXxFEY2U59Nx/rHW/j141Cnd8PT1ry47n5un+el/bO261WmnDhg22veP9+vWjfv360YEDB4w2jWGE2L59O8XFxREAat++PX399dd05coVunLlitGmVeo8kF65HiVc5V5E98e7s69eNLYSydm4s39DqV6mtJ7onClvzM3Rm/z8fMrPz6dp06bRXXfdRQEBAZScnEz79+832jRNSHNTHGenmGVuClFFfTQaM+TJzdjb4I2efdE+LSKxvimR/JI9amMLvfPdoj193sZ+dor93BRfmp2SmZlJmZmZ1KNHDwJA7dq1o88//5zy8/ONNs1GZfYxnVHZao2iuQh39wF7Y7+UPe70yJp9L6wju3fvpgkTJlBkZCRVq1aNXnnlFXrllVfowoULRpumCY7R1WOGGN0X9h94cxa0t3tv5exUq1l6x/ZmjNGJyOdjdGlGs+OcZrMgsp/U6M+K3nGrI1rmXrqjGe7GphJ6zPFT0gx3ZqFozXH42p5RovIzmgHfnNMsF/uaKf59//33TZVDNOvsZdH41yx5f2/MXnbWZ+DYo+BubC8yE1+vPkFfmb1sH/vax79uxL5TSeG9cgFgGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGIZhGLUovR3PpP8YhmEYE7Jv3z7q1asX9erViwBQfHy8Kd82m52dTRaLhV5++WV6+eWXqbCwkA4fPky33nor7du3j7Zv305hYWE0ePBgGjx4MJ06dYrOnz9PTzzxBAUFBdHatWsNtd/ePkfbROw7fPgwHT58mPr370/33HMPVatWzeWb7ktKSighIYGCg4MpODiYpk6dShcuXKCjR4/SY489RhaLhebPn0/z588vd9zjjz9OQUFB9PHHH9PHH39Mp0+fpqtXr9LWrVupVatWFBgYSEuXLnW63tSpUxXXUzo/+3NTc35EFa+z2s+ByFubiYiGDx9OAOhvf/sbnT17li5cuEAXLlyg//73vwSAEhISKlxL++vpeC2dXU+zkJ2dTTExMWSxWMhisVBycjIdPXrUaLN8Dumt7WPGjKGAgACKjo6mbdu2GW1WOex1t7CwsJzuRkdHl/scq9UFbyDdY0r3WWBgoJB9ki55QnflENUl0eOuXLlCMTExdM8999CWLVtoy5YtVFRURMeOHaOUlBQCQPv27VO8LvbXRI1eaz1u+vTpNH36dKfnJv17++23Xa7vbdauXUutW7emkJAQeumll+ill16ioqIio81ym8uXL9Ply5fp5ZdfprCwMGrSpAlNmzaNrl69arRpTmnbti01bNjQsPVd+bXeQsk/FfGfXfk4Stqrp2bPnj3bpgOTJk2S/Rl3dNleJyWtlNNJ+7/hb7/9RgCoV69etHfvXtq7dy9du3aNjhw5QkOHDiUA9OKLL6o6NzXnRySmy0p/OzM819VSWlpKpaWllJ6eTtHR0WSxWCg1NdX0fuqNGzfonXfeoWrVqlGDBg3ok08+oatXr5pWRyuTfuqpkXLY39Ou7mul4yZNmiR7nKR19vG4mthfNGfgTuyvVywuxeNKsbjStVSrrY6+clFRkSpf2Qzs37+fhg8fTsOHD6eAgAC6//77TRd7qmXu3LnUuHFjaty4MVWtWpVeeeUVysvLM9qsCvhqLE1Upn2eyGFqjaWJ1OmDo0ZoiRkd40Z7H0pvOx1x1E1JM13ppjsxsdY8soSc/h07dsz0+nfz5k367LPPqH79+hQZGUmRkZH01ltv0fXr1402zaexWq00Y8YMioqKotq1a9Nnn31GxcXFVFxcbLRpNrKzsyvosGMdSW+d0wtPxGWOMakUj6qJSUXvf626qFbbHPVNbd1K7ppJ5yZ3ftK5OZ6fEc8YIzl27BgNGTKEhgwZQhaLhXr06EG//fab0WZVevLy8ujJJ5+kJ598kgIDA6l9+/a0bNkyslqtRpsmi5RDMEsewf6Z4M08rPTcUXr2rF27VnMeViSmkHvOiMQiamNpUZ/X/prZXy819X6tuRzRnLaavIuz8zMD58+fp3/84x8UERFhi7MXLlxotFmynDx5kgYPHkwWi4W6du1KO3bsoB07dhhtVgWU9CY6OrpCLsCI/hBP9FOJ9vSI5NlEfOXffvtN0R8eOnSosD+ckpIia6dovUuyUclOyUY5O73t1xrJ9evX6cMPP6QPP/yQbrnlFqpTpw7NmDHDtH7QjRs3FOs/ZqRt27amqv9IOuqJ+o838gJq6w6ix9nXR+z7FV3VR0TymO74kFp7Konc8yErW/6T6K/6T0BAgM/Uf+bNm0fNmjWjZs2aUZUqVWjChAmmruebNa71dn+RWeNa0Rqb2rjWnZqMiM/rznqivQ1yWi3ptJxW+0M8LHHgwAF67LHH6LHHHqOgoCBq3bo1ZWRkGG2WLEePHqXevXvbru+wYcPo5MmTRptVDmc5OKWY2Jv1cTU6pgU971e1tojky0TrTp6IpZX0T01MLLeemhhcqUZkFLm5uZSbm0v9+vUjADR48GA6e/as0WbJwj6bdsziszmLd93x2bTsIfS2zyYXR6rpWxSto+td+1Djs2nNU4pqqxlhn01fzO6zifYYOsOb+TBRPRK10x2fTSkWdJa3k3qQtcSQov1ARuJLPhtjDoqLi+ndd9+11YK+/PJLKikpoZKSEqNNsyHpv1I/pcicCr0RjZWV0Gv/sZb9PiLX8MqVKx7x9fSsLTuem6f763157/iGDRvo3nvvpXvvvZeCgoJo7NixdPHiRaPNYhiXHDt2jAYNGkSDBg2y9WatW7fOaLMUqUx5IL1zPXKoyb2I7o8XPU40thLN2Yjk0SV/T6leprSe6JwpT83N8RalpaW0ZMkSuvfeeykwMJDGjBlDY8aMoXPnzhltmiKOc1N8YXaK0X1fRL7Ts68FX+nZJxLr0yIS75sSyS+JxJ965rtFe/qMxHFuii/MTtm3bx/17t273N9t/fr1RpvllMrkYzrDqFqjku+jxwwGT/aHubMP2Fv7pSREtN4MOUN3uXTpEv33v/+lOnXqUJ06dah69er0r3/9y9QzBjhG145ZYnSz7z/w9ixob/feytmpZi6sJ2J7jtH1xXFGs9nmNDubaeJqP6nRnxW94lZHROZeuqMZIrGpI3rN8VPSDNFZKCI5Dl/dM0pEtnjDfk6zmWc0S3NmpfjXF2JfIuNziGaevSyaQzRD3l/P2ctyPqGaPgPH2cvuxPaiM/H16hP0tdnLly5dKhf/uhH7TiWF98oZ/VI7fgkewzCMD2O1Wum9996j0NBQW6C8ZcsWo81SZOLEiQSATp48WWEjSGlpKbVu3Zrq169vS1hJlJSU0J133kmNGjWi69evez0JLb2Mwd4+R9vs7VOLtCnhP//5DxUXF1PDhg1dBvmzZs0iADR+/HgaP358ue9ZrVZq2bIl1axZk2rWrEn5+fm27z3++OM0duxY2d+5Z88eAkB33HGH0/UcsV8vPz+/3HrS+dmfm5rzU7rORBU/B4507tyZdu7c6fT3O3LkyBECQPfee6/s9+Pi4ggA/fjjj7avSUGK3PXcs2eP0+tpNpYvX07Lly+nVq1aUWRkJM2cOdNok3yGbdu22RqeGjRoQN99950ph3PZ664jorrgDSTblO4zKRDVap+kS57QXTkdFNEld4576qmnqFq1anTmzJkK37ty5QqFhobKBvxyzyI1hWutx0kvwUtKSlL8mUOHDlFoaCidPn3a5fpGUFxcTJ999pntWdu6dWs6cOCA0WYJs3z5clvzYa1atejjjz82dbHfHqMTsc78Wm/gyj915TfJ4crHUdJevTT7zz//pJo1a9KIESOcJmLd0WV7nXTUSnuddNxgFhQUJPuCnhs3blCtWrUoNDTU6XWWzk3N+RGJ6bKZn+uipKen01133UVVq1al999/n95//30qLS012iwbu3btol27dtE999xD4eHh9Pbbb9OVK1eMNssllUU/9dZIRxw1S20jkpzWyR0naZ1cPO4s9hfNGbgT+3srFndEq7aK+spmY/fu3dSzZ08KCAig5557ztQFf3vOnTtHSUlJFBAQYPMbzDYkxh5fjaUl7fNEDlNrLE30lz5o0QgtMaNj3GjvQ4nYqQUtummPOzGx1jyyhK/r35UrV+jf//43/fvf/6aIiAi655576JdffjHaLJ/j4sWLdPHiRerfvz8FBQXRSy+9RJcuXTLaLFmkF2TK6bCndE4vPPGMcCcmFb3/teqipG1K+nbo0CFZfVN7veSumXRucucnnZvj+RnxjDEL27Ztow4dOlB4eDh98803RptTacnIyKD69evb/s2aNctUeQ45zLCZyZlv7g3s8wtKz55GjRppzsOKPC/0eM5oiaVFfV6Rer9ovls0p60m76J0fmbj1KlT5TZnPfzww3T+/HmjzbKxZMkSqlWrFt1xxx2Unp5utDlOUdIbM/SHaOmn0oJITw+RmJ8pomHSS/Dk/GHpBWUi/rA0jNDRTtF6l2Sjkp2SjXJ2etuvNQt5eXn0wgsvUFBQEPXp08d0A2il2o8v1X/M8BI8b/ht3sgLqK1Zix6npT7iWCMRyWOK+pCidRxRH5Ko8uY/icpqP2av/xw9epTi4uIoICDA5h8dP37caLNcwnFt5Y5r3anJiGiLyHqi8bD0ghclrY6Li5PVan+Kh+05ePCgbUNsamqq7N/NKNLT06lGjRrUpk0bysrKoqysLKNNksXM9XG1OqZlj5GoPojucxE9TvTaeyKWJpLXPzUxsdx6amJwpRqRGVi5ciU1a9aMGjRoYKr7mn02ccziszmLd/3VZxONI0Xr6CLruduzrzVPKaqtZod9Nvcxs89GJN5j6Axv5sPcyWuJ2Cnis7mKBYnk83bSMVpjSNF+ILNgVp+NMQfSC1UeeOABCgsLo7feesu0tSBJ/5WeASJzKvTEnZkQSuix/1jrfh+Ra/jUU095xNfTs7bseG6e7q/39b3jku//7bffUoMGDejWW2+lzMxMo81iGEWmT59O1apVs9XJly1bZrRJLqkseSBP5HocUdujoCWHYm+LN3Mv7hwnEgPOmjVLcT2r1aq4nmgfoafm5nib0tJSmjNnjm0uSe3atWnBggVGm1UBaXaK/dwUX8ihGd33RWSePLmeNUFfyZO7s99ea21PNL9EJBZ/6pXvFu3pMxPp6ekVZqeYaT/R9evX6e9//zsFBwdTx44daePGjbRx40ajzVJFZfExnWFkrVHJ93F1nDP+/PNP1fe9aC5C1E5v7peSEOljMzpnqCeFhYVUWFhIb7/9NkVERNCdd95JW7duNdqsCnCMLoZZYnSz7z/w9ixob/feytmpZi6sJ2J7jtH1Q5rTbD+j2Wxzmp3NNDH7Z8VTPSIicy9FNMOd2NQePef4KWmGiE8smuPwhz2j9nOazTij2T72tY9/fQWjc4hGz14m0r8/wei8v96zl+XqKGr6DORegif6nPHWnCt37TQjcrGvhviXX4LHMAzD6EtRURGlpqZSSEgIvfvuu7ZktplJTk4mAHTt2jW6du1aue9lZmYqJtiIiN58800CQIsXL6bFixcLrZ+bm0u5ubn05ptvUpcuXVQfl5mZ6dS+N998s5x9anEcTqUm6ZaUlEQAaN26dbRu3boK33/llVdszu6XX36p2pawsDAKCAiokCCyX08Oab0vv/yywnqO56bm/LR8DhwRcVg3b95MAGjYsGGy3x8/frzmvytR+evpC1y/fp1efvllCggIoGeeeYaKi4uNNsnULFmyhKpUqUIJCQmUkJBgqkGCjtjrrlb0+ByL6q4a20Tsc0xU6Km7cjrozZfgnTlzhgIDA+mpp57SvJ7cs0hN4VrrcevXr6f169fTBx98oPgz48ePp8GDB6u03Dj++OMP+uOPP6hTp05Uo0YN2rx5s9EmaaK4uJheeuklslgsNGLECBoxYgSdO3fOaLM0YXQi1plf6w1c+adEzv0mEUS1V+1x8fHxNHbsWJozZ47TRKyoLrujk85o164dAXD6Agnp3NScH5G4LjvD1/xTiRs3btDbb79t24zXp08funDhgtFm0ezZs6lKlSpUpUoVio2NpSNHjhhtkmoqi356WiMdNUttI5Kc1skdJ2mdUjyuFPuL5gzcif2NisW1aKunngFG8s0331CNGjWoQ4cOdOLECTpx4oTRJiny66+/UrNmzahp06Y+4zfrFUuLPnfdyWEqNd4QuZfDtMeTL8FzJ2Z0104taNFNe/Q6PzXnJr342Z/078iRIxQTE0MRERE+0QBuFo4fP0533XUX3XXXXdSoUSPTD/VJTk5W1GFP6ZwjnshnEnkmLpOLSd29/7XqoqRtSvomNVJpzflJ18vxmtmfm5bzM+IZYyZu3rxJL7/8MlksFvrHP/7hc/kBX8ZqtdKkSZNsudi8vDzZoRBmxAybmdzxzfXAPr+g9OyRnk165mFFYgotOViteVg5lHxekZyMp/LdSrlpNXkXpfMzMxs2bKAmTZpQ06ZNDX9x9LvvvkvvvvsuWSwWGjt2rGkHBtpjhrq6kg/qqVynSE+Pp+JM0WvoCX/YmY0idko2ytnpbb/WbPzwww/UvHlzatasme2lh0Yj1X9iY2N9qv5jhpfgecNv80ZeQG3NWvQ4LfURx3MQ7UFyhpKuidZxRH1IIs5/SjjWf8xARkYG1axZk9q0aUM//PCD0eZoguNa341rlY7TEteK+k2i2iKynmg8vHnzZqdaLf29HY/z13hYYvXq1dS0aVNq0KAB5eTkGG0Off755xQQEEBjxowxTAPUYqaY2DEuVqtjWvYYieqDaHzuqbjeF2Lpdu3aqeqvdESpRmQmLl26RAMGDKDQ0FBaunQpLV261FB72GdzD7P4bM7iXX/12dyJI52hpD0i64n6bGbTVrPg6LMZ7bexz6YeZz4bkWf6KryZD3NHjzxhp9x97ioWJJLP20nHaI0hPdUP5E3M5rMx5mDHjh1Up04dqlOnDrVt29Z0g/cckfRf6RkgMqdCK96uZetRD9W630ekRiHt9dPb19Oztkzk3f56f6plX7hwgZKTkyk4OJi+/vpro81hmHIUFRXRI488QkFBQfS3v/3NsD3uIlSWPJA3cj2ivQ2O2MceWvIMeuZe3DnOFUr9o95cT80xvrT/v6CggAoKCmjcuHFksVho4sSJpphP5Tg7heemaMcseXI9a4KuMEvPvmiflkj+WTS/ROSZ+FNtvluv554ZsJ+dYpa5KSdOnKDo6GiKjIykqVOnmurlfGqoLD6mM4ysNYr4PmpqjWrve0/lIpS03pv7pdypNXojZ2gEx44do379+lFgYCC9++67pnihEsfo7mGWGN3s+w+8PQva2723cnaqmQvridieY3R9sJ/TbPYZzaI6pNdnxWwzTUTmXopohjuxqT16zvET1Qw5n1g0x+FPdTbHGc1mmDfnGPv6cvxrFEbPXiby/FxROXxp9rKjjrnTZ+AMpdjem3Ou1OBLfp099rGvffzrAsWX4AWBYRiGYTRSXFyMhx9+GNu3b8eaNWsQGxtrtEmqKC0tVfzepk2bAAD33Xef7Pelr2/cuBEA8PDDD6ta8/z581iwYAHmzp2LHTt2AACCg4MxaNAg1XZLtinZZ/+1jRs3qrYtLCxMtQ0SZ8+eBQDUqVNH9vv169e3/f/s7GyMGTPG5e+8evUqrl27hnvuuQcWi0VovezsbAAot57I+Wn5HKi9zs5o2bIlgoODcfDgQdnvHzx4EBaLBW3atFH1+65evQoAitfTrISGhuK9997DAw88gBEjRiA/Px9z5swBAAQEBBhsnblYtWoVBg0ahCeffBJTpkwBYO5r5Ex3neFMF1yhh+6qsQ2AZvs8qbtyOuhNli9fjtLSUsTExGg+VuS6iBzXq1evcv9rT2FhIQBg9uzZWLFihZA93qRJkyYAgMzMTIwYMQLx8fHYvHkzOnbsaLBlriktLcXIkSOxdOlSzJw5E4899pjRJvkkovqqF678U/uv6+E3iWqvmuO+/vprAMCBAwfw/fffY9myZU5/p6guu6OTSly6dAm5ubm49957Ub16ddmf+frrr23nBsDl+QHiuqyEO891owkJCcHrr7+Ofv36AQBSUlLQuXNnZGZmlot9vMmUKVMwceJETJgwAQAwefJkBAYGGmKLL+It/fRkbGl/X6u5p0WOk7QOkNc7pdhfNGfgbZ/X3Vhcq7Z64hlgNI8++ii6dOmCAQMGoFOnTgCArVu3olmzZgZbVp7c3FzExsaiefPmSE9PV/yMmQ1fjaXNlMMUpVevXrIxI1AWNzqLGb1ppxbdtNdMb57f8uXLAcCv9K958+bIzMzEc889h+TkZMyfPx+pqalGm2VqLly4gB49etg+P9u3b0eDBg0Mtso5aupIgL46J2kwAJsO65nPBDwTlynFpN6+/9VoGwBNOT/76wWg3DUT9e185RnjKYKDg/Hee++hVatWeOKJJxAYGIi33nrLaLMqBf/3f/+Hjz76CJ988gnGjx9vtDk+h1nysK7yC4C+eVitzws1x2mNpUV9XpGcjCfy3c5y06J5F7PTs2dP7Nq1C6mpqejSpQs2bdqE9u3be92Od955B2+88QaAslzqs88+63UbRBDRG3f6Q86fPw8A5XIBSj6op3KdIj6OJ/JsItp36dIlAPCaPyxaJ7P32QFUsNPbfq3ZeOCBB7Bjxw4kJSWhe/fuAIBt27ahefPmhthjX/+ZPHkyAHD9RwPe8Ns8lRcAtNesRY/Tu1fRHZzpr6idoj4kwPlPCcf6j9G1n++//x7Dhw/H0KFD8fnnn6Nq1aqG2eKrcFyr33Fa41pRv0lvP81ZX6RoPNyyZUsAUNRq6WuOWu2v8bBEnz59sHfvXowePRqxsbFYvHgxAKB///5et+X777/HuHHj8NZbb+H111/3+vpaMUN9XI+YGFC3x0hUH0Tjc0/E9b4QS0sxMQCn/ZWOOKsRmYnq1asjLS0Nzz77rK1mvXbtWvTo0cPrtrDP5j5m8dkA/eNdOczks7kTRyrhrLdbZD1Rn81M2momHH02AFi8eDH7bCows88G+EZfhV57qD0ZKznz2VzFgoB83k7K9UnflzsGqBhDeqIfyNuYyWdjzMHu3bvRq1cvdO3aFUBZrTY8PNxgq5zjSv89ob9a+ik9EfO6Ww8V2e8jUqOQ/jZ6+3p61pYB39kHYDZq1aqFxYsX44033sDjjz9u+zrvxWaM5tq1a0hISMCePXuwatUqxMXFGW2Sz1FZexvkULM/XutxorGVJ2IypRjQVb1MZD3RPkJ35uYYRbVq1QAA06dPR2xsLEaPHo0TJ05gwYIFCAry/ihV6Z7m2SnuY5Y8ud5zB5UwU55ctE9LJE4QzS8B+scWavLdej73zIL97BT7uSkADJmd8scffyA2NhahoaHYvn07WrVq5XUb/AGzaCjg/VojoL6mr0VDAai67z2Ri3Bmpzf3S7lTa/SFmo0IjRs3xsqVK/HFF1/g2WefxeHDhwEAn3/+uSEzQDlGd5/KGqN7a9YeIKYH3u69FbHTU7E9x+jusWrVKgAoN6fZn2c0A9o/K1r2k4riTo+InprhrH/endhUwhtz/JzhzCcWzXH4U52tSZMm5WY0AzB0TjPHvvpgdOwLePedFZ7O+4vomNa5ot6eB2CmOZ++PHvZPvYFYIt/RWNf83pjDMMwjGmZMGECcnJysGHDBp94AV56ejosFovNqQoLC0NYWBgsFgseeOABAH81y996662yv6Nhw4YAgEOHDuHQoUNO1ysqKsK8efPQr18/NGjQAOPHj4fFYsG0adMwbdo0nD59GnPnzlVt/8GDB53a17Bhw3L2eZKoqCgAZQ6ofTAtISU2gLJASw2LFi0CAPzjH/9wup4c0np//PGH6vWcoeVzIMecOXPQrl07hIeHo3r16qhevTq6dOmCefPmyf583bp18cEHH2Dv3r34+9//jvPnzyMvLw95eXl47733sGHDBrzxxhto0aKFKvsXLVrk9HqaneTkZCxbtgxpaWl455138M477xhtkqk4duwYhgwZgpEjR+LTTz9FQECAaZOrcrprsVjK6a4ztHyOi4qKdNddNbaptc9d1Oqukg5KumSvTc50yfG48PBwVcf9/PPPAICaNWvixRdfRKNGjdCoUSOEhISgSZMmmDBhAvLy8rSculf55ptv8M0336Bx48a2jUS+QGhoKObPn4/u3btjwIABtg2HZmbcuHFYuXIl1q9f77dNnOfPn8eECRPQtGlThISEoHbt2khOTkZycjL27NlT7mdLSkqwYMECxMXFIS4uDvXq1UNYWBjatGmDTz75BFartdzPq/FrASAoKMimu2r/1atXT/U5uvJPAdd+kxZEtdfVcSdPnsSLL76IF198EV9//TUiIyNd/k5RXXbUSUkrRXTy8uXLyMnJQWJiIurVMBAiTAAAIABJREFUq4dvv/1W9uek85POTc35eQJf9k8l2rdvj/bt2yM7OxtEhPj4eNy4ccPrdqSlpeG5557D5MmT8cknn+CTTz7xqwGo/qSfntJIx/ta7TFaj5O0DpCPx5Vif9Gcgbuxv1afVy4Wl+JxV7G4iLbK+cohISE+4ysrcdttt2Hr1q2IiopCVFQU+vbtayueGk1hYSEKCwvx0EMP4fbbb8eGDRt84gV4vh5L2zf3GJ3DlJgzZ06FfJ2amFgOT8aMWmNwLbqpFr3P7+eff1bUvyZNmvis/gUFBeHTTz/FU089hZEjR+KXX34x2iTTQkQYOnQorFYrNmzYgA0bNpj6BXj2Guyow451JMB9nZPTYHsd1jOfCegXl0nxqLOYVI/7X0m7teq3pG1a9c3+ejleM/tzkzs/6dy06Jsv5iVFefTRRzFjxgxMmjQJK1as8JlmV19l6tSp+OijjzBv3jy/ewGefQ7BMY/gmEMAyucRpByCUh5BeibI+eaOfrk38rBA2XNH6dkjoWceVuvzwtVxIrG0qM8rkpPxRL7bWW5aTd5FxKc3A7Vq1cLq1avRsWNH9OvXr9y5eIMVK1bgtddew9SpUzF16lTTvwBPi97IobU/xNEHdcwFKPmg3qwHucITeTYt19C+PiPqD0+YMEGznVrrZHJ1JDk7JRsrs18bFRWFtWvX2p61/fv3N0X9JzAw0G/qP9KzQK7+o8ZvE6n/SDqqd/3HU/lPkZq16HGO9RH7fkXH+ohcjUS0B0kOZ/or2lPpibypEv6a/wTK13+k2o+36z9r1qzBmjVr8Mgjj+CVV17BnDlz/O5lKpI2iuqjq7jWm/rojMoc1zrDmd+kt8/rrC9SNB6uW7euolZLOi2n1f4cD0tUq1YNCxcuxPDhw5GamorU1FT89NNPXls/NzcXubm5GD16NJ5//nlTv0zF3ZgY0F4fl2Jiufq4FBM7xsVqdUzNHiM1ONMH0fjcE3G9t2NpLfrnGBM76690dW5m73cMCAjAtGnTbHozaNAgr+bi2GfzP58NUI53JfzNZ9MrjlRTRxddT9Rn0zNP6a62mg17n03y29hnk8eVVqnBGz6bJ/FWPsxdPdK6p9kRNT6bq1hQKW8nHaM1hnSGaD+QERjtszHm4dKlS0hISECnTp2wdOlSLF261NQvwHPUf0D7M0ALov2U3q5lu6qHiuz3EUHy8wD9fT1v1ZbVoOdz2Bdr2RaLBZMmTcJrr72GJ598Ek8++SR27NhhtFlMJeexxx7D3r17kZmZ6XfD9f0pD+SpXI9ob4MjavfHixwnGlt5otdAKQaU9mHquZ7onClvz83Rm0GDBiEjIwNr1qzB//3f/xliw7hx4/x+doqv9uxLeUy1eLsmaKY8uWiflkhtTzS/pCdq8916PffMiuPcFG/PTrl06RIuXbqE7t27o06dOn77EgB3fUxn/bNca9Re09eioXrc96K5CGd2enO/lD/3yLrL2LFjsWjRIlse7a233jLEDo7R/8LM+ukP+w+8PQvaGd7svXWGp2J7CY7RtSPNaHac02xG1Mw0cYbWz4roflJRzDJr0ln/vLuxqSfm+IlqhpxP7Ikchy/W2exnNBs5p7kyxL6A2OxQxxyiWWaHOsPbs5c9kfd3Zx6p1rmiavsMtODsmrg7E1/r/D9RO32FsWPHlot/hWNfIvKlfwzDMIzB5OTkkMVioQULFhhtimaSkpIIAF27do2uXbtW7ntxcXEEgLZv3y57bG5uLgGg9u3bU/v27ct9r6SkhNasWUPDhw+n4cOHU0REBAGgO+64g9588006fPiwW3bHxcU5tS83N7ecfaI0bNiQAgMDnf7M1KlTCQCNHz+exo8fX+H7HTp0IAAEgO677z6Xa545c4bq1q1LY8aMcbmeHNJ69913n9P1GjZsqOr8tHwOHOncuTONGDGCdu3aRVeuXKGDBw/SwYMHacSIEU7PgYho4cKFdOutt9quHQCKioqimTNnOrXXHulaOruevsLHH39MISEhFBISQocOHTLaHNOQkpJCLVu2pBs3bhhtimrsdVctrnSBqLzuRkRE6K67amzT4z7TU3fldNBel+y1yZUuOeqZmuOkv3W9evXokUceoSNHjtCRI0coPz+fZs+eTeHh4dSiRQu6dOmSqmvi6rrodRwRkdVqpRYtWlCLFi3os88+03y8GcjPz6e6devSxIkTjTbFKRkZGWSxWGjZsmVGm+I2bdu2pYYNG5b72qlTp+jUqVPUpEkTqlu3LmVkZFBhYSHt37+funXrRt26daMqVarQtm3bbMesWLGCANA777xD77zzDuXl5dH58+dpypQpFBAQQC+99JLs+s78Wm/gyj8lcu43aUFUe9Uc17t3b3r66afp6aeftn1tzpw5BIAmTZoke4yoLjvqpKSVcjqppJWTJk2iSZMm2fzF7t270y+//KJ4DaTzs8fV+Tnijr6eOXNG1XPd1zh69ChVq1aNXn31Va+um5+fT1FRUTRu3Divrqs3lUU/PaWRjve1dE87u6979+6teJykK45IWqfk+ynF/qI5A3dif1Gfl0gsFhfRVjlfOT8/X7OvbFb+/PNP+vPPP+mWW26hF154wWhziIjohRdeoBdeeIGioqLo3LlzRpujGV+NpSXtM0MOk+gvfXDM19nrgzONsEeKG7XEjFrt1BKDa9FNV1itVs3np+bckpKSFPVv9uzZPq9/paWlFBMTQ9HR0UabYloWLlxIAQEBtGPHDqNN0YT9Z1epjiSicyUlJRV02FGDPZHT1DMus49HncWk7t7/crUWSRNd+Xf22GubFv12db3sz03u/KRzU6tvnnzGmJkRI0ZQ48aNqXHjxj5V8/AVjh8/TsePH6eqVavSW2+9ZbQ5wkg5BLk8gn0OwTGP4JhDICqfR5ByCFrzCEZgn19QevZI+qhnHlbv40RiaVGfVyQno3e+21VuWk3eRYtPb0YKCgqoSZMmth4ab3Djxg1q1KgRjRgxwivr6Y1WvVHbH+LMB1WbC/BGPUhtT4+eeTatvrJjfUbUHw4PD9dsp5Y6mdo6khn8WjNx7NgxOnbsGEVERNA777zj1bX9of7Ttm1bxfpPkyZNFOs/kt+mVP/Jy8sTqv94Ck/lP0Vq1u4cR/RXfcS+RuKqPuJOPcYRtfqrtY6jV96U859l2Nd+vFn/KSgosD2ffNW3k1AT14rqI8e1FTFbXKuEK79JT5/XVV+kHvGwo1ZLOi2n1ZUhHpYoLS2lXr16Ua9evejOO++k4uJir6wrPZ/atm1LJSUlXllTD0RiYpH6uBQTa6mPq9UxuT1GWnGlD6L3q955LyNiabX6JxcTO+uvlDs/X+x1lPoMGjVqRE899ZRX1mSfzT99Nmfxrr/6bHrEkWrr6KLrifpseuUp3dVWM1NaWmrz29hnc42ZfTY59Oir8GY+zB09cmdPM5F6n80euVhQzV5oLTGkEqL9QEZjhM/GmIvx48dTvXr1KD8/32hTNCHpv9pngFr91auf0lt7G9X2Wovs93FES93cE76es/X0qC2L9Ne7+xz29Vq21Wq1xQX33nsvWa1Wo01iKiFpaWmUlpZGFouFNmzYYLQ5wlSWPJCncj3u9CgQad8fL3KcaGyl5x4tV/Hw1KlTdV9PZM6U3nNzjGTOnDkUEBBAOTk5lJOT47V1pbkp/jA7Ra7vi4h79u3RsyZotjy5hNY+LXdre6L5JQmR/J+WfLe7zz1fQZqb4u3ZKaNGjaJRo0ZRw4YN6cKFC15b1xN40sc0U/+sMypzrVEJkVyEmrqKN/dL6dkj6w97YeWYPn06TZ8+nQIDA2nnzp1eXZtjdN/RT3/Yf+DtWdBKeKv3Vu1cWE/E9hyjiyPNaPalOc3OZpoooeaz4qoG5605ze7irbnCIrGpJ+b4iWqGHHrnOHy9ziY9C4ya0+wvsS+R/rNDHXOIZpkd6gxvz172RN7f1TxSOUTniqrtM3A2e1np/ORwZya+yPw/JRt9dT+CM1TEvlNJ4b1yRr/Ujl+CxzAM42MMGzaMOnXqZLQZQrjzErxDhw4RAFuAaE+DBg3KBazPPPMM/fDDD7rZ7aqIcOjQoXL2iaIm6Xbt2jXq0KEDBQcHU3BwMH366ad04cIFOnbsGD3zzDNUr149m+PZpUsXp7/rwoUL1K5dOxo8eLDiph379T799FPF9bp06eJ0Pb1egid6ne+//37Z32u1WumJJ56g4OBgmjx5Mp05c8bWwPH5559TWFgYDR482OVGKvtr6ex6+gqlpaV022230W233WaaAfpGc+bMGQoKCqL58+cbbYomtCZX1egCUXndfeaZZ3TXXTW26XGf6am7rnTQEXtdUtI8V8fZ07t3bwJAzZo1k9Wsf/3rXwSAXn/9dae/34iX4GVkZFBkZCRFRkZSYWGh5uPNwocffkjVq1c3NDHnim7dulFSUpLRZuiCXCJWarQCQN999125750+fZpOnz5NoaGh5fyIFStWUPfu3WXXGD58OAUHB1NBQQEVFBSU+57RiVg1TS56+Kei2qvmuC+++IKaN29uSzRKuErEiuqyo046aqW9TrrSyhs3btBvv/1G48aNo8DAQHr77bednp893noJnvQ3UPNc90U++OADqlatmlefG5988glFRkZW0ANfo7Lop94a+cUXX8je1642xUrHKB2nVDyXtM4+HlcT+4vmDPSK/R1R8nnlYnEpHncWi4tqq16+stn5+OOPKTIyki5fvmyoHVevXqXq1atT9erVafLkyYbaIoqvxtKumjC9mcN0haQPzrTaHilu1PLs19NORxsddVPSTDnddIW0CU3L+ak5N6npwZ/178cffxTKrVQWevbsSQMHDjTaDM248xI8ZzrXoEGDCjrsrXymnnGZFI86i0k9df/ff//9irooh722qdU3Nc9U+3OTOz/p3NSen1HPGKM5duwYBQQEUEBAgM9v+jYjUn6pfv36dPPmTaPNEUZpM5NSDoGIZHMIROrzCI6YZTOokr8hPXf0zsOqPUbNcaKxtKjPK5KT0TPfrSY3rSbvosWnNytz58615YhOnz7t8fUWL15MgYGBdPLkSY+v5Qm06I2W/hA9fFBv1IPU9vTo5WeK+sr29RlRf/hf//qXZju11snk6khydhrt15qRv/3tb9S4cWMqLS312pr+UP9Regme5Lcp1X8kv02k/uOIGTahi+Q/RWvWosc51kfs+xUd6yNaBr+rjdfV+pCiPZV65U05//kXUu3Hm/WfTz/9lCIiIigiIoLy8vK8sqanUBPX+oM+OsPMca3a4/Tqv5Fw5TfpqS2u+iJF42Fp6LecVks6LafVlSUeljh69CgdPXqUAgMDafHixR5f7/Tp07Yer0WLFnl8PT0RiYlF6uPuxsTOdExuj5FWXOmDaHyud97LiFiaSL3+OcbESv2VSufny72OU6dOpcjISCoqKvL4Wuyz+afP5ize9VefTS6OVOpbdIaaOrrSeq7iVlGfTc88pai2+grss6nDzD6bHJ7uq1C7J09tPkwvPXJmpzPU+GyuYkGlvJ10jNYYUgmRfiAz4U2fjTEPV65cocjISJoyZYrRpmjGUy/B06uf0hu1bCLXvdai+33k0FI394Sv5+nasif765Xwh1r27t27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R4u6XkhISJHX85YZDN7GYrGocePGqXr16qlz586pc+fOeeza2twUf5idYu/cl1JyZr+0e4K+cmbf6DktpZzf2zO6vmSPI72Fq9e7jZ7p82ba3BRPz07573//q/773/+q8uXLq3Xr1nnsuu7gzhrT287PFsesvUajtY/Z58NKk+s9db+UxhVnZH39Xlh78vPz1YgRI9SIESPUPffco9LT0z16fenRfSt/lub+A1f26EZfZ8YsaI2nz95qcToyF9aTvb2vMLNH12Y0+9Kc5uJmmnjL/aRFccdME1vunCvsyt5UKdfM8SsqZxhd1zOyxmH7Xvr6GQ2N9j1s1pxmf+l9lXL97FDbNURvmh1aHGd7srI0e9leTejIOQPbPaLS9PZGZuIbnf/nz3WdNa3/LaH3/VIV8Vw5sx9qJw/BE0IIH/Tzzz+rcuXKqY8++sjsUByiDalxpBDYvn27evDBB9WDDz6oatasqWrUqKEeeOABlZCQYFL0hWnx2cZmLz7rASoBAQFq165dhX5fG1JeXKH07bff3vbfXbNmjRo2bJgaNmyYatCggapatapq3769+uCDD4pc2IuMjDRcQGrX024Gd+R62s/n7M9m73125O9Bdna2iomJUQ8//LBq0aKFqly5sqpVq5aqVauW6tu3r5ozZ06R17p06ZL605/+pNq2basqV66sKlWqpCpVqqRatGihXnrppdsW8LShoP5Y6FosFjVp0iRVqVIlFRcXp+Li4swOyavk5OSobt26qTZt2qiLFy+aHU6xHMm73vz32NHYbONzJO+WlJdclXdt85J1biouL9nLZ468TpOYmKgGDhyo58BKlSqptm3bqvfee6/IWI3m69LkeYvFolq2bKneeeedYn8eX3D06FF19913q8jISGWxWMwOp0QxMTGqfPnyavLkyT4Rr7VPP/3U7t+1v/zlL4X+vYyMDPXaa6+p5s2bq4oVK6p69erpi3a2C6oXL15U48ePV40aNVKNGjVSFStWVPXr11fjxo1Tb775ZqHrBAcHO1XXeoq9+rSousl6IdY2TxqtcYzmbFvjx48v8nUDBw4s9O8aycsaLU9qubKkPJmZmam+++47NXDgQP0hwZUqVVI1atRQwcHB6h//+EeJ13TmZ1PKWH715u91V/r5559VxYoV1euvv27K9X/77TdVv3599cADD6irV6/6zAOjy3L+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g29+09z1vW8fXHdd0L0UERGRN2z7dvPG3tpq9ix/8xu48krTduyA/ftheDjoXoqIiIjMW/X1sG6daTExQfdmgdq+fWZe2tYGDz0E1dVm88nOSffvNwkMIiIiIiIiF8noKDz2mGklJeaClLY2ePJJsyTZs8e0lJSge7oA6BI8ERERmQdeeMGczbYX39mz27r87gJkZsJtt5n8kenpoHsjIiIyf0RGmnbTTWYzqa3NvF8ePz5z2KKoyBzA6O4OurciIiIiIiIiIiIiIiILVlsbvP3t8KMfwb/+K9x//0yoRs7DW98KL75o6hu/6U3mQjwREZFFTFMEERERoLPT5C9u3jy7gHRrq6nns21b0L0UERExNeR0EetFVFRkdtHvv9/cKPHDH5oqGu9/P+Tmwt69pjU2Bt1TERERERFZYsbGTDtwwBR8ycuDr38d3vUuczb7+HE4dAh279Y6UUREZFFKTjZv9GVl5k3/0CGzn/npT0NGBtx9t5kQiIiIiIhPQwPk55smF0FSkpmXHj1q5qTbt8N995lm56XHjgXdSxERERERWcDq602qbmamWX7s3g1XXWWWIS+8ALt2wbJlQfdygcnPN/9jRURERC6zF14w7YYbzOV3Y2Pw85/PXIh3441B93AB+vznTX7IL34RdE9ERETmL5tvefjwTL7l9dfDV74C2dlw++3w7LOmuOjkZNC9FRERERERERERERERmfdefNG0HTvg1VfN4/e+N+heLVDr15v/gW97G9x8M3zjG6aJiIgsQroET0RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERM6bLsETEZEla2oKDh6E22+H7Gz46lfhxhvhyBHTDh2C3bshPj7onoqIiMwYHISEhKB7sUjFxMCuXfD881BVBR/8IHzve6atXw87d8KBA3DmTNA9FRERERGRRayiAvbuhaws0z7wARgdhSefhKYmeOghKCkxTURERJaI7dtNe+wxMyH4i78wgc6tW2HHDti/37SRkaB7KiIiIhK4hgbIyzNNLpDPN3AAACAASURBVLLt22HfPmhrM+3BB+GFF2Dbtpl56ciI5qUiIiIiInJeXnjBnOfZvBl+8AP49KehpcW0xx4zW+DyOuXlQX190L0QERGRJeTgQbj6arj+etPGx+GXvzRzvhtuCLp3C9z27fC2t8E//mPQPREREVkYbL7lvn3Q1QWPPw69vfDud0Nurml792rvREREREREREREREREZA6PPWbyPW64Aa68El56CYqLg+7VApeQYOoZf/nL8NnPmnb33SbJRkREZBHRJXgiIrKkdHTAAw+YtmmTucumrg4efhhaW00e47ZtpomIiMxHugTvMtm8Ge6/H5qbTfvRj8wleR/4wMwBh5Mng+6liIiIiIgsEn19pkb4ddeZhJ9/+zf41KdMq6szd3Xv2gXR0UH3VERERAK3di3s2QO1tWaSsH493HOPaZmZcO+92rsUERGRJa2hAfLzTZNLJDnZtN27oazMPy/NyDDt7ruhvDzonoqIiIiIyDwyNmaKYlxxhWnXX2/i4d/5DjQ1wZe+BGvWmCZvUF6eSUQ4fTronoiIiMgid/AgvPnN5qx2YiL87nemvfAC/MEfBN27ReRzn4Of/hQqKkwTERGR8xMTYw5iPP88VFbCBz9o2ve/Dxs3mknMY4/ByEjQPRUREREREREREREREQncxIQptfuRj5iyFffeC88+a44SykUQEWFqhfzkJ6b96EfmpsHOzqB7JiIictEsC7oDIiIil9rUFPziF6aI9NNPQ1ycef797zdFpLduDbZ/IiIiF2Jw0BwKlMtk+XLzcdcu01pa4Ikn4FvfggcfhLe8xbx+113woQ9BbGxwfRURERERkQXl5ZfNx/37zTJjchJuucWcr77xRpOzIiIiIjKnyEi46SbT2tvNc489ZvYuH37YJLvu3g233mpe0226IiIiskQ0NEBubtC9WEIiImbmpR0d8IMfmOcffdRsfF17rTntduutmpOKiIiIiCxRHR1mifDII+Zetne/2zz/yCNwzTXB9m3RysszHxsazI2DIiIiIhfJ9DQ895x5/Ld/C7//vdkefukleNObgu3bonbLLVBQAF/7mvn8298Otj8iIiIL0ZYtcP/95vFXvgK//KWJaX/0oyamffvt5rVPflL7KSIiIiIiIiIiIiIisuR0d5twyaFDcOAAvO99QfdoEXvnO83HF14w5y537IB/+zfzUUREZIGLDLoDIiIil0JHh2kPPACbNsHOnVBXZ+o9trWZtm+fLsATEZGFZ3AQEhKC7sUSlpUFe/bAiRNmkzglxbQ//VNTSfHP/gyqqoLupYiIiIiIzFPt7TN7ljt2mPbyy+YMdWsrPPWUKQijC/BERETkgqxbZ9qePSYo+rOfwapVcOedkJNj2t69ptitiIiIyCL26qswMAD5+abJZZaebuake/bAyZPw/POQkTEzL927V/NSEREREZEl5OWX4a67zHLgW9+CP/kTs1R46inTdAHeJZSbC5GRUF8fdE9ERERkkZiehmefNRfdvfvdpq1day7Be/55XYB3yUVEwGc+A48/blpHR9A9EhERWdiioszBjaeegsZGE8f++c9Nu/JKc9DjoYegpyfonoqIiIiIiIiIiIiIiFxyr7xiwiMtLfDii7oA77IpLTXJNwUFcP31JidERERkgdMleCIismhMTcHBg+bGeFvL8f77Te7h0aPmFvnduyEuzjQREZGFaGgI4uOD7oWwbBm8613wzDOmNTfD5z9vLsYrLDQ7+Pv3mzYyEnRvRUREREQkIJOTptl9y9xcs2d5ww0m+eeVV8y+5b33mvu1RURERN6wyMiZ4iwNDXDffab9y7/Ahg2wcyccOAATE0H3VEREROSis3er5eWZJgHyzktra81tFz/4gWkbN5p4+3/8h0n6ExERERGRRWF83Gw/X3edaTt2QFkZPPywWa/dfz9kZQXdyyUiJsZcVK5LyEVEROQNmpoyl9/t2GEuvlu3ztTe+v3vZ56Xy+TDH4bERNMefTTo3oiIiCweGRmwZ4+Ja9fWmovwtmwxF+Pl5sJHP2qqvYqIiIiIiIiIiIiIiCxCP/yhyfstLoaXXoKSkqB7tMSkpJhzlvfea3JD9u41CTs6dykiIguULsETEZEFr6MDHnjA1MbZuRPq6swh2YcfhtZW2LcPtm4NupciIiIXx+AgJCQE3QuZZd26mUMOP/uZOdjwqU+ZlpsLf/7ncOJE0L0UEREREZHLpKbG5JNkZpr2jndAW5t/z/LKK00TERERuWQyM82+5Z49UF9v9i5jYuD97zf7lnv3mtbUFHRPRURERC6KhgaIioLsbNNknsjLg698xcw7m5rgySdN8sMf/qEpHvgP/wA9PUH3UkREREREXqeurpkzPXfcAatWmfb88/DKK7B7N8TGBt3LJSgvT5fgiYiIyOti62jZS+5uvdXcDfPyy+a57dtNk8ssNhY++UnTHnkERkaC7pGIiMjiEhFh2g03wBNPmAMgX/0qHDoE11wDpaWmPfSQ4tsiIiIiIiIiIiIiIrKgTUzMlJq46y74zGfguedM/q8EICoK7r8fHn8cvvENeOc7TTt9OuieiYiIXDBdgiciIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiLnbVnQHRAREblQU1Pwi1/A/v3m86efhvh4uP12uOceKC0Ntn8iIiKX0uCged+TeSoyEm6+2bSODvPcD34Ajz4KDz4I114L994Lt95qXouODq6vIiIiIiJyUY2OwrPPmn3Ln/8cMjLgIx8xr+3eDevXB9o9ERERWeqiouCmm0w7cQL++Z/hu981r/3938Pb324mLe99r/laERERkQWovt7sySxfHnRPJCwbH9+1y7SaGjMn/cpX4ItfhHe9y7x+331wzTXB9VNERERERM7pyBHz8VvfgscfN+uwD38YPvc5yM0Ntm/ymrw8aGgIuhciIiKygExNwf/+3/DXf20+r6mB970PnngCCguD7Zu85p57zMcHHzQT8d27g+2PiIjIYrZqlXnvveceePnlmQI3f/VXsGePiW/v3g033ggREcH2VURERERERERERERE5Dy9+qqp4//735vPn3oKbrst2D7Ja/74j02Sjq1X/D/+B/zkJ0rcERGRBSUy6A6IiIicr/Z2eOAB2LgRdu6EujrTHn4YWlth3z5dgCciIovf4CAkJATdCzkv6emm7dkDJ0/C88+biot33gnZ2abt3WsqMYqIiIiIyIL08svmnut774XMTPjgByEmBn78Y1NL7v77TdMFeCIiIjKvbNxoJiktLaY9+aR5/v3vhy1bTFC2qyvYPoqIiIi8Dg0NkJ8fdC/kvG3ebOaljY3wjW9AdbVp114LO3aYIoLDw0H3UkREREREXjM1Bc8+a87zXHmlab/6FXz1q+ZMz0MP6QK8eSU/XznKIiIicl6mpuDAASgqgjvuMOe0S0uhvNwUOlMdrXkkLc20O++Ef/gH84cnIiIil9727aagzb59Jrfy8ceht9dslG3eDF/6kmnNzUH3VEREREREREREREREZE6vvGKO7TU3w4svmqYL8OaZq66C3/3OtJQUuPpqeOaZoHslIiJy3nQJnoiIzFtTU6YdPGhuh8/NNTVvdu6EY8fg0CHTdu+GuLigeysiInJ5DA3pErwFKTISbrrJnP5sbITPfta0J5+cueH3wAGYmAi6pyIiIiIicg6nT5v6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NRMAgES3caM0apSt637wQTu7ZPVqi8JCDsDDAfTqZdGzp/TII35nk5D8bJfRHgSAg8P1uxremvH166W//U1avtwGEo891mL0aGtoAgAAAAAAAACApDRjhnTqqRZt20rz5nEAXjgSYX7J9zmmU06xX5gWLaSTT64sSgcAIIY4BA8AIElau9Zq10aPljp0kPr0sf1bpk6tXCBRWGjPAQifc04VFRWqqKioFZ8XQGyVlXEIXri4/oah6gZ+O3da5OdLJ57IBn4AAADw3fz50tChUps20rBh0pFH2oF3RUXS4sXWnM3I8DvL5BLYZ4lnv8U5l1z9JQAA4J/0dIu8PGn6dGnVKmn4cOmFF6SOHS3y861ae/duv7NFAMblAQB+KimR6tWTMjP9ziTx+Tk+5MfnrZH69aWBA6W5cy3mzZO6d7dBSm+wctUqCwAAACBGtmyxA+5ycqQLL7Ro2NDmyxcssANRGjf2O0skhexsDsH7L2omAACJ6Icf7OC7UaOsRnLcuMohyMJC24OqRQu/s0RSGT5cmjXL1othH362y2gPAsDB4fodhqZNbdDw889tjvuXv7R44AHbEXfQIGnOHL+zBAAAAAAAAAAAYXLOzgoYPFi67DKLt95iv61wJcL8UkLMMWVmSu+9J/XvL110kcXo0X5nBQBIYWnOOb9ziERSJQsAiW7PHumdd+x8k3//Wzr8cHv8yiutto0D7xAVn3wi9expi2azsvzOBgCS2nXXSWvWSK+/7ncmSGnz51sD8bnnbHO/K6+Ubr/dnuNeDgAAgBj69ltp8mTpiSfs38uXS7m50hVXWLRq5W9+SGF33WXFOp984ncmAJCSsrOlm26y9++6y9dUkMy8yW2pcoI7I8MaijfeKLVv729+AADAV3/6k/TMM9KyZX5ngpT23Xf2izZunLR+vT3261/bjtR5eb6mBgAAgNSxZIn0+OM2b163rvSb30i33WbPZWf7mRmS1tVXW0HGa6/5nQkAAAjwww821PjXv9rSHclqK267TWre3N/ckOT27JE6dZLOO0/629/8zgYAcACUsSPmfvpJmjZN+sc/pIULpWOOsXXjkm1cwEIdAAAAAAAAAAASztatto3C669Ljz0mXXON3xkhJUycaG9vukkaONAK1hs39jcnAECyGifplmBPpMc5EQCAz9autRg9WsrJkfr0kTZtkqZOlVav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5OTxb5eISIx517vMIb9DbWSIi4PHH1edAZGo27IFvvtds7oFprLmjTeak2+mTYtu20RERGRc2P2LYJJZHn0U0tLgox+F66+HM86IbvtEZBgPPABXX22ehyv0l5Rkrp/4hMlSExGRUXn3u8385nAH4f35z/DOd0amTSLi0dQEv/udKX5cWgpr15rECzBF69LSots+ERERj8WLobx8+M898YTW0EUmDDv39uST8J3vwIsvmnHnTTfBxz4GiYnRbZ+IiIiMu7174d574f77B3/1b9wIt88/j8MAACAASURBVNwCCxdGs2UiU0hNjfmB6+oa/rO1teZq9wSJiIiMMXv43X/8B7z5pjn4zp67deqp0W2byJTT2wt33QXf/z4cOTJY7c9vM6PdA/6d76hwmIjISbJp7EOdVZ+UZFLYQWnsIhNOVRU89BDcfbd5XV0NF11kci8/+EFISIhu+0REREREREREREQEMHsML73UPI+Phy99Cb79bfO6qws+8xmzbgNw663wta/pXAORCaO11SyY/vnP5vUPfwhXXTV4/1vfgq9+dbDW7759MH9+5NspIiI6BE9EYldnpwkc77vPFEsEWLoUPvUp88jPj277RMTDzvL86U/hq5smJZkf4B/9KHLtEhGJIT/8IXzuc0MfgjdrlsmVVj60yASxfbu5fv/78JvfwPTp5hScm2+G3Nzotk1ERETGREUFPPywGa8fOmTes+dE6IwIkRjS0jK4sNDdPfRnn34aNmwY/zaJiEwyv/oVXHnl0IVacnKgvl5nHohE3cAAPPPM4AnfAOnp8JGPmIWKlSuj2z4REZHjPvlJMzcXLhUpPh5WrDBLdtpwJjJBlZSYQ5h//WszP2cPYb7pJsjLi27bREREZEzYOeG//9382n/ySViyBG68Ea65xtxLT49e+0SmrFtugXvugZ6e8J+ZOxcqKyPXJhERiWnbt8Pq1SP7bE+PmQ4CU3/o4EG47DJzEN7SpePWRBEZia98xRxsN5yUFHO95ZaRfV5ERMKyaewjSWEHpbGLTFj2h/ixx0zu5TPPmPm1q6+GG26AmTOj2z4RERERERERERGRKSwQgFNPhepq87q/3+w3fPhhOP98+NCHYM8e+OUvzX1bRl1EJpCBAfjGN8zzb34Trr0W7r4bnnoKPvABcz8pydy/+OLBOhkiIhJJOgRPRGJPaSk8+KDJ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428bewOKvyc4d/zt7h+98bd7L6XibxF/7vjbbwwJ/nslFX9PTN742/7e015zkbGnveaTjzv+tmPMofpPxd8i/tzxt3efkDf+9vaRir8nJts/uudSgJB95O59QtpHLjJ67nx1b4w+XP+pfeQTk2J0kchRjC4iIiIiIiIibuFqoQEhdca9a8CqhSYycuFqoQEhdca9tXhUC21i8uZn29xswDc/270+rPxskWDe/Gz3GrB37cLdRyo/WySsu4HP+d3QIXhj4MiRI2zevBmALVu28Nprr7F9+3YCgQApKSlBm+3OOOMMzjjjDE477TSSk5Oj2WyRKaG2tpatW7dSUlLC1q1bAXOgxaFDhwCYN28ea9euZd26dQBccMEFnHXWWfr5jJD+/n5nkPfcc8/x4osvUlJSwr59++jv73cGdrbvtP3o4sWLo9lskSmhv7+fffv2sXXrVqf/tEXem5ubSUxMZPny5U4wdu6553L++edz6qmnRrPZU0ogEADg5ZdfZtOmTbzyyiuUlJRQW1vrTDItXrw4pA/Ny8uLZrNFpoRAIMCOHTsqBab7AAAgAElEQVSczUO2L929ezc9PT1kZmayZs0aAM4880wuuOACzj33XGbMmBHNZk96AwMDbN++nWeeeQaATZs28fLLL1NbW0tiYiKnnXYa//RP/wTAunXrWLduHUuXLtXEvYhHe3s7JSUlvPzyy7z00kuAGY9UVVWRkJDAihUrWL9+PRdddBEAF110kfq3cWZja3dcDQTF1t4xIaDYWmSc9ff3AwTF1u64GgiKrRVXR1dHR4eT3PH888/z6quvsm3bNg4cOMDAwAB5eXmcfvrpAKxevZrVq1dz+umnU1xcTFJSUjSbLiI+BgYGKC8v5/XXX2f79u1s27bNOZy0oqICgFmzZnH66adz5plnsn79egDWr1+vubMosevt3rV2wFlv9661A1rPExlndq0dcNbbvWvtgLPerrX2yAsEArz44os899xzvPTSS7z22mvOwYaJiYmsWLGCM88803mo/xQZGx0dHWzbtg2A1157zXm88cYb9Pf3M2vWLM4880zAjDEvvPBCzj77bP3sRUhNTQ0Azz77rLOOvnPnTrq7u8nKygJMHpK7f9RcqcjYqKurc/pEGOwjjxw5Qnx8PEuXLuWss84C4LzzzuPCCy/UfGgEHTlyBMA3/lauu0h0uXPd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AC+//DIvv/wye/bsYcSIEVYRrinKFRFpj8OHD/Pyyy/z17/+lfPnzzN37lygsZH0/vvvJyYmxuMRXr2MjAz+93//l1deeYULFy6wYMECVqxYwd133w1AbGysxyMUkVBUV1fH2rVrWblyJe+9956Vae+66y6+/OUvc8MNN3g8wquXkZHBf//3f/PXv/6V+vp67r33Xh555BFmzJjh9dBEpBNUVlZal4X87ne/Y+fOnUyePJlHHnmEFStWhPy6sKSkxC9XA8rWItIhTK4G/LJ1OOVqgCNHjlgHWr/22mucO3eOa665hi996Uvce++9pKWleTtAEem2SkpK+Nvf/sYrr7zCP/7xD/r168edd94JwIMPPsj1118fFsW+Zr/dudcOaL9dRK6Kc68dsPbbw2GvHRrn0Pfee48XXniBNWvWMGDAAAAeeOABHn74YRUhioir7du38+KLL/Laa69RXV1tXaD51a9+lcWLF3s8uo5RVFTEn/70J/74xz9y5MgRpk6dyle+8hWgcY4MtQYWEel81dXVvPPOO7z44ousX7+exMREq07z61//esjvtTQ0NAC45m+TvQHlbxFpF7dadyDs87fJ3qAmQBFx55a/v/rVrwKERf4uKioCcM3fDzzwAIDyt4j4qa6uBnDN3+GQvcF/7xtQr7mIdKimes1NNg31/G2yN+Cav5W9RcSNqQdyy9/hkL3hSg854NpHrh5yEWmPuro6gIA+ctNDDoR8H7nOgxORzhTu58GJiIiIiIiIXA2dhSYineXw4cMAAeeMh9NZaPbeaCCgPlu12SLiZO+NBsKyPlu6HV2C5+bSpUu88sorrFy5kl27djFs2DBuvfVWAG699Vauv/56oqOjO/JTikgYycrKYvXq1bz//vsAfPzxx0RFRXHXXXexYsUKFi1aFNaFVAcPHrSCZH5+PrNmzQIa58+lS5dy7bXXejxCEQlWDQ0N7Ny5k1WrVgGNzaL79u0jPT3deuA9evRoj0fZeerq6lizZg0vv/wyq1atIioqCoAlS5Zwyy23sHTpUpKTkz0epYgEq7KyMj766CMAay164cIF5s2bx4oVK7jnnnsA6N+/v5fD7BSlpaX85S9/4fnnn+fgwYPWevOee+7h7rvvZvz48R6PUETaq7q6mo8++oi3336bd999l8rKSgDuvvtuHnnkEebNm+fxCDvHwYMHAQKytXK1iLSGPVvbczXQLbI1NP4ebNq0iVdeeYW33nqL4uJiPvOZz7BkyRIAbr75ZmbOnElkZKTHIxWRcHT06FHWrFnD2rVrAfjkk08AuOWWW7j//vtZunRp2O8z2/faAb/9du21i0hLsrKygCvPOJ177UBY77fn5ORYl1j/6U9/4uTJk0ybNo077riD22+/nWnTpnk8QhHxQkNDg3Xw33vvvce7777L0aNHmTJlCg8//DBf+tKXSEhI8HiUnWvbtm3WoYcANTU1LF68mNtvv53bbrtN++gi3VRZWRlr1661DlVetWoVpaWl3HLLLTz88MPccsstVu1NOHKrdQeUv0WkVUytO+CavxctWgSE78WaJn+b7A0of4uIlb9N9ga6df6uqakBUP4WEb/8bXp9unv+Vq+5iLRWd+81d+Zvk7eVv0W6N2f+Pnr0KEC3yd9ufeSmhxxQH7mINMv0kdvXmM4+8nDsITeU0UXkanT3jC4iIiIiIiLSXi2dhQboPDQRaZLbWWhAtzlnHALrs01tNqD6bJFuzFmfbWqzgW5Rny1hT5fgteTw4cO89tprVpPvvn376NOnDzfddBNLly5l6dKlpKSkdNanF5EgV19fDzSGiffff5/Vq1dz8OBBYmNjWbx4MQC33347d911F7GxsV4OtcvV1dWxdu1a3nnnHQA++OADzp8/T2pqqjV/3njjjQBhccu6iLTP5cuX+fDDD1m9ejUffPABFy5cYPjw4UBjsf4999zDggULul2xWGFhIW+++SbQeJDhP/7xD6qqqpg+fbrfA//p06cTERHh5VBFxEOZmZlWse2GDRuora0F4DOf+Qy33XYb9957LyNHjvR4lF1ry5Yt/OUvfwHg3XffJS8vj0mTJnH33Xdz9913M3XqVI9HKCLNqays5O9//zsAb7/9Nu+//z6lpaXMnj2bL3zhCzzwwAMADB482Mthdil7trbnasAvWytXi3Rf9lwN+GVre66G8D2otDk1NTWsXbuWVatWWRdSnT17loEDB7J48WKWLFnCkiVLGDp0qMcjFZFQdfnyZdavX29dfJeVlcWAAQO46aabgMbL7+68807i4uI8Hql37Pvtzr12QPvtIt1cfX19wF47YO23d9e9dgCfz8fGjRt5/fXXWbVqFdnZ2QwbNswqar799ttZuHAhvXr18nikItIZKioqWLduHe+99x7v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AAAAAAAAAICF7bMPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsA4RPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIRPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIbrQblgaQm/9IAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig = plt.figure(figsize=(100,50))\n", - "plot_tree(xgBoostModelGPU, num_trees=0, ax=plt.subplot(1,1,1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Visualize Class Predictions" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "def map_colors_to_clusters_topK ( dataset, labels, topK=None, cmapName = 'tab10'):\n", - " if topK == None:\n", - " topK = dataset.shape[0]\n", - " \n", - " colorStack = np.zeros((topK, 3), dtype=np.float32)\n", - " \n", - " cMap = plt.get_cmap(cmapName)\n", - " for iColor in range ( topK ):\n", - " colorStack[iColor] = cMap.colors[ labels[iColor] ]\n", - " \n", - " return colorStack " - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "colorStackClassifier = map_colors_to_clusters_topK ( pd_X_test, yPredTestGPU.astype(np.int), topK=None )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_data( pd_X_test, colorStack= colorStackClassifier)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-------\n", - "# Extensions\n", - "-------\n", - "For extensions to this work visit github.com/miroenev/rapids" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----\n", - "# End [ thanks! ]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/README.md b/intermediate_notebooks/benchmarks/cugraph_benchmarks/README.md deleted file mode 100644 index 80d5a3d5..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/README.md +++ /dev/null @@ -1,108 +0,0 @@ -# cuGraph Benchmarking - -This folder contains a collection of graph algorithm benchmarking notebooks. Each notebook will compare one cuGraph algorithm against the equivalent NetworkX version. In some cases, additional popular implementations are also tested. - -Before any benchmarking can be done, it is important to fir download the test data sets. - - -## Getting the Data Sets - -Run the data prep script. - -```bash -sh ./dataPrep.sh -``` - -## Benchmarks - -1. Louvain -2. PageRank -3. BSF -4. SSSP - - - -The benchmark does not include data reading time, but does include: - -- Creating the Graph object -- Running the analytic - - - - - - -#### The data prep script -By default, each files would be created in its own directory. The goal here is to have all the MTX files in a single directory. - - -```bash -#!/bin/bash - -mkdir data -cd data -mkdir tmp -cd tmp - -wget https://sparse.tamu.edu/MM/DIMACS10/preferentialAttachment.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/caidaRouterLevel.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coAuthorsDBLP.tar.gz -wget https://sparse.tamu.edu/MM/LAW/dblp-2010.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/citationCiteseer.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coPapersDBLP.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coPapersCiteseer.tar.gz -wget https://sparse.tamu.edu/MM/SNAP/as-Skitter.tar.gz - -tar xvzf preferentialAttachment.tar.gz -tar xvzf caidaRouterLevel.tar.gz -tar xvzf coAuthorsDBLP.tar.gz -tar xvzf dblp-2010.tar.gz -tar xvzf citationCiteseer.tar.gz -tar xvzf coPapersDBLP.tar.gz -tar xvzf coPapersCiteseer.tar.gz -tar xvzf as-Skitter.tar.gz - -cd .. - -find ./tmp -name *.mtx -exec mv {} . \; - -rm -rf tmp -``` - - - -**About the Test files** - -| File Name | Num of Vertices | Num of Edges | Format | Graph Type | Symmetric | -| ---------------------- | --------------: | -----------: |--------|---------------------------|-------------| -| preferentialAttachment | 100,000 | 999,970 | MTX | Random Undirected Graph | Yes | -| caidaRouterLevel | 192,244 | 1,218,132 | MTX | Undirected Graph | Yes | -| coAuthorsDBLP | 299,067 | 1,955,352 |MTX | Undirected Graph | Yes | -| dblp-2010 | 326,186 | 1,615,400 | MTX | Undirected Graph | Yes | -| citationCiteseer | 268,495 | 2,313,294 | MTX | Undirected Graph | Yes | -| coPapersDBLP | 540,486 | 30,491,458 | MTX | Undirected Graph | Yes | -| coPapersCiteseer | 434,102 | 32,073,440 | MTX | Undirected Graph | Yes | -| as-Skitter | 1,696,415 | 22,190,596 | MTX | Undirected Graph | Yes | - - - -### Dataset Acknowlegments - -The dataset are downloaded from the Texas A&M SuiteSparse Matrix Collection - -``` -The SuiteSparse Matrix Collection (formerly known as the University of Florida Sparse Matrix Collection), is a large and actively growing set of sparse matrices that arise in real applications. -... -The Collection is hosted here, and also mirrored at the University of Florida at www.cise.ufl.edu/research/sparse/matrices. The Collection is maintained by Tim Davis, Texas A&M University (email: davis@tamu.edu), Yifan Hu, Yahoo! Labs, and Scott Kolodziej, Texas A&M University. -``` - -| File Name | Author | -| ---------------------- |----------------| -| preferentialAttachment | H. Meyerhenke | -| caidaRouterLevel | Unknown | -| coAuthorsDBLP | R. Geisberger, P. Sanders, and D. Schultes | -| dblp-2010 | Laboratory for Web Algorithmics (LAW), | -| citationCiteseer | R. Geisberger, P. Sanders, and D. Schultes | -| coPapersDBLP | R. Geisberger, P. Sanders, and D. Schultes | -| coPapersCiteseer | R. Geisberger, P. Sanders, and D. Schultes | -| as-Skitter | J. Leskovec, J. Kleinberg and C. Faloutsos | diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/bfs_benchmark.ipynb b/intermediate_notebooks/benchmarks/cugraph_benchmarks/bfs_benchmark.ipynb deleted file mode 100644 index 366c6b65..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/bfs_benchmark.ipynb +++ /dev/null @@ -1,329 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# BFS Performance Benchmarking\n", - "\n", - "This notebook benchmarks performance of running BFS within cuGraph against NetworkX. \n", - "\n", - "Notebook Credits\n", - "\n", - " Original Authors: Bradley Rees\n", - " Last Edit: 10/30/2019\n", - " \n", - "RAPIDS Versions: 0.10.0\n", - "\n", - "Test Hardware\n", - "\n", - " GV100 32G, CUDA 10,0\n", - " Intel(R) Core(TM) CPU i7-7800X @ 3.50GHz\n", - " 32GB system memory\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test Data\n", - "\n", - "| File Name | Num of Vertices | Num of Edges |\n", - "|:---------------------- | --------------: | -----------: |\n", - "| preferentialAttachment | 100,000 | 999,970 |\n", - "| caidaRouterLevel | 192,244 | 1,218,132 |\n", - "| coAuthorsDBLP | 299,067 | 1,955,352 |\n", - "| dblp-2010 | 326,186 | 1,615,400 |\n", - "| citationCiteseer | 268,495 | 2,313,294 |\n", - "| coPapersDBLP | 540,486 | 30,491,458 |\n", - "| coPapersCiteseer | 434,102 | 32,073,440 |\n", - "| as-Skitter | 1,696,415 | 22,190,596 |\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Timing \n", - "What is not timed: Reading the data\n", - "What is timmed: (1) creating a Graph, (2) running BSF\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NOTICE:\n", - "You must have run the dataPrep script prior to running this notebook so that the data is downloaded\n", - "\n", - "See the README file in this folder for a discription of how to get the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import needed libraries\n", - "import gc\n", - "import time\n", - "import rmm\n", - "import cugraph\n", - "import cudf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# NetworkX libraries\n", - "import networkx as nx\n", - "from scipy.io import mmread" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt; plt.rcdefaults()\n", - "import numpy as np" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!bash dataPrep.sh" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Test File\n", - "data = {\n", - " 'preferentialAttachment' : './data/preferentialAttachment.mtx',\n", - " 'caidaRouterLevel' : './data/caidaRouterLevel.mtx',\n", - " 'coAuthorsDBLP' : './data/coAuthorsDBLP.mtx',\n", - " 'dblp' : './data/dblp-2010.mtx',\n", - " 'citationCiteseer' : './data/citationCiteseer.mtx',\n", - " 'coPapersDBLP' : './data/coPapersDBLP.mtx',\n", - " 'coPapersCiteseer' : './data/coPapersCiteseer.mtx',\n", - " 'as-Skitter' : './data/as-Skitter.mtx'\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the testing functions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data reader - the file format is MTX, so we will use the reader from SciPy\n", - "def read_mtx_file(mm_file):\n", - " print('Reading ' + str(mm_file) + '...')\n", - " M = mmread(mm_file).asfptype()\n", - " \n", - " return M" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# CuGraph BFS\n", - "\n", - "def cugraph_call(M):\n", - "\n", - " gdf = cudf.DataFrame()\n", - " gdf['src'] = M.row\n", - " gdf['dst'] = M.col\n", - " \n", - " print('\\tcuGraph Solving... ')\n", - " \n", - " t1 = time.time()\n", - " \n", - " # cugraph Pagerank Call\n", - " G = cugraph.Graph()\n", - " G.from_cudf_edgelist(gdf, source='src', destination='dst')\n", - " \n", - " df = cugraph.bfs(G, 1)\n", - " t2 = time.time() - t1\n", - " \n", - " return t2\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Basic NetworkX BFS\n", - "\n", - "def networkx_call(M):\n", - " nnz_per_row = {r: 0 for r in range(M.get_shape()[0])}\n", - " for nnz in range(M.getnnz()):\n", - " nnz_per_row[M.row[nnz]] = 1 + nnz_per_row[M.row[nnz]]\n", - " for nnz in range(M.getnnz()):\n", - " M.data[nnz] = 1.0/float(nnz_per_row[M.row[nnz]])\n", - "\n", - " M = M.tocsr()\n", - " if M is None:\n", - " raise TypeError('Could not read the input graph')\n", - " if M.shape[0] != M.shape[1]:\n", - " raise TypeError('Shape is not square')\n", - "\n", - " # should be autosorted, but check just to make sure\n", - " if not M.has_sorted_indices:\n", - " print('sort_indices ... ')\n", - " M.sort_indices()\n", - "\n", - " z = {k: 1.0/M.shape[0] for k in range(M.shape[0])}\n", - " \n", - " print('\\tNetworkX Solving... ')\n", - " \n", - " # start timer\n", - " t1 = time.time()\n", - " \n", - " Gnx = nx.DiGraph(M)\n", - "\n", - " pr = nx.bfs_edges(Gnx, 1)\n", - " \n", - " t2 = time.time() - t1\n", - "\n", - " return t2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the benchmarks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# arrays to capture performance gains\n", - "perf_nx = []\n", - "names = []\n", - "\n", - "for k,v in data.items():\n", - " gc.collect()\n", - "\n", - " rmm.reinitialize(\n", - " managed_memory=False,\n", - " pool_allocator=False,\n", - " initial_pool_size=2 << 27\n", - " ) \n", - " \n", - " # Saved the file Name\n", - " names.append(k)\n", - " \n", - " # read the data\n", - " M = read_mtx_file(v)\n", - " \n", - " \n", - " # call cuGraph - this will be the baseline\n", - " trapids = cugraph_call(M)\n", - " \n", - " # Now call NetworkX\n", - " tn = networkx_call(M)\n", - " speedUp = (tn / trapids)\n", - " perf_nx.append(speedUp)\n", - " \n", - " print(\"\\tcuGraph (\" + str(trapids) + \") Nx (\" + str(tn) + \")\" )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "plt.figure(figsize=(10,8))\n", - "\n", - "bar_width = 0.4\n", - "index = np.arange(len(names))\n", - "\n", - "_ = plt.bar(index, perf_nx, bar_width, color='g', label='vs Nx')\n", - "\n", - "plt.xlabel('Datasets')\n", - "plt.ylabel('Speedup')\n", - "plt.title('BFS Performance Speedup')\n", - "plt.xticks(index + (bar_width / 2), names)\n", - "plt.xticks(rotation=90) \n", - "\n", - "# Text on the top of each barplot\n", - "for i in range(len(perf_nx)):\n", - " plt.text(x = (i - .5) + bar_width, y = perf_nx[i] + 25, s = round(perf_nx[i], 1), size = 12)\n", - "\n", - "plt.legend()\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/dataPrep.sh b/intermediate_notebooks/benchmarks/cugraph_benchmarks/dataPrep.sh deleted file mode 100755 index 34b15efa..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/dataPrep.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -mkdir data -cd data -mkdir tmp -cd tmp - -wget https://sparse.tamu.edu/MM/DIMACS10/preferentialAttachment.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/caidaRouterLevel.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coAuthorsDBLP.tar.gz -wget https://sparse.tamu.edu/MM/LAW/dblp-2010.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/citationCiteseer.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coPapersDBLP.tar.gz -wget https://sparse.tamu.edu/MM/DIMACS10/coPapersCiteseer.tar.gz -wget https://sparse.tamu.edu/MM/SNAP/as-Skitter.tar.gz - -tar xvzf preferentialAttachment.tar.gz -tar xvzf caidaRouterLevel.tar.gz -tar xvzf coAuthorsDBLP.tar.gz -tar xvzf dblp-2010.tar.gz -tar xvzf citationCiteseer.tar.gz -tar xvzf coPapersDBLP.tar.gz -tar xvzf coPapersCiteseer.tar.gz -tar xvzf as-Skitter.tar.gz - -cd .. - -find ./tmp -name *.mtx -exec mv {} . \; - -rm -rf tmp diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/louvain_benchmark.ipynb b/intermediate_notebooks/benchmarks/cugraph_benchmarks/louvain_benchmark.ipynb deleted file mode 100644 index 2a860e35..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/louvain_benchmark.ipynb +++ /dev/null @@ -1,449 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Louvain Performance Benchmarking\n", - "\n", - "This notebook benchmarks performance improvement of running the Louvain clustering algorithm within cuGraph against NetworkX. The test is run over eight test networks (graphs) and then results plotted. \n", - "

\n", - "\n", - "\n", - "#### Notebook Credits\n", - "\n", - " Original Authors: Bradley Rees\n", - " Last Edit: 08/06/2019\n", - "\n", - "\n", - "#### Test Environment\n", - "\n", - " RAPIDS Versions: 0.9.0\n", - "\n", - " Test Hardware:\n", - " GV100 32G, CUDA 10,0\n", - " Intel(R) Core(TM) CPU i7-7800X @ 3.50GHz\n", - " 32GB system memory\n", - "\n", - "\n", - "\n", - "#### Updates\n", - "- moved loading ploting libraries to front so that dependencies can be checked before running algorithms\n", - "- added edge values \n", - "- changed timing to including Graph creation for both cuGraph and NetworkX. This will better represent end-to-end times\n", - "\n", - "\n", - "\n", - "#### Dependencies\n", - "- RAPIDS cuDF and cuGraph version 0.6.0 \n", - "- NetworkX \n", - "- Matplotlib \n", - "- Scipy \n", - "- data prep script run\n", - "\n", - "\n", - "\n", - "#### Note: Comparison against published results\n", - "\n", - "\n", - "The cuGraph blog post included performance numbers that were collected over a year ago. For the test graphs, int32 values are now used. That improves GPUs performance. Additionally, the initial benchamrks were measured on a P100 GPU. \n", - "\n", - "This test only comparse the modularity scores and a success is if the scores are within 15% of each other. That comparison is done by adjusting the NetworkX modularity score and then verifying that the cuGraph score is higher.\n", - "\n", - "cuGraph did a full validation of NetworkX results against cuGraph results. That included cross-validation of every cluster. That test is very slow and not included here" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Import needed libraries\n", - "import time\n", - "import cugraph\n", - "import cudf\n", - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# NetworkX libraries\n", - "try: \n", - " import community\n", - "except ModuleNotFoundError:\n", - " os.system('pip install python-louvain')\n", - " import community\n", - "import networkx as nx\n", - "from scipy.io import mmread" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Loading plotting libraries\n", - "import matplotlib.pyplot as plt; plt.rcdefaults()\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mkdir: cannot create directory 'data': File exists\n", - "--2019-11-01 20:49:03-- https://sparse.tamu.edu/MM/DIMACS10/preferentialAttachment.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 2027782 (1.9M) [application/x-gzip]\n", - "Saving to: 'preferentialAttachment.tar.gz'\n", - "\n", - "preferentialAttachm 100%[===================>] 1.93M 3.48MB/s in 0.6s \n", - "\n", - "2019-11-01 20:49:04 (3.48 MB/s) - 'preferentialAttachment.tar.gz' saved [2027782/2027782]\n", - "\n", - "--2019-11-01 20:49:04-- https://sparse.tamu.edu/MM/DIMACS10/caidaRouterLevel.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 2418742 (2.3M) [application/x-gzip]\n", - "Saving to: 'caidaRouterLevel.tar.gz'\n", - "\n", - "caidaRouterLevel.ta 100%[===================>] 2.31M 3.76MB/s in 0.6s \n", - "\n", - "2019-11-01 20:49:05 (3.76 MB/s) - 'caidaRouterLevel.tar.gz' saved [2418742/2418742]\n", - "\n", - "--2019-11-01 20:49:05-- https://sparse.tamu.edu/MM/DIMACS10/coAuthorsDBLP.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 3206075 (3.1M) [application/x-gzip]\n", - "Saving to: 'coAuthorsDBLP.tar.gz'\n", - "\n", - "coAuthorsDBLP.tar.g 100%[===================>] 3.06M 3.99MB/s in 0.8s \n", - "\n", - "2019-11-01 20:49:06 (3.99 MB/s) - 'coAuthorsDBLP.tar.gz' saved [3206075/3206075]\n", - "\n", - "--2019-11-01 20:49:06-- https://sparse.tamu.edu/MM/LAW/dblp-2010.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 2235407 (2.1M) [application/x-gzip]\n", - "Saving to: 'dblp-2010.tar.gz'\n", - "\n", - "dblp-2010.tar.gz 100%[===================>] 2.13M 3.75MB/s in 0.6s \n", - "\n", - "2019-11-01 20:49:07 (3.75 MB/s) - 'dblp-2010.tar.gz' saved [2235407/2235407]\n", - "\n", - "--2019-11-01 20:49:07-- https://sparse.tamu.edu/MM/DIMACS10/citationCiteseer.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 5082095 (4.8M) [application/x-gzip]\n", - "Saving to: 'citationCiteseer.tar.gz'\n", - "\n", - "citationCiteseer.ta 100%[===================>] 4.85M 4.23MB/s in 1.1s \n", - "\n", - "2019-11-01 20:49:08 (4.23 MB/s) - 'citationCiteseer.tar.gz' saved [5082095/5082095]\n", - "\n", - "--2019-11-01 20:49:08-- https://sparse.tamu.edu/MM/DIMACS10/coPapersDBLP.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 36298718 (35M) [application/x-gzip]\n", - "Saving to: 'coPapersDBLP.tar.gz'\n", - "\n", - "coPapersDBLP.tar.gz 100%[===================>] 34.62M 4.93MB/s in 7.2s \n", - "\n", - "2019-11-01 20:49:16 (4.79 MB/s) - 'coPapersDBLP.tar.gz' saved [36298718/36298718]\n", - "\n", - "--2019-11-01 20:49:16-- https://sparse.tamu.edu/MM/DIMACS10/coPapersCiteseer.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 36652888 (35M) [application/x-gzip]\n", - "Saving to: 'coPapersCiteseer.tar.gz'\n", - "\n", - "coPapersCiteseer.ta 100%[===================>] 34.95M 4.93MB/s in 7.2s \n", - "\n", - "2019-11-01 20:49:23 (4.82 MB/s) - 'coPapersCiteseer.tar.gz' saved [36652888/36652888]\n", - "\n", - "--2019-11-01 20:49:23-- https://sparse.tamu.edu/MM/SNAP/as-Skitter.tar.gz\n", - "Resolving sparse.tamu.edu (sparse.tamu.edu)... 128.194.136.136\n", - "Connecting to sparse.tamu.edu (sparse.tamu.edu)|128.194.136.136|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 33172905 (32M) [application/x-gzip]\n", - "Saving to: 'as-Skitter.tar.gz'\n", - "\n", - "as-Skitter.tar.gz 100%[===================>] 31.64M 4.92MB/s in 6.6s \n", - "\n", - "2019-11-01 20:49:30 (4.79 MB/s) - 'as-Skitter.tar.gz' saved [33172905/33172905]\n", - "\n", - "preferentialAttachment/preferentialAttachment.mtx\n", - "caidaRouterLevel/caidaRouterLevel.mtx\n", - "coAuthorsDBLP/coAuthorsDBLP.mtx\n", - "dblp-2010/dblp-2010.mtx\n", - "citationCiteseer/citationCiteseer.mtx\n", - "coPapersDBLP/coPapersDBLP.mtx\n", - "coPapersCiteseer/coPapersCiteseer.mtx\n", - "as-Skitter/as-Skitter.mtx\n", - "find: paths must precede expression: caidaRouterLevel.mtx\n", - "Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]\n" - ] - } - ], - "source": [ - "!bash dataPrep.sh" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the test data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Test File\n", - "data = {\n", - " 'preferentialAttachment' : './data/preferentialAttachment.mtx',\n", - " 'caidaRouterLevel' : './data/caidaRouterLevel.mtx',\n", - " 'coAuthorsDBLP' : './data/coAuthorsDBLP.mtx',\n", - " 'dblp' : './data/dblp-2010.mtx',\n", - " 'citationCiteseer' : './data/citationCiteseer.mtx',\n", - " 'coPapersDBLP' : './data/coPapersDBLP.mtx',\n", - " 'coPapersCiteseer' : './data/coPapersCiteseer.mtx',\n", - " 'as-Skitter' : './data/as-Skitter.mtx'\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the testing functions" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in a dataset in MTX format \n", - "def read_mtx_file(mm_file):\n", - " print('Reading ' + str(mm_file) + '...')\n", - " d = mmread(mm_file).asfptype()\n", - " M = d.tocsr()\n", - " \n", - " if M is None:\n", - " raise TypeError('Could not read the input graph')\n", - " if M.shape[0] != M.shape[1]:\n", - " raise TypeError('Shape is not square')\n", - " \n", - " return M" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# Run the cuGraph Louvain analytic (using nvGRAPH function)\n", - "def cugraph_call(M):\n", - "\n", - " t1 = time.time()\n", - "\n", - " # data\n", - " row_offsets = cudf.Series(M.indptr)\n", - " col_indices = cudf.Series(M.indices)\n", - " data = cudf.Series(M.data)\n", - " \n", - " # create graph \n", - " G = cugraph.Graph()\n", - " G.add_adj_list(row_offsets, col_indices, data)\n", - "\n", - " # cugraph Louvain Call\n", - " print(' cuGraph Solving... ')\n", - " df, mod = cugraph.louvain(G) \n", - " \n", - " t2 = time.time() - t1\n", - " return t2, mod\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Run the NetworkX Louvain analytic. THis is done in two parts since the modularity score is not returned \n", - "def networkx_call(M):\n", - " \n", - " t1 = time.time()\n", - "\n", - " # Directed NetworkX graph\n", - " Gnx = nx.Graph(M)\n", - "\n", - " # Networkx \n", - " print(' NetworkX Solving... ')\n", - " parts = community.best_partition(Gnx)\n", - " \n", - " # Calculating modularity scores for comparison \n", - " mod = community.modularity(parts, Gnx) \n", - " \n", - " t2 = time.time() - t1\n", - " \n", - " return t2, mod" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the benchmarks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading ./data/preferentialAttachment.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n", - "3509.4500202625027x faster => cugraph 0.8648371696472168 vs 3035.1028225421906\n", - "Modularity => cugraph 0.19461682219817675 should be greater than 0.21973558127621454\n", - "Reading ./data/caidaRouterLevel.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n", - "7076.7607431556x faster => cugraph 0.04834103584289551 vs 342.0979447364807\n", - "Modularity => cugraph 0.7872923202092253 should be greater than 0.7289947349239256\n", - "Reading ./data/coAuthorsDBLP.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n", - "11893.139026724633x faster => cugraph 0.06750750541687012 vs 802.8761472702026\n", - "Modularity => cugraph 0.7648739273488195 should be greater than 0.7026254024456955\n", - "Reading ./data/dblp-2010.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n", - "12969.744546806074x faster => cugraph 0.07826042175292969 vs 1015.0176782608032\n", - "Modularity => cugraph 0.7506256512679915 should be greater than 0.7450002914515801\n", - "Reading ./data/citationCiteseer.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n", - "16875.667838933237x faster => cugraph 0.07159066200256348 vs 1208.1402323246002\n", - "Modularity => cugraph 0.6726575224227932 should be greater than 0.6845554405196591\n", - "Reading ./data/coPapersDBLP.mtx...\n", - " cuGraph Solving... \n", - " NetworkX Solving... \n" - ] - } - ], - "source": [ - "# Loop through each test file and compute the speedup\n", - "perf = []\n", - "names = []\n", - "\n", - "for k,v in data.items():\n", - " M = read_mtx_file(v)\n", - " tr, modc = cugraph_call(M)\n", - " tn, modx = networkx_call(M)\n", - " \n", - " speedUp = (tn / tr)\n", - " names.append(k)\n", - " perf.append(speedUp)\n", - " \n", - " mod_delta = (0.85 * modx)\n", - " \n", - " print(str(speedUp) + \"x faster => cugraph \" + str(tr) + \" vs \" + str(tn))\n", - " print(\"Modularity => cugraph \" + str(modc) + \" should be greater than \" + str(mod_delta))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### plot the output" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "y_pos = np.arange(len(names))\n", - " \n", - "plt.bar(y_pos, perf, align='center', alpha=0.5)\n", - "plt.xticks(y_pos, names)\n", - "plt.ylabel('Speed Up')\n", - "plt.title('Performance Speedup: cuGraph vs NetworkX')\n", - "plt.xticks(rotation=90) \n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/pagerank_benchmark.ipynb b/intermediate_notebooks/benchmarks/cugraph_benchmarks/pagerank_benchmark.ipynb deleted file mode 100644 index 3697fcce..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/pagerank_benchmark.ipynb +++ /dev/null @@ -1,398 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# PageRank Performance Benchmarking\n", - "\n", - "This notebook benchmarks performance of running PageRank within cuGraph against NetworkX. NetworkX contains several implementations of PageRank. This benchmark will compare cuGraph versus the defaukt Nx implementation as well as the SciPy version\n", - "\n", - "Notebook Credits\n", - "\n", - " Original Authors: Bradley Rees\n", - " Last Edit: 12/23/2019\n", - " \n", - "RAPIDS Versions: 0.12.0\n", - "\n", - "Test Hardware\n", - "\n", - " GV100 32G, CUDA 10,0\n", - " Intel(R) Core(TM) CPU i7-7800X @ 3.50GHz\n", - " 32GB system memory\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test Data\n", - "\n", - "| File Name | Num of Vertices | Num of Edges |\n", - "|:---------------------- | --------------: | -----------: |\n", - "| preferentialAttachment | 100,000 | 999,970 |\n", - "| caidaRouterLevel | 192,244 | 1,218,132 |\n", - "| coAuthorsDBLP | 299,067 | 1,955,352 |\n", - "| dblp-2010 | 326,186 | 1,615,400 |\n", - "| citationCiteseer | 268,495 | 2,313,294 |\n", - "| coPapersDBLP | 540,486 | 30,491,458 |\n", - "| coPapersCiteseer | 434,102 | 32,073,440 |\n", - "| as-Skitter | 1,696,415 | 22,190,596 |\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Timing \n", - "What is not timed: Reading the data\n", - "What is timmed: (1) creating a Graph, (2) running PageRank\n", - "\n", - "The data file is read in once for all flavors of PageRank. Each timed block will craete a Graph and then execute the algorithm. The results of the algorithm are not compared. If you are interested in seeing the comparison of results, then please see PageRank in the __notebooks__ repo. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NOTICE\n", - "You must have run the dataPrep script prior to running this notebook so that the data is downloaded\n", - "\n", - "See the README file in this folder for a discription of how to get the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import needed libraries\n", - "import gc\n", - "import time\n", - "import rmm\n", - "import cugraph\n", - "import cudf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# NetworkX libraries\n", - "import networkx as nx\n", - "from scipy.io import mmread" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt; plt.rcdefaults()\n", - "import numpy as np" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!bash dataPrep.sh" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Test File\n", - "data = {\n", - " 'preferentialAttachment' : './data/preferentialAttachment.mtx',\n", - " 'caidaRouterLevel' : './data/caidaRouterLevel.mtx',\n", - " 'coAuthorsDBLP' : './data/coAuthorsDBLP.mtx',\n", - " 'dblp' : './data/dblp-2010.mtx',\n", - " 'citationCiteseer' : './data/citationCiteseer.mtx',\n", - " 'coPapersDBLP' : './data/coPapersDBLP.mtx',\n", - " 'coPapersCiteseer' : './data/coPapersCiteseer.mtx',\n", - " 'as-Skitter' : './data/as-Skitter.mtx'\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the testing functions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data reader - the file format is MTX, so we will use the reader from SciPy\n", - "def read_mtx_file(mm_file):\n", - " print('Reading ' + str(mm_file) + '...')\n", - " M = mmread(mm_file).asfptype()\n", - " \n", - " return M" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# CuGraph PageRank\n", - "\n", - "def cugraph_call(M, max_iter, tol, alpha):\n", - "\n", - " gdf = cudf.DataFrame()\n", - " gdf['src'] = M.row\n", - " gdf['dst'] = M.col\n", - " \n", - " print('\\tcuGraph Solving... ')\n", - " \n", - " t1 = time.time()\n", - " \n", - " # cugraph Pagerank Call\n", - " G = cugraph.Graph()\n", - " G.from_cudf_edgelist(gdf, source='src', destination='dst')\n", - " \n", - " df = cugraph.pagerank(G, alpha=alpha, max_iter=max_iter, tol=tol)\n", - " t2 = time.time() - t1\n", - " \n", - " return t2\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Basic NetworkX PageRank\n", - "\n", - "def networkx_call(M, max_iter, tol, alpha):\n", - " nnz_per_row = {r: 0 for r in range(M.get_shape()[0])}\n", - " for nnz in range(M.getnnz()):\n", - " nnz_per_row[M.row[nnz]] = 1 + nnz_per_row[M.row[nnz]]\n", - " for nnz in range(M.getnnz()):\n", - " M.data[nnz] = 1.0/float(nnz_per_row[M.row[nnz]])\n", - "\n", - " M = M.tocsr()\n", - " if M is None:\n", - " raise TypeError('Could not read the input graph')\n", - " if M.shape[0] != M.shape[1]:\n", - " raise TypeError('Shape is not square')\n", - "\n", - " # should be autosorted, but check just to make sure\n", - " if not M.has_sorted_indices:\n", - " print('sort_indices ... ')\n", - " M.sort_indices()\n", - "\n", - " z = {k: 1.0/M.shape[0] for k in range(M.shape[0])}\n", - " \n", - " print('\\tNetworkX Solving... ')\n", - " \n", - " # start timer\n", - " t1 = time.time()\n", - " \n", - " Gnx = nx.DiGraph(M)\n", - "\n", - " pr = nx.pagerank(Gnx, alpha, z, max_iter, tol)\n", - " \n", - " t2 = time.time() - t1\n", - "\n", - " return t2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# SciPy PageRank\n", - "\n", - "def networkx_scipy_call(M, max_iter, tol, alpha):\n", - " nnz_per_row = {r: 0 for r in range(M.get_shape()[0])}\n", - " for nnz in range(M.getnnz()):\n", - " nnz_per_row[M.row[nnz]] = 1 + nnz_per_row[M.row[nnz]]\n", - " for nnz in range(M.getnnz()):\n", - " M.data[nnz] = 1.0/float(nnz_per_row[M.row[nnz]])\n", - "\n", - " M = M.tocsr()\n", - " if M is None:\n", - " raise TypeError('Could not read the input graph')\n", - " if M.shape[0] != M.shape[1]:\n", - " raise TypeError('Shape is not square')\n", - "\n", - " # should be autosorted, but check just to make sure\n", - " if not M.has_sorted_indices:\n", - " print('sort_indices ... ')\n", - " M.sort_indices()\n", - "\n", - " z = {k: 1.0/M.shape[0] for k in range(M.shape[0])}\n", - "\n", - " # SciPy Pagerank Call\n", - " print('\\tSciPy Solving... ')\n", - " t1 = time.time()\n", - " \n", - " Gnx = nx.DiGraph(M) \n", - " \n", - " pr = nx.pagerank_scipy(Gnx, alpha, z, max_iter, tol)\n", - " t2 = time.time() - t1\n", - "\n", - " return t2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the benchmarks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# arrays to capture performance gains\n", - "perf_nx = []\n", - "perf_sp = []\n", - "names = []\n", - "\n", - "for k,v in data.items():\n", - " gc.collect()\n", - "\n", - " rmm.reinitialize(\n", - " managed_memory=False,\n", - " pool_allocator=False,\n", - " initial_pool_size=2 << 27\n", - " )\n", - " \n", - " # Saved the file Name\n", - " names.append(k)\n", - " \n", - " # read the data\n", - " M = read_mtx_file(v)\n", - " \n", - " # call cuGraph - this will be the baseline\n", - " trapids = cugraph_call(M, 100, 0.00001, 0.85)\n", - " \n", - " # Now call NetworkX\n", - " tn = networkx_call(M, 100, 0.00001, 0.85)\n", - " speedUp = (tn / trapids)\n", - " perf_nx.append(speedUp)\n", - " \n", - " # Now call SciPy\n", - " tsp = networkx_scipy_call(M, 100, 0.00001, 0.85)\n", - " speedUp = (tsp / trapids)\n", - " perf_sp.append(speedUp) \n", - " \n", - " print(\"cuGraph (\" + str(trapids) + \") Nx (\" + str(tn) + \") SciPy (\" + str(tsp) + \")\" )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "### plot the output" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - - "%matplotlib inline\n", - "\n", - "plt.figure(figsize=(10,8))\n", - "\n", - "bar_width = 0.35\n", - "index = np.arange(len(names))\n", - "\n", - "_ = plt.bar(index, perf_nx, bar_width, color='g', label='vs Nx')\n", - "_ = plt.bar(index + bar_width, perf_sp, bar_width, color='b', label='vs SciPy')\n", - "\n", - "plt.xlabel('Datasets')\n", - "plt.ylabel('Speedup')\n", - "plt.title('PageRank Performance Speedup')\n", - "plt.xticks(index + (bar_width / 2), names)\n", - "plt.xticks(rotation=90) \n", - "\n", - "# Text on the top of each barplot\n", - "for i in range(len(perf_nx)):\n", - " plt.text(x = (i - 0.55) + bar_width, y = perf_nx[i] + 25, s = round(perf_nx[i], 1), size = 12)\n", - "\n", - "for i in range(len(perf_sp)):\n", - " plt.text(x = (i - 0.1) + bar_width, y = perf_sp[i] + 25, s = round(perf_sp[i], 1), size = 12)\n", - "\n", - "\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/benchmarks/cugraph_benchmarks/sssp_benchmark.ipynb b/intermediate_notebooks/benchmarks/cugraph_benchmarks/sssp_benchmark.ipynb deleted file mode 100644 index 170c72c0..00000000 --- a/intermediate_notebooks/benchmarks/cugraph_benchmarks/sssp_benchmark.ipynb +++ /dev/null @@ -1,331 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SSSP Performance Benchmarking\n", - "\n", - "This notebook benchmarks performance of running SSSP within cuGraph against NetworkX. \n", - "\n", - "Notebook Credits\n", - "\n", - " Original Authors: Bradley Rees\n", - " Last Edit: 12/24/2019\n", - " \n", - "RAPIDS Versions: 0.12.0\n", - "\n", - "Test Hardware\n", - "\n", - " GV100 32G, CUDA 10,0\n", - " Intel(R) Core(TM) CPU i7-7800X @ 3.50GHz\n", - " 32GB system memory\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test Data\n", - "\n", - "| File Name | Num of Vertices | Num of Edges |\n", - "|:---------------------- | --------------: | -----------: |\n", - "| preferentialAttachment | 100,000 | 999,970 |\n", - "| caidaRouterLevel | 192,244 | 1,218,132 |\n", - "| coAuthorsDBLP | 299,067 | 1,955,352 |\n", - "| dblp-2010 | 326,186 | 1,615,400 |\n", - "| citationCiteseer | 268,495 | 2,313,294 |\n", - "| coPapersDBLP | 540,486 | 30,491,458 |\n", - "| coPapersCiteseer | 434,102 | 32,073,440 |\n", - "| as-Skitter | 1,696,415 | 22,190,596 |\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Timing \n", - "What is not timed: Reading the data\n", - "What is timmed: (1) creating a Graph, (2) running SSSP\n", - "\n", - "The data file is read and used for both cuGraph and NetworkX. Each timed block will craete a Graph and then execute the algorithm. The results of the algorithm are not compared. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NOTICE\n", - "You must have run the dataPrep script prior to running this notebook so that the data is downloaded\n", - "\n", - "See the README file in this folder for a discription of how to get the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import needed libraries\n", - "import gc\n", - "import time\n", - "import rmm\n", - "import cugraph\n", - "import cudf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# NetworkX libraries\n", - "import networkx as nx\n", - "from scipy.io import mmread" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt; plt.rcdefaults()\n", - "import numpy as np" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!bash dataPrep.sh" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Test File\n", - "data = {\n", - " 'preferentialAttachment' : './data/preferentialAttachment.mtx',\n", - " 'caidaRouterLevel' : './data/caidaRouterLevel.mtx',\n", - " 'coAuthorsDBLP' : './data/coAuthorsDBLP.mtx',\n", - " 'dblp' : './data/dblp-2010.mtx',\n", - " 'citationCiteseer' : './data/citationCiteseer.mtx',\n", - " 'coPapersDBLP' : './data/coPapersDBLP.mtx',\n", - " 'coPapersCiteseer' : './data/coPapersCiteseer.mtx',\n", - " 'as-Skitter' : './data/as-Skitter.mtx'\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define the testing functions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data reader - the file format is MTX, so we will use the reader from SciPy\n", - "def read_mtx_file(mm_file):\n", - " print('Reading ' + str(mm_file) + '...')\n", - " M = mmread(mm_file).asfptype()\n", - " \n", - " return M" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# CuGraph SSSP\n", - "\n", - "def cugraph_call(M, max_iter, tol, alpha):\n", - "\n", - " gdf = cudf.DataFrame()\n", - " gdf['src'] = M.row\n", - " gdf['dst'] = M.col\n", - " \n", - " print('\\tcuGraph Solving... ')\n", - " \n", - " t1 = time.time()\n", - " \n", - " # cugraph SSSP Call\n", - " G = cugraph.Graph()\n", - " G.from_cudf_edgelist(gdf, source='src', destination='dst')\n", - " \n", - " df = cugraph.sssp(G, 1)\n", - " t2 = time.time() - t1\n", - " \n", - " return t2\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Basic NetworkX SSSP\n", - "\n", - "def networkx_call(M, max_iter, tol, alpha):\n", - " nnz_per_row = {r: 0 for r in range(M.get_shape()[0])}\n", - " for nnz in range(M.getnnz()):\n", - " nnz_per_row[M.row[nnz]] = 1 + nnz_per_row[M.row[nnz]]\n", - " for nnz in range(M.getnnz()):\n", - " M.data[nnz] = 1.0/float(nnz_per_row[M.row[nnz]])\n", - "\n", - " M = M.tocsr()\n", - " if M is None:\n", - " raise TypeError('Could not read the input graph')\n", - " if M.shape[0] != M.shape[1]:\n", - " raise TypeError('Shape is not square')\n", - "\n", - " # should be autosorted, but check just to make sure\n", - " if not M.has_sorted_indices:\n", - " print('sort_indices ... ')\n", - " M.sort_indices()\n", - "\n", - " z = {k: 1.0/M.shape[0] for k in range(M.shape[0])}\n", - " \n", - " print('\\tNetworkX Solving... ')\n", - " \n", - " # start timer\n", - " t1 = time.time()\n", - " \n", - " Gnx = nx.DiGraph(M)\n", - "\n", - " pr = nx.shortest_path(Gnx, 1)\n", - " \n", - " t2 = time.time() - t1\n", - "\n", - " return t2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the benchmarks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# arrays to capture performance gains\n", - "perf_nx = []\n", - "names = []\n", - "\n", - "for k,v in data.items():\n", - " gc.collect()\n", - "\n", - " rmm.reinitialize(\n", - " managed_memory=False,\n", - " pool_allocator=False,\n", - " initial_pool_size=2 << 27\n", - " ) \n", - " \n", - " # Saved the file Name\n", - " names.append(k)\n", - " \n", - " # read the data\n", - " M = read_mtx_file(v)\n", - " \n", - " # call cuGraph - this will be the baseline\n", - " trapids = cugraph_call(M, 100, 0.00001, 0.85)\n", - " \n", - " # Now call NetworkX\n", - " tn = networkx_call(M, 100, 0.00001, 0.85)\n", - " speedUp = (tn / trapids)\n", - " perf_nx.append(speedUp)\n", - " \n", - " print(\"\\tcuGraph (\" + str(trapids) + \") Nx (\" + str(tn) + \")\" )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "plt.figure(figsize=(10,8))\n", - "\n", - "bar_width = 0.4\n", - "index = np.arange(len(names))\n", - "\n", - "_ = plt.bar(index, perf_nx, bar_width, color='g', label='vs Nx')\n", - "\n", - "plt.xlabel('Datasets')\n", - "plt.ylabel('Speedup')\n", - "plt.title('SSSP Performance Speedup of cuGraph vs NetworkX')\n", - "plt.xticks(index, names)\n", - "plt.xticks(rotation=90) \n", - "\n", - "# Text on the top of each barplot\n", - "for i in range(len(perf_nx)):\n", - " #plt.text(x = (i - 0.6) + bar_width, y = perf_nx[i] + 25, s = round(perf_nx[i], 1), size = 12)\n", - " plt.text(x = i - (bar_width/2), y = perf_nx[i] + 25, s = round(perf_nx[i], 1), size = 12)\n", - "\n", - "#plt.legend()\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/benchmarks/cuml_benchmarks.ipynb b/intermediate_notebooks/benchmarks/cuml_benchmarks.ipynb deleted file mode 100644 index 2f56d21d..00000000 --- a/intermediate_notebooks/benchmarks/cuml_benchmarks.ipynb +++ /dev/null @@ -1,488 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Benchmark and Bounds Tests\n", - "\n", - "The purpose of this notebook is to benchmark all of the single GPU cuML algorithms against their skLearn counterparts, while also providing the ability to find and verify upper bounds.\n", - "\n", - "Each benchmark returns a Panda with the results, which can then be analyzed, manipulated, and stored to disk. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Notebook Credits\n", - "**Authorship**\n", - "Original Author: Corey Nolet
\n", - "Last Edit: Taurean Dyer, 9/25/2019
\n", - "\n", - "Last Edit: Corey Nolet, 10/04/2019\n", - " \n", - "### Test System Specs\n", - "Test System Hardware: DGX-1 \n", - "Test System Software: Ubuntu 16.04 \n", - "RAPIDS Version: 0.10.0pre - Conda Install \n", - "Driver: 410.48\n", - "CUDA: 10.0 \n", - "\n", - "### Known Working Systems\n", - "RAPIDS Versions: 0.10+" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cuml\n", - "\n", - "from cuml.benchmark.runners import SpeedupComparisonRunner\n", - "from cuml.benchmark.algorithms import algorithm_by_name\n", - "\n", - "\n", - "print(cuml.__version__)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Neighbors" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Nearest Neighbors" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"NearestNeighbors\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Clustering" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### DBSCAN" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"DBSCAN\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### K-means Clustering" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(12, 22)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"KMeans\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manifold Learning" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### UMAP" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"UMAP\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### T-SNE" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"TSNE\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Linear Models" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Linear Regression" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"LinearRegression\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Logistic Regression" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"LogisticRegression\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Ridge Regression" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"Ridge\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Lasso Regression" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"Lasso\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ElasticNet Regression" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"ElasticNet\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mini-batch SGD Classifier" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"MBSGDClassifier\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Decomposition" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### PCA" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"PCA\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### TSVD" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"TSVD\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ensemble" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Random Forest Classifier" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"RandomForestClassifier\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Random Forest Regressor" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(11, 24)], \n", - " bench_dims=[64, 128, 256],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"RandomForestClassifier\"), verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Random Projection" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Gaussian Random Projection" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "runner = cuml.benchmark.runners.SpeedupComparisonRunner(\n", - " bench_rows=[2**x for x in range(17, 24)], \n", - " bench_dims=[100, 500, 1000, 10000],\n", - " dataset_name=\"blobs\",\n", - " input_type=\"numpy\")\n", - "\n", - "results = runner.run(algorithm_by_name(\"GaussianRandomProjection\"), verbose=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python (cuml_dev)", - "language": "python", - "name": "other-env" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/examples/linear_regression_demo.ipynb b/intermediate_notebooks/examples/linear_regression_demo.ipynb deleted file mode 100644 index 1e6b1d98..00000000 --- a/intermediate_notebooks/examples/linear_regression_demo.ipynb +++ /dev/null @@ -1,826 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "2tZ3RLnlkrkg" - }, - "source": [ - "# Intro to Linear Regression with cuML\n", - "Corresponding notebook to [*Beginner’s Guide to Linear Regression in Python with cuML*](http://bit.ly/cuml_lin_reg_friend) story on Medium\n", - "\n", - "Linear Regression is a simple machine learning model where the response `y` is modelled by a linear combination of the predictors in `X`. The `LinearRegression` function implemented in the `cuML` library allows users to change the `fit_intercept`, `normalize`, and `algorithm` parameters. \n", - "\n", - "Here is a brief on RAPIDS' Linear Regression parameters:\n", - "\n", - "- `algorithm`: 'eig' or 'svd' (default = 'eig')\n", - " - `Eig` uses a eigen decomposition of the covariance matrix, and is much faster\n", - " - `SVD` is slower, but guaranteed to be stable\n", - "- `fit_intercept`: boolean (default = True)\n", - " - If `True`, `LinearRegresssion` tries to correct for the global mean of `y`\n", - " - If `False`, the model expects that you have centered the data.\n", - "- `normalize`: boolean (default = False)\n", - " - If True, the predictors in X will be normalized by dividing by it’s L2 norm\n", - " - If False, no scaling will be done\n", - "\n", - "Methods that can be used with `LinearRegression` are:\n", - "\n", - "- `fit`: Fit the model with `X` and `y`\n", - "- `get_params`: Sklearn style return parameter state\n", - "- `predict`: Predicts the `y` for `X`\n", - "- `set_params`: Sklearn style set parameter state to dictionary of params\n", - "\n", - "`cuML`'s `LinearRegression` expects expects either `cuDF` DataFrame or `NumPy` matrix inputs\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "-tG6ezqKh1Z0" - }, - "source": [ - "Note: `CuPy` is not installed by default with RAPIDS `Conda` or `Docker` packages, but is needed for visualizing results in this notebook.\n", - "- install with `pip` via the cell below " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "pxBcXor_0-Jd" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: cupy in /opt/conda/envs/rapids/lib/python3.6/site-packages (7.4.0)\n", - "Requirement already satisfied: six>=1.9.0 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from cupy) (1.14.0)\n", - "Requirement already satisfied: numpy>=1.9.0 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from cupy) (1.18.4)\n", - "Requirement already satisfied: fastrlock>=0.3 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from cupy) (0.4)\n" - ] - } - ], - "source": [ - "# install cupy\n", - "!pip install cupy" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "N20le3_KlP3O" - }, - "source": [ - "## Load data\n", - "- for this demo, we will be utilizing the Boston housing dataset from `sklearn`\n", - " - start by loading in the set and printing a map of the contents" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "RFE-nxxlTajg", - "outputId": "04f89e88-61a3-4dd2-9088-123b410e508c" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])\n" - ] - } - ], - "source": [ - "from sklearn.datasets import load_boston\n", - "\n", - "# load Boston dataset\n", - "boston = load_boston()\n", - "\n", - "# let's see what's inside\n", - "print(boston.keys())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "wmcO8dxO0uOB" - }, - "source": [ - "#### Boston house prices dataset\n", - "- a description of the dataset is provided in `DESCR`\n", - " - let's explore " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 923 - }, - "colab_type": "code", - "id": "c3kLHAsP-Al2", - "outputId": "02518c3c-7767-42a7-b6f4-6756ace741cc" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - ".. _boston_dataset:\n", - "\n", - "Boston house prices dataset\n", - "---------------------------\n", - "\n", - "**Data Set Characteristics:** \n", - "\n", - " :Number of Instances: 506 \n", - "\n", - " :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n", - "\n", - " :Attribute Information (in order):\n", - " - CRIM per capita crime rate by town\n", - " - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n", - " - INDUS proportion of non-retail business acres per town\n", - " - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n", - " - NOX nitric oxides concentration (parts per 10 million)\n", - " - RM average number of rooms per dwelling\n", - " - AGE proportion of owner-occupied units built prior to 1940\n", - " - DIS weighted distances to five Boston employment centres\n", - " - RAD index of accessibility to radial highways\n", - " - TAX full-value property-tax rate per $10,000\n", - " - PTRATIO pupil-teacher ratio by town\n", - " - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n", - " - LSTAT % lower status of the population\n", - " - MEDV Median value of owner-occupied homes in $1000's\n", - "\n", - " :Missing Attribute Values: None\n", - "\n", - " :Creator: Harrison, D. and Rubinfeld, D.L.\n", - "\n", - "This is a copy of UCI ML housing dataset.\n", - "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n", - "\n", - "\n", - "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n", - "\n", - "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n", - "prices and the demand for clean air', J. Environ. Economics & Management,\n", - "vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n", - "...', Wiley, 1980. N.B. Various transformations are used in the table on\n", - "pages 244-261 of the latter.\n", - "\n", - "The Boston house-price data has been used in many machine learning papers that address regression\n", - "problems. \n", - " \n", - ".. topic:: References\n", - "\n", - " - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n", - " - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", - "\n" - ] - } - ], - "source": [ - "# what do we know about this dataset?\n", - "print(boston.DESCR)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "wI_sB78vE297" - }, - "source": [ - "### Build Dataframe\n", - "- Import `cuDF` and input the data into a DataFrame \n", - " - Then add a `PRICE` column equal to the `target` key" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 206 - }, - "colab_type": "code", - "id": "xiMmIZ8O5scJ", - "outputId": "fd09db1f-fb41-4494-bb8b-eab6e18c258f" - }, - "outputs": [ - { - "data": { - "text/html": [ - "

\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATPRICE
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9824.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1421.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0334.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9433.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3336.2
\n", - "
" - ], - "text/plain": [ - " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n", - "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n", - "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n", - "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n", - "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n", - "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n", - "\n", - " PTRATIO B LSTAT PRICE \n", - "0 15.3 396.90 4.98 24.0 \n", - "1 17.8 396.90 9.14 21.6 \n", - "2 17.8 392.83 4.03 34.7 \n", - "3 18.7 394.63 2.94 33.4 \n", - "4 18.7 396.90 5.33 36.2 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import cudf\n", - "\n", - "# build dataframe from data key\n", - "bos = cudf.DataFrame(list(boston.data))\n", - "# set column names to feature_names\n", - "bos.columns = boston.feature_names\n", - "\n", - "# add PRICE column from target\n", - "bos['PRICE'] = boston.target\n", - "\n", - "# let's see what we're working with\n", - "bos.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "r2qrTxo4ljZp" - }, - "source": [ - "### Split Train from Test\n", - "- For basic Linear Regression, we will predict `PRICE` (Median value of owner-occupied homes) based on `TAX` (full-value property-tax rate per $10,000)\n", - " - Go ahead and trim data to just these columns" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "spaDB10E3okF" - }, - "outputs": [], - "source": [ - "# simple linear regression X and Y\n", - "X = bos['TAX']\n", - "Y = bos['PRICE']" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "4TKLv8FjIBuI" - }, - "source": [ - "We can now set training and testing sets for our model\n", - "- Use `cuML`'s `train_test_split` to do this\n", - " - Train on 70% of data\n", - " - Test on 30% of data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 86 - }, - "colab_type": "code", - "id": "1DC6FHsNIKH_", - "outputId": "4c932268-7a82-4ac3-c7b9-9966ffc2b12e" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(354,)\n", - "(152,)\n", - "(354,)\n", - "(152,)\n" - ] - } - ], - "source": [ - "from cuml.preprocessing.model_selection import train_test_split\n", - "\n", - "# train/test split (70:30)\n", - "sX_train, sX_test, sY_train, sY_test = train_test_split(X, Y, train_size = 0.7)\n", - "\n", - "# see what it looks like\n", - "print(sX_train.shape)\n", - "print(sX_test.shape)\n", - "print(sY_train.shape)\n", - "print(sY_test.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "ZLVg44gAmJG7" - }, - "source": [ - "### Predict Values\n", - "1. fit the model with `TAX` (*X_train*) and corresponding `PRICE` (*y_train*) values \n", - " - so it can build an understanding of their relationship \n", - "2. predict `PRICE` (*y_test*) for a test set of `TAX` (*X_test*) values\n", - " - and compare `PRICE` predictions to actual median house (*y_test*) values\n", - " - use `sklearn`'s `mean_squared_error` to do this" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 666.0\n", - "1 403.0\n", - "2 193.0\n", - "3 307.0\n", - "4 264.0\n", - "Name: TAX, dtype: float64" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sX_train.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "ZGMPloJxGtK3", - "outputId": "664b54fe-16d5-4140-a657-3dc782574da9" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/envs/rapids/lib/python3.6/site-packages/ipykernel_launcher.py:8: UserWarning: Changing solver from 'eig' to 'svd' as eig solver does not support training data with 1 column currently.\n", - " \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "53.207501007491125\n" - ] - } - ], - "source": [ - "from cuml import LinearRegression\n", - "from sklearn.metrics import mean_squared_error\n", - "\n", - "# call Linear Regression model\n", - "slr = LinearRegression()\n", - "\n", - "# train the model\n", - "slr.fit(sX_train, sY_train)\n", - "\n", - "# make predictions for test X values\n", - "sY_pred = slr.predict(sX_test)\n", - "\n", - "# calculate error\n", - "mse = mean_squared_error(sY_test.to_array(), \n", - " sY_pred.to_array())\n", - "print(mse)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "T7BXjkPSGwqd" - }, - "source": [ - "3. visualize prediction accuracy with `matplotlib`" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 305 - }, - "colab_type": "code", - "id": "pp9RNPt_Iemk", - "outputId": "22a22472-50ad-4bb3-d104-35e9e100b8b6" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import cupy\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# scatter actual and predicted results\n", - "plt.scatter(sY_test.to_array(), sY_pred.to_array())\n", - "\n", - "# label graph\n", - "plt.xlabel(\"Actual Prices: $Y_i$\")\n", - "plt.ylabel(\"Predicted prices: $\\hat{Y}_i$\")\n", - "plt.title(\"Prices vs Predicted prices: $Y_i$ vs $\\hat{Y}_i$\")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "8MqX73B4s5tv" - }, - "source": [ - "## Multiple Linear Regression \n", - "- Our mean squared error for Simple Linear Regression looks kinda high.\n", - " - Let's try Multiple Linear Regression (predicting based on multiple variables rather than just `TAX`) and see if that produces more accurate predictions\n", - "\n", - "1. Set X to contain all values that are not `PRICE` from the unsplit data\n", - " - i.e. `CRIM`, `ZN`, `INDUS`, `CHAS`, `NOX`, `RM`, `AGE`, `DIS`, `RAD`, `TAX`, `PTRATIO`, `B`, `LSTAT`\n", - " - Y to still represent just 1 target value (`PRICE`)\n", - " - also from the unsplit data\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "ZtQK5-f4M0Vg" - }, - "outputs": [], - "source": [ - "# set X to all variables except price\n", - "mX = bos.drop('PRICE', axis=1)\n", - "# and, like in the simple Linear Regression, set Y to price\n", - "mY = bos['PRICE']" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "RTYG4-UwNDsK" - }, - "source": [ - "2. Split the data into `multi_X_train`, `multi_X_test`, `Y_train`, and `Y_test`\n", - " - Use `cuML`'s `train_test_split`\n", - " - And the same 70:30 train:test ratio" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 86 - }, - "colab_type": "code", - "id": "EsKxK8u_F7t8", - "outputId": "673a1a44-4d2f-4a45-8333-8f29782eaf65" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(354, 13)\n", - "(152, 13)\n", - "(354,)\n", - "(152,)\n" - ] - } - ], - "source": [ - "# train/test split (70:30)\n", - "mX_train, mX_test, mY_train, mY_test = train_test_split(mX, mY, train_size = 0.7)\n", - "\n", - "# see what it looks like\n", - "print(mX_train.shape)\n", - "print(mX_test.shape)\n", - "print(mY_train.shape)\n", - "print(mY_test.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "_Y40R17LGHsI" - }, - "source": [ - "3. fit the model with `multi_X_train` and corresponding `PRICE` (*y_train*) values \n", - " - so it can build an understanding of their relationships \n", - "4. predict `PRICE` (*y_test*) for the test set of independent (*multi_X_test*) values\n", - " - and compare `PRICE` predictions to actual median house (*y_test*) values\n", - " - use `sklearn`'s `mean_squared_error` to do this" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "N7qm1HuVO-1k", - "outputId": "7e291cec-e602-4ad9-a5b3-b70d7261f63d" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "28.312087834147203\n" - ] - } - ], - "source": [ - "# call Linear Regression model\n", - "mlr = LinearRegression()\n", - "\n", - "# train the model for multiple regression\n", - "mlr.fit(mX_train, mY_train)\n", - "\n", - "# make predictions for test X values\n", - "mY_pred = mlr.predict(mX_test)\n", - "\n", - "# calculate error\n", - "mmse = mean_squared_error(mY_test.to_array(), mY_pred.to_array())\n", - "print(mmse)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "jTdmleXCM_Xb" - }, - "source": [ - "5. visualize with `matplotlib`" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 305 - }, - "colab_type": "code", - "id": "Q83NFMK1JKvL", - "outputId": "569cfa77-a66e-4b1b-9d70-ae4ef8e7936e" - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# scatter actual and predicted results\n", - "plt.scatter(mY_test.to_array(), mY_pred.to_array())\n", - "\n", - "# label graph\n", - "plt.xlabel(\"Actual Prices: $Y_i$\")\n", - "plt.ylabel(\"Predicted prices: $\\hat{Y}_i$\")\n", - "plt.title(\"Prices vs Predicted prices: $Y_i$ vs $\\hat{Y}_i$\")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "2X1RA6sgtZQ6" - }, - "source": [ - "## Conclusion\n", - "- looks like the multiple regression we ran does provide more accurate predictions than the simple linear regression\n", - " - this will not always be the case, so always be sure to check and confirm if the extra computing is worth it\n", - "\n", - "Anyways, that's how you implement both Simple and Multiple Linear Regression with `cuML`. Go forth and do great things. Thanks for stopping by!" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "name": "LOCAL_intro_lin_reg_cuml", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/intermediate_notebooks/examples/weather.ipynb b/intermediate_notebooks/examples/weather.ipynb deleted file mode 100644 index 604628ce..00000000 --- a/intermediate_notebooks/examples/weather.ipynb +++ /dev/null @@ -1,701 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simpler Multi-GPU ETL using Dask ##\n", - "\n", - "A major focus of the last several RAPIDS releases is easier scaling: up *and* out.\n", - "\n", - "While we introduced examples of multi-gpu/multi-node data processing using Dask in our first release, it was difficult to install, configure, and launch.\n", - "\n", - "Running our main example, the [Mortgage Workflow](https://github.com/rapidsai/notebooks-contrib/blob/master/intermediate_notebooks/E2E/mortgage/mortgage_e2e.ipynb) required:\n", - "\n", - "1. Pre-splitting or downloading pre-split datasets\n", - "2. Using a [custom shell script](https://github.com/rapidsai/notebooks/blob/master/utils/dask-setup.sh) to:\n", - " * Check for and force shut-down of existing dask clusters\n", - " * Set environment variables\n", - " * Launch dask-scheduler and dask-worker processes\n", - "3. Make limited use of Dask, only via the [`delayed` interface](http://docs.dask.org/en/latest/delayed.html)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since our first release, we've created the [dask-cuda project](https://github.com/rapidsai/dask-cuda), which automatically handles configuring Dask worker processes to make use of available GPUs.\n", - "\n", - "We also improved [dask-cudf](https://github.com/rapidsai/cudf/tree/branch-0.10/python/dask_cudf) to support a variety of common ETL operations. While joins and groupbys received the most attention, dask-cudf now also supports friendlier parallel IO.\n", - "\n", - "The rest of this notebook demonstrates how we've addressed the above pains, and generally made scaling RAPIDS out to multiple-GPUs easier.\n", - "\n", - "First, let's see what GPUs we have available..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from dask.distributed import Client, wait\n", - "from dask_cuda import LocalCUDACluster\n", - "import dask, dask_cudf\n", - "from dask.diagnostics import ProgressBar\n", - "\n", - "# Use dask-cuda to start one worker per GPU on a single-node system\n", - "# When you shutdown this notebook kernel, the Dask cluster also shuts down.\n", - "cluster = LocalCUDACluster(ip='0.0.0.0')\n", - "client = Client(cluster)\n", - "# print client info\n", - "client" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ok, we've got a cluster of GPU workers. Notice also the link to the Dask status dashboard. It provides lots of useful information while running data processing tasks.\n", - "\n", - "## Accessing Data\n", - "\n", - "Now, let's download a dataset.\n", - "\n", - "If you're working on a local machine, you'd normally use wget, Python's `urllib` package, or another tool to pull down the data you want to analyze.\n", - "\n", - "For the sake of not making you wait for 200+ files to download, the cell below uses urllib to download just 20 years of weather records, and a metadata file about the stations that recorded it. You can update the `years` list if you want to download more, but it wont change the logic in the notebook either way, it'll just process more data.\n", - "\n", - "*Note*: The rest of the markdown commentary in this notebook assumes you're operating on all 232 years of data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Make and set a home for your data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import urllib.request\n", - "\n", - "data_dir = '../../data/weather/'\n", - "if not os.path.exists(data_dir):\n", - " print('creating weather directory')\n", - " os.system('mkdir ../../data/weather')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Choose and Download your data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# download weather observations\n", - "base_url = 'ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/by_year/'\n", - "years = list(range(2000, 2020))\n", - "for year in years:\n", - " fn = str(year) + '.csv.gz'\n", - " if not os.path.isfile(data_dir+fn):\n", - " print(f'Downloading {base_url+fn} to {data_dir+fn}')\n", - " urllib.request.urlretrieve(base_url+fn, data_dir+fn)\n", - " \n", - "# download weather station metadata\n", - "station_meta_url = 'https://www1.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt'\n", - "if not os.path.isfile(data_dir+'ghcnd-stations.txt'):\n", - " print('Downloading station meta..')\n", - " urllib.request.urlretrieve(station_meta_url, data_dir+'ghcnd-stations.txt')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Alternatives to Pre-Downloading Data\n", - "\n", - "While downloading or copying data to your local environment is a good way to get started, many users will want other options:\n", - "\n", - "1. Reading directly from distributed storage, like HDFS\n", - "2. Reading from cloud storage (S3, GCS, ADLS, etc)\n", - "\n", - "See [Dask Remote Data Services](http://docs.dask.org/en/latest/remote-data-services.html) for more details on supported providers, authentication, and other storage configuration options.\n", - "\n", - "Here's an example of reading the same weather data, conveniently available in a public Amazon S3 bucket.\n", - "\n", - "But first make sure your Python environment has the right packages to read from your storage system of choice.\n", - "\n", - "For this example: ```conda install -y s3fs```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# these CSV files don't have headers, we specify column names manually\n", - "names = [\"station_id\", \"date\", \"type\", \"val\"]\n", - "# there are more fields, but only the first 4 are relevant in this notebook\n", - "usecols = names[0:4]\n", - "\n", - "url = 's3://noaa-ghcn-pds/csv/1788.csv'\n", - "dask_cudf.read_csv(url, names=names, usecols=usecols, storage_options={'anon': True})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Reading Large & Multi-File DataSets\n", - "\n", - "Wait... there are many weather files: one for each year going back to the 1780s.\n", - "\n", - "Before RAPIDS 0.6, if you wanted to read all these files in, you'd need to either use a for-loop, manually concatenating dataframes, or use [`dask.delayed`](http://docs.dask.org/en/latest/delayed.html) functions that invoke cuDF.read_csv.\n", - "\n", - "Fortunately, now there's `dask_cudf.read_csv`, which supports file globs, _and_ automatically splits files into chunks that can be processed serially when needed, so you're less likely to run out of memory.\n", - "\n", - "When you call `dask_cudf.read_csv`, Dask reads metadata for each CSV file and tasks workers with lists of filenames & byte-ranges that they're responsible for loading with cuDF's GPU CSV reader.\n", - "\n", - "*Note*: compressed files are not splittable on read, but you can [repartition](https://docs.dask.org/en/latest/dataframe-best-practices.html#repartition-to-reduce-overhead) them downstream." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "weather_ddf = dask_cudf.read_csv(data_dir+'*.csv.gz', names=names, usecols=usecols, compression='gzip')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Let's Process Some Data\n", - "\n", - "Per the [readme](https://docs.opendata.aws/noaa-ghcn-pds/readme.html) for this dataset, multiple types of weather observations are in the same files, and each carries a different units of measure:\n", - "\n", - "| Observation Type | Existing Units | Action |\n", - "| ------------- | ------------- | ------------- |\n", - "| PRCP | Precipitation (tenths of mm) | convert to inches |\n", - "| SNWD | Snow depth (mm) | convert to inches |\n", - "| TMAX | tenths of degrees C | convert to fahrenheit |\n", - "| TMIN | tenths of degrees C | convert to fahrenheit |\n", - "\n", - "There are more even more observation types, each with their own units of measure, but I wont list them all. In this notebook, I'm going to focus specifically on precipitation.\n", - "\n", - "The `type` column tells us what kind of weather observation each record represents. Ordinarily, you might use `query` to filter out subsets of records and apply different logic to each subset. However, [query doesn't support string datatypes yet](https://github.com/rapidsai/cudf/issues/111). Instead, you can use boolean indexing.\n", - "\n", - "For numeric types, Dask with cuDF works mostly like regular Dask. For instance, you can define new columns as combinations of other columns:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precip_index = weather_ddf['type'] == 'PRCP'\n", - "precip_ddf = weather_ddf[precip_index]\n", - "\n", - "# convert 10ths of mm to inches\n", - "mm_to_inches = 0.0393701\n", - "precip_ddf['val'] = precip_ddf['val'] * 1/10 * mm_to_inches" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note: Calling .head() will read the first few rows, usually from the first partition.\n", - "\n", - "In our case, the first partition represents weather data from 1788. Apparently, there wasn't _any_ precipitation data collected that year:\n", - "\n", - "Beware in your own analyes, that you .head() from partitions that you haven't already filtered everything out of!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precip_ddf.get_partition(1).head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ok, we have a lot of weather observations. Now what?\n", - "\n", - "# Answering Questions With Data ##\n", - "\n", - "For some reason, residents of particular cities like to lay claim to having the best, or the worst of something. For Los Angeles, it's having the worst traffic. New Yorkers and Chicagoans argue over who has the best pizza. [West Coasters argue about who has the most rain](https://twitter.com/MikeNiccoABC7/status/1105184947663396864).\n", - "\n", - "Well... as a longtime Atlanta resident suffering from humidity exhaustion, I like to joke that with all the spring showers, _Atlanta_ is the new Seattle.\n", - "\n", - "Does my theory hold water? Or will the data rain on my bad pun parade?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How Can I Test My Theory?\n", - "\n", - "We've already created `precip_df`, which is only the precipitation observations, but it's for all 100k weather stations, most of them no-where near Atlanta, and this is time-series data, so we'll need to aggregate over time ranges.\n", - "\n", - "To get down to just Atlanta and Seattle precipitation records, we have to...\n", - "\n", - "1. Extract year, month, and day from the compound \"date\" column, so that we can compare total rainfall across time.\n", - "\n", - "2. Load up the station metadata file.\n", - "\n", - "3. There's no \"city\" in the station metadata, so we'll do some geo-math and keep only stations near Atlanta and Seattle.\n", - "\n", - "4. Use a Groupby to compare changing precipitation patterns across time\n", - "\n", - "5. Use inner joins to filter the precipitation dataframe down to just Atlanta & Seattle data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Extracting Finer Grained Date Fields\n", - "\n", - "We _can_ do a bit of math to separate date parts.." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precip_ddf['year'] = precip_ddf['date']/10000\n", - "precip_ddf['year'] = precip_ddf['year'].astype('int')\n", - "\n", - "precip_ddf['month'] = (precip_ddf['date'] - precip_ddf['year']*10000)/100\n", - "precip_ddf['month'] = precip_ddf['month'].astype('int')\n", - "\n", - "precip_ddf['day'] = (precip_ddf['date'] - precip_ddf['year']*10000 - precip_ddf['month']*100)\n", - "precip_ddf['day'] = precip_ddf['day'].astype('int')\n", - "\n", - "precip_ddf.get_partition(1).head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this dataset, getting date parts is easier with string slicing. However, as is sometimes the case, Dask expects some aspect of cuDF's Python API to match Pandas in a way that [isn't fully compatible yet](https://github.com/rapidsai/cudf/issues/2367).\n", - "\n", - "That bug will likely be resolved quickly. But, this example is a good chance to show how to workaround similar problems.\n", - "\n", - "Dask has a [map_partitions](https://docs.dask.org/en/latest/dataframe-api.html#dask.dataframe.Series.map_partitions) function which will apply a given Python function to all partitions of a distributed DataFrame. When you do this on a dask_cudf df, your input is a cuDF object:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_date_parts(df):\n", - " date_str = df['date'].astype('str')\n", - " df['year'] = date_str.str.slice(0, 4).astype('int')\n", - " df['month'] = date_str.str.slice(4, 6).astype('int')\n", - " df['day'] = date_str.str.slice(6, 8).astype('int')\n", - " return df\n", - "\n", - "# any single-GPU function that works in cuDF may be called via dask.map_partitions\n", - "precip_ddf = precip_ddf.map_partitions(get_date_parts)\n", - "precip_ddf.get_partition(1).head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The map_partitions pattern is also useful whenever there are cuDF specific functions without a direct mapping into Dask." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Loading Station Metadata ##" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!head -n 5 /data/weather/ghcnd-stations.txt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Wait... That's no CSV file! It's fixed-width!\n", - "\n", - "That's annoying because we don't have a reader for it. We could use CPU code to pre-process the file, making it friendlier for loading into a DataFrame, but, RAPIDS is about end-to-end data processing without leaving the GPU.\n", - "\n", - "This file is small enough that we can handle it directly with cuDF on a single GPU.\n", - "\n", - "*Warning*: Make sure you [create your dask-cuda cluster _before_ importing cudf](https://github.com/rapidsai/dask-cuda/issues/32).\n", - "\n", - "Here's how to cleanup this metadata using cuDF and string operations:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cudf\n", - "\n", - "fn = data_dir+'ghcnd-stations.txt'\n", - "# There are no '|' chars in the file. Use that to read the file as a single column per line\n", - "# quoting=3 handles misplaced quotes in the `name` field \n", - "station_df = cudf.read_csv(fn, sep='|', quoting=3, names=['lines'], header=None)\n", - "\n", - "# you can use normal DataFrame .str accessor, and chain operators together\n", - "station_df['station_id'] = station_df['lines'].str.slice(0, 11).str.strip()\n", - "station_df['latitude'] = station_df['lines'].str.slice(12, 20).str.strip()\n", - "station_df['longitude'] = station_df['lines'].str.slice(21, 30).str.strip()\n", - "station_df = station_df.drop('lines')\n", - "\n", - "station_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Managing Memory\n", - "\n", - "While GPU memory is very fast, there's less of it than host RAM. It's a good idea to avoid storing lots of columns that aren't useful for what you're trying to do, especially when they're strings.\n", - "\n", - "For example, for the station metadata, there are more columns than we parsed out above. In this workflow we only need `station_id`, `latitude`, and `longitude`, so we skipped parsing the rest of the columns.\n", - "\n", - "We also need to convert latitude and longitude from strings to floats, and convert the single-GPU DataFrame to a Dask DataFrame that can be distributed across workers." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# you can cast string columns to numerics\n", - "station_df['latitude'] = station_df['latitude'].astype('float')\n", - "station_df['longitude'] = station_df['longitude'].astype('float')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Filtering Weather Stations by Distance\n", - "\n", - "Initially we planned to use our [existing Haversine Distance user defined function](https://medium.com/rapids-ai/user-defined-functions-in-rapids-cudf-2d7c3fc2728d) to figure out which stations are within a given distance from a city. However, that relies on a [numba CUDA JIT'ed kernel](https://numba.pydata.org/numba-doc/dev/cuda/index.html), which would be slower and would incur compilation time the first time you call it.\n", - "\n", - "Now that [cuSpatial](https://github.com/rapidsai/cuspatial) is available as [a nightly conda package](https://anaconda.org/rapidsai-nightly/cuspatial), we can use it without having to build from source:\n", - "\n", - "```\n", - "conda install -c conda-forge -c rapidsai-nightly cuspatial\n", - "```\n", - "\n", - "For this scenario, we've manually looked up Atlanta and Seattle's city centers and will fill `cudf.Series` with their latitude and longitude values. Then we can call a cuSpatial function to compute the distance between each station and each city." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cuspatial\n", - "\n", - "# fill new Series with Atlanta lat/lng\n", - "station_df['atlanta_lat'] = 33.7490\n", - "station_df['atlanta_lng'] = -84.3880\n", - "# compute distance from each station to Atlanta\n", - "station_df['atlanta_dist'] = cuspatial.haversine_distance(\n", - " station_df['longitude'], station_df['latitude'],\n", - " station_df['atlanta_lng'], station_df['atlanta_lat']\n", - ")\n", - "\n", - "# fill new Series with Seattle lat/lng\n", - "station_df['seattle_lat'] = 47.6219\n", - "station_df['seattle_lng'] = -122.3517\n", - "# compute distance from each station to Seattle\n", - "station_df['seattle_dist'] = cuspatial.haversine_distance(\n", - " station_df['longitude'], station_df['latitude'],\n", - " station_df['seattle_lng'], station_df['seattle_lat']\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Checking the Results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Inspect the results:\n", - "atlanta_stations_df = station_df.query('atlanta_dist <= 25')\n", - "seattle_stations_df = station_df.query('seattle_dist <= 25')\n", - "\n", - "print(f'Atlanta Stations: {len(atlanta_stations_df)}')\n", - "print(f'Seattle Stations: {len(seattle_stations_df)}')\n", - "\n", - "atlanta_stations_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[Google tells me those station ids are from Smyrna](https://geographic.org/global_weather/georgia/smyrna_23_ne_002.html), a town just outside of Atlanta's perimeter. Our distance calculation worked!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Grouping & Aggregating by Time Range\n", - "\n", - "Before using an inner join to filter down to city-specific precipitation data, we can use a groupby to sum the precipitation for station and year. That'll allow the join to proceed faster and use less memory.\n", - "\n", - "One total precipitation record per station per year is relatively small, and we're going to need to graph this data, so we'll go ahead and `compute()` the result, asking Dask to aggregate across the 200+ years worth of data, bringing the results back to the client as a single GPU cuDF DataFrame.\n", - "\n", - "Note that with Dask, data is partitioned and distributed across multiple workers. Some operations require that workers \"[shuffle](http://docs.dask.org/en/latest/dataframe-groupby.html#)\" data from their partitions back and forth across the network, which has major performance implications. Today join, groupby, and sort operations can be fairly network constrained.\n", - "\n", - "See the [slides](https://www.slideshare.net/MatthewRocklin/ucxpython-a-flexible-communication-library-for-python-applications) from a recent talk at GTC San Jose to learn more about [ongoing efforts to integrate Dask with UCX](https://github.com/rapidsai/ucx-py/) and allow it to use accelerated networking hardware like Infiniband and [nvlink](https://www.nvidia.com/en-us/data-center/nvlink/).\n", - "\n", - "In the meantime, distributed operators that require shuffling like joins, groupbys, and sorts work, albeit not as fast as we'd like." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precip_year_ddf = precip_ddf.groupby(by=['station_id', 'year']).val.sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that we're calling `compute` again here. This tells Dask to actually start computing the full set of processing logic defined thus far:\n", - "\n", - "1. Read and decompress 232 gzipped files (about 100 GB decompressed)\n", - "2. Send to the GPU and parse\n", - "3. Filter down to precipitation records\n", - "4. Apply a conversion to inches\n", - "5. Sum total inches of rain per year per each of the 108k weather stations\n", - "6. Combine and pull results a single GPU DataFrame on the client host\n", - "\n", - "To wit.. this will take time." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%time precip_year_df = precip_year_ddf.compute()\n", - "\n", - "# Convert from the groupby multi-indexed DataFrame back to a normal DF which we can use with merge\n", - "precip_year_df = precip_year_df.reset_index()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Using Inner Joins to Filter Weather Observations\n", - "\n", - "We have separate DataFrames containing Atlanta and Seattle stations, and we have our total precipitation grouped by `station_id` and `year`. Computing inner joins can let us compute total precipitation by year for just Atlanta and Seattle." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%time atlanta_precip_df = precip_year_df.merge(atlanta_stations_df, on=['station_id'], how='inner')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atlanta_precip_df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%time seattle_precip_df = precip_year_df.merge(seattle_stations_df, on=['station_id'], how='inner')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seattle_precip_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we need to normalize the total amount of rain in each city by the number of stations which collected rainfall: Seattle had twice as many stations collecting, but that doesn't mean more total rain fell! " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atlanta_rain = atlanta_precip_df.groupby(['year']).val.sum()/len(atlanta_stations_df)\n", - "atlanta_rain.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seattle_rain = seattle_precip_df.groupby(['year']).val.sum()/len(seattle_stations_df)\n", - "\n", - "seattle_rain.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Visualizing the Answer\n", - "\n", - "To generate the graphs in the cells below, first you'll need to ```conda install -y python-graphviz matplotlib```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.pyplot import *\n", - "\n", - "plt.close('all')\n", - "plt.rcParams['figure.figsize'] = [20, 10]\n", - "\n", - "fig, ax = subplots()\n", - "\n", - "atlanta_rain.to_pandas().plot(ax=ax)\n", - "seattle_rain.to_pandas().plot(ax=ax)\n", - "\n", - "ax.legend(['Atlanta', 'Seattle'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Results\n", - "\n", - "It looks like I'm right (mostly)! At least for roughly the last 80 years, it rains more by volume in Atlanta than it does in Seattle. The data seems to confirm my suspicions.\n", - "\n", - "But as usual the answer raises additional questions:\n", - "\n", - "1. Without singling out Atlanta and Seattle, which city actually has the most precipitation by volume?\n", - "\n", - "2. Why is there such a large increase in observed precipitation in the last 10 years?\n", - "\n", - "3. One friend noted that it rains more frequently in Seattle, just not as hard. A contrarian was quick to point out that it mists a lot in Seattle. How often is it just \"misty\", but not really raining?\n", - "\n", - "We'll revisit these questions in a future post, and look forward to seeing what kinds of analyses YOU come up with." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Takeaways\n", - "\n", - "We just showed some of the ways you can use Dask and cuDF to parallelize typical data processing tasks on multiple GPUs. Hopefully this notebook provides useful examples to refer to while doing your own ETL & analytics work.\n", - "\n", - "For more info on what's working today with Dask and cuDF, see [our summary](https://docs.rapids.ai/api/cudf/stable/), and follow [our ongoing development](https://github.com/rapidsai/cudf).\n", - "\n", - "Also checkout out other [community contributed notebooks](https://github.com/rapidsai/notebooks-contrib), and submit your own!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/the_archive/archived_competition_notebooks/kaggle/README.md b/the_archive/archived_competition_notebooks/kaggle/README.md new file mode 100644 index 00000000..28091c87 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/README.md @@ -0,0 +1,9 @@ +##
Open GPU Data Science + +# Introduction +This repo contains rapids solutions for kaggle competitions and other real world, end to end (E2E) problems. +1. plasticc: 8th place [Rapids.ai](https://rapids.ai) solution of [PLAsTiCC Astronomical Classification](https://www.kaggle.com/c/PLAsTiCC-2018). +2. malware: explorative analysis of [microsoft malware prediction](https://www.kaggle.com/c/microsoft-malware-prediction). + +# Build and Run with Docker or bare-metal +please find readme file in each folder. diff --git a/conference_notebooks/KDD_2019/img/rapids_logo.png b/the_archive/archived_competition_notebooks/kaggle/img/rapids_logo.png similarity index 100% rename from conference_notebooks/KDD_2019/img/rapids_logo.png rename to the_archive/archived_competition_notebooks/kaggle/img/rapids_logo.png diff --git a/the_archive/archived_competition_notebooks/kaggle/img/solution.png b/the_archive/archived_competition_notebooks/kaggle/img/solution.png new file mode 100644 index 00000000..2722ca3d Binary files /dev/null and b/the_archive/archived_competition_notebooks/kaggle/img/solution.png differ diff --git a/the_archive/archived_competition_notebooks/kaggle/landmark/cudf_stratifiedKfold_1000x_speedup.ipynb b/the_archive/archived_competition_notebooks/kaggle/landmark/cudf_stratifiedKfold_1000x_speedup.ipynb new file mode 100644 index 00000000..7a270ede --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/landmark/cudf_stratifiedKfold_1000x_speedup.ipynb @@ -0,0 +1,773 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cudf version 0.7.2+0.g3ebd286.dirty\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import cudf as gd\n", + "import time\n", + "from sklearn.model_selection import StratifiedKFold\n", + "import numpy as np\n", + "import warnings\n", + "from numba import cuda\n", + "warnings.filterwarnings(\"ignore\")\n", + "print('cudf version',gd.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### I didn't expect to use rapids at all for the __[Google Landmark Recognition 2019](https://www.kaggle.com/c/landmark-recognition-2019)__ but it turned out that stratified kfold operation could be painfully slow. In this notebook, a cudf based implementation is shown to achieve 1000+ speedup." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Table of contents\n", + "[1. Implementation of cudf based stratified kfold split](#imp)
\n", + "[2. Sanity Check with toy data](#san)
\n", + "[3. The google landmark dataset](#land)
\n", + "[4. Measure the runtime](#runtime)
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementation of cudf based stratified kfold split\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class StratifiedKFold_cudf_gpu:\n", + " \"\"\"Stratified K-Folds cross-validator using cudf on gpu.\n", + " Functionality is the same as \n", + " https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html\n", + " Parameters\n", + " ----------\n", + " n_splits : int, default=3\n", + " Number of folds. Must be at least 2.\n", + " .. versionchanged:: 0.20\n", + " ``n_splits`` default value will change from 3 to 5 in v0.22.\n", + " shuffle : boolean, optional\n", + " Whether to shuffle each stratification of the data before splitting\n", + " into batches.\n", + " random_state : int, default=42, RandomState instance, which is the seed used \n", + " by the random number generator;\n", + " tpb: int, default=32, number of threads per thread block. A thread block is a group of threads \n", + " to process the group of samples with same value of y. If the number of unique values of \n", + " y is small,the group size is large and tpb should increase accordingly. The largest value\n", + " of tpb is 1024 and it should be multiples of 32.\n", + " mode: str, default = 'relax', how to deal with class with fewer samples than n_splits\n", + " The possible options are 'relax' and 'sklearn'. \n", + " With 'sklearn' mode, it will assert that n_splits must be less or equal to the number of samples\n", + " in the smallest class.\n", + " With 'relax', class with fewer samples than n_splits will be only in either train or valid part\n", + " of a given fold.\n", + " Examples\n", + " --------\n", + " >>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])\n", + " >>> y = np.array([0, 0, 1, 1])\n", + " >>> skf = StratifiedKFold_cudf_gpu(n_splits=2,random_state=None, shuffle=False)\n", + " >>> for train_index, test_index in skf.split(X, y):\n", + " ... print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", + " ... X_train, X_test = X[train_index], X[test_index]\n", + " ... y_train, y_test = y[train_index], y[test_index]\n", + " TRAIN: [1 3] TEST: [0 2]\n", + " TRAIN: [0 2] TEST: [1 3]\n", + " Notes\n", + " -----\n", + " Train and test sizes may be different in each fold, with a difference of at most ``n_classes``.\n", + " \"\"\"\n", + " def __init__(self,n_splits=3,shuffle=True,random_state=42,tpb=32,mode='relax'):\n", + " self.n_splits = n_splits\n", + " self.shuffle = shuffle\n", + " self.seed = random_state\n", + " self.tpb = tpb # threads per thread block\n", + " self.mode = mode\n", + " \n", + " def get_n_splits(self, X=None, y=None):\n", + " return self.n_splits\n", + " \n", + " def split(self,x,y):\n", + " \"\"\"Generate indices to split data into training and test set.\n", + " Parameters\n", + " ----------\n", + " X : array-like, shape (n_samples, n_features)\n", + " y : array-like, shape (n_samples,)\n", + " The target variable for supervised learning problems.\n", + " Stratification is done based on the y labels.\n", + " Yields\n", + " ------\n", + " train : ndarray\n", + " The training set indices for that split.\n", + " test : ndarray\n", + " The testing set indices for that split.\n", + " Notes\n", + " -----\n", + " Randomized CV splitters may return different results for each call of\n", + " split. You can make the results identical by setting ``random_state``\n", + " to an integer.\n", + " \"\"\"\n", + " assert x.shape[0] == y.shape[0]\n", + " df = gd.DataFrame()\n", + " x = np.array(x)\n", + " y = np.array(y)\n", + " ids = np.arange(x.shape[0])\n", + " \n", + " if self.shuffle:\n", + " np.random.seed(self.seed)\n", + " np.random.shuffle(ids)\n", + " x = x[ids]\n", + " y = y[ids]\n", + " \n", + " cols = []\n", + " df['y'] = np.ascontiguousarray(y)\n", + " df['ids'] = ids\n", + " \n", + " grpby = df.groupby(['y'], method=\"cudf\")\n", + " if self.mode == 'sklearn':\n", + " dg = grpby.agg({'y':'count'})\n", + " #print(dg.columns)\n", + " col = dg.columns[0]\n", + " msg = 'n_splits=%d cannot be greater than the number of members in each class.'%self.n_splits\n", + " assert dg[col].min()>=self.n_splits,msg\n", + "\n", + " def get_order_in_group(y,ids,order):\n", + " for i in range(cuda.threadIdx.x, len(y), cuda.blockDim.x):\n", + " order[i] = i\n", + "\n", + " got = grpby.apply_grouped(get_order_in_group,incols=['y','ids'],\n", + " outcols={'order': np.int32},\n", + " tpb=self.tpb)\n", + "\n", + " got = got.sort_values('ids')\n", + " \n", + " dx = got.to_pandas()\n", + " del got,df\n", + " \n", + " for i in range(self.n_splits):\n", + " mask = dx['order']%self.n_splits==i\n", + " train = dx.loc[~mask,'ids'].values\n", + " test = dx.loc[mask,'ids'].values\n", + " if len(test)==0:\n", + " break\n", + " yield train,test " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sanity check\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TRAIN: [1 3] TEST: [0 2]\n", + "TRAIN: [0 2] TEST: [1 3]\n" + ] + } + ], + "source": [ + "X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])\n", + "y = np.array([0, 0, 1, 1])\n", + "skf = StratifiedKFold_cudf_gpu(n_splits=2,random_state=None, shuffle=False)\n", + "for train_index, test_index in skf.split(X, y):\n", + " print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", + " X_train, X_test = X[train_index], X[test_index]\n", + " y_train, y_test = y[train_index], y[test_index]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### We compare relax and sklearn mode of StratifiedKFold_cudf_gpu" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TRAIN: [1 3] TEST: [0 2]\n", + "TRAIN: [0 2] TEST: [1 3]\n" + ] + } + ], + "source": [ + "skf = StratifiedKFold_cudf_gpu(n_splits=4,random_state=None, shuffle=False,mode='relax')\n", + "for train_index, test_index in skf.split(X, y):\n", + " print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", + " X_train, X_test = X[train_index], X[test_index]\n", + " y_train, y_test = y[train_index], y[test_index]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This examples shows that when the number of samples is too small for a certain `n_splits`, the `relax` mode stops making more splits without reporting an error. Please refer to [the google landmark dataset example](#land) for more behavior analysis of `relax` mode." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Errors are intended in the following example for both sklearn and cudf. The `sklearn` mode of cudf is designed to catch the same error as sklearn version." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "n_splits=4 cannot be greater than the number of members in each class.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mskf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mStratifiedKFold_cudf_gpu\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_splits\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'sklearn'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mtrain_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_index\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mskf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"TRAIN:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"TEST:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtrain_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtrain_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36msplit\u001b[0;34m(self, x, y)\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0mcol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'n_splits=%d cannot be greater than the number of members in each class.'\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_splits\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 93\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mdg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcol\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m>=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_splits\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 94\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_order_in_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: n_splits=4 cannot be greater than the number of members in each class." + ] + } + ], + "source": [ + "skf = StratifiedKFold_cudf_gpu(n_splits=4,random_state=None, shuffle=False,mode='sklearn')\n", + "for train_index, test_index in skf.split(X, y):\n", + " print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", + " X_train, X_test = X[train_index], X[test_index]\n", + " y_train, y_test = y[train_index], y[test_index]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "n_splits=4 cannot be greater than the number of members in each class.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mskf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mStratifiedKFold\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_splits\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mtrain_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_index\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mskf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"TRAIN:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"TEST:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtrain_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtrain_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/cudf0.7/lib/python3.6/site-packages/sklearn/model_selection/_split.py\u001b[0m in \u001b[0;36msplit\u001b[0;34m(self, X, y, groups)\u001b[0m\n\u001b[1;32m 333\u001b[0m .format(self.n_splits, n_samples))\n\u001b[1;32m 334\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 335\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroups\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 336\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/cudf0.7/lib/python3.6/site-packages/sklearn/model_selection/_split.py\u001b[0m in \u001b[0;36msplit\u001b[0;34m(self, X, y, groups)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroups\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindexable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroups\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0mindices\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_num_samples\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 89\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mtest_index\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_iter_test_masks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroups\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 90\u001b[0m \u001b[0mtrain_index\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogical_not\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0mtest_index\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/cudf0.7/lib/python3.6/site-packages/sklearn/model_selection/_split.py\u001b[0m in \u001b[0;36m_iter_test_masks\u001b[0;34m(self, X, y, groups)\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 685\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_iter_test_masks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroups\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 686\u001b[0;31m \u001b[0mtest_folds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_test_folds\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 687\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_splits\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 688\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mtest_folds\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/cudf0.7/lib/python3.6/site-packages/sklearn/model_selection/_split.py\u001b[0m in \u001b[0;36m_make_test_folds\u001b[0;34m(self, X, y)\u001b[0m\n\u001b[1;32m 649\u001b[0m raise ValueError(\"n_splits=%d cannot be greater than the\"\n\u001b[1;32m 650\u001b[0m \u001b[0;34m\" number of members in each class.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 651\u001b[0;31m % (self.n_splits))\n\u001b[0m\u001b[1;32m 652\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_splits\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mmin_groups\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 653\u001b[0m warnings.warn((\"The least populated class in y has only %d\"\n", + "\u001b[0;31mValueError\u001b[0m: n_splits=4 cannot be greater than the number of members in each class." + ] + } + ], + "source": [ + "skf = StratifiedKFold(n_splits=4,random_state=None, shuffle=False)\n", + "for train_index, test_index in skf.split(X, y):\n", + " print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", + " X_train, X_test = X[train_index], X[test_index]\n", + " y_train, y_test = y[train_index], y[test_index]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Examples above show that the `sklearn` mode of cudf can catch the same error as sklearn stratified kfold split." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### A real world example with the google landmark dataset\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Please download the train.csv from https://s3.amazonaws.com/google-landmark/metadata/train.csv" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 472 ms, sys: 160 ms, total: 632 ms\n", + "Wall time: 633 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "path = 'train.csv'\n", + "cols = ['id','url','landmark_id']\n", + "dtypes = ['str','str','int32']\n", + "train = gd.read_csv(path,names=cols,dtype=dtypes,skiprows=1) # skip the header" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idurllandmark_id
06e158a47eb2ca3f6https://upload.wikimedia.org/wikipedia/commons...142820
1202cd79556f30760http://upload.wikimedia.org/wikipedia/commons/...104169
23ad87684c99c06e1http://upload.wikimedia.org/wikipedia/commons/...37914
3e7f70e9c61e66af3https://upload.wikimedia.org/wikipedia/commons...102140
44072182eddd0100ehttps://upload.wikimedia.org/wikipedia/commons...2474
\n", + "
" + ], + "text/plain": [ + " id url \\\n", + "0 6e158a47eb2ca3f6 https://upload.wikimedia.org/wikipedia/commons... \n", + "1 202cd79556f30760 http://upload.wikimedia.org/wikipedia/commons/... \n", + "2 3ad87684c99c06e1 http://upload.wikimedia.org/wikipedia/commons/... \n", + "3 e7f70e9c61e66af3 https://upload.wikimedia.org/wikipedia/commons... \n", + "4 4072182eddd0100e https://upload.wikimedia.org/wikipedia/commons... \n", + "\n", + " landmark_id \n", + "0 142820 \n", + "1 104169 \n", + "2 37914 \n", + "3 102140 \n", + "4 2474 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = train.head().to_pandas()\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of samples 4132914 number of classes 203094\n" + ] + } + ], + "source": [ + "y = train['landmark_id'].to_pandas().values\n", + "print('number of samples %d number of classes %d'%(y.shape[0],np.unique(y).shape[0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[samples, classes] in each fold:\n", + "train [3610971,184200] valid [521943,203094]\n", + "train [3641533,203094] valid [491381,184200]\n", + "train [3670149,203094] valid [462765,166463]\n", + "train [3695903,203094] valid [437011,150659]\n", + "train [3718707,203094] valid [414207,137133]\n", + "train [3738707,203094] valid [394207,125731]\n", + "train [3756907,203094] valid [376007,115755]\n", + "train [3773431,203094] valid [359483,106996]\n", + "train [3788254,203094] valid [344660,99342]\n", + "train [3801664,203094] valid [331250,92740]\n", + "CPU times: user 1min 29s, sys: 5.24 s, total: 1min 34s\n", + "Wall time: 4.26 s\n" + ] + } + ], + "source": [ + "%%time\n", + "skf = StratifiedKFold_cudf_gpu(n_splits=10,random_state=42, shuffle=True, mode='relax')\n", + "print('[samples, classes] in each fold:')\n", + "for train_index, test_index in skf.split(y, y):\n", + " print('train [%d,%d] valid [%d,%d]'%(y[train_index].shape[0],\n", + " np.unique(y[train_index]).shape[0],\n", + " y[test_index].shape[0],\n", + " np.unique(y[test_index]).shape[0],))\n", + " assert y[train_index].shape[0]+y[test_index].shape[0] == y.shape[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike sklearn's version, where n_splits cannot be greater than the number of members in the smallest class, we use an approximate approach to allow minority class samples to be only in train part or valid part. The downside is the number of samples in each fold is not even. Actually the number of samples in valid is monotonically decreasing from fold 0 to fold n-1, and the size difference between largest fold and smallest fold increases with n_splits. Based on my limited experience, this is acceptable." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### I don't even want to run sklean's version on this dataset since it runs forever. Please feel free to try." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\n%%time\\nskf = StratifiedKFold(n_splits=4,random_state=None, shuffle=False)\\nprint('[samples, classes] in each fold:')\\nfor train_index, test_index in skf.split(y, y):\\n print('train [%d,%d] valid [%d,%d]'%(y[train_index].shape[0],\\n np.unique(y[train_index]).shape[0],\\n y[test_index].shape[0],\\n np.unique(y[test_index]).shape[0],))\\n\"" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "%%time\n", + "skf = StratifiedKFold(n_splits=4,random_state=None, shuffle=False)\n", + "print('[samples, classes] in each fold:')\n", + "for train_index, test_index in skf.split(y, y):\n", + " print('train [%d,%d] valid [%d,%d]'%(y[train_index].shape[0],\n", + " np.unique(y[train_index]).shape[0],\n", + " y[test_index].shape[0],\n", + " np.unique(y[test_index]).shape[0],))\n", + "\"\"\" " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Measure the run time of sklearn's stratified kfold using random data\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def stratified_kfold_timing(n_splits,classes,samples,gpu=False):\n", + " \"\"\"measure the run time of stratified kfold split using random synthetic data.\n", + " Parameters\n", + " ----------\n", + " n_splits : int, \n", + " number of splits\n", + " classes : int, \n", + " number of classes for the synthetic data\n", + " samples: int, \n", + " number of samples for the synthetic data\n", + " gpu: boolean, default False,\n", + " use gpu based stratified split or not\n", + " \n", + " Returns\n", + " ------\n", + " samples: int, \n", + " number of samples for the synthetic data\n", + " classes : int, \n", + " number of classes for the synthetic data\n", + " duration: float,\n", + " run time of the stratified kfold split operation\n", + " \"\"\"\n", + " y = np.random.randint(0,classes,samples)\n", + " start = time.time()\n", + " if gpu:\n", + " skf = StratifiedKFold_cudf_gpu(n_splits=n_splits)\n", + " else:\n", + " skf = StratifiedKFold(n_splits=n_splits)\n", + " try:\n", + " for train_index, test_index in skf.split(y, y):\n", + " break # only measure the time of one fold\n", + " except:\n", + " return None,None,None\n", + " duration = time.time()-start\n", + " return samples,classes,duration" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "samples: 10000 classes: 10 time:0.0108 seconds\n", + "samples: 10000 classes: 100 time:0.0353 seconds\n", + "samples: 10000 classes: 1000 time:0.2877 seconds\n", + "samples: 100000 classes: 10 time:0.0643 seconds\n", + "samples: 100000 classes: 100 time:0.1900 seconds\n", + "samples: 100000 classes: 1000 time:1.2166 seconds\n", + "samples: 100000 classes: 10000 time:11.4666 seconds\n", + "samples: 1000000 classes: 10 time:0.6816 seconds\n", + "samples: 1000000 classes: 100 time:1.6286 seconds\n", + "samples: 1000000 classes: 1000 time:9.7290 seconds\n", + "samples: 1000000 classes: 10000 time:87.1364 seconds\n", + "samples: 1000000 classes: 100000 time:867.2177 seconds\n" + ] + } + ], + "source": [ + "sklearn_split_time = []\n", + "for i in range(4,7):\n", + " for j in range(1,6):\n", + " samples,classes,t = stratified_kfold_timing(n_splits=10,classes=10**j,samples=10**i,gpu=False)\n", + " if t is None:\n", + " continue\n", + " print('samples: %d classes: %d time:%.4f seconds'%(samples,classes,t))\n", + " sklearn_split_time.append([samples,classes,t])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Measure the run time of cudf's stratified kfold using random data" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "samples: 10000 classes: 10 time:0.2129 seconds\n", + "samples: 10000 classes: 100 time:0.2013 seconds\n", + "samples: 10000 classes: 1000 time:0.1998 seconds\n", + "samples: 10000 classes: 10000 time:0.2702 seconds\n", + "samples: 10000 classes: 100000 time:0.1997 seconds\n", + "samples: 100000 classes: 10 time:0.2067 seconds\n", + "samples: 100000 classes: 100 time:0.2078 seconds\n", + "samples: 100000 classes: 1000 time:0.2079 seconds\n", + "samples: 100000 classes: 10000 time:0.2139 seconds\n", + "samples: 100000 classes: 100000 time:0.2746 seconds\n", + "samples: 1000000 classes: 10 time:0.3496 seconds\n", + "samples: 1000000 classes: 100 time:0.3753 seconds\n", + "samples: 1000000 classes: 1000 time:0.3382 seconds\n", + "samples: 1000000 classes: 10000 time:0.3291 seconds\n", + "samples: 1000000 classes: 100000 time:0.3089 seconds\n" + ] + } + ], + "source": [ + "cudf_split_time = []\n", + "for i in range(4,7):\n", + " for j in range(1,6):\n", + " samples,classes,t = stratified_kfold_timing(n_splits=10,classes=10**j,samples=10**i,gpu=True)\n", + " if t is None:\n", + " continue\n", + " print('samples: %d classes: %d time:%.4f seconds'%(samples,classes,t))\n", + " cudf_split_time.append([samples,classes,t])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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hUAhQM+ePSkrK4vGHwHwNnAvL/dW/+zdezv3319GWpqXBEbxY5LS9u3bo/p3kexUX5FRfUVG9SUiIiLgz5zAw4C1dZ6vA45p5vwpwOlAtpnlOeceb+wk59xMYCbAqFGj3NixY6MTbVBJiTc3cMqUMh55ZCxFRXDuuVH9iKRUVlZGtP8ukpnqKzKqr8iovkRERAQSYGEY59zDwMPhnGtmk4BJeXl5UY+joMB7lJXB6tVRv7yIiEjMxLJ9FBGRxOPHrnVfAofXed47WLbfnHNznHOF2dnZ0biciIhIUlD7KCIidfmRBC4EBphZrpm1By4CXo7Ghc1skpnNrKioiMblREREREREkk6st4iYBbwDDDKzdWZ2pXMuAPwYKAW+AF5wzi2JxufpTqeIiIiIiEjzYr066OQmyl8DXovlZ4uIiIiIiMi+/BgOGjMaDioiIiIiItK8pEoCNRxURERERESkeUmVBIqIiIiIiEjzkioJ1HBQERERERGR5iVVEqjhoCIiIiIiIs1LqiRQREREREREmpdUSaCGg4qIiIiIiDQvqZJADQcVERERERFpXlIlgSIiIiIiItI8JYEiIiIiIiIpREmgiIiIiIhICkmqJFALw4iIiOxL7aOIiNSVVEmgFoYRERHZl9pHERGpK6mSQBEREREREWmekkAREREREZEUoiRQREREREQkhSRVEqiJ7yIiIiIiIs1LqiRQE99FRERERESal1RJoIiIiIiIiDRPSaCIiIiIiEgKURIoIiIiIiKSQpQEioiIiIiIpBAlgSIiIiIiIilESaCIiIiIiEgKSaokUPsEioiIiIiINC+pkkDtEygiIiIiItK8pEoCRUREREREpHlKAkVERERERFKIkkAREREREZEUoiRQREREREQkhSgJFBERERERSSFKAkVERERERFKIkkAREREREZEUoiRQREREREQkhSgJFBERERERSSEZfgfQEjM7ApgKdAPmOed+73NIIiIiccHMvgdMBDoDTznn3vA5JBERSQAx7Qk0s6fNbIOZLW5Qnm9my8xsuZnd2tw1nHNfOOeuAS4ETohlvCIiIm0lSm3kS865q4BrgO/HMl4REUkese4JLAYeBf5QU2Bm6cBjwBnAOmChmb0MpAPTG7z/CufcBjM7G7gW+J8YxysiItJWiolCGxk8viP4PhERkRbFNAl0zs03s74NiscA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "colors = ['b','g','r']\n", + "\n", + "plt.subplot(1,2,1)\n", + "seq = {}\n", + "for samples,classes,t in sklearn_split_time:\n", + " if samples not in seq:\n", + " seq[samples] = [[],[]]\n", + " seq[samples][0].append(classes)\n", + " seq[samples][1].append(t)\n", + "plt.yscale('log')\n", + "plt.xlim(5,5*10**5)\n", + "plt.ylim(10**(-3),10**3)\n", + "plt.xscale('log')\n", + "plt.xlabel('number of classes')\n", + "plt.ylabel('run time: seconds')\n", + "plt.grid()\n", + "for samples,color in zip(seq,colors):\n", + " plt.scatter(seq[samples][0],seq[samples][1],c=color,label='%d samples'%samples) \n", + " plt.plot(seq[samples][0],seq[samples][1],c=color)\n", + " plt.legend(loc='upper left')\n", + " plt.title('sklearn stratified split')\n", + " \n", + "plt.subplot(1,2,2)\n", + "seq = {}\n", + "for samples,classes,t in cudf_split_time:\n", + " if samples not in seq:\n", + " seq[samples] = [[],[]]\n", + " seq[samples][0].append(classes)\n", + " seq[samples][1].append(t)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.xlim(5,5*10**5)\n", + "plt.ylim(10**(-2),10**1)\n", + "plt.xlabel('number of classes')\n", + "plt.ylabel('run time: seconds')\n", + "plt.grid()\n", + "for samples,color in zip(seq,colors):\n", + " plt.scatter(seq[samples][0],seq[samples][1],c=color,label='%d samples'%samples) \n", + " plt.plot(seq[samples][0],seq[samples][1],c=color)\n", + " plt.legend(loc='upper left')\n", + " plt.title('cudf stratified split')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The real landmark data has more than 200K classes and 4 million samples, hence rapids can get more than **1000x speedup**." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/blog_notebooks/plasticc/notebooks/cudf_workaround.py b/the_archive/archived_competition_notebooks/kaggle/malware/cudf_workaround.py similarity index 100% rename from blog_notebooks/plasticc/notebooks/cudf_workaround.py rename to the_archive/archived_competition_notebooks/kaggle/malware/cudf_workaround.py diff --git a/the_archive/archived_competition_notebooks/kaggle/malware/draw.py b/the_archive/archived_competition_notebooks/kaggle/malware/draw.py new file mode 100644 index 00000000..f29a8200 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/malware/draw.py @@ -0,0 +1,19 @@ +import pandas as pd +import seaborn as sns + + +def pie_chart(data,tags,title=None,transpose=False,figsize=(16,8)): + sns.set() + dic = {} + values = set() + for i in data: + for k in i: + values.add(k) + values = list(values) + for i,tag in zip(data,tags): + dic[tag] = [i.get(k,0) for k in values] + df = pd.DataFrame(dic, index=values) + if transpose: + df = df.transpose() + df.plot(kind='pie', subplots=True, figsize=figsize,title=title) + diff --git a/the_archive/archived_competition_notebooks/kaggle/malware/malware_time_column_explore.ipynb b/the_archive/archived_competition_notebooks/kaggle/malware/malware_time_column_explore.ipynb new file mode 100644 index 00000000..f3c066c6 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/malware/malware_time_column_explore.ipynb @@ -0,0 +1,742 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "GPU_id = 0\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import cudf as gd\n", + "import numpy as np\n", + "from collections import OrderedDict,Counter\n", + "import re\n", + "from librmm_cffi import librmm\n", + "import nvstrings\n", + "import time\n", + "import draw\n", + "from termcolor import colored\n", + "from nvstring_workaround import get_unique_tokens,on_gpu,get_token_counts,is_in\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "PATH = '/raid/data/ml/malware/input'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The purpose of this notebook is to study the difference between train and test datasets in order to develop a robust validation scheme. This is important to the generalization capability of models to unseen dataset (test data on private leaderboard).** I'm also trying to use cudf and nvstring as much as possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Table of contents\n", + "[1. Previous CV schemes](#prev)
\n", + "[2. Functions](#func)
\n", + "[3. Visualizations](#vis)
\n", + "[4. Conclusions](#conclusions)
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Previous CV schemes\n", + "\n", + "Previously, I used the naive __[K-Fold cross validation](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html)__ with random shuffling and observed some discrepencies between cross validation AUC (CV) and leaderboard AUC (LB) as follows: " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CVLBdescription
models
lgb10.7300.675lightGBM
lgb20.7320.672lightGBM with mean target features
ffm0.7270.680Field aware factorization machine
nn0.7290.678Neural network
\n", + "
" + ], + "text/plain": [ + " CV LB description\n", + "models \n", + "lgb1 0.730 0.675 lightGBM\n", + "lgb2 0.732 0.672 lightGBM with mean target features\n", + "ffm 0.727 0.680 Field aware factorization machine\n", + "nn 0.729 0.678 Neural network" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scores = pd.DataFrame({'models':['lgb1','lgb2','ffm','nn'],'CV':[0.730,0.732,0.727,0.729],'LB':[0.675,0.672,0.680,0.678]})\n", + "scores['description'] = ['lightGBM','lightGBM with mean target features','Field aware factorization machine', 'Neural network']\n", + "scores = scores.set_index('models')\n", + "scores" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Two points to be noted from the table above:\n", + "1. **CV AUC is higher than LB** which means there is some overfitting.\n", + "2. **Improvement of CV doesn't lead to improvement of LB** which means the split between train and test dataset is *not* the same as the KFOLD random split.\n", + "\n", + "Actually, the dataset provided here has been roughly __[split by time](https://www.kaggle.com/c/microsoft-malware-prediction/data)__. And random split for time series is __[not a good idea](https://www.datapred.com/blog/advanced-cross-validation-tips)__. \n", + "\n", + "I believe a time-based split will 1) reduce the gap between CV and LB and more importantly 2) align the improvement of CV to LB so that we can evaluate ETL, feature/model selection locally without submitting to kaggle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What's annoying is the dataset **doesn't include an explicit timestamp column**, so we have to infer the timing information from other columns. My intuitive assumption is that the version number of the defender software contains timing information: higher version number means more recent observations. Hence, in this notebook, I'll study these 4 columns:\n", + "1. *ProductName* - Defender state information e.g. win8defender\n", + "2. *EngineVersion* - Defender state information e.g. 1.1.12603.0\n", + "3. *AppVersion* - Defender state information e.g. 4.9.10586.0\n", + "4. *AvSigVersion* - Defender state information e.g. 1.217.1014.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 2. Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def rmse(a,b):\n", + " \"\"\"compute root mean square error of two numpy arrays\n", + " \"\"\"\n", + " return np.mean((a-b)**2)**0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def get_topk_token_count(nvs,k=5):\n", + " \"\"\"get top-k token counts of a nvstring object\n", + " \n", + " Parameters\n", + " ----------\n", + " nvs : a nvstring object, \n", + " k : integer, for top-k\n", + " \n", + " Returns\n", + " ----------\n", + " nvs_count : a dictionary (collections.Counter) token (str) => count (int)\n", + " including all tokens of that nvstring\n", + " nvs_count_topk : a dictionary (collections.Counter) token (str) => count (int)\n", + " including top-k frequent tokens of that nvstring\n", + " \"\"\"\n", + " nvs_count = get_token_counts(nvs)\n", + " nvs_count_topk = dict(nvs_count.most_common(k)) \n", + " sum_top = sum([j for i,j in nvs_count_topk.items()])\n", + " ratio = '%.4f'%(sum_top/nvs.size())\n", + " ratio = colored(ratio,'red')\n", + " print('# of unique values: %d, top%d %s, top%d percentage:'%(len(nvs_count),k,str(nvs_count_topk),k),ratio) \n", + " return nvs_count,nvs_count_topk" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def overlap_piechart(train_count,test_count,title):\n", + " \"\"\"draw a pie chart of overlapped ratio between two datasets\n", + " Parameters\n", + " ----------\n", + " train_count : a dictionary (collections.Counter) token (str) => count (int)\n", + " for train data\n", + " test_count : a dictionary (collections.Counter) token (str) => count (int)\n", + " for test data\n", + " \n", + " \"\"\"\n", + " train_in_test = is_in(train_count,test_count)\n", + " test_in_train = is_in(test_count,train_count)\n", + " t1 = colored('%.3f'%train_in_test,'red')\n", + " t2 = colored('%.3f'%test_in_train,'red')\n", + " print('train_in_test ratio',t1,' test_in_train ratio',t2)\n", + " data = []\n", + " data.append({'in test':train_in_test,'not in test':1-train_in_test})\n", + " data.append({'in train':test_in_train,'not in train':1-test_in_train})\n", + " tags = ['train data','test data']\n", + " draw.pie_chart(data,tags,title=title,figsize=(16,4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3. Visualizations" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 5.09 s, sys: 1.22 s, total: 6.31 s\n", + "Wall time: 6.3 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# peak gpu memory usage is 17GB!\n", + "cols = ['ProductName', 'EngineVersion', 'AppVersion', 'AvSigVersion']\n", + "train = gd.read_csv('%s/train.csv'%PATH,usecols=cols)\n", + "test = gd.read_csv('%s/test.csv'%PATH,usecols=cols)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**ProductName: name of the defender software**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Counter({'win8defender': 8826520, 'mse': 94873, 'mseprerelease': 53, 'scep': 22, 'windowsintune': 8, 'fep': 7})\n", + "test Counter({'win8defender': 7797245, 'mse': 55946, 'mseprerelease': 34, 'scep': 16, 'fep': 7, 'windowsintune': 5})\n", + "CPU times: user 1.96 s, sys: 232 ms, total: 2.19 s\n", + "Wall time: 2.24 s\n" + ] + } + ], + "source": [ + "%%time\n", + "col = 'ProductName'\n", + "train_count = get_token_counts(train[col].data)\n", + "print('train',train_count)\n", + "test_count = get_token_counts(test[col].data)\n", + "print('test',test_count)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The following pie charts show that**:\n", + "1. there are 6 difference product names in both train and test\n", + "2. most samples are from product *win8defender*\n", + "3. the distribution is similar in train and test" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAEECAYAAADNrG76AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3wUdf748ddutqbSpAhSlE4S0AMPBU+wndyh6J0ciL0e+kOkKEU9FJVDASkiKNIEBQ6VLl9FikrvLRJ6MwkkkEbKlqm/PxJWI8UQArtJ3s/HIw82M7Ofec+GzDvv+XzmMxbTNE2EEEIIIYQQQlwSa7ADEEIIIYQQQoiySIopIYQQQgghhCgBKaaEEEIIIYQQogSkmBJCCCGEEEKIEpBiSgghhBBCCCFKQIopIYQQQgghhCgBKaaEEEIAsGnTJpo0aUJqamqwQxFCCCHKBCmmhBAihA0aNIgmTZrQpEkTmjdvTseOHRkyZAhZWVnBDq1YFi1aRJMmTc5Zfva4RowYUWR5amoqTZo0YdOmTVcrRCGEEKLEpJgSQogQ17p1a9auXcuqVat4/fXX+f777xk4cOB5t1UU5SpHV3JOp5PPP/+clJSUYIcihBBClIgUU0IIEeLsdjvXXHMNNWvW5K677uKJJ55gzZo1HD58mCZNmrB48WKee+45WrVqxbhx4wDYuXMnjzzyCPHx8bRp04b+/fuTkZFRpN3PP/+cv/zlL7Rs2ZJnnnmGkydPFlk/f/58mjdvXmTZ+XqOfvnlF3r37s3NN99My5Ytue+++/jhhx/YtGkTAwYMAAj0rg0aNCjwvhtvvJGmTZsyevToix7/mDFj6NSpEy1btuT2229nyJAh5ObmnhPnxo0bue+++4iPj+exxx4jLS2NLVu28MADD9CqVSuefPJJ0tLSirS9bt06unfvTnx8PLfddhuDBw8uM71+Qgghgk+KKSGEKGNcLheGYaBpGgCjRo3ivvvuY8mSJXTv3p3Tp0/z9NNPU7NmTb766is+/vhjDhw4QO/evQNtrFixguHDh/PUU0+xcOFC7r333nOG3BXH6dOn6d69Ozk5OUycOJElS5bw8ssvY7VaufHGGxkyZAgAa9euZe3atbz++uuB91osFgYOHMjSpUtJSEi44D6cTifvvPMOS5cu5b333mPz5s28++67RbYxDIMJEybw7rvvMmfOHNLS0ujbty8ffvghb731FnPmzCE1NZXhw4cH3rNhwwZefPFF/v73v7N48WImTJhAcnIyL730EqZpXvJnIYQQouKxBTsAIYQQxXfo0CFmzZpFy5YtiYiIAKBbt27cf//9gW3Gjh1LZGQkw4cPx+FwADBy5Ei6dOnCli1baNOmDVOnTqVTp0489dRTADRo0IAjR44wbdq0S4pn1qxZWCwWJk6cSHh4OAB169YNrI+MjATgmmuuOe/7W7duzZ133smIESP4/PPPz7vNiy++GHhdp04d+vfvT9++fRk+fDhWa8E1QdM0ee2112jWrBkA//rXvxg5ciTz5s0jNjYWgO7du/Pxxx8H2po4cSKPPfYYjz32WGDZ+++/T8eOHdm3b1+gLSGEEOJCpJgSQogQt3nzZm688UZ0XUdRFG655RbefvvtwPr4+Pgi2x86dIhWrVoFCimApk2bEhUVxcGDB2nTpg2HDx+mc+fORd73pz/96ZKLqT179nDjjTcGCqmSeOWVV+jcuTMrV66kRYsW56z//vvvmTFjBsePHyc/Px/DMFBVldOnT1OjRg2goJercePGgfdUq1YNoMjkF9WqVSM7Oxtd1wkLCyMhIYGdO3cya9asc/Z57NgxKaaEEEL8ISmmhBAixMXHx/P+++8TFhZG9erVA0VScnIyAG63+4rs92yvz2+pqlrq+2nQoAHdunVj1KhRTJ48uci6Xbt28fLLL/P8888zYMAAoqOj2bVrFwMHDiwSi9VqJSwsLPC9xWIBCu43+/2ys0P4DMPgueeeo0uXLufEdLYYE0IIIS5G7pkSQogQ53K5qFevHnXq1CnS23QhDRs2ZOfOnUVm9tu3bx+5ubmB3psbbriB7du3F3nftm3binxfpUoVdF0nPT09sCwxMbHINi1atGDHjh14PJ7zxnK2mNF1/aIx9+rVi1OnTvHll1+eE1PlypXp27cvLVu2pEGDBqX2HKzY2FgOHTpEvXr1zvk6O4RSCCGEuBgppoQQopx59NFHycvLY/DgwRw4cICtW7fy6quv0rp1a1q3bg3A008/zbfffsuMGTM4duwY8+bNY/HixUXaiY+PJyIigg8++IBjx46xevVqJkyYUGSbHj16YBgGL774Itu2bSMpKYkffviBn376CSi4xwlg1apVZGZmkp+ff96Yq1SpwvPPP8+MGTOKLG/QoAGZmZl89dVXJCUlsXDhQmbPnl0qn1Pv3r1ZuXIlw4cPZ+/evfzyyy+sXr2a1157DZ/PVyr7EEIIUb5JMSWEEOVMtWrVmDZtGqmpqTz00EP07NmTxo0b8+GHHwa2ufvuuxk4cCBTpkzh/vvvZ8mSJbzyyitF2qlUqRKjR49m586d3H///UycOJFXX321yDbVq1dn9uzZRERE8Pzzz9O5c2fGjBkTWB8fH8/jjz/OkCFDuOWWW3jnnXcuGPeTTz5J5cqViyzr2LEjPXv2ZMyYMdx3330sXbo0MN365Wrbti0zZsxg//799OjRg/vvv5/hw4cTERGBzSaj4IUQQvwxiynzvwohhBBCCCHEJZOeKSGEEEIIIYQoASmmhBBCCCGEEKIEpJgSQgghhBBCiBKQYkoIIYQQQgghSkCKKSGEEEIIIYQoASmmhBBCCCGEEKIEpJgSQgghhBBCiBKQYkoIIYQQQgghSkCKKSGEEEIIIYQoASmmhBBCCCGEEKIEpJgSQgghhBBCiBKQYkoIIYQQQgghSkCKKSGEEEIIIYQoASmmhBBCCCGEEKIEpJgSQgghhBBCiBKQYkoIIYQQQgghSkCKKSGEEEIIIYQoASmmhBBCCCGEEKIEpJgSQgghhBBCiBKQYkoIIYQQQgghSkCKKSGEEEIIIYQoASmmhBBCCCGEEKIEbMEOQFRsqqqSlJSE1+sLdijiCnG7XVx33XXY7fZghyKEEKIYJDeXf5KbS4/FNE0z2EGIiuvIkSPYbE4iI2OwWCzBDkeUMtM0yc09g677uf7664MdjhBCiGKQ3Fy+SW4uXTLMTwSV1+uTk3U5ZrFYiIqKkaubQghRhkhuLt8kN5cuKaZE0MnJunyTn68QQpQ9cu4u3+TnW3qkmBJCCCGEEEKIEpAJKERIcYc7cTlL/7+lz6/h9fhLvV0hhBCivJPcLMSFSTElQorLaeO+/otKvd0lH3SRE7YQQghRApKbhbgwKaaE+A2fz8vbb7/JkSOHsdls1KtXn2HD3mfJkoXMnTsHALvdzqhR46hatSrr169l+vSpKIofu91Onz79iY2NZ9u2rYwZM5JGjRqzb99e3G43//nPUBo0kFlzhBBCiEshuVmEMimmhPiNjRs3kJ+fx//+Nw+AnJwctm3byowZ05g0aRpVq1bD4/EQFhZGcnIS06ZNZty4CURERHLkyGH69n2JRYv+D4BDhw7Sr98A3nzzHZYuXcLQof/hs89mBfPwhBBCiDJHcrMIZVJMCfEbjRo15tixY4wcOZybbmpNu3btWb9+DZ06daZq1WoAhIeHAwUn95SUZHr2fDbwfl3XyMjIAKBOneu46aY/AdCp09957713yc/PIyIi8ioflRBCCFF2SW4WoUyKKSF+o3btOsye/RVbt25mw4Z1fPzxR9x+e4cLbG3Stu2tvPnmO+esOXbs6BWNUwghhKgoJDeLUCZTowvxG6dOpREWZuX22zvSp09/srOzaNy4Kd9++03gqpbH48Hv93PzzbewceN6jhw5HHh/YuKewOuUlGR27twOwLJl33LDDQ3lypcQQghxiSQ3i1AmPVMipPj8Gks+6HJF2i2OQ4cOMXHihwAYhsHjjz/NX//aCb/fT+/eL2CxWHA4HIwcOZa6devy1lvvMmzYUPx+P6qqEh/fiubNWwBwww0NWbx4ISNGDMflcp33KpkQQggR6iQ3C3FhFtM0zWAHISquPXsSufbaesEOo9Rt27aV8ePHyE2thU6cOE6LFs2DHYYQQohikNxcMUhuLh0yzE8IIYQQQgghSkB6pkRQlderX6IoufolhBBlh+TmikFyc+mQe6ZEyDJNE9M0sQBYrICJaRiYpoFhGIH1pmlgGiYWC1gs1oIvq6Xw9a//YrEUtGGahcstwT1AIYQQoow5m3uBQB41CnOzaZzNyQZmwcYU5F2wWq1YrFas1rAiORp+k5uxYLFKbhZlixRTIugCRZPFgmmaGLqGpqpoqoKuqWiaiq5phSfly2ABq9WGzW4jLMxOmN2Oze4gzGbHag0DTDBNLFYZ/SqEEKJiK5KbDQNd1wrysaqiayq6rqFrGqZhXN6OLBasVithYbZAXrbZHdhsdizWMEzTCFxUlWugIhRJMSWuOk1VMAwdi8WKrqnknclCVfzomnr5J+WLMcHQNRRdA3xF11kgLMyG3eHE4XJjd7qxWq2YpolViishhBDlnKr4CwqXwtycn5uN6vejKv7Lv5h5MaaJoesYul6wr9+wWCyE2ezY7HZsDidOVzjWsDDJzSKkSDElrjhd09B1DYvFQuovhzm6bycph/eRkZZM678/idMaAv8NzcI4NQ2fJx8Aa1gYdqcLh9ONw+Uq6L0ykSEIQgghyjxD19E0FUPXSDm6n18O/Ezq8UNknEoJmdxsmiaaqqCpCnjyySMzkJudLjcOV3hgqKEM3RfBEvzfFFEunT1Ja4qfxK1rOJSwmfTU5D+8unV9wwbY3eGlHo/q9XDk0KU9+dzQdfyefPy/Ka4cLjeu8EjsDqcUVkIIIcoUQ9cLhtDrGgd2bWT/jg2cSv7j3BjKuTnMZsPhdON0h2N3uiQ3i6tOiilRakzTRPUXDJ87uHsziVtXk5Z05JLasLvDOTLsn6Ue2/Wvz7vsNgxdx5efhy8/D4vVitMdjjsiCpvdAchVMSGEEKHHMHQ0RcEwDA7u3sT+HetJTTpySUP3Qjk365qGV8vFm58ruVkEhRRT4rKpig+Lxcrx/Qns2fITyYcSMQw92GGVyP0P/YNHH+7Bxs2byM3No1fPF9iZsJvtO3ag6xoD+7/KdXXqkJSUxLgJ4/H7/RiGyb33duKJJ59B1wwmfTqBHTu2oygKDRs2YsCA1wgPL/0rekIIIcSFnL3/6NDuzSRuW8PJ44eu7L1PV1BJc3OnezvxxJPPomkakz6dKLlZXBFSTIkSU3xeNFVh64/fsHfrmnNuHC2rIsIjGP3+SNauX8+wEe/xap9+PPHIo8xbuIAv531N/5f78O2y77i5dRu6/qPgSl1eXh4ZJ5P5euFC3C43U6fOBCxMmDCOGTOm8cILvYJ7UEIIISoExe9DU/xsW/1/7N2yBsXvDXZIpaKkuTk9NYmvFyzA5XRJbhZXhBRT4pKpfh852RlsXrGQI3u2Ud6e+3xbu3YA3HD99ViANq1bA9Dw+hvYsGkjAC2aN+ezz2fi9/uJi40jPjYWgA0b1+PxeFm1ajlWaxiqptGoUeOgHIcQQoiKwTRNNMVPTnYGG7+fx7G9OyU3n83NJmzYuAGPx8sPP6yQ3CxKnRRToljOnqiz0lNZ/+2XJB/eG+yQrhi73Q4UPGDQVvj67PeGXjB1+61tb6FJ4ybs3LWTeQvms2LVSvq/3AfTNOn53PO0jIsDIMxmJyI65pwHHAohhBClQVX8pJ/8hY3L5pFydH+ww7liSjU32+1ERFcuzM0WeX6VuCxSTIk/pPp9ZKWnsvabOZw4diDY4YSEEydPUrNGDe7seAe1atXiwwkfAXBz6zYsWrKYpo0b43Q6yc3N4dixo9SrV4/wqBjcEVHIiVsIIcTlUvw+8s5ksmr+dFKPHwp2OCGh2Lk5J4djR49Sv359IqIr4yycqVAueIqSkGJKXNDZB+n+tOhzDu7eHOxwQsra9ev4ac0abDYbFgs899QzADz04D+Y8+Vc+g8agKXwae3du3bjujp1yMvOxJuXS1TlqtjtTpm6VQghxCUryM0aa5fOYd+O9WV2UokroSS5OSfzNGE2G5GVquJwuqSgEpfMYpa3QbXishlGwZPIEzb+wOYVC67oxBKtOz9F5eiqge9D6VkWV5LDHU50papYrNYKceI+ceI4LVo0D3YYQghRZum6jmno7N6wki0rF0luvgIcLjfRlatJbhaXRHqmRBGq38fpk7+wat50stNTr/r+Q+mkeiUpXg/pPi8RUTGER8UgQ/+EEEJciKr4STmyj58Wf0FuVvpV33+Fyc0+LxmpyUREV8IdGY3kZlEcUkwJADRVQfH7+GHBZxxN3BHscCoG0yQ/Jxtvfh5RlWV4gRBCiKI0TUX1+1g25+NyPfFTKDFNk7wzWXg9eURXrobN5pBh+eKipJgSqIqf4/sTWPn1VFTFF+xwKhxD1ziTnoYrPJKoylWRK2FCCCFUxUfKkf0s/3Iyfm9+sMOpcHRVJevUSVzhEURVqgqF91oJ8XtSTFVghmEEJpjYt31dsMOp8HyePFTFT0zV6oTZbNJLJYQQFZBh6OiaxurFs9i7bW2ww6nwfJ783+Rmu+RmcQ4ppiooVfGTl5PF0hnjgnJvlDg/XVPJPHWCyJjKuCOi5KQthBAViKr4yck8zf99MZ4zGaeCHY4opGsamadOEhVTBVdEpORmUYQUUxWQqvjZv2MDa76Zha5pwQ5H/J5pkpedieLzEl3lGiwWi5y4hRCinFMVP7s3rGDT9wswDD3Y4YjfM01yszNQ/F6iK18DFhmSLwpIMVWBGIaBpvpZPncyR/fKJBOhTvF5yUxLIaZqdWx2hxRUQghRDpmmiar4+XbWRyQd3BPscMQf8Hs9ZKopxFSrQViYDMkXUkxVGLqu4fPks+DT90J6WF/dxtfjdrpLvV2v38svB46UertXmqHrZJ1OJbpyVZzuiBKdtN9++02aNWtG167dr0CEQgghSkrXdRSfh4WTR5CRlhzscC5IcnNRuqaRmXaCqEpVcYVLbq7opJiqADRVJTc7gwWT38OTeybY4VyU2+nmX3NfKPV2v+z2cam3eaXouk5YWNivC0yTnMx0wqNVIqIqnXPS1jQNm01+lYUQoizRVIXc7EwWTn6f/NzsYIdzUZKbz5+bc7PS0TWViGjJzRWZ/JTLOVXxk34yicXTP0D1y7Tnf+T+h/7Bow/3YOPmTeTm5tGr5wvsTNjN9h070HWNgf1f5bo6dUhOSWHchPH4/X4Mw+DODh15sMsDqKrKF3Nm83PiHlRVpX69+rzw3PO43W7GfjQeW1gYvyQlkZObQ2zzFvz72eew2+2M/Wg8YWFWUlJO4PV5GTdqNPsPHGDmrC/weD0A9OjWnfa33U6+T+Gppx7j73+/j61bt/DAA//gvvu68MknH7Fjx3YURaFhw0YMGPAa4eFFn1ivquoFt1u27Fvmzp2DpqkAvPRSH9q0+TOGYTBq1Pts27YFu92O2x3O5MnTAVi/fi3Tp09FUfzY7Xb69OlPbGz81f2hCSFEGaMqfk4lH+WbGePkkSTFEOq5+bbbbidPcnOFJcVUOaYqPn45sIdl//sYQ5ebWYsrIjyC0e+PZO369Qwb8R6v9unHE488yryFC/hy3tf0f7kP3y77jptbt6HrP/4JQF5eHgDzFy0kPDycD94bAcBnn8/k6wXzeazHIwDsP3iQEcP+i8PhYOiwd1m2YjmdO/0NgKNHj/Hft9/B5XKRl5/PxE8n8ebrr1OlchUyszLpP3AAzZo2Q9E0zpzJplmz5vTu3ReAadOmEBERxbRpnwPw0UfjmDFjGi+80KvIsX3++YwLbte27S3cc8+9WCwWjh8/Rq9ePVmy5DsOHjzAtm1bmDPna6xWKzk5OQAkJycxbdpkxo2bQEREJEeOHKZv35dYtOj/ruSPRwghyjRV8XMoYQur5k/HNIxgh1NmSG6W3ByqpJgqp1TFT+KWNaxZOgdMM9jhlCm3tWsHwA3XX48FaNO6NQANr7+BDZs2AtCieXM++3wmfr+fuNg44mNjAdi8dQsej5f1GzcABVebGtSrX6Rtt7tg3PkdHTqwfuPGwAn71ltuweVyAbBv/z5OnUpj6LB3A++1WCycPHmS6OhoHA4Hd9xxF6YJFgusXfsT+fn5/PDDCgAURaFRo8bnHNvFtktOTmbSpNc4ffoUNpuNzMwMMjLSqV27NrquMWzYUFq3bkO7dn8BYOPGDaSkJNOz57OB9nVdIyMjg6pVq5b04xdCiHJLVfxs+3EpW39YEuxQypyykpvvvOPuwDrJzRWDFFPlkKr42bJqMdt/kqsQJWG32wGwWq3YCl+f/d7QC64i3tr2Fpo0bsLOXTuZt2A+K1atpP/LfTBNk57PPU/LuLhL3u/ZkzUUzO5Ur1593nvn3XO2Szt1CqfTSXZ6KpWvqYXFYsU0TV59dRCtW9980X1cbLshQ16jd+++3H57RwzDoEOHW/H7FapWrcbs2V+zfftWtmzZxIQJHzJjxmzApG3bW3nzzXcu+ViFEKKiURU/W1ctZpvk5hIpM7k5I5VK1WpildxcYViDHYAoXariZ8ea76SQusJOnDxJ5UqVuLPjHXT/1784eOggADe3bsOiJYvx+/0AeLxekpJ/naFp3Yb1+Hw+dF3nh9U/EX+BE3uzJk05efIEu39OCCw7eOgg5m96GXVVJTs9FdMwue2225kz5wt8voKx9/n5+Rw9eu4MSRfbLjc3l2uvrQ3AkiWLUBQFgKysLHw+H23b3sqLL/YmIiKSlJQUbr75FjZuXM+RI4cD7ScmyrS+Qgjxe6riZ8fqb6WQusJCITdrikL26ZMYpiG5uYKQnqlyRFV87Nn8E5tXLAx2KCXm9XuvyOw+Xr+3VNtbu34dP61Zg81mw2KB5556BoCHHvwHc76cS/9BA7BYrFgs0L1rN66rUweARjc0ZMg7QzlzJoe4Fi346113n7f9yMhI3hg0mOkzZzJl+jQ0TaNmjRq8Mei1IttpikJ2RhqPPfYEU6Z8ytNPPxZ4yO8zzzxPgwbXF9n+8cefZPLkSefdrm/f/gwY0I+oqGhuueUWYmIqAZCWlsrw4e+g6zq6rnPLLe2IjY3DarXy1lvvMmzYUPx+P6qqEh/fiubNW5TqZy2EEGWZqvjZvX4Fm1cuCnYoJSa5uUCxc7OqciZdcnNFYTFNuaGmPFAVPwd3b2bVvGnBDuWStO78FJWjK8YY3rEfjafhDTcExmGXJoc7nJgq14TswwNPnDhOixbNgx2GEEJcVari58DOjfyw4LNgh3JJJDeXDofbTUyV6pKbyzkZ5lcOaKrCyWMH+GH+9GCHIoJE8XrIzc5Aro0IIURoUBU/SYcS+WHhjGCHIoJE8XrJO5Mpubmck2F+ZZyuqWSdTmXp5+PllzXE9en10hVt35efh9VqJSK6csheBRNCiIpA01TST/7Cd7MnyIy6Ie5K52ZvXi7WMBvhkdGSm8sp6Zkqw0zDwJufy6KpI9ALH+YmKjZPbg7e/FwprIUQIkhM00Txevjms7HyjEcBQP6ZLPxej+TmckqKqTJM01QWTx+Nz5Mf7FBECMk7k4mmKnLSFkKIINBUhcXTR+P3eYIdigghOVnpqIpfcnM5JMVUGaUqflYvnkVmWkqwQxGhxoQzGafkhC2EEFeZqvhZ881s0k/+EuxQRKgxTcnN5ZQUU2WQqioc27uTvdvWBDsUEaIMXZeTthBCXEWq4ufInm0kblkd7FBEiDINgzMZaZKbyxmZgKKMMQwDb14OK8vYFOjF1eCGBjjCw0u9XcXj4ejho3+43cbNm5g56wvsdgev9u1Hndq1Sz2Wq0X1+/DkniE8KkZuehVCiCvI0HXysjNZVU5n1ZXcXHpUvx9Pbg7hUTIhRXkhxVQZo2sqS6aPRlOVYIdyRTjCw1nX5Z+l3m67RfOKtd13339Pj24P0/7WW0s9hmDIz83G7nRhdzjlpC2EEFeIpios/mw0uqYFO5QrQnJz6crPzcLhcmOzO5DUXPZJMVWGqIqfHxfOIOv0yWCHUi5NmT6NxH17STlxgm+XfcfjjzzKzFlf4PEW3ETco1t32vypNWmnTtFv4Kvc0aEDO3ftBkx6Pvs8LZqH4IPvTMjJOEWVmnWkmBJCiCtAVfx8P3cSuVnpwQ6lXCqvuflMximq1rgWLHLHTVknxVQZoWkqx/fvZv+ODcEOpdx69qmnOXL0KA/e34VmzZrx+ptDePP116lSuQqZWZn0HziA8WPGAZCbm0uDevV55omnSPj5Z0aNHc2nEz7GbrcH+SjOZRgGZzJOUalaDSmohBCiFOmaRvKhRI7t2xXsUMqtcpubdY2crHSiq1wjubmMk2KqjDB0nR8XfR7sMCqMffv3cepUGkOHvRtYZrFYOHnyJNHR0dhsNjr85XYA4mJjcTicJKek0KB+/SBFfHGq34ff58HpCpeTthBClBJd1/hhwWfBDqPCKG+52e/14PPk4wqPkNxchkkxVQaofh/r/m8uvvzcYIdSYZimSb169XnvnXfPWZd26lQQIrp8edmZOGuEg5yvhRDisil+H+uW/g9PXk6wQ6kwymVuPpOJ0y0XOssyGagZ4kzD4EzWafZs+SnYoVQozZo05eTJE+z+OSGw7OChg4HpTDVN46e1BVPT70lMRFH8IT+7kKHr5OVkYhoyJasQQlwOwzA4k57Gnq0yDfrVVB5zs2kY5J2R3FyWSc9UiNM0jRVfTgZ5JsFVFRkZyRuDBjN95kymTJ+GpmnUrFGDNwa9BkBUVBRHjx5l/sKFgMkrffqF5Jjs3/Pm5+KOiMJmcUgPlRBClJCuaXw/d5Lk5qusvOZmnyeP8MgYbNbQj1WcS4qpEKapCvu2ryH9ZFKwQ7lqFI+n2FOlXmq7xfHft98JvG7UsFGR73/v6SeevNywrj4TcjLTqVy9FhappoQQ4pKpip9d65ZXqJl1JTdfYSbkZqVT6ZqaMtyvDJJiKoRpqsL6774OdhhXVXEe3icuj6YqgR4qOWkLIcSlUXxetqxaFOwwrnOcaY8AACAASURBVCrJzVeeqvjxez1y/1QZJPdMhSjF72P14lmofl+wQxG/U6N6dWZNnxHsMC5Lfk52YIy5EEKI4lH8PtZ/92W5fThvWVYecnPemcxghyBKQIqpEOX35nNg96ZghyHKKdMw8OSekYJKCCEugeLzcmCX5GZxZRi6XnCxUyajKFOkmApBit/HhmXz5MZWcUV58nKkmBJCiGIq6JX6CtMwgh2KKMc8eTmYSG4uS6SYCkGq38dB6ZUSV5ppyhUwIYQoJsXnkdwsrjzTxJMrQ/HLEimmQozi97Fx+QK58iWuCm9+rlwBE0KIP6D4vdIrJa4ab16uFFNliBRTIUbXVPbvWBfsMERFYZpy75QQQvwBxefloNwrJa4S0zRlKH4ZIlOjhxDF72PzioUYuh7sUIKmXsOGuNzOUm/X5/Vz/NChUmnr5Vf6MWLYcJzOS4vz2Rf+zX8Gv0a9uvVKJY7f27RlM4l79/LU409cdLu0U6fYsWsn9959D1DQOxURXemKxCSEEGVdoFeqAv9hK7m55Eqcm/NyiIiKuSIxidIlxVQIMQ2dxK2rgx1GULncTt7u/02ptzvkg86l1ta4UaNLra3S9Oc2N/PnNjf/4XanTp3i++XLAyds0zDw5uXgjoyWZ1sIIcTv6JpW4XulJDeX3OXkZp8nD1d4pOTmECfFVIjQVIWd65bLsyuC7Lvvl3Hs+HF6Pvc8Bw4e5JXBA/ngvfdp1LARH0+eRIP6DZg46RPmfj4Lt9vNsy/8m463d2Dn7l1kZWXxwP1d6NzpbwDsSUzkkymfAtCieYsiVzUPHjrIp9Om4vP5cbmcPP/0MzRq2IgZs74gKjKSf3R5gLXr1zFyzGhmTJlKpZhKDB32Lvf/vTMNGtTng7FjyT6TDUDLuHiefeppVv6wii3btjLolQEk/PwzUz6bRuNGjdi3/wAWC7zatz/X1anDJ1Mmk3YqjZdf6UetmjUZ9MoA7ri7IytXriEiIgKAtm1vYtWqtYSHh9O27U307Pn/+OmnHzhz5gy9evXhjjvuBODnnxOYOHE8+fl5ADz//Au0a3fbVfppCSHElaWpCrs3rKzQvVKhoKLm5o533i65uQyQe6ZChoXELT8FO4gKLz4unl0JCQDsSthN08ZNAt/vTkigZVz8Oe/x+/2M/O97DBv6DjNnfYHX60VVVUaOHc3zTz/L+NFjiW3enNPp6QCoqsrwUSN5tHsPxo8ewyPdH2b4qJGoqkrLuDh2JewO7L9Jo8bsTvgZTdM4cPAAzZs146fVa6hZswbjR49l/OixdO/6r/Meyy9JSdx7918ZP3oM7W9tx5dffwVAz2efo26d6xg3ajSDXhkQ2F5TlQt+LhEREUyf/gVvvvkOY8aMACA3N5cRI/7L228PY8aM2XzwwTjee28Yubm5l/qxCyFEiLKQuFlyc7BV5NysKv4Lfi6Sm0ODFFMhIi3pMPk52cEOo8K7tlYtFMVPekY6uxMSeKzHI+xK2M3p9HRUVaVWzZrnvOe2du2BgqevR0ZEkJGZQXJKCk6Hk7jYWADa39qOiPBwAFJOnMBms9EyvuDk3yq+JTabjZQTJ2jWpCmHDh1CVVX27ttHt65d2ZWwi/0HDlC3bl2cTidNGjdm244dTJ85gy1bt+Jyuc57LLWvvZYbrr8egCaNGnMyLfWix+7Lz7vgNOl33/1XAGJj4zh9+jR+v5+EhF2cOJFC374v8dhj3enb9yUsFgvJyUl/9DELIUTIM02TE8cOkJ8ruTnYKnRu9uRdcBZJyc2hQYb5hQDF52Xnuu+DHYYoFB8Xx5at28g+k01cbCyTpk5m67ZtxMXGnXd7h8MeeG21WtEvNIFIMcY8O51O6terz+p1a6lcuTLxsXFMmzGDqlWqBq68NW3ShLEjP2Dnrl38sPpHvl44n/ff/e+5cdkdReIy9AtP6Wu1WvF58sBScDXv3GMsuKE3LCwMAF3XMU2Thg0b8cknU//wuIQQoqxR/T52r18e7DBEoYqam/2efLBYJDeHMOmZCgEWi4Xj+3cHOwxRKD4unnkL59OsSVMAmjVtyryF82kZd/4T9vnUqV0bRfGzJzERgHUb1pOfnw8UXJXSNI3dP58dspCArmnUvvbawv3HMWfu/2gZF4/dbqda1aqs+vEH4gv3n5qWRrjbzV/at+eZJ57i8JEjGJfw7JPwcDf5Hk+RZbVq1uLAwYP4vR6WLfu2WO3ExbUkKSmJbdu2BJYlJu6RewuEEOXGLwd+DnYIolCFzs0+D99Lbg5Z0jMVZIahcyhhS4WeDv23fF5/qc7u89t2iys+No4xp08TX3i1qWVcPMuWLw+cMIvDbrfzSp9+hTe5WmjRvDnXVKsWWDf4lVeL3OQ66JVXsdvtgf3N+t+cQIKIj4tj3/59NG7YCICf9/zMom+WFFzRMkxeeP7fWK3Fvy5Sv159al97Lb36vkyd2rUZ9MoAnnnySSZ8+gkzZn3BPffcW6x2oqOjGTlyDOPHj2XMmFGoqkrt2nUYNWqszDwkhCjTDF1n/84NGIbkZpDcfHZ/kpvF+VhMKVWDSvF5WfLZGE4ePxjsUIKideenqBxdNdhhiLMsUK3mdVgLhwyUlhMnjtOiRfNSbVMIIa4U1e9j/qfvcfrE8WCHEhSSm0OMxcI1ta7DcgnFWXFIbi4dMswvyHRd4+QvpfPAOiEum1nwEF+5xiKEqMg0Ta2whZQIQaaJz+tBUnNokmIqiEzD4Mie7chvhwglfp9H/k8KISos0zTlPmYRcnyeXMnNIUqKqSBSFB/H9u8KdhhCFKGpSrFmNxJCiPJI8Xs5mrgj2GEIUYSq+DGRYioUSTEVRDabg5Qj+4IdhhBFmaD4fcGOQgghgsJms5N0ODHYYQhRlFlwL58IPVJMBVFO5ikUnzfYYQhxDsXrkfumhBAVUnZ6muRmEZL8Pg+mIbk51EgxFSSGoXN0nwzxE6FJ8csfEkKIikfXVA7v2RrsMIQ4L9XvBxmFH3LkOVNBoip+fjmQEOwwQk69hg1wucNLvV2f18PxQ0dLpa2XX+nHiGHDcTqdF91u34H9TJk2DVVT0TSdzp3+Rqe//vW82z77wr/5z+DXqFe33kXb3Lh5EzNnfYHd7uDVvv2oU7t2iY/jrLRTp+g38FVmTZ8RWKZrGqZhYCnlKdKFECKU6ZrG8f2Sm39PcnOo5GYV0zTleVEhRoqpILHZ7BX22VIX43KH89Hgp0q93V7Dp5daW+NGjS7Wdh9/OolHu/egTevWZGVl8e+X/h9t//xnKleqVOJ9f/f99/To9jDtb721xG0Ul+L34gqPvOB6XdcJk2JLCFGOWKxWTiWXzh/35Ynk5ou7mrlZVfw4Xe4LrpfcfPVJMRUk6SeT0DUt2GGI3/nu+2UcO36cns89z4GDB3ll8EA+eO99GjVsxMeTJ9GgfgMmTvqEuZ/Pwu128+wL/6bj7R3YuXsXWVlZPHB/Fzp3+lthaxbyPfkAeH1ewt1uXIVXzPYkJhY+gR1aNG9R5P6k5JQUpkyfRk5uDpqmcf/fO3PXHXcyZfo0EvftJeXECb5d9h3Dhr7N/gMHmDnrCzxeDwA9unWnzZ9aB65o3Xv3PWzdvh1F8fPSC/+P5s2aAbD0229ZtHQJ4W43rW/6U5HPYOv2bXw572s0TcfpctO3b39iY+PZtm0ro0ePoGnTZhw4sJ9///tF2rf/y5X8cQghxFV1OuWY3C8agiQ3/5qbdd3A6XLRp4/k5lAhxVQQmIZB0qE9wQ5DnEd8XDyLvvkGgF0Ju2nauAm7EhJo1LARuxMSeOC+Lue8x+/3M/K/75F26hQv9evDnR064na7efn/9WLY+8OZOXsWeXl59Ov9Mm63G1VVGTl2NP179yEuNpa169fxf999CxRcUfpg3Bj6v9yHOrXr4PF66T/wVZo2acKzTz3NkaNHefD+LrRp3Zq8/HwmfjqJN19/nSqVq5CZlUn/gQMYP2YcALm5uTRt3ITHejzCj6t/4rMvZjJi2HCOHjvGV/O/ZszID6hcqRIfT54UOJaTqanM/forhr4xhKjoaLLzfPTr35tFi/4PgKNHjzBo0OvExbW80j8KIYS4qgzDIDXpSLDDEOchufnX3BwdE0NWrldycwiRYioIVMVPRlpKsMMQ53FtrVooip/0jHR2JyTwWI9H+HL+19x+219QVZVaNWue857b2rUHoEb16kRGRJCRmUGd2nVYsGghTz3+BO1vbUdySgr/GfomNzS4nrz8fJwOJ3GxsQC0v7UdEz75GICUEydISk5m5JhfhyuoqkpScjJ1atcpst99+/dx6lQaQ4e9G1hmsVg4efIk0dHRuF0u2rRuDUCTxk2YNrNg3PXPe/bQ+qY/BYY0/PWue1i7fj0AO3buIDU1lcFD3gDAZneg6xoZGRkAXHddXTlZCyHKJU3xk37yl2CHIc5DcrPk5lAmxVSQZKadCHYI4gLi4+LYsnUb2WeyiYuNZdLUyWzdto242Ljzbu9w2AOvrVYruq6Tk5PDhs2b6N+nLwB1atemXt167D94kNrXXntuI4GbSU2io6OLNfbbNE3q1avPe++8e866tFOnsNnPjeuP24SbWt1I394vA1C1Zm3CbAXtHDt2FLf7wuO0hRCirMtITQ52COICJDf/mpur1KgdaEdyc/DJ1OhBYLM7yE5PDXYY4gLi4+KZt3A+zZo0BaBZ06bMWziflnHnP2GfT0REBHa7nZ8TC4ZzZmVlcfTYUepeV4c6tWujKH72JBY8FHLdhvXk5xeM3659bW2cDic//PRjoK3klGQ8Hs85+2jWpCknT55g98+/zjx18NDBPxzvH9uiBVt3bCf7TDYAy1etCKy7sVVLtu/cwS9JBVdnNVUlMVGGpAohyj+b3UHWacnNoUpy829ys6ZIbg4h0jMVBD5PHrqmBjsMcQHxsXGMOX2a+Lh4AFrGxbNs+XLiL+GEHRYWxoC+/ZkyfRqGYWAYBg93607d6+oC8EqffoU3uVpo0bw511SrFnjffwYPZsr0acxftAjDMKhUKYaB/V45Zx+RkZG8MWgw02fOZMr0aWiaRs0aNXhj0GsXja1B/fp0ffCfDHz9dcLD3fzpxpsC666tdS39evfhw4kTUBQFwzBp2epGmjdvUexjF0KIsig/NxtDl4mhQpXk5t/n5pskN4cIiynT1lx1KUf3s+DT94IdRkho3fkpKkdXDXxfFp5lUZE43OFEV66G1Xp5ndgnThynRYvmpRSVEEKUvmP7dvHNjLHBDiMkSG4Obc7wCKIrVcUiuTkkSM/UVWYaBqeSjwU7jJAlJ9XQoqsKFnncuhCinDN0ndSkw8EOI2RJbg4tuqZigmTnEFEh7pnKzc1l9+7dbNiwochXMKiqQkZqUlD2LcSl0nXtks7WOTk5HDx4kEOHDuH3+89Z36VLF3w+3yXHcccdd3DgwIFLfl9xrVy5kvfff/+86wYNGsQXX3wBQHJyMnPnzr1icQghgkNV/WSdOhnsMIQoFl3TsFiklAoV5b5nav78+bz99tuEh4fjcrkCyy0WCytXrrzq8ZiGQXZG2lXfrxAlYhY8e6W4T1PPzMyievXqxMTEnHf9okWLSjO689I0DZut+Kc2TdO48847ufPOO/9w25SUFObOnUu3bt0uJ0QhRKgxTbz5ucGOQohiMQ2jYIo/KahCQrkvpsaMGcO4ceO4/fbbgx0KUFDE+Tx5wQ4jZJhmwTSicoUldJmGDsUopo4ePUZ+fh5er4fk5BRM08DhcGAYBrm5GTz11JOcOXOGb775hh49epCXV/B7YJom4eHh9OvXj3/961+MGTOGH3/8keTkZJxOJ506dcI0TcaOHUuVKlXYtWsXx48fx+VyUa9ePf7zn/8we/ZsEhMTycvLIyoqin//+9/069ePVq1aoSgKx48f55lnnqFbt2706tWLnTt3EhMTg8VioXfv3oSFhTF16lSioqLIzs7mzJkz3HXXXfz888+kpqZSo0YNAIYOHcqxY8do2bIlNpuNO+64g8WLF7N9+3ZWrVrFzJkz2b17N02aNGHw4ME8+eST9OnTh5kzZ5KTk0P16tWpUaMG//vf/9i1axdvvPEGSUlJmKZJrVq1eO+992jVqtUV/XkKEQpuvvlmNm/efM7yW265JTgjRyxWyc2/Ibk59Om6hs3qKNa2OTk5pKWlYbFYuO6663A6nUVmF+zSpQtz584t0ulQHHfccQeffPIJjRs3vqT3FdfKlSvZunUrAwcOPGfdoEGDiI2N5dFHHyU5OZl169YF7UJnuR/mp+s67du3D3YYAdawMBTvuVNpVlSeM+mouvaHU4aK4DGK8QwMgGsLn9ERExNDtWrVsFgsqKpKlSqVOH36NKr66wyWOTk5OBwOnnzySWbMmIHL5WLUqFFMnDgRt9tNXl4eU6ZMoVu3bmRmZnLiRMFz2Xbu3ElOTg4TJ04kNjaWuLg4evfujWEY+Hw+6tWrx6JFi1i9ejUul4v777+fuXPnYrVamTNnDl999RW1atXCMAyGDBnCd999x8MPP8zq1aux2Wx8/fXXDBs2jNzcXKxWK0uWLKFOnTqsXbsWgFatWlG1alV27drFtm3bqF69euCY2rdvz5dffgnA8OHDAyf//Px8KlWqxIwZM9A0jUmTJpGTk8PgwYOx2+2sXbuW5cuXk5OTQ+/evS//ByZEGfDb88FvlxmGEYRoCmZrk2LqV5KbQ19xnk911tlRIw0bNgwUUrm5Z3C7C4qnRYsWXXIhdak07dJmyjw7auR8hdTvnR01Eizlvmfqueee4+OPP+bFF1+87BnJSoM1LAy/T4qpsw5uWQFt7iI8ppr0VocYi8Va0JOqq9jsxbv65fPlkJ9vwePxoGkaum6QlHSY8ePH43K5As/kCAsLQ1VVzpw5g2EYREZGArBixQo8Hg9ZWVn897//RVEUmjZtSlRUFAB//vOfWb16Ne3btyczM5Pvv/8eu91Obm4uXbp0YebMmSiKwqZNmwAYO3Ys06dPR1VVwsPDqVatGrNmzSIsLAyXy0V4eMHsVHv37iUzM5MuXbqQn5+PzWYLxFq5cmWOHTsGwPbt28nOzqZLly4AKIoSOPakpCT69+8PFFwxS09PB6Bbt24sW7aMr7/+mlOnTuH3+9m7dy/Jyclomsatt94KFCTGyMhI0tPTqVY4Ha8Q5U2PHj2wWCwoisIjjzxSZF1qaio33nhjUOKyhtmkmPoNyc2hz6sp2B3OP9wuPT0dRfGTkXESMDFNE6s1jJSUFCZOnIBhGDJq5DJHjZT7Yuqzzz4jPT2dKVOmUKlSpSLrfvzxx6sej2ma6JdYnZdnmt/L3rVLgh1G+WSx4HS6cYZH4HJH4HSH43RHFH6F446IIjwyBndkFK7wSJyucBxON3ankzCbHV3XMHQd0zRwuoo3Je4//vEgXbt2Zd26dVStWpU9e/YwZMgQOnbsyAMPPMDjjz8OFDz1vUqVKtSpU4fJkyeTnp5OREQEpmnSs2dPpkyZUuT+qjZt2vzhvmNiYmjcuDFLly4lJiaGmjVrkpOTw7333ovFYqFXr14ANGvWjEcffZTFixczefJk5syZg2maNG/enFmzZrFp0ybef/99xowZU/gxWgJXy03T5Nprry0SW/PmzTFNk379+tG/f3/WrVvH7NmzufXWW9F1nSpVqrB06VI2bdrEggULePDBBxkwYAA1atTgxhtvZMSIEcX7eQpRDnTt2hXTNElISOChhx4KLLdYLFStWpW2bdsGJS5D14vdC18RSG4Ofe3//jAtbrznD7c7fvw499xzD927d6dKlSpMmTIFwzD46KOPiIyMJCMjI7BtTk4OLpeLHj160KFDB/r27cuoUaNIT08vMmpk9erVHDt2jBMnTtCsWTN27txJbm4uEydOZNq0adSvX5/evXtz8803B0aNTJ8+nUGDBgVGjXTt2pVbb72VOXPmYLVaqVWrFtu3b2fIkCG0a9eOmJgYevXqFRg1smnTJp544onAqJEHH3yQtWvX0rdvX1q1akVubi5r1qwBYOTIkb9+Tu3b07lzZ5o2bcrw4cN54YUXgF9HjYwfP56+ffsWGTXicrlYu3YtHo+HBx54gN69e7N69eoLfsblvpj67QcaCjRV+eONhDjLYsHhdOF0ny2ICgqhs69dEZGER8XgjojCHR6Jw11YEDmc2Gx2DENHLyyIMAv+YLFYrYSF2X59PoWpYygKuucMyon95B3dSe7Pa8BXcHUq5s/34+j4CJaw4p0uvvnmG5xOJ6mpqVgsFkaNGkV0dHTgJAcFw3nS09NZtGgR+fn5eDweYmJiaN26NZMmTSI1NZW77rqLuLg4mjVrRk5ODgBbtmxBURTWrVvHokWLqF+/Pnv27An0XN1yyy2MHz+eBx54gC+//JIaNWqwYMECRo4cye7du6lcuTIRERE4HA4GDx7M3XffjWEYgWRwdqZBwzA4fPgwN9xwQ5Fja9u2LYsWLcLn8+FyucjLy6NWrVokJCSQm5vL4cMFUysvWrQo0GuVlZVFVFQUt912G1DwQMfKlSuTl5fHqlWrOHjwII0aNWL37t2YpknLli1L8j9FiDLhwQcfBKBly5bn/H4Fk+L3BjsEIc7LGhaG3eHC7nAW+XKFR2AYxh+OuqpXrx4AN9xwA/PmzcNqtaIoCiNHjuTkyZNER0fLqJHLHDVS7oupm2++OdghFKGeZ7poUf45nO4iPUMudzjO8ILX7vBfCyJXeCROdwQO13kKorP3ElgsWM8piAwMVcHw5KCkHiL76G5yd/8IvsufncpQfZiGXuxiyuv1Mnz4cBISEpg6dSp5eXlUqVKlyNj7sLAwdF0nJSUFq9VKr169mD9/PhaLhVq1agGQlpbGiRMnSEhICNyPFR8fz65du+jZsydut5ucnBzGjRvH7NmzgYJiaty4cXTo0IEOHTrQr18/Tpw4weuvv07dunW55557mDJlCjk5OTz77LMMHToUq9VKhw4dOHLkCA899BBer5fTp0+ft5gaNGgQ69evp02bNjgcDmrXrk3nzp0ZMmQIERERzJgxAygYv12pUiWys7NJTU2ld+/egfHi7dq1o3379kyaNIk33niDhx56KDBj4t/+9jcppkSFsHfvXqDgD7wjR44wZMgQLBYLb731VlCKLLmXWVwum92B7XcFT8HXr4WQzeHE7nQW/k0QgdPlxuF0YXe6sDtc2BwO7PaC0SFhNhthNjsAhlHwN4BpGEVyqWkYUMxbWBYuXBi44He2J+hsj9NZFosFi8XCjz/+yLfffoumaVSqVAnDMKhfvz6nT5/GNE1iY2N566236NChwx/utyKMGimXxdTHH38c6MYbN27cBbd7+eWXr1ZIAYrcL1Vm2R0uXOHnDpdzne0hijy3IHI4nNjsBTPaGbqGUdhDdLYgsoaFYbUWzpR3tiDy5qKkHeHM8Z/J370aPT/jonFdaaaqgFn8m8I3bNhAlSpVaNGiBXPmzGHHjh2B5WPGjMHtduNyuahSpQqdO3fmz3/+M23btqVXr1489NBD5OXlERkZSWRkZODq15gxYxg0aBBNmzbl3XffPWef8fHxgdf79+8PvF6xYsU52/52aNFZXbt2pWvXruc9nqlTpwZeu91uli9ffs42ffv2PWfZb2+anT9//nljXrx48Xn3KUR5N3bsWP73v/8BMGLECOLi4ggPD2fo0KHMnDnzqsfj88r9UhWBxWLBZi8oaH5b4DgcrnMLIaerYPi7y13wVTjqw+50Ybc7sNkdhNntBYVPmA3TMDAMHcMwAqNBCnYKFgpGhZwdGRJgmkDB3wemqmD4POjZJ1GyUvGnHsFzZCd65onzHktUqzupevfTFPdP+aNHj9K5c2eWL19OXl4eiYmJvPHGGyxbtoyUlBSgYNIHl8vFZ599xpYtWxg2bBg2m42IiAiSk5OpVKkSQ4YMYdmyZfTq1UtGjRQql8VUamrqeV+HAr9PhhIEk93hPGeoXOD7wh6i8MjowqIpovAeIhc2u6PgRFmkIAKrxYrVZitaEGkKhjcPNf04Ob8kkpfwI/qZ00E97sth6mqxZnTyegv+b/fo0QOHw0GNGjVwOBx8/fXXzJw5E4/Hw+nTp8nKysJut/PSSy/x0UcfMXPmTBwOB5988gmmadKtWzcWLFhA06ZN2bNnD0lJSRw6dOhKH6YQ5U5xpzveuXMnw4YNQ1EUNE3j0Ucf5eGHHz7vtsWdCnnFihV88MEHOJ1ORo8ezfXXX19kfWZmJtWqVcPv97Nt2zY+/PBDbDbbRe+ZSk5O5p///GdgqFBpupSZ0cSVZ7WG/dqT87sCx2Z34HD+pvhxunC5wnGcLXwKe3psdid2R2HRU9jTY7WGFdwfZ+iYpnlu0VM48VKRC50Apolp6pi6hqn40L15aFkpeDNP4Es+gOfIzlIZCXIpTE0rLMYu7mxu9ng8bNq0ibp165KYmEhmZiavvfZaYLuzudnn83HfffdhsVioWbMmqqri8XhIT08nPz8/MHGMzWbjmmuuAWTUiMUshXkvQ/mEXRJX8oR94tgB5k8aXurtCmh6UztiqtUgPDKG8IgoXBGRhd3o4didTmx25wXHFp/za2CamIaOqfrRvbmoWWmYSsXsVbRFVcVRvS5Wh/ui2y1fvpxevXqxfft2IiIi2Lt3L48++ihVqlRh9uzZHDlyhOHDhzN37ly2b9/OmDFjmDZtGvv37+eVV17BNE26du3KTz/9xK5du/j8888D3fvLli07b++OEOLydenShT59+tCxY0dOnz7NPffcw/Lly897f0Bxc/Ozzz7LP//5Tzp16nTe9XfddRdTp07lwIEDzJkzh2nTpuH1evnLX/7Cli1bzvuekuZmXdf/8MHjkpuvnKY3tSMiunLBkDZXOE53eJGhbfbCERy2s708NnuxZ1++4J+wZuGQOF3D1BQMvwc9Lxs9P6sUjyy4bFHVcFS/rtRyn8Z7twAAHkVJREFU8+jRo+nWrRvXXXcdDz30ECtWrMBut/P/27vz4KjKfG/g37N2J+l0NkIIZIN0OgFCCBGyGALIJgEDaMIgIi5cYRCvU2o53hEXYBwZp1BRa0DU8b36UsyA+o46OuAyo6MgIIIIepE1YIgQRFQggXSfXu4fGfolsoUmyXO6+/upskpCkv6GJM/v/M55lp07dyIpKQnXXHMNHnvsMSxbtgzFxcV4/fXXsWzZMjidzsB5T5GqXZ5MnTlH8ULmzp171oA9atSoy9oGeMWKFfjVr3513gH7tMbGRvz4Y+tfovT09KBf91zaMmC3utNB7coWl4DoGDsA4GTTCZxsdZo9z8oIVpzuQ1efHxfbHD0vLw9AyxlL5eXlyMnJgWEYmDBhApKTk1FbWwtZlmGxWPDyyy/jq6++CizwTE5OhsvlQnV1Nfbt24ft27fjkUcegSRJmD17Nnbt2hWY/kdELbVv586dmDt3LrZt24ZJkybh1VdfRUFBAebNm4fevXvj4YcfDlxADR8+HBMmTMC6detw5MgRTJ8+PXDxI0kSTpxoGS+bmpoQExMTWEexadMmzJ8/H0DLrppnXrzW1tZiwYIF+PHHH2EYBm6++WZUV1djwYIF2Lx5M/bt24c///nPWLZsGbZu3YrHH38cTU1NAFqasuuuuw6SJMHv92PRokV4++234Xa7sWnTJgwcOBAAsHz5crz00kuw2WwYOnRoq3+Djz76CM8++yzcbjc0TcP999+PwsJCfPrpp/jd736H/Px8bN++PXDdcSE8nLbjxMYnwRaXAEgtDZLb1Qy3q/k8781a3VbxFh+SfWi32qzrOtxuNw4ePIiVK1fi5MmTOHToEOLj41FaWorVq1cjPT0dxcXFaGxsRH5+Pnbt2oWePXt2/BdrchdtpkJ9wK6pqcErr7wSWOx6puXLl3f6gC1fpNmi4G368G3REcKSs7AUXXvcdNH3S09Px+bNm7FhwwZ8/PHHWLRoUatzZEpKSgJPlyoqKmC328+5wHPSpEnYtm0b3nqrZVteUYd4EplZWVkZXnrpJQAt6xEHDBiADRs2oKCgAOvXr8f06dPP+pjm5masXLkS9fX1qKqqwrXXXouYmBj8/ve/x+zZs/Hkk0/i2LFjWLhwIWJiYuB2uwNbI5eUlGDVqlVYvnw5gJa1Fffeey8WLlyI7OxsNDY2orq6GoWFhZgzZw6+/vprTJ8+HVdddRWOHz+OuXPn4vnnn0fXrl3x3XffoaamBqtWrcKJEycwbtw4FBYW4qabbsI777yDxx9/HCtWrMCOHTvw7LPP4o033kCXLl0wb968wNdSV1eHJUuW4MUXX4TNZsPu3bsxY8aMwJEne/bswW9/+9s2n1vFZqrjfPYB14Z2hLyiciT3yLro+51+cFBaWor169efd5frtLQ0lJWVYdOmTZAkCTabDYsXL8bQoUNhGAbuv/9+bN++PTAFcPbs2QBazniK9BudF22mQn3AHj58OGpqavDYY49hwoQJWLRoETZu3Ai/3y9kwOaTKQo1sqygLac2NjQ0IC4uDiNHjkR5eTkqKirQp08fPPPMM7j++uvRpUuXwNam5eXl+OMf/xhY4AkA27ZtC2wkUVdXF7g7/dZbb8HpdEb8YE10pszMTLhcLjQ0NGD9+vW4++67sXTpUlRVVcEwDGRkZJz1MWPHjgXQctFkt9vR0NCA7Oxs/OlPf8Kvf/1rjB07FrW1tbjlllvQp08fHD9+HFFRUSgpKQl8/MMPPwwA2L9/P/bu3Yt77rkn8PkNw0Btbe1Z6xm2bNmC+vp6zJgxI/A2SZKwd+9e7NixA5qm4aqrrsLhw4eRl5eHJUuWAAA2btyIYcOGBWavTJ48GatXrwYArFmzBnV1da1u2Hg8nsC2x5mZmZd0ALDcxt1KicxCkuU2Hajc0NCAL774AlFRURgxYgQqKirw6KOPBmpzSUkJli1bBpfLhd/85jeYMmUKFi5ceFZtnjRpEt5++23MnTsXAwcOxJtvvsna/G8XHT1CfcD2eDyYMGFC4Js9duxYDBs2DGPGjAksOO3MAVvVtDa/L5EZSG2cu75z50488cQTAFqeJs2cORNVVVVobm7GrbfeCkmSAhtNZGVlYeHChXjggQfQ3NwMwzBQVFQUaKacTideffVVzJs3D1arlQfbEp1DaWkpPvzwQxw9ehQlJSV45JFH8K9//StQS3/OYrEE/v/08QQ//PBDYO0xAPTq1QtOpxNbt2495/Sd009w/H4/EhIS2jTN3+/3Izc3N3CTFGipu3feeSccDgcMwwDQcrjo4sWLAwvCL6aiouKcY8PevXsD59S0lapdbLIUkbm03Jy/eDfF2tzx2nQrJpQH7MGDByMvLw9Hjx6FLMs4ePAg7HY7jh8/3irnhbTrgK237TWJzELT9DY9UR06dOhZU2SB8287PnjwYAwePPicn0tVVfzhD3+49LBEEaS0tBRPP/104PeoqKgIL7zwAu666642f464uDjouo7PPvsMgwYNwpEjR7Bjxw44HA5kZmaiubk58JT4nXfeCWyF3LNnT1itVrzxxhuYOHEigJaamJKSctad6gEDBuCbb77Bhg0bArv1PfTQQ1i0aBEyMjIwcuRIAC0H+e7YsSPwccXFxXjhhRdw9OhRJCUl4bXXXgv83cWebl8qVWUzRaFF1fQ23exkbe54bbrlXFpaihdeeCHwBOb0gF1WVtbmFzpzwAbQasDu1atXYMAGcN4B+7S9e/eisfHsMyHOHLBPczgcWLVqFQBA0zTMmDED06ZNa/U0qbi4GB999BGOHm05z+fnA/aaNWuwe/fuwNu2bdvW5q/75zhgU6iJsSdAUTkFhshsSktL8e233wZq8ek/X2h78Z9TFAWLFi3CggULMH78eNx666248847kZOTA13X8eSTT2L+/PmoqqrCxo0bAwdoq6qKpUuXYtWqVaiqqsK4ceMwf/78wBkuZ4qLi8OSJUuwePFijB8/HpWVlaivrz8rp6ZprbYoz8vLw6xZszBlyhRcd911gTNrALS6g376c65cufKS/v1a/Ttw1giFGFtcAlSVP7dm0Kat0Q8fPowhQ4bgqaeeQmVlJVatWoW7774ba9asQdeuXZGbm9tqA4ozt009889r167FE088Aa+35VCzadOmYfLkyQDO3oDiww8/xHPPPQen04n9+/djwYIFOHToEHw+H5KSkvDUU08hMTER06ZNC6yZAloanYULF+LYsWMwDAPp6elYunQpDh48iOrqasyZMwdNTU0oLi7G1KlTA1usLl++HC+//DJsNhuGDBmCv/zlL4G/W7t2LZ555plWjzwfffTRwGnMl7Jls8dwY+nDv7yEbxGRWFdPuR05BcWiYxBRGLn++utxxx13oKKiAsXFxdi4cSPWrl2L5557DsuWLev0PIarGc/Nu73TX5coWJVT/xPZ+VeIjkFop3OmzMrr9eKWW27Biy++CF03xxMhn8+LpQ/Pgs/btjnhRKJVz3oAqZkO0TGIKIxs3boVM2fOxLBhw7B69WpMnDgRH3zwAZYsWRL0VL3L4fN68fz82fAYZz9ZIzKjSXc8hJS0yz9blS5f21aWhyhFUVBfX2+qrZU9hgF7QpLoGERtFh0bJzoCEYWZTZs24W9/+xscDgeqq6uRlpaG1157DZs3bxaSx+NxIzaetZlCR7QtXnQE+rewbqYA4I477sC8efPw7bffBqYXnv5PBL/PB3tispDXJgpGVDS3PSWi9rV48WKkpKRgxowZmDt3LmbOnIlu3brh2WefFZLH7/Mjljc6KYRYo2NER6B/C/tV5Q8++CAAtNoN0O/3Q5Kkcx7k29FkRWEzRSFDkmXuQElE7Wb9+vUAWrZo3rBhA85caVBfX4+YGDEXiLKiIDaOzRSFBkVVuTGUiYT9d+Lee+9FZWVlq7f5/X689957QvJougXxSd2EvDbRpYq22eH1eCCbZM0hEYW2Bx54AADgcrkwZ86cwNslSUJycnLgBmhnUzWdNzopZETb4uA1DMiWix9bQh0v7JupJUuW4Lbbbjvr7UuXLsX06dMFJAISU3oIeV2iSxVjT4DP5wHAZoqILt8HH3wAALjvvvtMdeCnJElI6JoqOgZRm7TUZvPsBxDpwraZOj2VwOv1mmoqAQDE8e4XhYikbmmQpLBfWklEncxMjdRpfDJFoSKpWxpkhU+lzCJsm6nTUwncbrepphIAQIydO7BQaOiW4YBusYqOQUTU4Wz2RNERiNokNdMBjeuZTSNsmymzTiUAWho6a0wsmptOiI5CdEE8X4qIIoWq64i22XGy8bjoKEQX1C0jW3QEOkPYz98xWyMFAB6PgW7pPGiNzE2SZcQldhUdg4ioU3g9BlJ4kUomJysKYhO6iI5BZwj7ZsqMNN2CHr16i45BdEEJyanwej2iYxARdQpNt6J7Vq7oGEQXlNi1B7yGIToGnYHNlACyrCAjp6/oGEQXlNw9U3QEIqJOI8sy0rJ5o5PMLblHJiBJomPQGdhMCRLfpRsPXCNT65aRzQWuRBRRErumQpa5SxqZV2pmDjeGMhk2U4J4PG4k98gSHYPovFKzciDx7hcRRRCvx4OkbmmiYxCdFzefMB82U4IoqobumTmiYxCdk6ZbkdClm+gYRESdSpIVXqySaemWKG4MZUJspgRRVQ0Zzn6iYxCdU3pOX3g83HyCiCKLputIc3BNM5lThrMfvB5uPmE2bKYESknryWlUZEo5BYM4J5uIIlK6ozckmZdHZD45/YuhW6NEx6Cf4WghkN/vRyqn+pHJSJKEzNwCNvpEFJn8QPcsp+gURK1IsoyMnHzRMegc2EwJpOo6cgdcKToGUStd03oCftEpiIjEUHULnIVlomMQtZKa4YDf5xMdg86BzZRAsqzAUTCITwDIVLL7XgFV00XHICISQpZlOPKv4Fk+ZCrZ+QOh6qzNZsRmSjiJ0wnIVBz9BkFWeM4KEUUuSZK5qx+ZSnb+QJ6BZlJspgTTdAvyrigXHYMIABAbn4To2DjRMYiIhFI1Hbn9S0XHIAIAxCWlwBIVIzoGnQebKcFkWUZ234HcOYhMwTmA6wSIiGRFgaOgWHQMIgCAs7CUS0JMjFfwJtGjZ67oCEQoKBvJ9VJERAAUVWvZkIdIJElCQelwqJomOgmdB5spE1B1C3pfMVh0DIpwPXrmQuPiViIiAICqaigoGyE6BkW49OzeUFQ2UmbGZsoEZFlGdv5AHsRGQvUvHw1Ns4iOQURkCrKiwNFvEGszCdW/fDQ0i1V0DLoANlMm4ff70XfQUNExKEJF2ezIcOZz7R4R0Rn8fj9njpAwMbHxSMvuzfVSJscrJ5PQdAsGVIzhLwwJ0a/0KtERiIhMp6U2V/LMKRKiH6eZhgQ2Uyai6jqyeheKjkERRlYU9L9yFDeeICI6B91qRVZugegYFGFkRUW/suGszSGAzZSJ6JYolI66TnQMijCO/EGc3kdEdB66JQrFI68VHYMiTE5BMWcrhQheQZmMPaELumc5RcegCCHJMq4cMwm6hQusiYjOJyG5G1LSe4mOQRFClhWUXV3D2hwi2EyZjKpbUDKaT6eoc+QVlUOPihYdg4jI1BRVQ/HIiaJjUITofcVg7iIZQthMmYwkSejaI4sHBVKHU1T130+luOUqEdGFyLKM7llOdMtwiI5CYU5RNZSNqWFtDiFspkxI1XQMv+4W0TEozPUrHQFV5cJWIqK2UDUdw669WXQMCnP9rxwJRVVFx6BLwGbKhCRJgj2xK3IKikVHoTCl6VYMGjEBmoWH9BIRtYUkSbAndIGjH2szdQzdGoWBw8dD0/lUKpSwmTIp3WLFkPE3QlE10VEoDA0YMgYyd/AjIrokLbV5Kp8cUIcYOOwa7q4bgvgdMzFV01E0dKzoGBRmrNE2DKgYA03nUykiokulaTr6l48WHYPCTLTNjn5lI6DxXKmQw2bKxDTdgqIhlYixx4uOQmGkfNxknl1BRBQkzWLFoKuqYI22iY5CYaR87PV8KhWi+F0zOVlWMHjcDaJjUJhIy+4NR/4gnqhORHQZJFlG2dU1omNQmEjP6YtefYugcmlHSGIzZXKKqiIrr4CHBdJl03QLRl//S07vIyK6TKqmw1lYxq3S6bJpFitGT2ZtDmVspkKApltQOfU/+YtGl2XwuCnQeJo6EVG70HQdlTfewdpMl2VI1VT+DIU4NlMhwhodg2ETbxIdg0JU9ywnnIWlXNhKRNSOLNZoDJ0wTXQMClFp2b3h6Mep96GOzVSIUDUdvfpegV59ikRHoRCjajpGT5nFO19ERO1M1XRk5w9EVl5/0VEoxHDqffhgMxVCNN2CkZNuQ0wsd/ejtruychIs1hjRMYiIwpKmWzDqFzNgjYkVHYVCCKfehw82UyFG0TRcfcNsgFtbUxtk5OSj9xVDoOmcQkBE1FFUTcfoX8wUHYNCRIazH6fehxE2UyFGUVQkd09HIQ8MpIuIS+qKMVNns5EiIupgiqohNcuBPgMrREchk4vvkoIxN9zO6X1hhM1UCNJ0K0pGXYuuPbJERyGT0nQrJvzHr6FqHKyJiDqDpltRUTWVR5nQeemWKNbmMMRmKkRpugXjp9+L2Pgk0VHIbCQJlTfegWibHTJPUyci6jSabsH4W+9hbaazSJKEsdPuRFRMLGtzmOF3M4TpFismzvgv6FzASGcoHXUtUjMd3GqViEgATbdi4oz7oFmsoqOQiZSNmYSU9F6szWGIzVQIkxUFMfZ4VN16D2RFER2HTKBXnyL0Lx8NTWcRJyISQVYUxMQm4Jqb74LEJxAEwFFQjH6lw7lOKkzxtzzEqaqGLqnpGFlzm+goJFhSShpGTZ7JwZqISDBV09C1RxaGTbxZdBQSrEtqBkZUT2dtDmNspsKAplvQs88AFI+YIDoKCRKXlIJrZ/4GqqqJjkJERGipzc7+JejP3XcjVnyXFEy87T5O7QtzbKbChKZbMGBIJZyFZaKjUCezxSWietYc6NYoTikhIjIRTbegdHQ1HAXFoqNQJ4uNT0L1rAdaajPPBg1rvPIKI5puwVXX3sJBO4JEx8ah5vYHYI2K4e5AREQmpOk6RlRPZ22OIDH2eNTMfhCWqGjW5gigig5A7ev0oC3LMnZ9sUF0HOpAMfZ4TLr9IUTZ7NyAhIjIxDTdghHV0wEAe7ZtFJyGOpItLhE1sx+ENToWsszaHAkkv9/vFx2C2p/hduGjN5dhx+efiI5CHeD0YB0VY4fCRoqIKCQYhhv/ev0l7NyyXnQU6gCx8Umomf0QoqJtvMkZQdhMhTHD7cKG9/6KrZ+8JzoKtaPYhC6omfVAy8F/HKyJiEKK4XZh/TuvYdv6f4iOQu3InpiMmtsfhDU6hk+kIgybqTBnuF3Ytu4fWP/ua6KjUDtIzczBNTffBc1i4WBNRBSiDLcLn3+8Gp/9803RUagdpGb9uzbrVq6RikBspiKA4XZhz5ef4cO/vgSfzys6DgUpr6gcQydM41kVRERhIFCbX38ZPq9HdBwKUp9BQ1BxzVRoOrc/j1RspiKE4Xbhp+8b8NZLi3DyxDHRcegSSJKE8rGT0bd4GBspIqIwYrhdOHb0O7z130+i6cRPouPQJZAkCRXX3IDeAytYmyMcm6kI4vV6YLhc+Puyp3Fo/27RcagNNN2CyhvvRGqmg4M1EVEYCtTm//s0Dn3D2hwKNIsV46b9CinpvVibic1UJDLcbnz6/l/xxdp3RUehC7DFJWLibffBFpfA09OJiMKc4XZj3Tuv4Mv1/xQdhS7AnpCMiTPuQ7TNztpMANhMRSzD7cKBPdvx/srnYLhdouPQz2TnD8SI6ulQNZ079hERRQjD7cK+r7/AP197EV6PIToO/Ux23yswouY/oOo6N4GiADZTEcxjuHGy8Tje+u8n8eORQ6LjEACLNRrDa6YjIyefUweIiCKQ4Xaj8dhRrF6+GD8c/lZ0HAJgiYrB8OrpyMjpy9pMZ2EzFeF8Ph98Xg8+/3g1Nn34Fnxe7vYnSoYzH6Mn/xKqboGqaqLjEBGRID6fD16vB1+seRefffAma7NAmbkFGPWLGazNdF5spghAy9SCU00n8N6K59BQt0d0nIii6RYMGX8jHP0G8Y4XEREFGG4XTjUex7srluLwgVrRcSKKZrFi2MSb0avPANZmuiA2U9SK4XZh19ZP8cnfV8DtOiU6Ttjr3jMXV0+ZBYs1mgtZiYjonAy3Czs+/wSfrFoJj+EWHSfspWX3xujrZ0G3WFmb6aLYTNFZPIYbhuHGB//v/2Df9i2i44SluKQUDKmaiu49nbzjRUREF2W43TDcp/D+yudxYM920XHCUnyXFAy+5gb06JnL2kxtxmaKzstwu3D4QC3W/v0v+P7QAdFxwoI1JhZlo6uRO6AMsqxwpz4iIrokhtuF7+r3Ye3fV+DIwW9ExwkLUTY7ykZXw1lYytpMl4zNFF2Qz+eD1+PBwX07sW71Kzh6uF50pJCkajoGVIxB0dCxkGSZi1iJiChoLbXZwMH9u/DJqpXc9S9Imm5B0dBxKBw8mrWZgsZmitrE5/PC6/Hi29qvsW71K/jhu4OiI4UESZaRN6Ac5WN/AUXVOG2AiIjazekbnnW7v8K61a/g2NHDoiOFBFlW0GfQEJRdXQ1ZUVmb6bKwmaJL4vN64fN5UbfrK6x791X8dKRBdCRT0ixW5BcPQ9HQsVBUDbrFKjoSERGFqdO1ufZ/PseG9/6K4z8eER3JlHRLFPoWD0PR0ErWZmo3bKYoKKcH7oa6vdiy5h3U7foS/FEC7InJ6F8+Gn0GVgAA73YREVGn8Xo98Pt8aDhQi88/WoW63V8BrM2wJyZjQMXVyCsaDIC1mdoXmym6bO7mU/B4DGxd9z6+3rQGJ08cEx2pU0myjKzc/igaUonkHpmQJAkK510TEZFAbtcpGG43tn3yPr7+fG3E1WZZVpDVuxBFQ8agS2oGJEmGoqqiY1EYYjNF7cbjdgOShO++3Y8v1/8Dtdu3wOsxRMfqEJIso3uWEzkFJXD0GwRZlqFbo0THIiIiauV0bT58YC+2rfsH9u3YCp/XIzpWh5BkGamZOcgpGARn/1JIEmszdTw2U9Qh3M2nIMkyDu7bhT1ffYa6XV+h6fiPomNdFkVVke7oC2dhGbLy+sPv90PTdcgyt1AlIiLzczefgqwoOPTNHuzZthHf7PoSjcd+EB3rsiiqhoycfDgLS5CZ2x/w+6GyNlMnYjNFHc5wNUOSFZxsPIZ927dg39dbcHD/7pC4M2aLS0T3LCechaVIy+4Nr9cL3WKFJEmioxEREQXN7WqGLMs4eeIY9v7PZuzbvgUNdXvh83lFR7uoGHs80rL7IHdAGbpn5cLr9bA2kzBspqhT+bxeGIYLiqrh8IFa1O/dju8PHsD3DQdw4qejQhfKahYrUtJ6olt6NtIcfZDcIxOKosLn9XKaABERhS2fzwvD7YYsK/iuvhYH9+/CkYN1+P5gHY7/9L3Q2myxRqNrWhZS0nqhh6M3krtnQlU1+Lw+6FbuxkfisZkioU43V7KsQJJkHPvhML6r34fDB/bh+4YDOP7DETQ3NbbbnTJZURBjT0BsfBJscYmIjU9El9QMdMtwIDrWDo/hhqrqXKRKREQRy+fzwXC7IMsSJEnGT0cP43BdLQ7X1+JoQz2ajv+EU03H4fW0zwwTWVERY4+HLS4BtrhE2OISkZrhQEp6L1ijbS21WdehKKzNZD5spsiUDLcLPq8XsqJAUTV4PQbcrma4TjbiZNMJnDxxDI3HfkBzUyP8ft///0BJgqKq0DQLVN0C3WJFjD0esfFJiI6Ng6Zb4TXc8Pl8kCQJqqZDVjivmoiI6GIMdzN8Xl+gNvu8XribT+LUyUacPHEMTSd+womfjsLjcsEPf8uRKX5/YCc9VdOhajp0axRiE5Jgsyci2maHqlta1WZF1XhTk0IGmykKaT6vF360/hFuecrFedNERESdze/3t9zk9KNVfWZtpnDFZoqIiIiIiCgIsugAREREREREoYjNFBERERERURDYTBEREREREQWBzRQREREREVEQ2EwREREREREFgc0UERERERFRENhMERERERERBYHNFBERERERURDYTBEREREREQWBzRQREREREVEQ2EwREREREREFgc0UERERERFRENhMERERERERBYHNFBERERERURDYTBEREREREQWBzRQREREREVEQ2EwREREREREFgc0UERERERFRENhMERERERERBYHNFBERERERURDYTBEREREREQWBzRQREREREVEQ2EwREREREREFgc0UERERERFRENhMERERERERBYHNFBERERERURDYTBEREREREQXhfwEEaT7q6UmWYQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw.pie_chart([train_count,test_count],['train','test'],title=col,figsize=(16,4))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4kAAACJCAYAAACBxn3IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd3hU1fa/36mZmfRGEkKRooB0AZFrAX7KRa+0q6Je5SoWUBFFioLgRUEBC4KgWAAVREAv0kHRr4oIUqQK0ntJSO+Taaf8/oiJ5AKSwJma/T4PPmTOzF5r4od9ztp77bV0qqqqCAQCgUAgEAgEAoFAAOj97YBAIBAIBAKBQCAQCAIHESQKBAKBQCAQCAQCgaACESQKBAKBQCAQCAQCgaACESQKBAKBQCAQCAQCgaACESQKBAKBQCAQCAQCgaACESQKBAKBQCAQCAQCgaACESQKBAKBIODZsmULTZo0ISMjw9+uCAQCgUAQ8oggUSAQCASXxahRo2jSpAlNmjTh2muvpWvXrowdO5b8/Hx/u1Ylli9fTpMmTc57vfx7vfnmm5Vez8jIoEmTJmzZssVXLgoEAoFA4BdEkCgQCASCy6Z9+/Zs2LCBH3/8kTFjxvDdd98xcuTIC77X7Xb72LvLJywsjHnz5pGWluZvVwQCgUAg8DkiSBQIBALBZWMymUhMTCQ5OZnbbruNhx9+mPXr13P06FGaNGnCihUrGDBgAG3atGHatGkA7Nq1iwcffJBWrVrRoUMHhg8fTm5ubqVx582bxy233ELr1q157LHHOHv2bKXrS5Ys4dprr6302oV2+k6dOsWzzz7L9ddfT+vWrenZsydr165ly5YtvPDCCwAVu6GjRo2q+Fzbtm1p2rQpU6ZM+cvvP3XqVO644w5at25N586dGTt2LMXFxef5uXnzZnr27EmrVq3497//TWZmJlu3bqVPnz60adOG/v37k5mZWWnsX375hfvvv59WrVpx88038+KLLwbNLq1AIBAIghsRJAoEAoFAMywWC4qiIEkSAJMnT6Znz56sXLmS+++/n+zsbB599FGSk5NZtGgRH3zwAYcOHeLZZ5+tGOP7779n0qRJPPLIIyxbtozbb7/9vNTPqpCdnc39999PUVER77//PitXrmTIkCHo9Xratm3L2LFjAdiwYQMbNmxgzJgxFZ/V6XSMHDmS1atXs2fPnovaCAsL49VXX2X16tW8/vrr/Prrr7z22muV3qMoCjNmzOC1115j4cKFZGZmMnToUKZPn84rr7zCwoULycjIYNKkSRWf2bRpE4MGDeLOO+9kxYoVzJgxgzNnzvDMM8+gqmq1fxcCgUAgEFQHo78dEAgEAkFocOTIEebPn0/r1q0JDw8H4L777qNXr14V73nnnXeIiIhg0qRJmM1mAN566y169+7N1q1b6dChAx9//DF33HEHjzzyCAANGjTg2LFjfPLJJ9XyZ/78+eh0Ot5//31sNhsA9erVq7geEREBQGJi4gU/3759e2699VbefPNN5s2bd8H3DBo0qOLvderUYfjw4QwdOpRJkyah15etw6qqyujRo2nWrBkA9957L2+99RaLFy+mRYsWANx///188MEHFWO9//77/Pvf/+bf//53xWtvvPEGXbt25cCBAxVjCQQCgUDgDUSQKBAIBILL5tdff6Vt27bIsozb7aZTp06MHz++4nqrVq0qvf/IkSO0adOmIkAEaNq0KZGRkRw+fJgOHTpw9OhRevToUelz7dq1q3aQuHfvXtq2bVsRIF4OI0aMoEePHvzwww80b978vOvfffcdc+fO5eTJk9jtdhRFwePxkJ2dTVJSElC2K3nNNddUfCYhIQGgUtGchIQECgoKkGUZg8HAnj172LVrF/Pnzz/P5okTJ0SQKBAIBAKvIoJEgUAgEFw2rVq14o033sBgMFCrVq2K4O/MmTMAWK1Wr9gt36U7F4/Ho7mdBg0acN999zF58mRmzZpV6dpvv/3GkCFDGDhwIC+88AJRUVH89ttvjBw5spIver0eg8FQ8bNOpwPKznP+72vlqaSKojBgwAB69+59nk/lQaZAIBAIBN5CnEkUCAQCwWVjsVioX78+derUqbQ7eDEaN27Mrl27KlU6PXDgAMXFxRW7bY0aNWLHjh2VPrd9+/ZKP8fFxSHLMjk5ORWv7du3r9J7mjdvzs6dOyktLb2gL+VBmizLf+nz4MGDycrK4r///e95PsXGxjJ06FBat25NgwYNNOvj2KJFC44cOUL9+vXP+1OeyisQCAQCgbcQQaJAIBAIfEa/fv0oKSnhxRdf5NChQ2zbto3nn3+e9u3b0759ewAeffRRvvnmG+bOncuJEydYvHgxK1asqDROq1atCA8P5+233+bE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw.pie_chart([train_count,test_count],['train','test'],title=col,transpose=True,figsize=(16,2))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_in_test ratio \u001b[31m1.000\u001b[0m test_in_train ratio \u001b[31m1.000\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAEECAYAAABgCCF6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3dd3gVZf428HtmTksvJNQQSuglIXQUVERXUZoKwqrsUsRVVuFVsbssuq4osiAqsD9RF3StWEDWRV3BQg+9BwgllZCE9HLazLx/hEQiAZKTkzyn3J/r4jKeJGfueBHnPs/5zjOSrus6iIiIiIhICFl0ACIiIiIif8ZCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EVET2LFjB7p27Yrs7GzRUYiIyMOwkBOR33r66afRtWtXdO3aFT169MDw4cMxd+5cFBQUiI5WJ2vXrkXXrl0vebzq51qwYEGNx7Ozs9G1a1fs2LGjqSISEVEdsJATkV/r378/Nm/ejI0bN+K5557D999/j6eeeqrWr7Xb7U2cznVmsxkffPABMjMzRUchIqKrYCEnIr9mNBoRHR2Nli1b4qabbsIf//hHbNq0CSdPnkTXrl3x9ddfY8aMGejTpw+WLFkCANi3bx/uvfdexMfHY8CAAXj88cdx/vz5Gs/7wQcf4LrrrkNCQgKmT5+Os2fP1vj8l19+iR49etR4rLYV7LS0NMyaNQsDBw5EQkICRo8ejR9//BE7duzAk08+CQDVq/xPP/109fclJiaiW7duWLRo0RV//sWLF2PkyJFISEjA9ddfj7lz56KkpOSSnNu3b8fo0aMRHx+PyZMn49y5c9i5cyfGjRuHPn36YMqUKTh37lyN596yZQsmTZqE+Ph4DBs2DM8884zXvPtARNSUWMiJiC5isVigaRqcTicAYOHChRg9ejTWrVuHSZMmITc3F9OmTUPLli2xevVqLF++HMePH8esWbOqn+OHH37A/PnzMXXqVKxZswa33nrrJeMjdZGbm4tJkyahuLgYy5Ytw7p16zB79mzIsozExETMnTsXALB582Zs3rwZzz33XPX3SpKEp556Ct988w0OHjx42WOYzWb87W9/wzfffINXXnkFSUlJeOmll2p8jaZpWLp0KV566SV8/PHHOHfuHB599FG88cYbmDdvHj7++GNkZ2dj/vz51d+zbds2zJw5E7fffju+/vprLF26FBkZGXjkkUeg63q9/1sQEfkyg+gARESeIiUlBR9++CESEhIQFBQEAJg4cSLGjBlT/TWvv/46goODMX/+fJhMJgDAa6+9hrFjx2Lnzp0YMGAA3n33XYwcORJTp04FAHTo0AGnTp3Ce++9V688H374ISRJwrJlyxAYGAgAiI2Nrf58cHAwACA6OrrW7+/fvz9GjBiBBQsW4IMPPqj1a2bOnFn9cUxMDB5//HE8+uijmD9/PmS5cs1G13U8++yz6N69OwDg7rvvxmuvvYYvvvgCvXr1AgBMmjQJy5cvr36uZcuWYfLkyZg8eXL1Y6+++iqGDx+O5OTk6uciIiIWciLyc0lJSUhMTISqqrDb7RgyZAhefPHF6s/Hx8fX+PqUlBT06dOnuowDQLdu3RASEoITJ05gwIABOHnyJEaNGlXj+/r161fvQn748GEkJiZWl3FXzJkzB6NGjcKGDRvQs2fPSz7//fffY9WqVUhNTUVZWRk0TYPD4UBubi5atGgBoHK1vUuXLtXfExUVBQA1LiiNiopCYWEhVFWFoig4ePAg9u3bhw8//PCSY545c4aFnIjoIizkROTX4uPj8eqrr0JRFDRv3ry6aGdkZAAAAgICGuW4VavPF3M4HG4/TocOHTBx4kQsXLgQK1asqPG5/fv3Y/bs2XjggQfw5JNPIjQ0FPv378dTTz1VI4ssy1AUpfrfJUkCUDl//9vHqsZRNE3DjBkzMHbs2EsyVRV6IiKqxBlyIvJrFosF7dq1Q0xMTI1V78vp1KkT9u3bV2PHleTkZJSUlFSvIsfFxWHPnj01vm/37t01/j0yMhKqqiIvL6/6sSNHjtT4mp49e2Lv3r0oLy+vNUtVIVZV9YqZH374YeTk5OCzzz67JFNERAQeffRRJCQkoEOHDm7bJ71Xr15ISUlBu3btLvlTNQ5ERESVWMiJiOrhvvvuQ2lpKZ555hkcP34cu3btwhNPPIH+/fujf//+AIBp06Zh/fr1WLVqFc6cOYMvvvgCX3/9dY3niY+PR1BQEP7xj3/gzJkz+OWXX7B06dIaX3PPPfdA0zTMnDkTu3fvRnp6On788Uf8/PPPACpnvgFg48aNyM/PR1lZWa2ZIyMj8cADD2DVqlU1Hu/QoQPy8/OxevVqpKenY82aNfjoo4/c8t9p1qxZ2LBhA+bPn4+jR48iLS0Nv/zyC5599llYrVa3HIOIyFewkBMR1UNUVBTee+89ZGdnY/z48XjwwQfRpUsXvPHGG9Vfc/PNN+Opp57CO++8gzFjxmDdunWYM2dOjecJDw/HokWLsG/fPowZMwbLli3DE088UeNrmjdvjo8++ghBQUF44IEHMGrUKCxevLj68/Hx8fjDH/6AuXPnYsiQIfjb3/522dxTpkxBREREjceGDx+OBx98EIsXL8bo0aPxzTffVG+l2FCDBw/GqlWrcOzYMdxzzz0YM2YM5s+fj6CgIBgMnJYkIrqYpHP/KSIiIiIiYbhCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EREREZFALORERERERAKxkBMRERERCcRCTkREREQkEAs5EREREZFABtEBiGqjaRry8vKQn18AVVVFx/FYAQEWtG3bFkajUXQUIiLyMQ6HA+np6aiosIqO4lVcOTdLuq7rjZiJyCWpqalwOjWEhkZAUQyQJEl0JI+j6zpKSoqgqjZ07NhRdBwiIvIxp06dgsFgRnBwGM/DdeTquZkjK+SRysrKEBERBYPByP8JXIYkSQgJCePKBRERNYqKCivLeD25em5mISePpOuAJPGv59Xwf5JERNSYeJ6pP1f+m7HxEBEREREJxIs6yWuEBBhgsJjd/rxOqw0lFc6rft3kyZOwYsVKWCyWOj/38ePHkJaWiptu+p3L+dzxHERERA0VGGyE2Why+/PaHHaUlzqu+nUizsNvv70cHTp0xM033+LS99cVCzl5DYPFjC1j73L781679gugDoX8gw8+qfdzHz9+DFu2bGpwIW/ocxARETWU2WjC3Z8+5Pbn/WzicpTj6oW8Mc7DTqcTBsPl6/ADD7j/560NCzlRHQ0e3BcbN25GYGAgxo27HbfdNgpJSduRl5eHe++djAkTJtX4+qKiQqxY8U+UlZVi8uRJ6NOnLx5//EkcOnQQy5a9ibKyUgCVv+zXXjsM+fn5mDv3WRQU5AMA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "overlap_piechart(train_count,test_count,col)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**AvSigVersion**" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==============Train==============\n", + "# of unique values: 8268, top5 {'1.275.1244.0': 78902, '1.251.42.0': 76837, '1.275.1209.0': 66393, '1.273.810.0': 65895, '1.273.1749.0': 65381}, top5 percentage: \u001b[31m0.0396\u001b[0m\n", + "==============Test==============\n", + "# of unique values: 9176, top5 {'1.277.515.0': 80393, '1.279.102.0': 73108, '1.277.1044.0': 54981, '1.277.1102.0': 52147, '1.237.0.0': 47158}, top5 percentage: \u001b[31m0.0392\u001b[0m\n", + "CPU times: user 580 ms, sys: 224 ms, total: 804 ms\n", + "Wall time: 805 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "col = 'AvSigVersion'\n", + "k = 5\n", + "print(\"==============Train==============\")\n", + "train_count,train_count_topk = get_topk_token_count(train[col].data,k)\n", + "print(\"==============Test==============\")\n", + "test_count,test_count_topk = get_topk_token_count(test[col].data,k)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Observations:**\n", + "1. there are 8k~9k difference AvSigVersions in train and test\n", + "2. the top 5 AvSigVersions in terms of counts account for 3% of the total population. \n", + "\n", + "We look at the top-5 AvSigVersions with the pie charts below" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABAsAAAB9CAYAAADEDup4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd3wU1RaAvy3pQAgQOogCgoLwBKnSjBjeAyMEBBGlqBQREBFBxUITEEuQ3uKTIipNQEBEQAgiRUB5oBRDCJAQSkgv22feHzErSzbJbnY22ST3+/34g52ZO2f35N5z5sy556hkWZYRCAQCgUAgEAgEAoFAIPgbdUkLIBAIBAKBQCAQCAQCgcCzEMECgUAgEAgEAoFAIBAIBDaIYIFAIBAIBAKBQCAQCAQCG0SwQCAQCAQCgUAgEAgEAoENIlggEAgEAoFAIBAIBAKBwAYRLBAIBAKBQCAQCAQCgUBggwgWCAQCgUCgIPHx8TRp0oQTJ06UtChO8cYbb/DSSy+VtBgCgUAgEAg8BJUsy3JJCyEQCAQCQXFw8+ZNHn/8cSpXrsyBAwfQarVOj7Fv3z4iIyOJiYnBaDQSHBxMixYtmD59OhUqVMBisZCcnEzlypXx8vIqdDyj0UjXrl0JDw9n8uTJeY6fPn2a/v3788UXX9CxY0en5XWUjIwMJEkiMDDQbfeAnGDK448/zrp163jkkUfceq9cunTpws2bN20+a9u2LWvXri2W+wsEAoFAUBpx3ksSCAQCgaCUsnHjRh577DFiYmLYv38/TzzxhFPXHzlyhHHjxvHKK68wc+ZMvL29uXLlCnv37sVoNAKg0WgIDg52eExvb2/69OnD1q1bmTBhQp4Aw4YNG6hfvz4dOnRwStY7MZlMhQYuKlasWOTxSwMvv/wyzz//vPX/jgRyBAKBQCAoz4htCAKBQCAoF0iSxObNmwkPD6dPnz6sX7/e5vi8efPo0aNHnuumTp3Ks88+C8BPP/1E06ZNGTt2LI0aNaJ+/fp07tyZ6dOnU6VKFcD+NoSzZ88yYMAAmjdvTmhoKLt27SIkJIQlS5YA8Mwzz5CcnMy+ffts7p2VlcXOnTvp378/KpUKgMTERCZPnkz79u15+OGHefbZZ23udfjwYZo0aUJUVBQDBw7koYceYsuWLaSnp/Pmm2/SsWNHmjdvTrdu3Zg7d671uru3IciyzIoVKwgJCaF58+Z07949z5v4Ll26sGjRImbOnEmbNm3o2LEjc+fOxWKx2NWB2Wzm8ccfB+C5556jSZMmNgGbzZs38+9//5vmzZvTtWtX5s+fbzPWs88+y3vvvcfcuXNp164drVu35v3337cGagoiICCA4OBg67/KlSsXeo1AIBAIBOUZESwQCAQCQbng4MGDGI1GunTpQu/evTl69Cjx8fHW43369OHy5cv873//s35mNBrZtWsXffr0ASA4OJirV69y+vRph++r0+kYOXIkVapUYdOmTXz00UesXr2apKQk6zkNGjSgbdu2bNy40ebanTt3YjKZ6Nevn3Ws559/HoPBQGRkJFu3buXRRx/lhRdeIDY21ubauXPnMmrUKL7//nu6du1KREQEFy5cYOnSpezevZtPP/2U++67L1+516xZw+LFixk9ejQ7duzghRdeYO7cuWzZssXmvNWrV1OrVi02btzIO++8w+rVq/nuu+/sjqnVaq3fccmSJRw6dMgatNm7dy/vvvsu/fr1Y/v27UyaNIm1a9eydOnSPL9JVlYWX331FR999BE//vgj8+bNK0gFVjnbtWtHr169+OCDD0hNTS30GoFAIBAIyjNiG4JAIBAIygXr168nLCwMrVZLjRo1aNeuHRs3bmTChAkA3HvvvbRs2ZKtW7fSsmVLICeTQK/X85///AeAwYMH89tvv9G/f3+Cg4N56KGHaN++PU899RRBQUF277t9+3aysrL4+OOPran+s2bNomfPnjbnDRw4kNdff534+Hjq1q0L5GybCAkJoWrVqgDs2LEDo9FIREQEGo0GgLFjx3LkyBE2bNjAm2++aR3vlVde4bHHHrP+PyEhgWbNmlm/W506dWjdunW+v9fKlSsZOnQo/fv3B3ICGpcuXWLZsmWEh4dbz2vXrh3Dhw+3nrNp0yYOHz5sc86d5GZgBAYG2mzXWLlyJT179mTEiBFAjj5u3brFggULePnll631JapUqcK0adNQq9U0bNiQGzduMHfuXF577TV8fHzs3nPIkCE0a9aMKlWqEBMTw/z58/nll1/Ytm0b3t7e+f4GAoFAIBCUZ0RmgUAgEAjKPDdv3iQqKsrmATY8PJzNmzdjNputn/Xp04fvv/8ek8kEwNatWwkJCaFSpUoA+Pn5sWzZMvbt28frr79OjRo1WLFiBf/+97+JiYmxe++LFy9y33332dQEaNiwoXXMXLp3705QUBCbNm0C4Pz585w+fZqBAwdazzlz5gw3b97kkUce4eGHH7b+O3XqFJcvX7YZr0WLFjb/f+6559i5cydhYWHMmjWLgwcPkl+N49TUVBITE/MUIGzTpg1Xr161Sftv2rSpzTnVq1e3yZpwlIsXL9q9n06ns8kAadmyJWr1P+5L69atMRgMxMXF5Tv28OHD6dChA02aNKFnz54sX76cS5cusXfvXqflFAgEAoGgvCAyCwQCgUBQ5tm4cSMWiyXP226LxWJT6LBXr17Mnj2bqKgoWrVqxaFDh1i8eHGe8erWrUvdunXp27cvEyZMoEePHkRGRjJnzhy798+tN1AQuYUON2/ezLhx49i4cWOewoaSJNG4cWMWLFiQ53o/P78C/9+1a1f279/PoUOH+PXXX3njjTd44IEH+O9//2vNUigKd7+ZV6lUSJJU5PGKgwYNGhAUFMS1a9dKWhSBQCAQCDwWkVkgEAgEgjJNbmHDl19+ma1bt9r8e/LJJ20KHQYGBhISEsK2bdvYsWMHgYGBdOrUqcDxc9Pp83ub3qhRI2JiYsjIyLB+dunSJdLT0/Oc+8wzz5CYmMju3bvZvn27TWFDgObNm3P16lUqVqzIPffcY/OvevXqhf4WQUFBhIWFMXPmTJYsWcLRo0fzZCQAVK5cmeDgYJvCiQDHjx+nfv36LqXu53YhuDug0KhRI7v38/Pzs27LgJxWknde+9tvv+Hj40O9evUcliEhIYHU1FRq1apVlK8gEAgEAkG5QGQWCAQCgaBMc/DgQa5fv84zzzxD7dq1bY6Fh4czYsQImzoBvXv3Zvz48cTExBAWFmbz1n3hwoVkZ2fTtWtX6tSpQ3Z2Nlu3buWvv/5iyJAhdu8fFhbGggULmDx5MuPHj8dgMPDhhx/i6+ubJ+Mgt9DhtGnTyM7OthY2zKV3796sWbOGUaNGMWHCBOrXr09SUhJHjhyhcePG1k4D9vj0009p2bIlDRs2BHLqHwQEBFCzZk27548cOZJPP/2UevXq0aZNGw4fPsz69euZOXNmvvdwhGrVquHn58cvv/zCfffdh5eXF4GBgYwcOZKxY8fStGlTnnjiCf7880+WLFnC8OHDrfUKAJKSkpg5cybPP/88V65cYeHChQwaNCjfegUnTpzg9OnTtGvXjsDAQGJiYvjkk0+oW7dugb+XQCAQCATlHREsEAgEAkGZZv369bRs2TJPoACgffv2BAYG2hQ67NKlCxUrViQmJoaIiAib89u0acM333zDlClTSExMxN/fn3vvvZePP/6Yp556yu79/fz8WLFiBdOmTePpp5+mdu3avP7660yfPt3uA+7AgQOtWxtyCxveOdaXX37JZ599xuTJk0lNTaVKlSq0bNmSbt26Ffg7eHt7M2/ePK5du4ZGo+HBBx8kMjKSgIAAu+cPHjwYvV7P0qVLmT59OjVr1mTy5Mn5Fi50FI1Gw3vvvcfixYtZuXIlderUYc+ePTz++OPMnDmTyMhI5s+fT5UqVRg8eDCjR4+2ub5Xr154e3vz7LPPYjab6dWrl1V39vDx8WH37t0sXboUnU5HrVq16NSpE2PGjMmzVUMgEAgEAsE/qOT8qhsJBAKBQCBwC9euXSMkJISlS5cSEhJS0uKUGp599lkaN27MjBkzSloUgUAgEAjKPCKzQCAQCAQCN7Nt2zZq1KhB3bp1SUhI4OOPP6ZOnTqF1kMQCAQCgUAgKClEsEAgEAgEAjeTmprKwoULuXnzJoGBgbRq1Yr58+e7VChQIBAIBAKBwJ2IbQgCgUAgEAgEAoFAIBAIbBCtEwUCgUAgEAgEAoFAIBDYIIIFAoFAIBAIBAKBQCAQCGwQwQKBQCAQCAQCgUAgEAgENohggUAgEAgEAoFAIBAIBAIbRLBAIBAIBAKBQCAQCAQCgQ0iWCAQCAQCgUAgEAgEAoHABhEsEAgEAoFAIBAIBAKBQGCDCBYIBAKBQCAQCAQCgUAgsEEECwQCgUAgEAgEAoFAIBDYIIIFAoFAIBAIBAKBQCAQCGwQwQKBQCAQCAQCgUAgEAgENohggUAgEAgEAoFAIBAIBAIbRLBAIBAIBAKBQCAQCAQCgQ0iWCAQCAQCgUAgEAgEAoHABhEsEAgEAoFAIBAIBAKBQGCDCBYIBAKBQCAQCAQCgUAgsEFb0gI4g8lkIi4uDp1OX9KiFAt+fr7Uq1cPLy+vkhbFiiRJ3L59m+TkFCwWS0mLUyJ4ol6g/M2PuxF68Uw8VS93U97WttKiFyhfc0ij0VClShDVqlVDrfac9znlSQf28FS92KO86coT17LyZk/s4Yl6sYeYL4WjkmVZdqNMinLp0iW0Wh8qVAhEpVKVtDhuRZZlMjLSsFgM3HfffSUtjpUrV65gNktUqhSERqMt83q4G0/VC5Sv+XE3Qi+eiSfr5W7K09pWmvQC5WcOybKMxWImPT0FrVbNPffcU9IiWSkvOrCHJ+vFHuVJV566lpUne2IPT9WLPcR8KZxSlVmg0+mpVat6mVcmgEqlomLFQK5fv1rSotiQlZVFzZr1UKk8O7LuLjxVL1C+5sfdOKqXQ4cOsWXLFqKjo8nKyiIgIIDGjRvTt29fHn30UbfIJvRSuF5SUlL48ccf8+glNDSUoKCgYpG1PK1tnjxf7FFe5pBKpUKr9SIoqBo3bsTle15MTAzbtm3Lo5fevXvTsGFDt8hWXnRgD0f14imUJ115qo0pT/bEHp7sK9+NmC+FU+r+il1VpizLyJIEsoxsMSObjEhGA5JRn/PPZEA2G5ElyebcksAT/3BlGbcsfpIsI0kysgxmi4TBZEFvtKAzmNEZzBiMFowmCYsl55zcc0sCT9RLLkrLdudvbbbIGE0WDHfoRW+0YDRZMFsk67mSh+pl1apVvPXWW9SvX58xY8Ywc+ZMxo4dyz333MObb77J6tWrS0w2Z7lTLxZJxmiS8ujFYLJgMt+pF89cx44cOUJoaCjfffcdsixTvXp1ALZv306PHj04evRocYipzNomY2M7ZLMJyWT8x74YDcgmI7LZlGODJAlZlpT5Ak7iyfPFHi7NoTv1Ist36MVg1Yv0t16s50gloxfI+TvMb7ru2LGDZ555hhs3btCmTRvCwsJo27YtN2/eZODAgXz//fdulEt52ydJ/9h+k9nW9uvvsP25a1jJ2v789eJpCF/5H0rCxghf2bN95btRdr5YkM1GJJOd+WIx32H7PXO+2KNUZRYUBVmSUKlUyBYzklGPbPpbaSYjUIii1BrUXj6ovHxQe/uh8vKBv3/k0jQJPBFJklGpVJgtEnqjGZ3B8vciZyl0AqnVKny8NPh4a/Dz0eLjrUWjViHLMmq10Isr5OrFIv3z8JkbEJAKiQKoVCp8vDX4eOXoxddbg0aj9hi9REZGsnr16jxv3kJDQ+nVqxdDhw5l6NChJSRdwUiyjAoVkiRjMOXqJccxKEwvqFT4eKlz5ou3Fh8fLV4epJeZM2cya9YsQkND8xzbs2cP06dPZ9euXSUgWeFY1ypZznEOjDpkowHJZADJXMjVKlRar7/tiy9qb19UGi9kWc5xMktYNaV5viDLVusum4zIRt3fdt+AbDEVerlK849eVN6+qLTegIyKktdLREQEy5cvp3Xr1nmOnTx5kkmTJtGzZ88SkKxwZJm//75VGE2Wf2y/yYLJVPi+bq0mZx3z9dbg66PFx0sDKlChQrhkrqG0r6xSqZDxDF+5NNsYl33lO3wy4SsrhyxLqFAhSxbk3KDA3zaGwl4AqNSovLxRa31Qefuh9vZBpdbkrI0eWg/F6WBBWlqaNYUnMDDQHTI5TKUALRpvH8XHNeuzuX3pIkgWJEM2GLKxkJJzUK1F41cBTUAgkf9dybChw/HyLlrxjpUrlzFs2EseX/yjMPz8ffD1UT7ulKUzcjY6Mc/nkiRbo6ipGQY2b1hFeL/nqRzoT+UKPmi1aoech3PnzvL11+uYMWOW4rIDxMbGcvHiRet8adSoEffee69b7mWP4taLLMvo/34blJaZo5c+fZ8nsJI/lSt44+OdI0tJ6UWn01GjRg27x4KDg9HpdIreLz+KWy/IMgZjjoORjpHNG1bRu+/zVKroR2AFb/x9vJCRUReiGHfpJSEhgW7dutk91rVrV9544w1F7+cM7rYxstmYE2TQZfx9RIXK2xeNfyXUvgFERi5j2LDhRbYRrtgYT5kv9nC7XiwmZIsJSZ9pPaby8vlbLxWIjFzOsBdKRi8pKSk0a9bM7rEHH3yQlJSUIslUFIp7LTNbJMw6iSxdTsBn84ZVPN1/MFUqB1Cpgg8qcOghyN22Pzs7m8uXL1ttf4MGDfD393fLvRyhvPvKnmJjSsRX1pvR6T3bV/ZE3G5jjHosRj1kp+UcUKlR+/qj8Q9E5eWTY2Nc+JtX+vnSob9ak8nEwoUL+fbbb0lKSrJGhqtWrUq/fv0YO3ZsiTzwarx9uDSrn+Lj3vfO5vwPSmYsWalYslL5/POVPNvvabRB1XJeNjgZQf388xU899yQUh8s8PXREjZxm+Ljbv+0t0Pnbdm4hl5hz5CeaSQ904iXl4agij74eqvx0mrzVcsDDzzolsUvISGBCRMmcP78eerXr0+FChXIzMwkLi6Opk2bEhERQe3atRW/7914il4ys41kZhvRatQEVvQhwEeNVqvN16lzl15CQ0N5+eWXGTNmDE2aNLHq5cKFCyxZsoQePXoofk97eIpesnVasnUm1GoVgRV8qOCnwasE9NKiRQvmzZvHuHHjbBzq7OxsFi1aRIsWLRS/p6MUv42RkY06zEYdqNR8/vlKBg18Dq1GU6Q3Dq7YGE+ZL/YoCdsvmwyY0xIh7Taf/3clgwY+i1ZbtIJYruilY8eOTJkyhddee4369etbP7969Srz58+nY8eOTo9ZVDxlLUtK05CUpsfPV0uVSr5o1DJeWq9it/3p6elMmzaNH3/8ES8vLypWrEhmZiYmk4nQ0FCmTp1KpUqVFL9vYZR3X9lTbIynzBdP8ZU9mWKfM7KEpMtE0mWCRsvnn69g0KDBaLVFK46p9POlQ8GCadOmcfXqVT7++GOaNm1qXQDPnTvHsmXLmDZtGrNmla8/pHnLIwEYOXoEarWaubPnsuqrr4iJuYjBYKB16zaMH/86Go2GyMjl7NmzG29vb1QqFYsXr2DZskUAjBgxDLVazZIlK6lYsWJJfqVSyarI+QBMf3ccKpWK4Oo1qVAxkOsJcRj02SxbsZZ5n8zg6tUrmEwm6tatxzvv5BjskydPsHDhPFatWkdCQgIvvPA8ffr05ciRX9Dr9UyZ8j7/+tfDTsv09ttv07p1a1atWoWfn5/18+zsbBYvXsxbb73FmjVrFPsNPJGC9KLXZ7Nk2RoWRMwsVr1Mnz6dhQsXMnnyZBITE60LcHBwML1792bcuHGK/gaeSGF6WbhkNYvmfUBcXPHpZc6cOUycOJH27dtTr149q32Ji4vjgQceICIiQumfoVQwb9kKAEYMH4Jao+Xjj+bx39X/LTYbI+aLfeYtXwnk/q4aPvoogi/WrCo2vcyePZvp06fTs2dPvLy8CAgIICsrC7PZTGhoKLNnz3bL9/Y0Crb9Ov77xTrmzplarDZmypQp+Pj4sGvXLurVq2f9PC4ujgULFjBlyhQWLVqk2G9QGvAEX1nYGM/0lQX2mbdkGQAjXnwux/Z/soD/frGyRJ8vHQoW7N69m/3799vcrHLlynTo0IFmzZoREhJS7oIFE0YNZ+sPu1k85wP8/fz4aPFS/tWiJVPeegcJFdOmvcv27dt47LHH+eabdezY8SO+vr5kZWXh4+PDpElvs3nzRlauXFWi6WmlnWHDx7N39zamfrAQXz8/li+ay9XLF3ln+jx8ff1IStPT/7nR3H9vbby0alasWMLatasYM+bVPGOlpaXy0EMtGD16LD/88D2LFy9g5covnJbp9OnTrFy5Em9vb5vP/f39GT9+PG3bti3y9y0tFKaX1AwD/Qa9TOMGtfH11hSLXry9vZk4cSITJ04kPT2d7Oxs/P39S+RNT0lRmF4ysoz0G/Qy99WvSQV/L1Ysd79e6tSpwzfffMPly5fzbNtp0KCBAt+6dJLXxizg4dZtmDLlfWRZZurUd9xqY8R8sU9evSzk4Ydb5+hFkpk6zb16CQwMJCIiAp1OlyfV/c7gdFmnsLXs+u0snhs6hkb31katUrF8+WK3r2W//PILhw8fzqOHevXqMX369GLtIOIpeIKvLGyMZ/rKAvvknTPzaNW2Y7HZfns4FCzw9fXl1q1bdiMTiYmJ+Pgov6+jMEqqimR+/PLrCc5FX2T9t1tAo8FgNFG9enUqVKhA3br1mDHjfdq2bU+nTp0JCAhQ7L5ms5mjR49y8eJFMjMzqVChAo0aNaJ9+/ZotWW+fqVd2rTvgq/vP8Z6/74fmPXzXmTZgslooF69+nav8/f3p1OnLgA0b/4QCxbMK9L9a9asyYEDB+wW04mKiqJWrVpFGre0c7deon7azZyf9yJLFkwm9+vlTipVqlTuH3pyuVsvB/fv5sOf9yJJZswmY7HppUGDBh7luHmejTnOuehovtmwHpVGi95gKBYbA541X0qqe0R+5Nr+bzZtRKXxKja9+Pn58cADDyg2Xlng7rVs9+7vmXpoL8gSRoPeZtvGnSi1lgUFBXH27Fm7xSfPnTtH5cqVizSuK3jeOlYyvjJ4no0paUraV/ZIZJALK+hZzOTa/q+/WZdj+/X6YpszuTj0NDl8+HCGDh1Kv379bLYhnD9/nk2bNjFixAi3CJcfsiwjZWdAlQrFet+CkJGZ9dZkatfMKQil8vbFq3INUKuJjFzN6dP/4+TJXxk27DnmzVtE48b3u3zP8+fP88orryDLss2e0twU9yVLltC0aVOX71PauHPxO3/uNPt+/I6pHyykUmBljh3+iZ/3f2+3gryX1z+ZAGq1Boul8OrM9nj//fcZN24cX3zxRZ5tOxcvXmTBggVFGre0U5Bejv7ifr0URlhYGNu3b3fL2J5MQXo5/Ms+Du3/3m7bxeLSy7Rp05g2bZpbxraHLMsgS5hTb0GVRsV238KwtTEqNBWD0ARURqVSuc3GFERxz5echx4Zc9ptqOI5W/butv0a/0A0laqiomT0MnLkSFasWOHWe3gqBa1lJ48d4MC+nXbbyCm1lk2YMIERI0YQEhKSx1fev38/06dPL9K4RUX4yo5R3DbGUyhpX9nTkGUZ2WTEnHoTqnhOINZmzqg1eFWukdOlpxhtv0PBgmHDhtGwYUO2bt3KgQMHrOmIjRo1Ys6cOXTu3FlxwfJDlmXMydeRjDqgZN/Q+vv5kZWdjb+fH4+2eYR1327h9VEj0Gg0pNy+hS7+KlXrNUJvkWnVqjWtWrXmzJkzXLoUQ+PG9+PvH0BmZmaR00TeeecdXnjhBQYPHpzn2JdffsmUKVP49ttvXf2aHo+vnz/Z2Zn42knBzM7KxN8/gAoVK2EyGflp7/dYLBbSs4xui7h36NCBPXv2sGfPHqKjo0lKSsLf35/w8HC6d+9OlSpV3HJfT8MZvezfl6OXpDR9iUV1R44cWSL3LW6c0UvUvl1YLBI3krJLTC/F+WYsx1kwYEq+Xnj7o2KgIBuTdO0yOpOFavc0QW/Qu8XGFETxzhcZLGaMSQkOtKR0PwXq5UYcuiuxVGtwP3qDodj1Yu+tdlnFmbXsx907kKS/W865SZ6wsDCaNm3Kjh07+O2336y+cuPGjfnmm29o1Kj4go+yLGFKvoEsfOVC8bTsC3dRZF/Zw960uwNZlrFkpmLJTC5pUYAC5gyQePk8BrRUqXMver2uWOaMw3nqnTt3LtagwN3IsgSyhCnpWk4fSw/gmd5hTHh/Oj7e3sx55y3WbvqWlyZMAhV4e3kx9sVhaNRapn76GQaT6e8MgKZ06xYCwKBBzzN27Ch8fHyKVIAiJiaGgQMH2j02YMAAPvnkE5e/Y2mgZ1h/Zk+fiLe3D8HVa9oca/GvtvxycC9vvDqEipUCafpAC2Iunud2qo6M7ML7bReVoKAgBgwY4LbxSwNF0UtapoGU9JKZ32FhYSVy3+KmKHrJ1pm4naovEXmL7W2cLCMbdJhSblBoX/FiwhEbo9VoeP/jCAwGg+I2piCKa75IJiOyxYLxdrxHBHDAQduvUTH1k/kYjMWrl1GjRik2VkF4wvNVUday+FuZmEzuexPauHFjJkyY4LbxC+MfXzlB+MoOUtwZHyVFkX3lLPf5yh6BLGNJT8KS28bQA3Bszqh4b87cYrH9KlmBkNqNGzeoWbNm4ScWEVmWkQxZ/HnqFNXv2DdZ7b5GaH2VjzRae8cqiLZSNdT+lZxugZGQcIVmzR60e6xv37706dOHIUOG5Dm2du1atmzZonhmwZ9/nqV27Xus/5dkGT8/H/z9lG//mG/feAUJrOBD1cq+hfaYv5uC9FIYO3bs4MknnyzStQVxp24kWcbP3wd/39KpF38/L2pW9VdcL5Ik8euvvxIdHY1Op6NmzZo89NBD3Hvvva6KnC82epFk/AN88CulevHx1lAnuIJDvczvpCjzJTIykueee65YirZJRj1nz56jmreWOwMFpcXGqDRavKrWRaXWgBOqcUQvaWlpBAYG5vnc3XYfQDIbMd68zIWrN6gR+M9+79KiF1RqvKvWQaX1crpdXGG6iYuLIzo6Gr1eT40aNW7jgQkAACAASURBVLj//vvd2lHpznVMlsFskQio4EtAabT9KqhVLQA/H22x2v6TJ0+6NfOjbPjKwaj9KyrqK+eHO22M8JVzKEwv69evZ8uWLURHR9tk4vTt27dYXrhJJgN/nPqd6gG286O0zBm1TwDaoBpuny+KVMDr2bMnv/32mxJD2UU26rm+9n3kZra9RJVepNyJOf02WpUatV+FIvXMtMesWbMYM2YMn3/+OU2aNLHuj7tw4cLf7TKWKHKf/JBkmRu3s8nWe040zlnSMg2o1SqCKvk4vQgWlWXLlrklWJCLJMvcTtWTHl969ZKtM3ErOZvqVZwPGORHTEwMo0eP5ubNmznbmcxmGjZsSHx8PN27d2fmzJn4+voqci97SJJMepaRS9dKr14MRgvXErOoUz1AMb0cOXLE7ucrV66kfv36VKxYkQ4dOihyL3tIJgO6q2exZGeAd5DNsdJiY2SLGVPSNbyq1UWlUisyZmxsLK+88gqxsbEEBwfz9ttv07NnT+txt9t9swlz8g2ufzUdHrXd8lBa9IIsYUxKwLtaHdAUrV/23dy6dYuJEydy/PhxANRqNQEBAZjNZoYOHcr48eMV8zHsIctgkWTib2ViuZ7utvu4FRmu386mTnAAPt5anIx9Fpnhw4fz+++/u238suErJ6JVq1D7Kucrl7iNKUu+ckUfp18W5Mcnn3zC/v37eeGFF/LU91q1ahVxcXFMnDhRkXvZQzLqSdq3BjmwCWAbGCgtc0YyZGFOvYW2cnW3rvuKBAt27typxDB2kUwGrn8zE+OtK9DMbbcpFsxpiXip1eDjr4hSH3jgAXbv3m19U5oblRsyZAht27bFy0v5CGYukixzKzmbbH3pT09KSdejVqsIDPBWbBEsiB07drhtbEmSSckwkJ7pGemHrpCZbUKt0lEtyE+RB9N3332Xp59+mhEjRiBJEsuWLSMtLY1x48bx3nvv8eGHH7qtyJEkyWTpTNxO1bll/OLEYDRz/XYWtapVUMTJfuGFF6hevXqe7i0ZGRnMnj0bjUbDvn37XL+RHSSzCeONS9zcNBe6vOKWexQXssWUEzCoWgeV2vWAwaxZs/j3v//NsGHDOH78ODNmzCA+Pt5aq8Cd+3xlScKcmUzC2veQjSWz/UUxZAvGpGt4V6sLGtddrnfeeYeGDRvy6aefIssyixcvpm7duoSGhvLee+/x2WefuTUNXpJl4m9lYLF4xpaQIiPLJCRmUbd6Bby9NM4mfhQJdwYKJJOB61+XEV85NRGvIA34+CniK5eojZERvnI+bNq0ie+++47q1avbfN6sWTM6d+7MU0895bZggWTUk3p4Cxm/7YbHmrjlHsWFpM/Ekq5GU6ma2wIGigQL3NUKLifqsxpD/AW3jF/8yJhSb+IdXF8RpwHAy8uLRx99tFj790qyTHqmkUw37vkvbpJSdfh5a/Dx1irqNKSlpVl7+tpL5VUSGRm90UJKeil3ru8gPcuIr4+Wiv7eLuvlwoULrFu3DpVKhUajYeTIkXTu3JkpU6bw/vvv85///MdtwQKzJHMzJdstY5cEOr2ZlHS9Im8Zxo4dy+7du5k0aRJdunSxft6pUyc2b95M1apVXRU3X2STgRsbPgRLyRfNUwLZbMScdgttZefTEu/mzJkzLF++HI1GQ/fu3WnevDkvvfQSWVlZbt+TLVtM3Ph6JpI+0633KTYkC6aUGzmBHBf1cvLkSZYuXWp98JkyZQrdu3dn5MiRzJ07lwEDBrhNPzlvSLMwm0t5oOBvZFkm4XYW99R0Pu3dk5CMepL2rsZwrSz5yjcU85VLysaUXV9Zi4+36wG2kiosKVtM6OPOk/rLphK5vzuwZKej8vZVNCPnThx6/XC3Qn///Xfmzp3L3LlzOXHihOJCATkFjW5dIeO3H+/8tPRXLZVzAgaOfA9Xv6s72iepVGAx51StL2vcSM5WRC8mk4mIiAg6depE+/btCQkJoX379nTq1Il58+ZhMrnJcMhwIynLPWOXIImpOrvte+6mML3UqVOH//3vf9b/nzp1iuDgYAAqV67sNr3IwPXETE+pmacYKel6TBap0EJnhell7NixLFmyhDVr1jBmzBiuX7+uoJT5Ixn1JG5f+M8DqSyVfvsCSPosZEPha1lhx9VqNVlZ/6wnNWvWZO3atRw8eJAPPvhAEVntIRn1pEStz+lIYaX0237ZZMCSleagjZHydcSrVavGlStXrP+/evWqtbd27dq1bXSmJDKQkWVEZygbgbVcLBbJCRuTv15yOXXqFKtWreLQoUN5jrnDJ5MsZow3L5Pxu/CV86MkbEzZ9pWzHOqQUJhenn76aYYOHcrGjRs5ffo0sbGxnDlzho0bN/Liiy/Sv39/pUS2lctsInH7wjs/Kf3zBXLaCjtQBLgo39WhYMGdBVl+/PFHXnrpJbKzs9HpdIwaNYpdu3Y5fePCkC0mbm2ZZ/OZOv0W2SZzqVeqbNQjZacX+D1kWSYjIw0/v6Lvoc7d06gkvn7+xMYlIEtmzyiHrCBms8TtNH2BToMjepk2bRq///47H3/8MYcPH+aPP/7gyJEjfPzxx5w6dcotb6/1BjPXkw2YjVllTi+yJHMjOQvJxfkyYcIEhg8fzssvv8yoUaMYOXIk48aNA+DcuXM0bdpUcdn1RjMpmWYM+swypxfg75aK+ePoOlavXj0iIyN58sknGTZsGEuWLHFr72bJbCQ75jeyo/8JdmuS40jT6bDIpd9xMKUlFvj35oheHn74Yfbs2WPzWZUqVVi9ejWnTp1Cr1feCZYlCVPyddJ+3W7zeVmx/ZaM5AKzWHJqqZhITr5tDQDczYgRIxg8eDAzZ85kxowZDB06lKFDhwIQHR1NvXr13CK7l5c3t24nlcl1LCPLiN5oyferOaIXgK1btzJy5EiOHTvGW2+9xciRI22CN8uWLVNadLCYublV+MqeZmPKvK+c6rqvPGnSJIYOHcrmzZt58cUX6dWrFy+88AKbN29m8ODBvPHGG4rLLhn1JH6/HEtWqvWzsjJfkCXMqbfc8mzpUDeEhx9+2LrXql+/frz66qt07doVgEOHDvHJJ5+wdetWp25cELkpVbaRUpC8/dE9FIZUqTpOlXz2RFSgrVAF1Jp8T/Hz86VevXpurT3gDHqjmd1HL/PH+Su0alQRHy91sezzK26CKvrgpVWT399YYXp55JFH2L9/v93K1Onp6YSEhCiakWMyS5yJuc1Hq4/Rp0NVqld2PWXfE6kU4I2PlybfFCtH5suVK1esb3w6dOjAfffd5xZZIadOwfXbWUxacICn2lUps3rx9/UiwDf/4m3OrmNZWVksWrSII0eOsHr1ards37HoMolb8gqS/h9HXlapMdR/BHO9fyF7+VDabYzKyxuNX6V8q/AXppfLly+Tnp5OixYt8hzLzMxk79699OnTR1GZJZOBa5ET78oqKFu2X6XRogmonK9etFoNQUFBVKtWDXU+tSeOHTvGgQMHAOjSpYu1OJvRaMRgMCjeFcFgNPPhqmM0qaUqs+uYWqWiaqBvvuuYI3rp2bMnH374IS1atECv1zN16lQuXrzIF198QaVKlWx8aSXI8ZVXkfG7bVCvLM0Xd/jK7rYxeqOZ3Ucu88cF4St70jOMbDGhu/wHN76xzYwrU/MFUPtXRK31KbLtt4dDwYJWrVpZqx63a9eOI0eOWBdLWZZp06aNYg8/ksWMMeEiCWveUWQ8T8anzv3Uem4aai+fkhbFIRJTshn14T5MZWS/Yn4EB/mxZFIIvj5F2yvXqVMnVq9eTcOGDfMci4mJYciQIfzyyy+uimklW29i1Jx9pJaBooYF4eejZcWU7lSuoOx8SUhIoFatWorv8zIYLbyx4CCXS2vFcAdRq2D+692oX7Nivk50UZBl2S177ySjnltbIsi+eFLxsT2N6v0m4d+oNWqtZzhrBSEZ9SQfXE/6se9KWhS3E9RtEIFteqH2dl/3FaUwGM1E/X6NhRtOlbQobuex1nV5pV/LItv+1q1bc/Kk7boyd+5cDh06xKpVq3jiiScU6yAiWcwYEqK5vuZdRcbzZHzqNKHWc1MV95XdZWNuJWfz8tyy7ytXD/JjsQu+cnEjGbKJWzoWS1bp7UrhCCpvP+q/shhNgHJBMIc8O6PRyPz585k/fz6QU0E0F51Op+xkkyVubf1MufE8GMO1v8j882dkS9H2SkuSxMqVKxk9ejQRERGkpqbaHM+tWq0EeoOZT9adLPOLH0Biio51u88XeW/m8OHDGTp0KPPmzWPXrl0cOnSIH374gc8++4yhQ4cyYsQIxWTVGcxEbvujzAcKIOe7Lvjmd8X3zA4YMICUlBRFxzSYLOz85VKZDxRATrXnj748icmibApf586dSU5OVnRMWZLQX/2zXAQKAG7vXApS0VNt169fz8CBA2ndujUPPPAArVu3ZuDAgWzYsEFBKXMwZySTfmx74SeWAVIObkAyFL3g6aFDh5g4cSJPPfUUjz/+uLVquJJB6FzMFpmVW88oPq4nsv9kPLHXC057L4hq1apx+fJlm8/efPNNnnjiCQYNGoTZrKDtkiQSt85XbjwPxnDtApl/Hiqyr5wf7rAxeoOZT78qH77yrRQd634suq9cGK1atVJsLMmg4/aPX5T5QAGAbNSRuHMJkkG57lsOhYPCwsK4ceMGACEhISQkJFjTdn7++Wfuv/9+RYSRJQvZf53AnJ6oyHilgdRDm6jQvEuREl8+/fRTjhw5wlNPPcXx48fp06cPkZGRNGrUCEDRVPfrSVmcjVV2UfVkdh25zKAeRdvDPmzYMBo2bMjWrVs5cOCAtaVlo0aNmDNnDp07d1ZMTrNFYv/JOMXG83SOn7tJeqYBvyJEsrt162b38+TkZPr06YNarbam9rqKCvj2QOno06sEcTczOHspiZaNg53ujvDcc8/Z/Tw1NZXRo0ej1WpZt26dEmIiW0wkR32jyFilAUmfSfqpvQS26oHKyeyC4uyBLRl0pER9TZmrApofkpmUnzdQtftQ1N5+Tl26atUqIiMj6d+/P6GhoVa9nD9/njfffJMRI0ZYaxi4isFoZmtUDHqj+/Z2expf7jrHuy+2K5KNCQkJYceOHYwdO9bm81dffRUfHx/mzZuXz5XOIUsWsqOPlz9fuVlnVPnvRsiX4rQx5c1X/uHwZQaFKl/vCZQtCCpLZjL/iFJsPE8nO/oEFl0Gah/n7Et+OLQazpkzJ99jPXr0oEePHooII1vMpBzaqMhYpQVzWiK6S//Dv1Frp3tj79y5kw0bNlC9enWGDRvGpk2bGDZsGMuWLaN58+aKFevI1pv4avd5RcYqLRiMFnb+EstTne/D28t569S5c2dFgwL20BvNfLs/GrPCb3Q9na9+vMDLfVs47cz5+flRrVo1Ro4ciY9PTjqjLMu8+uqrvPfee4rtW7RYJA797xppmUZFxistfP3jBR5oUMXplMSYmBgaN25M3759rZ/JssyFCxfo1auXovuvjYlxGG9cUmy80kDa0W1UejjU6YB0cfbAls1Gss4fVWSs0kLmmSiqPj7E6esiIyPtbnMLDQ2lV69eNgUPXUfFzl/K13w5ffE2yel66gRXcPraN998M99jo0aNYtSoUa6IZqV8+sq30F0+jX/DVk77ysVlY7L15nLnK+uNFr4/HEtYp6L5ygXxyCOPKDKOZDKQenirS1l2pZGUnzdQLfQlRQIGym0wVQDjrauYEq+WtBjFTuovm5HNzj9YZGRkUKVKFev/n376aaZNm8bIkSM5ceKEYttDjCYLv/55Q5GxShPfHYxRfExZlhXrUqFWqdh1+LIiY5UmDv4eX2BnhPz47rvv6NixIx9++CEZGRm0bduWdu3a4eXlRatWrWjbtq0i8pktMpt+Kj9ZBbmcu5zM7TTn0952795NgwYNWL9+PU2aNCE8PJy+ffvi6+tLr169CA8PV0Q+yZBNajlzsCGnAr/u0ilkB1oq3UlxVYaWjHpSj2x1qOVTWUI2G0k7sQvJ7FxqtU6no0aNGnaPBQcHo9Mpk3pqsUj8fOoaGWWoR7yjrN/zF9n6oqdWx8bGsmfPHrZu3cqePXuIjY1VUDow3rqCKbH8ZBTmkuMrO7/lsrhsjNFkLpe+8raoovvKMTExREREMHr0aIYMGWLdVh0To6T/rSL9roL55YHMP39GqWw9l4MFRqORBx54wGVBJIOOtOM7XB6nNGJIiEbSZTp93T333GPTNx6ge/fufPjhh4wZMwaj0fU3m0aThV1HLuNAC+IyR0qGgfNXlE0nM5lMDBni/Nuku5EkmRPnbpLlgkNTWjFbZPafiMNsce7hwsvLi9GjR7Ns2TI2btzIyJEjuXpV+eDkjeQs4m5mFH5iGWT7z5ec3r8YGBjIzJkzmTx5Mu+++y4zZswgPd0NtR5kyI5RrhJ5aSL9xC5ko3OtDourB7ZKrSbjzAFFxiptZJza53RbtdDQUF5++WWOHDlCcnIyRqOR5ORkjhw5wpgxYxTL9DSaJb4/rOxDbmnh8JkENE5up4KcYrnPPPMMffr0YcGCBaxfv54FCxYQHh7OwIEDSUhIcFk2yaAj7dedLo9TGjFc+8umg42jFIeNKe++8oUi+Mo7duzgmWee4caNG7Rp04awsDDatm3LzZs3GThwIN9//73LssmyRPbFk8gu1IgptVjMZJyJQi6gXa+jOJQvWtACZzAYlHkDoVaTfeFX18cppaSd/IGgzv2dqvY6ZMgQoqOjad26tc3nXbp04bPPPmPp0qWKyLb31/KX7ZHLjkOxNKpbGX9fx/f7FtRG1GRS5i2N3mhmZzl15AB2H71C97b10Wqcj3fWq1ePZcuWsWfPHkaMGJGnMKgr6AxmdhwqX2m7dxL1+zVeeqp5ka5t1aoVmzZtYs2aNYSHh9sU0nUV2WIm48z+cpeGmIvuyh9OOwyTJk2iXr16bN68mYsXL9rUXhk8eDADBw5URra480jZZb8QqD3MqTcx3Y7Hp5bjLVynT5/OwoULmTx5MomJidYMwuDgYHr37s24ceMUkS0j20h0nHJrY2nCYLRw5EwCXR6u41SHl7fffpvWrVuzatUq/Pz+Sf3Nzs5m8eLFvPXWW6xZs8Y14dRqsv8qz77yboI69Uft5e30te60MSB85YZO+soREREsX748zzMMwMmTJ5k0aRI9e/Z0SS7ZqCf95A8ujVGayfh9DxVbPIZK41rHCoeuDgkJQaVS5RsUUCLdPTv6ZJFS8csKmX9EUaXLAKeuKajHdYcOHay9l10h4XYWt1KUq6hZ2jh+9gYaJx9I3377bZo1a4a3d15jplRqryzDmYu3FRmrNHL5ejrpmUZ8qxR9AXziiSfo1KkTV65cISgoSBG5vLRqfj7l+tuj0kqWzsTZ2CT+dX/1wk+2g1qtZtiwYfTs2ZPTp09TqVIlReSSzSYyTu9XZKxSiSyRcSaKwDa9nNrvO3DgQMWCAvawGLLz9Igvb6T/tpuqT7zgcBtFb29vJk6cyMSJE0lPT7cGcZSaKwAms4Ufj15RbLzSyI/HrtLmwZoE+Dk+X06fPs3KlSvz2H5/f3/Gjx+vyFa37OgT5dtXPnOAoM5Fz2pyl41JSMws177yr2dvOP3yJiUlhWbNmtk99uCDDyrSpUqWZfRX/nR5nNKK8dYVLNnpLrfpdcjTDg4OZtGiRTRvnveNkcFgsBsVcgbJqEd3+bRLY5R2LBnJSCYDGq3z0dK7GTNmDHPmzHF5EZQkmdPR5afarj3MFpn4mxk0rFvZ4Wvuuece3njjDdq3b5/nmMFgoGXLli7LFROf6mz2apnjz9gkqlfxd/j8s2fP8uCDD9p85ufnR9OmylXyTUnXk6Urf3t87+TUX4k0u68qXlrnih3FxsZy8eJFsrKyCAgIoFGjRnh5OVfBPz9UGi3Gm+X74Ucfd46KLUPQ+AYoMl5CQgK1a9d2aQyVWoP+2l+KyFNa0V/7y+mtCLlUqlRJ0SBBLkaTxLnL5aeiuz2i41Lw8XZuDatZsyYHDhwgNDQ0z7GoqChq1arlkkw5vnL5aGOZH5aMZGSTEVz0latXr0737t0VkUmSZP5Xjl/eQI6vHHcrg4Z1HPeVO3bsyJQpU3jttdeoX7++9fOrV68yf/58Onbs6LJchusxlJsuO/mgjzuPV+WivcDJxaFgQfPmzTl79qzdhxytVuvy21JZljCUswrV9jDevIxfg4ccPn/+fPs9do8cOcKSJUvw8/Nj/PjxRZZHbzRz4aqy/edLI39eSuLe2oEOt4Rr27Ytly5dshssUKvVtGnTxiV5zBaJM5eSXBqjLHA2NpkOD9XC19ux7IK+fftSv359evfuTZ8+fahTp47iMpXXtN07iY5PxWiSHA4WJCQkMGHCBM6fP0/9+vWpUKECmZmZxMXF0bRpUyIiIlx+KDWl3Ch3BfTuxnj9ksupiNaxjEYef/xxzp0759pAkoQlvXw72abb8U7pJTs7m48++ojffvuNxo0bM378eBtHOywsjO3bt7skk7eXhpj48r2W6Y0WUjMMVKvseCXx999/n3HjxvHFF1/kaTd68eJFFixY4JpQsvT3w0/5JsdXdny7m7vnjN5o5sIV4SufvZTEvbUc95Vnz57N9OnT6dmzJ15eXgQEBJCVlYXZbCY0NJTZs2e7JI9sMaO/Wn6zCnLRx58joEk71N6Ob3O/G4cs1IwZM/Ldt+Xt7c358661ClFrvTHeKt9vfQB0V8/iW/9BVGrHnOylS5fyr3/9i3vvvdfmc4vFws2bN/H1dS3tRKVScVE8/HDhagrdjWaH92LNmDEj32NeXl6sXbvWJXkMRgvRIohDTHwqkhPVhHx9fRk9ejRbtmxhyZIltG7dmr59+xIaGoq/v+MZCvlhNFn4QwRxiIlPc6qFUnHs89XHl692VvYwpyc69Qa7oK4tShTPBTCWw+5HeZAlTKk38K5Wz6HT58yZw40bNxg3bhy//vor/fv3Z8GCBbRr1w6A+Ph4l0XK1BnLZfHcu4mOS3EqWNChQwf27NnDnj17iI6OJikpCX9/f8LDw+nevbtN96qioNJ6izkD6K7+iW/9Bxz2ld09Z9QqFRfLeXAN4MKVFB5v47ivHBgYSEREBDqdjsuXL1uzChs0aGDjCxQVyWQQwTXAeD0GWXatXpPD2xDciTn9NihQrbG0Y7h+EcmodzhNdM2aNcyePZuqVasyZswY6+T6+eefeffdd6latapL8mjUKq4nOV95tqwRE5+mWBtKJfDSqom5llbSYpQ4l6+nO/VQqlarCQ8PJzw8nGvXrrF161aWLl3K9OnT6dGjB+Hh4VbnoSiYzFK5fxsHOXULsnQmKld0LIrt7n2+kkGHPv6CS2OUFYyJV/Gtc79D5w4ePJjg4GCnCrw5gyxJ6K+edcvYpQ19/AWHgwX79+9n165dVKxYkSeeeIJu3brx2muv8eGHH9K1a1dF5LkUL+wL5GQVtm5awyk7ExQUxIABztWfchThK+dgvB7jlK/s7jmjVqu4IXxlYq4VzVf28/NTpKve3ai0XhhF1jrGW1dRu7htp0heQFxcHOvWrePLL7/kyhXXMwLK+57FXIzXL6HSOr5Ht23btmzatIlKlSoRHh7ODz8oW/Ez/lZmud8XD5BwO9OpNkqSJPHll18ydepU9u3bB8DHH39MWFgYkyZNIjnZtb2gRlNOemR5x2SWSEwtWkGhOnXqMGbMGHbv3k1kZCReXl4uVxH38dZwSQRxAIi55njQJHefrz2U2OcLsnAY/kZ/9Syyg9sxateuzfz584mKisrz78cfXe9ZLRn16BOiXR6nLGCIv4BkdGwtMxgMNoG1Rx99lKVLlzJlyhR27drlcmDbZLZw5lL53hqSy8X4NExmZbYvWSwWFi1a5NIY+njhKwMYbsQ45Su7e87E3coQvjJwLdE5X7kwRo4c6dL1ssmIJUv4ZLLFhDndtaxXh4IF7dq1s6Yd/vrrr/Tu3Zv9+/cTFRVFnz59OHLkSIHXL1y4MN+0RcloQB8nUkQBLFmpBVa5tfc7arVaRo4cyeeff853333H0KFD0ett+2mfOXOGiRMnOiWLLMv8KRwGICdzN/5WZr7H79bLrFmzWL9+PQEBAXz22We8/fbbxMbGMn78eHQ6HTNnzgSKpheA2Ovls82YPf4qoLfv3XrJr7ZK69atmTlzJocOHQKKrpfUDAN6Y/lszXc3f8QkYTI79lu8//77TJw4kWeeeYbp06cTERHBjBkzePbZZ5kyZQrvv/9+oWMUZGNyUnfjnJK/rGK4Fo1k1Bd+Ijm1ipYsWWL3d1WpVA4FcQrUi0aD8boI4sDfRbgKeNq483ds3Lhxni0i//rXv1i5ciUffPCBjf0vylpmNElcjBMONsCla2lOFTks6O/dYrGwePHiIl8vGQ3o412sEVJGsGSmIpvzLyR89+/o6JwpynyRJJmzYvshkLOEXUvM31e+m4L+3oFCi+cXdr3x5mWHZSnrGFwMzKtkB6oTNmnShN9++42AgAAGDRrEgAEDrG37vvvuO7766iu++eYbh66/G4s+i8TvFpAdfcKFr1F2qPvyAryr2i+8lt/vaDab0WpzdpT89NNPHD16lNdee82lfdgms4XVO8+y7aBw5gDefbEt7ZrZd47v1kunTp3Ytm0bgYGBJCUl0a1bN44ePUpgYCDp6en06NGj0ABbQez99Qrz158q8vVliUE9mvBsqP1uBnfrZfv27YSFhdnMFyX562oKE+cfVHzc0ki3VnUZ3a+Fw3sXmzRpwrvvvsvVq1etreAaN27s8D7fAm1MVhpXPnvR6e9QFvGp3Ziaz77nUPquyWSiefPm+f6ujlCQXmRZJnbOgHJfeBJA7VeB+q+uzDdV9M7fMSoqiszMTHr16pVnLfvrr7/44osvmDNnTpFlydabmDj/YIEB8vLEpjlPOhwwaNKkCU899ZRd+2KxWNi+jWxsIgAAIABJREFUfXuBRUEL9ZW3zSf74knHhS/D1H15Id5V7Re+vft3zJ0zPXr0yKMbV+eM8JVtee/FdrRtVtOhcwv6e1fi+vRT+7i9c0mRxi5rBHV5hqDORd8eVajHPH36dCCn37Jareb69escO3aML7/8EoPBQNu2bYmJySkgsWjRInbs2IGPjw8qlYo1a9Ywb948m+vXrl2bp9VPee4Zezf5RUvv1kOdOnUICgoiNjaWrKwstm3bxsSJE4mNjcVkMnHt2jVmz55NYGAgx44dY+7cuXz77bfEx8fTr18/Bg4cSFRUFDqdjlmzZvHII4/Y3E+SZIwm4cTlYsjnjbE9vaSmpjJ27Fiys7NZv349siwzbNgwzGYz9erVw2zO2XNYFL0A4u31HRhNEhaLhOau/r75zZevv/7a7nypX7++S/MFwGASesnFaLY4nJaZq6sNGzagVqtZunQpixcvZsOGDaxdu5Z27drx9ttvo9FoimRjZLHH14oztja3EnXu75qrlwsXLmAwGFzWC7IsAgV/I5tNqFT2Ez3zW8vWrVuX71qWlpZW5LVMpVJhFGuZFbNFwofCgwW5ejp48CAajYb//Oc/nDhxguTkZMxmM7Vr17ZmtxXdVy7fbXnvJL+1rCBfecWKFfnafiiaTyZ8ZVsMRsfs7d16Uty+ALJJbNfNRTYbkSWLw0VB78bhzIKpU6fi7e3NjBkzePfddxkwYACSJPH666/z008/cfDgQbp3786hQ4fw9fUlMzMTX19ftFptodHSG+tnYxDVqgGoPXQ2vnWb2D125+/41ltv8ddff/Hll19aMwiSk5Otb+HmzZtHVFQUW7duzbMAPv744yxbtozHHnss38wQncHM8i1n2He8ZCvvajVqHrzXtQrCStCnS0Pa5BMtvVsve/bsISQkhLCwMHbu3Mm5c+d48sknGTRoEGPGjOHKlSscOHCgSHoB2LjvL9Z8X/LpiM0bVkVdwoUfOz5Uiyfa34O3nTZ9zsyXiIgIjh8/ztdff11kvZw8f5NpK4+69ws7QON6lfHzUT5zwhnurx/E0yGNCfBzPLMgV1fvvPMObdq0oU+fPphMJsLDwxkyZAihoaFFsjGmlBvELRmj9FcslXhVqU2dF+ei9nEs68ydepHNJmLnDlT6K5ZOVGrufXtDvnunHV3LJElizJgxNGzYkDfeeKNIa5nBZGH4B3tIzSxZR7tKJV/qVq9QojIAvDm0DZX8HSsO1qRJEyIiIujVq5fNfJEkiQkTJvDDDz9w7NgxF3zlWRhEsVYAag+bk2+xVmdt/4ULF1i+fLkLvvJp9h0v2a1unuIrh3dtyCMPOp5ZUK9ePcLDw7l48SJdu3a1zpc33niD9u3bF9m+AKT8spmUA18p+fVKLZXa9KJKyGDUTtT6uBOHPcodO3ag0WiwWCysXLmSdevWAZCSkkLFihWpWLEi9evXZ/LkyXTq1Ilu3bpRoYKDC714u/APTlRJ+fe//22z1WDbtm1s374dk8lEdna29Q323fj7+/PYY48BOfu25s6da/c8Z9rSuQs/Hw0DujtWvdud1KrmeJrUwIEDiY6OZu7cuQwdOpRq1aqxYMECPv30UzQaDS1atLB7naN6sXiAXgD6PdYYL617KqU7SrXKfuDgz1HQfMnKyuLatWt2rytN8wWgR/t7qFm1aGl9SlEpwJuixpF++uknTp8+zRdffIEsy0RHRxMbG1tkGyNLwr7kkvNuoGiKUVwvwu7/gyw5VWQtv7XMYDBw8eLFfPfxOrKWqQDJA6q13Vu7EuHdGpW0GHhpnJsvue/f7pwvADqdjocfftg1X1msZf+gkK/ssu2XPcP2+/tqS52vDDB8+HC+//57jh07xv79+/nss8+oWLEiRqORGjVquDhfRIaUDS6s6w4HC1auXElAQADt27fnv//9L/Xq5bT5ycjIwGQyodFo2LBhA7/99htHjx6lb9++REZG0rSp/f3Ed6LSFC3SURZxpsLrnYvfiRMn+Prrr/nmm2+oUqUK27dvZ8OGDXavu7MqrFqtthtUUKko8QdBgIxsE+8uO1zSYjDh2VaEPOLY27hatWoxadIkIEcvkZGRREVFoVarOXTokEt6AfBxoo2TO5keWfJv0cO7NWTwfx506Ny9e/cSGxsLwO3btzl58iTdunXDx8eHK1eu5OswOKoXe9kNJcGijf8raRFo37wmrw1s5dC5b7/9NgDTpk1Dq9WSmZlJmzZtCAgIwGKxEB0dzZtvvglQJBuj0pRsloUnodJokR2MrrldL0VMhyyTaLTIkoTKgTaV586dIykpyRoQuHbtGvv27aN///54eXkRExOTb7DAkbVMkmW0mpK3/SfP3+Lk+VslLQZfzfyPU+fnPlzKssySJUusvvKdFNlXLuJbwbKIM88Nx48ftztf/Pz8OHv2rEu231N85fQso0f4yq8PakX11o7XSwsLC2PgwIG0bduWPn36EBUVRXx8PD169KBbt26uPVtqHWvfXB5QabQO2Zf8cOjKgIAAMjNzit2EhISwYsUKLJaciE1uZC4zM5Pk5GTatm3Lq6++yv333090dHSe6+1+CS/X+j+WJQoyBgX9junp6VSoUIHKlStjNBrZ/P/2zjw+qirN+79z11qyVNbKvi8QQoAk7GERQgBBNqFdAdtu0go4LoMD3fYouPSrMCo4MqDA+3Zj0z3dLYN0K7aOuygCgoKyiYCEPQhhTWq99/2jSAxLoKruUreqzvfz8WPgps455Mm593ef8yyrVytaB0MIBD70N0CjcL0CR/7YJSEhAVarVbFdAIQ8xNxI8BwLtoOTnyvt8u2338JkMsFut8NqtcJisSA7OxvJyck4fvy44rUIAt0vrfAc63dkwZtvvgmO4xAfHw+73Y6CggI0NDQgJSUFaWlpkGUZhw4dCvoZQwX2TxCO9/t0QWu7gDoL2iCcAMgdn4K1/znu2bMHJ06cwMGDB3Hw4EEcPnwYAHDixAn88MMPHXZ98RdZNo5D2ggE4ji5nlY+ffq0sv2CS78nFACBaeX169dj165dV+2X/fv3Y9s2Zc51hiEQ6H5pI9B7R6udamtr0dLSgnXr1mH58uVtKVVK9gsjmoL/h0QYhOMBBc4Cv9467r33XkyZMgUmkwlLly7F0qVLMXbsWBBCwPM8eJ7HokWL8MADD8DhcECWZZSVlaGuru6qz19ZhIIQAkYwB/0PiDQI3/Evd/ufY2bm5R0TBgwYgL///e8YPnw4EhISUFlZ2Rb+FgwsS/yuZB4NWE0db5VA7FJdXY3XX39d0VpiLNQurcSY+Q7rJlxpl9TUVNTU1GDo0KFwu9149NFHsW7dOiQkJGDYsGH4/e9/r2gtZpHapRWzyPldz6KkpAS5ubn49NNPL3vGfPDBB5BlGbIs48SJE+B5PqhnDMPT04VWAnnWam0XSF4QwQTZz1aOkQwjmHyRBR3o7PY/R4vFgqqqKjzxxBMA0HYv27ZtG+Lj4xWvRZJkWK7zvIsmAj011lwr+1lrJBoggv9aOSkpCbfffjsGDBhw2X5JSEjA6NGjFT37WYZq5fb4W6cIAHiev+5+efnll3HhwoXgni8AGFPoa54YBcYU02ERXX/wq8DhjXjllVfwq1/9KqjPypIXZza8QYtQAADDIf/fVvkdNnv06NEOrzmdTowcORK7dwdfOHLTzuN4asXGoD8fSax8YjgS4tTxUirZL4Cvj+19z76vylrCnedm1qAsP8mv7121ahXsdjtqa2uvuub1erFkyRLMnDkz6LU4XR5M/PVbQX8+kph+awVG9M3zKw9ba7vIHjcO/mc9pOZzQY8RKcRVj/QVOfLDgaK1XSRHM47991NwHvku6DEiBXNhD6SOe9ivlpaLFi1Cbm5uW/vq9ng8Hvz7v/+7otaJLQ43lvzPN/hwS2gLthmB9GQrXnpkMEwqRfMp18pr0PTRn1VZS1jDcsh/1H+trPWe2bTjOJ76v1QrA4Fp5dZ21lrhOnUUh5c+oNn44UTG1Gdgyrpx6kZHqHIHVPLiQxgWphz/co4jHSE1G7LH5fcNcMiQISCEdBh2GEjBpGtRlGVT9PlIwWLiEOtnNWR/ULJfAMCeaAHHEni8oS+qE2ry0uNu/E2XuOuuuzq8xrKsohcfwFdnMS3JguOnmhWNEwmU5Sf5ff/R2i6SxwUxrQAt+79WNE4kYMop8zvSQmu7gOUgphdSZwEAMb3Qb7s8+OCDHV7jOE7RSw8AmEQOnfISqLMAPg2kZrFH5Vq5i2prCWeElJyAtLLWe6Yom2plwBeBGxOAVtbSUQAAvC0VYDhAou2ThZRcRZ/3a6ft3LkTZWXavdCLqcr+EZGCmFYIBBAmkpKSgpdffhnl5eVXXXM6naiqqlK0njiLAIuJQ7MjujdaYaYNTrcXnIIiNqdPn0ZjYyMKCgouK5oTDC63F7lpcdh35KyiccKdZJsJrAEKcbUiSTKKsm1R7yxgCJCREtpuDO1heBFiehF1FgAQM4pDvYQ2GF6AKbsM5758O9RLCTmmnC6GKcRJCPE7WivSKc1NgEkI3C6HDh3C3r174XA4YLfbUVJSgtjYWMXrERUK/khBTA9MK2tNnJVqZQAozLLB5fYGlLqzc+dONDQ0YNCgQRAEAX/+85/R0NCAfv36YfDgwYrWI3tcEFKy4TpxQNE44Q4bm6SoXgHgZ4HDCRMmoK6uDosXL+6waqiyVXBgY0PfHzTUmLI7gblOHtaVlJeXY+fOnWBZ9qr/OI5TXOjI6faiMJN6TIuy48EHUOxx3759GDNmDHr06IFXXnkFH3/8MUaOHInbbrsNtbW1+O47ZSdphBAU0qgPFGXZ4PGo10qqvr5e0edNAofSHHofy0qNNZRdCMvBlEuj1wgvgotJUG08pXYBADEz9K3xjIBoz1dtrLlz5yoeIyPFCkZZYGJE0CU/CUwAP4jGxkZMnjwZw4YNw/Tp0zFr1izcd999GDhwIBYuXKhYk4GlWhkIXCvfCKV7xunyoiBTeb2QcKco2xZQYfS//e1vqK+vx9NPP4277roLy5Ytw969e9Hc3IyHH35YcX0vEAIxvUDZGBGAmF4I2ausjaRfVjWZTLj//vuxceNG1NXVYcqUKXjjjTfQ3KzSCZrX7fMURjliZmlA3//kk0+2Ffq4EkEQFNUrAACeZ1CUTW+A5QXJAbXFe+aZZzBp0iTMmjULixYtwtGjR/HFF19gy5YtqKurwwsvvKBoPWaRQ1k+FQzF2Qmq5ZICUByJwzAEXQqoXdR2ZCm1C6Duy1i4IqTmQXI7VRtPDbtwMYlRX+GdscSp+uKjQhkqeD0yMlOVn4SHO9n2wH4Gjz32GAoLC/HJJ5/g448/xsSJEzFt2jSsWbMGW7ZswcKFC5UtyOuGmEZffsTMElXHU7pneI6habsAyguSwAeglVesWIHXXnsNK1euxM6dO9GrVy/MmzcPTz/9NF566SWsXLlS0XoYwQxRQZ5+pCBmFIERlBV69stZwDAMxo8fj5UrV+Ldd99F7969sWTJEvTv3x9z5szBxo3KCnsQwQQxI8pPGBjWl18TACkpKUhK0i5cUOBYlBckazZ+uBBoPtqOHTtw991347bbbmvbO4QQcByHhx56CNu3b1e8pk559KW0vDAJrIrHX0prSQBAToDiMhLpnKeuE0cNuzCCGYw5um0jpheoGuquhl1ktwuCPU/5YsIYMa0Aksel2njz5s1TPIYMGUVZ0X1QkJ5kDfglcsuWLfjtb3+L1NRU2O12/OY3v8HKlSuRl5eH5557TnHrZJ9WNk4qUUhgOPDxgWnlG6F0zwg8i/JCmroTqMPk5MmTyM/PR0FBAUwmE3r06NF2rX///tct4u4vpqzADmEjEVNOFxCFrYoDTmLIzMzEjBkz8M4772D58uVtbZOUQBgW1k59FY0R7pjzukJWKBgOHTqEVatW4Y9//CMOHjyoyrrKC5PAddDHPhpIT7LCGmBbHFmW25wDZrMZJtNPp0YWiwUOh/JWYSk2MxJio7clnElgVTnBPn36NHbv3g2XSx2xLsm+PNdopleX9ICKq+7cuVPD1fiQvR5YCis1n8fIWDv3C6iNpB52IRwPS3G15vMYGWtpLzDXaZnsD83NzdftNx4oZpFDv4oM1cYLR6o7B/5CmpycfJn2amhogNXqq9+SkZGBixcvKloT1cqAOa9csVYG1N8zXQuTo1srJ1sDbiFpNpvhdrsBoO1QrRWHwwFGYZ49AHDxKWCt0Rv1QXgTxDTlkZV+WaIj72pVVRWeeuoprF+/XvFCuLhk8CnZiscJV+KqRoIE0AMbAEaOHNn29aZNmzB27Fh8+OGH+PjjjzFu3Dhs2LBBlbVVd7arMk44UtcnN+C6INnZ2W0e0c2bN192bc+ePbDblf88ZVnGkOro3S/9KjIgeQPLi9e6lgQACDyDm/vlKR4nXOmclwhLgFEFmtfEAcCIZsT3vFmTscMBNiYh4Og9PexCOB5xPYYBiFKRzXCIKR8Iwvp/6rNkyZK2r5uamvCLX/wClZWV6NmzJ+655x6cOnVK8bIIIagsTYXVZIyii6FgdE1BwBFS06ZNw+TJk/HUU0/hySefxNSpUzF16lQAwN69e5GdrfyZzcUng0+O3md/XHXgWlmPPQNEt1Ye3jtwrdy3b180NDQAAJ544onLrn300UcoLVUhKkCWEdN1kPJxwhRr576ApLyGlF+mffLJJ697XWl1d8DnMY3rce38+0iHMVlhLqgIuNXh8ePH275euHAhHn/8cSxfvhzLli3DvHnzsGjRIsVrs5h4jOofnTlyDAHqeucGlIMFAPPnz++w8nFTU9N12/j4iyhwuLl/9OZh31JTAHOAXmyta0kAAMsw6FeRAUFB54xwZmS/PIhCYP92zWviXIJPyQEXn6LqmOFCTNfBQIAh1XrZhbA8TLnR2RLOUlwVsF2WLVvW9vX8+fNhtVqxfv16fPrpp0hISMCCBQtUWZtXkjGgR6YqY4UbeelxSIwPPNpj0qRJePHFFyEIAkRRxAsvvIA777wTAJCbm4tVq1YpXhthWMT2GKZ4nHCEMVlhzg9cK+uxZ6hWDlwrL1iwAIWF165X16dPH1XeYRheRFz1yBt/Y4QSX30zGDEw59q18EvVad0LE/BVrI6tuCkqix3FVgwJyvPT/oZ54MABjBo1qu3Po0aNwv79+1VZX1l+IlJsyn/Zwo2qzvagwsoKCws7dBb069cPI0aMULo0AECsRUCXgujLk8tKjQm48BSgTy0JwBf1MbAyS5WxwgmrmUe/rukBhw5qXROnDUIQVx2F0QWEQXyvUQGlIAD62YUIImx9xqgyVrhh6zMWjGgJ6DPtIz03bNiAuXPnIjk5GcnJyXj88cfx2WefqbI2s8hhwuDorCU1dmAhuCDb8vbu3RuzZ8/G7Nmz0bfvTykDgiCo0j6RsBziug2JTq3cbWhQWlmvPROtWrm6LA2syikYiYmJSExUpzYXa46FKbuzKmOFE3xyFvhkdRy+ft0Nn376aWzZskWVCa8LAWIqbtJ+HiNBGNj6TwiqGrLH48Hq1avx+uuvgxDSlvsDAF6vF16FrTLalkiA8VEoGu6s6xRwDhag334xCSzuqIu+4i0/qy0JyomjRy0JADCLfFTaRY30Cy1q4rTCcDziKutAFOaHhxuWkp4BOwquREu7EMLAlNsVnC26QniF1NygijsSQiDLMrxeL2RZhs32Uz6uzWZTNQ/bFmtCRXF0FTmOswoY0CMzKGeBflqZ+KKFogmGha3f+KC0sl57Jlq18h11pUFpZUmSsGzZMtx///144YUXcObMmcuuq9GeFwAIL8A24GeqjBVO2PrfCsKok0rm193wT3/6E6ZNm4Zhw4bh5Zdf1i6vVDAjoWYiQKInhNfauS8IG/gmA4Bu3brhjTfewNq1a1FYWIjvv/++7dqmTZuQn69OmDrPsRjWOweWKMpfLM62IcseE9Rn9dovhBB0yk1EZkpw6wxHbLEi+ldkgA1CyOlRS6KVWLOAqk7qVmw2MhxLMGFwEUQh8HuEHjVx2hPbfaiq4xmdhIG3BXx6DehrF8IwsPUdp9p44YCtZlJQ3Smam5tRVlaGLl26oLGxEbt27Wq79sMPP6h2Ggf4HNJ31kVX67HRNflAkJ309NPKJiQMmIRoqvVh7RS8VtZrz0StVg5Sgz7//PN4++230bt3b+zbtw/jxo277D3myy+/VGWNhDAwZZWCT4yeoq2s1QZrpz4B1cO5Hn4pblEUsX79ekyfPh2bN29GXV0dJk+ejDVr1qiev8iIlqjJxyKcgKTae4LOJ3nttdcu+6+ioqLtWrdu3fDqq6+qtVQQAJNHREcYDyHAfRMqIASYf9WKnvuFZQnum1Bx42+MEO69JfjcZj1qSbRiNnGoH981aqojTxhcFJQDB9CnJk4rjGDyvTybo8PBZintDT7IE3s97UJYDjFdB0WNmBPSCmApqgyqndX777+P9957r+3/7Q8Fzp8/j0ceeUS1dRJCUJgVj27F0VHrIzHOhHGDiiAKxn/2M6IZsZXRpJWnBq2V9dwzAHB3FGnl+ydUQOCD2y9vvfUWli5dinvuuQeLFy/GzJkzcc899+Dbb78F0LHDOigYFkkjfqneeAYnsXaqquMR2Q9rVFZWYuvWrW1/PnLkCNauXYu1a9eisbERw4cPx7PPPqvaoiSXA4dffQiesydVG9OIJI2YhtiKmxSHiOqF0+XBb1/5HLt/aAr1UjRldE0+pt5cFnSveL33S4vTgyWrt+HDLYdVG9OI9ChNwW/u6QVTEKfXocDh8uDvn+zHa2/vuvE3hzHZ9li8+NDAoKIKQoHscaP5+604sXp+qJeiKYw5FtnTF4M1WUO9FL+QJQmukw04suJRQFZevdmwsByyf/USOFtqwIXaQsWZC07U/+49tDg9oV6Kpvzu/v7onJ8YdL0CqpW1IXlEPWIqBlOtbDBuqcnH5JvLYA5SK1dVVWHjxo3guJ8+/9577+Hxxx/HSy+9hPr6+sv2k1IklwM/rnsFF3Z8otqYRsRc0B32Wx8NKmWnI4K6I2ZmZmL69Ol45513sGLFClVPGABfO6XU8Y8gkkOsTNmdFTsK9Mr3aUUUOMye3BNikF7EcMCeaMHUUcE7Cq6F1vvFLHK4b0IFEuMiNxfbYuIw664qRY4C3fJJL2ESOIwdWIiCzHjd5tQbhiGYM6U64CrI7dHbLoTjYS7oBktJL93mDAUpo2eAUVAETXe7MAz4hDTER3ixw8SBd4CNiQ/aUaC3XQDALHD41fiuus6pN7U9s1GUbQvaUXAtNNfKbDRo5TLFjgK990yrVo7krkhpSRZMGRW8owDwdQjZtm3bZX9XW1uLZ599FjNmzIDL5VK6zMtgBBOSR9aDjbHd+JvDFEa0IHXsg6o6CgA/Iwt69OiBr776StWJb4TkcuD0h3/EuS/f1nVePSC8iOz7XwYXqyxPasGCBdiwYQPGjBmDzZs3Y8eOHVi+fDmKinwFVq70cquB0+XBe5sasHTNN6qOawQIAZ5/cCAKMuKDDqkGQrNfPF4JO/afwm+Xfq7rvHox664q9OmarshRVVZWBpPJhKSkJIwdOxbjx49HZqa2rcFkWcbxU82YPv99eLwqhtQZhNtqSzBxSLEi51oo7AIAXsdFHPqv6ZBa1CsIZxSsnfog5ZYHFAmGUNlFcjtxZMWjcJ/SJt87lAjphciY/JSiF59Q2cXh8uCZ/7cJX38XeafYiXEmLJ0zVNGLDxA6rXzqg9dwfss/dZ1XD9TSyqHYM06XB/+7qQGvRKxWHoSCjDhFWvmNN96Aw+HA7bffftW1DRs2YMmSJVi5cqWSpV6F7PWgpWEnjv9pnqrjGoXUcQ/DUtILDK+uY9IvK+t98wN8HqDEm+4GFx95RcKSaqeCUSE0VNd8n0uIAofaXjkoy1eviJJRGN0/H1mpsYpufkBo9gvHMijJScCQ6mzd59aaqk6p6F2epjiiRc980lYIIUiIE3Hn8MgrEpaTFotJQ0sUR+GEwi4AwHACUkZN12z8UMFY4pA8arrik4VQ2YWwPOwT/jXyCh2zHOwT/lVxy7tQ2cUk+KK7lL5QG5FZd1eBV+EUOFRaOWnI5AjVyveoopVDsWdEgcOwXjnonBd5WvmWmgJkpcYo1srjxo27pqMAAPr27au6owDw1ccxZZYgpnyQ6mOHGnNhJSzF1ao7CoAg0xD0gnA8Uif8K6BS6wcjYM6rQExXdXKvzp8/f1kV14kTJ2Lu3Lmor6/Hl19+qVk+pChw+LfJ1bBGUMXXrNQYxSFVoaY1HcGeGHjlc6MSHyPgkTuVpR+0QgiBxWLB+PHj8Yc//AHvvvsu+vbti6VLl7b1jtcCk8BhzIBClOYmaDJ+KBB5FnOm9FRFYIfKLoTjYc7vBmtZf03GDw0EqWP+RVH6QdtIobILw4Cz2ZFQM0mT8UNF0tApYC02xc/lUNkF8D1jHvhZd83GDwUj++aiKEvd9AO9iUitnF+BmK6DVNHKodozosBh9pTI0srZ9lhMvrmzLlr5+PHjmozrS0eYFlEONtYa73v2q5x+0Ipfd0e9c+NbIQwLITkb9ltnRcQpg5heCPuk2aoVadE736c9sVYBv5teE3TVYCORmmDGczNrgu5+cCWh2i8AIPAM5s8cgITY8CgEdD2sJg7PzRwAi0YPJa3zSdsjCiyerO+LnLRrd2MIJziW4Ilf9kFqggUMo75DUk+7MIIJKaNnwJwXGR1FkkfdB1N2ZxAuuBZj10Nvu8T3HYvY7rWazaEn8X3GIrbbUDCC+vdlPe0i8Cx6drbj56PLNJtDT/qUp+MXY8pVe/EJqVZOyYb91siIyBEzimCfqJ5WvhI990ysVcAz0/tHjFZ+dkZ/1bTyjRg5cqRmYxNOQMbUZyKifgEjWpA+5WmQILuF+DWHP9+kVy/May5QEGHO64qUW2ZqNodMGlhWAAASQ0lEQVQe8MnZSL9rrqpenylTpmDv3r1X/f3AgQOxcOFCVFZWqjbXlQgci8zUGMyb1jesPfK2WBHzHxgAq5lX7cUnlPuFZRjExQiY/8AAxJjVf2HQC1Fg8cz9/ZGSYAanUpGg66XlVFZW3rBVnFJMAodnp9cgLSl8Iz8YAsyZ0hPFOTbVxE+o7cLwIuyTZkPMLNF0Hq1JHDIZMWU1qj1jjGCXpLp7Ye3UT9N5tCa2e62vXWeE2MUkcri5fz4mDS3WdB6t6Vacgll3VaraxSWkWpkXYc6rQMotMzSbQw/4lGyk3/mEqlo5lHtG4FhkpcZSrRwE69at02xswrBgLHHImPIMGFP4tlImvIj0u58EF5cChtUu2sOvAoeDBw/GX//6V6Sm+kI2Xn/9dSxcuBBLly5FeXm5LkVdJJcDF/dsxMl/vBx2bZUEez7S754HRjSDRIDXtz1OlxffH27CE8u+gNPlDfVyAiLZZvKdwseZVL2JG2G/uD1enGxqweyX1+PMBaemc6mNxcThmfv6IzstBiIfOeF7gO/k6XyzG3MWr8fhxvAqrMexBLOn9ET34hRVu4UYBcnVguP//Ts4Du0M9VICJnHoVMRV1mkWghhKJLcTJ9/8L1zcuT7USwmY2Mo6X951mLR8CwSHy4PX39+Lv7z3XaiXEjBVnVIxZ2pP1dvwGuHZL7kcuLj7C5x8czHVygbC6fJi76EmzF32BZzu8NLKKTYz5j8wALZYUTeHh9frxZIlSzBzprYHxbLHBffZH3Hstd/Ce/GspnOpDREtyLh7HvikLE3qFLTHL6uHKje+PYxggrW0N+yTZodVXpaYVYqMKU+BES263/y0yvdpjyiwKMpOwHMzasIqLysj2YoXHx6MRJUdBYAx9gvPsUhJMOPFhwchJUG70CS1ibMKeP7BgchJi404RwEAMAyDWIuA//iXgSgMo5aKIs9iXn1fdC+JTEcBADCCGWm3PwZzoXYRWepDkDx6RsQ6CgDfiWnK6OmIrRoR6qUEhK3fBCQNnRqRjgLAFyk1cUgxfjmmPNRLCYia7hn4tQaOAsAYz35GMMHaqQ/sE/8tzLRyp5BpZT0QBRbF2Ql4bmY4auVBSNDRUQD4nAWLFy/WfB7CCeBtqci8dwHYuGTN51MLxhKHzJ8/Cz5Ze0cB4GdkwYQJE/DYY4+hqqrqsr//5JNP8Oijj+LixYttFfi1RnI54Tp1GI3/8zw8Z07oMmewxFYO93U+CJFY0LONj8vjRdM5J/7P7zdh3xFje+f6lKfh4TsqYRI4TcKpjLRfvF4JzU4PFvzxS3y1x9gtrzrlJeDXU3oh1iqoUjjvSiRJwooVK7B161YUFxfj3nvvhc32U75afX09Xn31VdXnvRayLMPh8uKVNdvx/uZDuswZLFmpMZgztSfSkqyKO1JcCyPZBfCdZJ9ZvxpnNqwx9MkcG2ND6tiHIGYUa+IoMJxdXA5c+OYjnHrvD5A92tXjUQoRzEgeMQ3W0t5RYReH04Pt3/+IRX/5CucuGtcuHEtwx/BOGDugQNXUg/YY6dkvuZ1wnTzk08pnG3WZMzgIYquGI2noFM20spH2jMvtRdP5cNHK6Xj4jh6aaeVf//rXHV7zer34xz/+gV27dqk+77WQJS8kZzMa17yIlgPbbvyBECJmlcI+YRZYSywIq0+6sV/OglD0wrwesuSF7HHj9Id/xLkv/wnAWP3LubgUpI5/GEJqbkhPe44dO4b09HTd5pNlGS63hH+s34dV/9xtuL7ysRYeMyd1R2Vpqqano0bbL4AvZHTDN8ewZPV2tDg9us59IwSOwc9v6YJhvXI0E3EAsGDBAmzYsAFjxozB5s2bsWPHDixfvhxFRUUAfLmLW7du1Wz+a9Hi9OC7hia88KetOH3OoevcN4IhwISbinH7sBLwHAOG0eZUwYh2kVwOeM424sTq/4D71BFd5/aHmPKBSB5RD8LxIBrlKRrSLm4npJYLOLHmeTgP79F1bn8w51cgdezDIIJJs9MeI9rF7fbC5ZGw6C9fYcM3x3Sd2x/yM+IwZ2pPJMaZNIkoaMVoz/42rfzBazi35R0YTivHpyB1/CMQUnI01cpG2zPhoJUf+FkP9ChN0XS/dO3aFRMnTkR8/NVRlq3FQvVyFrTN63bi4u4v8OM/l0F2teg6940gnIDEoZN9xXJ1PoT2y1lgVCSXA66TDWhc8wI8Z41xahpbWYekoVNBWB6EDV31U73yfa6Fw+VB0zknnlu52TCe095d0vDQ7T0gCKxulVyNhsvtRYvTg/9YtQVff2eM/VKam4A5U3oixsJr+lACjJFPei08Xgluj4Qlq7fhwy2HdZ//WmSmxGD2lGqkJVk1b5FkVLvIkgTZ60bTp3/D2S/WGiLKgLXakDL2X2DKLNXcEW1UuwA+QXd+2/s4/f5rhogyIIIJycN/CWvnfpqLOCPbxeHy4Ks9J/Gff/0K55vdIVlDeziW4I66Thg7sBACz+iSBmBEol0rG3XPtGrlZ1duxn4jaeU7ekDgtdfKt956K6ZPn46hQ4dedc3pdKJbt27YvXu3pmu4FpLbBdnlQOPaF9FyYLvu818LMbME9gmzwJhjQhKtrooKPH78ONLS0tQYKiAYwQQxrRBZ9Qtx6oPXcH7ruyETdFx8ClLHPgTBnmeI3NHWfJ9QOAtMAoe0JBbPzRyAtZ/uw5/f2QOPNzR2ibXwmDGxO6o6p2r+MuovodovAs9C4Fk89vNe+Hz7Ubyy5hs0O0ITZSDyLKaM6ozhvXM1jSZoz7XySW02G+rr6/HSSy+FTEhyLAOOZXD/rd0wpDoHL/45dFEGDEMwblAh7qwr1TSaoD1GtQthGBBGRELNRMSWD8CJ/3k+pFEGMV0GInnkNBBO0CyaoD1GtQvgq2MQ220orCW9Qx5lYM6rQMq4B8EIFl1yR41sF5PAoapzKl79TS0W/ffX+OLb0EUZFGTGY/bkaiTGmwzTts4QWvn9lTj/1f+GViuP0zfy1qh7plUrzzeAVo6zCpgxsRsqO+mnlSdMmNBhpwqO40Ly/gLAdx/nBdgnzcHFXRvw47srIDubQ7IWwglIGHI34rrXhrT+jSqRBaH0ZLciuVogOVvQ9NlqXNj2gW6nDUJqLmz9J8JSUg1CWF2jCYyU79MRDpcHXq+MNR99j7c+O4ALLfqcNtgTLbj1piIMqc4BYWCoaAIj7Ben2wtZlvHOFwex5qPvceqsPi+n8TECxgwoxOiafDAM0dWBY6R80o7weCRIsozPth/FX9/7TreOCWaRQ13vXEwaWgyBZzWPJmhPONjFF2XggePgt2j69K9wHr26Za0mMBxiutQgYeDPwFriwAj6FSsNB7sAl3KzGw+i6ZO/oGX/1zrNSmApqUbCgNvAJ6brekAQLnZxOD348awDf3pnNz7bfhSSpE8Qa5eCJNw5vBSluYngWUa3Nm/+YIRnv+RyQHI2h0Yr10yCpbhKd60cDnvG4fTAI0lY89E+vPXZAVykWtkQSG4XIEs49/V7OPvFWnjPn9ZlXsYSh/heoxFffTPAEDB8aA+hVXEW6J0bfz0kVwsgA+e/+RDntr4L90n1i4cRToC1tDfieo2CkJIDwnIgjP4bzIj5Ph3R2lbx82+OYt3nB7D7hybV52AZgspOqbilpgBlBUlgCNGkUJ5SjLRf3B4vZBn4eu9JvLX+AL7+rhFqazpCgC75Sbi5fz56d0mDDGhSKO9GGC2f9Hp4vBK8Xhn7jpzBPz7dj407jsPtUf/EoTAzHiP65mFwZRYAhKTTQTjZRZYkX6ulMydwbtNbuLDrc03yGrmEdMR1H4rYHsNAWFZXJ0Er4WQXwPfs9zafx7nN63D+248hNZ9TfQ42JgExFTchvnokGMEMRqR2uRHNDjfcHglvb/gB/7vxIBqb1N8vVjOPQT0yMWZAIRLjTTAJrCFTDoz07G/Tyts/xLmvIlsrh9OeadPK249i3QbttHJVZztG9883tFY2ErLHDRkyWg5sx7kv3/alJ6genUNgyilDXNUIWIqrAUCXaDV/UOwsCGVu/PWQvR7IXg8850/j4u4NcB79Hs5j++A9fyrgsQjLQ0jNgZBeCHNuV1iKqwBJColQaI9R832uhyRJcLolNDvc+PTro9jTcBr7Dp3FsVMXAx6LYQhy7LEozLKhS34i+lVkgBDAYtKnOmgwGHa/yDJanB5Ikoz1245i54HT2Hf4DA43ng/YeUAIkJEcg6KseJTmJmBA90wIPKtZRd1Ip9nhBiEEG3ccwzffn8K+I2dw8Ni5oIoipSaYUZRlQ0lOAvp3y4AtRgTPMWB1bIkUKUiuFoCwaDmwDS0HtsF5bD9cJw4EdVLHWm0Q0gsgphfBWtobfGI6CGFAOOPey4yK5HIADAPnke/QvHcrnMf3wXl8f1BhpIwpBmJaAYT0QliLqyGkFwCycQRcOOG61Fu+4fh5fPHtMew9dAbfHz4TVAcFk8CiIDMeRVk2VJamomtRMrySrGtEVKAY9tl/mVb+HM6j+5RpZXsuhLQCmPO6wlJkDK0cjnglCS6VtDLLEGRf0srlBYno29X4WtmoyLIM2dUCWZJwcdfncBzeDeex/b4UxYCdBwR8YjqE9AKYskp9NW84EYQXQXRIAQ0Exc4Cl8uFbt26GeYE+1rIkheSy+HL85QkuBoPoqVhJ1wnDkByOSB7XJA9bl+OKieAcDy4uCSYsjtDzCgBF5cEye0CYVgwgnF6Jq9atQp2ux21tbVXXTPqg6k9kiTD4fKAIQSEITh0/Dx2HjiF7w6dwcUWN1weL1xu7yWvJwuBZ2CLEdE5LxGd8hKRlmSF2+MFIcTQIqE9YbFfZJ9dIBNwHMHRHy9i14HT2H2wCecuOOHySG3Cj+cZiByLGAuPkpwElOUnISs1Bl5JhizLYeUgCFU+aSA4nB5IsgyBZ9F4uhl7DjZh54FTOH3eCZfbt18kWYbAseA5BlYzj8LMeHQpSEJOWhwIAbxen6imdlEPye2E7PWA4UV4LjTBefR7OBp2wnPuJGS37/kiS5625wvDmyCk5sKUUwbBngfC8ZA9bjCCKSQnb8EQDnaRPW5IHhcYXoS35Txcx/ajpWEH3E3HLtnFBdnr8RVZ43gQXoSQlAlTThnEtAIwJgskt8sn4LjweMaEg108XglOlxcCz8Dh9GL/0bP4dv8pNBw/B6fLC6fbC7dHAscyEHgGIs/CnmhBeUEyirJtsMWKcLq84DkGQgii1IIhLJ79EaqVb4TR90w0auVwwOc48KXwEpaDu+kYHId2w3HkO0jN5y49f5y+65wAhhPAmGMgZhTDlN0JfFImIEmALIEIJhBiLAdBe/xyFoRDbnygyJIXstvZYXENwnBhdbOLFFpvirIMyJABEAAyIPtOrBmGMfzNLiL3iyzD4fJCkuRLzZdkEJC2RkwMA5j48HkBvRZGyCcNBofT43POXLKGzy4++xDiO4XTo1ChVoSrXVodCNeCgIAIYtg4Bq5FuNql1YFwxd/C96whYHhet97VWhCudml1ILQ+931P/p++DgfHQEQ++6NAK4fjnokErRyJyLIM2e2ALF07yoAQ5pJjILy0sl+/SW+++eZ1c+PDEcKwIKIl1MugXAHDkLAPjYrI/RIFHul169aFeglBEYo6A3oSrnZheBEIYfVirQlXuxCOBxvB6R3haheOZcCZw9epCUTosz8KtHI47plI0MqRCCEEJAQ1hrTGL5VZUlKCmpqaDnPjX331VdUXRqGEK3S/hB9erxerV682dNpONELtYkyoXYwJtUtooc/+8IPuGQrlxvjlxjVqL0wKxYjQ/RJ+eL1eLF68ONTLoFwBtYsxoXYxJtQuoYU++8MPumcolBujSutECoVCMTqRmE8aCVC7GBNqF2NC7UKhBAbdMxSKMiI72ZVCoVAuEYn5pJEAtYsxoXYxJtQuFEpg0D1DoSiDOgsoFEpUQPNJjQm1izGhdjEm1C4USmDQPUOhKIOdO3fu3FAvgkKhULTG4/HAarWioKDgqmuEEDAMg169eoVgZdENtYsxoXYxJtQuFEpg0D1DoSiD1iygUCgUCoVCoVAoFAqFchnh3dSWQqFQKBQKhUKhUCgUiupQZwGFQqFQKBQKhUKhUCiUy6DOAgqFQqFQKBQKhUKhUCiXQZ0FFAqFQqFQKBQKhUKhUC6DOgsoFAqFQqFQKBQKhUKhXAZ1FlAoFAqFQqFQKBQKhUK5DOosoFAoFAqFQqFQKBQKhXIZ/x8Eqg2dPlv+WQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col+' top 5',figsize=(16,4))\n", + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col+' top 5',figsize=(18,2),transpose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Observations**\n", + "1. The top-5 AvSigVersion of train and test are completely different and they have no overlap. \n", + "2. For example, `1.277.1102.0` can only be found in test data but not in train data. Similarly, `1.251.42.0` can only be found in train data but not in test data.\n", + "3. the top 5 of train are 1.251.x ~ 1.275.x and 4 of the top 5 of test is above 1.277.x. This may indicate that higher version number is from more recent observations. \n", + "4. we could use AvSigVersion as a timestamp to split data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_in_test ratio \u001b[31m0.966\u001b[0m test_in_train ratio \u001b[31m0.154\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvMAAAEECAYAAAClervrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3hUZdrH8e+UZJJMCgEC0ksCAQxVQFAX1qCiApsAsqCI+7KKu+xaVmXBxQaoICAgoKKIIqgoIr3ZAEWko9J7CQkhAQIhbeo55/0jEo20lEnOlPtzXV6GmTPP+SWQOfc85ykGTdM0hBBCCCGEED7HqHcAIYQQQgghRNlIMS+EEEIIIYSPkmJeCCGEEEIIHyXFvBBCCCGEED5KinkhhBBCCCF8lBTzQgghhBBC+Cgp5oUQooKlpaURHx/P9u3b9Y5SKsOGDePhhx/WO4YQQohrMMg680KIQJeZmUm3bt2oUqUK3333HWazuVSvX7NmDbNmzeLo0aM4nU5iYmJo1aoVo0ePJjw8HEVROH/+PFWqVCEoKOi67TmdTrp27Urv3r0ZPnz4Zc/v2rWLfv36MXv2bG655ZZSZS2N3NxcVFUlKiqqws4hhBCifKRnXggR8BYsWMDtt99OZGQk69atK9VrN23axOOPP86tt97KvHnzWLZsGS+++CLh4eE4nU4ATCYTMTExJSrkAYKDg0lOTmbJkiW4XK7Lnv/888+pX78+nTt3LlXW37tSu38UEREhhbwQQng5KeaFEAFNVVUWLlxI7969SU5OZv78+UXPTZkyhe7du1/2mpdeeon7778fgLVr19KsWTMee+wx4uLiqF+/Pn/6058YPXo0VatWBa48zGbfvn389a9/JSEhgbvuuovVq1eTmJjI22+/DUD//v05f/48a9asKXbu/Px8Vq5cSb9+/TAYDACcPXuW4cOH06lTJ9q2bcv9999f7FwbN24kPj6e77//ngEDBtCyZUsWL15MTk4OI0aM4JZbbiEhIYE///nPjB8/vuh1fxxmo2kaM2fOJDExkYSEBO644w4++uijYvm6dOnCm2++ycsvv0yHDh245ZZbGD9+PIqilO4vRgghRIlIMS+ECGjr16/H6XTSpUsXkpKS2Lx5M2lpaQAkJydz4sQJdu7cWXS80+lk9erVJCcnAxATE8PJkyfZtWtXic9ps9l49NFHqVq1Kl988QUTJkxgzpw5ZGVlFR3TsGFDOnbsyIIFC4q9duXKlbhcLvr27VvU1oMPPojD4WDWrFksWbKEW2+9lcGDB3P8+PFirx0/fjz/+Mc/WLVqFV27dmXy5MkcPHiQGTNm8NVXXzFp0iQaN2581dxz587lrbfeYujQoaxYsYLBgwczfvx4Fi9eXOy4OXPmUKtWLRYsWMBzzz3HnDlzWLZsWYl/PkIIIUpOinkhRECbP38+vXr1wmw2U7NmTW6++eaiArpRo0a0bt2aJUuWFB2/du1a7HY799xzDwCDBg2iffv29OvXj9tuu42hQ4cyZ84cLly4cNVzLl++nPz8fCZOnEizZs1o06YNr776Kna7vdhxAwYM4Mcffyz6cAGFQ4ISExOpVq0aACtWrMDpdDJ58mQSEhJo0KABjz32GK1ateLzzz8v1t6//vUvbr/9durVq0fNmjVJT0/nxhtvpHXr1tSpU4ebbrqJfv36XTX3e++9x9/+9jf69etHw4YNGThwIP379+edd94pdtzNN9/MI488QsOGDenRowc333wzGzduvNZfgxBCiDKSYl4IEbAyMzP5/vvv6d27d9FjvXv3ZuHChbjdbqCwd37VqlVFY8yXLFlCYmIikZGRAISGhvLOO++wZs0ann76aWrWrMnMmTO5++67OXr06BXPe+TIERo3bkxERETRY7GxsUVtXnLHHXcQHR3NF198AcCBAwfYtWsXAwYMKDpm9+7dZGZm0r59e9q2bVv03y+//MKJEyeKtdeqVatifx44cCArV66kV69evPrqq6xfv56rrYmQnZ3N2bNnad++fbHHO3TowMmTJ4vmBwA0a9as2DE1atQodtdBCCGE55RuyQYhhPAjCxYsQFGUYsU8gKIorFu3jjvvvJMePXowduxYvv/+e9q1a8eGDRt46623Lmurbt261K1blz59+vDUU0/RvXt3Zs2axbhx46547kvj3a/l0kTYhQsX8vjjj7NgwYLLJr6qqkqTJk2YNm3aZa8PDQ295p+7du3KunXr2LBhA1u3bmXYsGE0b96cDz74AJPJdN1818r9ewaDAVVVy9yeEEKIq5NiXggRkC5NfP3nP/9Jjx49ij337rvvMn/+fO68806ioqJITExk6dKlpKenExUVxW233XbNtqOiooiJiblqb3RcXBwLFiwg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cZBVFZKqQhZ8p09ERJHP5zchZAmH607jnc3V+PDLGhw74bM7VodIEpCfHY+RxRmYOKIH4jwqVEWGEBwvGWlY5h3MMgxIsgxfTS1OfLYFjVXb0LhjB6zmyL/lp2dmIn5AfyQOHwZvcX/ILhckReF8eCIicjR/wIQkSag74cN7fzmMqn312HXwBIyAZXe0i0qI1VBSkIIrijMwvG86ZFmCIiS4FF5ci2Qs891EyLJgGQZkVUWgoQGntn6Jk198icbt2xE4bvPmF5IEd1YmvMXFSBw+DPHF/SB9Xdo5F56IiLor0wrCH7CgqQJHG1qwdfcxbN1zHF/tb0BDo2FrNs0lkJfpRX52PPrmJWJg7xQkxGkwrSCX0DgMy3w3FQqFYPl8kBUFlt8P42gdfIcPo+VgNYyaWhi1Z/5YvvD9MFFiY6FnZcKdnQVPbg5ievWCOzsbalIiQtaZKxIs70REFK2CwRB8ARMuISPQaqG2oQXVtU04UHMKfz3WjCPHTqO2vgWmFQzL+SQJiI/RkByvIyleR256HPr3TELvnAQkxGnwBywIIUFXeVfcyVjmo0zQNBEMBAAAsqoi1NoKf309rOYWWIYBy2fA8rXAavHBbG6GZRgI+v2QZBmypkHWNAi3Gy5vHFxeLxRvHJSYGLi88ZAUcea1ZRlC0yDJXFdHRER0Ma2mhUBrELIEqC6BZqMVp32taGoO4NTpABqb/TjtM9HsC8AIWGeWv8gyFEWCS5GhKuLM3y6BRK+OlAQ3EmJVxLhdMK0QTPPMmwPVJXPJTDfEMk8XFLIsBC0LkiRBEoIFnYiIyCbBUAiWFYQkSZAlCbLMSW/EMk9ERERE5Fi8zEpERERE5FAs80REREREDsUyT0RERETkUCzzREREREQOxTJPRERERORQLPNERERERA7FMk9ERERE5FAs80REREREDsUyT0RERETkUCzzREREREQOxTJPRERERORQLPNERERERA7FMk9ERERE5FAs80REREREDsUyT0RERETkUCzzREREREQOxTJPRERERORQLPNERERERA7FMk9ERERE5FAs80REREREDsUyT0RERETkUCzzREREREQOxTJPRERERORQLPNERERERA7FMk9ERERE5FAs80REREREDsUyT0RERETkUP8P7QjMb6BSt9wAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "overlap_piechart(train_count,test_count,col)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**We also look at overall token counts instead of just top-5 tokens**\n", + "1. for test data, there are only 15.3% of samples whose AvSigVersion present in train data. This indicates that most of test data are with new AvSigVersions.\n", + "2. for train data, there are 97.5% samples whose AvSigVersion present in test data. This indicates the 15.3% test data (the red slice of the left pie chart) actually contain most of the AvSigVersions of train. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The similar analysis is also done to EngineVersion and AppVersion**" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==============Train==============\n", + "# of unique values: 68, top5 {'1.1.15000.2': 265218, '1.1.15200.1': 212408, '1.1.14600.4': 160585, '1.1.14800.3': 136476, '1.1.15300.6': 120295}, top5 percentage: \u001b[31m0.1003\u001b[0m\n", + "==============Test==============\n", + "# of unique values: 69, top5 {'1.1.15300.6': 3101305, '1.1.15400.4': 2106236, '1.1.15200.1': 366085, '1.1.15100.1': 158036, '1.1.14600.4': 138514}, top5 percentage: \u001b[31m0.7475\u001b[0m\n", + "CPU times: user 708 ms, sys: 232 ms, total: 940 ms\n", + "Wall time: 941 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "col = 'EngineVersion'\n", + "k = 5\n", + "print(\"==============Train==============\")\n", + "train_count,train_count_topk = get_topk_token_count(train[col].data,k)\n", + "print(\"==============Test==============\")\n", + "test_count,test_count_topk = get_topk_token_count(test[col].data,k)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyoAAAEECAYAAADH8MCoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeZxN9f/A8de9d/Z9NYPsfsguYwmhlMrImhQtJBWRLSqiUiqVCKVsSXwxFUMI2ZeQrexkG2PG7JuZufs5vz+GmzErhnvHvJ+Phwdz3p97zvsenM993/M5n49GVVUVIYQQQgghhHAgWnsnIIQQQgghhBA3kkJFCCGEEEII4XCkUBFCCCGEEEI4HClUhBBCCCGEEA5HChUhhBBCCCGEw5FCRQghhBBCCOFwpFARQggHtXz5curWrWvvNEqcxWKhdu3arFmzxt6pCCGEcGAaWUdFCCFuzjvvvMOKFSvybPfw8ODQoUMldhyDwUBmZiZBQUElts8//viDIUOGsGbNGmrWrJkn/sEHH7Bt2zY2bdqEVnvnvstKTEzEx8cHV1fXO3YMIYQQpZuTvRMQQojSKCwsjGnTpuXaVtIf7N3c3HBzcyvRfT788MMEBwcTERHB2LFjc8X0ej2rV6+mX79+t/xezGYzzs7ORbYLDg6+pf0LIYQoO2TolxBC3AJnZ2eCg4Nz/QoMDATghRdeYNy4cXzzzTe0bt2a5s2bM2bMGLKysmyvVxSFr776ipYtW9KkSRNGjBjBggULcg31unHo17WfDxw4QPfu3WnUqBE9evTg8OHDuXKLiopi6NChhIWF0axZM15++WVOnToFgJOTEz179mTlypWYTKZcr/v999/Jzs6mV69etm07duygd+/eNGzYkIceeoixY8eSlpZmi7/11lsMGDCABQsW8PDDD9OgQQPMZjP79u3j2WefpUmTJjzwwAN07dqVP//8E8h/6Fd8fDzDhg0jLCyMhg0b8sILL3D8+HFb/M8//6R27drs3r2b5557joYNGxIeHs6OHTtu/i9PCCFEqSCFihBC3AHr168nPT2dhQsX8tVXX7F161bmzJlji//444/89NNPtmFkDRs25Ntvvy1yv9cKnHHjxrF8+XICAgIYPnw4FosFgKSkJPr06UNAQACLFy9m2bJlVKtWjRdffJGUlBQAevXqRUZGBhs2bMi174iICNq1a0dISAgAO3fuZMiQIXTp0oXffvuNb775hqioKN58881crzt48CAHDx5k1qxZREZGoqoqr7/+Ok2aNCEyMpLly5fzxhtvFDjMS1VVBg0axMWLF5k9ezYRERH4+/vTv3//XEURwOTJk3njjTdYtWoV9erVY8SIEVy5cqXI8yaEEKL0kUJFCCFuwV9//UWTJk1y/Xr99ddt8QoVKjB27Fhq1KhBmzZtePLJJ9m9e7ctPn/+fF566SW6detG1apV6d+/P61bty7yuKqqMnbsWMLCwqhRowZDhw4lJiaGixcvArBkyRIqVqzIhx9+SO3atalevTrvvfce3t7erFq1CoD77ruP1q1bExERYdvv2bNnOXToEL1797Zt++abb+jXrx99+/alSpUqNGzYkM8++4y9e/dy+vRpWztnZ2cmT55MnTp1qFOnDpmZmWRmZtKhQweqVKlC1apV6dixI02bNs33Pe3cuZNjx44xZcoUHnjgAerUqcPnn3+OTqdj6dKludoOHTqUNm3aULVqVUaNGsWVK1c4evRokedNCCFE6SPPqAghxC1o2LAhkydPzrXt+udJ6tSpkytWrlw5du7cCcCVK1dISEigcePGudo0btyY9evXF3pcjUaTa9/lypUDIDk5merVq3PkyBGOHTtGkyZNcr3OYDAQFRVl+7l3794MHTqUqKgoqlSpQkREBBUqVKBt27a2NkePHuXo0aMsXLgwTx5RUVHUqlULgJo1a+Lu7m6LBQQE0KNHD/r370/Lli1p1qwZHTt2pGrVqvm+pzNnzhAUFET16tVt29zc3GjQoAH//vtvrrb3339/nveelJSU/8kSQghRqkmhIoQQt8DNzY0qVaoUGL/xgXKNRsONkyxqNJqbPq5Wq0Wn0+XZh6Iott9btmzJhAkT8rzW29vb9ueHH36YoKAgIiIiGDZsGJGRkbzwwgu5HqK/NiSrc+fOefZ1/Uxk1xcp13z66af069ePXbt2sWvXLqZPn87777+f6/mXW3H9eb3xvQshhLi3SKEihBB3mbe3N+XKlePQoUO0a9fOtv2ff/657X3Xr1+fFStWEBoaWujUv9ceqv/555+pVasWV65cyVNE1KtXjzNnzhRakBWmdu3a1K5dm5dffplx48YRERGRb6FSs2ZNkpKSOHfunO2uisFg4MiRI7z00ku3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col,figsize=(16,4))\n", + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col,figsize=(18,2),transpose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_in_test ratio \u001b[31m1.000\u001b[0m test_in_train ratio \u001b[31m0.653\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "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s9mMo0ePYvjw4Q5dm4jI27CHnIi8js1mw6VLl276KumxDCNHjsTnn3+O9evX49y5c1i6dCl27Njh0Kz59Z544gkoioLnnnsO+/fvR1JSEvbv34958+bh4MGDRR47aNAgZGZm4q233iqymPOasWPH4tdff8XMmTNx8uRJJCQk4I8//sCrr7560w4t14uPj8ecOXNw4MABJCcnFy76LG7fcwDo2rUrmjdvjvHjx+PgwYM4deoUJk6cCEVRivS0ExHRrXGGnIi8zv79+9G1a9ebbr9+4ebtDB8+HBkZGXjrrbdgtVpx7733YsSIEfjwww/LlKtatWpYvnw55s6di9GjRyM3NxfVq1dH27Ztb9r7+9rizmtbG96oc+fO+Oyzz/Dee+/h22+/haZpqF27Nrp27VqkbeZG/v7+iI+Px9q1a5GZmYmgoCD06NEDEydOLPbxkiRh8eLFmD59OkaNGgWbzYbIyEh8+umnqFKlSpl+HkRE3oIndRIROcGrr76KU6dOYfXq1aKjEBGRm+EMORFRKV28eBG///47OnbsCFmWsXnzZqxbtw7//e9/RUcjIiI3xBlyIqJSSk9Px7hx43Dq1ClYLBbUr18fw4YNw6OPPio6GhERuSEW5EREREREAnGXFSIiIiIigViQExEREREJxIKciIiIiEggFuRERERERAKxICciIiIiEogFORERERGRQCzIiYiIiIgEYkFORERERCQQC3IiIiIiIoFYkBMRERERCcSCnIiIiIhIIBbkREREREQCsSAnIiIiIhKIBTkRERERkUAsyImIiIiIBGJBTkREREQkEAtyIiIiIiKBWJATEREREQnEgpyIiIiISCC96ADk/mw2GxITE1FQYBYdxev4+vqgXr16MBgMoqMQERGRgyRN0zTRIci9xcfHQ683ISCgMiRJEh3Ha2iahpycLCiKBY0aNRIdh4iIiBzElhUqs4ICM4txASRJQqVKlfnJBBERkZtjQU5OwWJcDP7ciYiI3B8LciIiIiIigbiok5wu0F8PndHk9HEVqwXZeXanjwsAKSkp2Lt3F/r3H1js/Vu3/oHDhw9izJhxpRr3hx/Wo1WrSNSvH+JwNmeMQURERK6LBTk5nc5oQvxbxRe2ZdHotVVAORXkFy6kYO3a1bcsyLt1645u3bqXetwff/weVapUKVMx7YwxiIiIyHWxZYU8TqdO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b+S9/Tij4x7diZA26enxtMqKiIiIdKqrV1mRU9PQsImxY6uyXYZ0MQ1nioiIyHELR/0E/F2//nQynaKtpX9tfifSQYFcREREjlvAb3P9j+7o8vP++IbFtHHsQD5nziyWLv0OweDx7w65Zs37fPDBJi6//IqTqu3b315MRcVwpk698qSOFzkWBXIRERHpNZ577ocnfMyaNe+zcuXyTgN5JpPBd5Q5UHPndv0bEJGDKZCLiIhIr1FTczZvvLGCcDhMbe00rr56Ou+88zaNjY3Mnj2HmTNnHfL4PXt2s3TpElpbW5gzZxbV1Wdzzz33UVNzNrfeOpc331xBTc0FTJkylYULFxCPJ0ilktTWXsesWbMBePjheYwZM4aZM2exdOkSPvhgEy0tLTQ0bGXQoME8+ujXCQa1g6WcPAVyERER6bUSiQRPP/1dGhoamD17JtOmXUM4fGCFlby8fG677XZWrlzOggULDzk2EAjy7LPPA9Da2sqiRUuwbZu2tjZuuWUO55//CSoqhn/smn/5y3s8++zzRKNR7rrri/ziF69TW3td9z5R6dMUyEVERKTX6ujrLisrIycnl+3btzFsWMVxHTtt2vT9f04kEjz22KPU16/FMAwaG3dQX7/2iIG8puYT5OTkADB27Di2bt3SBc9E+jPt2iIiIiK9lm0fWPHFNE0c5+gbCB0sFDowkr5kyZMUFhbx3e++wPPP/4iqqnEkk8lOrhk46WuKHIkCuYiIiPRpkUiElpaWoz6mubmZkpISfD4f69bVs2rVu6epOhG1rIiIiMgJSKZT/PiGxd1y3u4yceJ5vPDCc9x00w2cddY53HPPfR97zM03f5758x/i1VdfZsiQoVRXn9Vt9YgcTjt1ioiISKe0U2fPop06+ya1rIiIiIiIZJECuYiIiIhIFimQi4iIyFGpu7Vn0OvQdymQi4iISKdCoSDNzXsUBrPM8zyam/cQCgWzXYp0A03qFBERkU6l02k2b95MPJ7Idin9XigUpLy8HL/fn+1SpIspkIuIiIiIZJFaVkREREREskiBXEREREQkixTIRURERESySIFcRERERCSLFMhFRERERLJIgVxEREREJIsUyEVEREREskiBXEREREQkixTIRURERESySIFcRERERCSLFMhFRERERLLo/wGP25y8/TQ2vAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "overlap_piechart(train_count,test_count,col)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==============Train==============\n", + "# of unique values: 104, top5 {'4.18.1806.18062': 850929, '4.12.16299.15': 359871, '4.10.209.0': 272455, '4.13.17134.1': 257270, '4.16.17656.18052': 235032}, top5 percentage: \u001b[31m0.2214\u001b[0m\n", + "==============Test==============\n", + "# of unique values: 118, top5 {'4.18.1809.2': 2738721, '4.18.1810.5': 2129928, '4.12.16299.15': 267102, '4.13.17134.1': 231117, '4.8.10240.17443': 193085}, top5 percentage: \u001b[31m0.7080\u001b[0m\n", + "CPU times: user 572 ms, sys: 208 ms, total: 780 ms\n", + "Wall time: 781 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "col = 'AppVersion'\n", + "k = 5\n", + "print(\"==============Train==============\")\n", + "train_count,train_count_topk = get_topk_token_count(train[col].data,k)\n", + "print(\"==============Test==============\")\n", + "test_count,test_count_topk = get_topk_token_count(test[col].data,k)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col,figsize=(16,4))\n", + "draw.pie_chart([train_count_topk,test_count_topk],['train','test'],title=col,figsize=(18,2),transpose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_in_test ratio \u001b[31m0.999\u001b[0m test_in_train ratio \u001b[31m0.668\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAAEECAYAAACPykpEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeVhV5doG8HvtkVnBeUQERXHAOTXTo54yS8UxS7OysrJsOplNfk6VVqamlpalecwscy6zYzlliorzjLMIIqBMMuxxrfX9QZI4wmbDu4f7d1104R7WuiFxP/vlWc8rqaqqgoiIiIiIhNGIDkBERERE5O1YlBMRERERCcainIiIiIhIMBblRERERESCsSgnIiIiIhKMRTkRERERkWAsyomIvNyMGTPw4IMPio5BROTVWJQTEd1BamoqmjZtik6dOsFutzv9+H369MGrr75623NHRUVh2bJlTj/v9Z577jksWbKkTM9BRER3xqKciOgOli1bhq5duyIoKAibN292+vEHDx6MjRs3IiMj46b7Vq5cCR8fHzz88MMOH99qtd71Mf7+/ggJCXH4HEREVHosyomIbkNRFKxYsQL9+vVD3759sXTp0iL3d+vWDTNmzMB7772HVq1a4Z577sH06dOhKEqxH9OnTx/odDqsWrWqyLFVVcXy5cvRu3dv+Pn5AQByc3Px/vvvo1OnToiOjkb//v2xYcOGwuckJCQgMjISa9euxTPPPIPo6Gh88cUXsFqt+PDDD3HfffcVrvq/8cYbhc+7VfvKihUr8OCDD6Jp06bo0qULZs6cCVmWC+9/7LHHMG7cOHz++efo2LEj2rVrh3feeQf5+fml/K4TEXknFuVERLexdetWWK1WdO7cGTExMdi5cyeSkpKKPOa7775D1apVsXz5crzzzjtYtGgRvvvuu2I/JjAwED179rypRSU2NhZJSUkYPHgwgIIi/fnnn8epU6cwc+ZMrF27FoMGDcJrr72GuLi4Is+dOnUq+vXrV/iY//73v/jjjz8wbdo0/P7775gzZw6aN29+2697w4YNGDt2LAYMGIBffvkFb775Jr777jvMnTu3yOPWrVuHvLw8LF68GJ9++in++OMPLFiwoGTfZCIiAgDoRAcgInJVS5cuRe/evaHT6VCtWjXcc889WLZsGV5//fXCxzRq1Kiw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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "overlap_piechart(train_count,test_count,col)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 4. Conclusions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. I'm going to try to use **AvSigVersion** to split train data into two parts: local train data and local validation data, which mimics the difference between train data and test data.\n", + "2. Specifically, most of the local validation data will be with unseen AvSigVersion numbers w.r.t local train data. but it also contains a small subset that with all AvSigVersions from train data.\n", + "3. I'm going to run exist models with this split and record their CV AUC score. If the assumption is correct, we should see smaller gap between CV and LB and more consistent patterns between CV and LB." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/malware/nvstring_workaround.py b/the_archive/archived_competition_notebooks/kaggle/malware/nvstring_workaround.py new file mode 100644 index 00000000..9ced6df0 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/malware/nvstring_workaround.py @@ -0,0 +1,51 @@ +import pandas as pd +import cudf as gd +import numpy as np +from collections import OrderedDict,Counter +import re +from librmm_cffi import librmm +import nvstrings +from cudf_workaround import cudf_groupby_aggs,drop_duplicates + +def on_gpu(words,func,dtype=np.int32): + res = librmm.device_array(words.size(), dtype=dtype) + cmd = 'words.%s(res.device_ctypes_pointer.value)'%(func) + eval(cmd) + return res + +def get_unique_tokens(words,words_hash=None): + df = gd.DataFrame() + df['hash'] = on_gpu(words,'hash') if words_hash is None else words_hash + df['ID'] = np.arange(words.size()).astype(np.int32) + df = drop_duplicates(df,by='hash',keep='first') + rows = df['ID'].to_array()#.astype(np.int32) + res = words.sublist(rows.tolist()) + del df + return res + +def get_token_counts(words,words_hash=None): + df = gd.DataFrame() + df['hash'] = on_gpu(words,'hash') if words_hash is None else words_hash + df['ID'] = np.arange(words.size()).astype(np.int32) + dg = df.groupby('hash').agg({'hash':'count'}) + dg.columns = ['count_hash'] + dg = dg.reset_index() + df = drop_duplicates(df,by='hash',keep='first') + df = df.merge(dg,on=['hash'],how='left') + rows = df['ID'].to_array()#.astype(np.int32) + res = words.sublist(rows.tolist()).to_host() + #res = pd.DataFrame({'tokens':res,'count':df['count_hash'].to_array()}) + res = dict(zip(res,df['count_hash'].to_array().tolist())) + #del df + return Counter(res) + +def is_in(w1,w2): + if isinstance(w1,nvstrings.nvstrings): + w1 = get_token_counts(w1) + w2 = get_token_counts(w2) + res = 0 + for i in w1: + if w1[i]>0 and w2[i]>0: + res += w1[i] + return res*1.0/sum([j for i,j in w1.items()]) + diff --git a/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_only.ipynb b/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_only.ipynb new file mode 100644 index 00000000..d137dbbc --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_only.ipynb @@ -0,0 +1,474 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "GPU_id = 0\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from collections import OrderedDict,Counter\n", + "from nvstring_workaround import on_gpu\n", + "from sklearn.model_selection import KFold\n", + "import xgboost as xgb\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## This notebook contains a rapids solution to achieve 0.695 private LB in 12 minutes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def rm_cols(gdf,cols):\n", + " gcols = [i for i in gdf.columns]\n", + " for col in cols:\n", + " if col in gcols:\n", + " gdf.drop_column(col)\n", + " return gdf\n", + "\n", + "def reset_col_dtype(gtr,gte):\n", + " for col in gtr.columns:\n", + " a,b = str(gtr[col].dtype),str(gte[col].dtype)\n", + " if a!=b:\n", + " gtr[col] = gtr[col].astype('float32')\n", + " gte[col] = gte[col].astype('float32')\n", + " return gtr,gte\n", + "\n", + "def count_encode(df,cols):\n", + " df['idx'] = np.arange(len(df))\n", + " for col in cols:\n", + " df[col] = df[col].fillna(-999)\n", + " dg = df.groupby(col).agg({col:'count'})\n", + " dg.columns = ['count_%s'%col]\n", + " dg = dg.reset_index()\n", + " df = df.merge(dg,on=[col],how='left')\n", + " df.drop_column(col)\n", + " df = df.sort_values(by='idx')\n", + " df.drop_column('idx')\n", + " df = rm_cols(df,[i for i in df.columns if i.startswith('count_')==0])\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def mtr(tr,col,te):\n", + " tr[col] = tr[col].fillna(-999)\n", + " tr[YCOL] = tr[YCOL].astype('float32')\n", + " dg = tr.groupby(col).agg({YCOL:'mean'})\n", + " dg.columns = ['mtr_%s'%col]\n", + " dg = dg.reset_index()\n", + " te = te.merge(dg,on=[col],how='left')\n", + " del dg\n", + " return te\n", + "\n", + "def mtr_encode(tr,te,cols):\n", + " tr['idx'] = np.arange(len(tr))\n", + " tr['random'] = np.random.random(len(tr))\n", + " tr = tr.sort_values(by='random')\n", + " tr.drop_column('random')\n", + " N = len(tr)//2\n", + " tr1 = tr[:N]\n", + " tr2 = tr[N:]\n", + " te['idx'] = np.arange(len(te))\n", + " for col in cols:\n", + " if col not in tr.columns:\n", + " continue\n", + " tr2 = mtr(tr1,col,tr2)\n", + " tr1 = mtr(tr2,col,tr1)\n", + " te = mtr(tr,col,te)\n", + " if len(tr1.columns)!=len(tr2.columns):\n", + " del tr1,tr2\n", + " return rm_cols(tr,[i for i in tr.columns]),rm_cols(te,[i for i in te.columns])\n", + " del tr\n", + " tr = gd.concat([tr1,tr2])\n", + " tr = tr.sort_values(by='idx')\n", + " tr = rm_cols(tr,[i for i in tr.columns if i.startswith('mtr_')==0])\n", + " del tr1,tr2\n", + " te = te.sort_values(by='idx')\n", + " te = rm_cols(te,[i for i in te.columns if i.startswith('mtr_')==0])\n", + " return tr,te" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "timing_gpu={}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 7.39 s, sys: 2.94 s, total: 10.3 s\n", + "Wall time: 10.3 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"read data\"\n", + "\n", + "IDCOL = 'MachineIdentifier'\n", + "YCOL = 'HasDetections'\n", + "PATH = '.'\n", + "tr_path = '%s/train.csv'%PATH\n", + "te_path = '%s/test.csv'%PATH\n", + "gtr = gd.read_csv(tr_path)\n", + "gte = gd.read_csv(te_path)\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "for col in gtr.columns:\n", + " if gtr[col].dtype=='object':\n", + " gtr[col] = gtr[col].hash_values()\n", + "for col in gte.columns:\n", + " if gte[col].dtype=='object':\n", + " gte[col] = gte[col].hash_values() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Count encoding" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.74 s, sys: 1.58 s, total: 8.31 s\n", + "Wall time: 2.68 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"count encode\"\n", + "\n", + "count_cols = ['CityIdentifier', 'Census_OSBuildRevision', 'Census_TotalPhysicalRAM']\n", + "N = len(gtr)\n", + "gtr1,gte1 = gtr[count_cols],gte[count_cols]\n", + "gtr1,gte1 = reset_col_dtype(gtr1,gte1)\n", + "df = gd.concat([gtr1,gte1])\n", + "del gtr1,gte1\n", + "\n", + "df = count_encode(df,count_cols)\n", + "data = df.to_pandas().values\n", + "count_tr,count_te = data[:N],data[N:]\n", + "count_cols = ['count_%s'%i for i in count_cols]\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Target encoding" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4.54 s, sys: 688 ms, total: 5.22 s\n", + "Wall time: 1.85 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"target encode\"\n", + "\n", + "mtr_cols = ['SmartScreen']\n", + "gtr1 = gtr[mtr_cols+[YCOL]] \n", + "gte1 = gte[mtr_cols]\n", + "\n", + "gtr1,gte1 = mtr_encode(gtr1,gte1,mtr_cols)\n", + "mtr_tr,mtr_te = gtr1.to_pandas(),gte1.to_pandas()\n", + "mtr_cols = [i for i in mtr_tr.columns]\n", + "mtr_tr,mtr_te = mtr_tr.values,mtr_te.values\n", + "del gtr1,gte1\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### target encode will be much faster if the column has many levels. Unfortunately 'SmartScreen' only has several levels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### remove columns & combine all features" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(8921483, 81) (7853253, 81)\n", + "CPU times: user 5min 46s, sys: 2min 24s, total: 8min 10s\n", + "Wall time: 15.5 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"combine\"\n", + "\n", + "badcols = ['PuaMode','OsSuite','ProductName','SmartScreen']\n", + "y = gtr[YCOL].to_pandas().values\n", + "\n", + "gtr = rm_cols(gtr,[IDCOL,YCOL]+badcols)\n", + "gte = rm_cols(gte,[IDCOL,YCOL]+badcols)\n", + "\n", + "tr = gtr.to_pandas()\n", + "te = gte.to_pandas()\n", + "\n", + "cols = [i for i in tr.columns]\n", + "tr,te = tr.values,te.values\n", + "\n", + "train = np.hstack([tr,count_tr,mtr_tr])\n", + "test = np.hstack([te,count_te,mtr_te])\n", + "cols = cols + count_cols + mtr_cols\n", + "\n", + "print(train.shape, test.shape)\n", + "#print(cols)\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "xgb_params = {\n", + " 'objective': 'binary:logistic',\n", + " 'tree_method': 'hist',\n", + " 'eta':0.1,\n", + " 'nthread': 16,\n", + " 'max_depth': 10,\n", + " 'silent':1,\n", + " 'subsample':0.8,\n", + " 'colsample_bytree': 0.7,\n", + " 'min_child_weight':10,\n", + " 'eval_metric':'auc',\n", + "}\n", + "\n", + "xgb_gpu_params = xgb_params.copy()\n", + "xgb_gpu_params.update({'tree_method': 'gpu_hist',})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train & Predict" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fold 0 done\n", + "fold 1 done\n", + "fold 2 done\n", + "fold 3 done\n", + "CPU times: user 6min 46s, sys: 3min 24s, total: 10min 10s\n", + "Wall time: 10min 13s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"train & predict\"\n", + "\n", + "feature_names = cols\n", + "pred = 0\n", + "kf = KFold(n_splits=4, shuffle=True, random_state=42)\n", + "for i,(train_index, test_index) in enumerate(kf.split(train)):\n", + " y_train,y_test = y[train_index],y[test_index]\n", + " X_train,X_test = train[train_index],train[test_index]\n", + " watchlist = ()\n", + " dtrain = xgb.DMatrix(data=X_train, label=y_train, feature_names=feature_names)\n", + " dtest = xgb.DMatrix(data=test, feature_names=feature_names)\n", + " clf = xgb.train(xgb_gpu_params, dtrain=dtrain,\n", + " num_boost_round=500,evals=watchlist,\n", + " early_stopping_rounds=None,maximize=True,\n", + " verbose_eval=100)\n", + " pred += clf.predict(dtest)\n", + " print('fold',i,'done')\n", + "pred /= (i+1)\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Summary" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#sub = pd.read_csv('%s/sample_submission.csv'%PATH)\n", + "#sub[YCOL] = pred\n", + "#sub.to_csv('rapids_sub.csv.gz',index=False,compression='gzip')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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p8fVGEebbrppmT179mQXQ5IkSZIkabXxk5/85K5SyqyueY+rwNHs2bOZN2/eZBdDkiRJkiRptZHk5qHm2VVNkiRJkiRJnQwcSZIkSZIkqZOBI0mSJEmSJHV6XI1x1OXBBx9kwYIFLF++fLKLMi422GADttxyS9Zdd93JLookSZIkSVrDPO4DRwsWLGCjjTZi9uzZJJns4oypUgoLFy5kwYIFbLvttpNdHEmSJEmStIZ53HdVW758OTNnzlztgkYASZg5c+Zq25pKkiRJkiRNbY/7wBGwWgaNelbnfZMkSZIkSVPbahE4mmx33HEHr33ta9luu+3YZZdd2GOPPTj33HO57LLL2GSTTdhpp514xjOewbHHHgvAGWecweGHH77COvbcc0/mzZs3GcWXJEmSJEnq9Lgf46jf7CO/Nabru+mElw47v5TCK17xCg4++GDOPPNMAG6++WbOO+88ZsyYwfOf/3wuuOAC7rvvPnbaaSf222+/MS2fJEmSJEnSeLHF0Sq69NJLWW+99TjssMMeSdtmm214y1veskK+JzzhCeyyyy7ccMMNE11ESZIkSZKklWLgaBVdffXVPPvZzx4x38KFC/nRj37EjjvuOAGlkiRJkiRJWnWrXVe1yfbmN7+ZK664gvXWW4+PfexjfO9732PnnXdmrbXW4sgjj2THHXccciwjB8KWJEmSJI2FsR7GRSMbaaibxysDR6toxx135N///d8fmf7MZz7DXXfdxa677grwyBhHbTNnzmTRokUrpN19991suumm419gSZIkSZKkAdlVbRXttddeLF++nH/6p396JG3p0qXDLrPbbrvx/e9/n9tvvx2AefPmcf/997PVVluNa1klSZIkSZJGwxZHqygJ3/zmN3nHO97BSSedxKxZs3jCE57AiSeeOOQym222GZ/+9KfZd999efjhh5k+fTpf/epXWWst43iSJEmSJGnqWO0CR5PRp/DJT34yZ511Vue8PffcszN9//33Z//99x/HUkmSJEmSJK0am7hIkiRJkiSpk4EjSZIkSZIkdTJwJEmSJEmSpE6rReColDLZRRg3q/O+SZIkSZKkqe1xHzjaYIMNWLhw4WoZYCmlsHDhQjbYYIPJLookSZIkSVoDPe7fqrbllluyYMEC7rzzzskuyrjYYIMN2HLLLSe7GJIkSZIkaQ30uA8crbvuumy77baT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "steps = ['read data','count encode','target encode','combine','train & predict']\n", + "GPU_RUN_TIME = timing_gpu\n", + "GPU_RUN_TIME['Overall'] = sum([GPU_RUN_TIME[i] for i in steps])\n", + "steps.append('Overall')\n", + "gpu_time = [GPU_RUN_TIME[i] for i in steps]\n", + "df = pd.DataFrame({'GPU': gpu_time}, index=steps)\n", + "df.plot.bar(rot=0,figsize=(20,5), fontsize=15, title='Running time: seconds')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_vs_cpu.ipynb b/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_vs_cpu.ipynb new file mode 100644 index 00000000..0d6a9034 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/malware/rapids_solution_gpu_vs_cpu.ipynb @@ -0,0 +1,843 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "GPU_id = 1\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from collections import OrderedDict,Counter\n", + "from nvstring_workaround import on_gpu\n", + "from sklearn.model_selection import KFold\n", + "import xgboost as xgb\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## This notebook contains a rapids solution to achieve 0.695 private LB in 12 minutes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def rm_cols(gdf,cols):\n", + " gcols = [i for i in gdf.columns]\n", + " for col in cols:\n", + " if col in gcols:\n", + " gdf.drop_column(col)\n", + " return gdf\n", + "\n", + "def reset_col_dtype(gtr,gte):\n", + " for col in gtr.columns:\n", + " a,b = str(gtr[col].dtype),str(gte[col].dtype)\n", + " if a!=b:\n", + " gtr[col] = gtr[col].astype('float32')\n", + " gte[col] = gte[col].astype('float32')\n", + " return gtr,gte\n", + "\n", + "def count_encode(df,cols):\n", + " df['idx'] = np.arange(len(df))\n", + " for col in cols:\n", + " df[col] = df[col].fillna(-999)\n", + " dg = df.groupby(col).agg({col:'count'})\n", + " dg.columns = ['count_%s'%col]\n", + " dg = dg.reset_index()\n", + " df = df.merge(dg,on=[col],how='left')\n", + " df.drop_column(col)\n", + " df = df.sort_values(by='idx')\n", + " df.drop_column('idx')\n", + " df = rm_cols(df,[i for i in df.columns if i.startswith('count_')==0])\n", + " return df\n", + "\n", + "def count_encode_cpu(df,cols):\n", + " for col in cols:\n", + " dg = df.groupby(col).agg({col:'count'})\n", + " dg.columns = ['count_%s'%col]\n", + " df = df.merge(dg.reset_index(),on=[col],how='left')\n", + " return df[[i for i in df.columns if i.startswith('count_')]]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def mtr(tr,col,te):\n", + " tr[col] = tr[col].fillna(-999)\n", + " tr[YCOL] = tr[YCOL].astype('float32')\n", + " dg = tr.groupby(col).agg({YCOL:'mean'})\n", + " dg.columns = ['mtr_%s'%col]\n", + " dg = dg.reset_index()\n", + " te = te.merge(dg,on=[col],how='left')\n", + " del dg\n", + " return te\n", + "\n", + "def mtr_encode(tr,te,cols):\n", + " tr['idx'] = np.arange(len(tr))\n", + " tr['random'] = np.random.random(len(tr))\n", + " tr = tr.sort_values(by='random')\n", + " tr.drop_column('random')\n", + " N = len(tr)//2\n", + " tr1 = tr[:N]\n", + " tr2 = tr[N:]\n", + " te['idx'] = np.arange(len(te))\n", + " for col in cols:\n", + " if col not in tr.columns:\n", + " continue\n", + " tr2 = mtr(tr1,col,tr2)\n", + " tr1 = mtr(tr2,col,tr1)\n", + " te = mtr(tr,col,te)\n", + " if len(tr1.columns)!=len(tr2.columns):\n", + " del tr1,tr2\n", + " return rm_cols(tr,[i for i in tr.columns]),rm_cols(te,[i for i in te.columns])\n", + " del tr\n", + " tr = gd.concat([tr1,tr2])\n", + " tr = tr.sort_values(by='idx')\n", + " tr = rm_cols(tr,[i for i in tr.columns if i.startswith('mtr_')==0])\n", + " del tr1,tr2\n", + " te = te.sort_values(by='idx')\n", + " te = rm_cols(te,[i for i in te.columns if i.startswith('mtr_')==0])\n", + " return tr,te" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def mtr_cpu(tr,col,te):\n", + " dg = tr.groupby(col).agg({YCOL:'mean'})\n", + " dg.columns = ['mtr_%s'%col]\n", + " te = te.merge(dg.reset_index(),on=[col],how='left')\n", + " del dg\n", + " return te\n", + "\n", + "def mtr_encode_cpu(tr,te,cols):\n", + " tr['idx'] = np.arange(len(tr))\n", + " tr['random'] = np.random.random(len(tr))\n", + " tr = tr.sort_values(by='random')\n", + " tr.drop('random',axis=1,inplace=True)\n", + " N = len(tr)//2\n", + " tr1 = tr[:N]\n", + " tr2 = tr[N:]\n", + " te['idx'] = np.arange(len(te))\n", + " for col in cols:\n", + " if col not in tr.columns:\n", + " continue\n", + " tr2 = mtr_cpu(tr1,col,tr2)\n", + " tr1 = mtr_cpu(tr2,col,tr1)\n", + " te = mtr_cpu(tr,col,te)\n", + " del tr\n", + " tr = pd.concat([tr1,tr2],axis=0).reset_index(drop=True)\n", + " tr = tr.sort_values(by='idx')\n", + " cols = [i for i in tr.columns if i.startswith('mtr_')]\n", + " tr = tr[cols]\n", + " del tr1,tr2\n", + " te = te.sort_values(by='idx')\n", + " te = te[cols]\n", + " return tr,te" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read data & label encode" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "timing_gpu={}\n", + "timing_cpu={}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 10.1 s, sys: 5.04 s, total: 15.1 s\n", + "Wall time: 15.1 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"read data & label encode\"\n", + "\n", + "IDCOL = 'MachineIdentifier'\n", + "YCOL = 'HasDetections'\n", + "\n", + "PATH = '.'\n", + "tr_path = '%s/train.csv'%PATH\n", + "te_path = '%s/test.csv'%PATH\n", + "gtr = gd.read_csv(tr_path)\n", + "gte = gd.read_csv(te_path)\n", + "\n", + "for col in gtr.columns:\n", + " if gtr[col].dtype=='object':\n", + " gtr[col] = gtr[col].hash_values()\n", + "for col in gte.columns:\n", + " if gte[col].dtype=='object':\n", + " gte[col] = gte[col].hash_values() \n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AppVersion done\n", + "AvSigVersion done\n", + "Census_ActivationChannel done\n", + "Census_ChassisTypeName done\n", + "Census_DeviceFamily done\n", + "Census_FlightRing done\n", + "Census_GenuineStateName done\n", + "Census_InternalBatteryType done\n", + "Census_MDC2FormFactor done\n", + "Census_OSArchitecture done\n", + "Census_OSBranch done\n", + "Census_OSEdition done\n", + "Census_OSInstallTypeName done\n", + "Census_OSSkuName done\n", + "Census_OSVersion done\n", + "Census_OSWUAutoUpdateOptionsName done\n", + "Census_PowerPlatformRoleName done\n", + "Census_PrimaryDiskTypeName done\n", + "Census_ProcessorClass done\n", + "EngineVersion done\n", + "OsBuildLab done\n", + "OsPlatformSubRelease done\n", + "OsVer done\n", + "Platform done\n", + "Processor done\n", + "ProductName done\n", + "PuaMode done\n", + "SkuEdition done\n", + "SmartScreen done\n", + "CPU times: user 17min 52s, sys: 5min 32s, total: 23min 25s\n", + "Wall time: 6min 43s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "\n", + "dtr = pd.read_csv(tr_path)\n", + "dte = pd.read_csv(te_path)\n", + "\n", + "N = dtr.shape[0]\n", + "df = pd.concat([dtr,dte],axis=0).reset_index(drop=True)\n", + "\n", + "for col in df.columns:\n", + " if col != IDCOL and df[col].dtype=='O':\n", + " df[col],_ = df[col].factorize()\n", + " print(col,'done')\n", + " \n", + "dtr,dte = df.iloc[:N].reset_index(drop=True),df.iloc[N:].reset_index(drop=True)\n", + "timing_cpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Count encoding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.13 s, sys: 972 ms, total: 7.1 s\n", + "Wall time: 3.26 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"count encode\"\n", + "\n", + "count_cols = ['CityIdentifier', 'Census_OSBuildRevision', 'Census_TotalPhysicalRAM']\n", + "N = len(gtr)\n", + "gtr1,gte1 = gtr[count_cols],gte[count_cols]\n", + "gtr1,gte1 = reset_col_dtype(gtr1,gte1)\n", + "df = gd.concat([gtr1,gte1])\n", + "del gtr1,gte1\n", + "\n", + "df = count_encode(df,count_cols)\n", + "data = df.to_pandas().values\n", + "del df\n", + "count_tr,count_te = data[:N],data[N:]\n", + "count_cols = ['count_%s'%i for i in count_cols]\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 21s, sys: 8.28 s, total: 1min 29s\n", + "Wall time: 12.6 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "\n", + "cols = ['CityIdentifier', 'Census_OSBuildRevision', 'Census_TotalPhysicalRAM']\n", + "N = len(gtr)\n", + "N = len(dtr)\n", + "dtr1,dte1 = dtr[cols],dte[cols]\n", + "df = pd.concat([dtr1,dte1],axis=0)\n", + "\n", + "df = count_encode_cpu(df,cols)\n", + "data = df.values\n", + "count_tr_cpu,count_te_cpu = data[:N],data[N:]\n", + "\n", + "timing_cpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Target encoding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.57 s, sys: 824 ms, total: 7.39 s\n", + "Wall time: 1.74 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"target encode\"\n", + "\n", + "mtr_cols = ['SmartScreen']\n", + "gtr1 = gtr[mtr_cols+[YCOL]] \n", + "gte1 = gte[mtr_cols]\n", + "\n", + "gtr1,gte1 = mtr_encode(gtr1,gte1,mtr_cols)\n", + "mtr_tr,mtr_te = gtr1.to_pandas(),gte1.to_pandas()\n", + "mtr_cols = [i for i in mtr_tr.columns]\n", + "mtr_tr,mtr_te = mtr_tr.values,mtr_te.values\n", + "del gtr1,gte1\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 57s, sys: 9.13 s, total: 2min 6s\n", + "Wall time: 10.1 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "\n", + "cols = ['SmartScreen']\n", + "dtr1 = dtr[cols+[YCOL]] \n", + "dte1 = dte[cols]\n", + "\n", + "dtr1,dte1 = mtr_encode_cpu(dtr1,dte1,cols)\n", + "mtr_tr_cpu,mtr_te_cpu = dtr1.values,dte1.values\n", + "\n", + "timing_cpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### target encode on gpu will be much faster if the column has many levels. Unfortunately 'SmartScreen' only has several levels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### remove columns & combine all features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### GPU " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(8921483, 81) (7853253, 81)\n", + "CPU times: user 3min 6s, sys: 1min 44s, total: 4min 50s\n", + "Wall time: 10.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"combine\"\n", + "\n", + "badcols = ['PuaMode','OsSuite','ProductName','SmartScreen']\n", + "y = gtr[YCOL].to_pandas().values\n", + "\n", + "gtr = rm_cols(gtr,[IDCOL,YCOL]+badcols)\n", + "gte = rm_cols(gte,[IDCOL,YCOL]+badcols)\n", + "\n", + "tr = gtr.to_pandas()\n", + "te = gte.to_pandas()\n", + "\n", + "cols = [i for i in tr.columns]\n", + "tr,te = tr.values,te.values\n", + "\n", + "train = np.hstack([tr,count_tr,mtr_tr])\n", + "test = np.hstack([te,count_te,mtr_te])\n", + "feature_names = cols + count_cols + mtr_cols\n", + "\n", + "print(train.shape, test.shape)\n", + "#print(cols)\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(8921483, 81) (7853253, 81)\n", + "CPU times: user 40 s, sys: 49 s, total: 1min 28s\n", + "Wall time: 17.7 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "\n", + "badcols = ['PuaMode','OsSuite','ProductName','SmartScreen']\n", + "usecols = [i for i in dtr.columns if i not in badcols+[IDCOL,YCOL]]\n", + "dtr = dtr[usecols].values\n", + "dte = dte[usecols].values\n", + "\n", + "train_cpu = np.hstack([dtr,count_tr_cpu,mtr_tr_cpu])\n", + "test_cpu = np.hstack([dte,count_te_cpu,mtr_te_cpu])\n", + "\n", + "print(train_cpu.shape, test_cpu.shape)\n", + "#print(cols)\n", + "timing_cpu[step] = time.time()-start" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "xgb_cpu_params = {\n", + " 'objective': 'binary:logistic',\n", + " 'tree_method': 'hist',\n", + " 'eta':0.1,\n", + " 'nthread': 16,\n", + " 'max_depth': 10,\n", + " 'silent':1,\n", + " 'subsample':0.8,\n", + " 'colsample_bytree': 0.7,\n", + " 'min_child_weight':10,\n", + " 'eval_metric':'auc',\n", + "}\n", + "\n", + "xgb_gpu_params = xgb_cpu_params.copy()\n", + "xgb_gpu_params.update({'tree_method': 'gpu_hist',})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train & Predict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fold 0 done\n", + "fold 1 done\n", + "fold 2 done\n", + "fold 3 done\n", + "CPU times: user 6min 48s, sys: 3min 35s, total: 10min 24s\n", + "Wall time: 10min 17s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = \"train & predict\"\n", + "\n", + "\n", + "pred = 0\n", + "kf = KFold(n_splits=4, shuffle=True, random_state=42)\n", + "for i,(train_index, test_index) in enumerate(kf.split(train)):\n", + " y_train,y_test = y[train_index],y[test_index]\n", + " X_train,X_test = train[train_index],train[test_index]\n", + " watchlist = ()\n", + " dtrain = xgb.DMatrix(data=X_train, label=y_train, feature_names=feature_names)\n", + " dtest = xgb.DMatrix(data=test, feature_names=feature_names)\n", + " clf = xgb.train(xgb_gpu_params, dtrain=dtrain,\n", + " num_boost_round=500,evals=watchlist,\n", + " early_stopping_rounds=None,maximize=True,\n", + " verbose_eval=100)\n", + " pred += clf.predict(dtest)\n", + " print('fold',i,'done')\n", + "pred /= (i+1)\n", + "\n", + "timing_gpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fold 0 done\n", + "fold 1 done\n", + "fold 2 done\n", + "fold 3 done\n", + "CPU times: user 8h 11min 58s, sys: 22min 38s, total: 8h 34min 37s\n", + "Wall time: 34min 15s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "\n", + "pred_cpu = 0\n", + "kf = KFold(n_splits=4, shuffle=True, random_state=42)\n", + "for i,(train_index, test_index) in enumerate(kf.split(train_cpu)):\n", + " y_train,y_test = y[train_index],y[test_index]\n", + " X_train,X_test = train_cpu[train_index],train_cpu[test_index]\n", + " watchlist = ()\n", + " dtrain = xgb.DMatrix(data=X_train, label=y_train, feature_names=feature_names)\n", + " dtest = xgb.DMatrix(data=test_cpu, feature_names=feature_names)\n", + " clf = xgb.train(xgb_cpu_params, dtrain=dtrain,\n", + " num_boost_round=500,evals=watchlist,\n", + " early_stopping_rounds=None,maximize=True,\n", + " verbose_eval=100)\n", + " pred_cpu += clf.predict(dtest)\n", + " print('fold',i,'done')\n", + "pred_cpu /= (i+1)\n", + "\n", + "timing_cpu[step] = time.time()-start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Summary" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "#sub = pd.read_csv('%s/sample_submission.csv'%PATH)\n", + "#sub[YCOL] = pred\n", + "#sub.to_csv('rapids_sub.csv.gz',index=False,compression='gzip')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "617.4223990440369" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "timing_gpu['train & predict']" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "steps = ['read data & label encode','count encode','target encode','combine','train & predict']\n", + "timing_gpu['Overall'] = sum([timing_gpu[i] for i in steps])\n", + "steps.append('Overall')\n", + "gpu_time = [timing_gpu[i] for i in steps]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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nSc+8YnZdddds+uuu+ZrX/va1et41rOeld122y33vve987GPfSxJctlll+WpT31qdtpppzz+8Y/PZZdddvV2t9hii6v/P/roo7PffvslSfbbb7885znPyS677JIddtghxxxzzEw+px5CAAAAAL1Pf/rT2WabbfKJT3Q9k37961/nwAMPzC1ucYt873vfywc+8IEccMABOeaYY/KCF7wgL3zhC/PABz4wp59+evbYY4+cdNJJOeSQQ/LQhz4073vf+3LBBRdkt912y8Mf/vC8+93vzuabb56TTjopJ554Yu5zn/tMlac1a9bkm9/8Zk455ZQ85CEPyU9+8pNsttlmG/Q5BYQ20Ky7rrEw3fsAAABYKve4xz3y4he/OAceeGD23nvvPOhBD0qSPO1pT7v67wtf+MIkyec///n88Ic/vHrZCy+8MBdffHE++9nP5uMf/3je/OY3J+menHb66afnK1/5Sp7//OcnSXbeeefsvPPOU+XpyU9+cjbaaKPc5S53yZ3udKecfPLJude97rVBn1NACAAAAKC3ww475IQTTsgnP/nJvPKVr8zDHvawJGs/yWvu/6uuuirHHXfctXrrtNby4Q9/OHe9612n3u7o+scfIT/+FLFZPIXNGEIAAAAAvTPPPDObb755nvGMZ+QlL3lJTjjhhCTJBz/4wav/3v/+90+SPPKRj8xhhx129bLf+c53kiR77LFHDjvssLTWkiTf/va3kyQPfvCDc8QRRyRJvv/97+fEE0+8etnb3OY2Oemkk3LVVVflox/96Fp5Ouqoo3LVVVfllFNOyamnnrqoQNO66CEEAAAA0Pve976Xl7zkJdloo42yySab5J//+Z+z77775vzzz8/OO++cTTfdNEceeWSS5J/+6Z/yvOc9LzvvvHOuvPLKPPjBD8673vWuvOpVr8oBBxyQnXfeOVdddVW23377HHPMMXnuc5+bZz7zmdlpp52y00475b73ve/V2z300EOz9957Z+utt84uu+ySiy+++Op52223XXbbbbdceOGFede73rXB4wclSc1Fq5bTLrvs0lavXr3c2VgvxhC67hlDCAAA4IbrpJNOyk477bTc2VjLqlWrsnr16my11VbX+bb322+/7L333tl3333nTTfpe6uq41tru0xK75YxAAAAgIFxyxgAAADAPNasWbNs2z788MOXZL16CAEAAAAM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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "timing_cpu['Overall'] = sum([timing_cpu[i] for i in steps[:-1]])\n", + "speedup = [timing_cpu[i]/timing_gpu[i] for i in steps]\n", + "df = pd.DataFrame({'steps':steps, 'speedup':speedup})\n", + "df.plot.bar(x='steps', y='speedup', rot=0, figsize=(20,5), fontsize=15, title='GPU Speedup')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABJcAAAFECAYAAACam9/OAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeZwdVZn4/88DCQQEYkgQRJawKRCXIIsDjCOCqEEQRFlcRtAZGfyJoowiMC7BFVBEfqCD4IzoKCAwgIAishgUlSW4MCxhDxJ2QiBAEtbn+8epC5Wb2923i+7cJvm8X6/76q6qU6dO3Xtqe+rUqchMJEmSJEmSpCaW6XUBJEmSJEmS9NJlcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJElLhYi4ICL2WUzLOiwifrg4lvVSEhHTIuJfe10OSZI0tEb1ugCSJGnpEREzgdWBZ4HHgV8DB2Tm48O97MycMhz5RsR2wE8zc63asr4xHMuSJEkaiWy5JEmSFrddMnMlYDKwGXBoj8sjSZKkF8HgkiRJ6onMvA+4kBJkAhZ9bCoi9o2Iy2vDGRH7R8QtEfFIRHwvIqKeNiK+HRFzIuKOiJjSKe8u0q4XEb+LiMci4uJqOT9tX4eIeBlwAbBmRDxefdaMiKmt9BExsSr3RyLirmp5+0fElhFxbbUex7fl+9GIuLFKe2FErNvNdxoRYyLipxExu8r36ohYvZo2NiL+KyLujYi7I+JrEbFsbd6PVct8LCJuiIg3VuM3qb67RyLi+oh4d22ek6vv5pfVfFdGxAa16TtGxIyIeLRax6hN2zAiLqumPRQRP+9mHSVJ0shjcEmSJPVERKwFTAFuHeSsOwNbAq8H9gTeUZv2JuAmYAJwFPBfreBTB/2lPQW4ChgPTAX+uVMGmflEtQ73ZOZK1eeefpa3EbAX8F3gP4C3AZOAPSPiLQARsStwGLA7sBrwe+DUViYRcX5EHNLHMvYBxgJrV2XfH5hfTTsZeAbYkNJi7O1AK9i2R7WeHwZWAd4NzI6I0cB5wG+AVwCfBH4WEa+pLXNv4HBgHOW3/HqV5wTgLOALlO/4NmDb2nxfrfIdB6wFHNfHOkmSpBHO4JIkSVrczomIx4C7gAeALw9y/iMy85HM/DvwW2otn4A7M/OkzHwW+DHwSkofT510TBsR61CCV1/KzKcy83Lg3EGWsZOvZuaCzPwN8ARwamY+kJl3UwJIm1Xp9ge+mZk3ZuYzwDeAya3WS5m5c2Ye0ccynqYElTbMzGcz85rMnFu1XtoJ+HRmPpGZDwDHUAJDUIJMR2Xm1Vncmpl3Av8ArET5zp/KzEuB84H315Z5dmZeVZX1Z7zwe+wEXJ+ZZ2bm05SA2n1tZV0XWLP6Xi5HkiS9JBlckiRJi9tumbkysB2wMaVVy2DUAxTzKMGPRaZl5rzq3/r0jvm0pV0TeLg2Dkog7MW6v/b//A7DrXKuCxxbPYb2CPAw5XGyV3WxjP+hPGp4WkTcExFHVa2P1gVGA/fW8v0BpTUSlJZOt3XIb03grsx8rjbuzray9PV7rEnte8vMZOHv8eBqva6qHrf7aBfrJ0mSRiCDS5IkqScy8zLKo1rfro1+AlixNrzG4ixT5V5g1Yiol2PtftLnEC//LuDfMvPltc8KmfnHgWbMzKcz8/DM3BTYhvII4YerPJ8EJtTyXCUzJ9WWuUGHLO8B1o6I+jnjOsDdXazHvdS+t+qRw+eHM/O+zPxYZq4J/Bvw/YjYsIt8JUnSCGNwSZIk9dJ3gR0j4g3V8F+B3SNixSrQ8C+Lu0DV42DTgakRsVxEbA3s0s8s9wPjI2LsEBXhBODQiJgEz3fEvUc3M0bEWyPidVVH3XMpj549l5n3Uvo3OjoiVomIZSJig1Y/T8APgc9GxOZRbFg9hnclpTXSwRExOiK2o3wXp3VRnF8CkyJi94gYBXyKWrAwIvao+t0CmEMJ0j23aDaSJGmkM7gkSZJ6JjMfBH4CfKkadQzwFCVg82NKHz698EFga2A28DXg55SWP4vIzBmUDrdvrx45W/PFLDgzzwaOpDzaNhe4jtJpOAARcUFEHNbH7GsAZ1ICSzcCl1EelYPSgmk54AZKMOdMSj9TZOYZlI64TwEeA84BVs3MpyjBpCnAQ8D3gQ9X6zzQejwE7AEcQfkeNwL+UEuyJXBlRDxO6dPqwMy8faB8JUnSyBPl8XdJkiT1JSJ+DszIzMF2Pi5JkrTEs+WSJElSm4jYsnpsbJmIeCewK6U1jyRJktqM6nUBJEmSRqA1gLOA8cAs4OOZ+ZfeFkmSJGlk8rE4SZIkSZIkNeZjcZIkSZIkSWrM4JIkSZIkSZIaW+L6XJowYUJOnDix18WQJEmSJElaYlxzzTUPZeZqnaYtccGliRMnMn369F4XQ5IkSZIkaYkREXf2Nc3H4iRJkiRJktSYwSVJkiRJkiQ1ZnBJkiRJkiRJjS1xfS518vTTTzNr1iwWLFjQ66IMizFjxrDWWmsxevToXhdFkiRJkiQtZZaK4NKsWbNYeeWVmThxIhHR6+IMqcxk9uzZzJo1i/XWW6/XxZEkSZIkSUuZAR+Li4g9IuLciLg7Ih6PiGsi4v1taaZFRHb4jGlL96qIODsiHouIhyLi+IhYscMyPxYRt0TEgmp5O7yYlVywYAHjx49f4gJLABHB+PHjl9hWWZIkSZIkaWTrpuXSQcAdwGeAh4CdgFMiYkJmHldL91vgsLZ5n2z9ExGjgQuBp4C9gZcD36n+fqiW7v3ACcBU4HLgI8D5EbFlZl43mJWrWxIDSy1L8rpJkiRJkqSRrZsOvXfJzA9k5umZeWlmfhY4lRJ0qns4M69o+2Rt+vuATYD3ZuYvM/NnwCeBD0TERrV0U4EfZ+ZXM/O3wL7ArcAhzVZx5Lj//vv5wAc+wPrrr8/mm2/O1ltvzdlnn820adMYO3YskydPZpNNNuHwww8H4OSTT+aAAw5YKI/tttuO6dOn96L4kiRJkiRJixiw5VJmPtRh9F+A9w5yWVOAqzPzjtq4cygtmd4J3BIR6wOvBg6sLf+5iDijPu7FmnjIL4cqKwBmHvGuAdNkJrvtthv77LMPp5xyCgB33nkn5557LuPGjePNb34z559/Pk888QSTJ09ml112GdIySpIkSZIkDYduWi51sjVwc9u4t0fEvOpzYUS8vm36xsCM+ojMfAq4rZpG7e9C6YAbgVUjYrWG5e25Sy+9lOWWW47999//+XHrrrsun/zkJxdK97KXvYzNN9+cW2+9dXEXUZIkSZIkadAGHVyqOtfeDTi6NvoySsuidwD7AesAv4+IibU044BHOmQ5p5pG7W97ujlt019yrr/+et74xjcOmG727NlcccUVTJo0aTGUSpIkSZIk6cXppkPv51XBolOAX2Tmya3xmfnlWrLfR8TFlNZHn64+wyoi9qMEtVhnnXWGe3FD4hOf+ASXX345yy23HN/61rf4/e9/z2abbcYyyyzDIYccwqRJk/rsW8kOvCVJkiRJS7WpY3tdguamPtrrEgy5roNLEbEqcAFwJ/DB/tJm5n0R8Qeg3lRnDtDp1x8H/K2WhirdI21p6tPbl3cicCLAFltskZ3S9NqkSZP43//93+eHv/e97/HQQw+xxRZbADzf51Ld+PHjmTNn4VV++OGHmTBhwvAXWJIkSZIkqQtdPRYXESsC5wPLATtn5rwuZsvq0zKDF/pUauW7HLA+L/Sx1Pq7ULpq+OHMfLCb8o5E22+/PQsWLOA///M/nx83b17/X+OWW27JH/7wB+677z4Apk+fzpNPPsnaa689rGWVJEmSJEnq1oAtlyJiFHAGsBGwTWY+0MU8awD/CPx3bfQFwAciYt3MvLMa925geeDXAJl5e0TcDOwBXFjltUw1fEG3KzUSRQTnnHMOn/nMZzjqqKNYbbXVeNnLXsaRRx7Z5zyrr746xx57LDvttBPPPfccK620EqeeeirLLNO0H3ZJkiRJkqShFZn9P0UWEScCH6N02H1V2+S/AK8BvkkJQN1J6cz7UOAVwOTM/HuVz+gq/ZPAFymPvh0DXJyZH6ot7/3AT4EvA38A9gH2ArbMzOsGWqEtttgi2/squvHGG9lkk00GmvUlbWlYR0mSJEmSAPtc6oGIuCYzt+g0rZs+l95e/T22w7T1gNlAUAJM44HHgGnAbq3AEkBmPh0R7wSOB06nBJlOAz5XzzAzT42IlYDPU4JQ11MexRswsCRJkiRJkqTFa8DgUmZO7CKfnbpZWGbOAnbrIt1JwEnd5ClJkiRJkqTesfMeSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMGlxei+++5j7733ZoMNNmDzzTdnp5124uabb2aFFVZg8uTJbLrppuy///4899xzTJs2jZ133nmh+ffdd1/OPPPMHpVekiRJkiRpUQO+LW6JNHXsEOf36IBJMpP3vOc97LPPPpx22mkA/O1vf+P+++9ngw024K9//SvPPPMM22+/Peeccw6rrrrq0JZRkiRJkiRpGNhyaTH57W9/y+jRo9l///2fH/eGN7yBtdde+/nhUaNGsc0223Drrbf2ooiSJEmSJEmDZnBpMbnuuuvYfPPN+00zb948LrnkEl73utctplJJkiRJkiS9OAaXRoDbbruNyZMns+222/Kud72LKVOmEBEd0/Y1XpIkSZIkqReWzj6XemDSpEl9dsbd6nOpbvz48cyZM2ehcQ8//DATJkwYtjJKkiRJkiQNli2XFpPtt9+eJ598khNPPPH5cddeey133XVXx/QbbbQR99xzDzfeeCMAd955J3/729+YPHnyYimvJEmSJElSN2y5tJhEBGeffTaf/vSnOfLIIxkzZgwTJ07ku9/9bsf0yy+/PD/96U/5yEc+woIFCxg9ejQ//OEPGTt2iN90J0mSJEmS9CIsncGlqY/2ZLFrrrkmp59++iLjr7vuuo7pt912W6644orhLpYkSZIkSVJjPhYnSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWpsqQkuZWavizBsluR1kyRJkiRJI9tSEVwaM2YMs2fPXiKDMJnJ7NmzGTNmTK+LIkmSJEmSlkJLxdvi1lprLWbNmsWDDz7Y66IMizFjxrDWWmv1uhiSJEmSJGkptFQEl0aPHs16663X62JIkiRJkiQtcZaKx+IkSZIkSZI0PAwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWps1EAJImIP4J+BzYGxwE3AtzPz1LZ0HwMOBtYGrgcOzsxL2tK8CjgeeBvwJHBalW7eYPOSJEmSJHUwdWyvS9Dc1Ed7XQJJDXTTcukg4HHgM8C7gd8Cp0TEJ1sJIuL9wAnAT4AplIDQ+RHx2lqa0cCFwLrA3sCBwB7AifWFdZOXJEmSJEmSRoYBWy4Bu2TmQ7XhSyNiTUrQ6bhq3FTgx5n5VYCIuAzYDDgE+FCV5n3AJsCGmXlHle5p4LSIODwzbxlEXpIkSZIkSRoBBmy51BZYavkLsCZARKwPvBo4vTbPc8AZlJZHLVOAq1uBpco5wFPAOweZlyRJkiRJkkaAph16bw3cXP2/cfV3RluaG4FVI2K1WrqF0mTmU8BttTy6zUuSJEmSJEkjwKCDSxGxA7AbcHQ1alz195G2pHPapo/rkKaVblxb2oHykiRJkiRJ0ggwqOBSREwETgF+kZknD0N5GomI/SJiekRMf/DBB3tdHEmSJEmSpKVG18GliFgVuAC4E/hgbVKrVVH7+y7HtU2f0yFNK92ctrQD5bWQzDwxM7fIzC1WW80n5yRJkiRJkhaXroJLEbEicD6wHLBzZs6rTW71j7Rx22wbAw9n5oO1dAuliYjlgPVreXSblyRJkiRJkkaAAYNLETGK8ra2jYB3ZuYD9emZeTulc+89avMsUw1fUEt6AbBlRKxbG/duYHng14PMS5IkSZIkSSPAqC7SfB/YCTgQGB8R42vT/pKZTwJTgZ9GxEzgD8A+lGDUB2ppzwT+AzgrIr5IefTtGOCUzLyllq6bvCRJkiRJkjQCdBNcenv199gO09YDZmbmqRGxEvB54IvA9ZTH565rJczMpyPincDxwOnAk8BpwOfqGXaTlyRJkiRJkkaGAYNLmTmxm4wy8yTgpAHSzAJ2G4q8JEmSJEmS1Htdvy1OkiRJkiRJamdwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjBpckSZIkSZLUmMElSZIkSZIkNWZwSZIkSZIkSY0ZXJIkSZIkSVJjXQWXImLDiPhBRFwbEc9GxLQOaWZGRLZ97uuQbtOIuCQi5kXEPRHxlYhYti1NRMRhEXFXRMyPiN9FxOTGaylJkiRJkqRhMarLdJOAnYArgNH9pDsFOK42/FR9YkSMAy4GbgB2BTYAjqYEub5QS3oI8EXgc8AM4CDg4oh4bWYuErCSJEmSJElSb3QbXDovM38BEBFnAhP6SHdvZl7RTz77AysAu2fmXOCiiFgFmBoRR2Xm3IgYQwkufTMzj6+W+SdgJnAACwehJEmSJEmS1ENdPRaXmc8N0fKmABdWgaWW0ygBp7dUw9sAqwCn15b/BHBeNb8kSZIkSZJGiKHu0PtfIuKpiHg0Is6MiHXbpm9MeczteZn5d2BeNa2V5lnglrZ5b6ylkSRJkiRJ0gjQ7WNx3fgFpU+mWcAmwJeB30fE6zLz0SrNOOCRDvPOqaa10jyemc92SLNiRCyXme19Oe0H7AewzjrrDMW6SJIkSZIkqQtD1nIpMw/MzFMz8/eZeSLwDmBN4CNDtYx+ln1iZm6RmVusttpqw704SZIkSZIkVYb6sbjnZeZ1wE3AG2uj5wBjOyQfV01rpVkpIpbtkGZee6slSZIkSZIk9c6wBZcqWX1aZtDWb1JErA2syAt9Mc0AlgU2bMtrkf6aJEmSJEmS1FvDFlyKiNdSAkLX1EZfALwjIlaujdsLmA9cVg3/EZgL7FHLa0Vgl2p+SZIkSZIkjRBddehdBXd2qgZfBawSEe+rhn8FvBX4EHA+cA8lqPQF4O/AybWsTgA+BZwVEUcC6wNTge9k5lyAzFwQEUcAX4yIOZTWSgdRAmHHNVpLSZIkSZIkDYtu3xb3CuCMtnGt4fWAu6o03wVeDswGfg0c1goaAWTmnIjYATgeOI/y5rhjKAGmuiMowaRDgfHAdGDHzLy/y/JKkiRJkiRpMegquJSZM4EYINkOXeZ1A7D9AGkS+Hr1kSRJkiRJ0gg13B16S5IkSZIkaQlmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNdRVciogNI+IHEXFtRDwbEdM6pImIOCwi7oqI+RHxu4iY3CHdphFxSUTMi4h7IuIrEbFsk7wkSZIkSZLUW922XJoE7ATcBNzcR5pDgC8CRwK7AI8DF0fEGq0EETEOuBhIYFfgK8C/A4cPNi9JkiRJkiT1XrfBpfMyc+3M3AO4vn1iRIyhBIS+mZnHZ+bFwB6UINIBtaT7AysAu2fmRZl5AiWwdFBErDLIvCRJkiRJktRjXQWXMvO5AZJsA6wCnF6b5wngPGBKLd0U4MLMnFsbdxol4PSWQeYlSZIkSZKkHhuqDr03Bp4Fbmkbf2M1rZ5uRj1BZv4dmFdL121ekiRJkiRJ6rGhCi6NAx7PzGfbxs8BVoyI5WrpHukw/5xq2mDykiRJkiRJUo8NVXCppyJiv4iYHhHTH3zwwV4XR5IkSZIkaakxVMGlOcBKEbFs2/hxwLzMfKqWbmyH+cdV0waT1/My88TM3CIzt1httdUar4QkSZIkSZIGZ6iCSzOAZYEN28a397E0g7Z+kyJibWDFWrpu85IkSZIkSVKPDVVw6Y/AXGCP1oiIWBHYBbiglu4C4B0RsXJt3F7AfOCyQeYlSZIkSZKkHhvVTaIquLNTNfgqYJWIeF81/KvMnBcRRwBfjIg5lBZGB1GCV8fVsjoB+BRwVkQcCawPTAW+k5lzATJzQZd5SZIkSZIkqce6Ci4BrwDOaBvXGl4PmAkcQQkAHQqMB6YDO2bm/a0ZMnNOROwAHA+cR3lz3DGUAFPdgHlJkiRJkiSp97oKLmXmTCAGSJPA16tPf+luALYfirwkSZIkSZLUW0PV55IkSZIkSZKWQgaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1JjBJUmSJEmSJDVmcEmSJEmSJEmNGVySJEmSJElSYwaXJEmSJEmS1NioXhdAkiRJkiT1xsRDftnrIjQyc0yvS6A6Wy5JkiRJkiSpMYNLkiRJkiRJaszH4iRJkiSpAx8XkqTu2HJJkiRJkiRJjRlckiRJkiRJUmMGlyRJkiRJktSYwSVJkiRJkiQ1ZnBJkiRJkiRJjQ1ZcCki9o2I7PDZv5YmIuKwiLgrIuZHxO8iYnKHvDaNiEsiYl5E3BMRX4mIZYeqrJIkSZIkSRoao4Yhz+2B+bXh22v/HwJ8EfgcMAM4CLg4Il6bmfcBRMQ44GLgBmBXYAPgaEog7AvDUF5JkiRJkiQ1NBzBpasz8/H2kRExhhJc+mZmHl+N+xMwEziAFwJH+wMrALtn5lzgoohYBZgaEUdV4yRJkiRJkjQCLM4+l7YBVgFOb43IzCeA84AptXRTgAvbgkinUQJOb1kM5ZQkSZIkSVKXhiO4dFtEPBMRN0XEv9XGbww8C9zSlv7Galo93Yx6gsz8OzCvLZ0kSZIkSZJ6bCgfi7uX0p/SVcCywN7ACRGxYmYeA4wDHs/MZ9vmmwOsGBHLZeZTVbpHOuQ/p5omSZIkSZKkEWLIgkuZeSFwYW3UBVU/S1+IiGOHajmdRMR+wH4A66yzznAuSpIkSZIkSTXD3efSmcCqwERKy6OVImLZtjTjgHlVqyWqdGM75DWumraIzDwxM7fIzC1WW221ISm4JEmSJEmSBjbcwaWs/Z1BeVxuw7Y07X0szaCtb6WIWBtYsS2dJEmSJEmSemy4g0vvAx4C7gT+CMwF9mhNjIgVgV2AC2rzXAC8IyJWro3bC5gPXDbM5ZUkSZIkSdIgDFmfSxHxv5TOvK+ltFDaq/p8KjOfAxZExBHAFyNiDqUV0kGUANdxtaxOAD4FnBURRwLrA1OB72Tm3KEqryRJkiRJkl68oXxb3E3AR4G1gQBuAD6cmf9TS3MEJZh0KDAemA7smJn3txJk5pyI2AE4HjiP8ua4YygBJkmSJEmSJI0gQ/m2uMOAwwZIk8DXq09/6W4Ath+qskmSJEmSJGl4DHefS5IkSZIkSVqCGVySJEmSJElSYwaXJEmSJEmS1NhQduitpdXUsb0uQXNTH+11CSRJkiRJekmz5ZIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4JIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqTGDS5IkSZIkSWrM4HrIcusAABplSURBVJIkSZIkSZIaM7gkSZIkSZKkxgwuSZIkSZIkqbERG1yKiE0j4pKImBcR90TEVyJi2V6XS5IkSZIkSS8Y1esCdBIR44CLgRuAXYENgKMpwbAv9LBokiRJkiRJqhmRwSVgf2AFYPfMnAtcFBGrAFMj4qhqnCRJkiRJknpspD4WNwW4sC2IdBol4PSW3hRJkiRJkiRJ7UZqy6WNgUvrIzLz7xExr5p2Xk9KNcwmHvLLXhehkZljel0CaTGYOrbXJWhu6qO9LoEkjRzuzyVJGnIjNbg0Dnikw/g51TRJL1EGUaURzItuDYL7c0mS1BKZ2esyLCIingY+l5nfbRs/C/hJZh7WNn4/YL9q8DXATYuloGqZADzU60JIw8x6rqWB9VxLA+u5lgbWcy0NrOeL37qZuVqnCSO15dIcoNPt03HVtIVk5onAicNdKHUWEdMzc4tel0MaTtZzLQ2s51oaWM+1NLCea2lgPR9ZRmqH3jMofSs9LyLWBlaspkmSJEmSJGkEGKnBpQuAd0TEyrVxewHzgct6UyRJkiRJkiS1G6nBpROAJ4GzIuJtVZ9KU4HvZObcnpZMnfhIopYG1nMtDaznWhpYz7U0sJ5raWA9H0FGZIfeABGxKXA8sDXlzXE/BKZm5rM9LZgkSZIkSZKeN2KDS5IkSZIkSRr5RupjcS8pEXFARAw6ShcRK0VERsS+g5xvz8HO00WeoyPiiIi4OyIei4grI2LnLufdrlqP1w5ymdMi4sxmJV4kr5kR8e2hyKuXmtYJdS8ilouIqRExuddlGSoR8e2ImNnrciyNhmN/PJQiYquImNrrcgyliHhoSVsnLX7VcWDA11cvKecX6t8wnVs3Oj8eIM9/j4g7IuKJiPhbRHxkqPIeLu3nKBGxb/W9rDSIPA6OiO2Go3waXlHsW11bPh4RcyPisoh4d6/L1i4iJlZ1c+faOI8Bg2Bw6aVpT2DfIc7z88CBwDeA9wG/BXyto5ZEywFfBpaY4JJ6ajj2x0NpK0p9l9TMe4D/v9eF0LAbjn35nynde9w2FJlFxIeAb1G6CtkVOAN401DkvZj9kvK9zBvEPAcD2w1LaTTcvk+ps1dS9qd7ATOBX0TE53tYLg2DUb0uwHCKiGWBZTPzqV6X5SVgV+DUzPxeNXxhLwsjSUubiAhg+cxc0OuySCoy8y+9LoNGjogYDTzXTR+w1UuIrhjCxe8KTMvMr1fDFw9h3h0Nx3EpMx8EHhyq/DRyRcRuwP7AxzPzhNqkCyLiPuAbEXFRZv55GMtgPGAxWqJaLkXEyRExPSJ2i4jrgQVUEf2IWCciTouIhyNiXkRcGBGvaZv/iIj4v6rJ3qyI+FlErNGWZvmIOD4iHqnyOgYY3WX53hsRN0fE/Ij4HbBxhzQfjojLq7znRMRvI2KL2vSTgfcCb6ma7WXr8YCIeFdEXBQRD1RNDq+IiLd3+fU9C2zYZdoBVc12r46IRyPi/og4LyI65h8R+1VNDudHxC8j4lVt08dExFERcVdEPFk1A96pYbn+NSKur/K5MyIObpveqkM7RsS1VbPjyyNiUlu6ZSPi0Or3fLKqLye3pTkgIm6ppt8aEZ/pUJ4B60Q35R7pIuKfqrr8eFUnpkXEZrXpkyPikmrbnFNte6vXpndsWh5tj1Z2+fs9Vv39UW0bmthP2fvdd8QLTWj3jIgfVOs3KyIOj4hl2vJ6fbUtPFJ9F1dFxI616etFxDnV9vtYp+0mIl4eEadU898bEf/RpNx68V7s/jiqx3Ii4h8j4mrKMWuPatrrI+KPEbGg2vZ3qur2yW15vDlK8/J5ETE7Ik6KiJWrafsCx1X/t8o3bYB12rVazoKIuC/Kvnd0bXqrzJtV6zQvIv4SEW/ukNfHohxTF0Q5DpwZEWNr0/espj8ZZf/+9YgY1ZbHP0XZ5y+IiGsiYpsm5dbIFf0cH2LgY0Nr/7t3RPyo2tZmRWnh0XqU5p6IeDAijmzfJ1dpto2IP1d1568R8Y9t0xd6JCK6P09YJiIOiXL8fzLKsX6fof7+9OINsC+fVu279ouI2yj76TUjYuPqGHtXVT+vj4hP1+tYdDh3qYYPjIhvVPXygYj4XkQs30VRnwUmRrlYHuw6traVD0TE/0Q5x3ggIr7clq6/49KqEXFitT9fEOUY9aa2+Qc8R4kOj8VFxArVfvvOanu5IyK+WU2bCYwHvlz7fbYb7HegnjgQuBU4qcO0b1DOyQ+o6t197fvoKOdSGbVz4ej+Wm6heEBEvDIi/jsibo9y3XVzRHwtIpYb8rVemmXmEvMBTgYeAm4GPgS8DVgLWBX4O/AXSrPXnYHLgbuAFWrz/zfwfuAtlEfD/gTcACxTS3MMpZL+OzAFOAuYVb7Kfsv2RuAZShPWKcDngNuBBPatpfsSsB+wQ5XuJ8B8YP1q+gbApZSmtv9Qfdaqph0AfAp4B7Aj8B3KgWjbLr67T1Zl+XiD7327at7Xtn1P+1TT3g38CngAGFtLMw24G/g/YHfgA9VvcnVb/udX834ceDulaeUzwORampnAtwco5+eAp4GvV9/PIcCTwAFtdegB4K+UZpvvrurTdVQd4Ffpfgg8BXytymsv4PTa9I9V38nRVZm/CTwHHNKgTgxY7pH8qerA08BvKCdv7wS+CuxcTV+N8kbIPwG7UbbdWcC1wHJ91bFaHTpzML8f8NYqr6/ywja0fB9lH3DfAUys8ptZ/d47AkdU4/as5bUx5SA6Hdi7Snco8NFq+vLV739TVfb3VuW+G1i1ls/ZwJyqju0CXFZ9XzMHU24/Q1K3X9T+GJhKeSzgNuDfqrr5GmBF4N7q93sP5bh0U1W3T67Nvy1lX/BzYCfgn6v6cmZt2/p2VRdb5du0n/XZsyrj9yn7rY9Tts1vdyjztcBHKPuuKyh3oVespfsCZZ93PGWb3x34L+BV1fS3V+X6cTX94GpdTqjlsSbwBOUx7Z0px8Y7quVPHUy5/YzMD/0cH+ju2DCxqkd3Ui5UdgROrerD0cCZVZ7/UaXbu0NdvqOqW7tQjimPAWvU0s1s2wZOprvzhO8Bj1d1+23AkVW5du719+5nkXrY3758Gi/sj99H2deuQjlPP7yqN9sBnwYeBQ5tq9/t58dJOT6fTDk+fI5yLnhwF+XcpZr/yAbr2NpW7gZ+UC3765T99Cdq6VrbRftxafnq+7kd+HC1Xf2iw/bSzTnKvlVZVqqGg7IPeKzaXnaolnFSNX0zXnhzeOv3WaXX9cbPgHVuFOWa+Tv9pDmbEnzapKoTb22b/hNgem2422u5TvGA11HOiXajXOt/rLU9dNhOdq6Nm4nnE93/7r0uwJCuTKlMSS3oUI3/KjCbhS/QxlEOAp/oI69lgVdV+f1TNW48JdDz+Vq6ZYAZDBxcOp0SqKqfeLROdvbtY55lqg1zBvCl2vgzKc1i+1tea94Lgf8eIO1o4GfVxv0MgzzxoY8L/7bvcoXqoPHh2vhp1Q5indq4bau83lkN71ANv6Utz98BZ9SG+93wKScCjwNfbhv/FeA+SnPJVh16Btiolma3qgwbV8MbV8Of6ue7vxv4Udv471d1bky3daLbco/kD+XCYHp9PdumH0E5aVilNu5N1ffw/v7qGJ2DSwP9fiv1t9215T/gvoMXDkQ/aZv3r8BpteFTKSdYHYM7lGbDz1AFkqtxa1GCmIdWw5OqZe1VS7MS8DALn7gNep/np3H9brw/ppzEJ7BrW/pPVL/7q2rjtqrSnlwb93vgt23zbl/fVihBruxiPYJygf6jtvEfpRz3xreVeftamsksvN9+OeXipL8Tyis6lP1gysV366LuqKoe14NWH6yWNXUw5fYzMj/0c3ygu2NDa//7o1qaVSjnFrdQO0YCVwE/rw236vIHauNa+9MjauNmsmhwaaDjzIaUi/Z92tbpJ7TdQPMzMj70sS+nnGfMB1bvZ96g7OMPA26vjd8OOgaXftc2/znAFV2U8UhK0CeB/Qe5fq1t5Tdt40+inLMuUw23tov249K/UI5L9Xo/qirPt6rhbs9R9mXh4NI7quF391P+h6jdVPAz8j/AGtXvemA/ab4LzK/+/xsL32BannLe+tlqeDDXcklbPKDDskdRGjYsYNEbFgaXGn6WqMfiKndn5l/bxr0NuAiYGxGjojS7fwy4hlqn1RExpWri+SjlxGFWNenV1d/XAWMokXoAMvO5+nA/tgLOzaqWVs5qTxQRm0TE2RFxP+Uk+2nKHYNXt6ftMO9aEfHjiLi7Kv/TlLu4A837NeANwGspdwV+HhH/UMv36hhkL/kR8Q9RHgmZXZVlHuUA016WP2fm31sDmfkHyh3BrapRb6PsMP7Q+u2q3+8SBtfh+NbAy4Az2vK5FFidchHfMjMzb6kN31D9baV5a/X35D6WtRbljvsZbeN/Ttkxvq4a7qZODKbcI05EvIxyMfDjtvWs24pysjO3NSIzr6TszP+xj3n6M9DvNxhd7Tsqv2kbvqFtmdtTLmzm97GsrSjbw+2tEZk5C/gDL3wPW1Z/6/ugx6syNi23hsEg9scJXNA2bkvgmsy8+/lEmVcB99fyX5Gyfzi9bd9webWszQdZ5FcD63TI71LKca/+SOpTlAuulvZtbGvKDYUfdVpQ9UjHG+m8j1ymmh/KNnFRZtY7fT37RZRbI0gXx4fBHBsuqaWZS2lJd1ku3C/OrZSbhu2er1O1/elWHdLVDXSc2YESXDq7w7nL5CaPNamnrsnM++sjonTZcHhE3EppOdFqTbFetD3e28FA5wuLiIiPU54I2IrS6vl7EfGe2vQzors3MLfvQ8+inLPWl9/puPQ2yjnEHbX6DKVlUuu8ottzlHbbAw9n5rldlF9Lrp8D763VrSnAypSb8TC4a6JF4gFRfDoiboiI+ZRt9meUINY6w7ZWS5klsUPv+zuMm0BpQrlXh2mXAETElsC5lJ3uEZQAR1Luro6p0rb6X3qgLY/24U7WGGi+KP1k/KZah4Mod2MXUAI+Y+hH9YzquZSN8EuUk6gnKNHcV/Qz32jKne1/z8wFEfH/Ub6v8yNiW8rdjEmURxy6EhHrVOtxFaVJ7T2Ui5FfdliPTt/dA8Arq/8nUL67pzukG7AzxZoJ1d/r+5i+NuX7hnKntK7VAVyr7OOBJ+onvG1aZW+vi63hVau/A9YJBlfukWgc5Y7evf2keSWd1+9+XviuBmOg328wBtx3DLDc+jLHM/D30Gn/dT+wbvX/GsBjuWjHmp3qTbfl1hAb5P54Ti7ayeQadO7stD5uHKVV6PerT7u1B1ns1r7mV31Mr+f3WHVjBYDMfCoiYOF9JPRd3ydQWsx2s4+8tp4gM+dFxOMNy62RZaDjw2CODZ32vwPtkwEe7xDwfwB4fR9l6m951PKfQNk+H+1j/lfywg1MjXydjs1HAv9KeTTuz5Q6sSvlfHkMpYVFX7qpm+0+Q2m5Ohs4IkrfY6dE6bfxj5Sg0zcGyAP6Pu98JeVxPeh8XGqdV3Q6H2+9Da/bc5R2A50f6aXpIUrgdd1+0qxLudaEElz6OiXY+BvKOeyfao0QBnNN1Gmb/TTlbYtHUoKicygB0e/R7BpBHSyJwaVOd78eppzof7XDtFbnvu+hnLjv1bqDFhHtG8N91d9XVHlSGx7IfR3StQ9vTYm67piZM1ojo9YBaj82pDyTPCUzf12bd4UB5ptA6d/jMSgtsSLig5Q7FhdS7mjcwcB3HereWeW5a2Y+UZVjFJ0DBZ2+u1fwwkHmYcpOZ7dBLL+T1u+1M513ODcNIq/ZwMsiYpU+AkytsrevW6sT0lZZuqkTQ1nuXphDuXv7yn7S3EvnerA65S4ZlCArQHune+MoB6/h0s2+o1uzGfh7mNRh/OosXGdWjogxbSdvnerNUJVbgzeY/XGnY9Z9lBar7Var/f9INe9UOgdW7um2sJVWHduP0rdIuzsGkdfs6u8r6bx9PkS5QBn0PrJqsbVSbdRQlluL10DHh26ODS/WShGxQluAqX4O0tTDlBaL21LWsV03NyU1cnTaT+8BHJeZR7VGRMS7hrEM67Lw8fsgyjHhXOBYynn3z7rIp6/zznqd7+taajqlT7t2T1Z/uz1HaTfQ+ZFegjLzmYj4E/CuiPhs/aYUQESsQnl09Owq/W0RMR3YKyIup/TZdVhtlsFcE/W1zZ6Zmc93Mh8Rmw5urTSQJfGxuE4uoVy0XZ+Z09s+rYq4AvB0W9PsD7bl83+Ui9xdWyOqO9S7MrCrgXdHdXu3sntbmtaFR2snTZQ340xsS9fpDkenedelnNj05wHKTn2P1ojMfJISzHmMcqfksPYdwgBWoJxMPVMbtyedg5lvrFo6tcq8LeUgdFU16hLKnZDHO/x20wdRpj9Rnplfs1M+mTmYC+5Lq78f7mP6LMqF3R5t4/cE5lLqEXRXJ4ay3ItdFVy8Evhw23rWXQm8o2q5BzzfknAi5REfeOEO7ya1NGvTx9v1BjCYlkzd7Du6dQmwZ0T0tdwrgc0jYr3WiChvTtyGF76Hq6u/9X3QSpRODYer3OrfUO6PW66m1IXnH+GJiK14IfjS2rauAF7Tx76hFVx6qpp/oPp+EyWQP7GP/GYPMH9da7+1T6eJ1aNK19B5H/lcNT+U72HHKqDU8p62eYay3FqMujg+dHNsGAr1R4ta+9Or+k7elUspLZfG9lEvfSX2yNNN66G6FVh4H78s5WUdw+VG4D2tR4aq65WPUFpNTQW+Vj2CNpD2fejulMDSQC3pLqHcOPl7h/pcP6+Fgc9ROuW9akTs3E+awf4+GhmOpTy+/q8dph1C6S7k+Nq40yh19D2Ubaz++PyLvSZaaJuttF/r60VaElsudfIdSm/xl0bEcZQT0dUpPcVfnpmnUlrmfDoivgucR7mg+1A9k8ycHREnAodHxDOUZnkfY+G7qH05knKidHpE/BelH4h/aUtzBaUZ7UkRcRSlFdNUXmgu2DID2DUiduOFQMaM6v+jI+KLlMcxDu8w70Iy89mI+ALwnxFxFqUfoWcp/QVsRLkLcWhEtPd70Z/WSdWPqnWdBHyWRZsBQ2kt9ssor0IdQ/me/ly7238RpQXVRRFxJOU7X4XSgeyYzDy0mwJl5iNRXit7bHWR9ztKcPXVlDcTtB9s+8vrpqoeHB0Rr6jyejnwvszcu2r9NRX4QZQ+py6i1LWPUwJ1rbs5A9aJoSx3Dx0CXAxcUH1vT1Ba6U3PzPMp2+fHgQur33glyqOp/wf8L5S+h6q7GV+NiHmU7+AwFm5B2JXqEZ47KIGe6ygB42v7ONnvZt/RrcMpJ16/i4ijKUHdzYDZmfnflG3v85Tv6UuU7fDLlFYeP6jKfn1EnEvZXlehnBB+jtKn2XCVW/0bsv1xzY8oj1acHxGHU06IDqfsL+uB/oOBSyLiOUpntI9R+g14F/AfmXlzVRaAAyPiUmBupwBjtd/6d+B/qrp1AeVkfn3KzYb3dXsMqPZbXwW+HuUVv7+i9GnwLuDwLH1JfZmyzf+IcjL5OkpLu5Oy9DUGpaPPT1Tfw3co/YIcSjm5HPJyqyf6PD7QxbFhCMyn1NOVKNvuZyktZI99MZlW5wknAKdV53PTKec4k4BXZ2anCy311iL78lqQvpOLgE9E6XPpYcq+avlhLN9hlOuTiyPieMr+fhtKv2X3AJ+MiFMzc6BWcZMi4geUbeifKOedB3ZxE/knlBePTIvSD+vtlMfZtgLuy8xjBnGO0q51rn9KRHyFEjB7JeWFSv9WpZlBaQHza8q10k0j/QarIDPPqfaF36taCZ1PiT/sRenY/dDM/HNtltMpj659i9Lx/b21vF7sNdFFwKci4krKo5wfpARMNZRyBPQqPlQfysXZ9D6mrUk5Yb+fErWcCfwUmFRLczDlVd1PUE52NqI0q6u/3nB5Xnjr1xzgOErT1OyifHtQ+t5YQLnrtiWLvnb+nZTX2c6n9DWxE4u+EWsCpQnhwyz81pwtKXfb5lPekrJvf99Jh7JdVZXtUcrFwJspG+yjlGa3Hd9MRue3YfwzZcOdTwmavYlF37gyjXJBtD/lOe/5lAuDtdvyX55yYXUr5aLhPuDXwLtqaRbKu5/1/BDljvn86ve7EjiovzpE5zcHLEv1VpCqTLNoeysf8MlamW8HPtOkTnRT7pH+oQQ1fkc5wXiE8mrxybXpm1GCkq3pp9D2ZhbKAWAaZfu8iXJnbBqLvi2um9/v7ZTta0E1bWI/Ze9339Ep/37K8nrKtvVY9bkS2KE2fX3KW2Meo5w8nU/tzSxVmnGUi/EnqjJ9ifJq1ZmDKbefIavbjffHlJsHD/WR7xso/Wg8WdX33Siv1f1uW7o3UfaHc6s6cQPlonxsNT0ob127hxKYmjbA+kyhvIXuiSrPv1Je+jCqvzLz/9q7X10ngigOwL/FEUiQJCjeAXlNgweLwKC4FoG5EnENz0CCR/AMl/ACYDH81QjgiqpFzCnd23QpLE3ahu9LJmm203bSzMzOnu30rJwr69hxtWeeNm+/yMXMX/fSAgWLOfR08TmDOrMaq/Nqy1HWZA3a1G5lf0t+c37IhnNDxuffD1lZE4yNv7S1zpvqY29TGYLH3mv1fcbaUWPvUdpNsXnqT8YzyJqr7E/J+Fx+lsE6Y1D/etX/lnaefZp2w7nPMgvaLOuzxa3OlWvn1TWfeTvLddCPeny32v4p7QbWlZHXLvro/bTstd+rTz7JxazFo21Jci0t8Po5y3n7ZZKjQZ2Na5SsZIurY5er3pcaL++TnA6ev5V2PXFer53tus8of1ZqLnyQtuY9r773KiPZAdOuh/okxyPP//W1XB2/mrYu/lrlWdoWu19jNLLF/XPp6ksDAPZUbZd8l+Rh3/fPd90eAA5H13U30wI2d/r2q3GArftftsUBwMHouu4k7ddGH9O2up2k3WXe1nYgAADYGsElANg/fdr/Et1I2yLwOsnjfn2GSgAA2Cnb4gAAAACY7NKuGwAAAADA4RJcAgAAAGAywSUAAAAAJhNcAgAAAGAywSUAAAAAJhNcAgAAAGCynwlc3nMAcoLtAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cpu_time = [timing_cpu[i] for i in steps]\n", + "df = pd.DataFrame({'GPU': gpu_time,'CPU': cpu_time}, index=steps)\n", + "df.plot.bar(rot=0,figsize=(20,5), fontsize=15, title='Running time: seconds')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/blog_notebooks/plasticc/Dockerfile b/the_archive/archived_competition_notebooks/kaggle/plasticc/Dockerfile similarity index 100% rename from blog_notebooks/plasticc/Dockerfile rename to the_archive/archived_competition_notebooks/kaggle/plasticc/Dockerfile diff --git a/blog_notebooks/plasticc/README.md b/the_archive/archived_competition_notebooks/kaggle/plasticc/README.md similarity index 100% rename from blog_notebooks/plasticc/README.md rename to the_archive/archived_competition_notebooks/kaggle/plasticc/README.md diff --git a/blog_notebooks/plasticc/data/README.md b/the_archive/archived_competition_notebooks/kaggle/plasticc/data/README.md similarity index 100% rename from blog_notebooks/plasticc/data/README.md rename to the_archive/archived_competition_notebooks/kaggle/plasticc/data/README.md diff --git a/blog_notebooks/plasticc/notebooks/.kaggle/kaggle.json b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/.kaggle/kaggle.json similarity index 100% rename from blog_notebooks/plasticc/notebooks/.kaggle/kaggle.json rename to the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/.kaggle/kaggle.json diff --git a/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/cudf_workaround.py b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/cudf_workaround.py new file mode 100644 index 00000000..90c6e61b --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/cudf_workaround.py @@ -0,0 +1,356 @@ +import cudf as gd +import numpy as np +from numba import cuda,jit,float32 +import math +TPB = 32 # threads per block, multiples of 32 in general + +def rename_col(df, oldcol, newcol): + df[newcol] = df[oldcol] + df.drop_column(oldcol) + return df + +@cuda.jit(device=True) +def initialize(array,value,N): + # N<=len(array) + for i in range(cuda.threadIdx.x, N, cuda.blockDim.x): + array[i] = value + +@cuda.jit(device=True) +def reduction_sum_SM(array): + # array is in shared memory + # len(array) == TPB + # the final result is in array[0] + tid = cuda.threadIdx.x + j = TPB//2 #16 + while j>0: + if tid1: + std[0] = math.sqrt(std[0]/(len(array)-1)) + else: + std[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_skew_with_mean(array,skew,mean): + # skew is a shared memory array + # mean is a scaler, the mean value of array + # len(skew) == TPB + # the kernel has only one TB + # the final result is in skew[0] + tid = cuda.threadIdx.x + initialize(skew,0,len(skew)) + cuda.syncthreads() + + m2 = 0 # 2nd moment + + tid = cuda.threadIdx.x + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**2 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + m2 = skew[0]/(len(array)) + cuda.syncthreads() + + initialize(skew,0,len(skew)) + cuda.syncthreads() + + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**3 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + n = len(array) + m3 = skew[0]/(len(array)) + if m2>0 and n>2: + skew[0] = math.sqrt((n-1.0)*n)/(n-2.0)*m3/m2**1.5 + else: + skew[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_kurtosis_with_mean(array,skew,mean): + # skew is a shared memory array + # mean is a scaler, the mean value of array + # len(skew) == TPB + # the kernel has only one TB + # the final result is in skew[0] + tid = cuda.threadIdx.x + initialize(skew,0,len(skew)) + cuda.syncthreads() + + m2 = 0 + tid = cuda.threadIdx.x + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**2 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + m2 = skew[0]/(len(array)) + cuda.syncthreads() + + initialize(skew,0,len(skew)) + cuda.syncthreads() + + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**4 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + n = len(array) + m4 = skew[0]/(len(array)) + #skew[0] = math.sqrt((n-1.0)*n)/(n-2.0)*m3/m2**1.5 + if n>3 and m2>0: + skew[0] = 1.0/(n-2)/(n-3)*((n*n-1.0)*m4/m2**2.0-3*(n-1)**2.0) + else: + skew[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_std(array,std): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,std) + mean = std[0] + cuda.syncthreads() + compute_std_with_mean(array,std,mean) + +@cuda.jit(device=True) +def compute_skew(array,skew): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,skew) + mean = skew[0] + #cuda.syncthreads() + compute_skew_with_mean(array,skew,mean) + +@cuda.jit(device=True) +def compute_kurtosis(array,skew): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,skew) + mean = skew[0] + #cuda.syncthreads() + compute_kurtosis_with_mean(array,skew,mean) + +@cuda.jit +def compute_mean_kernel(array,out): + mean = cuda.shared.array(shape=(TPB), dtype=float32) + compute_mean(array,mean) + if cuda.threadIdx.x==0: + out[0] = mean[0] + cuda.syncthreads() + +@cuda.jit +def compute_std_kernel(array,out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(array,std) + if cuda.threadIdx.x==0: + out[0] = std[0] + cuda.syncthreads() + +@cuda.jit +def compute_skew_kernel(array,out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_skew(array,skew) + if cuda.threadIdx.x==0: + out[0] = skew[0] + cuda.syncthreads() + +@cuda.jit +def compute_kurtosis_kernel(array,out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_kurtosis(array,skew) + if cuda.threadIdx.x==0: + out[0] = skew[0] + cuda.syncthreads() + +@cuda.jit(device=True) +def gd_group_apply_std(ds_in,ds_out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(ds_in,std) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = std[0] + +@cuda.jit(device=True) +def gd_group_apply_var(ds_in,ds_out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(ds_in,std) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = std[0]**2 + +@cuda.jit(device=True) +def gd_group_apply_skew(ds_in,ds_out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_skew(ds_in,skew) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = skew[0] + +@cuda.jit(device=True) +def gd_group_apply_kurtosis(ds_in,ds_out): + kurtosis = cuda.shared.array(shape=(TPB), dtype=float32) + compute_kurtosis(ds_in,kurtosis) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = kurtosis[0] + +@cuda.jit(device=True) +def gd_group_apply_copy_first(ds_in,ds_out): + cache = cuda.shared.array(shape=(1), dtype=float32) + compute_first(ds_in,cache) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = cache[0] + +@cuda.jit(device=True) +def gd_group_apply_copy_last(ds_in,ds_out): + cache = cuda.shared.array(shape=(1), dtype=float32) + compute_last(ds_in,cache) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = cache[0] + +def groupby_median(df,idcol,col): + outcol = 'median_%s'%(col) + func = \ + '''def median(df):\n + df["%s"] = df["%s"].nsmallest((len(df)+1)//2)[-1] + return df + '''%(outcol,col) + exec(func) + func = eval('median') + df = df.groupby(idcol, method="cudf").apply(func) + return df + +def cudf_groupby_agg(df,idcol,col,func_name): + # python trick to get named arguments + if func_name in ['mean','max','min','sum','count']: + return df.groupby(idcol,as_index=False).agg({col:func_name}) + outcol = '%s_%s'%(func_name,col) + if func_name == 'median': + df = groupby_median(df,idcol,col) + else: + fn = '%s(%s,%s)'%(func_name,col,outcol) + func = \ + '''def %s:\n + gd_group_apply_%s + '''%(fn,fn) + exec(func) + func = eval(func_name) + df = df.groupby(idcol,method='cudf').apply_grouped(func, + incols=[col], + outcols={outcol: np.float32}, + tpb=TPB) + dg = df.groupby(idcol).agg({outcol:'mean'}) + df.drop_column(outcol) + dg.columns = [outcol] + dg = dg.reset_index() + return dg + +def cudf_groupby_aggs(df,group_id_col,aggs): + """ + Parameters + ---------- + df : cudf dataframe + dataframe to be grouped + group_id_col : string + name of the column which is used as the key of the group + aggs : dictionary + key is the name of column for which aggregation is calculated + values is the name of function for aggregation + Returns + ------- + dg : cudf dataframe + result of groupby aggregation + """ + dg = None + for col,funcs in aggs.items(): + for func in funcs: + if dg is None: + dg = cudf_groupby_agg(df,group_id_col,col,func) + else: + tmp = cudf_groupby_agg(df,group_id_col,col,func) + #print(tmp.columns) + #print(dg.columns) + dg = dg.merge(tmp,on=[group_id_col],how='left') + return dg + +def drop_duplicates(df,by,keep='first'): + if keep not in ['first','last']: + raise NotImplementedError(keep) + + cols = [i for i in df.columns if i!=by] + aggs = {i:['copy_%s'%keep] for i in cols} + dg = cudf_groupby_aggs(df,group_id_col=by,aggs=aggs) + for i in cols: + dg = rename_col(dg,'copy_%s_%s'%(keep,i),i) + return dg diff --git a/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_full_demo.ipynb b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_full_demo.ipynb new file mode 100644 index 00000000..690ed2ad --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_full_demo.ipynb @@ -0,0 +1,1226 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "GPU_id = 0\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cudf version 0.7.2+0.g3ebd286.dirty\n" + ] + } + ], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import numpy as np\n", + "import math\n", + "import xgboost as xgb\n", + "import seaborn as sns\n", + "from functools import partial\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from sklearn.model_selection import train_test_split\n", + "from termcolor import colored\n", + "from cudf_workaround import cudf_groupby_aggs\n", + "import matplotlib.pyplot as plt\n", + "import time\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "sns.set()\n", + "print('cudf version',gd.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**This notebook demos the 8th place solution (8/1094) of Rapids.ai for the __[PLAsTiCC Astronomical Classification](https://www.kaggle.com/c/PLAsTiCC-2018/leaderboard)__. The demo shows up to 140x speedup for ETL and 25x end-to-end speedup over the CPU solution. More details can be found at our __[blog](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95)__** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Table of contents\n", + "[1. Global variables](#global)
\n", + "[2. Functions](#func)
\n", + "[3. ETL & Visualizations](#etl)
\n", + "[4. Model training](#train)
\n", + "[5. Conclusions](#conclusions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1. Global variables " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Original data download and description __[link](https://www.kaggle.com/c/PLAsTiCC-2018/data)__**." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "PATH = '../data'\n", + "#PATH = '/raid/data/ml/lsst/input'\n", + "#PATH = '../lsst/input'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tested on V100 with 32 GB GPU memory. If memory capacity is smaller, the input data will be sampled accordingly.**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "GPU_MEMORY = 32 # GB. \n", + "#GPU_MEMORY = 16 # GB. Both 32 and 16 GB have been tested" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "TEST_ROWS = 453653104 # number of rows in test data\n", + "# no skip if your gpu has 32 GB memory\n", + "# otherwise, skip rows porportionally\n", + "OVERHEAD = 1.2 # cudf 0.7 introduces 20% memory overhead\n", + "SKIP_ROWS = int((1 - GPU_MEMORY/(32.0*OVERHEAD))*TEST_ROWS) \n", + "GPU_RUN_TIME = {}\n", + "CPU_RUN_TIME = {}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "GPU_id = 0\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2. Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def scatter(x,y,values,xlabel='x',ylabel='y',title=None):\n", + " colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']\n", + " colors = np.array([colors[i] for i in values])\n", + " ps = []\n", + " bs = []\n", + " bands = ['passband_%s'%i for i in ['u', 'g', 'r', 'i', 'z','y']]\n", + " for i in sorted(np.unique(values)):\n", + " mask = values==i\n", + " if len(x[mask]):\n", + " p = plt.scatter(x[mask],y[mask],c=colors[mask])\n", + " ps.append(p)\n", + " bs.append(bands[i])\n", + " plt.legend(ps,bs,scatterpoints=1)\n", + " if title is not None:\n", + " plt.title(title)\n", + " \n", + " plt.xlim([np.min(x)-10,np.min(x)+1500])\n", + " plt.ylabel('y: %s'%ylabel)\n", + " plt.xlabel('x: %s'%xlabel)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def multi_weighted_logloss(y_true, y_preds, classes, class_weights):\n", + " \"\"\"\n", + " refactor from\n", + " @author olivier https://www.kaggle.com/ogrellier\n", + " multi logloss for PLAsTiCC challenge\n", + " \"\"\"\n", + " y_p = y_preds.reshape(y_true.shape[0], len(classes), order='F')\n", + " y_ohe = pd.get_dummies(y_true)\n", + " y_p = np.clip(a=y_p, a_min=1e-15, a_max=1 - 1e-15)\n", + " y_p_log = np.log(y_p)\n", + " y_log_ones = np.sum(y_ohe.values * y_p_log, axis=0)\n", + " nb_pos = y_ohe.sum(axis=0).values.astype(float)\n", + " class_arr = np.array([class_weights[k] for k in sorted(class_weights.keys())])\n", + " y_w = y_log_ones * class_arr / nb_pos\n", + "\n", + " loss = - np.sum(y_w) / np.sum(class_arr)\n", + " return loss\n", + "\n", + "def xgb_multi_weighted_logloss(y_predicted, y_true, classes, class_weights):\n", + " loss = multi_weighted_logloss(y_true.get_label(), y_predicted, \n", + " classes, class_weights)\n", + " return 'wloss', loss" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CPU ETL functions " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def ravel_column_names(cols):\n", + " d0 = cols.get_level_values(0)\n", + " d1 = cols.get_level_values(1)\n", + " return [\"%s_%s\"%(i,j) for i,j in zip(d0,d1)]\n", + " \n", + "def etl_cpu(df,df_meta):\n", + " df['flux_ratio_sq'] = np.power(df['flux'] / df['flux_err'], 2.0)\n", + " df['flux_by_flux_ratio_sq'] = df['flux'] * df['flux_ratio_sq']\n", + " aggs = {\n", + " 'passband': ['mean'], \n", + " 'flux': ['min', 'max', 'mean'],\n", + " 'flux_err': ['min', 'max', 'mean'],\n", + " 'detected': ['mean'],\n", + " 'mjd':['max','min'],\n", + " 'flux_ratio_sq':['sum'],\n", + " 'flux_by_flux_ratio_sq':['sum'],\n", + " }\n", + " agg_df = df.groupby('object_id').agg(aggs)\n", + " agg_df.columns = ravel_column_names(agg_df.columns)\n", + " \n", + " agg_df['flux_diff'] = agg_df['flux_max'] - agg_df['flux_min']\n", + " agg_df['flux_dif2'] = (agg_df['flux_max'] - agg_df['flux_min']) / agg_df['flux_mean']\n", + " agg_df['flux_w_mean'] = agg_df['flux_by_flux_ratio_sq_sum'] / agg_df['flux_ratio_sq_sum']\n", + " agg_df['flux_dif3'] = (agg_df['flux_max'] - agg_df['flux_min']) / agg_df['flux_w_mean']\n", + " \n", + " agg_df['mjd_diff'] = agg_df['mjd_max'] - agg_df['mjd_min']\n", + " agg_df = agg_df.drop(['mjd_max','mjd_min'],axis=1)\n", + " \n", + " agg_df = agg_df.reset_index()\n", + " df_meta = df_meta.drop(['ra','decl','gal_l','gal_b'],axis=1)\n", + " df_meta = df_meta.merge(agg_df,on='object_id',how='left')\n", + " return df_meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU ETL functions " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# To save GPU memory, we drop the column as soon as it is done with groupby\n", + "# this hits performance a little but avoids GPU OOM.\n", + "def groupby_aggs(df,aggs,col):\n", + " res = None\n", + " for i,j in aggs.items():\n", + " for k in j:\n", + " #print(i,k)\n", + " tmp = df.groupby(col,as_index=False).agg({i:[k]})\n", + " if res is None:\n", + " res = tmp\n", + " else:\n", + " res = res.merge(tmp,on=[col],how='left')\n", + " df.drop_column(i)\n", + " return res\n", + "\n", + "def etl_gpu(df,df_meta):\n", + " aggs = {\n", + " 'passband': ['mean'], \n", + " 'detected': ['mean'],\n", + " 'mjd':['max','min'],\n", + " }\n", + " agg_df = groupby_aggs(df,aggs,'object_id')\n", + " # at this step, columns ['passband','detected','mjd'] are deleted \n", + " \n", + " df['flux_ratio_sq'] = df['flux'] / df['flux_err']\n", + " df['flux_ratio_sq'] = df['flux_ratio_sq'].applymap(lambda x: math.pow(x,2))\n", + " df['flux_by_flux_ratio_sq'] = df['flux'] * df['flux_ratio_sq']\n", + " \n", + " aggs2 = {\n", + " 'flux_ratio_sq':['sum'],\n", + " 'flux_by_flux_ratio_sq':['sum'],\n", + " 'flux': ['min', 'max', 'mean'],\n", + " 'flux_err': ['min', 'max', 'mean'],\n", + " }\n", + " agg_df2 = groupby_aggs(df,aggs2,'object_id')\n", + " agg_df = agg_df.merge(agg_df2,on=['object_id'],how='left')\n", + " del agg_df2\n", + "\n", + " agg_df['flux_diff'] = agg_df['max_flux'] - agg_df['min_flux']\n", + " agg_df['flux_dif2'] = (agg_df['max_flux'] - agg_df['min_flux']) / agg_df['mean_flux']\n", + " agg_df['flux_w_mean'] = agg_df['sum_flux_by_flux_ratio_sq'] / agg_df['sum_flux_ratio_sq']\n", + " agg_df['flux_dif3'] = (agg_df['max_flux'] - agg_df['min_flux']) / agg_df['flux_w_mean']\n", + " \n", + " agg_df['mjd_diff'] = agg_df['max_mjd'] - agg_df['min_mjd']\n", + " agg_df.drop_column('max_mjd')\n", + " agg_df.drop_column('min_mjd')\n", + " \n", + " for col in ['ra','decl','gal_l','gal_b']:\n", + " df_meta.drop_column(col)\n", + " \n", + " df_meta = df_meta.merge(agg_df,on=['object_id'],how='left')\n", + " return df_meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3. ETL & Visualizations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load data for ETL part 1\n", + "**GPU load data**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 16.2 s, sys: 6.67 s, total: 22.9 s\n", + "Wall time: 22.9 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = 'load data part1'\n", + "ts_cols = ['object_id', 'mjd', 'passband', 'flux', 'flux_err', 'detected']\n", + "ts_dtypes = ['int32', 'float32', 'int32', 'float32','float32','int32']\n", + "\n", + "train_gd = gd.read_csv('%s/training_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1)\n", + "test_gd = gd.read_csv('%s/test_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1+SKIP_ROWS) # skip the header\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**CPU load data**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4min 7s, sys: 1min 17s, total: 5min 25s\n", + "Wall time: 3min 55s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "train = pd.read_csv('%s/training_set.csv'%PATH)\n", + "test = pd.read_csv('%s/test_set.csv'%PATH,skiprows=range(1,1+SKIP_ROWS))\n", + "CPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mwe achieve 10.279 speedup for load data part1.\u001b[0m\n" + ] + } + ], + "source": [ + "speedup = CPU_RUN_TIME[step]/GPU_RUN_TIME[step]\n", + "line = \"we achieve %.3f speedup for %s.\"%(speedup,step)\n", + "print(colored(line,'green'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizations" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "oid = 615\n", + "mask = train.object_id== oid\n", + "scatter(train.loc[mask,'mjd'].values,\n", + " train.loc[mask,'flux'].values,\n", + " values=train.loc[mask,'passband'].values,\n", + " xlabel='time',ylabel='flux',title='object %d class 42'%oid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ETL part 1 with 100x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 8 ms, sys: 12 ms, total: 20 ms\n", + "Wall time: 18.8 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "# to save memory, we need to move dataframe to cpu and only keep the columns we need\n", + "test_gd = test_gd[['object_id','flux']]\n", + "train_gd = train_gd[['object_id','flux']]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 11.1 s, sys: 1.54 s, total: 12.7 s\n", + "Wall time: 5.11 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# GPU\n", + "step = 'ETL part1'\n", + "start = time.time()\n", + "aggs = {'flux':['skew']}\n", + "test_gd = cudf_groupby_aggs(test_gd,group_id_col='object_id',aggs=aggs)\n", + "train_gd = cudf_groupby_aggs(train_gd,group_id_col='object_id',aggs=aggs)\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 12min 20s, sys: 39.6 s, total: 12min 59s\n", + "Wall time: 12min 44s\n" + ] + } + ], + "source": [ + "%%time\n", + "# CPU\n", + "start = time.time()\n", + "test = test.groupby('object_id').agg(aggs)\n", + "train = train.groupby('object_id').agg(aggs)\n", + "CPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mwe achieve 149.524 speedup for ETL part1.\u001b[0m\n" + ] + } + ], + "source": [ + "speedup = CPU_RUN_TIME[step]/GPU_RUN_TIME[step]\n", + "line = \"we achieve %.3f speedup for %s.\"%(speedup,step)\n", + "print(colored(line,'green'))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 76 ms, sys: 40 ms, total: 116 ms\n", + "Wall time: 119 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "test_gd = test_gd.sort_values(by='object_id')\n", + "train_gd = train_gd.sort_values(by='object_id')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.83 s, sys: 512 ms, total: 7.34 s\n", + "Wall time: 205 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "test.columns = ['skew_flux']\n", + "test = test.reset_index()\n", + "test = test.sort_values(by='object_id')\n", + "train.columns = ['skew_flux']\n", + "train = train.reset_index()\n", + "train = train.sort_values(by='object_id')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Evaluation of correctness of ETL**" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2953948 2953948\n" + ] + } + ], + "source": [ + "print(len(test),len(test_gd))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test\n", + "object_id, rmse 0.000000\n", + "skew_flux, rmse 0.000002\n", + "train\n", + "object_id, rmse 0.000000\n", + "skew_flux, rmse 0.000006\n" + ] + } + ], + "source": [ + "# RMSE: Root mean square error\n", + "def rmse(a,b):\n", + " return np.mean((a-b)**2)**0.5\n", + "print('test')\n", + "for col in test.columns:\n", + " if col in test_gd.columns:\n", + " print(\"%s, rmse %.6f\"%(col,rmse(test[col].values,test_gd[col].to_pandas().values)))\n", + "print('train')\n", + "for col in train.columns:\n", + " if col in train_gd.columns:\n", + " print(\"%s, rmse %.6f\"%(col,rmse(train[col].values,train_gd[col].to_pandas().values)))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2953948 2953948\n" + ] + } + ], + "source": [ + "# Rename the variables\n", + "test_flux_skew_gd = test_gd\n", + "test_flux_skew = test\n", + "train_flux_skew_gd = train_gd\n", + "train_flux_skew = train\n", + "print(len(test_gd),len(test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load data for the ETL part 2 with 11x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 22.2 s, sys: 8.02 s, total: 30.2 s\n", + "Wall time: 23 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# read data on gpu\n", + "step = 'load data part2'\n", + "start = time.time()\n", + "ts_cols = ['object_id', 'mjd', 'passband', 'flux', 'flux_err', 'detected']\n", + "ts_dtypes = ['int32', 'float32', 'int32', 'float32','float32','int32']\n", + "\n", + "test_gd = gd.read_csv('%s/test_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1+SKIP_ROWS) # skip the header\n", + "train_gd = gd.read_csv('%s/training_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1)\n", + "\n", + "cols = ['object_id', 'ra', 'decl', 'gal_l', 'gal_b', 'ddf',\n", + " 'hostgal_specz', 'hostgal_photoz', 'hostgal_photoz_err', \n", + " 'distmod','mwebv', 'target']\n", + "dtypes = ['int32']+['float32']*4+['int32']+['float32']*5+['int32']\n", + "\n", + "train_meta_gd = gd.read_csv('%s/training_set_metadata.csv'%PATH,\n", + " names=cols,dtype=dtypes,skiprows=1)\n", + "del cols[-1],dtypes[-1]\n", + "test_meta_gd = gd.read_csv('%s/test_set_metadata.csv'%PATH,\n", + " names=cols,dtype=dtypes,skiprows=1)\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3min 58s, sys: 1min 1s, total: 5min\n", + "Wall time: 4min\n" + ] + } + ], + "source": [ + "%%time\n", + "# read data on cpu\n", + "start = time.time()\n", + "test = pd.read_csv('%s/test_set.csv'%PATH,skiprows=range(1,1+SKIP_ROWS))\n", + "test_meta = pd.read_csv('%s/test_set_metadata.csv'%PATH)\n", + "\n", + "train = pd.read_csv('%s/training_set.csv'%PATH)\n", + "train_meta = pd.read_csv('%s/training_set_metadata.csv'%PATH)\n", + "CPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mwe achieve 10.428 speedup for load data part2.\u001b[0m\n" + ] + } + ], + "source": [ + "speedup = CPU_RUN_TIME[step]/GPU_RUN_TIME[step]\n", + "line = \"we achieve %.3f speedup for %s.\"%(speedup,step)\n", + "print(colored(line,'green'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ETL part2 with 9x ~ 12x speedup " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 8.01 s, sys: 1.85 s, total: 9.86 s\n", + "Wall time: 6.76 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# GPU\n", + "start = time.time()\n", + "step = 'ETL part2'\n", + "train_final_gd = etl_gpu(train_gd,train_meta_gd)\n", + "train_final_gd = train_final_gd.merge(train_flux_skew_gd,on=['object_id'],how='left')\n", + "test_final_gd = etl_gpu(test_gd,test_meta_gd)\n", + "del test_gd,test_meta_gd\n", + "test_final_gd = test_final_gd.merge(test_flux_skew_gd,on=['object_id'],how='left')\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4min 26s, sys: 2min 10s, total: 6min 37s\n", + "Wall time: 2min 19s\n" + ] + } + ], + "source": [ + "%%time\n", + "#CPU\n", + "start = time.time()\n", + "train_final = etl_cpu(train,train_meta)\n", + "train_final = train_final.merge(train_flux_skew,on=['object_id'],how='left')\n", + "test_final = etl_cpu(test,test_meta)\n", + "test_final = test_final.merge(test_flux_skew,on=['object_id'],how='left')\n", + "CPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mwe achieve 20.610 speedup for ETL part2.\u001b[0m\n" + ] + } + ], + "source": [ + "speedup = CPU_RUN_TIME[step]/GPU_RUN_TIME[step]\n", + "line = \"we achieve %.3f speedup for %s.\"%(speedup,step)\n", + "print(colored(line,'green'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4. Model training" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### train and validation with 5x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 6 15 16 42 52 53 62 64 65 67 88 90 92 95]\n" + ] + } + ], + "source": [ + "# CPU\n", + "X = train_final.drop(['object_id','target'],axis=1).values\n", + "y = train_final['target']\n", + "Xt = test_final.drop(['object_id'],axis=1).values\n", + "assert X.shape[1] == Xt.shape[1]\n", + "classes = sorted(y.unique()) \n", + "# Taken from Giba's topic : https://www.kaggle.com/titericz\n", + "# https://www.kaggle.com/c/PLAsTiCC-2018/discussion/67194\n", + "# with Kyle Boone's post https://www.kaggle.com/kyleboone\n", + "class_weights = {c: 1 for c in classes}\n", + "class_weights.update({c:2 for c in [64, 15]})\n", + "\n", + "lbl = LabelEncoder()\n", + "y = lbl.fit_transform(y)\n", + "print(lbl.classes_)\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1,stratify=y, random_state=126)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "cpu_params = {\n", + " 'objective': 'multi:softprob', \n", + " 'tree_method': 'hist', \n", + " 'nthread': 16, \n", + " 'num_class':14,\n", + " 'max_depth': 7, \n", + " 'silent':1,\n", + " 'subsample':0.7,\n", + " 'colsample_bytree': 0.7,}" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "func_loss = partial(xgb_multi_weighted_logloss, \n", + " classes=classes, \n", + " class_weights=class_weights)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0]\teval-merror:0.338854\ttrain-merror:0.26745\teval-wloss:1.93513\ttrain-wloss:1.83754\n", + "Multiple eval metrics have been passed: 'train-wloss' will be used for early stopping.\n", + "\n", + "Will train until train-wloss hasn't improved in 10 rounds.\n", + "[59]\teval-merror:0.277707\ttrain-merror:0.000849\teval-wloss:1.20399\ttrain-wloss:0.088463\n", + "\u001b[32mvalidation loss 1.2040\u001b[0m\n", + "CPU times: user 5min 10s, sys: 4.22 s, total: 5min 14s\n", + "Wall time: 21.5 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = 'training'\n", + "dtrain = xgb.DMatrix(data=X_train, label=y_train)\n", + "dvalid = xgb.DMatrix(data=X_test, label=y_test)\n", + "dtest = xgb.DMatrix(data=Xt)\n", + "watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n", + "clf = xgb.train(cpu_params, dtrain=dtrain,\n", + " num_boost_round=60,evals=watchlist,\n", + " feval=func_loss,early_stopping_rounds=10,\n", + " verbose_eval=1000)\n", + "yp = clf.predict(dvalid)\n", + "cpu_loss = multi_weighted_logloss(y_test, yp, classes, class_weights)\n", + "ysub = clf.predict(dtest)\n", + "line = 'validation loss %.4f'%cpu_loss\n", + "print(colored(line,'green'))\n", + "CPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# GPU\n", + "y = train_final_gd['target'].to_array()\n", + "y = lbl.fit_transform(y)\n", + "cols = [i for i in test_final_gd.columns if i not in ['object_id','target']]\n", + "for col in cols:\n", + " train_final_gd[col] = train_final_gd[col].fillna(0).astype('float32')\n", + "\n", + "for col in cols:\n", + " test_final_gd[col] = test_final_gd[col].fillna(0).astype('float32')" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "X = train_final_gd[cols].as_matrix()\n", + "Xt = test_final_gd[cols].as_matrix()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1,stratify=y, random_state=126)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# GPU\n", + "gpu_params = cpu_params.copy()\n", + "gpu_params.update({'objective': 'multi:softprob',\n", + " 'tree_method': 'gpu_hist', \n", + " })" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0]\teval-merror:0.336306\ttrain-merror:0.283591\teval-wloss:2.01393\ttrain-wloss:1.89389\n", + "Multiple eval metrics have been passed: 'train-wloss' will be used for early stopping.\n", + "\n", + "Will train until train-wloss hasn't improved in 10 rounds.\n", + "[59]\teval-merror:0.271338\ttrain-merror:0.001841\teval-wloss:1.32848\ttrain-wloss:0.093403\n", + "\u001b[32mvalidation loss 1.3285\u001b[0m\n", + "CPU times: user 1min 5s, sys: 5.98 s, total: 1min 11s\n", + "Wall time: 5.83 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "dtrain = xgb.DMatrix(data=X_train, label=y_train)\n", + "dvalid = xgb.DMatrix(data=X_test, label=y_test)\n", + "dtest = xgb.DMatrix(data=Xt)\n", + "watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n", + "clf = xgb.train(gpu_params, dtrain=dtrain,\n", + " num_boost_round=60,evals=watchlist,\n", + " feval=func_loss,early_stopping_rounds=10,\n", + " verbose_eval=1000)\n", + "yp = clf.predict(dvalid)\n", + "gpu_loss = multi_weighted_logloss(y_test, yp, classes, class_weights)\n", + "ysub = clf.predict(dtest)\n", + "line = 'validation loss %.4f'%gpu_loss\n", + "print(colored(line,'green'))\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mwe achieve 3.691 speedup for training.\u001b[0m\n" + ] + } + ], + "source": [ + "speedup = CPU_RUN_TIME[step]/GPU_RUN_TIME[step]\n", + "line = \"we achieve %.3f speedup for %s.\"%(speedup,step)\n", + "print(colored(line,'green'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5. Conclustions" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multiclassification Loss (lower the better):\n", + "CPU: 1.2040 GPU: 1.3285\n" + ] + } + ], + "source": [ + "print(\"Multiclassification Loss (lower the better):\")\n", + "print(\"CPU: %.4f GPU: %.4f\"%(cpu_loss,gpu_loss))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'load data part1': 235.28188014030457,\n", + " 'ETL part1': 764.536393404007,\n", + " 'load data part2': 240.00793552398682,\n", + " 'ETL part2': 139.33078122138977,\n", + " 'training': 21.503350973129272}" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CPU_RUN_TIME" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'load data part1': 22.890596628189087,\n", + " 'ETL part1': 5.113122224807739,\n", + " 'load data part2': 23.016581058502197,\n", + " 'ETL part2': 6.760360956192017,\n", + " 'training': 5.825342893600464}" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GPU_RUN_TIME" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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W5dzzvk2Tz/9NAcddEjbajBAkiRJkiRJw8K4lcay62GX177fGaftzvza97p8MUCSVLuB+lRgMHR0TGx3CctkqH9iIkmSJC0PnnnmGU444QvMmvUXxowZy3rrrc+7370Xp59+GtOmbUzmTFZeeRyf+9yxbLjhRgBcddUVXHLJRSxZsoQJEybwmc8cyXrrbQDAeeedy4033sCSJUuYOnU1jjji80yZMpUFCxZw8snH85e/PMArXzmF1VdfncmTpwBw4onHMn36Juy55z4veXziiccyduxYHnzwL8ydO5fNN9+CQw89ghVWWOFlv/bh+ReepCFtoD4VUO/8xESSJEkaeL/97W089dRCzjvvIgDmzZvH/ff/mQceuI9DDvkMxxxzPFdddQUnnPAFzjnnf/jDH+7mhhuu5ayzvsuKK67IbbfdwkknHc+3vvV9rrnmSv72t7/x7W+fy+jRo7n00os588yv84UvnMAPfvBdxo9fhfPP/xlz585l//0/wA477NhSjffc80e+9a3vs+KKK/LZz36Kn//8kufDppfDAEmSJEmSJKkF06ZtzKxZD3Laaaew+eZbss02bwJgnXXWZfPNtwTg7W/fhVNPPZGFCxdwyy2/4f777+PjH98PgK6uLubPnwfAzTf/hpkz72X//fcFYMmSxUyYMAGAu+++k0MO+SwAr3jFK9huux1arnGHHXZk/PjxAOy88zv59a9vMECSJEmSJEkaLGuvvQ7nnXchd955B7fffgvf+c5Zzwc9Penqgne8Yzc++tEDeljXxYc/vD/vfOfu/aphzJgxLF3a9fzjRYue7df2y2r0oDyLJEmSJEnSMPfEE48zevQYtt12ew4++DDmzu1k3rx5/O1vj/CHP9wNwLXXXs1GG01jlVUm8MY3/jtXX/0LnnjicQCWLFnCzJn3AvCmN23LpZdezLx5xYikRYsWcd99fwZgiy224sorZwDwz3/O5Te/+dXzNay99rrMnPknAJ588knuuut3L6rxV7+6nqeffprFixdz9dVXsuWWr6vltTsCSZIkSZIkDQvPPLuYGaf1b8ROq/ttxQMP3M/ZZ58JwNKlS9h33/2YOnUqG200jRkzLuMrXzmJcePGcfTRxwHw2tduwcc//l8ceeShLFmylMWLn+PNb34r06dvwk47vYN//nMun/zkx8v9LeXd796bjTd+Nfvt91FO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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "steps = ['load data part1','ETL part1','load data part2','ETL part2','training']\n", + "GPU_RUN_TIME['Overall'] = sum([GPU_RUN_TIME[i] for i in steps])\n", + "CPU_RUN_TIME['Overall'] = sum([CPU_RUN_TIME[i] for i in steps])\n", + "steps.append('Overall')\n", + "speedup = [CPU_RUN_TIME[i]/GPU_RUN_TIME[i] for i in steps]\n", + "df = pd.DataFrame({'steps':steps, 'speedup':speedup})\n", + "df.plot.bar(x='steps', y='speedup', rot=0, figsize=(20,5), fontsize=15, title='GPU Speedup')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gpu_time = [GPU_RUN_TIME[i] for i in steps]\n", + "cpu_time = [CPU_RUN_TIME[i] for i in steps]\n", + "df = pd.DataFrame({'GPU': gpu_time,'CPU': cpu_time}, index=steps)\n", + "df.plot.bar(rot=0,figsize=(20,5), fontsize=15, title='Running time: seconds')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The rapids solution achieves up to 140x speedup for ETL and 25x end-to-end speedup over the CPU solution with comparable accuracy.**" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb new file mode 100644 index 00000000..90409677 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb @@ -0,0 +1,705 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "GPU_id = 0\n", + "os.environ['CUDA_VISIBLE_DEVICES'] = str(GPU_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7.2+0.g3ebd286.dirty\n" + ] + } + ], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import numpy as np\n", + "import math\n", + "import xgboost as xgb\n", + "import seaborn as sns\n", + "from functools import partial\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from sklearn.model_selection import train_test_split\n", + "from termcolor import colored\n", + "from cudf_workaround import cudf_groupby_aggs\n", + "import matplotlib.pyplot as plt\n", + "import time\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "sns.set()\n", + "print(gd.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**This is a 2 minutes end-to-end gpu-only demos the 8th place solution (8/1094) of Rapids.ai for the __[PLAsTiCC Astronomical Classification](https://www.kaggle.com/c/PLAsTiCC-2018/leaderboard)__.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Table of contents\n", + "[1. Global variables](#global)
\n", + "[2. Functions](#func)
\n", + "[3. ETL & Visualizations](#etl)
\n", + "[4. Model training](#train)
\n", + "[5. Conclusions](#conclusions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1. Global variables " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Original data download and description __[link](https://www.kaggle.com/c/PLAsTiCC-2018/data)__**." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "PATH = '../data'\n", + "#PATH = '/raid/data/ml/lsst/input'\n", + "#PATH = '../lsst/input'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tested on V100 with 32 GB GPU memory. Please reset this variable if memory capacity is smaller, and the input data will be down sampled accordingly.**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "GPU_MEMORY = 32 # GB. \n", + "#GPU_MEMORY = 16 # GB. Both 32 and 16 GB have been tested" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "TEST_ROWS = 453653104 # number of rows in test data\n", + "# no skip if your gpu has 32 GB memory\n", + "# otherwise, skip rows porportionally\n", + "OVERHEAD = 1.2 # cudf 0.7 introduces 20% memory overhead comparing to cudf 0.4\n", + "SKIP_ROWS = int((1 - GPU_MEMORY/(32.0*OVERHEAD))*TEST_ROWS) \n", + "GPU_RUN_TIME = {}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2. Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def scatter(x,y,values,xlabel='x',ylabel='y',title=None):\n", + " colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']\n", + " colors = np.array([colors[i] for i in values])\n", + " ps = []\n", + " bs = []\n", + " bands = ['passband_%s'%i for i in ['u', 'g', 'r', 'i', 'z','y']]\n", + " for i in sorted(np.unique(values)):\n", + " mask = values==i\n", + " if len(x[mask]):\n", + " p = plt.scatter(x[mask],y[mask],c=colors[mask])\n", + " ps.append(p)\n", + " bs.append(bands[i])\n", + " plt.legend(ps,bs,scatterpoints=1)\n", + " if title is not None:\n", + " plt.title(title)\n", + " \n", + " plt.xlim([np.min(x)-10,np.min(x)+1500])\n", + " plt.ylabel('y: %s'%ylabel)\n", + " plt.xlabel('x: %s'%xlabel)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def multi_weighted_logloss(y_true, y_preds, classes, class_weights):\n", + " \"\"\"\n", + " refactor from\n", + " @author olivier https://www.kaggle.com/ogrellier\n", + " multi logloss for PLAsTiCC challenge\n", + " \"\"\"\n", + " y_p = y_preds.reshape(y_true.shape[0], len(classes), order='F')\n", + " y_ohe = pd.get_dummies(y_true)\n", + " y_p = np.clip(a=y_p, a_min=1e-15, a_max=1 - 1e-15)\n", + " y_p_log = np.log(y_p)\n", + " y_log_ones = np.sum(y_ohe.values * y_p_log, axis=0)\n", + " nb_pos = y_ohe.sum(axis=0).values.astype(float)\n", + " class_arr = np.array([class_weights[k] for k in sorted(class_weights.keys())])\n", + " y_w = y_log_ones * class_arr / nb_pos\n", + "\n", + " loss = - np.sum(y_w) / np.sum(class_arr)\n", + " return loss\n", + "\n", + "def xgb_multi_weighted_logloss(y_predicted, y_true, classes, class_weights):\n", + " loss = multi_weighted_logloss(y_true.get_label(), y_predicted, \n", + " classes, class_weights)\n", + " return 'wloss', loss" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU ETL functions " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# To save GPU memory, we drop the column as soon as it is done with groupby\n", + "# this hits performance a little but avoids GPU OOM.\n", + "def groupby_aggs(df,aggs,col):\n", + " res = None\n", + " for i,j in aggs.items():\n", + " for k in j:\n", + " #print(i,k)\n", + " tmp = df.groupby(col,as_index=False).agg({i:[k]})\n", + " if res is None:\n", + " res = tmp\n", + " else:\n", + " res = res.merge(tmp,on=[col],how='left')\n", + " df.drop_column(i)\n", + " return res\n", + "\n", + "def etl_gpu(df,df_meta):\n", + " aggs = {\n", + " 'passband': ['mean'], \n", + " 'detected': ['mean'],\n", + " 'mjd':['max','min'],\n", + " }\n", + " agg_df = groupby_aggs(df,aggs,'object_id')\n", + " # at this step, columns ['passband','detected','mjd'] are deleted \n", + " \n", + " df['flux_ratio_sq'] = df['flux'] / df['flux_err']\n", + " df['flux_ratio_sq'] = df['flux_ratio_sq'].applymap(lambda x: math.pow(x,2))\n", + " df['flux_by_flux_ratio_sq'] = df['flux'] * df['flux_ratio_sq']\n", + " \n", + " aggs2 = {\n", + " 'flux_ratio_sq':['sum'],\n", + " 'flux_by_flux_ratio_sq':['sum'],\n", + " 'flux': ['min', 'max', 'mean'],\n", + " 'flux_err': ['min', 'max', 'mean'],\n", + " }\n", + " agg_df2 = groupby_aggs(df,aggs2,'object_id')\n", + " agg_df = agg_df.merge(agg_df2,on=['object_id'],how='left')\n", + " del agg_df2\n", + "\n", + " agg_df['flux_diff'] = agg_df['max_flux'] - agg_df['min_flux']\n", + " agg_df['flux_dif2'] = (agg_df['max_flux'] - agg_df['min_flux']) / agg_df['mean_flux']\n", + " agg_df['flux_w_mean'] = agg_df['sum_flux_by_flux_ratio_sq'] / agg_df['sum_flux_ratio_sq']\n", + " agg_df['flux_dif3'] = (agg_df['max_flux'] - agg_df['min_flux']) / agg_df['flux_w_mean']\n", + " \n", + " agg_df['mjd_diff'] = agg_df['max_mjd'] - agg_df['min_mjd']\n", + " agg_df.drop_column('max_mjd')\n", + " agg_df.drop_column('min_mjd')\n", + " \n", + " for col in ['ra','decl','gal_l','gal_b']:\n", + " df_meta.drop_column(col)\n", + " \n", + " df_meta = df_meta.merge(agg_df,on=['object_id'],how='left')\n", + " return df_meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3. ETL & Visualizations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load data for ETL part 1\n", + "**GPU load data**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 17.9 s, sys: 7.14 s, total: 25.1 s\n", + "Wall time: 25 s\n" + ] + } + ], + "source": [ + "%%time\n", + "start = time.time()\n", + "step = 'load data part1'\n", + "ts_cols = ['object_id', 'mjd', 'passband', 'flux', 'flux_err', 'detected']\n", + "ts_dtypes = ['int32', 'float32', 'int32', 'float32','float32','int32']\n", + "\n", + "train_gd = gd.read_csv('%s/training_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1)\n", + "test_gd = gd.read_csv('%s/test_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1+SKIP_ROWS) # skip the header\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizations" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "oid = 615\n", + "train = train_gd.to_pandas()\n", + "mask = train.object_id== oid\n", + "scatter(train.loc[mask,'mjd'].values,\n", + " train.loc[mask,'flux'].values,\n", + " values=train.loc[mask,'passband'].values,\n", + " xlabel='time',ylabel='flux',title='object %d class 42'%oid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ETL part 1 with 100x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4 ms, sys: 16 ms, total: 20 ms\n", + "Wall time: 19.4 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "# to save memory, we need to move dataframe to cpu and only keep the columns we need\n", + "test_gd = test_gd[['object_id','flux']]\n", + "train_gd = train_gd[['object_id','flux']]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 11.1 s, sys: 1.33 s, total: 12.4 s\n", + "Wall time: 5.05 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# GPU\n", + "step = 'ETL part1'\n", + "start = time.time()\n", + "aggs = {'flux':['skew']}\n", + "test_gd = cudf_groupby_aggs(test_gd,group_id_col='object_id',aggs=aggs)\n", + "train_gd = cudf_groupby_aggs(train_gd,group_id_col='object_id',aggs=aggs)\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 80 ms, sys: 20 ms, total: 100 ms\n", + "Wall time: 104 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "test_flux_skew_gd = test_gd.sort_values(by='object_id')\n", + "train_flux_skew_gd = train_gd.sort_values(by='object_id')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load data for the ETL part 2 with 11x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 18.1 s, sys: 6.89 s, total: 25 s\n", + "Wall time: 25 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# read data on gpu\n", + "step = 'load data part2'\n", + "start = time.time()\n", + "ts_cols = ['object_id', 'mjd', 'passband', 'flux', 'flux_err', 'detected']\n", + "ts_dtypes = ['int32', 'float32', 'int32', 'float32','float32','int32']\n", + "\n", + "test_gd = gd.read_csv('%s/test_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1+SKIP_ROWS) # skip the header\n", + "train_gd = gd.read_csv('%s/training_set.csv'%PATH,\n", + " names=ts_cols,dtype=ts_dtypes,skiprows=1)\n", + "\n", + "cols = ['object_id', 'ra', 'decl', 'gal_l', 'gal_b', 'ddf',\n", + " 'hostgal_specz', 'hostgal_photoz', 'hostgal_photoz_err', \n", + " 'distmod','mwebv', 'target']\n", + "dtypes = ['int32']+['float32']*4+['int32']+['float32']*5+['int32']\n", + "\n", + "train_meta_gd = gd.read_csv('%s/training_set_metadata.csv'%PATH,\n", + " names=cols,dtype=dtypes,skiprows=1)\n", + "del cols[-1],dtypes[-1]\n", + "test_meta_gd = gd.read_csv('%s/test_set_metadata.csv'%PATH,\n", + " names=cols,dtype=dtypes,skiprows=1)\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ETL part2 with 9x ~ 12x speedup " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.56 s, sys: 1.58 s, total: 3.15 s\n", + "Wall time: 6.29 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# GPU\n", + "start = time.time()\n", + "step = 'ETL part2'\n", + "train_final_gd = etl_gpu(train_gd,train_meta_gd)\n", + "train_final_gd = train_final_gd.merge(train_flux_skew_gd,on=['object_id'],how='left')\n", + "test_final_gd = etl_gpu(test_gd,test_meta_gd)\n", + "del test_gd,test_meta_gd\n", + "test_final_gd = test_final_gd.merge(test_flux_skew_gd,on=['object_id'],how='left')\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4. Model training" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### train and validation with 5x speedup" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "y = train_final_gd['target'].to_array()\n", + "classes = sorted(np.unique(y)) \n", + "# Taken from Giba's topic : https://www.kaggle.com/titericz\n", + "# https://www.kaggle.com/c/PLAsTiCC-2018/discussion/67194\n", + "# with Kyle Boone's post https://www.kaggle.com/kyleboone\n", + "class_weights = {c: 1 for c in classes}\n", + "class_weights.update({c:2 for c in [64, 15]})\n", + "\n", + "lbl = LabelEncoder()\n", + "y = lbl.fit_transform(y)\n", + "\n", + "cols = [i for i in test_final_gd.columns if i not in ['object_id','target']]\n", + "for col in cols:\n", + " train_final_gd[col] = train_final_gd[col].fillna(0).astype('float32')\n", + "\n", + "for col in cols:\n", + " test_final_gd[col] = test_final_gd[col].fillna(0).astype('float32')\n", + " \n", + "X = train_final_gd[cols].as_matrix()\n", + "Xt = test_final_gd[cols].as_matrix()\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1,stratify=y)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "cpu_params = {\n", + " 'objective': 'multi:softprob', \n", + " 'tree_method': 'hist', \n", + " 'nthread': 16, \n", + " 'num_class':14,\n", + " 'max_depth': 7, \n", + " 'silent':1,\n", + " 'subsample':0.7,\n", + " 'colsample_bytree': 0.7,}" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "func_loss = partial(xgb_multi_weighted_logloss, \n", + " classes=classes, \n", + " class_weights=class_weights)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# GPU\n", + "gpu_params = cpu_params.copy()\n", + "gpu_params.update({'objective': 'multi:softprob',\n", + " 'tree_method': 'gpu_hist', \n", + " })" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0]\teval-merror:0.333758\ttrain-merror:0.284865\teval-wloss:2.01486\ttrain-wloss:1.91747\n", + "Multiple eval metrics have been passed: 'train-wloss' will be used for early stopping.\n", + "\n", + "Will train until train-wloss hasn't improved in 10 rounds.\n", + "[59]\teval-merror:0.26242\ttrain-merror:0.001416\teval-wloss:1.24072\ttrain-wloss:0.091787\n", + "\u001b[32mvalidation loss 1.2407\u001b[0m\n", + "CPU times: user 1min 3s, sys: 5.24 s, total: 1min 8s\n", + "Wall time: 5.72 s\n" + ] + } + ], + "source": [ + "%%time\n", + "step = 'training'\n", + "start = time.time()\n", + "dtrain = xgb.DMatrix(data=X_train, label=y_train)\n", + "dvalid = xgb.DMatrix(data=X_test, label=y_test)\n", + "dtest = xgb.DMatrix(data=Xt)\n", + "watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n", + "clf = xgb.train(gpu_params, dtrain=dtrain,\n", + " num_boost_round=60,evals=watchlist,\n", + " feval=func_loss,early_stopping_rounds=10,\n", + " verbose_eval=1000)\n", + "yp = clf.predict(dvalid)\n", + "gpu_loss = multi_weighted_logloss(y_test, yp, classes, class_weights)\n", + "ysub = clf.predict(dtest)\n", + "line = 'validation loss %.4f'%gpu_loss\n", + "print(colored(line,'green'))\n", + "GPU_RUN_TIME[step] = time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5. Conclustions" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'load data part1': 25.04227304458618,\n", + " 'ETL part1': 5.047987222671509,\n", + " 'load data part2': 25.019412517547607,\n", + " 'ETL part2': 6.285659313201904,\n", + " 'training': 5.7185375690460205}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GPU_RUN_TIME" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "steps = ['load data part1','ETL part1','load data part2','ETL part2','training']\n", + "GPU_RUN_TIME['Overall'] = sum([GPU_RUN_TIME[i] for i in steps])\n", + "steps.append('Overall')\n", + "gpu_time = [GPU_RUN_TIME[i] for i in steps]\n", + "df = pd.DataFrame({'GPU': gpu_time}, index=steps)\n", + "df.plot.bar(rot=0,figsize=(20,5), fontsize=15, title='Running time: seconds')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander.ipynb b/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander.ipynb new file mode 100644 index 00000000..bcaf4a8c --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander.ipynb @@ -0,0 +1,380 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import time\n", + "import xgboost as xgb\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook includes the best single model of Rapids.ai team for [Santander Customer Transaction Prediction](https://www.kaggle.com/c/santander-customer-transaction-prediction/leaderboard). We placed **17/8808** in the competition." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Reading CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200000, 202)\n", + "CPU times: user 300 ms, sys: 292 ms, total: 592 ms\n", + "Wall time: 593 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "PATH = '../input'\n", + "cols = ['ID_code', 'target'] + ['var_%d'%i for i in range(200)]\n", + "dtypes = ['int32', 'int32'] + ['float32' for i in range(200)]\n", + "train_gd = gd.read_csv('%s/train.csv'%PATH,names=cols,dtype=dtypes,skiprows=1)\n", + "print(train_gd.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### KDE for a single column" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.stats import ks_2samp\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "\n", + "train = train_gd.to_pandas()\n", + "target_mask = train['target'] == 1\n", + "non_target_mask = train['target'] == 0 \n", + "statistics_array = []\n", + "for col in train.columns[2:]:\n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " statistics_array.append(statistic)\n", + " fig, ax = plt.subplots(1, 1, figsize=(10, 4))\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=ax, label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=ax, label='Target == 1')\n", + "\n", + " ax.set_title('name: {}, statistics: {:.5f}, pvalue: {:5f}'.format(col, statistic, pvalue))\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Count encoding" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 32.6 s, sys: 1min 51s, total: 2min 24s\n", + "Wall time: 2min 30s\n" + ] + } + ], + "source": [ + "%%time\n", + "for i in range(200):\n", + " col = 'var_%d'%i\n", + " var_count = train_gd.groupby(col).agg({col:'count'})\n", + " var_count.columns = ['%s_count'%col]\n", + " var_count = var_count.reset_index()\n", + " train_gd = train_gd.merge(var_count,on=col,how='left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing patterns of count==1 group" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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lYmIiIiIiIhIVKtr6+R/XtnM2t1NvF6xP9zhRBwVh0REREREREQkqq2vajr4eMWOhjBGEplUHBIRERERERGRqLa+qhlj4OOTcnjvwwYtmH0YFYdEREREREREJKp9UNXMuJxUzp80nOoWL3uaOsIdUkRRcUhEREREREREotqmfS2U5KVRVjQMgFWVjWGOKLKoOCQiIiIiIiIiUavJ42Nvs5cpI9OYPCKN1MQ4VlRq3aG+VBwSERERERERkai1aV8rAFNGphEbY5g9PptXy6vp6ukNc2SRQ8UhEREREREREYla5XubAZgy0g3AVWfkU9fmY+mW2nCGFVFUHBIRERERERGRqLX8wwZGZyUz3O0C4PxJw8lKSeDp96vCHFnkUHFIRERERERERKJST6/lvR31nD026+CxhLgYLi/N57VN+2ls94Uxusih4pCIiIiIiIiIRKX1VU20ers5e1zWIcevmJ5HV4/ltU37wxRZZFFxSERERERERESi0ivl+4mLMZw/cfghx6fmp5OX7uKV8uowRRZZVBwSERERERERkaj02qb9nDU2i/Tk+EOOG2O4uDiXZdvq8Hb1hCm6yKHikIiIiIiIiIhEnepmL9tq2jhvYo5zYMdb8Op/QKszWuj8ScPxdvXy3o6GMEYZGVQcEhEREREREZGo8872OgDOGZ8F1RvgsSvgnV/CQxdByz7OGptFQlwMb2lLexWHRERERERERCT6rNjRQHpSPFNGpMH7D0NMHNz0DHga4LErSPLVMzU/ndW7GsMdatipOCQiIiIiIiIiUWfTvhZK8tKIsT2w4WmYfClMuAhufAKadsHDlzIzL5ENe1vwdfeGO9ywUnFIRERERERERKJKT69l8/5WpoxMg31roaMRJs9zTo45F65/HOo2c03bY/i6e6mobglvwGGm4pCIiIiIiIiIRJWd9e14u3qZPMINO5Y6B4vO/eiCcR+HqdcxZufTuOikYl9reAKNECoOiYiIiIiIiEhU2VztFHsmj0iDymWQMwVScw69aMatxPhamRf/PltrVBwSEREREREREYkalfUeAMZkuaBqJYw++8iLRp8DKTl8MmkjW2vaQhxhZFFxSERERERERESiSmVdO9mpiaS2bIPOFhg168iLjIHR53BGbzlbqzVySEREREREREQkalTWt1OUlQy7VzgHRs3s/8Kic8ns3o9p2YXH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HE1j0ztobMrRuvvY7AnjEjQ25UjdfVxCzxibJzsuT2QrexGv9K9//Ythw4aRlZVFU1MTt9xyi92RRASNTRFvpbEp4n00LkW8U28cmx7drUykK911113cdddddscQkaNobIp4J41NEe+jcSninXrj2NTMIRERERERERGRXkzFoV7M2/pN9Tb67y/Ho38b9tJ/fzke/duwl/77y/Ho34a99N9fjkX/Lux1Kv/9VRzqpQICAqiqqtKgtYlpmlRVVREQEGB3FPEyGpv20tiU49HYtJfGphyPxqa9NDblWDQu7XWq41I9h3qp5ORkioqKqKiosDtKrxUQEEBycrLdMcTLaGzaT2NTjkVj034am3IsGpv209iUo2lc2u9UxqWKQ72Ur68vGRkZdscQkaNobIp4J41NEe+ksSnifTQuuyctKxMRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVUHBIRERERERER6cVOqDhkGMYMwzC2G4aRbxjGr47x+GTDMNYahtFuGMbMox5zGYaxvuPPbE8FFxERERERERGR0+fzTScYhuEEHgemAUXAKsMwZpumueWw0/YCNwI/P8YlmkzTHOaBrCIiIiIiIiIi4mHfWBwCxgD5pmnuAjAM4zXgEuC/xSHTNAs7HnN3QkYREREREREREekkJ7KsLAnYd9jnRR3HTlSAYRirDcNYbhjGpcc6wTCMWzvOWV1RUXESlxaRzqSxKeKdNDZFvJPGpoh30tgU+WZd0ZA6zTTNUcB3gEcNw+h39AmmaT5pmuYo0zRHxcTEdEEkETkRGpsi3kljU8Q7aWyKeCeNTZFvdiLFoWIg5bDPkzuOnRDTNIs7Pu4CPgOG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d46uGHM86Yqvv2LuHB0dc2tWK1sCDDPGDDLG+HEmmH7piDYvAddFv58GvG2dqtNLwFXR1cwGAcOAD9sndBEREREREREROVHHnPLcWhsyxtwOvA54gUettWuMMbOApdbal4A/A08ZYzYC+3EKSETb/Q1YC4SA22JxpTIRERERERERkUTVqvXwrLWvAq8ese3uJt8HgK+0cOzPgZ+fQIyx5hG3AzgOirlzdMWY40lXfP0Vc+foijHHk674+ivmztEVY44nXfH1V8ydoyvGHE+64uuvmDtHh8Z8zDmHREREREREREQkfrVmziEREREREREREYlTKg6JiIiIiIiIiCQwFYdERERERERERBKYikMiIiIiIiIiIglMxSERERERERERkQSm4pCIiIiIiIiISAJTcUhEREREREREJIGpOCQiIiIiIiIiksBUHBIRERERERERSWAqDomIiIiIiIiIJDAVh0REREREREREEpiKQyIiIiIiIiIiCUzFIRERERERERGRBKbikIiIiIiIiIhIAlNxSEREREREREQkgak4JCIiIiIiIiKSwFQcEhERERERERFJYCoOiYiIiIiIiIgkMBWH5KiMMecaY0qb3N9qjJnUymOvN8Ys6LjoREREREREROREqTgUh4wxZxhj3jTG7DfGlBlj/m6M6eN2XEdjjJlpjHna7ThE2qIr5Jox5l1jzI0unt9vjHk+Wli2xphz3YpFEodys1Xnj/nXSOJPV7juYiA3C40xS40xB6K3ucaYQrfikcSVyPmaqO9fVRzqoowxvqPs7gE8AgwEBgDVwGOdEJZI3FGutYsFwDXAbrcDkfih3Dxheo2kQyg3T9hOYBqQDeQALwHPuhqRxK1EyFdjTN5xHpp471+ttbp10g34IfD8Edt+B/w++v03gHU4ibcZuKVJu3OB0uhj7AaeasN5xwHVR9l/zPM2ub8VmNTC4/TE+QNWBXwI/AxYcMRzLYnuXwacFd0+BWgEgkANsPJYcemm29FuMZxr2Th/VHcCB4DZTfbdBGwE9kfzqG90+0DAAr4mbd8Fbox+fz3OH6/fRB9zC3BxdN/PgTAQiObWAy7/XEqBc92+PnRz9RpQbtrYy83WvEa6xfdNuRmbuQn4gNuAOrevEd1i56Z8bVu+Rl+HfwJfApKO4/VOmPev6jnUuZ4FvmiMyQAwxniBK4Fnovv3Av8GZOIk9W+NMeOaHN8bJ+kGADe34bxnA2uOsv9Y522tB3GSsw/wzeitqSVAEc5zeAb4uzEmxVr7GvAL4Dlrbbq19pR2jksST6zm2lNAGjAK6AX8Nhrf+cC90Rj7ANto26eE44H1OJ8w/hr4szHGWGv/E5gP3B7NrdubO9gYU3GU24/a2k7kKJSbsZubx3qNJL4pN2MsN40xFTjvq+/HeZ8scpDytQ35CvQD5uAUxEqNMf9rjBndhvMnDrerU4l2w6l8fj36/YXApqO0nQ18N/r9uTi9a1LaeL4xOBXas9pwzJHnPWbPIcCL0/PnpCbbfkGTnkPNHHMAOCX6/Uzg6dbGpZtux7rFWq7h/DGMAD2a2fdn4NdN7qdH82kgrftEZWOTfWnR9r2PbOv2jQT65EW3o14Hyk0bc7nZ5vcKusXfTbkZk7nZDfg2cInbsegWWzfl6/HlKzAC53/UEmApcH4rjkmY96/qOdT5ngGmR7+/ms8qvBhjLjbGLI5O+lUBfBGnQnpQmbU20NoTGWOG4lRJv2utnX+Udsc6b2vk4nR9LWmybdsR57nTGLPOGFMZPU/W0c7TTnFJ4oq1XOsH7LfWHmhmX1+a5Iu1tgYoB/JbGcKhsdDW2rrot+mtPFaksyk3Y0hr3ytIQlBuxhhrbS3wEPCkMaaX2/FITFG+Hp9twEpgNTAUp4eTRKk41Pn+DpxrjCkALieayMaYZOAfOOMp86y13YFXAdPkWNvakxhjBgBzgZ9Za586SrvWnLc1yoAQzi+Gg/o3Oc9ZwH/gdCfsET1PZZPzHPbc2jEuSVwxlWs4hdNsY0z3ZvbtxOnae/Axu+HM4bUDqI1uTmvSvndr46MVz8UYU3OU20/a2k7kGJSbDtdzsw2vkSQG5abD9dw8gif6XFr7j7QkBuWrozX5aowxZxlj/hiN5QbgSZzeR5rsvQkVhzqZtbYMp/vbY8AWa+266C4/kEy0yGKMuRi46HjOYYzJB97GmZTroWM0b5fzWmvDwAvATGNMmnGW3LyuSZMMnOJRGeAzxtyNMw72oD3AQGPMwWuy3V4PSUyxlmvW2l04n7r8nzGmhzEmyRhzdnT3X4FvGGOKon/UfwF8YK3dGn0eO4BrjDFeY8w3gSFtCHMPMPgYsaUf5faLtrY7kjEm2RiTEr3rN8akGGNU6E1Qys1DXM3NNr5XkASg3DzE7dy80BgzNhp7JvC/OFMxrGuuvSQm5eshx8xXYBPO0LatwBhr7UXW2r8eq/dUIr5/VXHIHc8Ak2jS/c9aWw18B/gbzh+Aq3Fmcj8eN+Ikycymn1A017Cdz3s7The/3cDjHL7U4evAa8AGnO58AQ4fgvb36NdyY8zydo5LElfM5FrUtThjrD/BmSzw36MxzQX+H84nPbtw/ihe1eS4m4AZOF1wRwGL2hDj74BpxpgDxpjft+G49rQeqMf51PP16PcDjnqExDvlpvu52dbXSBKDctP93OyO8890Jc4/tUOAKW0ZBiQJQ/naunz9urV2uLX259ba0jY8dsK9fzXWtrpXmYiIiIiIiIiIxBn1HBIRERERERERSWAqDnVRxpiftDC53Ry3YxOJJ8o1kdik3BSJTcpNka5D+SpNaViZiIiIiIiIiEgC87kdwJFycnLswIED3Q5DxDXLli3bZ63NdTuOIyk3JdEpN0Vik3JTJDYpN0Viz9HyMuaKQwMHDmTp0qVuhyHiGmPMNrdjaI5yUxKdclMkNik3RWKTclMk9hwtLzXnkIiIiIiIiIhIAlNxSEREREREREQkgak4JCIiIiIiIiKSwGJuziHpHMFgkNLSUgKBgNuhJKyUlBQKCgpISkpyOxSJIcpN9yk3pTnKTfcpN6U5yk33xUNu6jpyXzxcR12dikMJqrS0lIyMDAYOHIgxxu1wEo61lvLyckpLSxk0aJDb4UgMUW66S7kpLVFuuku5KS1RbrorXnJT15G74uU66uo0rCxBBQIBevbsqV9+LjHG0LNnT306IZ+j3HSXclNaotx0l3JTWqLcdFe85KauI3fFy3XU1ak4lMD0y89dev2lJbo23KXXX1qia8Ndev2lJbo23BUvr3+8PI+uKiZf/0AlvPYTaKx1O5JOoeKQiIiIiIiIiEhTb/0MFj8Ia2a7HUmnUHFIXFFeXk5RURFFRUX07t2b/Pz8Q/cbGxs75JzLly/ntdde65DHPpK1lm9/+9sMHTqUMWPGsGLFik45r8iJUm6KxCblpkjsUV5Ke9G1FKN2rXS+JqW4G0cn0YTU4oqePXse+qUwc+ZM0tPTufPOO1t9fDgcxuv1tumcy5cvZ/Xq1UyZMqVNxx2Pl19+mZKSEjZu3MiCBQu47bbbWMa0zdoAACAASURBVLhwYYefV+REKTdFYpNyUyT2KC+lvehailH7NjhfA1XuxtFJVBwSfvryGtbubN8LvrBvJvdMHXVcx06dOpWdO3cSCAT43ve+x4033kgoFCInJ4frr7+et99+m4cffpiysjJmzJhBeno6EyZMoKSkhNmzZ1NTU8Ptt9/O2rVrCQaDzJo1i0mTJjFr1izq6+t59913ueuuu5g2bVq7Puem/vnPf/L1r38dgIkTJ7J7927KysrIzc3tsHNK/FFutj/lprQH5Wb7U25Ke4il3FRedl2xdB2BriVXNdY4XwOV7sbRSVQckpjzxBNPkJ2dTV1dHcXFxVxxxRVkZGRQWVnJ2WefzX333UddXR3Dhw9n4cKF9O/fnyuvvPLQ8bNmzWLKlCk8/vjjHDhwgPHjx7Nq1SruvvtuVq9ezX333fe5c65du5arr7662Xjmz59PRkYG06ZNY+PGjZ/bP2PGDL72ta8dtm3Hjh3069fv0P2CggJ27NgR+78ARY5CuSkSm5SbIrFHeSntRdeSS6x1bgCBCndj6SQqDslxV7E7ym9/+1teeuklAEpLS9m0aRNFRUX4/X4uv/xywPmFNWLECAYMGADA9OnTefLJJwF44403mDNnDr/85S8BZ2nK7du3H/WchYWFxxz7+vzzz5/Q8xJpK+WmclNik3JTuSmxKZZyU3nZdcXSdQS6llwTagAbdr6vV3FIpNPNnTuXefPmsXjxYlJTU5k4cSKBQACA1NTUVi1xaK1l9uzZDBky5LDt8+bNa/GY9q6O5+fnU1JSwhlnnAE4v8jz8/OPGbtIrFJuisQm5aZI7FFeSnvRteSig0PKQMPKRNxQWVlJdnY2qamprFmzhiVLljTbrrCwkPXr11NSUkJBQQHPPffcoX2TJ0/m/vvvP9RF8qOPPmLs2LFkZGRQXV3d4uO1Z3X80ksv5U9/+hNf+cpXWLBgAXl5ebHdbVLkGJSbIrFJuSkSe5SX0l50LbnosOJQYvQc0lL2ElMuueQS6urqKCws5K677mL8+PHNtktLS+OBBx5g0qRJFBcX0717d7KysgC45557qK2tZfTo0YwaNYqZM2cCcP7557Ny5UrGjh3b4d0gp06dSn5+PkOGDOHWW2/lwQcf7NDziXQ05aZIbFJuisQe5aW0F11LLmqs/ez7BOk5ZOzBSZZiRHFxsV26dKnbYcS9devWMXLkSLfDOCE1NTWkp6djreWWW25h9OjR3HHHHW6H1SbN/RyMMcustcUuhdQi5WbnUG7GBuWmHEm5GRuUm3Kkrp6b8ZCX0PVzs6tfRxAf11JM/Ry2fwCPXgQp3SGtJ3xnudsRtYuj5aV6DkmX9Yc//IGioiIKCwupr6/npptucjskEUG5KRKrlJsisUd5Ke1F11I7OzisLKPP4UPM4pjmHJIua8aMGcyYMcPtMETkCMpNkdik3BSJPcpLaS+6ltrZwWFl3XKgeqe7sXQS9RwSERERERERETnoYHEoLdtZ1j4BqDgkIiIiIiIiInLQwaFkaTkQCkCMzdXcEVQcEhERERERERE56GBxqFuO8zUBeg+1qjhkjJlijFlvjNlojPlRM/u/b4xZa4xZZYx5yxgzoMm+64wxn0Zv17Vn8CIiIiIiIiIi7aqxFozHWa0MIFTvbjyd4JjFIWOMF3gQuBgoBKYbYwqPaPYRUGytHQM8D/w6emw2cA8wHjgduMcY06P9wpeuqry8nKKiIoqKiujduzf5+fmH7jc2NnbIOZcvX85rr73WIY99pDVr1nDmmWeSnJzMfffd1ynnFGkPyk2R2KTcFIk9yktpL7qWYlBjLSR1g6QU534C9BxqzWplpwMbrbWbAYwxzwKXAWsPNrDWvtOk/WLgmuj3k4E3rbX7o8e+CUwB/nrioUtX1rNnT1asWAHAzJkzSU9P584772z18eFwGK/X26ZzLl++nNWrVzNlypQ2HXc8cnJyuP/++3n++ec7/Fwi7Um5KRKblJsisUd5Ke1F11IMCtZTa/3895xNzARn3qE415riUD5Q0uR+KU5PoJbcAMw5yrH5bQlQOsGcH8Huj9v3MXuPhot/eVyHTp06lZ07dxIIBPje977HjTfeSCgUIicnh+uvv563336bhx9+mLKyMmbMmEF6ejoTJkygpKSE2bNnU1NTw+23387atWsJBoPMmjWLSZMmMWvWLOrr63n33Xe56667mDZtWvs+5yby8vLIy8tj9uzZHXYOSQDKzXan3JR2odxsd8pNaRcxlJvKyy4shq4j0LXkmmA9+xs9lAU94AeCKg61iTHmGqAYOKeNx90M3AzQv3//9gxJuqAnnniC7Oxs6urqKC4u5oorriAjI4PKykrOPvts7rvvPurq6hg+fDgLFy6kf//+XHnllYeOnzVrFlOmTOHxxx/nwIEDjB8/nlWrVnH33XezevXqZrsyrl27lquvvrrZeObPn09GRgbTpk1j48aNn9s/Y8YMvva1r7XfCxBDlJvSlHIzdig3pSnlZuxQbspBysvY0pVzU9eSS0L1NOCngaTofRWHAHYA/ZrcL4huO4wxZhLwn8A51tqGJseee8Sx7x55rLX2EeARgOLi4vhfIy7WHGcVu6P89re/5aWXXgKgtLSUTZs2UVRUhN/v5/LLLwecX1gjRoxgwABn7vPp06fz5JNPAvDGG28wZ84cfvlL53kFAgG2b99+1HMWFhYe6srZki7VDbKdKDddptxUbrZAueky5aZyswXKTZfFUG4qL2NLm3Izhq4j0LXkmmCAeqvi0JGWAMOMMYNwij1XAYeVEY0xY4GHgSnW2r1Ndr0O/KLJJNQXAT8+4aglbs2dO5d58+axePFiUlNTmThxIoGAk4ipqakYY475GNZaZs+ezZAhQw7bPm/evBaPUXVc5OiUmyKxSbkpEnuUl9JedC25KFhHAD8B63fuqzgE1tqQMeZ2nEKPF3jUWrvGGDMLWGqtfQn4byAd+Hv0At1urb3UWrvfGPMznAITwKyDk1OLNKeyspLs7GxSU1NZs2YNS5YsabZdYWEh69evp6SkhIKCAp577rlD+yZPnsz9999/qIvkRx99xNixY8nIyKC6urrFx0v46rjIUSg3RWKTclMk9igvpb3oWnJRKEDgsGFl8b9a2TGXsgew1r5qrR1urR1irf15dNvd0cIQ1tpJ1to8a21R9HZpk2MftdYOjd4e65inIfHikksuoa6ujsLCQu666y7Gj29+7vO0tDQeeOABJk2aRHFxMd27dycrKwuAe+65h9raWkaPHs2oUaOYOXMmAOeffz4rV65k7NixHf7LrLS0lIKCAn7/+98zc+ZMCgoKqKur69BzinQk5aZIbFJuisQe5aW0F11L7rHBegJNh5UF690NqBMYa2NrOHRxcbFdunSp22HEvXXr1jFy5Ei3wzghNTU1pKenY63llltuYfTo0dxxxx1uh9Umzf0cjDHLrLXFLoXUIuVm51BuxgblphxJuRkblJtypK6em/GQl9D1c7OrX0cQH9dSLP0cIr8fxytlvfif0Fd4L/n7cPkjcMpX3Q7rhB0tL1vVc0gkFv3hD3+gqKiIwsJC6uvruemmm9wOSURQborEKuWmSOxRXkp70bXUvg71HLIHh5XFf8+hdl3KXqQzzZgxgxkzZrgdhogcQbkpEpuUmyKxR3kp7UXX0rEFgmE2l9Uysk/GsSfzDtZrziFJHLE2pDDR6PWXlujacJdef2mJrg136fWXlujacFe8vP7x8jy6qo5+/RtDES59YAFf/P18Xli+45jtTXRC6gCJs1qZikMJKiUlhfLycv0SdIm1lvLyclJSUtwORWKMctNdyk1piXLTXcpNaYly013xkpu6jtzVGdfRs0u2s2FPDQB/XrDlWAFFi0NJNB6akDr+i0MaVpagCgoKKC0tpayszO1QElZKSgoFBQVuhyExRrnpPuWmNEe56T7lpjRHuem+eMhNXUfu68jryFrLk+9v45R+3fniyb25d84nlFU3kJuR3PwBoQYMloBNJoyXEF58mnNI4lVSUhKDBg1yOwwROYJyUyQ2KTdFYpNyU9qDrqP4tmTrATbureHX08YwJDcdgGXbDjDl5N7NHxAtBAXw4/UYgsaPL9TYWeG6RsPKRERERERERCQuPfPBNjJSfEwd05eT8zPx+zws27a/5QOiQ8gC+OmemkSQJAhrQmoRERERERERkS6nvKaBVz/ezRXjCkj1e0n2eRnZJ5NVpZUtH3Sw55BNIis1iUZ8Wq1MRERERERERKQremPtHhrDEa46vd+hbWPys1izs4pIpIUJyINOcaieZLLSopNShzWsTERERERERESky1m+7QA90pIYkZdxaNvo/CxqGkJs3lfb/EFHDCtTzyERERERERERkS7qo5IKxvbvgTHm0LZxA7oDtDzvULAOcIpDWalJNFj1HBIRERERERER6XICwTCbymoYnZ912PYhuenkpPv5YPPRi0N1NpnuaX4arHoOiYiIiIiIiIh0OTsq6rEWBvRMO2y7MYbxg3vy3oYyAsHw5w+MFocaPSmk+r0E1HNIRERERERERKTrKdnvFHn6Zad9bt/00/pTXtvI04u3ff7A6ITUEW8KSV4PAevDhgIdGmssUHFIREREREREROJKyQGnyNOvx+eLQ18Y2pNzR+Ry75xP2HrkxNTRnkMRXyp+r9GE1CIiIiIiIiIiXVHp/jr8Pg+9MpKhpgwW3AeVpYAztOzX08bgNYZHF245/MDGg8WhNJK8HhpJwqo4JCIiIiIiIiLSteyoqKdvVgoeG4bHLoa598CfLjw0bKxXRgoXjOzFW+v2Hn5gdD9Jqfi8HhrxYUOac0hEREREREREpEvZUxWgd1YKrH4eyj+F4hugeiesfPZQm9MHZbOjop4dFfWfHRisI0gSSUlJzrAym6RhZSIiIiIiIiIiXc2uygC9M1Ng9QvQfQBc8j+QexKseeFQm9MGZgOwdGuTZe2D9TSaZJKTvNFhZT4IqzgkIiIiIiIiItJlWGvZW9VAfgawZR4MnwLGwLALYftiaHQmoR6el4HXY9iwp/qzg4O1BEwKyT7PoTmHjJayFxERERERERHpOvbXNtIYjlBot0CoHoac5+wYcj6EG2H7+wD4fR4G9Exj496azw4O1hMwflKSvCT5PDSQ5BwT51QcEhEREREREZG4sbsqAMDgxg3Ohr5jna8Fp4PxQMmHh9oOzU3/fHHIJpPs80SXsk/CE24AazsrfFeoOCQiIiIiIiIicWNvlTNHUK+adZDRFzJ6OzuS0yFvFJR8cKjt0F7pbC2vIxSOOBuCdQTwHxpW1mB9zvZwsDOfQqdTcUhERERERERE4saeaM+hzMp10GfM4Tv7jYfSpRAJA1DQI41wxFJWE510urGOWpvsDCuLzjkExP2k1CoOiYiIiIiIiEjc2FvdgIcIvootkDvi8J39xkNjDexdC0CfrBTAWd0MgGA9ddbfZELqaM+hUHzPO6TikIiIiIiIiIjEjT1VAU5Oq3BWGes57PCd/U53vkaHlvU+WByqOFgcqqXORiekjs45BEAo0Bmhu0bFIRERERERERGJG3uqGjgltcy5kzP88J3dB0B6b9jmrFj2Wc+hemd/QzWVkdTPeg4dmnNIw8pERERERERERLqEsuoAJyXtde70HHr4TmNg4ETYugCsJSs1iZQkD7ujw8psoIpKm/r5OYc0rExEREREREREpGvYU9VAP08Z+NMhLfvzDQZOhJrdsO9TjDH0yUplV1UAQg2YcAPVNs1Zyt5naNCE1CIiIiIiIiIiXUckYtlX00Afuxe693d6Ch1pyHnO101vAZCbkUxZVQM0VANQQyqpfqfnUIN6DomIiIiIiIiIdB0V9UFCEUt2aA9k9Wu+UY+BzkTVn74JQF5mCnurAxCoBKDappKVmnTEsDJNSI0xZooxZr0xZqMx5kfN7D/bGLPcGBMyxkw7Yl/YGLMienupvQIXEREREREREWmqrNoZ/pUR2OX0HGrJsAth20II1tMrI5k9VQ3YQBUA1aSRmeIUhxrsweJQgg8rM8Z4gQeBi4FCYLoxpvCIZtuB64FnmnmIemttUfR26QnGKyIiIiIiIiLSrLLqBtKpwx+sgu4t9BwCGHqB0xto6wJ6ZSRTHwxTX3MAiBaHUn34DxtWpp5DpwMbrbWbrbWNwLPAZU0bWGu3WmtXAZEOiFFERERERERE5JjKagLkGafIQ2Z+yw0HTARfCmx8i7xMZzn7yor9gDOsLDMliSRNSH2YfKCkyf3S6LbWSjHGLDXGLDbGfKlN0YmIiIiIiIiItFJZdQO9TIVzJ6N3yw2TUqDf6bB1Pr0ykwGoqSgHDvYcSjpiQmoVh07UAGttMXA1cJ8xZsiRDYwxN0cLSEvLyso6ISQRaQ3lpkhsUm6KxCblpkhsUm4mln01jRR4o8Wh9KMUhwAGnQ17VjMozRkyVnFEzyGfxzSZc0jDynYATQfqFUS3tYq1dkf062bgXWBsM20esdYWW2uLc3NzW/vQItLBlJsisUm5KRKblJsisUm5mVjKaxoZmOwsSU9G3tEb958AQO/KVaT5vVRHew41eLuRkuTBGEPE63faqucQS4BhxphBxhg/cBXQqlXHjDE9jDHJ0e9zgC8Aa483WBERERERkVgVCIa599V1TP7tPH768hrqG8NuhySScMprGyjwVYI/A5Izjt6471jw+DClSxiSm06kejd13gxSU1IxxgBgvc6Qs4TvOWStDQG3A68D64C/WWvXGGNmGWMuBTDGnGaMKQW+AjxsjFkTPXwksNQYsxJ4B/iltVbFIWk/pcsgHHQ7ChERERFJcJvKarjy4fd5eN5muiV7eXzRVq758wfUNoTcDk0koeyvbaSP58DR5xs6yJ8GvUdD6RKG9UrHV7ObA94cMlOTDjWxnoM9hxo7KOLY4GtNI2vtq8CrR2y7u8n3S3CGmx153CJg9AnGKNK8svXwp/PhtBvhkv9xOxoRERERSVCzP9rBf/xjFck+D49ceyoXjerNnI93cdszy/nhP1bxwNXjWj7YWrAR8Hg7L2CROFZe00hPUwHpxxhSdlDB6fDR01x6eS+y1+zj0/pMevVMPrTb60siFPbhS/SeQyIxa+Nc5+tHf3H+qIqIiIiIdLKt+2r54T9WUVTQnbd+cA4XjXJ6K1w8ug/fv3A4r6zaxWurd7f8AHNnwi8HwOp/dE7AInGuvLaBLFsB3XJad0DBaRCs5Zwe+8j3VLDb9uCyos8WaE/2eQgZv+YcEolZB4tDoXoo+8TdWEREREQkIT29eBvhiOX+q8fSKyPlsH23nDOEkX0yueel1VTWNTMVQuUOeP8BaKyGt/9LH3iKnKC6xhCBYIT0UAV0a+Xk4wXFAJhti8imgl75g/jS2L6Hdvt9HoImSXMOicQka6FkCeSf6twv3+RuPCIiIiKScCIRy+wVO7lgZC/yMlM+tz/J6+FXV4zmQG2Q6x//kP21R8xZ8sm/IBKCL3wX9m+GXSs6KXKR+FRe04iPECmhqtYXh3oMhKx+sOIvGCznn3YKaf7PZuBJ8hqC+CGsnkMineJvS0uY/Nt5/OeLH9MQOsbKDvUHnE9YBp/r3K8s6ejwREREREQOs2FvNftqGriosOWJb8cUdOf304tYs7OKG59YQjAc+WznprcgezCceYdzf8v8Do5YJL5V1AXpQXQZ+9YOKzPG+b9y9yrnfr/xh+3+rOeQikMiHe7Vj3fxH8+vImwtf/lgO/e+eoxhYhXbANiWPAKblAYVKg6JiIiISOf6cMt+AE4flH3UdlNO7sNvvnIKy7dX8Lel0fet4RBsXQCDz4P0XMjqDzuXd3TIInGtor6RHFPl3GltzyGAoq999n2vkYft8ns9NKJhZSIdblVpBd//2wrG9u/OK3dM5OtnDuCJ97eyoqSi5YMOOMWhW/+1jz0m91CxSERERESksyzZeoA+WSn0y047ZtupY/pwSr/uPPzeZiIRC3s+hsYaGDDBadC3CHaoOCRyIirqgvQ8VBxqZc8hgAFnwrWz4ca3nZ5ETfh9HhrRhNQiHaq8poGbn1xGz27JPHJtMSlJXmZMHkFeRgo/fuFjGkOR5g+MFoNKbS7bwj01rExEREREOt3anZWMzs9qVVtjDN/8wkC2769j8eZyKPnQ2dH/DOdr37HOe9z6Ax0UrUj8q6gP0pNK505aG4pDAEPOg4JTP7fZ7/PSgIaViXSoPy3Ywt7qAA9feyq5GckAZKQk8bMvncy6XVXc89JqbHOrNlRsp86TThXd2OftpWFlIiIiItKp6hpDbN5XS2HfzFYfM3lUbzJSfDy/rBS2L4bMfMgqcHbmjXK+lq3vgGhFEkNlXSPZpo1zDh2D3+tRcUikI9U3hnnmg+1MHtWbk4/4xOXCwjxuO28If/2whJ+8uNrpettUxXZKrTOGdEMgC+r3Q7C+s0IXERERkQS3fnc11sLIPq0vDqUkefm3MX14bc0uItsWwoAJvLC8lCn3zWMz0SLR3nUdFLFI/KuoC5LrqwMMpLSuV9+xJPs8NFif5hwS6SjzPi2jsj7INWcMaHb/nReN4NvnDuGvH27n929/eti+SEUJ20LZ5GUmszMcTfqavR0dsoiIiIgIAOt2Ob0TCttQHAK4fGwBucGdeGr2UJF7Gt//20o+2V3NvYtqISlNPYdETkBFfZA8by2kdgePt10e0+/zENCE1CId5+11e8lI9rW4uoMxhhmTR3DJmD48/N5m9tc2HtpnK3ew02Zz/km9KLMqDomIiIhI5/pkdxXpyT4KeqRCYy3M+SE8/02o2H7U404b2IPLMjcC8PSuArwew9RT+vLW+jLCPYdBmXoOiRyvirogOd5aSD36CoJt4fd6qLd+FYdEOoK1lnfW7+Xs4bkkeVu+DI0x/PsFw6gPhvnL4uiKZA3VeBur2GV7cvqgbMpsd2d7zZ5OiFxEREREBD7ZVc1JvTMwxsDb/wUfPASr/wF/uw4iLSyqgvP+9qqsj9kW6cVvPrJ85dQCvlrcj4iFfckDYN/GTnwWIvGlsj4651Baz3Z7TL/PQ10kKe6nMVFxSFyxqayWvdUNnDXs2JOEDcvL4NQBPZizerezoXIHADttT04p6M6+Qz2HVBwSERERkY5nrWXd7ipG9M6A6j3wwcMw7jq4/BHYuRzWzm754Lr99Cn/gB29z+fL4wr4jyknMW5Ad3wew4ZIH6gqdXoiiUibVdYHyaIG0tqx55DPQ531qzgk0hGWbN0P0OKQsiNdVJjH2l1VlB6ogyqnOLTPk8PAnt2o8R3sOaRhZSIiIiLS8bbsq6U6EGJMQRasfh5sGM68DUZPg+79YcmfWz548R8w4UYmXPFd/vfKIrK7+Unz+xjRO4MVdc6CK5Sr95DI8agOhMiwVe07rMznoSbih2Bduz1mLFJxSFzx4Zb95KT7GZTTrVXtLyzMA+D1NXsOFYdM9wI8HkNWtzRqvFlQq+KQiIiIiHS85dsrABjbvweseRH6FEHuCGcC3FO/AdsWQPmmww8KNcDih2D+/8CoyyGv8LDdo/pmsuBA9EPPfYcvxiIirVNVH6RbuKp9ew55o8PKIiEIB9vtcWONikPiiqXb9lM8INsZo90Kg3PTGdU3k5dW7sRWlhLBkNt3IADZ6X4qPD3Uc0hEREREOsXy7QfISPYxND0EO5bB8Mmf7TxlOhgPrHjms217P4H/OxNe+yEMOhsuvf9zj1nYJ5MVdTlYjHoOiRyHUDhCqLEefyQAqT3a7XH9Pg/1JDt34nhomYpD0unKaxoo2V/P2P7d23Tcpaf0ZWVJBaWb17HLZnPmsN4A9EjzU053qN7dEeGKiIiIiBxirWXBp/s4bVA2nm3zwEZg8HmfNcjsA8MuguVPQDAAVbvgqS9BYw187Xm49kVIzvjc4xb2zaIBP4G0vp/vdSQix1QdCJFJdL6u9iwOeT0E8Dt3VBwSaT+rdlQCMKagSXFo/Wvw4R+hbn+Lx007tYCs1CT2blvHtkgeE4Y4k1n37OZnTyRTw8pEREREpMNt2VfL9v11nDsiF7YtAl8qFBQf3uiMb0NtGbz2I3juGghUwTUvwLALoYWe8yPynILRvuR+6jkkchyqAkG6mw4oDvk81Ntoz6GQikMi7WZlSQXGwOiC6Cpj8/8H/vpVePVOeGIqBCqbPa5nejK/umI0gzx7CGYNoF92GgDZ3ZIpDWU5K0VY21lPQ0REREQS0MKN+wA4e1ju/2fvzuPjvKtD/3++s2/SjEYz2ndZtuMlThwv2ROWkEAKAVpaUqCl0IUWbku334W2v9sLLbR9tdxLSykU2hK6AaUJkBAgJCRkXxzb8b5qt3ZptMy+PvePZxRvsi3bM/OMRuf9evklzTPPzPcor4w0c57zPQeGX9YTQ2br2Sd13g4b3w27vwZj++Dd/wgNmy76vF6XlfpqO4M06pVD8r5WiMsSTmTwEdFvOC9vl8rF2CxSOSREURw4Nc+aoAeP3QKzA/DTv4IN98H934LJw/DUZy/42HvWuPGzwB037nz9mN9tZTRTDdnkBRNLQgghhBBCFMJL/SEaqh20VwNj+6F1x/knKQXv+kd47zfgI8/CNW9f1nOvra/iUDIIyXm98kgIsWwL8TTeYlQOmU3EX08OVe7EMkkOiZI7ODrPpuZ81dArX9X3ad/zl7DuHrjhg/qxC01omO3Xv/q7Xj/kd9uZ1GScvRBCCCGEKC5N03ilP8TOLj9qbJ8+wr5lieQQgMUG698Gddcs+/nX1Vfxajj/oVa2lglxWfRtZYuVQ9KQ+nJJckiU1HQkycRCko1N1ZDNwIFv69Mdqpv0E+78I7A44KnPXOAJ8kmjM5JDtR4bUywmh6QptRBCiMqQzWnMxyt3ZK4QK9FMNMVUOKn3zhzZox9s3lqw519T5+FYpiG/mDSlFuJyLMQzeBcbUjsKu60sqeW3jqYT0vPNIwAAIABJREFUBXveciPJIVFSh0YXANjQVA1DL0JkAja/5/QJniDc/DE49B3of+b8Jzj1qt70L7j+9UMBj1QOCSGEqCzDoRg3/cVP2Pbnj7/e30QIYby+Kf2DZ3fQDaN7oLoFPHUFe/7uOg8jWoCcskBIkkNCXI5wMoNXRdCUCezVBXvesyuHZFuZEAVxOJ8c2tjohb6fgjJD9xvPPunW34WaTnjw12D6nHLa4Zeh+Yazmv4FPXamtPw2NRlnL4QQogJ84ckTTIaT2MwmfuebrxFPZY0OSQgB9E3pW1a6gx4Y3QtN1xX0+dcEPWQxs+BslsohIS5TJJGvHHJ4wVS4VIfTaj6j55BsKxOiII5PhGn0OvC6rHpyqPkGcJyT1bU64f5vQDYFX7kT9n9bP56Kwfj5Tf8CVTYWcJNRNr0SSQghhFjBYqkM3907yvtvbOOBD+1gOpLkm7uGjA5LCAH0TkWwWUw0OVIQ6oOm6wv6/DVuG7VuG2PmJv35hRDLFk6kqTXHUAXcUgZ6ciih5ZNDMspeiMI4PhGmp74KkmG9FLfrjqVPrLsGfuNpqN8ID/0qPPbH8OIXIZeBNW8+61SXzYLLZiFsrZXKISGEECveK/0hUtkcb9nQwPYOP9s7avinZ/vJZHOX9TzHxsN845Uh+qejRYpUiNVncCZGu9+FefKgfqCxsJVDAF1BN33Zegj1yzh7IS5DJJnBb4oVtBk1gMtmlobUQhRSNqdxcjJCT12+DFfLQevOCz/A1wYffBR2/Dq8+Pfw1J9D5+3Qcct5pwar7ITMAVgYLeJPIIQQQhTf8yensZlNbO/wA/DhWzsZmYvz+OHlVcdqmsbfP3mCe/72GT750AHe8YXn2H9qrpghC7FqTCwkaPA6YGyffqDx2oKv0RlwczhRC+mojLMX4jKEkxl8KgrOAlcO2cwkFreVpSr3goskh0TJjMzGSWZyenLo1Kv6weYbLv4gswXe9tfwvgfh7s/Czz2w5GkBj51xamHhVGGDFkIUn6bB1HGp/BMib9fALNe1+XDazADctaGBNr+LLz/di7aMKoKvPNPH3/z4OO/Y0sR3futmXHYzn37k8FmPnVhI8D//ez+feuQQ6cusSBJiNZtYSNJQnU8OVTUWtBn1os6Ah0MJPTlMqL/gzy9EpYokMnhVvudQAblsFpJYySmzNKQWohBOTIYB6Kn3wMhufRy9y7+8B/e8GW76KLhrl7w74LFxKuvXK4dy8iZXiBUjPgsP3Atf3A6fWw8//ATkpPGuWL2yOY2j4wtsajr9xtZsUvzmnd3sOzXPk0cvPpXzkX2j/MUPj3LvtY3835+/juvbavjYG3t4dXCWl/pCMLoXbe9/8E9f/xcefLWfrz0/wF8/dqzYP5YQFSGb05iKJKlfTA41binKOp0BN0NavX5D+g4JsWyRZAaPFinoGHvQew6BIm1yQjJS0OcuJ5IcEiWz2POgK7A43WFrwZ474LEzkPbpTaxjMvJXiBVB0+DbH4RTu/TKwG2/Ai9/CX7yKaMjE8IwAzNREukc1zRWnXX8Z7e20BV08+ePHiGRPj+BGk9l+cozvXz8W6+xvaOGz71nCyaTAuA9N7QQcORwfueD8JU7Ud/7Lf545pPs9/4+f9p1nP94aZCFRLoUP54QK9pMNEk2p9HkzsH0cWgo/JYygI6Ai1NaEA0Fs1I5JMRyReJp3LnCbytzWE0oBSmzq6K3lVmMDkCsHkOhGFUOCz7CsDBS0D3awSo7h5NesAHzp4pS4iuEKLD939KnFt77Odj+q/oxTYPn/xbW3gPtNxsanhBGODy6AMA1jWdP8rRZTPzZfZt43z+9zCcfOsBf/9y1zMfTPLJvlKeOTfFKf4h4OstdG+r5/C9ch8Nqfv2xDouJB3z/wobZZ4ne9kd84kgnrnAff+n/Eb8y+r8Zyb6PR/Zdw/t2tpf0ZxVipZmYTwLQnRvUe2cWod8QQJvfRQorEXsdVbODRVlDiEqUSUaxkCl45ZBSSp9YZnJRlQoX9LnLiSSHRMkMh2K0+V2oifx0h4bNBXvuZp+TJ7T8lrOFEWguXFWSEKIIcll4+q/0kvwbPnT6+N2fhROP6xMKf/UnYJICV7G6HBsPYzYpfQv2OW5ZE+D371rL5x4/znMnp5mNpsjkNLqDbt6zrYV7Nzeyo9OPUursBx7+HpvmnuSvs7/AV396LalMjk/f917U9t9De+jX+JPD/8Hf7d0IOz9aop9SiJVpYiEBQFOyVz9QpMohl81CsMrOlLmBqjlJDgmxXKZkfvhCgXsOQX6cvXJWdOXQst51K6XuUUodU0qdVEp9Yon7b1dK7VFKZZRSP3fOfb+slDqR//fLhQpcrDxDoRitNS4YP6AfqC9ccqilxsXYYnJoXppSC1H2jv1A76Nw6++dnQCyueCNfwyje+D4D42LTwiD9E9HafO7sFvMS97/P97Uwz+8byu3dNfyG3d08djHb+cnv38nn75vEzu7as9PDGUz+lbN+k3Et3+UVCbHda0+fnFHG1hsqHd9mTFHN+8Z+xzpROX2URCiEKYjeuVQzcJRsHv1ybpF0u53MawFYW6oaGsIUUk0TcOSmtdvFHhbGegTy+JqlfccUkqZgS8CbwU2APcrpTacc9oQ8EHgP895rB/4U2AnsAP4U6VUzdWHLVaaXE5jeDZOW60LJg6CpwE8wYI9f6vfyQzVpM1OkPJbIcrfnn8jV9VIqufe8+/b/PP6G+7n/670cQlhsP7pKO21roue87bNjXz+vdfzh3evZ11D1UXP5eCDeiL2zk/y/7/jWp76gzv5tw/vwGLOvwW0OhnY+Ska1QxTj/9tgX4KISpTKJYCwBU6rFfAn5uMLaA2v4sTqfywlUyqaOsIUSni6SweLT9JrMDbygBcNjNxHKu+cmgHcFLTtD5N01LAN4H7zjxB07QBTdP2A+eOibobeFzTtJCmabPA48A9BYhbrDBTkSSpTI5WvwsmD0P9xoI+f0O1A7PJxJy9GWYHCvrcQlSKXE7jwd2neOD5flIZA6f6hSfInXyCL8/tYOtnnuSV/tDZ95stcONHYfglvXm9EKuEpmkMzETpqHUX6gnhxb+H4HpYfy9KKToDbqoc1rNO69x6F89mN+E78DX5ECrERYQiKVxWhWnyCDRsKuparX4XRxM1gAbzw0VdS4hKEEnmx9hDcSqHrGYiOKGCew4tJznUDJz5G+lU/thyXM1jRQUZDulZ3FavDaaOQd01BX1+i9lEo9fBuKlepjoIcQE/ODjG7397H//7kcN8/YUBw+IYfeGbmLQsg81vp67Kzkf+fTdzsXM+kG55L1icsPvrxgQphAGmwkliqSydgQIlhwZfgPH9cONvXrTCocHr4CH7O3ClpuDoI4VZW4gKFIqm2OSchXQU6s7dSFFYrX4Xw7n8gBXpOyTEJUWTWbzkk0NFqBxy2sxENfuqrxwqOqXUryulXlVKvTo1NWV0OKIIRubiAHSYJiGTKMof1JYaJ/25er1ySNMK/vyrkbw2K8vXXxigze/itp4AX3jyBGGDRlfP7/0OvTTzJx98J1/4xesJRVP824vnvPF1+mDjO+HAf0M6bkic5Uxem5VpYEa/kNJRqOTQy18CZ42+VfMSYq13MqX8+mtOXDF5bVa2mWiKLfZR/UaBq+DP1VLjZISAfmN+pKhrrQby2qx80TMrh4rQkNplsxDWHKu75xAwArSecbslf2w5lvVYTdO+omnaNk3TtgWDhetDI8rH6Jw+3aE+2acfKHDlEOh7s48k/HryKTJR8OdfjeS1WTmGZmLsGpjl/Te28T/e2MNCIsNTx0r/5mh45BQ98X3MtNxFlcPKxiYvb1xfx9deGCCZyZ598pb36qW7J35c8jjLnbw2K9NilW2b/+I9h5ZldgCOPgo3fFBv9H4J17bV8t30jWgnHodY6JLni6XJa7OyzcZSrDflB58E1xV1rZYaJ+NaDRpKtpUVgLw2K1+kyMkhp81MOGeHTFyfuluBlpMc2gX0KKU6lVI24L3Aw8t8/seAtyilavKNqN+SPyZWmbH5ONUOC87QcUDp/Q8KrDPg4XAiP7Es1Ffw5xdiJdszNAvAbT1BbmivIeCx8fjh0idRDz3zHSwqR+ctpysZPnBTO6FoiqfPTVZ13AbuOqlkEKvGaL7KttHruPone/5vwWSBHb++rNOvaaziB9mdqFwaTv7k6tcXogLNRFJ0aUP60AT7JZrBX6WGageayUrEFpRJvEIsQzSZoZooWVs1mJae+Hk1quwW5jI2/UaqMquHLpkc0jQtA3wMPalzBPgvTdMOKaU+rZR6B4BSartS6hTwHuAflVKH8o8NAX+GnmDaBXw6f0ysMqNzCZp8Tpg6AjUdy7qKebm6gm76tAb9xszJgj+/ECvZa8NzOK1meuo8mE2KN19Tz1NHJ0vamFrTNFTvkyyoaoLrbnz9+K1rAtS6bXzvtdGzH2Ayw4b74MTjsrVMrAqj83ECHjsO61W+qZ3phb3/Dte9D6qblvWQaxqr2ad1k7DWSLWeEBcQiqZoTA8X5SLnuRb7aU6bg1I5JMQyLFYO5eyFrxoCqHZaCWXyAx0qdGvZsnoOaZr2A03T1mqa1q1p2mfyx/6XpmkP57/fpWlai6Zpbk3TajVN23jGY/9F07Q1+X9fK86PIcrd6FxcTw5NHinKljKAroCbES1I1mSD6RNFWUOIleq14Tk2t3hfH19957ogkWSGAyNzJYuhdzLM1vRuZupvOeuKjtVs4m2bG3niyATx1Dlluuveqpfv9j9TsjiFMMrIXIJm31VWDWUz8P2Pg8UBd35y2Q9rqHbgddk57N4BJ5+o2JJ5Ia5UIp0lkU4TSA5BYG1J1mz2ORnVaqVySIhleL0hdREmlQFUOyyEMk79RrIyJ5aVRUNqUfnG5uO0VJn1ip4iJYfaal2gTMzaW6RySIgzpLM5Do8ucF3r6T+WOzr1LZgv9ZWumHPfnhcJqnm8m+8+7763bKwnmcnx/Mnps+/ouBVsHjj2gxJFKYRxXr+QcqXSCXj4Y3oy9e7PQlX9sh+qlOKaxmp+mtkM8RCMH7jyOISoQLOxFM1qBksuCYGekqzZXOOkP+3Xk0O50lX6CrESLTakVkVKDnmdVsLkd78kF4qyhtEkOSSKLp7KMhtLc419EnIZCBYnOWS3mGmpcTFsbpbKISHOMDgTI5XNsb7hdH8Ev9vG2noPL/XNlCyO6NEn9bU3vvm8+3Z21uKxW/jJ0XP6IFns0HUnnHxSphCKiqZp2oWTQ1PH4eBDei+g+Ny5D4SxffDUZ+ELW2HfN/SKoa0fuOwY1tZX8fBCt35j4Lkr+CmEqFxzsTTdKr/9uYSVQycTXsimIDZ96QcIsYpFkhm8RDG7aory/NVOK2Et/zc6UZnJIYvRAYjKNzav9wrp1ob0A0WqHAK979DxiQauj70I2TSYrUVbS4iVon9an9zQec547J2dtTy45xSZbO717WbFkkhnaZrdRcjZgt/Xet79NouJ29cG+MmRSb03kVKn7+y6E45+X5++5O8sapxCGGU+niaWyp7djDoV0yuBDj54+pgyQcO1ULsGUlEY3ZOf0Kmg6w5415eh8/YrimFtfRUPpLykG7qwDjwLN3/s6n4oISrIbCxFhxrXb9SuKcmazT4nT2p+/cb8KfDUlWRdIVYivXIoVrTKoWqHlYXFyqFE6doylJJUDomiG5vXx9g3p/r1ySlFvNrSFfCwJ1anVyiF+ou2jhArSf+03jSvK+A56/i2jhpiqSxHx4u/b3rPwDQ71BHizTdf8Jw71gaZDCc5NnFOPIsfdPufLmKEQhhrfEH/W9nozV+V1DR46Nf0iqHb/z/4yPPwSw/DbX+gT0kaeRXmBvXXx31fhD84Dr/0vStODAGsa9B/R0z6t8Hgi7KNRYgzzMXStKlJchYXuEszCr25Jt9zCGBh9OInC7HKRVMZqlUUHEVKDjmtLGj5C60Vuq1MKodE0S2O5q2JnNCvtFhsRVurM+jmv9KNYAemj0GwNGW/QpSzvqkotW4bXtfZlXRb2/Sy271Ds2xqLs5kh0X9B1/mZhXDsvGNFzzn9rX6m+1njk+xvqH69B2BteCph/5n4YYPFjVOIYwysZAEoL7arh84+KBeMXfXn8Etv336xK47ihZDT72+9fSobSPNyf/S/44WsdpXiJVkNpaiTU2Q9bVjOrO6tYgavU7GXk8OjZRkTSFWqlQ8hoNU0RpSe50WwlT2tjKpHBJFt1g55Awdg7oNRV2rO+CmV8uP7Z06WtS1hFgp+qajdAXd5x1vqXFSV2Vn9+Bs0WPI9Ov9S1xrLlzV0Oh1srbewzPHz+mroBS07oRTu4oZohCGmshXDtVXO/SKnWf+Rv+beVPptnZVO6w0VDt4OZPfMjP0UsnWFqLcLVYOmfxdJVuz0etghmoyyiYTy4S4lHj+/WyxKoccVuLYySkzJOaLsobRJDkkim5sPk6bO4uaH4L64iaHuoIeYjiIOBph6lhR1xJipeifjp7Xbwj06URb22rYM1TcfdPpbI6m+T2EbE3gbb7oubeuCbJrIEQifc4Y7Zbt+haayFQRIxXCOJP55FCwyg4Dz8LUEbjld8BU2rdqXUE3r8z59G0zwy+XdG0hytlsJEmbmsRcW7red267hWqHlXlrUCqHhLgEbbEPkLN4DalBkTJ7KnZbmSSHRNGNziXY6c438KvfVNS16qvtuG1mxmztUjkkBPq0wKlwkvba85NDAFvbfQyFYkxHkkWL4djYAjdwhEj9jkuee1tPgGQmd341U8t2/evIq0WIUAjjTYaTeJ1WHFYzHP4uWF2w4b6Sx9Ed9NA7HUVr2S7VekKcIRuewKlSUNNR0nWbfE6mTQGYl+SQEBdjSuareYq0rcxhNWO3mIib3bKtTIgrNTYf5zpbvhS2yMkhpRRdQQ8ntBZ99G8ue+kHCVHBRuZigL6FbCmLfYf2FHFrWf/RPfhVBPfaSzfK3dHpx2JSPHfynK1ljVtAmeXDqqhYEwsJvd9QLgdHH4Weu8C69Ou2mLqCbsKJDNHg9TBz8nSZvhCrnCWST854z5+4WUwNXgcjOb80pBbiEqyLyaEibSsDqHHZiCm3bCsT4kqNzSVYxyA4vOBtKfp6a+o87Ek0QjYJob6irydEORue1RvCXyg5tKnZi9Ws2D1UvA+Aid7nAfBfc+lGum67ha1tNTx34pzkkM0FwXUwfrAYIQphuImFJHVVDpg4oI+mX/c2Q+LoDuoTy4ac+UbUI7sNiUOIcmOL5pMzJXgve6ZGr5OBtA/Co3LRU4iLsKbz1TxF2lYG4HNZCeOS5JAQV2IhkSaczNCS6tOrhkow3aE76OalSL1+Y/Jw0dcTopydej055Dp9MBaCicOgaTisZjY0edk7WLy+QzXTrzJvqkHVdi/r/JvX1HJwdJ65WOrsO+o3wYQkh0RlmlxIUFdlP90Euv0WQ+JY7E92mG5AwSnZyikEgDuRb5FQ8uSQg76UD3IZiEyWdG0hVhJ7ZjE5VLzKIZ/LyrwmlUNCXJGxuQSKHIHoSajfWJI1u4MeTmrNaCiYPFKSNYUoVyOzcWxmE0FPfjz2wPPwufXwpZvg+x8HTWNbew37Ts2RzBT+imQslWF96iATNVuXnRy+dU0ATYMXe2fOvqNhk96QMxYqeJxCGEnTNKYiSYLVdhh8Qd+24ivt1pVFTT4nNrOJEwsKguulckiIvJrUOAmTS6+EL6H6ajtjml+/IVvLhFhSMpPFo4X1z3/24r1GfU4boZy7YrdcS3JIFNXofJxWNYUlGyt6v6FF3XUeEtiJutukykCseqdmYzT5HJhMCtJx+M5v6BPDdvw67H4ADj7I9o4akpkcB0cK31zv5PHDtKhpcm03LfsxW1p9uG3m8/sOLf4Okde1qDDz8TTprKYncYdegrYbDYvFbFK0+p0MTsegeSuM7AFNMyweIcqBpmnUZicJ2xtKUgV/prpqB+NarX5jQcbZC7GUaDKLlygpi6eoUz5r3FamMk5IFHfSr1EkOSSKanQuzjVqSL/RUJrkUHutC7NJMeLolv4kYtU7NRs/vaXs8MMwPwz3fg7u+Uto2AxPfIobWqsB2D1Y+Iqc2aPPABDY+MZlP8ZqNnFjV+35yaGGzfrXCdkuKirLVFifFthiXYDIODRtNTSejlo3AzNRPTkUm4a5IUPjEcJoC4kMDcyQcDaUfO2Gageji5VDMrFMiCVFEhl8KkLaVrwtZQA+l43JjBMyCf2ia4WR5JAoqrG5BNeYhvQSv+A1JVnTbjHTXuviqNYOs/2QDJdkXSHK0chcnGZfvhn13n+Dmk7ovBNMZrjzj2B+iODok3QG3LzSX/gSWfupFwjjorZzy2U97taeAIMzMYZDsdMH3UF9AsX08QJHKYSxpiJ6cqgtnR+iUKKLKRfSXutmcCaG1nSDfmB0j6HxCGG0+ViaBjVLxtNY8rXrqx3MUkXGZNe3VgshzhNOpvERJWMvcnLIaWU2p/fmI1551UOSHBJFNToX5zrbCMrfpU8bKpE1QQ+vxJv1GxOHSrauEOUkmckyFU7S6HNAdBoGnoUt958ut117N1S3wK5/YkeHn1f6Z8jmCrt9pHV+NyedW1Bmy2U97raeIADPnJg6fVApCKyV5JCoOIuVQ3WxE/qBEm3DvpDOgIt4OsukqxvMduk7JFa92UiMAPNontJXDtW4rNjMZuZt9TAv28qEWEo0mcWnImhFHGMP+ij7OU2f6lmJW8skOSSKanQ+To86BXWlqRpa1FPv4Zn5/B/w8QMlXVuIcjExr3/gbPI6oe+n+sGeN58+wWSG698PfU/zhqYMC4kMR8YK13coMjlAszZOuPHy+6d0B900eR08c3zq7DsCPTB9okARClEeFpND1XPH9ISty29oPG21+lXRwbkMNF6r9x0SYhWLhUYwKQ2zt6nkayulqKu2M20KSOWQEBcQSabxEinqGHvITytjsXKo8ppSS3JIFNX07AKN2VGo21DSdXvqqhjO1ZBx+GHstZKuLUS5GJ3X90I3+hzQ+6S+JavxurNPuvbnAY1bEk8D8ELvOX1+rsLYvscBcK17w2U/VinFHevqeP7kDKlM7vQdgR69J0uFjhAVq9NUJInVrLDOHCnZZM+Laffrlb6DM1FovgFG90I2Y3BUQhgnFdKTMjZ/syHr11XZGadWeg4JcQHz8TQ+FcXkLu7FFb/bxpwm28qEuGy5nIZroR8TOahbX9K119R5AMWsdwOM7ivp2kKUi7F8cqjJ54S+p6Hzdr1a6Ey13dC0laoT36Ur6Oa5kzNLPNOVyZ38KSHNQ/fGnVf0+DvXBYkkM+wePOPKTGCt/nX6ZAEiFKI8TIWT1LstqJleCK41OhyafE5MCoZCMT05lI7B1FGjwxLCMNl5fYS8u7bVkPXrqx0MZmohPAbZtCExCFHOFqIJvESxemqLuo7PZZPKISGuxHQ0SYeWn3BSombUi7qDHpSCfmsPTB2BdKKk6wtRDkbn9P/vm0xz+vjbC43H3vRuGHuNd7Ulealvhngqe/WL53I0TD3PXutWajyOK3qKW9YEsJlN/OTIxOmDtWv0rzOSHBKVYzqS4hr3PGSTpxOgBrJZTDT5nAzO5JNDIH2HxOoWHgPAHWwzZPm6Kju9KS+gwcKoITEIUc7i4TlMSsNeFSjqOjUuK/OLPYckOSTE8o3OJVhjGiGnzKc/0JWI02ampcbJ/lwn5DIwISPtxeozNh/H57LinNyrH2jetvSJG98FwNstL5HK5Hix7+q3lqVHD+DNzTLXdNsVP4fHbuGm7loePzKBpuUbZfvaAaVPIhSiQkyFk2y0Teo3yiA5BNBe62IwFAN/Fzj9cGqX0SEJYRhzdII0Zszu4n7wvJC6age9qfx2Gek7JMR50hG98t1c5G1lXqeVsHKRwwzxUFHXMoIkh0TRjM7F6VJjpKtawWIr+fo9dVX8NNKi35BmmmIVGptL0Oh1wqlXwWTRG8suxdsCrTtpG/sRLpuZJ45MXv3ar34PgNpr77mq53nLxnoGZ2Icn4joB6wOqG6C2YGrjFCI8jEVTrLGlK8GKJvkkJuhmag+JbBlu/57RIhVypaYYk75Tk/7LLG6KjujWn67zNywITEIUc6ysXyipsgNqS1mE9UOGzFLNcQK14qhXEhySBSNnhwaxxToMWT9NXUeXgk50Tz1Ug4vVqXR+QRNXof+/3/9JrA6L3zy5vdgmjzM+7ui/OjgOOls7sLnniOTzfHUsUl2D4Zer/CxHH+UPbketm66ui2ld22oRyn4wYGx0wdrOiEklUOiMmRzGqFoktbciF6hY/CkskXtfhezsTTz8bSeHJo6Ko3gxarlSk4xbzbutVlf7TidHJqX5JAQ5ylRcgj0rWVhk1eSQ0JcjtHZGJ1qDEudccmhVEYjFtwiySGxKo3Nx2n02mH8ADRuufjJG94Jysx7HS8RiqZ4/uTytpaNzce59++e41e+touf/dKL/PLXdvHagQM0xY4y2vAmqh3Wq/oZ6qoc3NhZyyP7R09vLavpkG1lomKEoilyGtSlT5V8C/bFtOfH2Q/NxKB1O6DJ1jKxalWlZ4jYjNlSBnpyKIGdpN0vySEhlmBO5JNDruI2pAaocduYowpi0nNIiGWLTQ/iVCmUQW92e+r0ZmGj7o0wc6Iim4YJcSHxVJa5WJoexwIk5qBh88Uf4AlCz110nnoEv8PEf7166Tef05Ek93/lJUbn4nzh/uv507dvYFd/iB9884sAXH/3Bwrxo/D2LU30TUU5NLqgH/B3QGQCUtGCPL8QRpoKJwHwJUb0/j5loiOQH2cfiur9ypQZhl4yOCohjOHLzZK0Bw1bv77aDkDY1gDzpwyLQ4hyZUnmP+eVoPrW77IR0jxSOSTE5TDP9unfGJQcWpNPDh0yrdMPnJLqIbF6LI6x79EG9AOXSg4BXP8RwO0dAAAgAElEQVR+VGSMT6wd4UcHxzk1G7vgqZFkhg9//VXGFxI88KEdvH1LE79ySyc//vht/FbNKyQabqC5e1MBfhJ466YGrGbFd/fmm3DWdOpfpe+QqABTkSR2UjhiY2WVHGrz55NDMzGwe/TfIZIcEquQlk3j0xZIu+oMi8HrtGKzmJi21MHckGFxCFGu7Kk5cpjA7i36WrUeG1NZtzSkFuJyOCL5P14Gvdmtclhp9Dp4MdkOygTDLxsShxBGGJvXx9i3pPJJ2vqNl35Qz93gqecdqUcxmxT/5/HjS562kEjzoQd2cXBkni/cv5Ub2k/v726NH8EX6cWx7f1X/TMsqnHbuHNdHd/bN0omm9O3lYE05RQVYTqcpEVNodDKKjnkslmoq7LTP52v0Gu7SW9KnUkZG5gQJRabHcOkNDSPcckhpRT11XbGVJ3+t29xm7UQAk3TcGXmiVu8JWka73fbGU+70GIzFfdalOSQKIpIMkMwPUpG2aC62bA41tR5ODSd1ZvxDssVT7F6jM7plUO1keN6MsVedekHWWyw7cM4Bp7kE9tNPLRnhMcPT5x1yrHxMD/7Dy+wZ3CWz//Cddy1of7s53jpS2Cvhs3vKdBPonv39c1MhZO80DsD3lb9oFw9FRVgKpKkQ43rN/ydxgZzjo5aN4Mz+eRQxy2QiUsPP7HqLEzpVaum6kZD46ircjCYCeivw+iUobEIUU5iqSxV2gJJm68k6wU8NqZzVahcBpILJVmzVCQ5JIpiZDZOu5og7m4xbOwnwNr6Kk5ORtBad+rbyrIZw2IRopTG85VDzrnjULdh+Q/c9iGwOPnl7He4tsXLR/9zD3/z2DEe3jfKJx/az71/9yyhaIp/zW8lO8vsABz+Llz/geUloy7DG9bX4baZeXT/GHjqwOKAeUkOiZVvciFJjyX/Qa+MKodA7zvUP53fXtp+C6Cg/xlDYxKi1KKhUQDsPmOTQ/XVdo6n8/1U5OKIEK8LRVP4iZC1F39SGYDfbWNGq9ZvRJc3wGWlkOSQKIqRuRjtapLc4vYPg6yt95BI55j2b4V0FMb3GRqPEKUyOp+gzqUwhXohuH75D/QEYduHsBz8Nv9+n583ra/j7586yW9/Yy/f2TvCL2xv5ce/ezs3r1liastTfwEmC9z8scL9IHkOq5m7NtTzo0PjpLIaeFvkzbGoCJPhBOtsU3qfhBKM4L0cHQE305Ek4URab/LZeC30P210WEKUVGpWTw65a5sucWZx1VU5OBTN91OZGzQ0FiHKSSiawqfCaCVoRg1Q67Ezw2JyqLKq+CxGByAq00goxg41gSlwl6FxrK3XqxcOWzdyB8Dgi9B8g6ExCVEK4/NxbvCEYCEDdddc3oNv/V3Y869UP/spvvT+bzEVTjITTdLud+O0mZd+zPAu2P8tuOW3obo4b6Dv2dTId18bZe/QLDt9bdJzSFSEyXCSDtOUPoVPKaPDOUtnfpz94EyMTc1e6HoDvPj3kJgHR/GbfgpRDrIL+rbPKoOTQ41eB99O+cEBzEpySIhFoWiKDSqMyV38MfYAtW4b01r+b2CFJYekckgUxczUKB6VwFFnzKSyRT355NDBsFvvuzL4gqHxCFEqo3MJttjzfUwup3II9OqhO/4Qjv8IjjxCsMrO+obqCyeG0gl45HegqhFu/8OrC/wibl5Ti0nB8yen9b5DUjkkKsBUOEmTNn660XoZ6QjoyaHXm1L3vAVyGej7qXFBCVFqkUnmNDe13mpDw2jwOojiJOvwS+WQEGcIRZL4CWOpKk3T+FrPGcmhyGRJ1iyVZSWHlFL3KKWOKaVOKqU+scT9dqXUt/L3v6yU6sgf71BKxZVSr+X/fbmw4YtylZzUJySZao3tn+CxW2j2OTk2HoaOW2HwecjlDI1JiFIYnY+z3nxKn9QX6Ln8J7jxt/TR1d//XQhPXPzcH/8JTB6Ct/9twXsNnanaYWVLq49nT06Drw1i05CKFW09IUpheiFGIDMONeXVjBr0htRwRnKodadeMXT8MQOjEqK0LPEppqm58AWSEmmodgAQdbdCqN/QWIQoJ5H5Gawqi8NbouSQ206I/Pvd1dZzSCllBr4IvBXYANyvlDq3u+mHgVlN09YA/xf4qzPu69U07br8v48UKG5R5tTcgP5NGVwJXddQxfGJMHTcBok5/UOsEBUsnEgTTmRozZ4CXztYnZf/JGYrvOsrkIzAgx++8PjqXf8Mu74KN30M1r7l6gJfhlu6A+wbniPhzk9BnD9V9DWFKJZoMkN1ahKzlim7SWUATpuZJq+DgcXkkNkCa++Bo4/KSHuxatgT08yZje8H1ujV/5bP2Zv1ARBCCACS8/pFTLu3/hJnFobNYqLa7SJmrl6V28p2ACc1TevTNC0FfBO475xz7gO+nv/+v4E3KVVmG+dFyWiahiOS/8DmazM2GPS+Q31TUdKtN+sH+p81NiAhimwsP6ksmBy4/C1lZ6rfoFcDDTwLD/0qZJJn3//q1+DR39e3mrz5U1e+zmW4vs1HToP+TP6N+rz0HRIr11Q4SZspX5JehpVDAJ1BN72LySGATT+nX2jpfdK4oIQoIXdqmqi1NI1uL6au2g7AhLlBvzCSTRsckRDlIZOvcFeeYMnWrKuyM2/yQXT1bStrBs58930qf2zJczRNywDzwGJHqE6l1F6l1NNKqduuMl6xAszF0tRnx4nag1dWsVBg6xo8pLI5BjM1+phgmbQiKtzIXBwzWTyRQQiuvbon2/ILcPdn4fD34F/uhqM/gL6n4b8/BN//OKx5E/z8v+oVBSWwqVnf430gnO/9IJVDYgWbDCdpU4vJoQ5DY7mQzoCb/qkImqbpB7rfAE4/vPYfxgYmRCloGt5siKS9dB86L8RhNVPrtjGo1YGWlYsjQixa3NrlLt3rNFhlZxrf6uw5dBXGgDZN064Hfg/4T6XUed3clFK/rpR6VSn16tRUZZVmrUZDoRhtapJUVavRoQCnJ5YdG49A150w8JxcbVkmeW2uTGNzCVrVJKZcCgLrrv4Jb/qongCaH4Fv3g//+g59W8kdn4D7v1XSJHBdlZ2Ax86uGbveT2mVvjmW12ZlGF9I0KHG0UxW8LYYHc6SugIeFhIZZqL5bWRmK2z9gP47YH7E2ODKkLw2K0wyjIMkaVdpeplcSoPXwcl0QL8hfYcui7w2K5cpXvrkUF2Vg9GsD8JjJVuzFJaTHBoBzvyU35I/tuQ5SikL4AVmNE1Lapo2A6Bp2m6gFzjvMramaV/RNG2bpmnbgkHjM/Pi6gyFYrSZJjCVSf+E7qAHk4Jj4wt6cigVgZHdRoe1Ishrc2UanYuzzjSq3wgWIDkEsOE++N1D8MFH4f0Pwh8chzd8smQVQ4uUUmxqrubAWBSqmlZt5ZC8NivDxHyCdjVBztcOJmOb3V5IZ1BvSt03dcbWsm0fBjR48YvGBFXG5LVZWRbH2ONpMDaQvCafk/3xxeRQn7HBrDDy2qxctkRI/8ZVmlH2oFcODaWr0cLjsFhZWwGWkxzaBfQopTqVUjbgvcDD55zzMPDL+e9/DnhS0zRNKRXMN7RGKdUF9ADym6zCDU3O0kgIV72xY+wXOaxmOgJujoyHofN2UGY4+YTRYQlRNKPzcbY48hPGrmRS2YVYbPrUvzVv1icWGWRjUzUnJiPkvM2rNjkkKsP4QoIO0ySm2m6jQ7mg7oAHgN6pyOmDNe2w5Rdh1z/B3JBBkQlRfJFp/W+M2VsmySGvgwMLTrC6YabX6HCEKAuu9Axxc5Ve2VoiDdV2xnI1qEwC4rMlW7fYLpkcyvcQ+hjwGHAE+C9N0w4ppT6tlHpH/rR/BmqVUifRt48tjru/HdivlHoNvVH1RzRNCxX6hxDlJTLei0lpWIPlkRwC2NBYzZGxBXDW6KN4T/zY6JCEKJpTs3E2WMehqtHQJE6xdAU8ZHMaUUfTqt1WJirD+HycDjWOKpNK26U01zixW0z0TkbOvuPOT+jVTj/4w4q6airEmSIzenLIUdNocCS6Jp+TcCJLtqZTKoeEAFKZHN7sLLES9wVr8DqZ0PLDUcLjJV27mJbVc0jTtB9omrZW07RuTdM+kz/2vzRNezj/fULTtPdomrZG07Qdmqb15Y8/qGnaxvwY+62apj1SvB9FlIvs4pWMMpq8sqGpmlOzcebjaei5C8b2wcKo0WEJURQjs3E6GYHAVTajLlNd+W0u0+ag3vMklzU4IiGuTGJ2HBcJfVhCmTKbFF1BDyenzkkO+VrhDX8Ex38EBx80Jjghiiw5q/cTcdeWR0+wRp/e4y/maYeQVA4JMRtLUafmSDlLmxxq9DqY0Hz6jQrqO1TshtRiFbItDOrflNGV0A2Neh/0I2MLsP5n9INHJFcpKk8mm2N8IU5Deqhik0OdAT05NJKrhVwaIhMGRyTElbEtDOjflNHFlKWsqfNw8tzKIYAbfwuat+nVQxVUVi/EouzCOEnNSo2/PHrUNPscAMw422B2QAasiFUvFE1Rxxw5d31J1230OhjHr9+ooIIDSQ6Jggon0gRSIyTNnpI2BbuUDU16cujw6II+2rtuAxz6rsFRCVF4Y/MJArkQ9my0cM2oy4zPZcPvtnEylS/nlb5DYgXSNA1fLH8xJVA+27CX0h10MzIXJ546p0rPZIa3f15PDD3zN8YEJ0QxhceY0HzUex1GRwLo28oARs0tkMvIxDKx6oUiSerUHMpT2uRQrcfOjKpFQ1XU+1BJDomCGpiO0aEmSFS1gVJGh/O6uioHDdUOXhue0w9sejcMvSD7tUXFOTUbZ40pP1CyQiuHQK8eOhDRk77SEFesRDPRFO2MklUW8LUbHc5FrauvQtNYunqoYTNsuR92/TPE50ofnBBFZI1NMKX8eOylncx5IXVVDiwmxYlck35g+rixAQlhsPDcNHaVxuIrbV8ws0nhr/YwbwlIckiIC+mditCtRjEVckJSgWxt97FnKF/2ft379Kllu79ubFBCFNip2Rg9Kp8cCq43Npgi6gy42T2nT1GSptRiJRqbS9Cpxoh7yneM/aK1DVUAHB1fWPqEnb8BmTjs+0YJoxKi+JyJKeYtAVSZXPA0mxSNPgeHEnX6gZkTxgYkhMGSc/qWLkdNU8nXbvI5mFQBmK+ci5SSHBIFNTg+TbOaxtlUfh9Kt7bVcGo2zuRCAqqbYP3bYPfXIHGBN7tCrEAjc3F6TCNoDh946owOp2haa1wMREz6zzknySGx8ozMxelSY+T85b2lDKCj1o3dYuLYeHjpE5qug6brYf+3ShuYEMWkaXgzUyWfgnQpLT4XvWGTPpF06pjR4QhhqEw+OeQyoGl8k8/JUC5QUe9DJTkkCioydgyT0rDUlV+vk63ten+S3YP56qFbfw8S8/DKPxoYlRCFNRSKsdEyiqq7pqy2dhZaq1/vu5ByN1VUOa9YPcZCYdrVOLb68t/+aTYpeuo9HJu4QHII9GEPo3thoXKmtohVLrmAQ0uQcjUYHclZmmucjMzG9ergySNGhyOEoUxhvVre4jMmOdSX8qEtjEAuV/L1i0GSQ6KgtOmT+je15betbFOTF5fNzEt9M/qB5q2w7m3w3N9CZMrY4IQokMHpKGsYrthm1Ita/S4Awo5G2VYmVqTYZB82lcXesDJeq+vqqzkytoCmaRc44a361xOPlS4oIYopPA6A5imz5JDPyUQ4QSa4Xq8cqpAPpUJcCVs0f0Gi2ohtZU4Gc0FUNlUx4+wlOSQKJpvTqArnGzzXll+ZvM1iYluHnxd6Z04fvOvTep+En3zKuMCEKKDIzCgeLQLBa4wOpahaa/Tk0LS5Xm9IfaEPrEKUKcuMfsVf1W8wOJLl2dxczXQkxfhCYukT6jZAdTP0PV3awIQokviMfuHB7Gs2OJKztfldaBrMutbo72HnBowOSQjDOOPjzJpqwGIv+drNPgeDWn5K2uxAydcvBkkOiYIZnImyhkEirlawuYwOZ0k3ddVyYjLCZDj/5jbQAzf+Juz9Nxh+xdjghLhK0WSGQLxXv1HhlUN1VXZsZhOnCEIqArGQ0SEJcVnc8/lK28DKeK1ubvEBsP/U/NInKAWtO2HoJUnWioqwMDEIgCvQZnAkZ1usnB22dugHJg4bF4wQBqtOTTJvMaYvWLPPxZCW7+85229IDIUmySFRMMcnIqxXw2SC5XsV9JY1tQC8cPKM6qE7PqFf7XzkdyCTNCgyIa7e4EyM9Sq/xaphs7HBFJnJpGiucdKbDugH5MqpWGGC8V5C1kawe4wOZVk2NFZjUnBw5ALJIYC2myA8Kls9RUVITA+Q0xS++nJLDuk9945pLaBMML7f4IiEME5NZpKoo96QtZt8Dka1WnLKLJVDQpyrf3SKDjWOq3WL0aFc0KYmLzUuK8+cOKPHkN0DP/N/YfIwPPZHcsVTrFhDoSjr1RBpZxDcAaPDKbqWGieH4no1A7ODxgYjxGUIJ9K0Z4dZqC6/LdgX4rSZWVtfxd6huQuf1LZT/zr0cmmCEqKIsnPDTOGlwe8zOpSz1Fc5sJlNDMxreo/PMUkOidUpm83RoE2RcBuz9bPKYcXtdDJnrYdQnyExFJokh0TBhE8dxKw0bE3lW7FgMilu7Qny7Inps5tqrr0bbvoY7PonePDDMH3CuCCFuEIDMzHWm4ZQDZuMDqUkWv0u9i549RtzkhwSK8fw1CzdapRsYL3RoVyW7R1+9gzNksleoAFu3UawOPSpZUKscJbwCKNagHpv6XuZXIzJpGipcTI4E4PGa6VySKxaczNjuFWSbLVx1X3NPicjpiaY6TUshkKS5JAoGNvUAf2bMv9gesfaIFPhJAfOLY1/y5/DnZ+EI9+HL+6AF//BmACFuEL9E3OsNY1gaSzv12ChtNQ4GY5Z0Bw1UjkkVpS5gX1YVRZry/VGh3JZtnf6iaWyHBm7wEh7swXqN8HYvtIGJkQROOLjTJuD2C1mo0M5T2fAzcBMFBq3wMIIhCeMDkmIkguP6wkZU027YTE01zjpzTXAzMmK2H0iySFREKlMjqbIYWIWL9R0Gh3ORb1pfR0mBT8+dM4fUqXgzk/A7x7UR9w/9kkYfc2YIIW4ArGxY9hJ6x/OVoGW/MSyZFWrVA6JFSV9Sk+e1KzZZnAkl2d7Rw0AL/fPXPikpuv05JCM1xYrmabhTU0QsRvTy+RSOgNu+qej5Jryv0NGXjU2ICEMEJ8cAMAe6DAshmafk4OJOn04SmTlJ2klOSQK4uRkhM3qJOHaa/UkSxmrcdvY0ennhwfHzt5atshTB+/8B3DVwlOfLX2AQlwBTdOoCh3UbzReZ2wwJdJaozflnHe0VMxeb7E62KcPEsZJVX2P0aFclkavkzV1Hp4+PnWRk7ZAKlwxk1vEKhWZxK4lSXpajY5kSR0BN8lMjnHPejBZZeKuWJWyoQEAPA1dhsXQ6ndxNJNPIldAWxJJDomCOD48xlp1CkvryrgKet91zfRORdkzNLv0CQ4vXPc+6H0SEheZzCJEmZgMJ+nJniRtdkJgZX3gvFKLlUPj1haYG5Jpg2LFqF04wpC1G0wr723YHWuDvNIfIpHOLn3CYnJ6TCpvxcqVm8lfcPCXZzV8V8ANQN9sVk/IDr1kcERClJ55foCQ5sFfa8woe4A2v4uTuSb9xtRRw+IolJX3rkSUpVjvi5iVhm/tLUaHsizv2NKEx27h318auvBJ6++FXBpOPF66wIS4QicmImwy9RP3bwBT+fVHKIaAx4bdYqJfawQtVzFjREWFyyRpT59kylu+wxsu5s51QZKZHM9cqHoouA5MFhg/WNrAhCig8PhJAJx13QZHsrQ1dR4ATkyGofM2fVtZMmJwVEKUln1hgGEaqHZYDIuh1e9kHD9pi0eSQ0Isco69RBYT5vYbjQ5lWdx2Cz+/rZWH940yMB1d+qSW7eD069VDQpS5E2OzbFSDWFZYg9uroZQ+seVIqk4/MHPS2ICEWIb5vlexkSHTeIPRoVyRG7tqqXFZ+f7+saVPsNghuB7GD5Q2MCEKKDp2gpym8DaVZ3IoWGXH57JyfCIMnbdDLgNDLxodlhAl5Y0PM2VrRhnY0qS1xgUoZlydMCnJISHI5jTaFvYy6loP9iqjw1m2j9zZhdWs+PwTx5c+wWSG1p2yj1usCKG+vbhUElfXTUaHUlJtfhd7IrX6jQoZIyoq29zxFwBwd6/M16rVbOKtmxt5/PAEC4n00ic1bIYJqRwSK1dmpo8x/LQEaowOZUlKKdbVV3F0PAxtN4HFCcd/ZHRYQpROOkFNZoqIy7gx9qAXHAQ8dobMbTB1ZMVPLJPkkLhqx4fH2cwJ4k0r641uXZWDX7mlk+/tG+XI2MLSJ7Vsg5kTEAuVNjghLpN9fJf+TetOYwMpsY6Am0OzCs0V0F+rQpQ5bfgVTmkB2jrKsyJhOe7f3kY8neW/dg0vfUL9JgiPQeQijauFKGPW2V4GtQba/C6jQ7mg9Q1VHB8PkzM7oOfNcPRRmRIoVo/ZAUxopLzG9wXrDrrZn2mF2Iz+t28Fk+SQuGrj+36MTWXxbb7H6FAu20du78brtPKpRw4tPbmsdYf+dWR3aQMT4jLEUhnao/sJ2+rA22J0OCXVUesmlsqS9q+tiHJeUeE0jdrpXbymNtDkdRgdzRXb3OJlR4efrz7bRzSZOf+Exmv1r+P7SxuYEIWgadTE+hm3d2CzlO9HpU3NXqKpLH3TEbjmPv1D6eBzRoclREkkxg7r3wTXGhsI0F3n4dlws35jbJ+xwVyl8v2NJ1YMU++TxLET3HC70aFcNq/Lyh/evY6X+kJ87fmB809oyvdvGZWpK6J8HR6ZZ5vpONH6G8DAfddG6MhPbAl5emDysFw1FeVt+jhV2Vkm/NsM7ZFQCP/zreuYWEjy148dO//OhnxyaIW/SRar1MIIDi1OtHqN0ZFc1HWtPgD2Ds3BNT+jT9rd/YCxQQlRIvND+tbl6uYNBkcCa4IediWa0VAr/u+eJIfEVUmmM3TPPc9A1Q0o68q8Cnr/9jbesqGeP3/0MN945ZzpZfYqqF0jI3lFWTt5ZA+NKoRr/ZuMDqXkOmv15NCwtRNSEZgbNDgiIS4sdfIZALSOWw2O5Ord0O7ngzd38MALA3z56d6zq2+dPvC1r/g3yWJ1yk7oVagquN7gSC6uO+ihym5h7/AcWJ1w3fvh0Hch1Gd0aEIUXWr8CMO5IN3NdUaHwtr6KmI4iFd3r/jdJpIcEldl/+4XaFFTqPVvMzqUK2YyKT7/3uu4fW2QTz50gM88ephEOnv6hMYtMCal8aJ8ZY7/BIDqDW8xOJLSa/I5sJgUR7R8Q8KJQ8YGJMRFRA8/pvcb6jL+Smch/PG913DvtY385Q+P8otfffns6Z+NWyQ5JFakUN8eAKrbNhscycWZTIptHTW82DujH7jlt8FshSf+t6FxCVEK9tnj9NL8egW5kTY1VwMw4N6sDzJawVXskhwSV2V693cA6Lj5Zw2O5Oq4bBa++kvb+MCN7Xz12X62f+YJPvDPL/Ny34xeHj8/JE2pRVlKZ3O0zb7ItL0VatqNDqfkLGYTbbUuXonUAUrGZ4vylUnhHn2en+a2sKOr1uhoCsJqNvGF917PZ961iYOj8/zsl16gbyqi39l0Hcz2y99OseIkh3YznAvS01n+f1Nv6wnSPx1lOBSDqga4/Q/g8Pdg/7eNDk2I4kknqI31MeJYi9VsfDrD57LR6neyO9sDiTmYvsAk7BXA+P+aYsWKJjN0Tz7OgGszjpomo8O5alaziT975yb+89d28jPXNtI7GeH+r75ErzW/53x0r7EBCrGEg71D3MgBwq1vNDoUw1zTWM2+yTTUbYBTrxgdjhBLG34JWzZGb/VN+Fw2o6MpGJNJ8b6d7Xzvo7eQ1TT+6DsH9C1mi5MTT+0yNkAhLpN75gAH6WJNncfoUC7pDev1LTWPHRrXD9zycWi7Gb73UTjxhIGRCVFEk4cwkyMZLJ/qvmtbfHx3Lj85re+nhsZyNSQ5JK7Ysy88x1o1jNr8bqNDKaibuwP8xbuv5Ycfv50qh5XPH8q/ORjdY2xgQixh8MUHsaksdTe91+hQDLOhsZrhUJxk8w69nDe7xPQkIQyWOfQwCc2KtedOo0Mpiq6gh4+/qYeX+kK80DsDTVtBmWH4ZaNDE2L5ojPUJEeY9FxTFhUJl9IZcLOl1cd/7z6lJ2XNVnjvf0BgLfzne+CJT0EyYnSYQhTUfK9+0aG6c6vBkZy2o8PP7gUvaV83nHzc6HCuWPn/1hNlK77r38liou3WXzQ6lKLwOq388s0dPHI8SrqmG0akckiUF03TaBh4mJA5iLvzRqPDMczGJn2v97D7Wr0p9aT0HRJlJpcje/B7PJW7jls3dBgdTdHcv7MNn8uqD3ewufSR9sNSzSdWjlTvTwHItd9ibCCX4Rd3tHJ0PMyTRyf1Ay4/fOiHsOV+eO7/wN9vh5NSRSQqR+zE00xoPrp6yqd/345OPwB9/luh/xmIzxoc0ZWR5JC4IkdHZrg1+mOGA7ehqhqMDqdo3rFF3y437FinVw6dOY1FCIO9tv81btReY7z758G0en+db8gnh/aQnyzT/6yB0QixhMHnsCcmecp0EzdWSL+hpdgtZt55XTM/PjTBfCwNHbfqlUNSuSBWiNkDj7OgOWnftHKSQ+/e2kJnwM2nv3+YaDJfOWuvgnf+A3zox/r0wH//OTj4kLGBClEImoZn7GV2sZFNzT6jo3nduvoq6qvt/HdyJ2RTeu+vFWj1fpoQV2Xfj/6FoJoncMevGx1KUXUH3XQG3DyTWAPhMRkPKsrKzE/+jgwmuu7+TaNDMVRdlYOGagdPTzqgbiMc/b7RIQlxluyrD7CAm+zae7FZKvut17u3NpPK5vjRoTFYc5f+Jrn/GaPDEuLScjkcAz/hZW0T27uNH4+9XFazib/62WsZCsX4xEP5nl+L2nbCrz4BbTfCd5TSP7kAAAzpSURBVH8TJo8YF6gQhTC2j6rMDFOBG8vq76nJpHjrpka+PlhDNrgBXvryipxaVj7/RcWKMTEXYevQA4zbO/Fs/H/t3Xl81PWdx/HXJweQqBwRRCAICJGrctSA+oC2ICxExUWrKKtbrdjaR2v7UFvdeuxWa7cq20e3dW3Z3VquWkGUxRq7S62AdwUSKrRc4ZAz3OEKR4BJPvvHTG2KYCbHzO83mffz8ZgHM7/fL5l3Jt83Sb4z39+k7lvYx8PMGNXnAl7Yk/onGJPmZf36tXzu0Gus7nAtrc7vGnScwH3+kva8u24v1X2ug62LoXJX0JFEog7vhDXFzIsMY/yQnkGnSbhLu7Sh2/m5FK/YARddCS3OhXXzg44lUqfI5vdpc2oPmy8cw3mtsoOOUy9De+TxwJjevLZiB0/8djU1NbUmiFqcAxNmRrv4m69DTXVwQUUaae/iWZz0THIHXh90lE+YUJjPyYizsP1tsHcNfPiroCPVmyaHpN4Wz/kRBbadzKseSYulLGP6X8j66gs4ltMJNi4KOo4I1dU1HJx7Lxh0++L3g44TCiN6X8Dhqgir80YBDn98PuhIIgD4uz/Ga2r439wbGNarfdBxEs7MGD+oC3/YWEH5kWroMw5WvqKlZRJ6Oxb8jErPoefwCUFHaZBvjOjJpGE9mP7+ZiY+t5iV5Yf+uvO8jnD15Og775b8MriQIo1xopJzVs3iLf8sRYV9g07zCf07t2FUnwv49qqLqcofBvO/C2W/CzpWvTT/v+ylSb379huM2TGFja0vp8PQ1PzhWV+XdWtH3jktKWl5Baz/PRytCDqSpDF3560Z32PIicWs7XcfbTo1/1cixGN4QXuyM43Zm3LgkiJYPAWqDgcdS9Ld9mV46TTmREZw/ahhZGZY0ImS4ubCfADmlGyDwklwshJWzA44lcjZ7d+4jPwdr/O7nHGMvLR70HEaxMz4l3F9+bcbB7BudyXjnn2P2365mJdLt7G38gR85kboOQoW/gAObAk6rki9Vf7+KXKrKynr9VXa5Ibz1X3fH9+frKwsbqq4m5PtCmD2LfDb+6HqUN0fHAJxTQ6ZWZGZlZnZBjN76Az7W5rZnNj+JWbWvda+h2Pby8xsbNNFl2Taf+QEr7wwhQGLbudIZhvyJ80ES49fcjMzjL8f2Jmn914ZPXdC6bSgI0maOnrsOAv/69uM2vYsK9uMYOBNjwQdKTRat8rm5sKuvFy6jV2D74Wqg/DavSm53luaiT1rOTX7VvZ4O+blfYUJl6XP8s/8drmM7tuR6e9toqLdwOjysjd/qOWeEkq7d+/i0At3st9bM2ji97AU/v3WzLh5SFfefnAkD47tzZaKYzw4908MfXIBt01dwurLYq82njsJTh0PNqxIPdT8eR7nLJvCSzVXccN11wUd56zy2+Uy886hbDmew7ij/8yRwV+DZTPgmYHRSaIl/x1998CQvtggq64DzCwT+Dnwd8B2oMTMit19da3D7gIOuHsvM5sITAZuMbN+wESgP9AZWGBml7i7FruGlLtztOokeysq2Lu7nIPb1nBq82J6H3iLG6yc8pwC8u56mZZtOwUdNam+9oWLmbVkKyU5wyh8ezLkXYz1uRayWwUdTZqp6hrnyLFjHNi3i71b1nJk3dv0LH+V0eziz+2vof/d09NiWWd93DOyF698WM6t/3eS6QO/Q7flP8KP78eu/BZ0HgQ5eXrMpOm4Q+QERI5z4ngllYcOcmDfbo7s2kDL7X+gYPd8Dnku92c/xuR//HyoTpyZDN8t6kPRT9/h67M+5Ccjn6bzS0XY9Gtg7A+jJ8dt1TZtnmSSEKqp4cj+cla99xqdlj9DF99H2ahpXNr9oqCTNYk2OdncM7IX3xjRk1U7DrNgzW5mLdnKuOcreLrvI0z46BGYcS02+nHoUggtcoOOLPIJXh3h6M4yqkumcd6KqZTWXELV6CfJbxfu8Tqwa1tm3DmUL09bypDSq7glfxBfjswlf/kcsiJHPz7uVNuLiXQcwIkOA6DLZbS+aAAZue0C/dloXsdbc5vZlcDj7j42dvthAHd/qtYxr8eO+cDMsoBdQAfgodrH1j7ubPdXWFjopaWljfqipG7LthzgS1OX8AP+kyL7AAMyqCGLarLsb59pj5BB+bmX0nLI7Vw4/A7IDOfL+BJtTslWnp73Ac9nP8lnMjYDUOXZ/Ma/wBN8FQNmThpKYfe8Rt2PmS1z98LGJ25a6mbijPrxW+w4WMWSjDvJJkIGThYRMu1v/3/e0LIf9rn76Tlsgv6oOouSzfu5+1elHDh2klszF/FPWS/S1v76g/g5H8+K3vfxs1s/W+/PrW6msaXPwRuPAU5NTTXVkQjZdvbnuSo9hzezhlPW91vcPuZyOrZOzycSXl1ezgMvr+BUtTM0cx3PZD1LJ4s9W2qZ0WUuNz7X6PtRNyVui/6Vk+8+Q1bNKTJiP2O3Z3bBx/0HXQePDjhcYlVWneKp+WuZvXQrY2wpT2VPJc8qozszW0SXgF49uUnvU92Uhtg5eQhtj22mJdGeVrsxp3oE5Vc8xgPXDkqZV/d9tPcI097fxPsbKti07yjgdOAQPTN2MNg2MDhjPf0ytpBv+z7+mIhn4JnZZPceA7f8OiG5Pq2X8UwO3QQUuftXYre/BFzu7t+sdczK2DHbY7c3ApcDjwOL3f3Xse1TgfnuPve0+7gb+Mt7ovcGyur7RSZRe2BfnUeFizInR1Nl7ubuHZrg8zSauplwypwc6maw0nnMJFM6Z1Y3Gyadx0wypXNmdbNh0nnMJFO6Zj5rL+tcVpYM7v4L4BdB54iHmZWGcQb80yhzcqRi5rqom4mlzMmRipnrom4mljInRypmrou6mVjKnBypmLku6mZiKXNyJDpzPAvgy4HaZ1HMj2074zGxZWVtgIo4P1ZERERERERERAISz+RQCVBgZj3MrAXRE0wXn3ZMMXBH7PpNwCKPrlcrBibG3s2sB1AALG2a6CIiIiIiIiIi0lh1Litz94iZfRN4HcgEprn7KjN7Aih192JgKvC8mW0A9hOdQCJ23EvAaiAC3NMM3qksJV6OeBplTo5UzNycpOLjr8zJkYqZm5NUfPyVOTlSMXNzkoqPvzInRypmbk5S8fFX5uRIaOY6T0gtIiIiIiIiIiLNVzzLykREREREREREpJnS5JCIiIiIiIiISBrT5FCczGyCma0ysxozKzxt38NmtsHMysxsbFAZz8TMimK5NpjZQ0HnORMzm2Zme8xsZa1teWb2hpmtj/3bLsiMpzOzrmb2ppmtjo2Le2PbQ527OVI3E0fdlIZSLxMr1bqpXoaHuplY6qY0lLqZWOpmfDQ5FL+VwBeBd2pvNLN+RE/A3R8oAqaYWWby431SLMfPgauBfsA/xPKGzQyij11tDwEL3b0AWBi7HSYR4Dvu3g+4Argn9tiGPXdzpG4mzgzUTWkY9TKxZpBa3VQvw0PdTKwZqJvSMOpmYs1A3ayTJofi5O5r3L3sDLvGAy+6+wl33wRsAIYmN91ZDQU2uPtH7n4SeJFo3lBx93eIvstdbeOBmbHrM4HrkxqqDu6+093/GLteCawBuhDy3M2Rupk46qY0lHqZWKnWTfUyPNTNxFI3paHUzcRSN+OjyaHG6wJsq3V7e2xbGIQ5W106uvvO2PVdQMcgw3waM+sODAaWkEK500CYx3+Ys9UlZca4uhlKYR77Yc4Wj5QY4+plaIV5/Ic5WzxSYpyrm6EV5vEf5mzxSIlxnsxuZjXlJ0t1ZrYAuPAMux5191eTnUei3N3NzIPOcSZmdi7wP8B97n7YzD7eF+bcqUbdDKcwj3F1M/HUy/AK6xhXL5ND3QyvsI5zdTM51M3wCus4T3Y3NTlUi7uPbsCHlQNda93Oj20LgzBnq8tuM+vk7jvNrBOwJ+hApzOzbKJlfcHd58U2hz53KlI3QyX0Y1zdTA71MnRCPcbVy+RRN0Mn1ONc3UwedTN0Qj3Og+imlpU1XjEw0cxamlkPoABYGnCmvygBCsysh5m1IHoys+KAM8WrGLgjdv0OIFSz6Radtp0KrHH3f6+1K9S504y6mRihHuPqZuipl4kT2jGuXqYEdTNxQjvO1c2UoG4mTmjHeWDddHdd4rgANxBdR3kC2A28Xmvfo8BGoAy4Ouisp+W+BlgXy/do0HnOknE2sBM4FXuM7wLOJ3oG9vXAAiAv6JynZR4OOPAnYHnsck3YczfHi7qZ0Izqpi4N/T6ol4nNmVLdVC/Dc1E3E55T3dSlod8LdTOxOdXNOC4Wu3MREREREREREUlDWlYmIiIiIiIiIpLGNDkkIiIiIiIiIpLGNDkkIiIiIiIiIpLGNDkkIiIiIiIiIpLGNDkkIiIiIiIiIpLGNDkkIiIiIiIiIpLGNDkkIiIiIiIiIpLG/h/Ciq6rjtpMPAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "train = train_gd.to_pandas()\n", + "fig, axs = plt.subplots(3,5, figsize=(20, 12),sharex=True,sharey=True)\n", + "target_mask = train['target'] == 1\n", + "non_target_mask = train['target'] == 0 \n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,0], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,0], label='Target == 1')\n", + " axs[c,0].set_title('%s all data'%col)\n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " for i in range(1,4):\n", + " train = train_gd.to_pandas()\n", + " train = train[train['%s_count'%col]==i]\n", + " target_mask = train['target'] == 1\n", + " non_target_mask = train['target'] == 0 \n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,i], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,i], label='Target == 1')\n", + " axs[c,i].set_title('%s count == %d'%(col,i))\n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " train = train_gd.to_pandas()\n", + " train = train[train['%s_count'%col]>i]\n", + " target_mask = train['target'] == 1\n", + " non_target_mask = train['target'] == 0 \n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,4], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,4], label='Target == 1')\n", + " axs[c,4].set_title('%s count > 1'%(col))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add new features by removing count==1 group" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 18s, sys: 3min 6s, total: 4min 25s\n", + "Wall time: 4min 35s\n" + ] + } + ], + "source": [ + "%%time\n", + "for i in range(200):\n", + " col = 'var_%d'%i\n", + " dg = train_gd[[col,'%s_count'%col,'ID_code']].query(\"%s_count > 1\"%col)\n", + " dg.columns = ['%s_gt1'%col,'%s_count'%col,'ID_code']\n", + " train_gd = train_gd.merge(dg[['ID_code','%s_gt1'%col]],on='ID_code',how='left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train and validation split" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "train,valid = train_gd[:-10000],train_gd[-10000:]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = train.drop(['target','ID_code'])\n", + "y_train = train['target']\n", + "x_valid = valid.drop(['target','ID_code'])\n", + "y_valid = valid['target']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### XGB training" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 23s, sys: 13.1 s, total: 1min 36s\n", + "Wall time: 7.11 s\n" + ] + } + ], + "source": [ + "%%time\n", + "xgb_params = {\n", + " 'objective': 'binary:logistic',\n", + " 'tree_method': 'gpu_hist',\n", + " 'max_depth': 1, \n", + " 'eta':0.1,\n", + " 'silent':1,\n", + " 'subsample':0.5,\n", + " 'colsample_bytree': 0.05, \n", + " 'eval_metric':'auc',\n", + "}\n", + "dtrain = xgb.DMatrix(data=x_train.to_pandas(), label=y_train.to_pandas())\n", + "dvalid = xgb.DMatrix(data=x_valid.to_pandas(), label=y_valid.to_pandas())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0]\teval-auc:0.521389\ttrain-auc:0.52936\n", + "Multiple eval metrics have been passed: 'train-auc' will be used for early stopping.\n", + "\n", + "Will train until train-auc hasn't improved in 30 rounds.\n", + "[1000]\teval-auc:0.895451\ttrain-auc:0.897593\n", + "[2000]\teval-auc:0.912287\ttrain-auc:0.914978\n", + "[3000]\teval-auc:0.918509\ttrain-auc:0.921984\n", + "[4000]\teval-auc:0.921146\ttrain-auc:0.925312\n", + "[5000]\teval-auc:0.922234\ttrain-auc:0.927468\n", + "[6000]\teval-auc:0.923024\ttrain-auc:0.929098\n", + "[7000]\teval-auc:0.922959\ttrain-auc:0.930512\n", + "[8000]\teval-auc:0.922511\ttrain-auc:0.931767\n", + "[9000]\teval-auc:0.922827\ttrain-auc:0.932826\n", + "[9999]\teval-auc:0.922667\ttrain-auc:0.933797\n", + "CPU times: user 2h 32min 30s, sys: 8min 21s, total: 2h 40min 51s\n", + "Wall time: 2min 4s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n", + "clf = xgb.train(xgb_params, dtrain=dtrain,\n", + " num_boost_round=10000,evals=watchlist,\n", + " early_stopping_rounds=30,maximize=True,\n", + " verbose_eval=1000)\n", + "yp = clf.predict(dvalid)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "plot top10 important features\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "print('plot top10 important features')\n", + "xgb.plot_importance(clf,max_num_features=10)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander_pandas.ipynb b/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander_pandas.ipynb new file mode 100644 index 00000000..968cb902 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/santander/E2E_santander_pandas.ipynb @@ -0,0 +1,377 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import time\n", + "import xgboost as xgb\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook includes the best single model of Rapids.ai team for [Santander Customer Transaction Prediction](https://www.kaggle.com/c/santander-customer-transaction-prediction/leaderboard). We placed **17/8808** in the competition." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Reading CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200000, 202)\n", + "CPU times: user 4.81 s, sys: 524 ms, total: 5.33 s\n", + "Wall time: 5.33 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "PATH = '../input'\n", + "train_pd = pd.read_csv('%s/train.csv'%PATH)\n", + "print(train_pd.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### KDE for a single column" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.stats import ks_2samp\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "\n", + "train = train_pd\n", + "target_mask = train['target'] == 1\n", + "non_target_mask = train['target'] == 0 \n", + "statistics_array = []\n", + "for col in train.columns[2:]:\n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " statistics_array.append(statistic)\n", + " fig, ax = plt.subplots(1, 1, figsize=(10, 4))\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=ax, label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=ax, label='Target == 1')\n", + "\n", + " ax.set_title('name: {}, statistics: {:.5f}, pvalue: {:5f}'.format(col, statistic, pvalue))\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Count encoding" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 25min 20s, sys: 3min 58s, total: 29min 18s\n", + "Wall time: 2min 49s\n" + ] + } + ], + "source": [ + "%%time\n", + "for i in range(200):\n", + " col = 'var_%d'%i\n", + " var_count = train_pd.groupby(col).agg({col:'count'})\n", + " var_count.columns = ['%s_count'%col]\n", + " var_count = var_count.reset_index()\n", + " train_pd = train_pd.merge(var_count,on=col,how='left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing patterns of count==1 group" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAK7CAYAAABoGe93AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXyU5bn/8c+ddbKHLCQkIYQdgmCQCGoRrUulRXG3LrXa9tSunl83enraHhdO2+Ppaaun2s3a1qW1dTtVcEerRVQEZJNA2CRAgJB9nUwmmdy/P54BAyQQYDYm3/frlZczz/Pcz31NzMUk19yLsdYiIiIiIiIiIiJDU0y4AxARERERERERkfBRcUhEREREREREZAhTcUhEREREREREZAhTcUhEREREREREZAhTcUhEREREREREZAhTcUhEREREREREZAhTcUhEREREREREZAhTcUiOyhhzqzFmWZ/n1hgzbpBt7zLG/Dl40YmIiIiIiIjIyVJxKEoZYy40xlQaY9zGmDeMMaPCHdPRGGMeNsb8KNxxiByvSM81Y0yVMeaiMPY/whizyBiz119cLglXLDK0KDeP2f88Y8wyY0yzMabGGPOQMSYtXPHI0KHcPGb/HzfGfODPzQZjzN+NMYXhikeGtqGar0P191cVh05Rxpi4o5zLAf4P+A8gC1gFPBGi0ESiinLtpPUCLwNXhzsQiS7KzZOWAfwIKAAmA4XA/4Q1IokKys2TthG4xFqbiZOfW4HfhDckiVbRnq/GmERjTMYJNB2Sv7+qOBRCxph/M8Y8fdix/zXG/NL/+HPGmE3GmDZjzIfGmC/1ue58Y0y1/x41wJ+O0tVVQIW19ilrrQe4CzjdGDNpgLi+Z4zZ7u93ozHmyhN8faONMf/032cJkHPY+af8n062GGOWGmOm+I/fBtwEfNcY026MWRzIuGToieBcG2mM+T9jTJ3/08AH/MdjjDE/NMbsNMbUGmMePfBGdiCew+5z8FMS40zffNLfps0YU2GMKfefewwoBhb7c+u7x/N9DARr7X5r7a+BlaHuWyKPcjOicvNxa+3L1lq3tbYJ+D3wsVDHIZFBuRlRubnfWru3zyEfMKglHWRoUL4eV77mALuNMX8xxlxkjBlU/WOo/v6q4lBo/Q34lPEP2zbGxALXAY/7z9cClwLpwOeAe40xZ/Rpn49TtR0F3HaUfqYA6w48sdZ2ANv9x/uzHTgX51PEu4E/G2NGHNcrczwOvI+ThP8J3HLY+ZeA8cBwYDXwF398D/of/9Ram2qtvSzAccnQE3G55o/heWAnUILzKf3f/Kdv9X99HBgDpAIPDO6lAjDff69MYNGBttbam4FdwGX+3PppP3EVG2fo+kBfNx7PdSLHoNwkYnNzDlBxHK9Nootyk8jJzQNtgU7gO8ARcciQpnxlcPlqrd0DTADWAPcCO4wxC40xY46j/yFjwGFkEnjW2p3GmNXAlcCjwAWA21q73H/+hT6X/9MY8ypOcWS1/1gvcKe1tusYXaUCdYcdawH6XUvAWvtUn6dPGGP+HZgJPHfsV+UwxhQDZwIX+eNbavwjgPr088c+198FNBljMqy1LcGKS4amCM21mTjDwxdYa3v8xw4s9n4T8Atr7YcA/p/1DcaYzx2j/wOWWWtf9Ld9DPjGINthrd2F82YbkOtEjka5GZm5aYy5GOcDnVkncx85dSk3Iys3D7Q1xmQBXwQqT+Q+Ep2Ur4PPVwBrbQ3wM+BnxpgZOO93y40xG4H/Z61dd9QbDCEaORR6jwM3+B/fyEcVXowxnzTGLDfGNPo/LfgUh07NqvMP6TuWdpxKcV/pQFt/FxtjPmuMWXvgkwzgtMP6HYwCoMlfUT5gZ58+Yo0x9xhnmlgrUOU/NWA/AYpLhq5Iy7WRwM4+b5h9FdAnX/yP44C8QcQAUNPnsRtwmaPMIRcJM+VmBDHGnIXz/+Aaa+2WcMcjYaXcjDDW2kbgEeC5SIxPwkr5emK24oyG2gZMQh98HkLFodB7CjjfGFOEU+19HJzFsoBncKqaef5F6F4ETJ+2dpB9VACnH3hijEkBxtLPcHHjrDj/e+DrQLa/3w2H9TsY+4Bh/r4OKO7z+EbgcuAinGliJQdC8P/3kNcWwLhk6IqoXAN2A8UDvJntxRnae0Ax0APsBzqA5D59xAK5g4wPjvFa/EPX24/yddPxXCcyCMpNR9hz0xgzHWeI/uetta8fR+wSnZSbjrDn5mHicJZkOPyPdBnalK+OY74W/yCFTxpj/oozDW0e8F9AkbX2n8fRV9RTcSjErLV1wJs4i3/tsNZu8p9KABJxhu71GGM+CXziBLv5O3CaMeZqY4wLuANYb63tb0hqCk5S1YGzgBnOCJ3jYq3dibOC/d3GmARjzGzgsj6XpAFdQAPOPwA/OewW+3HmoAY0Lhm6IjDXVuAUUe8xxqQYY1zGmAOLv/4V+KZxFnVPxcmPJ/yfvmzB+YRknjEmHvihP/7BOjy3DmGt3eWfpz3Q11+O57r++L83B2JO9D+XIUq5eVBYc9MYcxrOTiy3W2sX93eNDC3KzYPCnZtXGWMmGmcR31zgF8Aa/ygiEUD52sdR89UYMxyo9ve5HBhnrb3KWrt4gFFOfdsOud9fVRwKj8dxRtAcHP5nrW0D/hV4EmjCGWmz6ERu7v/H4mrgx/57zQKuH+DajcDPgXdxkmsq8PaJ9IsT8yygEbgTZw7sAY/iDCHcg7NF5/LD2v4BKDXOFLJnAxyXDF2RlGs+nILpOJxPLaqBT/tP/xF4DFgK7AA8wO3+di3AV4GHcPKnw992sP4L+KE/t75zHO0CqRNnaDI46yZ0hikOiRzKzfDn5rdxPp39Q5+RDFqQWpSb4c/NQpzCbRvwAc76MNqxV/qjfD12vrqBudba6dba/7XW1h/HvYfc76/G2sGOKhMRERERERERkWijkUMiIiIiIiIiIkOYikOnKGPM9wdY3O6lcMcmEk2UayKRSbkpEpmUmyKnDuWr9KVpZSIiIiIiIiIiQ1h/W82FVU5Oji0pKQl3GCJh8/7779dba49nC8eQUG7KUKfcFIlMyk2RyKTcFIk8R8vLiCsOlZSUsGrVqnCHIRI2xpid4Y6hP8pNGeqUmyKRSbkpEpmUmyKR52h5qTWHRERERERERESGMBWHRERERERERESGMBWHRERERERERESGsIhbc0hCo7u7m+rqajweT7hDGbJcLhdFRUXEx8eHOxSJIMrN8FNuSn+Um+Gn3JT+KDfDT7kph1Neht+J5KWKQ0NUdXU1aWlplJSUYIwJdzhDjrWWhoYGqqurGT16dLjDkQii3Awv5aYMRLkZXspNGYhyM7yUm9If5WV4nWhealrZEOXxeMjOzlayhokxhuzsbFXT5QjKzfBSbspAlJvhpdyUgSg3w0u5Kf1RXobXiealikNDmJI1vPT9l4HoZyO89P2XgehnI7z0/ZeB6GcjvPT9l/7o5yK8TuT7r+KQiIiIiIiIiMgQpuKQhEVDQwNlZWWUlZWRn59PYWHhwederzcofa5evZqXX345KPc+nLWWr371q4wbN45p06axdu3akPQrcrKUmyKRSbkpEnmUlyKRSbl5YrQgtYRFdnb2wR/iu+66i9TUVL7zne8Mur3P5yM2Nva4+ly9ejUbNmxg7ty5x9XuRCxevJjdu3ezbds2li1bxte+9jXefvvtoPcrcrKUmyKRSbkpEnmUlyKRSbl5YjRySCLOZZddxowZM5gyZQoPPfQQAD09PWRmZvKNb3yDadOmsWLFChYtWsTEiROZMWMGt99+O1dccQUA7e3t3HrrrcycOZPp06ezePFiOjs7WbhwIX/5y18oKyvj6aefDupreO655/jsZz8LwOzZs6mpqaGuri6ofYoEm3JTJDIpN0Uij/JSJDIpNwemkUPC3Ysr2Li3NaD3LC1I587LppxQ20ceeYSsrCzcbjfl5eVcffXVpKWl0dLSwpw5c7jvvvtwu91MmDCBt99+m+LiYq677rqD7RcuXMjcuXN5+OGHaWpqYtasWaxfv5477riDDRs2cN999x3R58aNG7nxxhv7jeett94iLS2Na665hm3bth1xfsGCBdx0002HHNuzZw8jR448+LyoqIg9e/aQm5t7Qt8TGZqUm8pNiUzKTeWmRKZIyk3lpYgjkvISlJtHo+KQRJx7772XRYsWAVBdXc327dspKysjISGBK6+8EnASbOLEiYwaNQqAG264gUcffRSAV199lZdeeol77rkHcLZS3LVr11H7LC0tPeZczWBXgEUinXJTJDIpN0Uij/JSJDIpNwem4pCccNU1GF577TWWLl3K8uXLSUpKYvbs2Xg8HgCSkpIGtSWftZZnn32WsWPHHnJ86dKlA7YJdDW3sLCQ3bt3c9ZZZwHOPzyFhYXHjF2kL+WmclMik3JTuSmRKVJyU3kp8pFIyUtQbh6LikMSUVpaWsjKyiIpKYmKigpWrlzZ73WlpaVs3ryZ3bt3U1RUxBNPPHHw3CWXXML9999/cEjfmjVrmD59OmlpabS1tQ14v0BWc+fPn89DDz3Etddey7Jly8jLy9MQXDmlKTdFIpNyUyTyKC9FIpNy8+i0ILVElHnz5uF2uyktLeWHP/whs2bN6ve65ORkHnjgAS666CLKy8vJzMwkIyMDgDvvvJOOjg6mTp3KlClTuOuuuwC44IILWLduHdOnTw/6sL3LLruMwsJCxo4dy1e+8hV+9atfBbU/kWBTbopEJuWmSORRXopEJuXm0RlrbUBuFCjl5eV21apV4Q4j6m3atInJkyeHO4yT0t7eTmpqKtZavvSlLzF16lRuv/32cId1XPr7/2CMed9aWx6mkAak3AwN5WZkUG7K4ZSbkUG5KYc71XMzGvISlJtyqFM9LyE6cvN481Ijh+SU9Zvf/IaysjJKS0vp7Ozki1/8YrhDEhGUmyKRSrkpEnmUlyKRaSjmptYcklPWggULWLBgQbjDEJHDKDdFIpNyUyTyKC9FItNQzE2NHBIRERERERERGcJUHBIRERERERERGcJUHBIRERERERERGcJUHBIRERERERERGcIGVRwyxsw1xmw2xmwzxnyvn/PfMsZsNMasN8a8bowZ1efcLcaYrf6vWwIZvJy6GhoaKCsro6ysjPz8fAoLCw8+93q9Qelz9erVvPzyy0G59+EqKio4++yzSUxM5L777gtJnyKBoNwUiUzKTZHIo7wUiUzKzRNzzN3KjDGxwK+Ai4FqYKUxZpG1dmOfy9YA5dZatzHmK8BPgU8bY7KAO4FywALv+9s2BewVyCkpOzubtWvXAnDXXXeRmprKd77znUG39/l8xMbGHlefq1evZsOGDcydO/e42p2InJwc7r//fp5++umg9yUSSMpNkcik3BSJPMpLkcik3Dwxgxk5NBPYZq390FrrBf4GXN73AmvtG9Zat//pcqDI//gSYIm1ttFfEFoCBP+7Jae0yy67jBkzZjBlyhQeeughAHp6esjMzOQb3/gG06ZNY8WKFSxatIiJEycyY8YMbr/9dq644goA2tvbufXWW5k5cybTp09n8eLFdHZ2snDhQv7yl79QVlYW9De5vLw8ysvLiYs7Zv1V5JSh3BSJTMpNkcijvBSJTMrNgQ3mboXA7j7Pq4FZR7n+C8BLR2lbeHgDY8xtwG0AxcXFgwhJAuql70HNB4G9Z/5U+OQ9J9T0kUceISsrC7fbTXl5OVdffTVpaWm0tLQwZ84c7rvvPtxuNxMmTODtt9+muLiY66677mD7hQsXMnfuXB5++GGampqYNWsW69ev54477mDDhg39Dr3buHEjN954Y7/xvPXWW6SlpXHNNdewbdu2I84vWLCAm2666YRea6RTboaZclO5OQDlZpgpN5WbA1BuhlkE5abyMrIoN8MogvISlJtHE9BSkzHmMzhTyM47nnbW2geBBwHKy8ttIGOSU8+9997LokWLAKiurmb79u2UlZWRkJDAlVdeCTgJNnHiREaNcpa3uuGGG3j00UcBePXVV3nppZe45x7nHwyPx8OuXbuO2mdpaenBoYcDGYpDapWb0pdyM3IoN6Uv5WbkUG7KAcrLyKLclAOUmwMbTHFoDzCyz/Mi/7FDGGMuAn4AnGet7erT9vzD2r55IoFKEJ1g1TUYXnvtNZYuXcry5ctJSkpi9uzZeDweAJKSkjDGHPMe1lqeffZZxo4de8jxpUuXDtjmVKnmyhCj3FRuSmRSbio3JTJFSG4qL0X6iJC8BOXmsQymOLQSGG+MGY1T7LkeOOSVGWOmA78D5lpra/ucegX4iTFmmP/5J4B/P+moJWq1tLSQlZVFUlISFRUVrFy5st/rSktL2bx5M7t376aoqIgnnnji4LlLLrmE+++//+CQvjVr1jB9+nTS0tJoa2sb8H6nQjVXJFyUmyKRSbkpEnmUlyKRSbl5dMdckNpa2wN8HafQswl40lpbYYxZaIyZ77/sf4BU4CljzFpjzCJ/20bgP3EKTCuBhf5jIv2aN28ebreb0tJSfvjDHzJrVv/LWyUnJ/PAAw9w0UUXUV5eTmZmJhkZGQDceeeddHR0MHXqVKZMmcJdd90FwAUXXMC6deuYPn160JOvurqaoqIifvnLX3LXXXdRVFSE2+0+dkORCKXcFIlMyk2RyKO8FIlMys2jM9ZG1pTL8vJyu2rVqnCHEfU2bdrE5MmTwx3GSWlvbyc1NRVrLV/60peYOnUqt99+e7jDOi79/X8wxrxvrS0PU0gDUm6GhnIzMig35XDKzcig3JTDneq5GQ15CcpNOdSpnpcQHbl5vHk5mK3sRSLSb37zG8rKyigtLaWzs5MvfvGL4Q5JRFBuikQq5aZI5FFeikSmoZibAd2tTCSUFixYwIIFC8IdhogcRrkpEpmUmyKRR3kpEpmGYm5q5NAQFmlTCocaff9lIPrZCC99/2Ug+tkIL33/ZSD62Qgvff+lP/q5CK8T+f6rODREuVwuGhoalLRhYq2loaEBl8sV7lAkwig3w0u5KQNRboaXclMGotwML+Wm9Ed5GV4nmpeaVjZEFRUVUV1dTV1dXbhDGbJcLhdFRUXhDkMijHIz/JSb0h/lZvgpN6U/ys3wU27K4ZSX4Xcieani0BAVHx/P6NGjwx2GiBxGuSkSmZSbIpFJuSkSeSI5L3/1xjaWbNzPbz8zg/wMjXjrS9PKRERERERERCSq1bd38T+vbGbt7mZer9wf7nAijopDIiIiIiIiIhLV1lc3H3y8YkdjGCOJTCoOiYiIiIiIiEhUW1/dgjHw8Ym5vPdhoxbMPoyKQyIiIiIiIiIS1T6obmFsbirnTxxOTauHPc2d4Q4poqg4JCIiIiIiIiJRbdO+VqYUpFNeMgyAVVVNYY4osqg4JCIiIiIiIiJRq9ntZW+Lh8kj0pmUn05qYhwrqrTuUF8qDomIiIiIiIhI1Nq0rw2AySPSiY0xzB6Xw6sVNXT7esMcWeRQcUhEREREREREolbF3hYAJo9IA+CqMwqpb/eydEtdOMOKKCoOiYiIiIiIiEjUWv5hI6Oykxme5gLg/InDyU5J4On3q8McWeRQcUhEREREREREopKv1/LejgbOHpN98FhCXAyXlxXy2qb9NHV4wxhd5FBxSERERERERESi0vrqZto8PZw9NvuQ41dML6DbZ3lt0/4wRRZZVBwSERERERERkaj0SsV+4mIM508YfsjxqYUZFGS4eKWiJkyRRRYVh0REREREREQkKr22aT9njckmIzn+kOPGGC4uzWPZtno83b4wRRc5VBwSERERERERkahT0+JhW207503IdQ7seAte/Q9oc0YLnT9xOJ7uXt7b0RjGKCODikMiIiIiIiIiEnXe2V4PwDnjsqFmAzx2BbzzS3joImjdx1ljskmIi+EtbWmv4pCIiIiIiIiIRJ8VOxrJTI5ncn46vP8wxMTBTc+AuxEeu4IkbwNTCzNYvasp3KGGnYpDIiIiIiIiIhJ1Nu1rZUpBOjHWBxuehkmXwviL4MYnoHkXPHwpMwsS2bC3FW9Pb7jDDSsVh0REREREREQkqvh6LZv3tzEpPx32rYXOJpg0zzk5+ly4/nGo38w17Y/h7emlsqY1vAGHmYpDIiIiIiIiIhJVdjZ04OnuZVJ+GuxY6hwsOfejC8Z+HKZex+idT+Oii8p9beEJNEKoOCQiIiIiIiIiUWVzjVPsmZSfDlXLIHcypOYeetGMW4nxtjEv/n221qo4JCIiIiIiIiISNaoa3ACMznZB9UoYdfaRF406B1Jy+WTSRrbWtoc4wsii4pCIiIiIiIiIRJWq+g5yUhNJbd0GXa0wctaRFxkDo87hjN4KttZo5JCIiIiIiIiISNSoauigJDsZdq9wDoyc2f+FJeeS1bMf07oLt7cndAFGGBWHRERERERERCSq7GxwU5KTAruWQ0ouDBvd/4WFMwCYanawq9Edwggji4pDIiIiIiIiIhI1PN0+alo9jMpKht3LnSllxvR/8fDJWBPDpJhdVNV3hDbQCKLikIiIiIiIiIhEjeqmTgDGp3RAUxUUnzXwxfFJ9GaNo9TsOriI9VA0qOKQMWauMWazMWabMeZ7/ZyfY4xZbYzpMcZcc9g5nzFmrf9rUaACFxERERERERE53O4mp8gzvmuDc2DkUYpDQGz+aUyJ1cihozLGxAK/Aj4JlAI3GGNKD7tsF3Ar8Hg/t+i01pb5v+afZLwiIiIiIiIiIgM6MHJoRPMaiEuCEacfvcHwUgqoY19dQwiii0yDGTk0E9hmrf3QWusF/gZc3vcCa22VtXY90BuEGEVEREREREREBqW6yU1CbAxJ+1ZAUTnEJRy9QfZY57+NHx55rm0/dEX/NveDKQ4VArv7PK/2HxsslzFmlTFmuTHmiv4uMMbc5r9mVV1d3XHcWkSCSbkpEpmUmyKRSbkpEpmUm0NPdVMn4zItZv8GGHXOsRtkjwMgtaOKrh7foef+cBH810hwNwYh0sgRigWpR1lry4EbgfuMMWMPv8Ba+6C1ttxaW56bmxuCkERkMJSbIpFJuSkSmZSbIpFJuTn07Gnq5NykXWB7nZ3KjsU/cmg0+9jjn5IGgKcVmncBFj54OjjBRojBFIf2ACP7PC/yHxsUa+0e/38/BN4Eph9HfCIiIiIiIiIig1bT4uEMswUwzrSyY0lIwZs8gjEx+9jZ2GfHspoPPnrcsvvIdlFkMMWhlcB4Y8xoY0wCcD0wqF3HjDHDjDGJ/sc5wMeAjScarIiIiIiIiIjIQHp8vdS2eZjQvQlyJ4ErY3ANs0YzyuxnV9/t7GvWO/+NT4bWQY+ROSUdszhkre0Bvg68AmwCnrTWVhhjFhpj5gMYY840xlQD1wK/M8ZU+JtPBlYZY9YBbwD3WGtVHBIRERERERGRgKtr76LXQn7nFigY/MSl+NxxlJj9VDX02c5+fwUk50DBGdC6NwjRRo64wVxkrX0RePGwY3f0ebwSZ7rZ4e3eAaaeZIwiIiIiIiIiIse0r8VDDi0kddVD/uDLESZ7DNmmlZraWmCKc7CpCrLGQEYh7Hw3KPFGilAsSC0iIiIiIiIiEnQ1LR4mx+x0nhxHcYhhowHoruuznX3zThg2CtILoG0v9PoGaHzqU3FIRERERERERKLCvhYPk42/OJQ3ZfANs8YAkNi2i25fL/h6oGUPZBZDeiH09kB7bRAijgwqDomIiIiIiIhIVKht8zAudj82JReSswbfMMsZOTSKfexudENrNVgfZI6C1OHONe76IEQcGVQcEhEREREREZGoUNfWxbi4Wox/JNCgJabhTc5jTMw+ttW2Q5N/9NGwUR/teOZpCWywEUTFIRERERERkQB49N0qbv7De/z05Uo27WvFWhvukESGnLq2LoqpOThN7HjE5E5grNnL1tp2aNrhHBxWAq5M53EUF4cGtVuZiIiIiIiIDOz59Xu547kKCjOTeGd7A79+cztjclP48pyxXDOjiJgYE+4QRYaE1rY2cnrrT6g4FJc7gXE73+fhmlbwboU4F2SMhAOF3s7mAEcbOVQcEhEREREROQm+XstPX97MlIJ0nv3ax2jp7OaVihqeWLmb7z6znpcravjlDdNJTdSfXyLBlti2y3lwAsUhciaQhpvammro3QpZYyEmFpKif+SQppWJiIiIiIichDc317Kr0c2XzxtLfGwMOamJ3DRrFM997WMsvHwK/9xSx42/X05De1e4QxWJar5eS6pnr/Mks/j4bzB8MgBJDRvord8KOeOd44npzn890TtySMUhERERERGRk/Cnt6vIS09k7mn5hxw3xvDZs0t48OYZVNa0ccl9S/nl61txe3vCFKlIdGvs8DKcJudJ2ojjv0HhGVhimMlGTPNOyBnPqxU11HZ0Q2KGRg6JiIiIiIjIkVbvamLZtno+e3YJ8bH9/3l14eQ8nv3qx5g8Ip1fLNnCdb97F29Pb4gjFYl+dW1d5JtGLAbS8o/d4HCJaXhzS/ly3GKM9bE5djy3PfY+3/+/DZCUEdVrDqk4JCIiIiIicgI217Rx++NrKMxM4uazR4HXDc98EX4+Gd578JBrSwvSeewLs3jgxuls2NPKH5btCFPUItGrscNLHk10u7IhNv6E7pEwds7Bxz+qdApMa3c3YV0aOSQiIiIiIiJ91LV1cdND7+H19fLbz8wg3RUPr/4APngS0kfASwtg65Ij2l06rYBzx+fwp7d30O3T6CGRQGrocEYO9aYVnPA9zPnfY2vydH7dM5+3drQzMiuJ+nYvntg0rTkkIiIiIiIiH3ngH1tp7ezmsS/MZGpRBuxbD6v+CGd/HT73EuROhhe+BT3eI9p+7mMl1LZ1sWTj/jBELhK9Gju85JtGYjJOvDiEK4Pd85/gpz3XA/Dvn3QWqW43KRo5JBIqXT0+3tpax7batnCHIiIiIiLSrx5fLy98sI+LS/OYlO/fxeiNn4ArA+YsgLhE+MSPoHkXrH7kiPbnTRjOiAwXT63aHeLIRaKbUxxqIj6z8KTuc/6E4dz76dNZ8s05TC3MAPzFIa05JBJ8bm8Pn394JTf/YQUX/WIpf3pb87BFREREJPKsrGqivt3LvGn+3ZD2roEtL8E5t0NSpnNs3IVQfA7888+ecsMAACAASURBVKfg7TikfWyM4aozCvnnljpqWjwhjl4kejW3dTDMtGNOZDHqPmJiDFdOL2J8Xhq5aYkAtPYmgbc9EGFGJBWHJCL09lq++cRa3t3ewN3zp/CJ0jzuXryRlzfUhDs0EREREZFDrKpqxBiYPT7HOfCPH4MrE2Z+6aOLjIGL74aOWlj6syPu8enyYizw+Hs7nQOv3eUsZt2lEfQiJ6q7tdZ5kJIbsHu64mNJc8XR5Et08tPagN07kqg4JBHhp69s5pWK/fxgXim3nFPC/TdO5/SiDBY8vY7qJne4wxMREREROWjN7mbG5aY6i1DvWArblsC53wJX+qEXjpwJZTfBO7+EXe8dcqo4O5kLJg7nz+/twr36KVh2r7OY9ZI7QvhKRKKLbQ98cQhgeFoijT0JgD1iJGC0UHFIwu7FD/bx239u58ZZxXz+YyUAJMbF8sCNZ2AtfOuJdfh6o7M6KyIiIiKnFmsta3Y1Mb04E3p98Mr3IWMkzLyt/waX/Bgyi+FvN0L91kNOffPiCTS5vdS/+jNszkSYPB82PQ+92sVM5ETEuOucB6nDA3rf3LRE6rsSnCdROrVMxSEJqxZ3N3c8V8HUwgwWzp+CMebguZFZydw9fworqhr5xZLNYYxSRERERMRR3dRJk7ubaUWZUPF3qPkALroL4pP6b5A0DG580nn8yHxo2nnw1GmFGdw9y1LsqeS15E9hJ13qTEPbuybor0MkGsV7GpwHKTkBve/wNBc1XfHOkyid+qnikITVg29tp6Gji/+6aipxsUf+OF49o4hPl4/kV29s543K2jBEKCIiIiLykcoa5w/D0hFpzlpCuZNhylVHb5QzHj77HHR3wOPXgaf14Kmb49+k2ySwYMsk3uZ052DVW8EKXyRq+XotSd2NzpOUwI4cyklNZL9HxSGRoGh2e3nknZ18auoITvNvD9ifuy+fwuQR6XzrybU0dnhDGKGIiIiIyKEq9zmFncm+zVC3Cc7+KsQM4s+q/NPg03+Ghm3w7FecRW29HZgPniK29FJShw3nf5Y1QHoR7N8Q5FchEn2a3V6yaaUnxgUJKQG9d0ZSPPXdzq5lmlYmEmB/XbGb9q4ebr9g3FGvc8XH8r/Xl9Hq6eFnr2p6mYiIiIiET2VNG8VZySRtegbiXFB6+eAbj54DF90Nlc/D63c729x7momZ9WVuPaeEdbub6cyaDDUqDokcr8YOL9mmhS5XtrNbYABlJMXRjst5opFDIoHj67X8eflOzh6TzaT89GNePyEvjZvPGsXfVuxid6N2LxMRERGR8KisaWVifhpseQXGXgiugUfA9+vsr8H0m53dyd6+D6ZeB8WzOH+is7vS9rjRUL8Fuj1BiF4kejV2eMmlhd6kwK43BJCZnEA7/nXFujRySCRglm6tY09zJzefPWrQbb503hhijOHhd6qCF5iIiIiIyAC8Pb1UNbg5M6MVWnbBmPOP/ybGwPz7nSlmV/4OLv8VAGNzU8lPd7G8owCsD+oqAxq7SLRr7PAyzLQFfDFqcKaVddgDxaHWo198ilJxSMJi8bq9pLviuHDy4BcKG5GRxLxpI3hipTMdTUREREQklHY2dODrtZRb/7Sv0eee2I2MgcmXwenXQ1yC/5BhxqhhLGse5lzTsC0AEYsMHQ0dXrJMG3FpuQG/d3pS/EfTyrTmkEhgeLp9LKnYzyVT8kmMiz2utrecU0J7Vw/PrtkTpOhERERERPq3rdb5o7CkswKSsiB3UkDvP254KsubM7AYFYdEjlNTexfZtBKfHvjiUGZyPB4S6DWxmlYmEijvbm+grauHedNGHHqiswne+jksuROq3++37fSRmZSOSOexd3dirXUOVr0Nf5rn/FdEREREJEgOFIcyWzbBiNMDvujthLw0PDaB7tQiFYdEjlNrWysu001ckKaVgaE7NlkLUosEypuba0mKj+WsMdkfHWzcAb+dA68vhHcfgIcugEfmwwdPg7fj4GXGGL4wezSb97fxSkUN+HrghW/BzmXw2BXQVhOGVyQiIiIiQ8H2unaKM+KJqdsE+VMDfv8JeakANCWNhPqtAb+/SDTraat1HgStOARdsSkqDokEyj+31HH22Gxc8f4pZd2d8MTN0NUC//IP+O4O+MSPnDfEZ74AP5sI7z0I/pFCV0wvZGxuCj95sZLdb/0Z6iqxcxaAzwvb3wjjKxMRERGRaFbV4OaczEbn9878aQG//6jsFOJiDNWxRdCw/eDvvyJybL72eudBcuCLQ/GxMSQnxOIxyeBVcUjkpO1s6KCqwc15E/rMA33jJ7D/A7jqISiaAa50OOd2+OYGuOV5GDkTXloAb94DQGyM4b+vnkZTh5ddrz9IVW8eN2+/AJuSC9v/EaZXJiIiIiLRrqqhgzMSq50n+acF/P4JcTEUZCaxozff+QO0oy7gfYhEK9PZ4DxIzj76hScoMyket0nSmkMigbD8QydhPzbOn7D71jnTyM64BSZ84tCLY2KdHSA+8wyUfQb+eQ9sWgxAeUkWL39uNOfEbmRn0WUs295EXc7Z8OGb0NsbwlckIiIiIkNBs9tLs7ubcTH7wMRC1tig9FM0LInKLv/vyo07gtKHSDSK8zQ6D1KCUxxKT4rHjUu7lYkEwoodTWSlJDA2N9UZJvvid52dHi5eOHAjY+DSe51F/xb9K7TuBaBw2+MY4Kwrv0peeiLPt42Fjlpo0puoiIiIiATWzgY3AAU91TBs1MEt6AOtaFgSazqynCeNHwalD5FolNDlLw4FaeRQmiuONusa2iOHjDFzjTGbjTHbjDHf6+f8HGPMamNMjzHmmsPO3WKM2er/uiVQgcupaUVVA2eWDMMYA5UvwO7lcOF/QFLm0RvGJcDVf4CeLnj6C86nKCt+D1OuJDF3LJdOK+ClWv+baF1l8F+IiIhIkFXWtHLvki38o3I/vb1ad0Qk3KoanE1SMjt3Qfa4oPVTNCyZ9e0ZWBOj4pDIIHV6faT3tuAzcZCYHpQ+0lzxTnEoSkcOxR3rAmNMLPAr4GKgGlhpjFlkrd3Y57JdwK3Adw5rmwXcCZQDFnjf37YpMOHLqaSmxcPuxk5uPWe0M2po6f/AsNHOlLHByBkPl90H/3cb/LIMYuLhvO8CMK0og7/1FDg/0bWbYNK84L0QERGRIFtZ1cj1Dy7H5y8KTSlI54qyQmaUDGP6yEznQ5YTsPnDKrJe+ybZDauIGXMeXP4rcGUEMnSRqFXd1Imhl8SWHTD+40Hrp2hYEt3E0ZNWRLxGxIsMSqPbyzDa6ErIIvkE3yOPJc0VR6svcUjvVjYT2Gat/dBa6wX+Blze9wJrbZW1dj1w+GIvlwBLrLWN/oLQEmBuAOKWU9Da3c0AnFGcCTvfhn1rYfY3IfaYNcqPTLsObn0ept8Mt70BwycDUDYykw6SaE8qcIpDIiIipyi3t4fbH1/DyGFJrPj+hfz82tPx9vTy4xc3cdWv3+GyB5ZRsbflmPex1h4sLlU3ubn9kXfwPTyf9D1v8bK3DFv5Ijx5i3ZDEhmk6qZOJiW3Y3o6ITs46w2BM3IIoC3Jv2OZiBxTU4eXbNNGjysraH2kueJo8rmc4lAUvncO5q/yQmB3n+fVwKxB3r+/toWHX2SMuQ24DaC4uHiQt5ZTzQd7momLMUwekQ7P/9kZ7jf12uO/Ucls56uP4qxkMpPjqY4bxSRNKwsY5aZIZFJuRrdH3tlJTauHp798NsPTXVw9o4irZxRR2+rhjc21/PzVLVz163f4/qcmM//0At79sIGXN9TQ5ulm8oh0Ul1xLP+wkferGnF3+0hNjKPN08N/JjxCacxONp7/EP+9Mod17gn8+4cPwQdPOR++yElTbka3Pc2dTE9tglYga0zQ+ikclgRAQ0IRWfVLgtbPUKLcjH6NHV6yTCskDw9aH2mueBp7EiDWBz0eiE8KWl/hcBxDNoLHWvsg8CBAeXl59JXgBID11S1MyEvD1euGjc85v4gmJAfk3sYYphZmsKGugEn1i8HXDbHxAbn3UKbcFIlMys3o5en28eDS7Zw/MZfykkM//Rye7uLTZxZz4eQ8vvXkOu5cVMGdiyqcc2mJDEtOYOnWeny9ltE5KVw9o4iMpHjaPD2cZrdw9ZpXYdaXKT3/Wv44pZ3L7+/k+sQ3KXnjJ5jTrnZ2CZWTotyMbnua3FyU1OgUh4aNClo/eWmJxBjYE5PP+M4m6GyCpGFB628oUG5Gvya3l5G0YlJLg9ZHmiuOfb0uiMVZlHoIFof2ACP7PC/yHxuMPcD5h7V9c5BtJYpYa/lgTwtzp+TD1leh2w3Trg9oH+OHp7FqZx7XxHihaSfkBG+hQBERkWB4eUMNTe5ubjt34FEJOamJPHzrmby9vZ711S1MLczgY+NyiI0xeHt68fT4SHf1+YCk1wcPfhnSRsAFPwRgbG4q3/1kKfcsvpTfdd/nfGhz2lXBfnkipyxrLXuaOylJbQAMpBcFra+42Bjy01186Bvu/CHVuAMKVRwSORpn5FAb8Wm5QesjzRXPNutynnjbgOD1FQ6DWXNoJTDeGDPaGJMAXA8sGuT9XwE+YYwZZowZBnzCf0yGmOqmTprd3ZxWmAGVL0JyDoycGdA+xuSmsLk7z3nSsDWg9xYREQmFv67YxajsZM4ac/RteGNiDOeOz+VrHx/HnAm5xMY4i28mxMUcWhgCWPVHqFkPl/wYEtMOHr5p1ij25F3AbjOC3uW/CfhrEYkmDR1ePN29FFAL6YVB28b+gILMJDZ6/P8OaMcykWNqae8kw7hJCGJxKN0VRwf+0UJRuJ39MYtD1toe4Os4RZ1NwJPW2gpjzEJjzHwAY8yZxphq4Frgd8aYCn/bRuA/cQpMK4GF/mMyxGza1wrAlPwk2LoEJswN+PD1MbkpfGhHOE/qVRwSEZFTS317F+/taOSq6UXExARop5W2Gnj9P2H0eTDlykNOxcYYFnyylIe9FxBTvQJqPghMnyJRaF+zB4Ds7n1BnVJ2QEFmEus6Mp0n2rFM5Ji8bbUAxKTmBK2PNFcc7RwYOTQEi0MA1toXrbUTrLVjrbU/9h+7w1q7yP94pbW2yFqbYq3NttZO6dP2j9bacf6vPwXnZUik21zjbPc3qXsTdLXAxMBvWjcmJ5UWUvHED4OGbQG/v4iISDC9tbUOgAsmBWgxTWvhhW87i2bO+wX0s7XvnPE5VOZdRhcJ2JV/DEy/IlFoX0snACnuPZAZmuJQVSvY1HxnWpmIHJWvrd55kHz0kbcnI90VT7s9MHIo+razH1RxSORkVda0MSo7maRdS8HEwug5Ae8jLz2RlIRYahNGqjgkIiKnnH9uriM7JYEpBemBueH6J6DyebjgBwOuw2eMYf7ZU3jBN5Pe9U+BtyMwfYtEmf2tHuLpId69HzJHHrvBSSoclkS3z9KdPkrFIZHBcPuLQynBXXOoHRWHRE5KZU0rE/PS4MM3oKgcXBkB78MYw+jcFHZQoGllIiJySrHWsmxbPeeOzwnMlLL6rfD8t6D4HDj760e99NJpBfydC4ntboOKZ0++b5EotK/FQ2FMEwYLGcFbjPqAkf7t7FuSijStTGQQYkNSHIrTyCGRk+Hp9rGjvoPTc4G9a2DMx4PW1+icVDZ6h0NHLXQ2B60fERGRQKpu6qS+3XvE9vUnpLMZ/noDxLvg6oeOucZfSmIc8WNms8sUwJo/n3z/IlGopsXDlFRnDc2QFIeykgGojRsBbfuguzPofYqcyhK6GpwHQSwOpbriNHJI5GRs3d9Or4VZMZVge4MypeyA0TkpvO/2/4Og0UMip47eXtjyCiy5E1Y/qqktMuSsq3Y+0CgbmXlyN+ruhL/d6Iw0uO5RyCgcVLPzJg7nce8c2PUO1Gtqtsjhalo9THAdKA6FYFpZpvMH6C7r34m3qSrofYqcylzdTfQSC66TfB89itSEONwkYjEqDomciMoa5410nHstxCZC4Yyg9TUmJ4Utvf5Pc+oqg9aPiARQVxv87QZ4/Dp455ew6Hb47Wyo2RDuyERCZu2uZhLiYpiYn3bsiwfS2QR/vgZ2vgNX/g5KZg+66ZwJuTzjm0OviYW1Gj0kcriaFg+j4/2bLqcPruh6MlzxseSnu9ji9X/oqXWHRAbU1eMj3ddMZ3wmxASvxBETY0hJTKArNgW6WoPWT7ioOCRBV1nThis+hozalVB0pjPMPUhKclKotrn4YhKgfnPQ+hGRk9fq6WbF9jp8T94KW5fA3P+GH9TAZxdBtwcevVwjAGXIWFfdzGkF6cTHDuJXM08rNGyHlmroaoeOelj3BPz2XNi9HK76PUy95rj6L8lOhrQ8KpPPhPVPOaP5RARw1gSrafVQYBogKQsSkkPS78isJNZ3DnOeaN0hkQE1u7vJMa14EwMwNfsY0lxxdMYkO+/FUSYu3AFI9Ntc08bpubGYmvUwZ0FQ+xqdnUIvMTQnjyK7TsUhkQOeW7uHe16qJCEuhh9fMZXZ43PCGs8L6/fx7afW8i+9zzAz/jV2nfMjis/6snNyzHlwy2L44yXO9Jgv/gMST2I0hUiE6+21VOxt5doZh61j4u2A/RvB0+KMCtq7Bra/PvDI2OGlcO0jUHT8I3SNMZSNzOSZPR+jtOPnUPWWk4siQntXD26vj9ze+pCsN3RAcVYKy7Z2QEIaNO0MWb8ip5rGDi/ZphVfUvB/v01NjMPtSWFYFI4cUnFIgq6yppUvFe2Cxl4oPiuofWUkx5OdkkB1bLGKQyJ+FXtb+PaT65hSkE5bVw+3PbaKV74x5+Bil6H2QXUL33xyLZcMb+Gbzc/yupnNt96ZwPPl7o9iyhkH1z4Mj86Hxd+Aa/4QllhFQqG6qRO318fkEX22sN/0vDPFsrPxo2OxiTDqbJh6rfMHak+XUzSKjYcRpzs7k53EcPqykZn8cuNUfpiWgtnwtIpDIn61bV0AZHbvh9zxIet3TG4Kz6z24isuJrZZxSGRgTS5vRTQik2ZFPS+0lxxdHiSonJamYpDElR1bV3Ut3s5I2YbYKCwPOh9luSksLmjgNPbX3c+dU1ICXqfIpHKWssP/r6BzOQEHvn8TNq7erjk3qXcuaiCP956Zlji+dELG0l3xfOL9L8S605m4k2/pvv3m1j4/EZ+/9k+/0aMPhfO/z688SOYMBemXRvyeEVCYZN/bb5JB4pDNRvg6c85I4EufwCSc8CVAVmjIS4xaHGUjcykiwRqCy8kb9NimPcLp/AkMsTtb/UAkNK1H9LPD1m/o3Oc32E7kopI14LUIgNqdncz1bTSnRq8ncoOSHXF02qTtSC1yPHatM/5hXeMZyMMnwyu9GO0OHnjh6eyvMO/s0PtpqD3JxLJ1u5uZu3uZv7fhePITE6gaFgyX/34OP5RWXswP0Pp7W0NvLejkR+f3kB81Ztw3r9RNHIUt18wniUb9/PO9vpDG5z7LRg5C178NrTVhDxekVCo3NeGMTAhL9U58Pw3nd1WPvMMTJoHxbNg+KSgFoYAphZlALAy5XxnRNKHbwa1P5FTRW1rF8l4iPO2QnpByPo9UByqix/hTCuzNmR9i5xKWttaSTOdxGfkBb2vNFccrdYVlWsOqTgkQeX88WnJaFwHRcEfNQQwIS+NlR7/LhI1H4SkT5FI9djynaQkxHLlGR+tkXDTrGKS4mP5w7LQL275yLtV5KTEc3HN75ytgMu/AMDnZ5eQm5bIb97cfmiDmFi4/NfO9JkXvh3yeEVCobKmlVFZySQnxEH1+1C9wlmjLyW0a4Olu+IpzkrmVU+ps8bJpsUh7V8kUtW2eRhhGpwnIVxz6EBxaLfNhZ5OaK8NWd8ip5KuZucDRFdmftD7SkuMo7k3OqeVqTgkQbVxXyuz0pqI8TSHZEoZwMT8NKptLj3xqbBfW2HL0OXp9vHSBzXMLyskNfGjWcSZyQlcdUYhi9btpaWzO2Tx1LZ5+EdlLd8aX0PMnvedUUH+3QsT42L53MdKeGtrPRV7Ww5tmDMOzv8eVD7v7GomEmU217R9tIX9yt87hZmyG8ISy5SCdNbXeGD8xbD5Rej1hSUOkUiyv7WLkvhm50kItrE/wBUfS2FmEpu7sp0Dmlom0q+eVqdwGp8eguKQK46mHpemlYkcr037WrkgY5/zpGB6SPqckJeGJYaG5HHOug0iQ9SyrfV0dvv41NQj3yivLR+Jt6eXlz7YF7J4/r56D75eyxVtf4PUfDj9xkPO3zRrFK74GP68vJ9FN8/6GmSPh5f+DXw9IYpYJPi6enxUNXQwMS8NerxQ+QJMuTxsO/SVjkinqsFN59i50FEH1SvDEodIJNnf6mG8yz9KIITTysBZlHpdmzPlk5bdIe1b5FRhO/yj6lJCsOZQYjxNPhf0eJz37Sii4pAEjafbx/a6Ds5I2AmxCZAb/NXjAXJSE8hKSWB77BjYXwG9vSHpVyTSvLqxhjRXHLNGZx9x7vSiDMbmpvDM6uqQxbNo3V6uHNFA8p634ayvHBw1dEBGUjyXTSvgubV7afMcNqIpLgEuvhsat8P6J0IWs0iw7ajvoNfCuLw0Z/v4rlaYdFnY4plS6KwNuCl1FsTEwZaXwxaLSKSobetidMKBkUOhLQ6NzU1lRZN/J0/tWCbSr1i3f83KECxIneaKow1/TkbZ6CEVhyRottW24+u1jO7eDnlTnD/uQsAYw4S8VFZ7i8DbBk2hX1dFJNx6ey3/qKzl4xOHkxB35D/1xhiuOqOIlVVN7GnuDHo82+vaqdjbyldcSyA+GWbc0u91N501CrfXx6J1e488OfFTznbdS3+qqS4SNbbubweczRTY/CLEp4R1C/nSEc4IhfV1ForPhi2vhi0WkUhR2+qhKLbRGZUQ5IXhDzcmN4V6bzy+pGxo3hXSvkVOFQkef3EoZXjQ+0pzxdFuk5wnnuag9xdKKg5J0FTWtAGWYa2bnD/oQmhqYQZLmv2f7OxdE9K+RSLBlto26tu9zB4/8IK2l04bAcAL6/spxATY4nV7yTatjK99GcpuhKRh/V53elEGE/PSeGpVPyOajIHZ33TWXNj2enADFgmRrbXtxBj/wrPb/wGj50B8UtjiyUtPJDslgU372mD8J6C2Apo1lUWGttq2LvJsQ0jXGzpgbK6zi6E7uVDFIZEBuLoa6IxJOWJUejCkJ8XTjLNYvIpDIoNUua+VMXENxHY1Q/60kPZ9WmEGFT0F9MYmqjgkQ9K7251dVc4ec+SUsgNGZacwrSiD59cHd90hay3Prd3Ld3JWYHxeOPOLA15rjOHa8iLW7m5m6/5+hupOnOd8cvv+n4IYsUjobKttY1R2Ci53DTR+CKPPDWs8xhhKC9Kp2NcCEy5xDm7V6CEZutq7enB7fWT56kK6U9kBY3KdP0Ib4vNVHBIZQEp3I+74rJD0le6Kp8X6i0OdKg6JDMrm/W1cOMy/OFgYRg71EEdT2gTYuzakfYtEgne3NzAyK4mRWf450dteh9/NgZ9PdhZ17ukCnNFD66tb2NnQEbRY1le3sLO+jfk9L0PJuTD86OuPXTG9kLgYw9Pv9zN6KC4Bpn/GWQdFW/pKFNhW2+6MDKh6yzlQEt7iEDiLUm+paad72DjIKNZIPRnS9rd6AEjr2h+WkUN5aS4S42LYa3Od4pDW0hQ5hKfbR6Ztpitx4A9EAynNFUczzog+OptC0meoqDgkQbNpXxtnuvYABoZPDmnfJdkppCXGsTVuHOxbpzdSGVJ6ey0rqho568BC1NXvw1+vh652GHkmvPdbeOwq6Oli3jRn+mUwRw/93+pqLo5bR0rnXjjzX455fU5qIudPzOXva/bQ4+snd0+7BmwvbH4pCNGKhI6v11JV72bs8BSnOJQ0DPJOC3dYlBak4/X1sr2+A8ZfBDv+GXU7sogMVm1rF6m4ie9ph4zQF4diYgyjspPZ0ZMFPi906IMRkb4aO7zk0kx3cvDXGwJnA5WDI4c0rUzk2Brau6hv72ICVZA9DhJSQtp/TIxhSmE673WVOItS128Jaf8i4bSjoYNmdzdnlmSBrxue+Tyk5cO/vAbXPQpX/g52LoMld1CYmUT5qGEs7m8B6ABo9XTz9PvVfCNjqbN9/aR5g2p3zYwiatu6WLat/siTeVMgc5Sz5bfIKay6yY3X18vYnFTYvQJGngUx4f/VrHSEs2NZxZ5WGHcxeNth17thjkokPGrbPIwwjc6TMIwcAudDz03uTOdJS+h2GRU5FTR2eMk1LZCaF5L+0lxxtKJpZSKDttm/Vki+eyvkh+dT0KmFGbzc5J8bvmdVWGIQCYc1u5w3qrLiTPjgKWcB50/9DJL9c7FPvx5mfcUZQVS1jPllBVTWtLFxb2vAY3ly5W6yu/cyqWOFs0NZbPyg2n180nAyk+N5ZvWeI08aA5MuhQ/fjLotRGVo2V7n7FQ2IaPb+RBj5JlhjsgxJjcVV3wMFXtbnQWyYxNg25JwhyUSFrWtXYwwzjp+4VhzCKAkJ4W1bWnOE607JHKIppZW0o2b2PTQFIdSE+PoIoHumERNKxMZjC01baThxtVRHbYh8lOLMqnsycOXkP7/2bvz+CjLc//jn3sm+76SkB0CBBKWIGFRcAdBrRYr7tba01ZrW9uetva05/hTjz221i7aqq1ardZWrVtVqMXdCojIviSEQAKEhOwhezJZZu7fH8+AISZkIZnnmcz1fr14ycw8M893xlxk5pp7gXJpDgnfsbOsgfBAP6bEhcKGhyBhlrHrUG8X3mWsJfLmj7gsJx5/u+LV7aP7bWRtSye/f/8AP4ldj7LZYd7NQ75voJ+dy2Yn8U5BFc2O7s8fMO0icHZC6cbRCyyEhx2sNdb6yuwsNK5IWWBims/YbYrpiREUVDRBYJixpf2B98yOJYQpqpsdZPi5PwCaNHIoPTaEwz3uL3iaZPdAIXprO2aMfg+MmuiR8/nZbYQF+tFhj5BpZUIMxf6aVhYEuz9oengx6uNmjPNzWQAAIABJREFUJUeisVEbkS0jh4RP2XGkkTmpUdgqtkFdESy6zRht01tACFx8P9QWEl30dy6cnsAbO4/S1TM663M5up384KWdqO52lne/DzMuh4ikYT3GlfNS6Oxx8WZ/6yGlLDBGMxzeMCp5hTBDSW0r0SH+hNfuAGWH5DPMjnRCTlIEeyub0VrD1GVQWyhb2gufVNXsYGpgg1Gj4Z758NlXWkwIrYTQExAhdShEH52NxvvEkJjhvc88HeFBfrTZwmRamRBDsb+qhbPD3B/oPLyN/XHpMSGEB/pRaJsG1Xuha+x2YxLCKhzdTvZVtTAnNRLyXwF7IMy4rP+Dsy6BtLPg3/dz/dwY6lq7WJt/+gtT76tq5qrHPmFDcR1P5xZh72yChd8c9uPMSYlkyoQwXu1v17KAEEieB6Ufn3ZeIcxSUtvG5PgwOLoNErI9vj7fqeQkRdLi6KHsWIex7hDI1DLhk2qaO0n3O2Z8wWH3MyVDarSx82hrYKKMHBKij+6magBCYjzXvI0I8qdVSXNIiEFprSmqbmGOX6mxMFi4Z+Z/9nV8Uep1jkzQTplaJnzCvqoWnC7NrKQwKHjNmH4VFNH/wUrBsv+FthqW1L/K5LhQnv748IjPrbXmyfUHuezhDVQ0dvD49XM4o/w5Y5HdtIXDfjylFKvmpbC1tIFDdf00d9MXQ8VOWXdIeK1DdW1Mjg2Bih2QZJ1RQ2CMHALIr2iC+CyISoP975icSgjPq2p2kEQdRKaalmFiVBBKQb1fgowcEqIP3WI0h1RYosfOGRHs3s5e1hwS4tSqmztpcfSQ0V1i2qih42YlR7L6WAoaBUc2mZpFCE8oqGgCYK7tILRWQ/bKU98hdQFMuxjbxt9z64IYdpY1suFAPzuEDUJrzf1v7eP/3izkgukTePcH53KRcz00HYHF3x3JUwHgirnJ2BS8vLWfN8MZi92N3y0jfnwhzNLa2UNtSyezwxqMN5dJc82OdJKsxHDsNmX8m6IUTF1ubGnf7TA7mhAeo7WmutlBnLMaosxrDgX62UmMCKKCOBk5JEQf9rZqXCgIjfPYOcOD/GlwhUpzSIjB7KtqJpAuItsOwURzm0MzkyOp7wmmM3a6bMMrfEJBRTMRQX5MqF4PygaZFwx+pwvuhM5mrux4heSoYH751j5cLj2s8z614RCPf3SQGxel8ccb5hETCPz7F8aaY9MuHtmTARIigjg/awKvbCun29lnPaTjIy0qdoz48YUwy2H3aLiZHDSusNB6QwBB/namxId9tovhtOXQ3Q6H15sbTAgPau7ooaenm4juWtN2KjsuNTqEwz2x0Nk87qayCHE6ghw1tNijhrwj7miICvGn2hkO7XWgh/ee2cqkOSRG3f7qFqarI9h0j2mLUR+XkxQJQHn4HGN0gbOfXY+EGEcKKprJTopAlbwPyXmfbV9/KokzYfY1+G15nDvPjmDP0Sae/eTwkM/57t5q7vtXIStyErn38pnYbAq2PgWNpXDB/wPb6f2quXZBGjUtnXywr+bkG4KjICYTjm4/rccXwgyH643mUJpjn7E2WPwMkxN9Xk5ShLGdPUDG2eAfCkX/MjeUEB5U1ewggQZs2mnqtDKAlJhgCjuijAsyekiIE8K662gLiPfoOaNDAqjsDgVnl9GwHSekOSRGXVFVK0tCSo0LyfNMzTIpLpSQADvb1CzoapV1h8S41uN0sa+ymbx4bTRMpi4b+p3P/2/QLlZUP8H5WfH8Yu0+dpYN/s3kxpI6bn9hO7OSI3nwmlyjMdRSBR/cB5kXwpSlp/GM3NGy4kmMCOKvn5R+/sakuca6Q0J4meMjh6Ka9kJCDvgFmJzo87KTIqhp6aS2pRP8g2DKBVC0dlx9SyrEqVQ1O0hRtcaFqDRTs6REh7C33fjSU9YdEsLg6HYS4zpGZ/AEj543OsSfyp5w40Lb8JdjsCppDolRV1TdzJmB7sWoI5JNzWK3KbInRvCv1qnGFJuSD0zNI8RYOlzfTmePi8V+hYCGyecN/c7R6XDmt1G7X+S3Z3UzISKQr/x5M+v21/Z7eGtnD3/4dzE3/3kL6TGhPH3zfIID7MaHxtXfNb5JueRXxlolp8nPbuPLZ6azobiOfVV9vp1JmgvN5dBa0/+dhbCoQ3XtJIYHYq/eY/oo24EcH317fC0zsi6FlkqokNF6wjdUNnaQbjMWuyVmkqlZUqKDKXO511RpPGJqFiGsoralkwTVgCvUsxsgRYUEUI97wxdpDgnRP6dLc6C6lemuA8Z6IKPwwfB0zUyOZHOVRifnQcn7ZscRYswcb5xM69htTP8Y7gK3Z/8QwicS/cGPee7meUwID+SmP29m1R83cu+avfziX4X88KVdXPnHjZzxs3d54K0izsuK5++3LCI2LNB4jE1/gANvw0U/g9jMUXtuNyxMI8jfxhPrDp58Q1Ku8V8ZPSS8zOH6NvKiWsDRZPr6fAPJdu9YVtB73SGbH+xdbWIqITynoslBmqpBK5v508qigqknAqc9SKaVCeFW09RKLM3YIpI8et7okADq9fHmUP9fpHojaQ6JUVVa30ZgTwtxjlLLLK45MzmSjm4nxyaebUy1aakyO5IQY2JfZQt2myK69lNj6/jhLswXGA6X/Bqq80nb+xhrbl/CTy+eTke3kxc2H+HpjYfZUFyLXSluWpTOa986iyduyiM61D0d5sC78M6dxuiCBbeM6nOLCgngxoXpvL7jKCW1rZ/dkDjL+G/1nlE9nxBjrbS+jYXB5cYFi44cigz2JzUm+LNFqUNijLWHClfL1DLhE6qaOpjqX4+KTPHoYrf9SY4OBhRtwRONNf2EEDRWH8WmNEExnp2tEh3i/1lzqH38jBzyG8pBSqkVwO8AO/Ck1vr+PrcHAs8C84B64Bqt9WGlVAZQCBS5D92ktf7m6EQXVrSvqoVcW7FxIWW+uWHcZqcYw+K3h53LMn4De9+AhbeanEqI0bevqoU5MU5stYUw+6qRPciML8Csq+Cj+wmadDa3nnsWt547hBFApRvhxS8ba6d86YkxGTX4zfMyeX7zEX79dhF/vNG9nllQJESmQXXBqJ9PiLHS2tlDXWsXMzgEyg4TcsyONKCciZGfTSsDyP4i/PP7ULXHsiOehBgtlU0OMuy1EJ1hdhQmRgajFNT5JxHRcNjsOEJYQmudMcUyIt6zI/uiQwM4hg+OHFJK2YFHgYuBbOA6pVR2n8O+BjRoracADwK/7HVbidY61/1HGkPj3L6qFvJs+43htyl5ZscBIDM+jGB/Oxub4yBhJuS/anYkIcbEvqpmVoS7p12lLxn5A136W+ON8Es3wVDegB54D/52pbHN742vQWDYyM99CnFhgdx2biZr86v4uLjXtzQJ2VC9d0zOKcRYKD2+U1lXMcRnGYs9W1ROUgSH69tpcbh3+5xxudHQKviHucGE8ICKxg6SdDVEm7veEECAn42E8CAqSICGUhm9JwTQdcyYYhkS79kF46NDAujCny6/MJ9bc2gBUKy1Pqi17gL+DnyxzzFfBP7i/vsrwIVKWWCxGeFx+yqbWRJYgkqYaUxRsQC7TZGTFMHu8iaYtQrKPoW6A2bHEmJUtXb2UN7QwXxbkbEt9vG1eEYiKAKu+zs4u+HZlQM3iLSGT/4Az19trC/01X9B2NhuJfqNcyaTFhPC3asL6OpxGVdOyIb6A9DTNabnFmK0lNa3AxDdUvTZ1EiLykk2vhk9MbUsNBYyzze+aJEPp2Ic01rT2nSMCGeD6YtRH5cSHczBnlhj6+yOBrPjCGG+ZmN6topM8ehpo0KMaabt/jHQWu3Rc4+loTSHkoHeq56Vu6/r9xitdQ/QBMS6b5uklNqhlPpIKXV2fydQSt2ilNqqlNpaWzt+hmX5ouKqRnJc+yF1odlRTjInNYr8o010z74ebP6w5SmzI3kFqU3vUVTVAsCkjnxjvS+/wNN7wPgsuPFV483nk0uNBWh7fxCsyoe/roS3fwpZF8NX10LY2G8jGuRv5+7LsimuaeWZjYeMKxNywNUDdfvH/PxWIbXp3Q7XtxFNM/5tVZZvDs1071iWX9Frp8CZq4zdkso+NSmVdUltjh/NHT0kdLvXBYudam4Yt5ToYPY63B+xZN2hYZHaHJ8C2yrpVIEQHO3R8wb52wkNsNNoj4UW32oOnY5KIE1rPRf4AfC8Uiqi70Fa6ye01nla67z4+LH91lmMnbbOHkIaCgnUDkhbZHack+SmRtHZ46KoJchYL2Hn89DZYnYsy5Pa9B77q1sIopPIxr2j15xNyYOvvQNhifDSl+F3c+C5q+EPZ8Fji+HoDmMK2jV/8+hIwQtnJHBeVjyPflhiTHVJcK/XUuM7U8ukNr1baV07i0IqjQsWbw5NiAgiISKQ/KO91h2acZmxI+LO580LZlFSm+NHWUM7k5W7TuOs0RxKjQlhT3uUcUHWHRoWqc3xKdRRRZN/gik7ZCdEBlFLNLRUevzcY2UozaGjQO8VnlLc1/V7jFLKD4gE6rXWnVrregCt9TagBJh2uqGFNe2ramahbZ9xIf0sc8P0kZtq/CLdWdYIi74FnU2w/VmTUwkxeoqqWlgQcBjl6h7d5mx8FnzjA7jiCaMJ01xhTB1b9jP43k6Y/zVTfiH/YNk0mjq6efaTUoidYowI9KHmkPBuh+vbWBjifiuVYO3mEMCs5Ej29G4OBYZB9uVQ8Bp0d5gXTIgxdLSxg0m2SmMdTQssSA3GyKHDTndj49hBc8MIYbKuHhexzlo6ghNNOX9iRBAVzihjJ+xxMs16KM2hLcBUpdQkpVQAcC2wus8xq4GvuP++CvhAa62VUvHuBa1RSk0GpgLyL9k4tbeimfm2Inoi0iAiyew4J0mJDiY2NIAdRxohZR6kLzbWSnF2mx1NiFFRVNXCsvDDxoXRntbpFwBzroHrXoDbNsBNb8Di7xrbWptkdkoUZ0+N46+flOJUfsaaR7W+M61MeLfS+nZy7EcgfKKxho/FzUyOpKS2lbbOns+uzL3BWPdk7xvmBRNiDB1t6CBTVeKKTDv9qdqjJCU6hDaC6QqeAPXykUr4tupmBxNVPS6TPncmRgRR2h0BPR3gaBr8Dl5g0OaQew2h7wBvY2xL/5LWukApda9S6nL3YU8BsUqpYozpYz9xX38OsFsptRNjoepvaq2PjfaTENawt6KJBfYi7JOsNWoIQCnFGenRbD/iXrzvrO8aC5jly24rYnzYX93CPNsBiJtmatPGk67OS6Wq2cGnh+qNEU61+8yOJMSgHN1OqpodZPQcMnbQ9AKzUyLRmpOnlmUsgZhM2Pq0ecGEGEPlDR1MsVVgi7fOpIeU6GAAGoPToL7Y5DRCmKuivpEE1YjdpJF9iZFBlDjcyyq0VJmSYbQNac0hrfW/tNbTtNaZWuv73NfdpbVe7f67Q2t9ldZ6itZ6gdb6oPv6V7XWOe5t7M/QWq8Zu6cizNZcvpcYmlFp1msOAczPiOZQXRs1LQ6YehHEz4CPfzduhgEK31Xb0kl9WyeTHQWQusDsOB6zdEYCoQF2Xt9xFOKnQ8Mh6HaYHUuIUzpyrB1/eohtPwSJ3tEcmpNiTM3eUdb42ZVKwbyvQNkmY4F6IcaZyoYWJqsKVPx0s6OcMDEyGJuCKv8UY5dOIXxYU2UJAMETJpty/sTIICqc7oWwx8m6Q2O9ILXwET1OF3H1W40LGUvMDTOAvAxjNMW2ww1gs8Hi70FNARx41+RkQpyeoqoWJqtKgrqbLLdT4FgKDrCzLDuB9wtrcMVlgXbJN6nC8krr25mijmLTPV4zcig2LJD02BB2HOmzdfbcL4NfEGz5kznBhBhDzvqDBNADE2aYHeWEAD8bSVHBHHQlQns9tMuEDOG7HDXG1MqIpCmmnD8hIohq3M2h5gpTMow2aQ6JUXGgppVcXYgjMBZizOneDmZmUiSBfjY2H3b/Ip21CiJTYf1vZPSQ8Gr7qpqZZ3Ovt+NDzSGAJVPjqW/rotSWYlwhU8uExZXWtzFDubeg9pLmEMAZadFsP9KI7v37MiQGZl0Fu16EtnrzwgkxyrTWhDS6R+ZYaOQQQHpsCAWdE4wL8oWI8GGuBuN3aWDcJFPOnxodQpV2L+XQ3He/Lu8kzSExKnYdaWChrZCe1LNM2bloKAL8bORlRLOx2P0G1u5vjB4q2wSH1pkbTojTUFjZwuKAEgiKhFhrbLfrKWdmGov5flQfBcoGtUUmJxLi1Err25kTUI62Bxo77XmJuWlR1LZ0Ut7QZ3eyM79jLMYpo4fEONLU0U1aj7uJG59lbpg+0mJC+aTF3RySXTqFD/NvLqMbPwgzZ7eyyfGhdCt/2vxjoanMlAyjTZpDYlSUHioiSR0jdIo1p5Qdd/bUeIqqW6hpdq9LMvfLEJEMH94no4eE1yqqbma+fb8xasjmW/+sJ0cFkxEbwoZDzRA9CeqkOSSs7XB9G3P8y1AJ2WD3MzvOkM13T83edLDPCKEJ02HaxfDpY9DZYkIyIUbfkWPtZNmO0B6aCgGhZsc5SXpsCAUdUWj/UKguMDuOEKYJ6yjnmH+iae99g/ztpEQHU2ufAI3SHBLiBL+yjQAoi643dNySKXEAbCiuM67wD4Jzfwxln8p2vMIr9Thd1FRXktxT5nNTyo5bNDmWLYcb0PHTZOSQsLzDda1McXnPTmXHZSWEExsawMaSfqaPnfMj6GiAzTJ6SIwPpfXtzFBHcE7IMTvK52TEhqCx0RGdBdUyckj4Jq01cd0VtISkmpojMz6MMmcMNJWbmmO0SHNInLaOLiepzTtx2MNhQrbZcU4pe2IEcWEB/Luo9rMr537ZeJP+zp3Q2WpeOCFG4FBdGzNd7oZI2iJzw5hkdkoUTR3dtIRlGusvOLvNjiREvzp7nPQ0VhDmbIbE2WbHGRabTbEoM5aNJXUnrzsEkJIHU5bBxt+Do6n/BxDCi1TU1pOhqglMnmN2lM+ZFBcGQE1IJlTny8h34ZPqWjpJo5ruyAxTc0yJD2N/ZxS6qXxc1KI0h8Rp21nWyDy1j5aE+Zaf0mKzKS6YPoEP99XQ1eNyX2mHS39jdHw/+Jm5AYUYpoKKZvJs+9E2P0g6w+w4ppidEgnAQVLA1QPHDpmcSIj+lR1rJ+v4YtReso19b4sz46hu7uRATT9fpFzwP8booY2PeD6YEKOsu2IPNqUJSLFecygjLgSbgmLbZHA0QsNhsyMJ4XFVlWWEqw5sJm+ElJUYTpkzFtXTYewg6OWs/UleeIXCA/vJtFUSNvVss6MMyfKcRFo6e9hYUvfZlWmLYME3jDUTSj40L5wQw1RQ0cRCexF64lwICDE7jimmJYQTYLexw5FgXCE7lgmLOlTXTvaJncqsN11lMBdMNxbBfXdv9edvTJoL2Svhk0ehtfbztwvhRQLr3NO1LDj9M9DPTnpsKJ/2uBe0L99ibiAhTNBcYezSGzLR3I1YZkyMoEzHGxfGQaNWmkPitLUXbwAgeOq5JicZmsVT4ggNsLN2T9XJNyz9X4ibBq/dCi1V/d9ZCIvZf7SW2aoEW8ZZZkcxTYCfjekTw1l3LNq4QhalFhZ1uK6NmbbDOKMyjN0FvUxiZBBzUiJ5p7/mEMAF/w96HLDuV54NJsQoi2sppN0eDlFpZkfpV2Z8KOsb4yAgDMo2mx1HCI9zVBcDEJM63dQcUxPCqFDuLyelOSR8ndOlia3bQqctGCZab+htf4L87Syfmci/9lTi6HZ+dkNACFz1jLHbyos3Qle7aRmFGAqtNX4V2/GnB9IXmx3HVDOTI9lW2YWOTIEaGTkkrOlQfRuz7KXYk3LNjjJiy7IT2FXWSGVTx+dvjJsCc2+Abc9Ac6XHswkxGloc3UxxFlMfkQ1KmR2nX5kTwiipd+BKOgOObDI7jhAep46V4MRG6ARzp5UF+tnxj51kXBgHyxpIc0iclsLKZnJde2mKO8OrtuRdNS+Fls4e3i7oM0IoIQeueAyOboO/Xy8LVAtLK2/oIKc7H43y2Z3KjpuRGE6zo4fO6CyZViYs62hVNalUw0TvWoy6t0tmTQTgzd0DNH+W/MBY+2vj7z2YSojRc6SmkSxVRvcE69Zp9sQIup2auoTFUL0HmivMjiSERwW3lFJrmwB+gWZHIWNiPHVEQ4M0h4SP21FUwgxbGcFTvGO9oeMWTYolNSaYv20q/fyN2V+ELz4Kh9bBM5fIt5/CsnaXN7HIthdHzAwIjjI7jqmmT4wAoDpoMtTtlx3LhCX51+Ybf0n0jpG2/ZkcH8bM5AjW7Brgw2jMJJi1CrY/a4zEFcLL1B7cSYByEpg61+woA8pJMqal7gx271J64B0T0wjhedGdZTQEmbuN/XFZieEcdE3AWS/NIeHjWvb9G4Dw6ReYG2SYbDbFzWdNYsvhBnaWNX7+gNzr4boXoL4EnroIGss8H1KIQRQcqWKe7QABU883O4rppiWEA1BMKji74NhBkxMJcbL61k7SO40FNL1lGvZALpudxK7yJg7VtfV/wIJboKsVdv3ds8GEGAXdpcYCz3FZZ5qcZGCT4kIJ9rezsSkOojMg/x9mRxLCY3p6nCQ7K3CEZ5gdBTDeg5a6EnDVFZsd5bRJc0iMmNOlia7ZZKw3lOx9W2hfMz+V8CA/HvlggEKethxu/ic4muC5q6Cn07MBhRiEo+QTAlU39kzvWAx+LEUG+5MUGcQ2hzHlhZq95gYSoo8DNa3k2kpwhCRBWLzZcU7L5blJKAVv7Dza/wHJ84wG2Pa/eDaYEKMguG4XjSqCwLhJZkcZkN2myE6KIL+iGebeCIc+Mr7QFMIHVFUeJVx1QKy56w0dNy0hjBKdhH9HjfG50YtJc0iM2O7yRua58mmKmwd2f7PjDFtYoB+3njOZ9wqr2X6kof+DkubCqqegtlB2XxGW0uN0MaF+M07skO67O5X1Nn1iBOsbYkDZoKbQ7DhCnORAdQuz1UG0F36Z0tfEyGAWTYrl9R1H0Vp//gClYPa1ULUHamX3QOFdktoKKQueYdnFqI87Iy2K3eVNOGZeD/YAWP9bsyMJ4RF1pQUABCdOMzmJISU6hFJbinGhdr+5YU6TNIfEiG0r2Mc021HCvGxKWW9fXTyJuLAA7nuzsP83uABTl8HMVfDJo9B+zLMBhRhAUXULi9hFY8xsCAw3O44lZCWGU1jbhY7JhOoCs+MIcZLyo+Wk22oISp9vdpRRccUZyRyub2dHf1OzAWZ+CVCw5xWP5hLidDhaG0l3HqE1ZpbZUQa1YFIsXU4XuxqDjKmcO58zNlQRYpxrrzQ2HonLmGlyEoPdpuiOnmpcqPPuL0SkOSRGrHPfuwCEzFhmcpKRCw3048fLp7OttIHXdgwwPB5gyfehu12GyAvL2FNUzGx1CP+si8yOYhnTE8PpcWlaorKMEQtCWEj3ka0AqOR5JicZHRfPTCTI38ar28r7PyA8ETKWQOFqzwYT4jRUFHyMXWls6dbfAXR+RjQAmw8dg3PugPCJ8Npt0N1hcjIhxpauK6ZL+xGbPMXsKCeEJWbShZ/X75grzSExIk3t3aQd20irfwwkWKNrO1Kr5qWQmxrFz/9VSFP7ADscJc6CjLNh2zMw0AgjITzIUfgONqWJmHWJ2VEsIyvRGEFVFjgNGktlpJ+wjK4eF3ENO3FhN6YrjwPhQf4sz0lkza4KHN3O/g+afqnxRlnWQhFeorVkIwATc5aYnGRwUSEBzEyO4KP9tcaOpSsfNUYtvHeP2dGEGFMhzQeptE9E2f3MjnJCZkIU+10pOCu9+8tJaQ6JEflgXwWLbXvoSj8PbN79Y2SzKe67YiYN7d088PYpur2zroKGwzIiQZhOa83E2nU0+8VA4myz41jG5Lgw/O2K3S73IqJVu80NJIRbUVULZ6h9NEfNgMAws+OMmmvmp9Ls6Bl4W/usi43/Fq31XCghTkNg1TaKdQopiRPNjjIkF0xPYPuRBhrauiDzAlhwK3z6GJR+YnY0IcZMTOcRjgWnmx3jJFMTwtjtmoQ+usOrBxJ496d6YZpD294nRrUSlXu52VFGRU5SJDedmc7zm4+wa6D1E6Zfaix0K0PkhclKKus507WDusRzvb45O5oC/GxkxofxcWuScUXlLnMDCeG2+0gNuaoYe8b4Wjz+zMmxTJ0QxrOflPa/bl90BkzIgf1veTybEMPmcpLSspvDIbOw2ay9GPVxF06fgEvDe4XV7ivugsg0ePOH4OwxN5wQY6Cr00GSs5KuyEyzo5wkKzGCPXoyfl1NxmACLyWfKsSwtTi6iS97m24VgG2q96431Nd/LpvGhPBA7nhlF509/QyRD42D9MWw703PhxOil4OfvkmE6iD8jCvNjmI5WYnhbKtVxpvjip1mxxECgJp9mwhS3YRNs/5UleFQSvG1JZPYc7SJtwuq+j9o6lI4sgkczZ4NJ8QwdVfmE6rbaE1cYHaUIZudEklaTAirj4/eCwyD5f8HNQWw41lzwwkxBioO5uOvnNgTs82OcpK0mBCKbO41kLx4YXhpDolh+9fuoyxVm2lLPW9cDY+PCPLn/i/NZn91Kz98aRddPa7PHzR1GdTsheZKzwcUwi34wBpaCSV+9nKzo1jOjIkRVDY56Jowy6t/OYvxw+XSBJWtx4VCpY+v5hAY6/ZlJYTzs38WUtPs+PwBU5aBqxsOfeT5cEIMQ82eDwCImH6uyUmGTinFF3OT+Li4jqomd/3NuBzSzoQPfwGdreYGFGKUNRwyRoVHZVhrWQW7TeGMz6FNhXr17ztpDolh279xDRPVMSLnX2t2lFF3/vQJ/OTi6fxzdyXn/upDfvNOEWXH2j87IPMC478lH5gTUPi89rYW5rR9zMHYc8AvwOw4ljM7ORKAI+FzjEWpmwdYC0UID8mvaGKBczuNUTMhNNbsOKPOz27jgVWzaWjv4ponNrGttOHkA9IWQUA4HHjXnIBCDFHPwXWUueKZMd1aIxIGs2qYXxryAAAgAElEQVReCi4NL20tM65QCpb9DNpqYOPvzQ0nxCjrqtyLUyuSp8wxO8rnZCVF8anOQZd86LXrDklzSAxLQUUTZ9SvxuEfhZrxBbPjjIlvnpvJs/+xgCkTwnj0w2LO+dWH/PQfu2l2dBtrJ4ROgJL3zY4pfFTxRy8Qodqxzb3e7CiWlONuDm3H/ea+dKOJaYSAjfkl5KpigqaPn2nYfc1JjeKZry6gs9vJqsc28ou1hbhc7jfGdn/IPN9oDnnpm2XhA1xO4us+ZbvfHCZGBpudZljSY0M5e2ocz396hG6ne9R76nzIuQI+/j00lJobUIhRFFi/l6O2iQSHhJod5XPmpEbxXvcsVFMZVBeYHWdEpDkkhuUf//6Ui2zbUHOuBb9As+OMmXOmxfPXry1k408u5KtnTeKlreVc+YeN1LS6d4M4+G9w9TPtTIgxFrjnecqZwPRFsoV9fyKD/ZkUF8qHjROM0QrSHBIm0lpTv2MNdqUJyV5hdpwxtWBSDO/84FyunZ/K4x8d5I5Xdn+2SPW05dBSIbt9CsvSFTsIcbXRmOidi8Z/dXEGVc0O1ub3Wvtr2c+MjVTWfE/es4rxQWuS2wupDrPm6L45KVGsdc7Hpfxg99/NjjMi0hwSQ3a0sYPkwqexKQhc8m2z43hEYmQQd12WzV+/toDyhg5uf2EHrsnnQ3u9bJMtPK6tbDdZHTsomrgSPz8/s+NY1qzkSHYdbYXUBdIcEqbaUdbIgvaPaA9KgJT5ZscZc2GBfvz8ill898KpvLq9nKc/PmzcMMU9akp2LRMWdWznm7i0IjL7QrOjjMh50yYwOT6UJ9aVfNaUjUqF5ffBwQ/hrf+SBpHwenWVh4ingZ6Jc82O0q+sxHA6/KPYH3Em7HwButoHv5PFSHNIDNnf3t3Etbb36ZzxJYhKMzuOR52VGcfPVs7k00PHeL15mnGlTC0THlaz9gHadCBx599mdhRLy02NoqLJQVPSEqgt9OotRYV3e21jAefaduE360tg8423XEop/nPpVJbOSOCXb+3jSH07hLubY4WrzY4nRL900Vq266nMy55mdpQRsdkUt5w9mfyjzWworvvshnk3w6Jvw+Yn4MkLofCf0iQSXqt8z3oAIqacaXKS/vnbbczPiOHx7kugvQ62/8XsSMPmG+9UxGkrrmll8u4HCbC5CFn2P2bHMcWVZySTmxrFbzY24kqYBQfeMzuS8CGu2mLSKt7k3eAVzJ46yew4lrZ4ShwAG/wWGVcU/tPENMJX1bQ4CCx4kQDlJGDu+NvA4VSUUvzfypn42RQ/e3OvcWX2SmNaWX2JueGE6KupnLiWQnaFnElqTIjZaUbsijOSmRgZxIPv7v9s9JBSxuihK56Atjp48QZ4ahk0HjE3rBAj0Ln/A9p1IFNnW3f65zlT43ntWDqdqYth3a+go9HsSMMizSExKK01L778PFfZP6Ir7xaI8c0Ppkopvrd0KkcbO9gXuQTKNkFrjdmxhI+o+8cPadeBBJ33A5RSZsextGkJYcSHB/JWRTAkzILCNWZHEj7oz+sPcqPtbRyJ8yAp1+w4HpcYGcRt52Xy7t5qth9pgOzLjRsKXjM3mBB9tGx5AQCVvdLkJKcn0M/Ody6YwvYjjfxzd+VnNygFc66B7+6AlX+Euv3w9KXQXDnwgwlhMdrlIuPYBopC5xEQZN1F48+fHg/A2om3Q0cDfHifyYmGR5pDYlCvbsjnpuoHaA5OJWTZnWbHMdV50+KNOd11M0G7YJ+MSBBjr3vXS0yo/DfPBV3DhfNnmx3H8pRSLJkSx8fFdbhmXA5ln0JdsdmxhA+paXFQu+l5MlQ1QT6yRl9/vrp4ErGhAfz2nf3GdPT0JbD9WXA5zY4mhEFrOrc9xxbXNM4/a6HZaU7bNXmpzEqO5K438impbT35Rrsf5F4PX1kNHcfg5a+As9ucoEIM04Gd60nQdXRlXmR2lFOaMiGcOalR/KEoBD3/67D5T161/qU0h8Qp7S2rY+J7t5FoayTsuj9DgPcOtx0NSim+vCid1yui6IzIgD2vmh1JjHc1hbje+B5bXdPIueK/8LfLP9tDceGMCRxr62JT9GXGVtqbHjU7kvAhv31zF/+pXqAzLgeyrzA7jmlCA/345rmZbCiuY8vhYzD/a9BYCsUyLVtYQ9ved4nrOMSe+MuZFGe9rbGHy89u4/fXzcWmFCsf/Zgn1x+k2dGnAZQ0Fy77nfHFybpfmxNUiGFqWf8YbTqIGUu/YnaUQd20KJ391a28FvN1iM6AV78OLVWD3s8K5FOGGFBVfSO1T1/PYrWHjuW/xpa2wOxIlnDlvBTCA/15K+AiKN0AlbvMjiTGq+oCHE99gSZnAO/O+DlnT08yO5HXWJadQGxoAE/vaoM518LO56Gh1OxYwgd8tL+WOfm/IEXVEfiFB3xmIeqB3LgonbiwQH65dh96+qUQkQIf/lwWxRXmc7moffNeKnUMi1beanaaUTMpLpR/fOssZiVH8n9vFrLwvvf54Uu72HCgDke3e9TerFUw+1pjTZTST8wNLMQgag/uYvaxt9kZewkRkTFmxxnUFXOTmZ8RzU//eZDtix4yppc9fQlUWn+n6yG9Y1FKrVBKFSmlipVSP+nn9kCl1Ivu2z9VSmX0uu2n7uuLlFLLRy+6GEv79mzj2KNLOdf1KRVn/i8RZ95sdiTLiAjy5/pFadx1dD4u/1D46AE4vvCfEKPB2YP+9HG6H7+AJkcPP4//Jf+56gKzU3mVQD87V89P5f3CaoqmfRNs/vDaN8HZY3Y0MY7tr2qm4Pn/5jq/D+k56/uQscTsSKYLDrDzo4umsbW0gdd218LSu6FyJ2z5k9nRhI/b9NKvyGjfw47Jt5KdOsHsOKMqPTaU57+xiDe+vZiVc5N4u6CKG5/6lJl3v82Kh9bxwFv7qDvnPmO65ytfhaajZkcWol+OjjaaXvgG7QSR8aX/NTvOkNhsisdunEdGbChXv9HOmtmPojub4fFz4OWbLd0kGrQ5pJSyA48CFwPZwHVKqew+h30NaNBaTwEeBH7pvm82cC2QA6wA/uB+PGE1Lhd1Rw+wcfVTfPLASqa8spRkVyUHL3iMpOXfNzud5Xx9yWRUcBR/87vSWHdo8xNmRxLezuWEyt10fXA/7b+ZjVr7YzZ1T+GXqY9z3zdWEeQv/3QO1y1nTyY+PJDb/llL4/n3wZGN8PfrvGZor/AOWmvK6tt4ec0aKv/4Rb7FS7ROvwq/pXeZHc0yrs5L5Yy0KP7ntXy2RVwIU5fDWz+FHX+TL1eExx2saeblx/+PvML7yQ/O46Ib7jA70piZkxrFL740m613LuXJm/K45ZzJxIYF8NhHJZz/8Db+kfUAurMFnrnE2E1QCIvQWrN1x3aKfr2cKd1F5M//OckpaWbHGrLYsEBevu1Mzp8+gds/DuRLtt/xfuz1OArfhsfPpvtPy+C9e+CTRyH/Vajdb4kRtUoP8ktZKXUmcI/Wern78k8BtNa/6HXM2+5jPlFK+QFVQDzwk97H9j5uoPPl5eXprVu3ntaT8mkH3oWGw1S3dHK4rg2b7jHeeLmcaO0ElxPl7ER1NhPYeYyQzlrCumqI7qkhAOMb9WbCKJn4BTK/dCcR8akmPyHrerugim/9bQt/DX6Qs1zbqIicS3X0PLoCotA2f1pDU6mMW8w189MI8Bv6tAKl1Datdd4YRh8Rqc1h2PKkUXda0+10sePIMZR2obQT5erB5nJg7+nAr6sZ/85jhDmqiHGUEagdAGxyzeC1wJWcsew6rp6fJruTnYZNB+v5j2e2YFOKOyd+ylXVD6GVnZroM2gMm0JnQDRJcdEkpGRCzql3qpHa9BFVe9i98S06unpAu1CuHnB2onoc2Ho6sPd0oJwOXN1ddHc5sDsaSdVHmaAa6VAhdJ/zX0Sc+12fn07WV02Lgy/9YSOVTQ6+kBXOj+rvJrV5Gw0hk6iMzqM9KAGXXwjaZqc0cTln505nYuTQdqSR2hQDqdj4AmVHDuNy9uBoa6Kz/gjTO3aSYavmUMQCkm99hYDQSLNjetzB2lbuXl3A+gN1nBNymEfVrwh1NlEVM59jETNITk4lOiIclA3mfhn8g0Z0HqlNMRjHgY/YvW0juLpRjkb82qoIaa8gzFFBsq7GQQAHF95H9sW3mB11RLTWrN5VwXOfHuFoQwf2rmYu7nyLy+0bybKV48dnGzR02kNpCUygQ4XS5R9OV0gCnUEJBIVHMz051hjpN+30J2Kdqi6H0hxaBazQWn/dffnLwEKt9Xd6HZPvPqbcfbkEWAjcA2zSWv/Nff1TwFqt9St9znELcPz/eBZQNNwn6UFxQJ3ZIYZJMnvGaGVO11rHj8LjnDapzTEnmT1DatNcvvwz40m+nFlqc2R8+WfGk3w5s9TmyPjyz4wn+WrmAevS7zQfeFRorZ8AvGJejlJqqxU74KcimT3DGzMPRmpzbElmz/DGzIOR2hxbktkzvDHzYKQ2x5Zk9gxvzDwYqc2xJZk9Y6wzD2XM81Gg99yiFPd1/R7jnlYWCdQP8b5CCCGEEEIIIYQQwiRDaQ5tAaYqpSYppQIwFphe3eeY1cBX3H9fBXygjflqq4Fr3buZTQKmAptHJ7oQQgghhBBCCCGEOF2DTivTWvcopb4DvA3YgT9rrQuUUvcCW7XWq4GngL8qpYqBYxgNJNzHvQTsBXqAb2utnf2eyHt4xXDEPiSzZ3hj5vHEG19/yewZ3ph5PPHG118ye4Y3Zh5PvPH1l8ye4Y2ZxxNvfP0ls2eMaeZBF6QWQgghhBBCCCGEEOOX7LMqhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkhBBCCCGEEEII4cOkOSSEEEIIIYQQQgjhw6Q5JIQQQgghhBBCCOHDpDkkTkkpdZ5SqrzX5cNKqaVDvO/NSqkNY5dOCCGEEEIIIYQQp0uaQ+OQUipAKfWKu5GjlVLnmZ1pMEqpe5RSfzM7hxDD4Q21ppT6t1Lq6yae3/KvkRh/vOHnzgK1uUgp9a5S6phSqlYp9bJSaqJZeYRvkNoc0vmzlVJblVIN7j/vKaWyzcojfJcv16s3PPexIM0hL6WU8hvkkA3AjUCVB+IIMW5JrY0KeY3EqJPaPG3RwBNABpAOtABPmxlIjA9Sm6etAlgFxABxwGrg76YmEuOWL9SrUiphhHf1+uc+XNIc8iCl1H8ppV7pc93vlFK/d//9q0qpQqVUi1LqoFLq1l7HnaeUKnc/RhWneAOnte7SWj+ktd4AOIeQa8DzDvP5xSqlViulmpVSm4HMfp5rmfv2bUqps93XrwD+G7hGKdWqlNo1mrmE77FwrcUopZ5WSlW4vw18vddt31BKFbu/xV+tlEpyX5/h/sbCr9exJ74lUe7pm0qpX7sf85BS6mL3bfcBZwOPuGvrkaG9gqNnuK+RGN+kNi1Vm2u11i9rrZu11u3AI8BiT+cQ1iC1aanabNRaH9Zaa0BhvE5TPJ1DWJfU67DrtVgp9YZSaqVSyn+w5zGS5z5eSHPIs/4OXKKUCgdQStmBq4Hn3bfXAF8AIoCvAg8qpc7odf9EjG8R0oFbRjHXYOcdqkcBBzAR+A/3n962ALkYz+F54GWlVJDW+i3g58CLWuswrfWcUc4lfI9Va+2vQAiQA0wAHnTnuwD4hTvjRKCU4X1LuBAowviG8QHgKaWU0lr/D7Ae+I67tr7T352VUo2n+POT4R4nxClIbVq3Ns8BCobx3MT4IrVpsdpUSjVivK9+GON9shDHSb0Oo16BVGAt8F9AuVLqt0qpWcN9cr5gsGFkYhRprUuVUtuBK4BngQuAdq31Jvftb/Y6/COl1DsY3dDt7utcwN1a685RzjXYeQfl/kfpSmCW1roNyFdK/QXjzebx8/ReU+g3Sqk7gSxg11jlEr7JirWmjLU8LgZitdYNx8/t/u8NwJ+11tvdx/4UaFBKZQzx4Uu11n9y3/cvwB+ABIY4DFZrHTWaxwkxEKlNa9amUmo2cBfwxdN5HOG9pDatV5ta6yilVCjwFYwP00IAUq8Mv14bgceAx5RSWRg19S+lVDXwY631B0PMMe7JyCHPex64zv336/msw4tS6mKl1CZlDLdrBC7B6JAeV6u1dox2oCGcdyjiMZqNZb2uO+kXmVLqR8oY4tjkPk/kqc4zSrmE77JaraUCx3r9wuwtiV71orVuBeqB5CE+9olfju7pIQBhI8wpxFiT2rQQpdQUjG9Uv6e1Xm92HmEqqU2LcX/h+hjwrFJqgtl5hKVIvY5MKcbAhHyM6ZpSV71Ic8jzXgbOU0qlYHR7nwdQSgUCrwK/BhLc3zT8C2Ou8XF6tMMM8bxDUQv0YPzDcFxar/OcDfwYYzhhtPs8Tb3Oc9JzG8VcwndZqtYwGqcxSqn+vkWswBjaiztjKBALHAXa3FeH9Do+cRjnHfS5KGOe9kB//nu4xwkxCKlNg+m1qZRKB94Dfqa1/uswsovxSWrTYHpt9mFzP5ehfpAWvkHq1TCUelVKqbOVUn9yZ/kaxoirRK21LPbeizSHPExrXQv8G2Pxr0Na60L3TQFAIO4mizIW2rpopOdRSgUqpYKOP7ZSKkgp1V9jZVTOq7V2Av8A7lFKhShjy82v9DokHKN5VAv4KaXuwpgHe1w1kKGUOv4zOaqvh/A9Vqs1rXUlxrfzf1BKRSul/JVSx6ddvgB8VSmV6/6l/nPgU/eClLUYvzxvVErZlVL/QZ/F3gdRDUw+1QHuedoD/fn5cI8b6WskfIPU5gmm1qZSKhn4AHhEa/3YMHKLcUpq8wSza3OZUmquO3sE8FugASjs73jhm6ReTxi0XoES4CngMDBba32R1vqFwUZP+eL7V2kOmeN5YCm9hv9prVuA7wIvYfwCuB5j68qRKgI6ML5leNv99/S+B43yeb+DMcSvCniGk1e/fxt4C9iPMZzPwclT0F52/7deKbV9DF4P4ZssU2tuXwa6gX0YiwV+353pPeD/YXzTU4nxS/HaXvf7BnAHxhDcHGDjMPL9DliljB0efj+M+42m4bxGwjdIbZpfm1/HeEN9T+/RDCbkENYitWl+bUZhfJhuwvhQmwmsGIulJYTXk3odWr3epLWeprW+T2tdPozH9rn3r0rrsRhVJoQQQgghhBBCCCG8gYwcEkIIIYQQQgghhPBh0hzyUkqp/x5gcbu1ZmcTYjyRWhPCmqQ2hbAmqU0hvIfUq+hNppUJIYQQQgghhBBC+DAZOSSEEEIIIYQQQgjhw/zMDtBXXFyczsjIMDuGEKbZtm1bndY63uwcfUltCl8ntSmENUltCmFNUptCWM+p6tJyzaGMjAy2bt1qdgwhTKOUKjU7Q3+kNoWvk9oUwpqkNoWwJqlNIaznVHUp08qEEEIIIYQQQgghfJg0h4QQQgghhBBCCCF8mDSHhBBCCCGEEEIIIXyY5dYcEp7R3d1NeXk5DofD7Cg+KygoiJSUFPz9/c2OIixEatN8UpuiP1Kb5pPaFP2R2jSf1KboS+rSfCOpS2kO+ajy8nLCw8PJyMhAKWV2HJ+jtaa+vp7y8nImTZpkdhxhIVKb5pLaFAOR2jSX1KYYiNSmuaQ2RX+kLs010rqUaWU+yuFwEBsbK8VqEqUUsbGx0k0XnyO1aS6pTTEQqU1zSW2KgUhtmktqU/RH6tJcI61LaQ75MClWc8nrLwYiPxvmktdfDER+Nswlr78YiPxsmEtef9Ef+bkw10hef2kOCVPU19eTm5tLbm4uiYmJJCcnn7jc1dU1Jufcvn07b7311pg8dl9aa771rW8xZcoUZs+ezc6dOz1yXiFOl9SmENYktSmE9UhdCmFNUpsjI2sOCVPExsae+CG+5557CAsL40c/+tGQ7+90OrHb7cM65/bt28nPz2fFihXDut9IrFmzhrKyMoqLi9mwYQPf/va3+fjjj8f8vEKcLqlNIaxJalMI65G6FMKapDZHRkYOCcu57LLLmDdvHjk5OTz55JMA9PT0EBUVxfe//31mz57N5s2bWb16NVlZWcybN4/bb7+dlStXAtDa2srNN9/MggULmDt3LmvWrKGjo4N7772X5557jtzcXF555ZUxfQ5vvPEGN910EwBLliyhqqqK2traMT2nEGNNalMIa5LaFMJ6pC6FsCapzYHJyCHB/64pYG9F86g+ZnZSBHdfljOi+/7lL38hJiaG9vZ28vLyuPLKKwkPD6epqYlzzjmHhx56iPb2dqZNm8bHH39MWloaV1999Yn733vvvaxYsYJnnnmGhoYGFi5cyO7du7nrrrvIz8/noYce+tw59+7dy/XXX99vnvXr1xMeHs6qVasoLi7+3O133HEHN9xww0nXHT16lNTU1BOXU1JSOHr0KPHx8SN6TYRvktqU2hTWJLUptSmsyUq1KXUphMFKdQlSm6cizSFhOQ8++CCrV68GjG0QS0pKyM3NJSAggCuuuAIwCiwrK4v09HQArrvuOp599lkA3nnnHdauXcv9998PGKvlHzly5JTnzM7OHnSu5lh3gIWwOqlNIaxJalMI65G6FMKapDYHJs0hMeKu61h47733WLduHZs2bSI4OJglS5ac2IIvODh4SKuua615/fXXyczMPOn6devWDXif0e7mJicnU1ZWxqJFiwDjH57k5ORBswvRm9Sm1KawJqlNqU1hTVapTalLIT5jlboEqc3BSHNIWEpTUxMxMTEEBwdTUFDAli1b+j0uOzuboqIiysrKSElJ4cUXXzxx2/Lly3n44YdPDOnbsWMHc+fO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3kFjU46lsekdNDblWD19bPaGcQkam3K0nj4uoXeMzZMdl53Zyl7EK/3zn/9kxIgRZGVl0dTUxC233GJ3JBFBY1PEW2lsingfjUsR79QXx6ZHdysT6U533XUXd911l90xROQYGpsi3kljU8T7aFyKeKe+ODY1c0hEREREREREpA9TcagP87Z+U32N/vvLiejfhr30319ORP827KX//nIi+rdhL/33l+PRvwt7ncp/fxWH+qiAgACqqqo0aG1imiZVVVUEBATYHUW8jMamvTQ25UQ0Nu2lsSknorFpL41NOR6NS3ud6rhUz6E+Kjk5maKiIioqKuyO0mcFBASQnJxsdwzxMhqb9tPYlOPR2LSfxqYcj8am/TQ25Vgal/Y7lXGp4lAf5evrS0ZGht0xROQYGpsi3kljU8Q7aWyKeB+Ny55Jy8pERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPowFYdERERERERERPqwThWHDMOYaRjGDsMw8g3D+OVxHp9qGMY6wzDaDcOYdcxjLsMwNnT8meOp4CIiIiIiIiIicvp8vu4EwzCcwOPAdKAIWG0YxhzTNLcecdo+4EbgZ8e5RJNpmiM8kFVERERERERERDzsa4tDwDgg3zTN3QCGYbwKXAr8tzhkmmZhx2PuLsgoIiIiIiIiIiJdpDPLypKA/Ud8XtRxrLMCDMNYYxjGCsMwLjveCYZh3NpxzpqKioqTuLSIdCWNTRHvpLEp4p00NkW8k8amyNfrjobUaaZpjgG+BTxqGMaAY08wTfNJ0zTHmKY5JiYmphsiiUhnaGyKeCeNTRHvpLEp4p00NkW+XmeKQ8VAyhGfJ3cc6xTTNIs7Pu4G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8fVXzJ2jK8YcT7ri66+YO0dHx9ya1cqWAMOMMYOMMX6cCaZfOqLNS8B10e+nAW9bp+r0EnBVdDWzQcAw4MP2CV1ERERERERERE7UMac8t9aGjDG3A68DXuBRa+0aY8wsYKm19iXgz8BTxpiNwH6cAhLRdn8D1gIh4LZYXKlMRERERERERCRRtWo9PGvtq8CrR2y7u8n3AeArLRz7c+DnJxBjrHnE7QCOg2LuHF0x5njSFV9/xdw5umLM8aQrvv6KuXN0xZjjSVd8/RVz5+iKMceTrvj6K+bO0aExH3POIRERERERERERiV+tmXNIRERERERERETilIpDIiIiIiIiIiIJTMUhEREREREREZEEpuKQiIiIiIiIiEgCU3FIRERERERERCSBqTgkIiIiIiIiIpLAVBwSEREREREREUlgKg6JiIiIiIiIiCQwFYdERERERERERBKYikMiIiIiIiIiIglMxSERERERERERkQSm4pCIiIiIiIiISAJTcUhEREREREREJIGpOCQiIiIiIiIiksBUHBIRERERERERSWAqDomIiIiIiIiIJDAVh0REREREREREEpiKQyIiIiIiIiIiCUzFITkqY8y5xpjSJve3GmMmtfLY640xCzouOhERERERERE5USoOxSFjzBnGmDeNMfuNMWXGmL8bY/q4HdfRGGNmGmOedjsOkbboCrlmjHnXGHOji+f3G2OejxaWrTHmXLdikcSh3GzV+WP+NZL40xWuuxjIzUJjzFJjzIHoba4xptCteCRxJXK+Jur7VxWHuihjjO8ou3sAjwADgQFANfBYJ4QlEneUa+1iAXANsNvtQCR+KDdPmF4j6RDKzRO2E5gGZAM5wEvAs65GJHErEfLVGJN3nIcm3vtXa61unXQDfgg8f8S23wG/j37/DWAdTuJtBm5p0u5coDT6GLuBp9pw3nFA9VH2H/O8Te5vBSa18Dg9cf6AVQEfAj8DFhzxXEui+5cBZ0W3TwEagSBQA6w8Vly66Xa0WwznWjbOH9WdwAFgdpN9NwEbgf3RPOob3T4QsICvSdt3gRuj31+P88frN9HH3AJcHN33cyAMBKK59YDLP5dS4Fy3rw/dXL0GlJs29nKzNa+RbvF9U27GZm4CPuA2oM7ta0S32LkpX9uWr9HX4Z/Al4Ck43i9E+b9q3oOda5ngS8aYzIAjDFe4Ergmej+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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "train = train_pd\n", + "fig, axs = plt.subplots(3,5, figsize=(20, 12),sharex=True,sharey=True)\n", + "target_mask = train['target'] == 1\n", + "non_target_mask = train['target'] == 0 \n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,0], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,0], label='Target == 1')\n", + " axs[c,0].set_title('%s all data'%col)\n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " for i in range(1,4):\n", + " train = train_pd.copy()\n", + " train = train[train['%s_count'%col]==i]\n", + " target_mask = train['target'] == 1\n", + " non_target_mask = train['target'] == 0 \n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,i], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,i], label='Target == 1')\n", + " axs[c,i].set_title('%s count == %d'%(col,i))\n", + "\n", + "for c,col in enumerate(['var_0','var_1','var_2']):\n", + " train = train_pd.copy()\n", + " train = train[train['%s_count'%col]>i]\n", + " target_mask = train['target'] == 1\n", + " non_target_mask = train['target'] == 0 \n", + " statistic, pvalue = ks_2samp(train.loc[non_target_mask, col], train.loc[target_mask, col])\n", + " sns.kdeplot(train.loc[non_target_mask, col], ax=axs[c,4], label='Target == 0')\n", + " sns.kdeplot(train.loc[target_mask, col], ax=axs[c,4], label='Target == 1')\n", + " axs[c,4].set_title('%s count > 1'%(col))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add new features by removing count==1 group" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 24min 57s, sys: 6min 11s, total: 31min 8s\n", + "Wall time: 1min 18s\n" + ] + } + ], + "source": [ + "%%time\n", + "for i in range(200):\n", + " col = 'var_%d'%i\n", + " mask = train_pd['%s_count'%col]>1\n", + " train_pd.loc[mask,'%s_gt1'%col] = train_pd.loc[mask,col]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train and validation split" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "train,valid = train_pd[:-10000],train_pd[-10000:]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = train.drop(['target','ID_code'],axis=1)\n", + "y_train = train['target']\n", + "x_valid = valid.drop(['target','ID_code'],axis=1)\n", + "y_valid = valid['target']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### XGB training" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 12 s, sys: 4.59 s, total: 16.6 s\n", + "Wall time: 2.71 s\n" + ] + } + ], + "source": [ + "%%time\n", + "xgb_params = {\n", + " 'objective': 'binary:logistic',\n", + " 'tree_method': 'hist',\n", + " 'max_depth': 1, \n", + " 'nthread':16,\n", + " 'eta':0.1,\n", + " 'silent':1,\n", + " 'subsample':0.5,\n", + " 'colsample_bytree': 0.05, \n", + " 'eval_metric':'auc',\n", + "}\n", + "dtrain = xgb.DMatrix(data=x_train, label=y_train)\n", + "dvalid = xgb.DMatrix(data=x_valid, label=y_valid)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0]\teval-auc:0.538054\ttrain-auc:0.532187\n", + "Multiple eval metrics have been passed: 'train-auc' will be used for early stopping.\n", + "\n", + "Will train until train-auc hasn't improved in 30 rounds.\n", + "[1000]\teval-auc:0.890076\ttrain-auc:0.901494\n", + "[2000]\teval-auc:0.903824\ttrain-auc:0.917398\n", + "[3000]\teval-auc:0.909546\ttrain-auc:0.923502\n", + "[4000]\teval-auc:0.911292\ttrain-auc:0.926421\n", + "[5000]\teval-auc:0.912161\ttrain-auc:0.928418\n", + "[6000]\teval-auc:0.91255\ttrain-auc:0.930075\n", + "[7000]\teval-auc:0.912669\ttrain-auc:0.931478\n", + "[8000]\teval-auc:0.912334\ttrain-auc:0.932688\n", + "[9000]\teval-auc:0.911981\ttrain-auc:0.933868\n", + "[9999]\teval-auc:0.911624\ttrain-auc:0.934867\n", + "CPU times: user 2h 21min 53s, sys: 2min 26s, total: 2h 24min 20s\n", + "Wall time: 9min 2s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "watchlist = [(dvalid, 'eval'), (dtrain, 'train')]\n", + "clf = xgb.train(xgb_params, dtrain=dtrain,\n", + " num_boost_round=10000,evals=watchlist,\n", + " early_stopping_rounds=30,maximize=True,\n", + " verbose_eval=1000)\n", + "yp = clf.predict(dvalid)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "plot top10 important features\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "print('plot top10 important features')\n", + "xgb.plot_importance(clf,max_num_features=10)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_competition_notebooks/kaggle/santander/cudf_tf_demo.ipynb b/the_archive/archived_competition_notebooks/kaggle/santander/cudf_tf_demo.ipynb new file mode 100644 index 00000000..a70470c9 --- /dev/null +++ b/the_archive/archived_competition_notebooks/kaggle/santander/cudf_tf_demo.ipynb @@ -0,0 +1,894 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cudf version: 0.6.1+0.gbeb4ef3.dirty\n", + "tensorflow version: 1.13.1\n" + ] + } + ], + "source": [ + "import cudf as gd\n", + "import pandas as pd\n", + "import numpy as np\n", + "import tensorflow as tf\n", + "from collections import OrderedDict\n", + "import time\n", + "from tqdm import tqdm\n", + "import pickle\n", + "import random\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import roc_auc_score\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "print('cudf version:',gd.__version__)\n", + "print('tensorflow version:',tf.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Please download data from https://www.kaggle.com/c/santander-customer-transaction-prediction/data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "PATH = '../input'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ETL" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read csv" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 460 ms, sys: 92.9 ms, total: 553 ms\n", + "Wall time: 552 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "cols = ['ID_code', 'target'] + ['var_%d'%i for i in range(200)]\n", + "dtypes = ['int32', 'int32'] + ['float32' for i in range(200)]\n", + "train_gd = gd.read_csv('%s/train.csv'%PATH,names=cols,dtype=dtypes,skiprows=1)\n", + "\n", + "cols = ['ID_code', 'target'] + ['var_%d'%i for i in range(200)]\n", + "dtypes = ['int32', 'int32'] + ['float32' for i in range(200)]\n", + "test_gd = gd.read_csv('%s/test.csv'%PATH,names=cols,dtype=dtypes,skiprows=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ID_codetargetvar_0var_1var_2var_3var_4var_5var_6var_7...var_190var_191var_192var_193var_194var_195var_196var_197var_198var_199
07515367008.925500-6.786311.9081005.093011.460700-9.28345.118718.626602...4.43543.9642003.13641.69100018.522701-2.39787.87848.563512.780300-1.091400
175153671011.500600-4.147313.8588015.389012.3622017.04335.620816.533800...7.64217.7214002.583710.95160015.4304992.03398.12678.788918.3559991.951800
27515367208.609301-2.745712.0805007.892810.582500-9.08376.942714.615500...2.90579.7905001.67041.68580021.6042003.1417-6.52138.267514.7222000.396500
375153673011.060400-2.15188.9522007.195712.584599-1.83615.842814.925000...4.46664.7432990.71781.42140023.034700-1.2706-2.927510.292217.969700-8.999599
47515367409.836900-1.483412.8745996.637512.2772002.44865.940519.251400...-1.49059.521400-0.15089.19420113.287600-1.51213.92679.503117.997400-8.810400
\n", + "

5 rows × 202 columns

\n", + "
" + ], + "text/plain": [ + " ID_code target var_0 var_1 var_2 var_3 var_4 var_5 \\\n", + "0 75153670 0 8.925500 -6.7863 11.908100 5.0930 11.460700 -9.2834 \n", + "1 75153671 0 11.500600 -4.1473 13.858801 5.3890 12.362201 7.0433 \n", + "2 75153672 0 8.609301 -2.7457 12.080500 7.8928 10.582500 -9.0837 \n", + "3 75153673 0 11.060400 -2.1518 8.952200 7.1957 12.584599 -1.8361 \n", + "4 75153674 0 9.836900 -1.4834 12.874599 6.6375 12.277200 2.4486 \n", + "\n", + " var_6 var_7 ... var_190 var_191 var_192 var_193 var_194 \\\n", + "0 5.1187 18.626602 ... 4.4354 3.964200 3.1364 1.691000 18.522701 \n", + "1 5.6208 16.533800 ... 7.6421 7.721400 2.5837 10.951600 15.430499 \n", + "2 6.9427 14.615500 ... 2.9057 9.790500 1.6704 1.685800 21.604200 \n", + "3 5.8428 14.925000 ... 4.4666 4.743299 0.7178 1.421400 23.034700 \n", + "4 5.9405 19.251400 ... -1.4905 9.521400 -0.1508 9.194201 13.287600 \n", + "\n", + " var_195 var_196 var_197 var_198 var_199 \n", + "0 -2.3978 7.8784 8.5635 12.780300 -1.091400 \n", + "1 2.0339 8.1267 8.7889 18.355999 1.951800 \n", + "2 3.1417 -6.5213 8.2675 14.722200 0.396500 \n", + "3 -1.2706 -2.9275 10.2922 17.969700 -8.999599 \n", + "4 -1.5121 3.9267 9.5031 17.997400 -8.810400 \n", + "\n", + "[5 rows x 202 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_gd.head().to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### create new features & normalize\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 200/200 [01:19<00:00, 1.65it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 56.4 s, sys: 23.2 s, total: 1min 19s\n", + "Wall time: 1min 19s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "%%time\n", + "for i in tqdm(range(200)):\n", + " col = 'var_%d'%i\n", + " new_col = 'new_%s'%col\n", + " count_col = 'count_%s'%col\n", + " \n", + " df = train_gd.groupby(col).agg({col:'count'})\n", + " df = df.reset_index()\n", + " train_gd = train_gd.merge(df,on=col,how='left')\n", + " test_gd = test_gd.merge(df,on=col,how='left')\n", + " \n", + " # feature values with count==1 have a lot of noise\n", + " # we can replace these values with mean value of the column\n", + " train_gd[new_col] = train_gd[col] * (train_gd[count_col]>1)\n", + " mean = train_gd[new_col].mean()\n", + " std = train_gd[new_col].std()\n", + " train_gd['mean'] = mean\n", + " train_gd[new_col] = train_gd[new_col] + train_gd['mean']*(train_gd[count_col]==1)\n", + " train_gd[new_col] = (train_gd[new_col]-mean)/std\n", + " train_gd[col] = (train_gd[col]-mean)/std\n", + " \n", + " test_gd[new_col] = test_gd[col] * (test_gd[count_col]>1)\n", + " test_gd['mean'] = mean\n", + " test_gd[new_col] = test_gd[new_col] + test_gd['mean']*(test_gd[count_col]==1)\n", + " test_gd[new_col] = (test_gd[new_col]-mean)/std\n", + " test_gd[col] = (test_gd[col]-mean)/std\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
var_0new_var_0var_1new_var_1var_2new_var_2var_3new_var_3var_4new_var_4...var_195new_var_195var_196new_var_196var_197new_var_197var_198new_var_198var_199new_var_199
00.2162440.0000000.9208150.9208150.6301950.6301951.3465861.3465861.2462261.246226...-0.697538-0.6975381.2804541.2804540.6799120.6799110.2451150.0000001.2638610.000000
11.0304981.030498-1.627658-1.6276580.3110860.3110860.5162510.5162511.1124660.000000...-1.434332-1.4343321.0371521.0371520.8246260.8246260.5972240.5972240.8428780.842878
20.2411520.241152-0.583870-0.5838700.4179210.417921-0.281280-0.281280-0.507862-0.507862...1.7716201.7716200.0764850.076485-0.344700-0.3447000.8525390.852539-3.8541480.000000
3-0.427054-0.4270540.6464350.646435-0.062363-0.062363-0.286137-0.2861370.8350800.835080...-0.028680-0.028680-0.758242-0.7582421.0044890.0000000.4782980.478297-1.517619-1.517619
41.3208721.320872-1.712520-1.712520-0.481917-0.481917-0.147458-0.147458-0.8060440.000000...0.8956140.8956141.7190110.0000000.0570480.0570480.5023010.5023010.8376440.000000
\n", + "

5 rows × 400 columns

\n", + "
" + ], + "text/plain": [ + " var_0 new_var_0 var_1 new_var_1 var_2 new_var_2 var_3 \\\n", + "0 0.216244 0.000000 0.920815 0.920815 0.630195 0.630195 1.346586 \n", + "1 1.030498 1.030498 -1.627658 -1.627658 0.311086 0.311086 0.516251 \n", + "2 0.241152 0.241152 -0.583870 -0.583870 0.417921 0.417921 -0.281280 \n", + "3 -0.427054 -0.427054 0.646435 0.646435 -0.062363 -0.062363 -0.286137 \n", + "4 1.320872 1.320872 -1.712520 -1.712520 -0.481917 -0.481917 -0.147458 \n", + "\n", + " new_var_3 var_4 new_var_4 ... var_195 new_var_195 var_196 \\\n", + "0 1.346586 1.246226 1.246226 ... -0.697538 -0.697538 1.280454 \n", + "1 0.516251 1.112466 0.000000 ... -1.434332 -1.434332 1.037152 \n", + "2 -0.281280 -0.507862 -0.507862 ... 1.771620 1.771620 0.076485 \n", + "3 -0.286137 0.835080 0.835080 ... -0.028680 -0.028680 -0.758242 \n", + "4 -0.147458 -0.806044 0.000000 ... 0.895614 0.895614 1.719011 \n", + "\n", + " new_var_196 var_197 new_var_197 var_198 new_var_198 var_199 \\\n", + "0 1.280454 0.679912 0.679911 0.245115 0.000000 1.263861 \n", + "1 1.037152 0.824626 0.824626 0.597224 0.597224 0.842878 \n", + "2 0.076485 -0.344700 -0.344700 0.852539 0.852539 -3.854148 \n", + "3 -0.758242 1.004489 0.000000 0.478298 0.478297 -1.517619 \n", + "4 0.000000 0.057048 0.057048 0.502301 0.502301 0.837644 \n", + "\n", + " new_var_199 \n", + "0 0.000000 \n", + "1 0.842878 \n", + "2 0.000000 \n", + "3 -1.517619 \n", + "4 0.000000 \n", + "\n", + "[5 rows x 400 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feas = []\n", + "for i in range(200):\n", + " feas.append('var_%d'%i)\n", + " feas.append('new_var_%d'%i)\n", + "X = train_gd[feas].to_pandas()\n", + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200000, 400) (200000,) (200000, 400)\n" + ] + } + ], + "source": [ + "X = X.values\n", + "y = train_gd['target'].to_pandas().values\n", + "Xt = test_gd[feas].to_pandas().values\n", + "print(X.shape,y.shape,Xt.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200000, 400) (200000,) (200000, 400)\n", + "(200000, 200, 2) (200000,) (200000, 200, 2)\n" + ] + } + ], + "source": [ + "print(X.shape,y.shape,Xt.shape)\n", + "B = X.shape[0]\n", + "X = np.reshape(X,[B,200,2])\n", + "Xt = np.reshape(Xt,[B,200,2])\n", + "print(X.shape,y.shape,Xt.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_valid, y_train, y_valid = train_test_split(\n", + " X, y, test_size=0.2, random_state=42, stratify=y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Define TF model" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "class groupNN:\n", + " def __init__(self,**params):\n", + " self.params = params\n", + " \n", + " def fit(self,X,y):\n", + " self.X = X\n", + " self.y = y\n", + " tf.reset_default_graph()\n", + " # build a tf computing graph\n", + " logit = self._build()\n", + " label = tf.placeholder(dtype=tf.int32,shape=[None]) # B,classes\n", + " losst = self.get_loss(logit,label)\n", + " opt_op = self.get_opt(losst)\n", + " \n", + " with tf.Session() as sess:\n", + " sess.run(tf.global_variables_initializer())\n", + " sess.run(tf.local_variables_initializer())\n", + " #self.load(sess)\n", + " i = 1\n", + " ave_loss = []\n", + " for c,(Xb,yb,end_epoch) in enumerate(self._batch_gen(shuffle=True)):\n", + " loss,_ = sess.run([losst,opt_op],feed_dict={self.inputs:Xb, label:yb})\n", + " ave_loss.append(loss)\n", + " if end_epoch:\n", + " print(\"Epoch %d train loss %.4f\"%(i,np.mean(ave_loss)))\n", + " i += 1\n", + " ave_loss = []\n", + " self.save(sess)\n", + " \n", + " def _build(self):\n", + " # build the computing graph \n", + " netname = 'groupNN'\n", + " self.inputs = tf.placeholder(dtype=tf.float32,shape=[None,200,2])\n", + " B = tf.shape(self.inputs)[0]\n", + " H = self.params.get('hidden_units', 16)\n", + " with tf.variable_scope(netname):\n", + " net = self.inputs\n", + " net = tf.contrib.layers.fully_connected(self.inputs,H)\n", + " net = tf.reshape(net,[B,200*H])\n", + " net = tf.contrib.layers.fully_connected(net,1,activation_fn=None)\n", + " return tf.squeeze(net)\n", + " \n", + " def predict(self,X):\n", + " print('predict')\n", + " self.X = X \n", + " self.y = None\n", + " tf.reset_default_graph()\n", + " self.params['epochs'] = 1\n", + " # build a tf computing graph\n", + " logit = self._build()\n", + " logit = tf.nn.sigmoid(logit)\n", + " preds = []\n", + " #print('here')\n", + " with tf.Session() as sess:\n", + " sess.run(tf.global_variables_initializer())\n", + " sess.run(tf.local_variables_initializer())\n", + " self.load(sess)\n", + " for c,(Xb,_,end_epoch) in enumerate(self._batch_gen(shuffle=False)):\n", + " pred = sess.run(logit,feed_dict={self.inputs:Xb})\n", + " preds.append(pred)\n", + " preds = np.concatenate(preds)\n", + " return preds\n", + " \n", + " def get_opt(self,loss):\n", + " learning_rate = self.params.get('learning_rate', 0.001)\n", + " opt = tf.train.AdamOptimizer(learning_rate=learning_rate)\n", + " return opt.minimize(loss)\n", + " \n", + " def get_loss(self, logit, label):\n", + " # build the loss tensor\n", + " label = tf.cast(label,tf.float32)\n", + " loss = tf.nn.sigmoid_cross_entropy_with_logits(logits=logit,labels=label)\n", + " return tf.reduce_mean(loss)\n", + " \n", + " def save(self, sess):\n", + " varss = tf.trainable_variables()\n", + " weights = {} # var.name => var.value: a numpy array\n", + " for var in varss:\n", + " val = sess.run(var)\n", + " weights[var.name] = val\n", + " pickle.dump(weights,open('weight.p','wb'))\n", + "\n", + " def load(self, sess, path = 'weight.p'):\n", + " weights = pickle.load(open(path,'rb'))\n", + " varss = tf.trainable_variables()\n", + " for var in varss:\n", + " value = weights[var.name]\n", + " assign_op = var.assign(value)\n", + " sess.run(assign_op)\n", + " \n", + " def _batch_gen(self, shuffle=True):\n", + " X,y = self.X, self.y\n", + " B = self.params.get('batch_size', 1024)\n", + " epochs = self.params.get('epochs', 10)\n", + " ids = [i for i in range(len(X))]\n", + " batches = len(X)//B + 1\n", + " #print(epochs,batches)\n", + " for epoch in range(epochs):\n", + " if shuffle:\n", + " random.shuffle(ids)\n", + " for i in range(batches): \n", + " idx = ids[i*B:(i+1)*B]\n", + " if y is not None:\n", + " yield X[idx],y[idx],i==batches-1\n", + " else:\n", + " yield X[idx],None,i==batches-1\n", + " if (i+1)*B < len(X):\n", + " idx = ids[(i+1)*B:len(X)]\n", + " yield X[idx]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "nn = groupNN(hidden_units=16,learning_rate=0.01,epochs=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:From /home/jiwei/anaconda3/envs/cudf0.6/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Colocations handled automatically by placer.\n", + "WARNING:From /home/jiwei/anaconda3/envs/cudf0.6/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.cast instead.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n", + "For more information, please see:\n", + " * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n", + " * https://github.com/tensorflow/addons\n", + "If you depend on functionality not listed there, please file an issue.\n", + "\n", + "Epoch 1 train loss 0.2783\n", + "Epoch 2 train loss 0.2145\n", + "Epoch 3 train loss 0.2076\n", + "Epoch 4 train loss 0.2038\n", + "Epoch 5 train loss 0.1985\n", + "Epoch 6 train loss 0.1955\n", + "Epoch 7 train loss 0.1941\n", + "Epoch 8 train loss 0.1925\n", + "Epoch 9 train loss 0.1920\n", + "Epoch 10 train loss 0.1918\n", + "Epoch 11 train loss 0.1932\n", + "Epoch 12 train loss 0.1893\n", + "Epoch 13 train loss 0.1882\n", + "Epoch 14 train loss 0.1885\n", + "Epoch 15 train loss 0.1886\n", + "Epoch 16 train loss 0.1896\n", + "Epoch 17 train loss 0.1890\n", + "Epoch 18 train loss 0.1882\n", + "Epoch 19 train loss 0.1866\n", + "Epoch 20 train loss 0.1886\n" + ] + } + ], + "source": [ + "nn.fit(X_train,y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "predict\n", + "Validation AUC 0.9072589318554531\n" + ] + } + ], + "source": [ + "yp = nn.predict(X_valid)\n", + "print('Validation AUC',roc_auc_score(y_valid,yp))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "predict\n" + ] + } + ], + "source": [ + "yp = nn.predict(Xt)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "submission = pd.DataFrame({'ID_code':test_gd['ID_code'].to_pandas().values,\n", + " 'target':yp})\n", + "submission.to_csv('submission.csv',index=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/intermediate_notebooks/benchmarks/cugraph_mg_hibench/multi_gpu_pagerank.ipynb b/the_archive/archived_rapids_benchmarks/cugraph_mg_hibench/multi_gpu_pagerank.ipynb similarity index 100% rename from intermediate_notebooks/benchmarks/cugraph_mg_hibench/multi_gpu_pagerank.ipynb rename to the_archive/archived_rapids_benchmarks/cugraph_mg_hibench/multi_gpu_pagerank.ipynb diff --git a/intermediate_notebooks/benchmarks/rapids_decomposition.ipynb b/the_archive/archived_rapids_benchmarks/rapids_decomposition.ipynb similarity index 100% rename from intermediate_notebooks/benchmarks/rapids_decomposition.ipynb rename to the_archive/archived_rapids_benchmarks/rapids_decomposition.ipynb diff --git a/blog_notebooks/azureml/README.md b/the_archive/archived_rapids_blog_notebooks/azureml/README.md similarity index 100% rename from blog_notebooks/azureml/README.md rename to the_archive/archived_rapids_blog_notebooks/azureml/README.md diff --git a/blog_notebooks/azureml/nyctaxi_data.py b/the_archive/archived_rapids_blog_notebooks/azureml/nyctaxi_data.py similarity index 100% rename from blog_notebooks/azureml/nyctaxi_data.py rename to the_archive/archived_rapids_blog_notebooks/azureml/nyctaxi_data.py diff --git a/blog_notebooks/azureml/rapids/init_dask.py b/the_archive/archived_rapids_blog_notebooks/azureml/rapids/init_dask.py similarity index 100% rename from blog_notebooks/azureml/rapids/init_dask.py rename to the_archive/archived_rapids_blog_notebooks/azureml/rapids/init_dask.py diff --git a/blog_notebooks/azureml/rapids/nyctaxi_demo.ipynb b/the_archive/archived_rapids_blog_notebooks/azureml/rapids/nyctaxi_demo.ipynb similarity index 100% rename from blog_notebooks/azureml/rapids/nyctaxi_demo.ipynb rename to the_archive/archived_rapids_blog_notebooks/azureml/rapids/nyctaxi_demo.ipynb diff --git a/blog_notebooks/azureml/rapids/rapids-0.10.yml b/the_archive/archived_rapids_blog_notebooks/azureml/rapids/rapids-0.10.yml similarity index 100% rename from blog_notebooks/azureml/rapids/rapids-0.10.yml rename to the_archive/archived_rapids_blog_notebooks/azureml/rapids/rapids-0.10.yml diff --git a/blog_notebooks/azureml/start_azureml.py b/the_archive/archived_rapids_blog_notebooks/azureml/start_azureml.py old mode 100755 new mode 100644 similarity index 100% rename from blog_notebooks/azureml/start_azureml.py rename to the_archive/archived_rapids_blog_notebooks/azureml/start_azureml.py diff --git a/blog_notebooks/cuspatial/data/target_intersection.png b/the_archive/archived_rapids_blog_notebooks/cuspatial/data/target_intersection.png similarity index 100% rename from blog_notebooks/cuspatial/data/target_intersection.png rename to the_archive/archived_rapids_blog_notebooks/cuspatial/data/target_intersection.png diff --git a/blog_notebooks/cuspatial/data/trajectories_extracted.p b/the_archive/archived_rapids_blog_notebooks/cuspatial/data/trajectories_extracted.p similarity index 100% rename from blog_notebooks/cuspatial/data/trajectories_extracted.p rename to the_archive/archived_rapids_blog_notebooks/cuspatial/data/trajectories_extracted.p diff --git a/blog_notebooks/cuspatial/trajectory_clustering.ipynb b/the_archive/archived_rapids_blog_notebooks/cuspatial/trajectory_clustering.ipynb similarity index 100% rename from blog_notebooks/cuspatial/trajectory_clustering.ipynb rename to the_archive/archived_rapids_blog_notebooks/cuspatial/trajectory_clustering.ipynb diff --git a/blog_notebooks/cyber/README.md b/the_archive/archived_rapids_blog_notebooks/cyber/README.md similarity index 100% rename from blog_notebooks/cyber/README.md rename to the_archive/archived_rapids_blog_notebooks/cyber/README.md diff --git a/blog_notebooks/cyber/flow_classification/README.md b/the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/README.md similarity index 100% rename from blog_notebooks/cyber/flow_classification/README.md rename to the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/README.md diff --git a/blog_notebooks/cyber/flow_classification/flow_classification_rapids.ipynb b/the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/flow_classification_rapids.ipynb similarity index 100% rename from blog_notebooks/cyber/flow_classification/flow_classification_rapids.ipynb rename to the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/flow_classification_rapids.ipynb diff --git a/blog_notebooks/cyber/flow_classification/images/pcap_vs_flow.png b/the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/images/pcap_vs_flow.png similarity index 100% rename from blog_notebooks/cyber/flow_classification/images/pcap_vs_flow.png rename to the_archive/archived_rapids_blog_notebooks/cyber/flow_classification/images/pcap_vs_flow.png diff --git a/blog_notebooks/cyber/network_mapping/README.md b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/README.md similarity index 100% rename from blog_notebooks/cyber/network_mapping/README.md rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/README.md diff --git a/blog_notebooks/cyber/network_mapping/conf/LANL_OUTPUT_COLS_SUPERSET.csv b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/LANL_OUTPUT_COLS_SUPERSET.csv similarity index 100% rename from blog_notebooks/cyber/network_mapping/conf/LANL_OUTPUT_COLS_SUPERSET.csv rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/LANL_OUTPUT_COLS_SUPERSET.csv diff --git a/blog_notebooks/cyber/network_mapping/conf/edge-definitions.json b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/edge-definitions.json similarity index 100% rename from blog_notebooks/cyber/network_mapping/conf/edge-definitions.json rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/edge-definitions.json diff --git a/blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4624.yaml b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4624.yaml similarity index 100% rename from blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4624.yaml rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4624.yaml diff --git a/blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4625.yaml b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4625.yaml similarity index 100% rename from blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4625.yaml rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/conf/lanl_regex_configs/4625.yaml diff --git a/blog_notebooks/cyber/network_mapping/images/graphistry1.png b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/images/graphistry1.png similarity index 100% rename from blog_notebooks/cyber/network_mapping/images/graphistry1.png rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/images/graphistry1.png diff --git a/blog_notebooks/cyber/network_mapping/images/graphistry2.png b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/images/graphistry2.png similarity index 100% rename from blog_notebooks/cyber/network_mapping/images/graphistry2.png rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/images/graphistry2.png diff --git a/blog_notebooks/cyber/network_mapping/lanl_network_mapping_using_rapids.ipynb b/the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/lanl_network_mapping_using_rapids.ipynb similarity index 100% rename from blog_notebooks/cyber/network_mapping/lanl_network_mapping_using_rapids.ipynb rename to the_archive/archived_rapids_blog_notebooks/cyber/network_mapping/lanl_network_mapping_using_rapids.ipynb diff --git a/blog_notebooks/cyber/raw_data_generator/README.md b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/README.md similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/README.md rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/README.md diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/__init__.py b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/__init__.py similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/__init__.py rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/__init__.py diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/raw_data_generator.py b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/raw_data_generator.py similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/raw_data_generator.py rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/raw_data_generator.py diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_1100.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_1100.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_1100.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_1100.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4608.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4608.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4608.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4608.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4609.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4609.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4609.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4609.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4624.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4624.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4624.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4624.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4625.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4625.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4625.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4625.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4634.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4634.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4634.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4634.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4647.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4647.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4647.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4647.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4648.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4648.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4648.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4648.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4672.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4672.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4672.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4672.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4688.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4688.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4688.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4688.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4689.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4689.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4689.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4689.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4768.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4768.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4768.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4768.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4769.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4769.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4769.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4769.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4770.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4770.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4770.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4770.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4774.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4774.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4774.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4774.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4776.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4776.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4776.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4776.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4800.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4800.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4800.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4800.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4801.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4801.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4801.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4801.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4802.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4802.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4802.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4802.txt diff --git a/blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4803.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4803.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4803.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/raw_data_generator/templates/event_4803.txt diff --git a/blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/run_raw_data_generator.py diff --git a/blog_notebooks/cyber/raw_data_generator/test/__init__.py b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/__init__.py similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/test/__init__.py rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/__init__.py diff --git a/blog_notebooks/cyber/raw_data_generator/test/data/input/sample_data.txt b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/data/input/sample_data.txt similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/test/data/input/sample_data.txt rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/data/input/sample_data.txt diff --git a/blog_notebooks/cyber/raw_data_generator/test/test_raw_data_generator.py b/the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/test_raw_data_generator.py similarity index 100% rename from blog_notebooks/cyber/raw_data_generator/test/test_raw_data_generator.py rename to the_archive/archived_rapids_blog_notebooks/cyber/raw_data_generator/test/test_raw_data_generator.py diff --git a/blog_notebooks/databricks/RAPIDS Init Script.html b/the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS Init Script.html similarity index 100% rename from blog_notebooks/databricks/RAPIDS Init Script.html rename to the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS Init Script.html diff --git a/blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.html b/the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.html similarity index 100% rename from blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.html rename to the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.html diff --git a/blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.ipynb b/the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.ipynb similarity index 100% rename from blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.ipynb rename to the_archive/archived_rapids_blog_notebooks/databricks/RAPIDS_PCA_demo_avro_read.ipynb diff --git a/blog_notebooks/databricks/README.md b/the_archive/archived_rapids_blog_notebooks/databricks/README.md similarity index 100% rename from blog_notebooks/databricks/README.md rename to the_archive/archived_rapids_blog_notebooks/databricks/README.md diff --git a/blog_notebooks/databricks/spark_rapids_pca_demo.ipynb b/the_archive/archived_rapids_blog_notebooks/databricks/spark_rapids_pca_demo.ipynb similarity index 100% rename from blog_notebooks/databricks/spark_rapids_pca_demo.ipynb rename to the_archive/archived_rapids_blog_notebooks/databricks/spark_rapids_pca_demo.ipynb diff --git a/blog_notebooks/intro_to_cudf/README.md b/the_archive/archived_rapids_blog_notebooks/intro_to_cudf/README.md similarity index 100% rename from blog_notebooks/intro_to_cudf/README.md rename to the_archive/archived_rapids_blog_notebooks/intro_to_cudf/README.md diff --git a/blog_notebooks/intro_to_cudf/data/housing.csv b/the_archive/archived_rapids_blog_notebooks/intro_to_cudf/data/housing.csv old mode 100755 new mode 100644 similarity index 100% rename from blog_notebooks/intro_to_cudf/data/housing.csv rename to the_archive/archived_rapids_blog_notebooks/intro_to_cudf/data/housing.csv diff --git a/blog_notebooks/intro_to_cudf/getting_started_with_cuDF.ipynb b/the_archive/archived_rapids_blog_notebooks/intro_to_cudf/getting_started_with_cuDF.ipynb similarity index 100% rename from blog_notebooks/intro_to_cudf/getting_started_with_cuDF.ipynb rename to the_archive/archived_rapids_blog_notebooks/intro_to_cudf/getting_started_with_cuDF.ipynb diff --git a/blog_notebooks/mortgage_deep_learning/mortgage_e2e_deep_learning.ipynb b/the_archive/archived_rapids_blog_notebooks/mortgage_deep_learning/mortgage_e2e_deep_learning.ipynb similarity index 100% rename from blog_notebooks/mortgage_deep_learning/mortgage_e2e_deep_learning.ipynb rename to the_archive/archived_rapids_blog_notebooks/mortgage_deep_learning/mortgage_e2e_deep_learning.ipynb diff --git a/blog_notebooks/nlp/README.md b/the_archive/archived_rapids_blog_notebooks/nlp/README.md similarity index 100% rename from blog_notebooks/nlp/README.md rename to the_archive/archived_rapids_blog_notebooks/nlp/README.md diff --git a/blog_notebooks/nlp/show_me_the_word_count_gutenberg/README.md b/the_archive/archived_rapids_blog_notebooks/nlp/show_me_the_word_count_gutenberg/README.md similarity index 100% rename from blog_notebooks/nlp/show_me_the_word_count_gutenberg/README.md rename to the_archive/archived_rapids_blog_notebooks/nlp/show_me_the_word_count_gutenberg/README.md diff --git a/blog_notebooks/nlp/show_me_the_word_count_gutenberg/show_me_the_word_count_gutenberg.ipynb b/the_archive/archived_rapids_blog_notebooks/nlp/show_me_the_word_count_gutenberg/show_me_the_word_count_gutenberg.ipynb old mode 100755 new mode 100644 similarity index 100% rename from blog_notebooks/nlp/show_me_the_word_count_gutenberg/show_me_the_word_count_gutenberg.ipynb rename to the_archive/archived_rapids_blog_notebooks/nlp/show_me_the_word_count_gutenberg/show_me_the_word_count_gutenberg.ipynb diff --git a/the_archive/archived_rapids_blog_notebooks/plasticc/Dockerfile b/the_archive/archived_rapids_blog_notebooks/plasticc/Dockerfile new file mode 100644 index 00000000..790edeb2 --- /dev/null +++ b/the_archive/archived_rapids_blog_notebooks/plasticc/Dockerfile @@ -0,0 +1,37 @@ +# An integration test & dev container which builds and installs cuDF from master +ARG CUDA_VERSION=9.2 +ARG LINUX_VERSION=ubuntu16.04 +FROM nvidia/cuda:${CUDA_VERSION}-devel-${LINUX_VERSION} +ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib +# Needed for pygdf.concat(), avoids "OSError: library nvvm not found" +ENV NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so +ENV NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice/ + + +# Install conda +ADD https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh /miniconda.sh +RUN sh /miniconda.sh -b -p /conda && /conda/bin/conda update -n base conda +ENV PATH=${PATH}:/conda/bin +# Enables "source activate conda" +SHELL ["/bin/bash", "-c"] + +RUN conda create --name cudf +RUN apt-get update -y && apt-get install -y curl unzip vim +RUN source activate cudf && \ + conda install -c defaults -c nvidia -c rapidsai -c pytorch -c numba -c conda-forge cudf=0.7 cuml=0.7 python=3.6 cudatoolkit=9.2 +RUN source activate cudf && \ + pip install xgboost seaborn scikit-learn termcolor kaggle + +RUN source activate cudf && \ + conda install -y jupyter notebook + +ADD notebooks /notebooks +WORKDIR /notebooks +RUN mv .kaggle ~/ +RUN chmod 600 /root/.kaggle/kaggle.json +ADD data /data +WORKDIR /data +RUN source activate cudf && kaggle competitions download -c PLAsTiCC-2018 +WORKDIR /data +RUN unzip "*.zip" +WORKDIR /notebooks diff --git a/the_archive/archived_rapids_blog_notebooks/plasticc/README.md b/the_archive/archived_rapids_blog_notebooks/plasticc/README.md new file mode 100644 index 00000000..1ce94e29 --- /dev/null +++ b/the_archive/archived_rapids_blog_notebooks/plasticc/README.md @@ -0,0 +1,37 @@ +# 1. Introduction +These notebokks demo the single GPU model of 8th place [Rapids.ai](https://rapids.ai) solution of [PLAsTiCC Astronomical Classification](https://www.kaggle.com/c/PLAsTiCC-2018). The full blog can be found [here](https://medium.com/rapids-ai/make-sense-of-the-universe-with-rapids-ai-d105b0e5ec95). + +# 2. Build and run the docker demo + +## Build Docker from gitlab clone +```bash +$ git clone https://github.com/daxiongshu/notebooks +$ cd notebooks +$ git checkout remotes/origin/kaggle +$ cd kaggle/plasticc +$ docker build --tag plasticc_demo . +``` + +## Run Docker notebooks +```bash +$ docker run -p 8888:8888 --runtime=nvidia -it plasticc_demo bash +$ source activate cudf +$ jupyter notebook --ip '0.0.0.0' --allow-root +``` + +# 3. Build and run with bare-metal conda install +## Requirement +1. cuda>=9.2 +2. anaconda + +## Install depencencies +```bash +$ conda create -n cudf python=3.6 +$ source activate cudf +$ conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults cudf=0.5 python=3.6 +$ pip install xgboost seaborn termcolor scikit-learn +$ conda install jupyter notebook +``` + +## Download data +Download data from [link](https://www.kaggle.com/c/PLAsTiCC-2018/data) and uncompress to the `data` folder. diff --git a/the_archive/archived_rapids_blog_notebooks/plasticc/data/README.md b/the_archive/archived_rapids_blog_notebooks/plasticc/data/README.md new file mode 100644 index 00000000..846eb45c --- /dev/null +++ b/the_archive/archived_rapids_blog_notebooks/plasticc/data/README.md @@ -0,0 +1 @@ +Data should be downloaded to this folder. diff --git a/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/.kaggle/kaggle.json b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/.kaggle/kaggle.json new file mode 100644 index 00000000..a2d278ce --- /dev/null +++ b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/.kaggle/kaggle.json @@ -0,0 +1 @@ +{"username":"rapidsdemo","key":"48eb4c4dd9f35cd809a85b20c11d01dd"} diff --git a/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/cudf_workaround.py b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/cudf_workaround.py new file mode 100644 index 00000000..90c6e61b --- /dev/null +++ b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/cudf_workaround.py @@ -0,0 +1,356 @@ +import cudf as gd +import numpy as np +from numba import cuda,jit,float32 +import math +TPB = 32 # threads per block, multiples of 32 in general + +def rename_col(df, oldcol, newcol): + df[newcol] = df[oldcol] + df.drop_column(oldcol) + return df + +@cuda.jit(device=True) +def initialize(array,value,N): + # N<=len(array) + for i in range(cuda.threadIdx.x, N, cuda.blockDim.x): + array[i] = value + +@cuda.jit(device=True) +def reduction_sum_SM(array): + # array is in shared memory + # len(array) == TPB + # the final result is in array[0] + tid = cuda.threadIdx.x + j = TPB//2 #16 + while j>0: + if tid1: + std[0] = math.sqrt(std[0]/(len(array)-1)) + else: + std[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_skew_with_mean(array,skew,mean): + # skew is a shared memory array + # mean is a scaler, the mean value of array + # len(skew) == TPB + # the kernel has only one TB + # the final result is in skew[0] + tid = cuda.threadIdx.x + initialize(skew,0,len(skew)) + cuda.syncthreads() + + m2 = 0 # 2nd moment + + tid = cuda.threadIdx.x + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**2 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + m2 = skew[0]/(len(array)) + cuda.syncthreads() + + initialize(skew,0,len(skew)) + cuda.syncthreads() + + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**3 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + n = len(array) + m3 = skew[0]/(len(array)) + if m2>0 and n>2: + skew[0] = math.sqrt((n-1.0)*n)/(n-2.0)*m3/m2**1.5 + else: + skew[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_kurtosis_with_mean(array,skew,mean): + # skew is a shared memory array + # mean is a scaler, the mean value of array + # len(skew) == TPB + # the kernel has only one TB + # the final result is in skew[0] + tid = cuda.threadIdx.x + initialize(skew,0,len(skew)) + cuda.syncthreads() + + m2 = 0 + tid = cuda.threadIdx.x + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**2 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + m2 = skew[0]/(len(array)) + cuda.syncthreads() + + initialize(skew,0,len(skew)) + cuda.syncthreads() + + for i in range(cuda.threadIdx.x, len(array), cuda.blockDim.x): + skew[tid] += (array[i]-mean)**4 + cuda.syncthreads() + + reduction_sum_SM(skew) + if tid == 0: + n = len(array) + m4 = skew[0]/(len(array)) + #skew[0] = math.sqrt((n-1.0)*n)/(n-2.0)*m3/m2**1.5 + if n>3 and m2>0: + skew[0] = 1.0/(n-2)/(n-3)*((n*n-1.0)*m4/m2**2.0-3*(n-1)**2.0) + else: + skew[0] = 0 + cuda.syncthreads() + +@cuda.jit(device=True) +def compute_std(array,std): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,std) + mean = std[0] + cuda.syncthreads() + compute_std_with_mean(array,std,mean) + +@cuda.jit(device=True) +def compute_skew(array,skew): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,skew) + mean = skew[0] + #cuda.syncthreads() + compute_skew_with_mean(array,skew,mean) + +@cuda.jit(device=True) +def compute_kurtosis(array,skew): + # std is a shared memory array + # len(std) == TPB + # the kernel has only one TB + # the final result is in std[0] + compute_mean(array,skew) + mean = skew[0] + #cuda.syncthreads() + compute_kurtosis_with_mean(array,skew,mean) + +@cuda.jit +def compute_mean_kernel(array,out): + mean = cuda.shared.array(shape=(TPB), dtype=float32) + compute_mean(array,mean) + if cuda.threadIdx.x==0: + out[0] = mean[0] + cuda.syncthreads() + +@cuda.jit +def compute_std_kernel(array,out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(array,std) + if cuda.threadIdx.x==0: + out[0] = std[0] + cuda.syncthreads() + +@cuda.jit +def compute_skew_kernel(array,out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_skew(array,skew) + if cuda.threadIdx.x==0: + out[0] = skew[0] + cuda.syncthreads() + +@cuda.jit +def compute_kurtosis_kernel(array,out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_kurtosis(array,skew) + if cuda.threadIdx.x==0: + out[0] = skew[0] + cuda.syncthreads() + +@cuda.jit(device=True) +def gd_group_apply_std(ds_in,ds_out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(ds_in,std) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = std[0] + +@cuda.jit(device=True) +def gd_group_apply_var(ds_in,ds_out): + std = cuda.shared.array(shape=(TPB), dtype=float32) + compute_std(ds_in,std) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = std[0]**2 + +@cuda.jit(device=True) +def gd_group_apply_skew(ds_in,ds_out): + skew = cuda.shared.array(shape=(TPB), dtype=float32) + compute_skew(ds_in,skew) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = skew[0] + +@cuda.jit(device=True) +def gd_group_apply_kurtosis(ds_in,ds_out): + kurtosis = cuda.shared.array(shape=(TPB), dtype=float32) + compute_kurtosis(ds_in,kurtosis) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = kurtosis[0] + +@cuda.jit(device=True) +def gd_group_apply_copy_first(ds_in,ds_out): + cache = cuda.shared.array(shape=(1), dtype=float32) + compute_first(ds_in,cache) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = cache[0] + +@cuda.jit(device=True) +def gd_group_apply_copy_last(ds_in,ds_out): + cache = cuda.shared.array(shape=(1), dtype=float32) + compute_last(ds_in,cache) + for i in range(cuda.threadIdx.x, len(ds_in), cuda.blockDim.x): + ds_out[i] = cache[0] + +def groupby_median(df,idcol,col): + outcol = 'median_%s'%(col) + func = \ + '''def median(df):\n + df["%s"] = df["%s"].nsmallest((len(df)+1)//2)[-1] + return df + '''%(outcol,col) + exec(func) + func = eval('median') + df = df.groupby(idcol, method="cudf").apply(func) + return df + +def cudf_groupby_agg(df,idcol,col,func_name): + # python trick to get named arguments + if func_name in ['mean','max','min','sum','count']: + return df.groupby(idcol,as_index=False).agg({col:func_name}) + outcol = '%s_%s'%(func_name,col) + if func_name == 'median': + df = groupby_median(df,idcol,col) + else: + fn = '%s(%s,%s)'%(func_name,col,outcol) + func = \ + '''def %s:\n + gd_group_apply_%s + '''%(fn,fn) + exec(func) + func = eval(func_name) + df = df.groupby(idcol,method='cudf').apply_grouped(func, + incols=[col], + outcols={outcol: np.float32}, + tpb=TPB) + dg = df.groupby(idcol).agg({outcol:'mean'}) + df.drop_column(outcol) + dg.columns = [outcol] + dg = dg.reset_index() + return dg + +def cudf_groupby_aggs(df,group_id_col,aggs): + """ + Parameters + ---------- + df : cudf dataframe + dataframe to be grouped + group_id_col : string + name of the column which is used as the key of the group + aggs : dictionary + key is the name of column for which aggregation is calculated + values is the name of function for aggregation + Returns + ------- + dg : cudf dataframe + result of groupby aggregation + """ + dg = None + for col,funcs in aggs.items(): + for func in funcs: + if dg is None: + dg = cudf_groupby_agg(df,group_id_col,col,func) + else: + tmp = cudf_groupby_agg(df,group_id_col,col,func) + #print(tmp.columns) + #print(dg.columns) + dg = dg.merge(tmp,on=[group_id_col],how='left') + return dg + +def drop_duplicates(df,by,keep='first'): + if keep not in ['first','last']: + raise NotImplementedError(keep) + + cols = [i for i in df.columns if i!=by] + aggs = {i:['copy_%s'%keep] for i in cols} + dg = cudf_groupby_aggs(df,group_id_col=by,aggs=aggs) + for i in cols: + dg = rename_col(dg,'copy_%s_%s'%(keep,i),i) + return dg diff --git a/blog_notebooks/plasticc/notebooks/rapids_lsst_full_demo.ipynb b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/rapids_lsst_full_demo.ipynb similarity index 100% rename from blog_notebooks/plasticc/notebooks/rapids_lsst_full_demo.ipynb rename to the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/rapids_lsst_full_demo.ipynb diff --git a/blog_notebooks/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb b/the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb similarity index 100% rename from blog_notebooks/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb rename to the_archive/archived_rapids_blog_notebooks/plasticc/notebooks/rapids_lsst_gpu_only_demo.ipynb diff --git a/blog_notebooks/randomforest/fruits_rf_notebook.ipynb b/the_archive/archived_rapids_blog_notebooks/randomforest/fruits_rf_notebook.ipynb similarity index 100% rename from blog_notebooks/randomforest/fruits_rf_notebook.ipynb rename to the_archive/archived_rapids_blog_notebooks/randomforest/fruits_rf_notebook.ipynb diff --git a/blog_notebooks/regression/README.md b/the_archive/archived_rapids_blog_notebooks/regression/README.md similarity index 100% rename from blog_notebooks/regression/README.md rename to the_archive/archived_rapids_blog_notebooks/regression/README.md diff --git a/blog_notebooks/regression/regression_2_blog.ipynb b/the_archive/archived_rapids_blog_notebooks/regression/regression_2_blog.ipynb similarity index 100% rename from blog_notebooks/regression/regression_2_blog.ipynb rename to the_archive/archived_rapids_blog_notebooks/regression/regression_2_blog.ipynb diff --git a/blog_notebooks/regression/regression_blog_notebook.ipynb b/the_archive/archived_rapids_blog_notebooks/regression/regression_blog_notebook.ipynb similarity index 100% rename from blog_notebooks/regression/regression_blog_notebook.ipynb rename to the_archive/archived_rapids_blog_notebooks/regression/regression_blog_notebook.ipynb diff --git a/blog_notebooks/santander/E2E_santander.ipynb b/the_archive/archived_rapids_blog_notebooks/santander/E2E_santander.ipynb similarity index 100% rename from blog_notebooks/santander/E2E_santander.ipynb rename to the_archive/archived_rapids_blog_notebooks/santander/E2E_santander.ipynb diff --git a/blog_notebooks/santander/E2E_santander_pandas.ipynb b/the_archive/archived_rapids_blog_notebooks/santander/E2E_santander_pandas.ipynb similarity index 100% rename from blog_notebooks/santander/E2E_santander_pandas.ipynb rename to the_archive/archived_rapids_blog_notebooks/santander/E2E_santander_pandas.ipynb diff --git a/blog_notebooks/santander/cudf_tf_demo.ipynb b/the_archive/archived_rapids_blog_notebooks/santander/cudf_tf_demo.ipynb similarity index 100% rename from blog_notebooks/santander/cudf_tf_demo.ipynb rename to the_archive/archived_rapids_blog_notebooks/santander/cudf_tf_demo.ipynb diff --git a/blog_notebooks/svm/svc_covertype.ipynb b/the_archive/archived_rapids_blog_notebooks/svm/svc_covertype.ipynb similarity index 100% rename from blog_notebooks/svm/svc_covertype.ipynb rename to the_archive/archived_rapids_blog_notebooks/svm/svc_covertype.ipynb diff --git a/the_archive/archived_rapids_demos/cuml/DBSCAN_Demo_Full.ipynb b/the_archive/archived_rapids_demos/cuml/DBSCAN_Demo_Full.ipynb new file mode 100644 index 00000000..7b9e4a0f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/DBSCAN_Demo_Full.ipynb @@ -0,0 +1,670 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Clustering using GPU Accelerated DBSCAN in RAPIDS\n", + "#### By Paul Hendricks\n", + "-------\n", + "\n", + "While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For the same reasons, scientific computing and deep learning has turned to NVIDIA GPU acceleration, data analytics and machine learning where GPU acceleration is ideal. \n", + "\n", + "NVIDIA created RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. RAPIDS integrates easily into the world’s most popular data science Python-based workflows. RAPIDS accelerates data science end-to-end – from data prep, to machine learning, to deep learning. And through Arrow, Spark users can easily move data into the RAPIDS platform for acceleration.\n", + "\n", + "In this notebook, we will also show how to use DBSCAN - a popular clustering algorithm - and how to use the GPU accelerated implementation of this algorithm in RAPIDS.\n", + "\n", + "**Table of Contents**\n", + "\n", + "* Clustering with DBSCAN\n", + "* Setup\n", + "* Generating Data\n", + "* K Means and Agglomerative Clustering\n", + "* Clustering using DBSCAN\n", + "* Accelerating DBSCAN with RAPIDS\n", + "* Benchmarking: Comparing GPU and CPU\n", + "* Conclusion\n", + "\n", + "Before going any further, let's make sure we have access to `matplotlib`, a popular Python library for data visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "try:\n", + " import matplotlib\n", + "except ModuleNotFoundError:\n", + " os.system('conda install -y matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clustering with DBSCAN\n", + "\n", + "Clustering is an important technique for helping data scientists partition data, especially when that data doesn't have labels or annotations associated with it. Since these data often don't have labels, clustering is often described as an unsupervised learning technique. While there are many different algorithms that partition data into unique clusters, we will show in this notebook how in certain cases the DBSCAN algorithm can do a better job of clustering than traditional algorithms such as K Means or Agglomerative Clustering. \n", + "\n", + "We will also show how to cluster data with DBSCAN in NVIDIA RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. We will see that porting this example from CPU to GPU is trivial and that we can experience massive performance gains by doing so." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This notebook was tested using the `nvcr.io/nvidia/rapidsai/rapidsai:0.5-cuda10.0-runtime-ubuntu18.04-gcc7-py3.7` Docker container from [NVIDIA GPU Cloud](https://ngc.nvidia.com) and run on the NVIDIA Tesla V100 GPU. Please be aware that your system may be different and you may need to modify the code or install packages to run the below examples. \n", + "\n", + "If you think you have found a bug or an error, please file an issue here: https://github.com/rapidsai/notebooks/issues\n", + "\n", + "Before we begin, let's check out our hardware setup by running the `nvidia-smi` command." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tue May 7 00:34:27 2019 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 418.39 Driver Version: 418.39 CUDA Version: 10.1 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "|===============================+======================+======================|\n", + "| 0 Quadro GV100 Off | 00000000:15:00.0 Off | Off |\n", + "| 29% 40C P2 26W / 250W | 10149MiB / 32478MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 1 Quadro GV100 Off | 00000000:2D:00.0 On | Off |\n", + "| 33% 46C P0 29W / 250W | 260MiB / 32470MiB | 24% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: GPU Memory |\n", + "| GPU PID Type Process name Usage |\n", + "|=============================================================================|\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's see what CUDA version we have:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2018 NVIDIA Corporation\n", + "Built on Sat_Aug_25_21:08:01_CDT_2018\n", + "Cuda compilation tools, release 10.0, V10.0.130\n" + ] + } + ], + "source": [ + "!nvcc --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's load some helper functions from `matplotlib` and configure the Jupyter Notebook for visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generating Data\n", + "\n", + "We'll generate some fake data using the `make_moons` function from the `sklearn.datasets` module. This function generates data points from two equations, each describing a half circle with a unique center. Since each data point is generated by one of these two equations, the cluster each data point belongs to is clear. The ideal clustering algorithm will identify two clusters and associate each data point with the equation that generated it." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(100, 2)\n" + ] + } + ], + "source": [ + "from sklearn.datasets import make_moons\n", + "\n", + "X, y = make_moons(n_samples=int(1e2), noise=0.05, random_state=0)\n", + "print(X.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualize our data:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X+QXWd93/H3R+ulXmPwmliAtZZidUaVMXWM4MZ2Rm1qDI6MSZBCcGsg4ccko3EnzpAZRkUkMwlMMmVTTdPQ8sOjMS4wOHgc2xECC1SwTGlJTb1CFkaWBaqd2Fq5ePkhJ7HV0Ur69o+9K1/dPffnOffe8+PzmtHsvec+e8+5e3TP9zzP832eRxGBmZlZ3iwb9QGYmZklcYAyM7NccoAyM7NccoAyM7NccoAyM7NccoAyM7NccoAyM7NccoAyM7NccoAyM7NcOmfUB9DORRddFJdeeumoD8PMzDK0d+/eH0fE8k7lch2gLr30UmZmZkZ9GGZmliFJf9dNOTfxmZlZLjlAmZlZLjlAmZlZLjlAmZlZLjlAmZlZLjlAmZlZLjlAmZlZLjlAmZlZLuV6oK5ZGjv2zbJt9yGOHjvOiskJtmxYy6Z1U6M+LDPrkgOU5U4WgWXHvlk+fN+jHJ8/BcDsseN8+L5HARykzArCTXyWK4uBZfbYcYIXA8uOfbM9vc+23YfOBKdFx+dPsW33oQyP1swGyTUoy5V2gaWXms/RY8fbbnfzn1n+uQZludIpsHRrxeREy+1Z1dLMbLAcoCxX2gWWXmzZsJaJ8bGztk2Mj7Flw1o3/5kVhAOU5Uq7wNKLTeum+Njbr2BqcgIBU5MTfOztV7Bp3VRmtTQzG6xM+qAk3QH8KvBsRPzzhNcFfBy4EXgBeF9EfDeLfVu5LPYDZdE/tGndVOLvrZicYDYhGPVaS8uK+8PMkmWVJPFZ4BPA51u8/hZgTf3f1cCn6z+t5Lq9+A7zIr1lw9qzUtChv1paFpwOb9ZaJgEqIr4l6dI2RTYCn4+IAB6SNCnp4oh4Jov9Wz51e/Ed9kW631raIIJoVlmLZmU0rDTzKeDphudH6tuWBChJm4HNAKtWrRrKwdlgdHvxHcVFulXzXyuDCqLuDzNrbVgBSgnbIqlgRGwHtgPUarXEMjY4WdYSur34ZnWRHmQz4aCCaN76w8zyZFhZfEeAlQ3PLwGODmnf1qWsxwd1mzKeRWr5oMc2Daqmk1XWolkZDStA7QTeowXXAM+5/yl/sh4f1O3FN4uL9KDHNmU1PqtZu3R4s6rLKs38i8C1wEWSjgB/DIwDRMRtwC4WUswPs5Bm/v4s9mv9S2oOy7qW0G0yQhap5YPuyxlk5l+v/WFmVaGFxLp8qtVqMTMzM+rDKJ3mDn9YuNj+k3OWcez4/JLyU5MTfHvrdcM8xJ6tn96T2JfT67G368fyeCWzbEjaGxG1TuU8WWwFtWoOO3d8GRPjY7kYH9SrLGo4nTL1XNMxGy4HqApq1ex17IV5/tO/eV0hawlZNBP2kqnXXJt642XLefDxucL93czyzAGqgibPG+dnLyxtyps8b7zQtYS0x95tP1ZSTesLDz115nXPBmGWDU8WW0Gtuh1z3B05FN1m6iXVtJoNa3b0HftmWT+9h9Vb72f99B4vGWKl4gBVQc8lJEK0214V3aa7d5sZOOjZILyulZWdA1QFXTAxnri96rMXdDsmqdu/06D/nl7XysrOfVAVs2PfLM+fOLlk+/gyFSJbb9C66cdKyhhsNozsR8/jZ2XnGlTFbNt9iPlTSzubzj/3HHfodymppvWb16wa+mwQg5rdwiwvXIOqmHYp5ta9PGQ75mldK7NBcA2qYnzXXR6ex8/KzjWoihn1XbenC8pWHmpyZoPiAFUxWcy40C8vb25mvXCAqqBR3XV7eXMz64UDVEnlsSnNadFm1gsnSZRQXmcYcIKGmfXCAaqE8jrDgJc3N7NeuImvhPLalDbKBA07Wx6bgM2aOUCV0IrJicTVZfPQlOa06NFzNqUVRSZNfJJukHRI0mFJWxNev0DSlyXtl3RA0vuz2K8lc1OatZPXJmCzZqlrUJLGgE8C1wNHgIcl7YyIxxqK/S7wWET8mqTlwCFJd0bEibT7r5pummbclGbt5LUJ2KxZFk18VwGHI+IJAEl3ARuBxgAVwMskCTgf+CmwdEpta6uXphk3pVkreW4CNmuURRPfFPB0w/Mj9W2NPgG8BjgKPAp8ICJOZ7DvSnHTjGXBTcBWFFkEKCVsa17PYQPwCLACeB3wCUkvT3wzabOkGUkzc3NzGRxeebhpxrLgSWatKLJo4jsCrGx4fgkLNaVG7wemIyKAw5KeBC4D/nfzm0XEdmA7QK1WW7pwUYW5aab8hpX+7SZgK4IsalAPA2skrZb0EuBmYGdTmaeANwFIehWwFngig31Xiptmyi2vM4CYjUrqGlREnJR0K7AbGAPuiIgDkm6pv34b8CfAZyU9ykKT4Ici4sdp911k/dwpOzuv3DyZrtnZMhmoGxG7gF1N225reHwU+JUs9lUGaQZKummmvPrtY/SsEFZWnotvBJyNZ0n6mUzXzYJWZg5QI+BsPEvSTx+jb3aszDwX3whcMDHOsePzS7Y7G6/a+ulj9M2OlZkD1JDt2DfL8yeWTqIxvkzOxrOe+xg99MDKzE18Q7Zt9yHmTy0d3nX+uee4Y9t65qEHVmauQQ1Zq6aXYy8sbfIz66TbZkFn+lkROUANWRZNMr7YWKNOzYJe/8mKyk18Q5a2ScZpxdYrZ/pZUTlADVnaiTp9sbFeOdPPispNfCOQZjYIX2ysV870s6JyDapg+pltwKrNmX5WVA5QBeOLjfXK6z9ZUbmJr2A8o7n1w5MMWxE5QBWQLzZmVgVu4jMzs1xygDIzs1xyE59ZBSTNPgLuy7R8c4AyK7mkqY623LMfAuZPx5ltnv7I8sZNfGYllzT7yPypOBOcFnlGEsubTAKUpBskHZJ0WNLWFmWulfSIpAOS/nsW+zWzznqZZcQzkliepA5QksaATwJvAS4H3inp8qYyk8CngLdFxGuBm9Lu18y608ssI56RxPIkixrUVcDhiHgiIk4AdwEbm8q8C7gvIp4CiIhnM9ivmXUhafaR8TExvkxnbfOMJJY3WQSoKeDphudH6tsa/TPgQknflLRX0ntavZmkzZJmJM3Mzc1lcHhm1ZY01dG2d1zJtpuu9PRHlmtZZPEpYVvzmubnAG8A3gRMAP9L0kMR8YMlvxixHdgOUKvVlq6NXhBeVNDypNXsI/4/aXmWRYA6AqxseH4JcDShzI8j4nngeUnfAq4ElgSoImoORm+8bDn37p31CqZmZilk0cT3MLBG0mpJLwFuBnY2lfkS8C8lnSPpPOBq4GAG+x65pBVu73zoKS8qaGaWUuoaVESclHQrsBsYA+6IiAOSbqm/fltEHJT0NeB7wGng9oj4ftp950HSGJNW7ZJO4bUycPO1DUsmM0lExC5gV9O225qebwO2ZbG/POkl6DiF14ouaVYKN1/boHgmiZRaBZ3mzBGn8FoZJLUYuPnaBsUBKqVWK9y++5pVTuG10mnVYuDmaxsETxabkle4tSpZMTnBbEIwcvO1DYIDVAa8wq1VxZYNa8/qgwI3X9vgOECZWdfcYmDDpIj8TtZQq9ViZmZm1IdhZi045dz6IWlvRNQ6lXMNysz64pRzGzRn8ZlZX5xyboPmAGVmfXHKuQ2aA5SZ9aVVarlTzi0rDlBm1pdWg9Sdcm5ZcZKEFYqzxvLDKec2aA5QVhjOGhuOXm4CPEjdBskBygqjVdbYB+/eDzhIZcE3AdZslK0W7oOywmiVHXYqgg/f9yg79s0O+YjKx6nj1ihpQdZhftccoFrYsW+W9dN7WL31ftZP7/HFLwfaZYf5IpoNp45bo1HfsLiJL0FSM8eWe/bzkZ0HeO74/JlqLriDeJiSJipt5Itoep6t3BqN+obFNagESXcN86eCY8fnz1Rzt/zVfrbcs39kVd8q2rRuio+9/QrG1Lwc5AJfRNNz6rg1avWdmjxvfCj7d4BK0M3dwfzpYP7U2RPtuplpMBqbW7ftPsQ7r17pi+iALN4EeLFNg4UblvGxpTeE//j/Tg7lZjyTACXpBkmHJB2WtLVNuV+UdErSO7LY76CkuRN3M1O2kjpp7907y2+8YcoX0QHZtG6Kb2+9jien38q3t17nv2uFbVo3xUtfsrQnaP50DOVmPHUflKQx4JPA9cAR4GFJOyPisYRyfwbsTrvPQevU19GOm5my1aqT9sHH5/j21utGdFRm1fHc8fnE7cO4Gc+iBnUVcDginoiIE8BdwMaEcr8H3As8m8E+B6q5mePC88YZX3Z2NXd8mZZUfd3MlL1Rd9KaVd0o51zMIotvCni64fkR4OrGApKmgF8HrgN+sd2bSdoMbAZYtWpVBofXn+YR8kmD1cBZfIPmrDKz0UpqURrWzXgWASoppap5md6/AD4UEafUIgPrzC9GbAe2w8KKuhkcX9+6GUHtgDRYo/xymNlo51zMIkAdAVY2PL8EONpUpgbcVQ9OFwE3SjoZETsy2P9AeMqX0Vu8QTg+f4oxiVMRTLmmOhKepLfaRjXnYhYB6mFgjaTVwCxwM/CuxgIRsXrxsaTPAl/Jc3CC9iOo/cUcvOYbhFMRZ2pO/vsPl2/WyqkINx2pkyQi4iRwKwvZeQeBuyPigKRbJN2S9v1HxZ3zozXqKVbsRT4X5TPqOfa6lclURxGxC9jVtO22FmXfl8U+B82d86PlG4T88Lkon6K0EHkmiRY85ctoeTnx/PC5KJ9ONx15mSzbAaoFT/kyWr5ByA+fi/Jpd9ORp+Y/RYw0k7utWq0WMzMzoz4MG5EidOJWhc9FuTQnvsDCTcfH3n4F23YfSuzemJqcyGz2Fkl7I6LWsZwDlJlZ9bS66Vi99f4lA1lhYcDrk9NvzWTf3QYorwdlZlZBrcY25SlBzH1QZmZ2Rp76HCtVg3I7ulm2/J0qn1FObdSsMn1Q7ToF/YUy613Sd0rAu69ZxZ9uumJ0B2a55z6oJkUZmGZWFEnfqQDufOgpAB58fG7kd+BWbJUJUB4NXx5uVsqHVt+dxSC12DbjufusX5VJkvBo+HLI0yDCqmv33WnuOPDcffmSl5kiOqlMgMpTZor1zxOX5seWDWsTF4Nrxa0V+VCkm7zKBChPXVQObqrNj03rpnj3NauWBKlWQcutFflQpJu8yvRBQfLANPdnFEueBhEa/OmmK6j9/CvO+g698bLl3Lt31qsg51SRbvIqFaCaeSG24vES8PmTdOPXHLR845cfF0yMc+z4/JLtebzJq3SAcup58eRpEKG1Nqolwq29Hftmef7EySXbx5cplzd5lQ5QRarq2ot88TPrz7bdh5g/tXRyhvPPPSeX36lKByj3Z5hZlbS6+f7ZC/Osn96Tu1aJTLL4JN0g6ZCkw5K2Jrz+bknfq//7G0lXZrHftJx6bmZV0urmW5DLtPPUAUrSGPBJ4C3A5cA7JV3eVOxJ4F9FxC8AfwJsT7vfLDj13MyqJOmmXOR3YHUWTXxXAYcj4gkASXcBG4HHFgtExN80lH8IuCSD/WbCqedmVhVJSUZJ3RyQj774LALUFPB0w/MjwNVtyv828NUM9jsQTj03szJrvilfP70nt33xWfRBJQ0cT1zDQ9IbWQhQH2r5ZtJmSTOSZubm5lIdWD/zTRVplLWZWVp57ovPogZ1BFjZ8PwS4GhzIUm/ANwOvCUiftLqzSJiO/U+qlqt1vdiVf3WhJx6bmZVkuexhVkEqIeBNZJWA7PAzcC7GgtIWgXcB/xWRPwgg3121O8gXKeem1nV5HVsYeomvog4CdwK7AYOAndHxAFJt0i6pV7sj4CfAz4l6RFJ2SyT20a/NaE8V3fNzKokk4G6EbEL2NW07baGx78D/E4W++pWvzWhPFd37UWtMi2dgWlWHorou5tn4Gq1WszM9FfZau6DgoWakMc5FV+rc/sbb5hKnEXb59wsXyTtjYhap3KlXQ/Kg3DLq1X/4he/87QzMM1KpNRz8eW148/SadWPeKpFa4AzMM2KqbQ1KCuvVv2IY0pey9UZmGbF5ABlhdMq0/KdV690BqZZiZS6ic/KqV2mpVdyNSuP0mbxmdloONXfOuk2i881KDPLjCdbtiy5D8rMMuPJli1LDlBmlokd+2ZzvbaQFY8DlJmltti014pT/a0fDlBmllpS094ip/pbvxygzCy1dk14nmLM+uUsPjNLrdXqAVOTE10FJ6emWxLXoMwstTTrqC32X80eO07wYmr6jn2zAzpaKwoHKDNLLc3qAU5Nt1bcxGdmmeh39YB+V7+28nMNysxGqlUKulPTrbI1KHfKmuXDlg1rE1dIdmp6Z2W/jmUSoCTdAHwcGANuj4jpptdVf/1G4AXgfRHx3Sz23Q/PF2aWH+1mp7fW0lzHihLYUgcoSWPAJ4HrgSPAw5J2RsRjDcXeAqyp/7sa+HT950i065TN40my3jV/Ad942XIefHwu91/IqvLq173r9zpWpBv0LPqgrgIOR8QTEXECuAvY2FRmI/D5WPAQMCnp4gz23ZdWna+zx46zfnqP01sLLilt+QsPPeU0ZiuVfpNLipQ1mUWAmgKebnh+pL6t1zIASNosaUbSzNzcXAaHt1S7zldfvIqv3bQ7i/L6hTTrVr/JJUXKmswiQClhW/MqiN2UWdgYsT0iahFRW758eeqDS5I0qLCRL17F1u0XLY9fSLNu9Ts4ukhZk1kEqCPAyobnlwBH+ygzNI2DClvxxau4uv2i5fELadatfgdHp5n1Y9iyyOJ7GFgjaTUwC9wMvKupzE7gVkl3sZAc8VxEPJPBvvu22Cm7fnpP4hxivngVV1LacrO8fiHNepGUXNIpQ69IWZOpA1REnJR0K7CbhTTzOyLigKRb6q/fBuxiIcX8MAtp5u9Pu9+seAxG+SR9AZ3FZ1XQbYZeUbImFZHYFZQLtVotZmZmBr6foowJMDNrp1WL0NTkBN/eet0IjiiZpL0RUetUrrIzSTQqyt2EmVk7RcrQ64bn4jMzK4kiZeh1wwHKSmHHvlnWT+9h9db7PdjaKqtIGXrdcBOfFV6Rpm4xG6QiZeh1wwHKCs9zK5q9qEx96m7is8IrW8ewmS1wDcoKb8XkRKaDrT3swCwfXIOywsuyYzhpJnRPHmw2Gg5QVnj9zkmWpEhLEZiVnZv4rBSy6hh2f5ZZfrgGZdagbAMdzYrMAcqsQdkGOpoVmZv4zBqUbaCjWZE5QJk1KdNARyuPKg5/cIAya1DFi4DlX1Wn83IflFmdx0BZXlV1+IMDlFldVS8Cln9VHf7gJj6zum4uAm4CtFHIejqvonANyqyu0xioHftm2XLP/rOaALfcs99NgDZwVR3+kCpASXqFpK9L+mH954UJZVZKelDSQUkHJH0gzT7NBqXTReCjXz7A/Kk46/X5U8FHv3xgaMdo1dTvdF5FX8gzbQ1qK/BARKwBHqg/b3YS+GBEvAa4BvhdSZen3K9Z5jpdBH72wnzi77XabjZKZUj6SdsHtRG4tv74c8A3gQ81FoiIZ4Bn6o//QdJBYAp4LOW+zTLnMVCWR/2kmZdhIc+0NahX1QPQYiB6ZbvCki4F1gHfaVNms6QZSTNzc3MpD88sO5MT4z1tN8tKPxmmZcj86xigJH1D0vcT/m3sZUeSzgfuBX4/Iv6+VbmI2B4RtYioLV++vJddmA3UR972WsaX6axt48vER9722hEdkVVFP8GmDBMfd2zii4g3t3pN0o8kXRwRz0i6GHi2RblxFoLTnRFxX99HazZCnqfPhqlxSMMyiVMRS8q0CzZbNqw9q1kQipf5l7YPaifwXmC6/vNLzQUkCfgMcDAi/jzl/sxGyn1UNgzNfU5JwalTsCnDDZUi4YN3/cvSzwF3A6uAp4CbIuKnklYAt0fEjZL+BfA/gEeB0/Vf/YOI2NXp/Wu1WszMzPR9fGbD4gG8lqX103sSB+aOSZyOKPz/MUl7I6LWqVyqGlRE/AR4U8L2o8CN9cf/E1BzGbOyqOpEnjY4rfqWTkfw5PRbh3w0o+OZJMxS8hx+lrUyJDhkwQHKLKUypPNavlR1aqNmDlBmKflu17LW79RGZePZzM1SKkM6r+WPM0YdoMxSK0M6r6W3Y98sH/3ygTNzM05OjPORt73W/w9ScIAyy0Cvd7tOSy+XxaVYGme7P3Z8ni1/tR9wNme/HKDMhqAxIF0wMc7zJ06euZg5Lb34tu0+tGQpFoD501GoyVnzxkkSZgPWvOzBsePzSy5mTksvtnYZm87m7J8DlNmAJY2TSuILWXG1y9h0Nmf/HKDMBqzbwOMLWXFt2bCW8bGlE+aML5OzOVNwgDIbsG4Cj9PSi23Tuim2veNKLjzvxbXBJifG2XbTle5/SsFJEmYDljROanyZOP/cczj2wryz+ErC45ay5wBlNmAeJ2XWHwcosyHw3bVZ79wHZWZmueQalJnZgHjGkHQcoMzMyD6YeCHL9NzEZ2aV1zzbx2Iw2bFvtu/39EKW6aUKUJJeIenrkn5Y/3lhm7JjkvZJ+kqafZqZZW0QwcQLWaaXtga1FXggItYAD9Sft/IB4GDK/ZlVyo59s6yf3sPqrfezfnpPV3f0/fxO1Q0imHghy/TSBqiNwOfqjz8HbEoqJOkS4K3A7Sn3Z1YZ/TQ7DaKpqgoGEUy8bHt6aQPUqyLiGYD6z1e2KPcXwL8DTqfcn1ll9NPs5H6P/gwimHjZ9vQ6ZvFJ+gbw6oSX/rCbHUj6VeDZiNgr6douym8GNgOsWrWqm12YlVI/zU7u9+jPoGb78ADtdDoGqIh4c6vXJP1I0sUR8Yyki4FnE4qtB94m6UbgXODlkr4QEb/ZYn/bge0AtVpt6QpgZiXRKa15xeQEswmBpdPSDr3+ThEMYzyRV0XOn7RNfDuB99Yfvxf4UnOBiPhwRFwSEZcCNwN7WgUns6ropq+on2anMvZ75LFfLY/HVEZpA9Q0cL2kHwLX158jaYWkXWkPzqysuukr6qcPo4z9HnnsV8vjMZVRqpkkIuInwJsSth8FbkzY/k3gm2n2aVYG3fYV9dOHUbZ+jzz2q+XxmMrIM0mYjYDHyHQvj3+rPB5TGTlAmY1AGfuKBiWPf6s8HlMZebJYsxFIk9acVfZYUbLQ8rjgYx6PqYwUkd9M7lqtFjMzM6M+DLPcaJ4hGxbu3HtNhEh6Hy9Db8MiaW9E1DqVcw3KrEDaZY/1EkyS3mf+dPCzF+aB/C4NUZRan2XDfVBmBZJV9lg35fOWNu2xR9XjAGVWIFllj3VbPm3adJYzq3vsUfU4QJkVSFbZY0nvkyRN2nTWNR6PPaoe90GZFUhW2WPN73PBxDjPnzjJ/KkXk6bSpE3v2DfLB+/ez6mmJKx++ssWtZpncPK88cT9u6+q+JzFZ2ZAtunrzRmCjQQ8Of3Wvt53yz37zwqisJB9uO2mK88ca1aZjjY4zuIzs55kNUVSUl9Ro36bDTetm+IjOw9w7Pj8WdvnT8dZtbKsMh1t9NwHZWZ9aZUA0a5PKO1sC881BadFjftstf/ZY8dTJ2rYcLkGZWY9a25Gaxw31aqvaExK3czWzXpXrco0H6drU/nnGpSZ9axdM1qrTMP/+K+vTB0Uusli7JSh6NT04nANysx61i7le5Dz1HXz3o1lWtWknJpeDA5QZtazTk1tg1yTqpv3XiyzfnpPxyZByy838ZlZz4qy3ERRjtOSuQZlZj0rynITRTlOS+aBumZmNlTdDtRN1cQn6RWSvi7ph/WfF7YoNynpHkmPSzoo6ZfS7NfMzMovbR/UVuCBiFgDPFB/nuTjwNci4jLgSuBgyv2amVnJpQ1QG4HP1R9/DtjUXEDSy4FfBj4DEBEnIuJYyv2amVnJpQ1Qr4qIZwDqP1+ZUOafAnPAf5W0T9Ltkl7a6g0lbZY0I2lmbm4u5eGZmVlRdQxQkr4h6fsJ/zZ2uY9zgNcDn46IdcDztG4KJCK2R0QtImrLly/vchdmZlY2HdPMI+LNrV6T9CNJF0fEM5IuBp5NKHYEOBIR36k/v4c2AcrMzAzSN/HtBN5bf/xe4EvNBSLi/wJPS1ocGfcm4LGU+zUzs5JLG6Cmgesl/RC4vv4cSSsk7Woo93vAnZK+B7wO+Pcp92tmZiWX64G6kuaAvxvQ218E/HhA7z1q/mzF5M9WXGX+fIP4bD8fER2TDHIdoAZJ0kw3I5mLyJ+tmPzZiqvMn2+Un82TxZqZWS45QJmZWS5VOUBtH/UBDJA/WzH5sxVXmT/fyD5bZfugzMws36pcgzIzsxxzgDIzs1yqTICSdJOkA5JOS2qZMinpBkmHJB2WVIgpmXpYl+tvJT0q6RFJuV4JstN50IL/XH/9e5JeP4rj7EcXn+1aSc/Vz9Mjkv5oFMfZD0l3SHpW0vdbvF7k89bpsxXyvElaKenB+lp9ByR9IKHMaM5bRFTiH/AaYC3wTaDWoswY8H9YmIH9JcB+4PJRH3sXn+0/AFvrj7cCf9ai3N8CF436eLv4PB3PA3Aj8FVAwDXAd0Z93Bl+tmuBr4z6WPv8fL/MwuTQ32/xeiHPW5efrZDnDbgYeH398cuAH+Tl+1aZGlREHIyIQx2KXQUcjognIuIEcBcLa17lXcd1uQqmm/OwEfh8LHgImKxPWJx3Rf0/1pWI+Bbw0zZFinreuvlshRQRz0TEd+uP/4GFBWWnmoqN5LxVJkB1aQp4uuH5EZaeqDzqZl0ugAD+m6S9kjYP7eh61815KOq56va4f0nSfklflfTa4RzaUBT1vHWr0OdN0qXAOuA7TS+N5Lx1XG6jSCR9A3h1wkt/GBFLZlpPeouEbbnIw2/32Xp4m/URcVTSK4GvS3q8fleYN92ch9yeqw66Oe7vsjBX2T9KuhHYAawZ+JENR1HPWzcKfd4knQ/cC/x+RPx988sJvzLw81aqABVt1q7q0hFgZcPzS4CjKd8zE+0+W5frchERR+s/n5X01yw0N+UxQHVzHnJ7rjroeNyNF4eI2CXpU5IuiogyTEZa1PPWUZHPm6RxFoLTnRFxX0KRkZw3N/Gd7WFgjaTVkl4C3MzCmld513FdLkl3BktoAAABG0lEQVQvlfSyxcfArwCJ2Ug50M152Am8p55ddA3w3GIzZ851/GySXi1J9cdXsfA9/cnQj3QwinreOirqeasf82eAgxHx5y2KjeS8laoG1Y6kXwf+C7AcuF/SIxGxQdIK4PaIuDEiTkq6FdjNQrbVHRFxYISH3a1p4G5Jvw08BdwEC+tyUf9swKuAv65/f84B/jIivjai422r1XmQdEv99duAXSxkFh0GXgDeP6rj7UWXn+0dwL+VdBI4Dtwc9VSqvJP0RRay2S6SdAT4Y2Acin3eoKvPVtTzth74LeBRSY/Ut/0BsApGe9481ZGZmeWSm/jMzCyXHKDMzCyXHKDMzCyXHKDMzCyXHKDMzCyXHKDMzCyXHKDMzCyX/j9o/mmu73//HgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[:, 0], X[:, 1])\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## K Means and Agglomerative Clustering\n", + "\n", + "There exist several algorithms for partitioning data into partitions, two of the more common of which are called K Means and Agglomerative Clustering.\n", + "\n", + "The K Means algorithm approaches the clustering problem by partitioning a set of data points into disjoint clusters, where each cluster is described by the mean of the samples in the cluster. The mean of the samples in a particular cluster is called a centroid; the K Means algorithm finds the centroids and associates data points with centroids in such a way as to minimize the within-cluster sum-of-squares.\n", + "\n", + "For more information on the K Means algorithm and its implementatin in scikit-learn, check out this resource: http://scikit-learn.org/stable/modules/clustering.html#k-means\n", + "\n", + "In the code cell below, we instantiate the `KMeans` algorithm from the `sklearn.cluster` module and apply it to our data using the `fit_predict` method. We see that `KMeans` identifies two centroids; one located at about (-0.23, 0.56) and the other located at (1.17, -0.05)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1.17408322 -0.05027964]\n", + " [-0.23011109 0.56790752]]\n" + ] + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "\n", + "km = KMeans(n_clusters=2, random_state=0)\n", + "y_km = km.fit_predict(X)\n", + "print(km.cluster_centers_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Agglomerative Clustering algorithm behaves a little bit differently and does not identify clusters using centroids. Instead, it recursively merges the pair of clusters that minimally increases a given linkage distance. Put another way, the Agglomerative Clustering algorithm identifies the two data points that are \"closest\" out of all the data samples. It then takes those two data points and identifies a third data point that is \"closest\" to those two data points. The algorithm continues in this fashion for each data point; finding the next data point that is \"closest\" to the preceeding cluster of data points, where the definition of \"closest\" depends on the distance metric chosen.\n", + "\n", + "For more information on the Agglomerative Clustering algorithm and its implementatin in scikit-learn, check out this resource: http://scikit-learn.org/stable/modules/clustering.html#hierarchical-clustering\n", + "\n", + "Below, we instantiate the `AgglomerativeClustering` algorithm from the `sklearn.cluster` module and apply it to our data." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import AgglomerativeClustering\n", + "\n", + "ac = AgglomerativeClustering(n_clusters=2,\n", + " affinity='euclidean',\n", + " linkage='complete')\n", + "y_ac = ac.fit_predict(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can visualize the results of both algorithms applied to the data. Visually, we see that neither algorithm ideally clusters our data. The ideal algorithm for this unique set of data would recognize that both sets of samples are generated from two different equations describing two different half circles." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))\n", + "\n", + "\n", + "ax1.scatter(X[y_km == 0, 0], X[y_km == 0, 1],\n", + " edgecolor='black',\n", + " c='lightblue', marker='o', s=40, label='cluster 1')\n", + "ax1.scatter(X[y_km == 1, 0], X[y_km == 1, 1],\n", + " edgecolor='black',\n", + " c='red', marker='s', s=40, label='cluster 2')\n", + "ax1.set_title('K Means Clustering')\n", + "\n", + "\n", + "ax2.scatter(X[y_ac == 0, 0], X[y_ac == 0, 1], c='lightblue',\n", + " edgecolor='black',\n", + " marker='o', s=40, label='cluster 1')\n", + "ax2.scatter(X[y_ac == 1, 0], X[y_ac == 1, 1], c='red',\n", + " edgecolor='black',\n", + " marker='s', s=40, label='cluster 2')\n", + "ax2.set_title('Agglomerative Clustering')\n", + "\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clustering using DBSCAN\n", + "\n", + "Unlike K Means or Agglomerative Clustering, DBSCAN is a density-based approach to spatial clustering. It views clusters as areas of high density separated by areas of low density. This approach has several advantages; whereas K Means focuses on finding centroids and assoicating data points with that centroid in a spherical manner, the DBSCAN algorithm can identify clusters of any convex shape. Additionally, DBSCAN is robust to areas of low density. In the above visualization, we see that Agglomerative Clustering ignores the low density space space between the interleaving circles and instead focuses on finding a clustering hierarchy that minimizes the Euclidean distance. While minimizing Euclidean distance is important for some clustering problems, it is visually apparent to a human that following the density trail of points results in the ideal clustering. \n", + "\n", + "For more information on the DBSCAN algorithm and its implementation in scikit-learn, check out this resource: http://scikit-learn.org/stable/modules/clustering.html#dbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import DBSCAN\n", + "\n", + "db = DBSCAN(eps=0.2, min_samples=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's fit our model to the data and generate predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "y_db = db.fit_predict(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, let's visualize the model applied to our data. We see that the DBSCAN algorithm correctly identifies which half-circle each data point is generated from." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[y_db == 0, 0], X[y_db == 0, 1],\n", + " c='lightblue', marker='o', s=40,\n", + " edgecolor='black', \n", + " label='cluster 1')\n", + "plt.scatter(X[y_db == 1, 0], X[y_db == 1, 1],\n", + " c='red', marker='s', s=40,\n", + " edgecolor='black', \n", + " label='cluster 2')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Accelerating DBSCAN with RAPIDS\n", + "\n", + "While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For the same reasons, scientific computing and deep learning has turned to NVIDIA GPU acceleration, data analytics and machine learning where GPU acceleration is ideal. \n", + "\n", + "NVIDIA created RAPIDS – an open-source data analytics and machine learning acceleration platform that leverages GPUs to accelerate computations. RAPIDS is based on Python, has pandas-like and Scikit-Learn-like interfaces, is built on Apache Arrow in-memory data format, and can scale from 1 to multi-GPU to multi-nodes. RAPIDS integrates easily into the world’s most popular data science Python-based workflows. RAPIDS accelerates data science end-to-end – from data prep, to machine learning, to deep learning. And through Arrow, Spark users can easily move data into the RAPIDS platform for acceleration.\n", + "\n", + "So how do we use RAPIDS? First, we cast our data to a `pandas.DataFrame` and use that to create a `cudf.DataFrame`. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import cudf\n", + "\n", + "X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})\n", + "X_gpu = cudf.DataFrame.from_pandas(X_df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we load the `DBSCAN` class from the `cuml` package and instantiate it in the same way we did with the `sklearn.cluster.DBSCAN` class." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from cuml import DBSCAN as cumlDBSCAN\n", + "\n", + "db_gpu = cumlDBSCAN(eps=0.2, min_samples=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `DBSCAN` class from `cuml` implements the same API as the `sklearn` version; we can use the `fit` and `fit_predict` methods to fit our `DBSCAN` model to the data and generate predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "y_db_gpu = db_gpu.fit_predict(X_gpu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, let's visualize our results:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[y_db_gpu == 0, 0], X[y_db_gpu == 0, 1],\n", + " c='lightblue', marker='o', s=40,\n", + " edgecolor='black', \n", + " label='cluster 1')\n", + "plt.scatter(X[y_db_gpu == 1, 0], X[y_db_gpu == 1, 1],\n", + " c='red', marker='s', s=40,\n", + " edgecolor='black', \n", + " label='cluster 2')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Benchmarking: Comparing GPU and CPU\n", + "\n", + "RAPIDS uses GPUs to parallelize operations and accelerate computations. We saw porting an example from the traditional scikit-learn interface to cuML was trivial. So how much speedup do we get from using RAPIDS? \n", + "\n", + "The answer to this question varies depending on the size and shape of the data. In the below example, we generate a matrix of 10,000 rows by 128 columns and show we were able to reduce computational time from ~45 seconds to ~5 seconds - almost a 9x speedup. Feel free to change the number of rows and columns to see how this speedup might change depending on the size and shape of the data.\n", + "\n", + "As a good rule of thumb, larger datasets will benefit from RAPIDS. There is overhead associated with using a GPU; data has to be transferred from the CPU to the GPU, computations have to take place on the GPU, and the results need to be transferred back from the GPU to the CPU. However, the transactional overhead of moving data back and forth from the CPU to the GPU can quickly become negligible due to the performance speedup from computing on a GPU instead of a CPU." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(10000, 128)\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "n_rows, n_cols = 10000, 128\n", + "X = np.random.rand(n_rows, n_cols)\n", + "print(X.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})\n", + "X_gpu = cudf.DataFrame.from_pandas(X_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "db_gpu = cumlDBSCAN(eps=3, min_samples=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 181 ms, sys: 39.1 ms, total: 220 ms\n", + "Wall time: 219 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "y_db_gpu = db_gpu.fit_predict(X_gpu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CPU" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "db = DBSCAN(eps=3, min_samples=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 26.1 s, sys: 5.04 ms, total: 26.1 s\n", + "Wall time: 26.1 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "y_db = db.fit_predict(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "In conclusion, there are certain cases the DBSCAN algorithm can do a better job of clustering than traditional algorithms such as K Means or Agglomerative Clustering. Additionally, porting DBSCAN from CPU to GPU using RAPIDS is a trivial exercise and can yield massive performance gains.\n", + "\n", + "To learn more about RAPIDS, be sure to check out: \n", + "\n", + "* [Open Source Website](http://rapids.ai)\n", + "* [GitHub](https://github.com/rapidsai/)\n", + "* [Press Release](https://nvidianews.nvidia.com/news/nvidia-introduces-rapids-open-source-gpu-acceleration-platform-for-large-scale-data-analytics-and-machine-learning)\n", + "* [NVIDIA Blog](https://blogs.nvidia.com/blog/2018/10/10/rapids-data-science-open-source-community/)\n", + "* [Developer Blog](https://devblogs.nvidia.com/gpu-accelerated-analytics-rapids/)\n", + "* [NVIDIA Data Science Webpage](https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Disclaimer: The above examples borrowed code snippets from *Python Machine Learning, 2nd Ed.* by Sebastian Raschka and Vahid Mirjalili. For a great deep dive into these concepts, the curious reader is strongly encouraged to explore that fantastic resource." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/README.md b/the_archive/archived_rapids_demos/cuml/README.md new file mode 100644 index 00000000..3372103c --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/README.md @@ -0,0 +1,38 @@ +# cuML Notebooks +## Intro +These notebooks provide examples of how to use cuML. These notebooks are designed to be self-contained with the `runtime` version of the [RAPIDS Docker Container](https://hub.docker.com/r/rapidsai/rapidsai/) and [RAPIDS Nightly Docker Containers](https://hub.docker.com/r/rapidsai/rapidsai-nightly) and can run on air-gapped systems. You can quickly get this container using the install guide from the [RAPIDS.ai Getting Started page](https://rapids.ai/start.html#get-rapids) + +## Notebooks +Notebook Title | Status | Description +--- | --- | --- +[ARIMA Demo](arima_demo.ipynb) | Working | +[Coordinate Descent Demo](coordinate_descent_demo.ipynb) | Working | +[DBSCAN Demo - Full](DBSCAN_Demo_Full.ipynb) | Working | +[DBSCAN Demo](dbscan_demo.ipynb) | Working | +[Forest Inference Demo](forest_inference_demo.ipynb) | Working | +[Holtwinters Demo - Full](holtwinters_demo_full.ipynb) | Working | +[Holtwinters Demo](holtwinters_demo.ipynb) | Working | +[KMeans Demo](kmeans_demo.ipynb) | Working | +[KMeans Multi-Node Multi-GPU Demo](kmeans_mnmg_demo.ipynb) | Working | +[KNeighbors Classifier Demo](kneighbors_classifier_demo.ipynb) | Working | +[KNeighbors Regressor Demo](kneighbors_regressor_demo.ipynb) | Working | +[Linear Regression Demo](linear_regression_demo.ipynb) | Working | +[Metrics Demo](metrics_demo.ipynb) | Working | +[Mini Batch SGD Demo](mini_batch_sgd_demo.ipynb) | Working | +[Nearest Neighbors Demo](nearest_neighbors_demo.ipynb) | Working | +[PCA Demo](pca_demo.ipynb) | Working | +[PCA Multi-Node Multi-GPU Demo](pca_mnmg_demo.ipynb) | Working | +[Random Forest Demo](random_forest_demo.ipynb) | Working | +[Random Forest Multi-Node Multi-GPU Demo](random_forest_mnmg_demo.ipynb) | Working | +[Ridge Regression Demo](ridge_regression_demo.ipynb) | Working | +[SGD Demo](sgd_demo.ipynb) | Working | +[SVM Demo](svm_demo.ipynb) | Working | +[TSNE Demo](tsne_demo.ipynb) | Working | +[TSVD Demo](tsvd_demo.ipynb) | Working | +[TSVD Multi-Node Multi-GPU Demo](tsvd_mnmg_demo.ipynb) | Working | +[UMAP Demo - Graphed](umap_demo_graphed.ipynb) | Working | +[UMAP Demo](umap_demo.ipynb) | Working | +[UMAP Supervised Demo](umap_supervised_demo.ipynb) | Working | + +## RAPIDS notebooks +Visit the main RAPIDS [notebooks](https://github.com/rapidsai/notebooks) repo for a listing of all notebooks across all RAPIDS libraries. diff --git a/the_archive/archived_rapids_demos/cuml/arima_demo.ipynb b/the_archive/archived_rapids_demos/cuml/arima_demo.ipynb new file mode 100644 index 00000000..7a8a6a6f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/arima_demo.ipynb @@ -0,0 +1,360 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ARIMA\n", + "\n", + "An [AutoRegressive Integrated Moving Average](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average) model is a popular model used in time series analysis to understand the data or forecast future points.\n", + "\n", + "This implementation can fit a model to each time series in a batch and perform in-sample predictions and out-of-sample forecasts. It is designed to give the best performance when working on a large batch of time series.\n", + "\n", + "Useful links:\n", + "\n", + "- cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "- cuML's ARIMA API docs: https://rapidsai.github.io/projects/cuml/en/stable/api.html#arima\n", + "- a good introduction to ARIMA: https://otexts.com/fpp2/arima.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "from cuml.tsa.arima import ARIMA\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading util\n", + "\n", + "The data for this demo is stored in a simple CSV format:\n", + "- the data series are stored in columns\n", + "- the first column contains the date of the data points\n", + "- the first row contains the name of each variable\n", + "\n", + "For example, let's check the *population estimate* dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!cat data/time_series/population_estimate.csv | head" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a helper function to load a dataset with a given name and return a GPU dataframe. We discard the date, and limit the batch size for convenience." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def load_dataset(name, max_batch=4):\n", + " import os\n", + " pdf = pd.read_csv(os.path.join(\"data\", \"time_series\", \"%s.csv\" % name))\n", + " return cudf.from_pandas(pdf[pdf.columns[1:max_batch+1]].astype(np.float64))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualization util\n", + "\n", + "We define a helper function that displays the data, and optionally a prediction starting from a given index. Each time series is plot separately for better readability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def visualize(y, pred=None, pred_start=None):\n", + " n_obs, batch_size = y.shape\n", + "\n", + " # Create the subplots\n", + " c = min(batch_size, 2)\n", + " r = (batch_size + c - 1) // c\n", + " fig, ax = plt.subplots(r, c, squeeze=False)\n", + " ax = ax.flatten()\n", + " \n", + " # Range for the prediction\n", + " if pred is not None:\n", + " pred_start = pred_start or n_obs\n", + " pred_end = pred_start + pred.shape[0]\n", + " \n", + " # Plot the data\n", + " for i in range(batch_size):\n", + " title = y.columns[i]\n", + " ax[i].plot(np.r_[:n_obs], y[title].to_array())\n", + " if pred is not None:\n", + " ax[i].plot(np.r_[pred_start:pred_end], pred[:, i],\n", + " linestyle=\"--\")\n", + " ax[i].title.set_text(title)\n", + " for i in range(batch_size, r*c):\n", + " fig.delaxes(ax[i])\n", + " fig.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-seasonal ARIMA models\n", + "\n", + "A basic `ARIMA(p,d,q)` model is made of three components:\n", + " - An **Integrated** (I) component: the series is differenced `d` times until it is stationary\n", + " - An **AutoRegressive** (AR) component: the variable is regressed on its `p` past values\n", + " - A **Moving Average** (MA) component: the variable is regressed on `q` past error terms\n", + "\n", + "The model can also incorporate an optional constant term (called *intercept*).\n", + "\n", + "### A simple MA(2) example\n", + "\n", + "We start with a simple Moving Average model. Let's first load and visualize the *migrations in Auckland by age* dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_mig = load_dataset(\"net_migrations_auckland_by_age\", 4)\n", + "visualize(df_mig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to fit the model with `q`=2 and with an intercept.\n", + "The `ARIMA` class accepts cuDF dataframes or array-like types as input (host or device), e.g numpy arrays. Here we already have a dataframe so we can simply pass it to the `ARIMA` constructor with the model parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_mig = ARIMA(df_mig, (0,0,2), fit_intercept=True)\n", + "model_mig.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now forecast and visualize the results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fc_mig = model_mig.forecast(10)\n", + "visualize(df_mig, fc_mig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Note:* the returned array is a device array. You can convert it to a numpy array with the `copy_to_host` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(type(fc_mig))\n", + "print(type(fc_mig.copy_to_host()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to get the parameters that were fitted to the model, we use the `get_params` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "param_mig = model_mig.get_params()\n", + "print(param_mig.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The parameters are organized in 2D arrays: one row represents one parameter and the columns are different batch members." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the ma.L1 and ma.L2 parameters for each of 4 batch members\n", + "print(param_mig[\"ma\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also get the log-likelihood of the parameters w.r.t to the series, and evaluate various information criteria:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"log-likelihood:\\n\", model_mig.llf)\n", + "print(\"\\nAkaike Information Criterion (AIC):\\n\", model_mig.aic)\n", + "print(\"\\nCorrected Akaike Information Criterion (AICc):\\n\", model_mig.aicc)\n", + "print(\"\\nBayesian Information Criterion (BIC):\\n\", model_mig.bic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### An ARIMA(1,2,1) example\n", + "\n", + "Let's now load the *population estimate* dataset. For this dataset a first difference is not enough to make the data stationary because of the quadratic trend, so we decide to go with `d`=2.\n", + "\n", + "This time we won't simply forecast but also predict in-sample:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_pop = load_dataset(\"population_estimate\")\n", + "\n", + "# Fit an ARIMA(1,2,1) model\n", + "model_pop = ARIMA(df_pop, (1,2,1), fit_intercept=True)\n", + "model_pop.fit()\n", + "\n", + "# Predict in-sample and forecast out-of-sample\n", + "fc_pop = model_pop.predict(80, 160)\n", + "visualize(df_pop, fc_pop, 80)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Seasonal ARIMA models\n", + "\n", + "[Seasonal ARIMA models](https://otexts.com/fpp2/seasonal-arima.html) are expressed in the form `ARIMA(p,d,q)(P,D,Q)s` and have additional seasonal components that we denote SAR and SMA.\n", + "\n", + "We can also choose to apply a first or second seasonal difference, or combine a non-seasonal and a seasonal difference (note: `p+P <= 2` is required).\n", + "\n", + "### An ARIMA(1,1,1)(1,1,1)12 example\n", + "\n", + "We load the *guest nights by region* dataset. This dataset shows a strong seasonal component with a period of 12 (annual cycle, monthly data), and also a non-seasonal trend. A good choice is to go with `d`=1, `D`=1 and `s`=12.\n", + "\n", + "We create the model with seasonal parameters, and forecast:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_guests = load_dataset(\"guest_nights_by_region\", 4)\n", + "\n", + "# Create and fit an ARIMA(1,1,1)(1,1,1)12 model:\n", + "model_guests = ARIMA(df_guests, (1,1,1), (1,1,1,12), fit_intercept=False)\n", + "model_guests.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Forecast\n", + "fc_guests = model_guests.forecast(40)\n", + "\n", + "# Visualize after the time step 200\n", + "visualize(df_guests[200:], fc_guests)" + ] + } + ], + "metadata": { + "file_extension": ".py", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "mimetype": "text/x-python", + "name": "python", + "npconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/coordinate_descent_demo.ipynb b/the_archive/archived_rapids_demos/cuml/coordinate_descent_demo.ipynb new file mode 100644 index 00000000..aab9760f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/coordinate_descent_demo.ipynb @@ -0,0 +1,359 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Coordinate descent\n", + "\n", + "CuML's `lasso` and `elastic net` implementations are both able to use the coordinate descent solver. Lasso extends linear regression by providing L1 regularization and elastic net extends linear regression by providing a combination of L1 and L2 regularizers.\n", + "\n", + "A tremendous speed up can be demonstrated for datasets with a large number of rows and fewer columns. Furthermore, the mean squared error (MSE) value for cuML's implementation is much smaller than the Scikit-learn implementation on very small datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames. \n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable/).\n", + "\n", + "For information about cuML's lasso implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.Lasso.\n", + "\n", + "For information about cuML's elastic net implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.ElasticNet." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import numpy as np\n", + "from cuml import make_regression, train_test_split\n", + "from cuml.linear_model import ElasticNet as cuElasticNet, Lasso as cuLasso\n", + "from cuml.metrics.regression import r2_score\n", + "from sklearn.linear_model import ElasticNet as skElasticNet, Lasso as skLasso" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**17\n", + "n_features = 500\n", + "\n", + "learning_rate = 0.001\n", + "algorithm = \"cyclic\"\n", + "random_state=23" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X, y = make_regression(n_samples=n_samples, n_features=n_features, random_state=random_state)\n", + "\n", + "X = cudf.DataFrame.from_gpu_matrix(X)\n", + "y = cudf.DataFrame.from_gpu_matrix(y)[0]\n", + "\n", + "X_cudf, X_cudf_test, y_cudf, y_cudf_test = train_test_split(X, y, test_size = 0.2, random_state=random_state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "X_train = X_cudf.to_pandas()\n", + "X_test = X_cudf_test.to_pandas()\n", + "y_train = y_cudf.to_pandas()\n", + "y_test = y_cudf_test.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lasso" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scikit-learn Model\n", + "\n", + "#### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "ols_sk = skLasso(alpha=np.array([learning_rate]),\n", + " fit_intercept = True,\n", + " normalize = False,\n", + " max_iter = 1000,\n", + " selection=algorithm,\n", + " tol=1e-10)\n", + "\n", + "ols_sk.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_sk = ols_sk.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_sk = r2_score(y_cudf_test, predict_sk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### cuML Model\n", + "\n", + "#### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "ols_cuml = cuLasso(alpha=np.array([learning_rate]),\n", + " fit_intercept = True,\n", + " normalize = False,\n", + " max_iter = 1000,\n", + " selection=algorithm,\n", + " tol=1e-10)\n", + "\n", + "ols_cuml.fit(X_cudf, y_cudf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_cuml = ols_cuml.predict(X_cudf_test).to_array()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_cuml = r2_score(y_cudf_test, predict_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "print(\"R^2 score (SKL): %s\" % r2_score_sk)\n", + "print(\"R^2 score (cuML): %s\" % r2_score_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elastic Net\n", + "\n", + "The elastic net model implemented in cuml contains the same parameters as the lasso model.\n", + "In addition to the variable values that can be altered in lasso, elastic net has another variable who's value can be changed: `l1_ratio` decides the ratio of amount of L1 and L2 regularization that would be applied to the model. When `l1_ratio = 0`, the model will have only L2 reqularization shall be applied to the model. (default = 0.5)\n", + "\n", + "### Scikit-learn Model\n", + "\n", + "#### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "elastic_sk = skElasticNet(alpha=np.array([learning_rate]),\n", + " fit_intercept = True,\n", + " normalize = False,\n", + " max_iter = 1000,\n", + " selection=algorithm,\n", + " tol=1e-10)\n", + "\n", + "elastic_sk.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_elas_sk = elastic_sk.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_elas_sk = r2_score(y_cudf_test, predict_elas_sk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### cuML Model\n", + "\n", + "#### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "elastic_cuml = cuElasticNet(alpha=np.array([learning_rate]), \n", + " fit_intercept = True,\n", + " normalize = False,\n", + " max_iter = 1000,\n", + " selection=algorithm,\n", + " tol=1e-10)\n", + "\n", + "elastic_cuml.fit(X_cudf, y_cudf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_elas_cuml = elastic_cuml.predict(X_cudf_test).to_array()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_elas_cuml = r2_score(y_cudf_test, predict_elas_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"R^2 score (SKL): %s\" % r2_score_elas_sk)\n", + "print(\"R^2 score (cuML): %s\" % r2_score_elas_cuml)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-images-idx3-ubyte.gz b/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-images-idx3-ubyte.gz new file mode 100644 index 00000000..667844f1 Binary files /dev/null and b/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-images-idx3-ubyte.gz differ diff --git a/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-labels-idx1-ubyte.gz b/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-labels-idx1-ubyte.gz new file mode 100644 index 00000000..abdddb89 Binary files /dev/null and b/the_archive/archived_rapids_demos/cuml/data/fashion/t10k-labels-idx1-ubyte.gz differ diff --git a/the_archive/archived_rapids_demos/cuml/data/fashion/train-images-idx3-ubyte.gz b/the_archive/archived_rapids_demos/cuml/data/fashion/train-images-idx3-ubyte.gz new file mode 100644 index 00000000..e6ee0e37 Binary files /dev/null and b/the_archive/archived_rapids_demos/cuml/data/fashion/train-images-idx3-ubyte.gz differ diff --git a/the_archive/archived_rapids_demos/cuml/data/fashion/train-labels-idx1-ubyte.gz b/the_archive/archived_rapids_demos/cuml/data/fashion/train-labels-idx1-ubyte.gz new file mode 100644 index 00000000..9c4aae27 Binary files /dev/null and b/the_archive/archived_rapids_demos/cuml/data/fashion/train-labels-idx1-ubyte.gz differ diff --git a/the_archive/archived_rapids_demos/cuml/data/mortgage.npy.gz b/the_archive/archived_rapids_demos/cuml/data/mortgage.npy.gz new file mode 100644 index 00000000..10045fb6 Binary files /dev/null and b/the_archive/archived_rapids_demos/cuml/data/mortgage.npy.gz differ diff --git a/the_archive/archived_rapids_demos/cuml/data/time_series/README.md b/the_archive/archived_rapids_demos/cuml/data/time_series/README.md new file mode 100644 index 00000000..9e85f3e4 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/data/time_series/README.md @@ -0,0 +1,13 @@ +# Time Series datasets + +This folder contains various datasets to demonstrate our time series models. + +**Disclaimer:** the data has been filtered and organized in a way that makes it suitable to test times series models. If you wish to use this data for other purposes, please take the data from its source. + +## From Statistics New Zealand + +**Source:** [Stats NZ](http://archive.stats.govt.nz/infoshare/) and licensed by Stats NZ for re-use under the Creative Commons Attribution 4.0 International licence. + +- `guest_nights_by_region.csv`: Guest nights (thousands) in 12 regions, monthly 1996-2019. +- `net_migrations_auckland_by_age.csv`: Net migrations in Auckland by age range (from 0 to 49) per year, 1991-2010. +- `population_estimate.csv`: Population estimates (thousands) per year, 1875-2011. diff --git a/the_archive/archived_rapids_demos/cuml/data/time_series/guest_nights_by_region.csv b/the_archive/archived_rapids_demos/cuml/data/time_series/guest_nights_by_region.csv new file mode 100644 index 00000000..ad02b018 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/data/time_series/guest_nights_by_region.csv @@ -0,0 +1,280 @@ +,Northland,Auckland,Waikato,Bay of Plenty,"Hawke's Bay, Gisborne","Taranaki, Manawatu, Wanganui",Wellington,"Nelson, Marlborough, Tasman",Canterbury,West Coast,Otago,Southland +1996M07,66,257,124,159,49,93,111,52,209,27,175,21 +1996M08,58,266,111,138,45,89,105,54,210,28,211,23 +1996M09,79,264,140,174,62,115,113,79,256,45,214,31 +1996M10,96,280,147,177,61,111,119,79,256,57,194,41 +1996M11,104,334,159,199,66,112,132,100,324,64,212,54 +1996M12,185,337,219,257,87,111,123,171,364,70,262,66 +1997M01,279,386,343,419,145,151,142,279,440,96,360,76 +1997M02,158,362,205,238,91,122,144,165,363,83,286,78 +1997M03,147,377,225,251,90,129,145,150,348,81,282,73 +1997M04,108,302,151,198,73,104,119,105,278,57,213,45 +1997M05,73,257,112,142,50,87,104,68,192,32,138,29 +1997M06,55,224,102,119,45,71,92,56,159,23,112,19 +1997M07,70,259,137,164,50,101,102,63,213,27,177,24 +1997M08,62,266,113,134,48,100,95,63,202,26,215,22 +1997M09,70,239,121,149,52,106,103,67,211,38,182,27 +1997M10,102,292,172,210,74,132,127,87,288,55,199,46 +1997M11,105,303,152,188,64,108,125,101,300,60,208,54 +1997M12,218,301,249,258,91,104,115,179,358,71,244,67 +1998M01,380,340,381,429,155,147,137,303,447,92,360,85 +1998M02,158,349,219,252,92,115,142,178,367,83,259,77 +1998M03,134,339,193,205,82,112,147,147,327,73,246,62 +1998M04,130,291,193,216,83,113,135,123,301,64,246,54 +1998M05,75,255,129,148,54,85,119,74,189,36,136,34 +1998M06,53,224,108,118,39,69,98,53,145,23,104,19 +1998M07,60,267,133,170,51,83,137,66,206,30,192,22 +1998M08,58,251,115,140,46,81,115,57,201,30,223,24 +1998M09,66,253,139,160,56,94,123,72,211,42,208,31 +1998M10,99,307,170,218,77,113,146,95,292,62,206,44 +1998M11,107,330,154,191,65,97,136,109,303,70,227,57 +1998M12,187,312,250,270,90,99,134,189,344,86,271,60 +1999M01,280,367,381,452,149,138,163,328,454,116,432,87 +1999M02,145,360,205,234,88,111,146,182,358,97,294,82 +1999M03,129,379,211,208,84,115,157,158,333,85,273,79 +1999M04,119,309,187,255,81,115,153,129,317,71,244,58 +1999M05,66,266,117,150,46,76,120,69,195,35,141,32 +1999M06,62,253,136,156,51,84,127,67,190,34,126,25 +1999M07,61,302,140,176,54,88,134,62,216,33,225,25 +1999M08,59,281,119,146,50,98,114,62,219,29,249,24 +1999M09,81,326,158,195,62,130,142,85,279,50,256,32 +1999M10,99,335,178,205,70,103,138,94,302,58,216,44 +1999M11,110,396,170,209,72,96,144,120,338,76,254,60 +1999M12,176,368,251,282,94,102,144,181,340,84,282,60 +2000M01,283,459,405,469,157,151,173,316,430,118,404,82 +2000M02,149,436,241,251,95,114,159,192,383,109,333,86 +2000M03,138,393,220,230,89,116,180,166,362,98,292,74 +2000M04,136,355,223,246,92,112,162,145,357,89,302,65 +2000M05,67,291,124,146,48,81,111,75,216,39,163,35 +2000M06,56,281,134,145,49,80,110,67,194,32,141,26 +2000M07,60,317,157,183,58,106,131,77,248,43,257,28 +2000M08,58,288,135,156,50,108,138,72,227,38,286,28 +2000M09,74,284,167,174,63,119,137,86,254,49,261,37 +2000M10,102,348,192,196,77,111,146,107,314,67,240,47 +2000M11,119,400,188,201,75,106,170,124,361,89,283,69 +2000M12,190,401,291,296,107,113,163,204,408,101,348,74 +2001M01,289,483,403,499,170,152,185,342,501,138,486,93 +2001M02,152,409,235,259,108,118,177,210,412,117,360,89 +2001M03,144,433,240,259,104,116,187,180,413,115,338,87 +2001M04,124,354,203,249,95,114,158,143,358,87,296,63 +2001M05,68,317,126,153,53,84,127,79,231,51,188,42 +2001M06,59,298,140,162,54,86,130,71,210,40,155,27 +2001M07,65,340,160,197,65,112,146,82,266,46,291,32 +2001M08,63,339,142,159,53,116,132,80,278,43,322,31 +2001M09,76,335,163,184,70,126,152,96,290,57,276,39 +2001M10,101,380,196,214,80,118,153,113,332,78,257,54 +2001M11,121,411,195,203,81,109,174,135,367,91,272,69 +2001M12,210,437,280,306,118,120,174,216,427,104,361,78 +2002M01,314,521,400,490,187,159,192,329,516,133,501,98 +2002M02,167,462,251,270,115,127,194,221,443,115,370,95 +2002M03,179,507,274,301,125,153,206,208,511,121,385,98 +2002M04,124,402,209,227,87,104,161,141,350,87,302,75 +2002M05,81,364,149,174,61,91,138,83,251,51,194,45 +2002M06,64,333,150,166,59,91,134,74,222,41,172,32 +2002M07,69,370,175,201,68,119,158,77,297,51,305,36 +2002M08,68,369,154,168,61,124,137,77,277,43,317,34 +2002M09,80,367,168,187,75,133,147,99,310,58,264,42 +2002M10,104,437,199,213,82,135,170,112,367,79,251,57 +2002M11,120,505,210,222,81,115,181,140,408,101,299,80 +2002M12,204,479,287,310,120,120,168,230,447,113,363,85 +2003M01,318,543,393,462,188,165,191,340,547,147,486,104 +2003M02,171,503,279,269,116,136,204,227,482,131,390,105 +2003M03,155,510,267,245,111,149,200,201,462,131,369,99 +2003M04,148,411,252,260,111,136,176,169,379,109,322,78 +2003M05,85,356,158,167,67,101,156,93,248,57,190,45 +2003M06,64,307,142,158,59,83,142,76,214,42,159,31 +2003M07,75,370,181,210,75,131,154,81,286,53,320,39 +2003M08,70,366,157,169,65,126,142,82,269,48,301,36 +2003M09,90,367,177,205,76,140,165,93,315,63,287,47 +2003M10,110,406,195,227,89,133,172,114,375,82,260,60 +2003M11,123,472,214,227,89,113,189,139,413,106,309,83 +2003M12,214,486,285,309,142,131,182,229,482,130,397,98 +2004M01,322,556,406,502,223,181,208,331,579,165,514,111 +2004M02,177,492,273,281,135,144,214,219,513,149,399,112 +2004M03,159,515,266,265,126,146,212,197,504,141,368,103 +2004M04,142,448,242,268,110,132,182,156,433,117,341,84 +2004M05,84,382,148,176,69,98,150,88,290,60,204,43 +2004M06,77,350,165,177,65,102,145,77,256,46,203,32 +2004M07,85,387,187,215,73,158,171,84,319,53,321,37 +2004M08,71,371,159,185,65,136,145,78,293,51,324,37 +2004M09,90,380,186,216,78,154,167,98,355,77,317,47 +2004M10,109,434,205,230,86,141,169,107,383,89,274,59 +2004M11,130,467,219,240,92,133,193,150,459,118,326,87 +2004M12,218,479,297,319,141,138,194,228,498,130,386,99 +2005M01,329,569,415,535,228,186,218,358,635,167,518,121 +2005M02,172,489,269,288,128,157,220,223,522,152,414,117 +2005M03,187,531,301,312,134,166,236,217,557,156,421,117 +2005M04,137,449,248,256,103,134,203,145,425,108,323,80 +2005M05,83,369,150,181,67,100,158,86,274,63,218,42 +2005M06,73,351,163,183,67,115,166,80,302,55,221,35 +2005M07,84,415,193,222,73,147,191,82,310,57,337,36 +2005M08,73,361,157,173,66,147,158,80,282,50,336,38 +2005M09,87,383,185,197,79,151,174,91,325,66,327,44 +2005M10,111,412,209,230,102,145,187,116,387,94,283,58 +2005M11,127,463,212,237,90,129,205,148,429,117,338,83 +2005M12,195,457,280,313,141,142,195,217,469,126,400,88 +2006M01,312,526,395,488,225,194,228,377,616,169,550,119 +2006M02,184,483,274,301,136,150,234,241,524,152,434,115 +2006M03,170,497,277,274,133,152,242,203,508,144,404,105 +2006M04,149,430,244,265,113,127,209,157,443,118,372,83 +2006M05,82,365,148,177,65,102,170,86,289,63,229,44 +2006M06,72,346,162,172,67,103,158,75,249,51,202,31 +2006M07,84,356,189,204,72,154,188,81,306,58,332,35 +2006M08,73,373,158,189,74,150,168,78,281,54,348,36 +2006M09,91,393,188,208,77,169,190,92,341,69,312,43 +2006M10,126,455,203,240,102,140,206,121,395,96,294,62 +2006M11,135,488,240,242,98,123,228,153,445,118,343,85 +2006M12,205,477,282,340,153,139,208,227,496,132,412,91 +2007M01,357,557,402,506,231,189,246,364,605,173,555,115 +2007M02,199,515,295,313,134,172,260,246,544,169,455,118 +2007M03,179,564,294,304,138,163,264,213,517,147,443,115 +2007M04,141,458,246,281,117,133,215,167,447,115,378,81 +2007M05,89,377,162,193,75,102,180,99,293,68,238,48 +2007M06,75,373,161,178,72,104,171,85,272,55,213,35 +2007M07,78,413,185,210,77,146,184,86,336,64,373,36 +2007M08,75,414,171,174,74,150,177,89,321,59,371,37 +2007M09,92,426,195,226,81,156,202,94,352,74,322,45 +2007M10,114,451,198,239,103,131,204,117,406,91,297,59 +2007M11,126,537,210,252,96,133,228,152,472,116,346,84 +2007M12,210,480,262,349,151,143,219,232,510,132,407,91 +2008M01,349,588,400,529,216,196,253,378,649,173,556,112 +2008M02,197,557,281,336,145,163,277,265,562,168,466,122 +2008M03,190,564,289,319,152,177,295,244,593,163,471,116 +2008M04,132,472,221,256,104,130,233,157,432,114,352,80 +2008M05,89,416,165,193,75,107,202,100,315,68,236,50 +2008M06,67,372,140,164,58,97,174,84,270,48,194,31 +2008M07,69,396,165,203,71,149,194,83,347,59,366,37 +2008M08,58,415,161,172,61,149,172,80,316,57,353,35 +2008M09,83,413,176,189,78,151,204,93,349,69,298,45 +2008M10,112,477,215,238,105,152,237,117,416,97,288,59 +2008M11,122,506,210,220,100,133,235,139,458,114,319,83 +2008M12,192,486,278,325,148,137,212,226,491,126,391,92 +2009M01,313,555,394,510,212,204,240,362,616,170,561,115 +2009M02,182,515,270,300,141,155,250,250,530,150,420,113 +2009M03,165,534,269,270,141,155,270,207,531,138,414,107 +2009M04,151,443,257,277,124,143,238,165,453,113,357,80 +2009M05,91,382,161,191,78,111,206,103,318,75,239,49 +2009M06,61,333,141,145,56,98,169,73,252,50,211,29 +2009M07,71,421,175,195,72,159,193,82,351,61,396,36 +2009M08,65,383,156,162,65,146,174,81,327,56,374,37 +2009M09,85,413,181,199,79,156,211,91,360,73,317,47 +2009M10,116,482,211,233,99,139,236,121,426,97,300,65 +2009M11,126,488,211,223,98,120,232,146,460,116,342,89 +2009M12,208,491,281,348,136,148,218,235,516,135,430,96 +2010M01,332,568,435,522,219,193,263,393,647,170,579,118 +2010M02,183,524,273,303,135,146,267,244,536,153,441,120 +2010M03,165,539,270,290,135,159,267,215,542,142,441,110 +2010M04,146,468,237,276,121,139,222,163,469,112,386,83 +2010M05,87,404,148,183,66,98,184,86,291,62,227,44 +2010M06,66,356,147,180,61,101,170,70,265,47,234,33 +2010M07,72,416,172,218,70,144,190,77,350,59,408,39 +2010M08,64,427,143,172,62,129,161,78,324,50,382,33 +2010M09,78,438,165,206,73,137,205,90,361,64,324,42 +2010M10,120,491,215,238,96,138,226,114,408,88,292,56 +2010M11,118,545,219,242,95,130,224,145,465,109,330,80 +2010M12,202,515,277,321,132,137,226,228,498,120,420,89 +2011M01,327,611,418,485,204,187,249,381,641,163,558,111 +2011M02,172,556,273,295,138,152,265,238,461,152,465,109 +2011M03,160,582,269,280,123,165,279,204,377,131,427,98 +2011M04,150,508,253,272,104,141,232,161,337,104,379,74 +2011M05,85,459,146,188,67,98,197,93,244,56,221,44 +2011M06,67,401,154,181,62,94,187,80,219,49,210,32 +2011M07,82,485,181,231,63,138,220,90,280,54,399,36 +2011M08,70,492,163,214,71,134,217,93,269,47,393,33 +2011M09,85,488,183,207,86,134,221,91,265,59,323,48 +2011M10,108,557,221,230,99,142,238,128,311,78,285,48 +2011M11,123,536,227,246,98,127,243,149,372,107,358,77 +2011M12,196,578,290,321,133,143,220,220,427,123,470,87 +2012M01,321,612,393,437,186,197,254,354,519,161,608,109 +2012M02,180,582,287,280,136,166,271,231,402,140,436,97 +2012M03,142,620,274,261,123,175,266,195,392,123,414,86 +2012M04,126,537,240,263,90,137,209,151,343,103,391,69 +2012M05,80,458,160,172,66,99,188,92,242,57,237,42 +2012M06,67,453,167,176,61,98,176,80,225,44,230,32 +2012M07,71,448,169,191,60,136,189,84,271,57,398,35 +2012M08,60,476,146,169,54,118,172,76,262,46,378,35 +2012M09,79,470,173,193,68,131,213,91,284,59,311,39 +2012M10,112,574,213,235,97,133,236,123,348,86,317,53 +2012M11,117,595,219,224,98,125,247,138,366,100,330,70 +2012M12,194,602,290,311,133,141,247,221,435,130,492,82 +2013M01,315,636,429,442,180,183,268,347,528,135,577,105 +2013M02,168,604,281,310,128,148,257,234,420,142,462,104 +2013M03,170,655,315,312,138,179,275,216,436,130,476,96 +2013M04,119,546,222,247,95,122,223,142,353,97,388,69 +2013M05,83,497,158,192,70,101,216,103,275,56,250,42 +2013M06,69,442,151,180,58,96,195,82,246,43,262,30 +2013M07,70,489,186,212,68,152,212,85,290,53,427,34 +2013M08,64,490,159,188,57,131,189,85,273,48,420,33 +2013M09,77,522,185,215,72,139,195,92,298,57,323,40 +2013M10,108,571,223,242,96,138,239,116,370,76,330,55 +2013M11,116,616,227,254,96,142,243,151,405,107,366,81 +2013M12,206,601,312,341,133,157,241,224,446,136,491,97 +2014M01,345,669,436,495,185,210,256,364,562,159,603,115 +2014M02,177,652,305,313,126,160,264,259,478,153,524,103 +2014M03,149,639,289,283,125,166,265,215,459,133,476,105 +2014M04,155,566,269,297,109,135,242,167,410,115,470,82 +2014M05,97,538,182,210,71,109,212,107,303,59,279,48 +2014M06,69,473,160,168,57,90,182,78,246,42,277,31 +2014M07,75,505,188,221,69,138,208,88,315,57,469,40 +2014M08,70,525,167,188,60,124,200,77,290,51,420,38 +2014M09,85,557,191,232,75,141,224,91,300,70,339,48 +2014M10,120,595,242,272,93,143,254,121,385,93,369,67 +2014M11,133,641,239,265,102,136,253,157,416,118,420,91 +2014M12,230,632,326,354,137,169,248,233,498,151,538,112 +2015M01,363,689,467,488,185,207,276,384,583,178,628,118 +2015M02,200,660,323,325,132,169,274,271,510,170,554,116 +2015M03,164,676,311,309,141,170,274,221,505,151,512,119 +2015M04,148,599,280,303,123,141,265,163,428,117,467,90 +2015M05,91,536,190,229,79,118,231,105,317,69,321,52 +2015M06,66,470,160,179,64,107,187,80,258,44,286,34 +2015M07,75,518,207,238,70,148,227,93,329,58,460,43 +2015M08,66,537,177,195,60,141,204,91,301,52,434,42 +2015M09,95,562,209,239,72,144,222,99,332,74,378,51 +2015M10,124,588,251,281,98,147,263,130,398,95,391,69 +2015M11,132,633,256,290,97,143,271,162,436,124,466,97 +2015M12,231,650,352,381,145,171,272,252,546,149,588,113 +2016M01,352,715,469,514,200,216,300,390,649,188,710,141 +2016M02,201,679,345,354,147,190,303,289,544,183,595,136 +2016M03,213,689,351,363,150,193,297,257,549,172,606,148 +2016M04,144,634,273,313,127,149,265,173,428,126,503,106 +2016M05,89,560,177,226,83,105,216,112,300,67,337,58 +2016M06,78,509,192,225,74,108,209,90,266,51,319,40 +2016M07,92,561,217,256,86,145,236,107,345,60,485,45 +2016M08,83,567,198,225,73,143,218,101,302,54,443,42 +2016M09,100,575,229,264,86,151,239,113,345,76,402,55 +2016M10,131,641,275,294,108,146,270,138,419,102,409,71 +2016M11,148,642,288,307,118,146,259,178,442,133,494,110 +2016M12,241,662,383,410,161,188,275,265,509,164,603,122 +2017M01,364,695,497,541,220,222,297,410,598,195,715,146 +2017M02,222,663,357,360,162,190,286,279,525,173,592,139 +2017M03,188,694,341,356,154,191,304,251,499,167,583,138 +2017M04,168,645,309,346,142,162,265,192,443,131,545,114 +2017M05,107,578,193,246,96,120,229,120,326,71,353,64 +2017M06,83,519,202,243,85,122,230,103,289,50,340,44 +2017M07,91,561,215,270,89,153,238,106,354,61,489,46 +2017M08,83,537,187,226,79,138,204,114,316,62,449,45 +2017M09,96,552,220,268,94,160,237,121,361,80,423,57 +2017M10,146,601,283,321,122,168,271,154,451,107,439,85 +2017M11,151,658,300,324,124,158,274,187,475,137,501,117 +2017M12,253,661,396,424,168,188,279,264,572,165,632,138 +2018M01,369,706,501,550,211,223,302,379,661,189,723,155 +2018M02,213,663,356,365,141,181,290,274,590,174,630,153 +2018M03,213,705,371,400,148,205,315,265,596,175,630,154 +2018M04,154,598,287,332,126,159,272,184,507,133,558,121 +2018M05,109,558,198,252,95,127,231,117,345,72,369,67 +2018M06,82,489,194,238,90,123,220,91,301,56,338,47 +2018M07,91,548,223,251,89,169,235,101,375,61,483,52 +2018M08,87,569,203,223,85,149,217,93,345,56,451,47 +2018M09,97,585,228,264,98,160,253,114,371,74,439,64 +2018M10,143,644,287,320,121,177,276,166,467,106,473,87 +2018M11,155,693,292,322,122,170,278,180,508,140,552,123 +2018M12,254,669,403,409,156,194,287,271,600,163,650,144 +2019M01,366,726,530,519,213,226,306,376,669,176,708,155 +2019M02,207,664,352,355,145,191,296,278,592,171,610,153 +2019M03,192,699,367,375,159,202,321,234,570,150,594,145 +2019M04,180,616,319,372,141,175,287,198,525,117,556,119 +2019M05,109,570,206,256,102,125,243,116,345,70,356,66 +2019M06,82,508,200,243,91,122,228,96,301,52,330,46 +2019M07,91,559,222,270,97,163,256,107,354,55,472,53 +2019M08,91,589,204,231,91,151,242,102,348,53,465,51 +2019M09,97,619,233,260,105,172,239,116,369,65,430,64 diff --git a/the_archive/archived_rapids_demos/cuml/data/time_series/net_migrations_auckland_by_age.csv b/the_archive/archived_rapids_demos/cuml/data/time_series/net_migrations_auckland_by_age.csv new file mode 100644 index 00000000..43cc4a53 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/data/time_series/net_migrations_auckland_by_age.csv @@ -0,0 +1,21 @@ + Year,5-9 years,10-14 years,15-19 years,30-34 years,35-39 years,40-44 years,45-49 years +1991,357,471,498,148,318,293,170 +1992,361,483,511,251,477,396,174 +1993,574,793,659,714,673,605,343 +1994,974,1037,918,1234,1176,1037,568 +1995,1384,1309,1132,2103,1586,1204,690 +1996,941,873,811,1581,1213,971,603 +1997,574,663,580,798,595,568,345 +1998,404,379,277,188,343,343,241 +1999,437,386,564,373,447,362,161 +2000,210,287,859,50,-8,130,25 +2001,537,713,1944,868,531,456,279 +2002,989,1118,2514,1893,1351,1098,611 +2003,852,784,1860,1615,1158,868,534 +2004,439,524,1057,918,624,552,284 +2005,436,436,880,734,476,359,238 +2006,401,437,931,944,642,428,168 +2007,356,335,987,807,411,346,126 +2008,162,255,1102,632,295,125,112 +2009,259,306,1301,661,343,241,142 +2010,151,221,1234,483,141,118,68 diff --git a/the_archive/archived_rapids_demos/cuml/data/time_series/population_estimate.csv b/the_archive/archived_rapids_demos/cuml/data/time_series/population_estimate.csv new file mode 100644 index 00000000..02e1be61 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/data/time_series/population_estimate.csv @@ -0,0 +1,138 @@ +"Year","Male","Female" +1875,238.1,183.2 +1876,250.4,194.2 +1877,252.5,201.6 +1878,264.6,211.5 +1879,281.8,225.5 +1880,292.3,236.2 +1881,299.4,245.7 +1882,307.7,254.1 +1883,319.0,265.9 +1884,331.0,277.4 +1885,336.5,282.8 +1886,340.5,290.9 +1887,347.4,297.9 +1888,347.8,301.6 +1889,351.4,306.6 +1890,355.4,312.1 +1891,359.0,317.0 +1892,368.0,324.4 +1893,380.5,333.8 +1894,386.6,341.5 +1895,392.6,348.1 +1896,398.7,355.4 +1897,406.4,362.5 +1898,413.8,369.5 +1899,420.4,376.0 +1900,425.3,382.8 +1901,437.3,393.5 +1902,449.0,402.0 +1903,462.8,412.9 +1904,477.1,423.6 +1905,490.5,435.1 +1906,507.2,449.3 +1907,518.2,459.0 +1908,535.9,472.5 +1909,545.9,484.7 +1910,555.5,494.9 +1911,566.2,509.0 +1912,579.7,522.8 +1913,595.6,538.9 +1914,594.6,551.2 +1915,590.4,562.2 +1916,575.8,574.5 +1917,563.3,584.1 +1918,568.0,590.2 +1919,627.8,599.4 +1920,643.7,613.9 +1921,660.9,631.8 +1922,673.8,645.1 +1923,686.0,657.1 +1924,700.0,670.4 +1925,716.4,684.9 +1926,730.6,699.0 +1927,740.8,709.3 +1928,749.1,717.8 +1929,758.5,727.1 +1930,767.9,738.9 +1931,775.6,747.1 +1932,780.9,753.8 +1933,786.4,760.8 +1934,792.0,766.4 +1935,796.7,773.0 +1936,804.3,780.3 +1937,813.1,788.7 +1938,821.7,796.6 +1939,832.8,808.8 +1940,813.0,820.6 +1941,799.2,832.0 +1942,793.7,842.7 +1943,790.8,851.2 +1944,813.6,862.7 +1945,855.9,872.6 +1946,893.3,891.1 +1947,913.6,909.5 +1948,934.3,927.6 +1949,949.4,942.6 +1950,967.3,960.3 +1951,989.5,981.0 +1952,1017.9,1006.7 +1953,1043.1,1031.6 +1954,1065.5,1052.9 +1955,1089.1,1075.7 +1956,1111.2,1098.0 +1957,1137.8,1125.0 +1958,1165.6,1150.3 +1959,1186.1,1173.7 +1960,1207.9,1195.6 +1961,1238.0,1223.3 +1962,1264.1,1251.7 +1963,1288.4,1278.5 +1964,1313.0,1304.0 +1965,1336.7,1327.1 +1966,1360.3,1351.0 +1967,1373.6,1371.4 +1968,1385.4,1387.6 +1969,1399.8,1404.2 +1970,1425.4,1426.7 +1971,1447.4,1451.1 +1972,1477.8,1481.9 +1973,1510.0,1514.9 +1974,1543.9,1548.0 +1975,1567.6,1576.1 +1976,1578.1,1585.3 +1977,1578.4,1588.0 +1978,1575.9,1589.3 +1979,1573.8,1590.1 +1980,1581.5,1594.9 +1981,1586.9,1607.6 +1982,1601.9,1624.9 +1983,1620.7,1644.1 +1984,1632.2,1660.8 +1985,1636.8,1666.3 +1986,1639.2,1674.3 +1987,1652.9,1689.2 +1988,1649.7,1695.5 +1989,1659.7,1710.1 +1990,1681.9,1728.5 +1991,1730.0,1786.0 +1992,1749.1,1803.1 +1993,1772.5,1825.4 +1994,1797.8,1850.4 +1995,1828.0,1878.7 +1996,1855.4,1906.9 +1997,1872.9,1929.7 +1998,1883.3,1945.9 +1999,1891.7,1959.5 +2000,1900.4,1972.6 +2001,1920.5,1995.7 +2002,1956.7,2032.9 +2003,1991.8,2069.8 +2004,2016.2,2098.1 +2005,2037.7,2123.3 +2006,2061.8,2149.6 +2007,2083.4,2169.2 +2008,2104.1,2187.4 +2009,2134.0,2213.2 +2010,2158.2,2234.9 +2011,2174.3,2248.4 \ No newline at end of file diff --git a/the_archive/archived_rapids_demos/cuml/data/weather/noaa_rdu.csv b/the_archive/archived_rapids_demos/cuml/data/weather/noaa_rdu.csv new file mode 100644 index 00000000..22caceda --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/data/weather/noaa_rdu.csv @@ -0,0 +1,4605 @@ +date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog +2015-04-08;62.1;84.0;0.0;0.0;0.0;5.82;40;29.97;30;38.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-04-20;63.0;78.1;0.28;0.0;0.0;11.86;180;21.92;170;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-04-26;45.0;54.0;0.02;0.0;0.0;5.82;50;12.97;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-28;39.0;69.1;0.0;0.0;0.0;2.68;40;12.08;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-03;46.9;79.0;0.0;0.0;0.0;2.68;200;12.08;210;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-23;48.0;80.1;0.0;0.0;0.0;2.91;50;14.99;80;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-27;69.1;87.1;0.3;0.0;0.0;6.71;180;17.0;210;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-05-31;69.1;89.1;0.0;0.0;0.0;6.93;170;12.97;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-09;66.9;89.1;0.31;0.0;0.0;7.61;230;18.12;260;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-13;73.9;95.0;0.0;0.0;0.0;4.92;40;10.07;310;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-22;70.0;96.1;0.0;0.0;0.0;2.24;210;10.07;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-28;64.0;84.0;0.0;0.0;0.0;5.82;230;16.11;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-16;72.0;86.0;0.0;0.0;0.0;6.71;40;16.11;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-25;64.0;88.0;0.0;0.0;0.0;2.24;130;10.07;150;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-26;66.0;89.1;0.0;0.0;0.0;3.13;170;8.95;130;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-27;72.0;90.0;0.0;0.0;0.0;4.25;130;10.07;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-02;64.9;90.0;0.0;0.0;0.0;3.58;50;12.08;40;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-06;71.1;95.0;1.68;0.0;0.0;2.68;230;25.95;220;31.09;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-08-19;72.0;89.1;0.19;0.0;0.0;6.49;190;21.92;180;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-08-21;70.0;88.0;0.0;0.0;0.0;5.59;40;16.11;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-23;61.0;87.1;0.0;0.0;0.0;1.34;170;8.95;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-09;71.1;91.0;0.21;0.0;0.0;6.04;230;25.95;240;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-09-12;68.0;78.1;0.34;0.0;0.0;6.26;260;18.12;270;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-13;55.0;75.9;0.0;0.0;0.0;4.25;310;14.09;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-17;60.1;84.0;0.0;0.0;0.0;1.57;90;8.95;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-20;62.1;86.0;0.0;0.0;0.0;4.7;30;12.97;60;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-24;60.1;75.9;0.2;0.0;0.0;9.17;50;18.12;60;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-27;64.0;77.0;0.03;0.0;0.0;10.96;40;18.12;40;25.95;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-10-01;57.9;66.0;0.34;0.0;0.0;10.74;50;19.91;50;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-03;53.1;68.0;1.23;0.0;0.0;12.08;50;19.91;40;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-17;39.0;66.9;0.0;0.0;0.0;3.13;350;12.08;340;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-21;37.9;75.9;0.0;0.0;0.0;1.34;230;10.07;240;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-25;55.9;77.0;0.0;0.0;0.0;3.8;230;12.97;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-07;59.0;72.0;0.54;0.0;0.0;5.37;230;17.0;340;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-10;48.0;69.1;0.22;0.0;0.0;1.79;290;10.07;320;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-12;45.0;77.0;0.0;0.0;0.0;7.61;230;23.94;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-13;44.1;66.0;0.0;0.0;0.0;5.82;300;16.11;270;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-15;31.1;64.0;0.0;0.0;0.0;0.67;210;6.93;220;8.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-17;37.9;66.9;0.0;0.0;0.0;4.25;90;14.09;90;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-18;53.1;72.0;0.0;0.0;0.0;9.4;130;19.91;140;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-29;48.9;73.9;0.13;0.0;0.0;2.01;80;12.08;90;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-03;39.0;57.9;0.0;0.0;0.0;4.25;310;12.97;340;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-04;33.1;54.0;0.0;0.0;0.0;2.01;30;10.07;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-09;42.1;64.0;0.0;0.0;0.0;4.7;230;16.11;230;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-10;44.1;66.9;0.0;0.0;0.0;3.58;220;12.08;220;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-18;37.0;59.0;0.16;0.0;0.0;6.26;300;16.11;310;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-24;66.0;77.0;0.04;0.0;0.0;12.75;220;23.04;200;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-25;64.9;73.9;0.0;0.0;0.0;8.05;230;17.0;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-26;63.0;73.9;0.01;0.0;0.0;2.91;190;8.95;210;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-03;31.1;53.1;0.0;0.0;0.0;3.36;260;10.07;260;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-10;37.0;63.0;0.05;0.0;0.0;11.86;240;25.05;240;36.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-13;27.1;43.0;0.0;0.0;0.0;3.36;240;12.08;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-18;22.1;35.1;0.0;0.0;0.0;4.03;300;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-24;28.2;46.9;0.0;0.0;1.18;2.46;320;10.07;310;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-26;35.1;61.0;0.0;0.0;0.0;6.26;230;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-30;26.2;55.9;0.0;0.0;0.0;5.37;230;14.99;200;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-01;46.9;72.0;0.0;0.0;0.0;9.17;240;21.03;240;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-03;51.1;72.0;1.26;0.0;0.0;10.51;190;23.94;180;36.01;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-07;37.0;44.1;0.0;0.0;0.0;6.93;20;14.99;20;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-11;19.2;41.0;0.0;0.0;0.0;5.82;280;16.11;260;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-13;21.2;34.0;0.0;0.0;0.0;6.04;300;17.0;280;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-16;35.1;60.1;1.16;0.0;0.0;8.05;170;27.96;160;38.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-21;45.0;71.1;0.04;0.0;0.0;8.5;240;23.04;230;29.97;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-23;43.0;46.0;0.19;0.0;0.0;6.26;60;12.97;60;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-28;31.1;66.9;0.0;0.0;0.0;8.28;220;21.03;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-03;28.2;48.9;0.03;0.0;0.0;6.04;110;14.99;120;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-06;37.0;57.9;0.04;0.0;0.0;3.58;50;17.0;210;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-10;57.0;79.0;0.0;0.0;0.0;14.32;230;25.05;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-11;63.0;80.1;0.0;0.0;0.0;8.95;230;23.04;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-16;57.0;86.0;0.0;0.0;0.0;5.37;260;17.0;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-20;39.9;43.0;0.09;0.0;0.0;6.71;30;12.97;20;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-26;55.0;64.9;0.06;0.0;0.0;6.26;60;16.11;70;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-30;42.1;69.1;0.0;0.0;0.0;6.93;180;16.11;180;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-12;55.0;64.0;0.85;0.0;0.0;8.5;210;18.12;210;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-13;45.0;64.0;0.0;0.0;0.0;9.17;50;19.91;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-15;39.9;66.9;0.0;0.0;0.0;9.62;70;21.92;60;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-16;35.1;70.0;0.0;0.0;0.0;4.7;40;16.11;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-23;61.0;77.0;0.0;0.0;0.0;4.92;50;19.91;50;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-24;50.0;73.9;0.0;0.0;0.0;4.25;40;12.97;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-07;50.0;75.0;0.0;0.0;0.0;6.26;250;16.11;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-14;52.0;82.0;0.0;0.0;0.0;5.14;240;21.92;230;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-25;59.0;87.1;0.0;0.0;0.0;3.8;220;16.11;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-26;64.0;89.1;0.0;0.0;0.0;6.71;230;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-09;52.0;82.0;0.0;0.0;0.0;3.36;240;14.09;240;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-13;62.1;84.9;0.0;0.0;0.0;3.13;40;12.97;300;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-24;69.1;88.0;0.1;0.0;0.0;2.01;200;14.99;200;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-26;64.0;84.9;0.0;0.0;0.0;3.8;80;12.08;80;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-13;72.0;93.9;0.0;0.0;0.0;3.13;240;12.08;320;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-16;70.0;87.1;1.98;0.0;0.0;6.26;180;14.99;210;17.0;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-18;72.0;93.0;0.0;0.0;0.0;7.38;240;14.09;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-29;75.0;91.9;0.0;0.0;0.0;4.92;20;10.07;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-06;73.9;93.0;0.0;0.0;0.0;7.38;230;12.97;250;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-08;73.0;89.1;0.54;0.0;0.0;6.71;270;14.99;290;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-21;73.9;93.9;0.0;0.0;0.0;6.26;330;17.0;310;27.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-29;69.1;90.0;0.0;0.0;0.0;5.59;40;12.97;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-30;66.9;91.9;0.0;0.0;0.0;4.92;40;14.09;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-06;61.0;91.0;0.0;0.0;0.0;4.03;240;12.97;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-15;66.0;90.0;0.0;0.0;0.0;7.83;40;17.0;80;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-18;71.1;90.0;0.06;0.0;0.0;3.58;100;12.97;150;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-28;66.0;86.0;0.45;0.0;0.0;5.14;240;21.92;240;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-29;64.9;79.0;0.32;0.0;0.0;6.49;110;18.12;120;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-10-01;66.0;84.0;0.0;0.0;0.0;3.8;240;17.0;250;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-10;45.0;68.0;0.0;0.0;0.0;5.37;40;16.11;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-12;48.0;73.0;0.0;0.0;0.0;1.57;20;8.05;30;12.97;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-18;60.1;84.0;0.0;0.0;0.0;7.61;230;17.0;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-20;61.0;86.0;0.0;0.0;0.0;3.8;180;12.08;170;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-23;39.9;70.0;0.0;0.0;0.0;6.71;230;14.99;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-25;44.1;66.0;0.0;0.0;0.0;2.68;70;14.99;50;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-26;39.0;68.0;0.0;0.0;0.0;1.79;230;10.07;230;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-04;45.0;69.1;0.07;0.0;0.0;7.16;40;18.12;30;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-05;37.9;64.9;0.0;0.0;0.0;2.91;90;14.99;90;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-06;37.0;71.1;0.0;0.0;0.0;1.57;30;10.07;30;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-09;46.9;66.9;0.0;0.0;0.0;5.59;290;17.0;330;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-12;30.2;55.0;0.0;0.0;0.0;7.83;50;19.91;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-19;42.1;77.0;0.0;0.0;0.0;9.17;230;23.94;290;38.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-11-20;31.1;53.1;0.0;0.0;0.0;6.49;280;18.12;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-21;27.1;54.0;0.0;0.0;0.0;5.14;300;16.11;290;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-23;28.2;62.1;0.0;0.0;0.0;3.58;230;10.07;230;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-29;57.9;72.0;0.06;0.0;0.0;12.97;200;21.92;160;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-06;43.0;48.9;0.56;0.0;0.0;7.83;60;14.99;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-07;37.0;60.1;0.0;0.0;0.0;2.01;20;8.95;30;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-25;48.0;60.1;0.0;0.0;0.0;5.14;90;10.07;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-27;52.0;68.0;0.01;0.0;0.0;10.29;240;19.91;230;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-31;23.2;50.0;0.0;0.0;0.0;8.72;220;21.03;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-06;32.0;43.0;0.25;0.0;0.0;6.04;40;14.09;40;19.01;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2017-01-08;15.3;27.1;0.0;0.0;1.18;4.92;300;14.09;300;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-10;24.3;48.0;0.0;0.0;1.18;5.14;170;14.99;170;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-12;54.0;73.0;0.0;0.0;0.0;12.53;230;27.96;230;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-23;43.0;60.1;0.28;0.0;0.0;9.84;80;25.05;80;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-28;27.1;52.0;0.0;0.0;0.0;9.4;230;21.92;260;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-30;30.2;46.0;0.0;0.0;0.0;6.26;270;21.03;280;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-01;42.1;70.0;0.0;0.0;0.0;3.8;220;10.07;30;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-05;27.1;60.1;0.01;0.0;0.0;4.92;220;16.11;280;23.04;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2017-02-15;39.0;55.9;0.34;0.0;0.0;5.37;290;14.99;300;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-19;44.1;73.0;0.0;0.0;0.0;4.7;250;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-20;42.1;73.0;0.0;0.0;0.0;1.79;90;12.97;290;23.04;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-02-24;46.9;80.1;0.0;0.0;0.0;3.58;230;14.09;170;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-25;52.0;81.0;0.0;0.0;0.0;13.2;230;29.97;240;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-27;35.1;66.0;0.0;0.0;0.0;5.37;220;14.99;180;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-28;50.0;77.0;0.0;0.0;0.0;7.16;220;19.91;210;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-08;46.0;69.1;0.05;0.0;0.0;8.5;220;23.04;210;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-25;52.0;75.9;0.0;0.0;0.0;10.74;240;21.03;240;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-07;43.0;59.0;0.0;0.0;0.0;11.86;290;23.94;260;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-12;55.9;82.9;0.0;0.0;0.0;4.03;210;14.09;220;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-16;60.1;82.0;0.0;0.0;0.0;12.75;250;23.04;240;31.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-04-22;55.9;87.1;0.09;0.0;0.0;9.4;250;25.95;240;35.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-23;53.1;55.9;0.77;0.0;0.0;11.18;90;21.03;80;27.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-24;53.1;60.1;4.51;0.0;0.0;10.96;50;21.03;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-04;57.0;80.1;0.29;0.0;0.0;10.74;140;19.91;140;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-14;48.9;81.0;0.0;0.0;0.0;7.16;250;17.0;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-22;68.0;80.1;0.3;0.0;0.0;8.05;250;21.92;240;27.96;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2017-05-24;64.9;73.9;0.29;0.0;0.0;5.82;160;16.11;160;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-27;61.0;88.0;0.0;0.0;0.0;6.04;220;17.0;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-17;72.0;86.0;0.21;0.0;0.0;5.82;160;14.99;280;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-18;73.9;91.0;0.17;0.0;0.0;8.72;190;17.0;230;40.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-20;66.9;82.0;0.72;0.0;0.0;4.47;240;12.97;200;18.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-22;71.1;84.0;0.0;0.0;0.0;8.05;240;16.11;260;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-28;57.0;82.9;0.0;0.0;0.0;4.25;80;12.97;30;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-29;60.1;87.1;0.0;0.0;0.0;6.71;190;14.09;190;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-02;71.1;91.9;0.0;0.0;0.0;4.47;230;10.07;200;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-03;70.0;93.0;0.15;0.0;0.0;2.91;190;14.99;170;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-04;71.1;91.9;0.84;0.0;0.0;3.8;40;16.11;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-09;69.1;88.0;0.0;0.0;0.0;3.36;50;12.97;40;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-11;71.1;95.0;0.0;0.0;0.0;6.93;180;16.11;210;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-14;77.0;97.0;0.0;0.0;0.0;9.4;230;21.03;240;25.95;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-20;71.1;99.0;0.0;0.0;0.0;3.8;210;10.07;220;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-23;71.1;102.0;0.56;0.0;0.0;8.95;220;25.05;220;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-11;73.0;89.1;1.2;0.0;0.0;4.25;260;12.97;290;16.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-12;73.0;91.9;0.48;0.0;0.0;5.37;300;12.08;280;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-17;75.0;93.9;0.24;0.0;0.0;4.92;220;21.03;220;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-29;64.0;71.1;0.22;0.0;0.0;8.5;30;17.0;30;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-03;62.1;82.9;0.0;0.0;0.0;4.25;240;12.97;230;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-07;53.1;75.9;0.0;0.0;0.0;2.91;260;14.09;310;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-09;53.1;75.9;0.0;0.0;0.0;7.38;40;16.11;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-11;57.9;66.9;0.01;0.0;0.0;12.75;60;19.91;50;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-21;64.9;88.0;0.0;0.0;0.0;1.79;50;23.94;50;35.12;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-10-14;62.1;78.1;0.0;0.0;0.0;3.13;40;8.95;150;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-19;42.1;75.9;0.0;0.0;0.0;1.12;230;12.08;240;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-21;48.0;79.0;0.0;0.0;0.0;2.01;160;10.07;110;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-22;51.1;79.0;0.0;0.0;0.0;3.13;140;10.07;120;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-25;42.1;66.0;0.0;0.0;0.0;3.8;240;14.99;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-26;39.9;63.0;0.0;0.0;0.0;3.8;260;12.97;270;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-28;46.9;73.9;0.76;0.0;0.0;4.92;170;14.09;170;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-30;36.0;59.0;0.0;0.0;0.0;6.93;280;14.99;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-12;28.2;48.9;0.03;0.0;0.0;1.57;50;12.08;40;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-22;42.1;62.1;0.03;0.0;0.0;4.7;10;14.09;320;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-12;30.2;53.1;0.0;0.0;0.0;9.62;280;18.12;330;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-17;27.1;51.1;0.0;0.0;0.0;2.24;240;10.07;200;12.08;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-12-19;36.0;70.0;0.0;0.0;0.0;4.47;230;14.09;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-28;18.1;30.2;0.0;0.0;0.0;7.83;70;16.11;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-31;23.2;35.1;0.0;0.0;0.0;10.07;50;18.12;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-02;12.2;32.0;0.0;0.0;0.0;2.91;30;10.07;20;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-10;43.0;61.0;0.0;0.0;0.0;4.92;90;10.07;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-18;10.2;34.0;0.0;0.2;5.91;5.59;270;12.97;320;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-20;26.2;55.9;0.0;0.0;1.18;5.59;220;12.97;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-22;37.9;62.1;0.0;0.0;0.0;4.7;190;18.12;200;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-27;31.1;66.9;0.0;0.0;0.0;6.26;170;17.0;190;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-29;33.1;52.0;0.59;0.0;0.0;8.05;360;14.99;20;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-01;31.1;62.1;0.0;0.0;0.0;13.2;240;25.05;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-07;44.1;64.9;0.21;0.0;0.0;8.5;190;21.92;200;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-13;37.0;44.1;0.0;0.0;0.0;8.72;50;17.0;50;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-16;55.9;81.0;0.02;0.0;0.0;13.42;230;25.95;230;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-20;50.0;72.0;0.0;0.0;0.0;3.36;200;12.97;190;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-28;39.0;57.0;0.07;0.0;0.0;4.92;220;12.97;200;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-05;26.2;54.0;0.0;0.0;0.0;4.7;50;12.97;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-08;27.1;46.9;0.0;0.0;0.0;4.47;250;16.11;310;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-11;37.9;48.9;0.21;0.0;0.0;7.83;80;16.11;80;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-12;32.0;37.9;0.92;1.42;0.0;7.16;30;14.09;30;19.91;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2018-03-15;24.3;64.9;0.0;0.0;0.0;11.63;230;29.97;240;42.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-18;39.9;60.1;0.01;0.0;0.0;6.04;40;16.11;40;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-23;27.1;55.9;0.0;0.0;0.0;3.8;270;16.11;260;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-28;43.0;75.9;0.0;0.0;0.0;10.74;240;21.92;230;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-01;41.0;75.0;0.0;0.0;0.0;7.61;230;16.11;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-08;32.0;52.0;0.0;0.0;0.0;4.92;40;17.0;20;25.05;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2018-04-19;45.0;75.9;0.0;0.0;0.0;10.96;290;23.94;290;34.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-02;53.1;84.9;0.0;0.0;0.0;10.07;230;21.03;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-04;60.1;84.9;0.0;0.0;0.0;12.97;220;21.92;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-06;62.1;84.9;0.16;0.0;0.0;3.58;310;18.12;300;33.11;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-14;68.0;93.0;0.0;0.0;0.0;8.05;220;16.11;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-15;69.1;88.0;0.02;0.0;0.0;8.72;240;18.12;190;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-02;68.0;87.1;0.08;0.0;0.0;4.7;320;14.09;300;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-14;70.0;91.0;0.0;0.0;0.0;4.47;360;10.07;10;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-18;73.9;93.9;0.0;0.0;0.0;4.92;230;14.09;220;17.0;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-25;72.0;88.0;0.02;0.0;0.0;4.25;50;12.08;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-26;68.0;91.9;0.0;0.0;0.0;4.92;220;12.97;220;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-29;70.0;88.0;0.07;0.0;0.0;4.25;140;16.11;90;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-05;72.0;93.0;0.0;0.0;0.0;3.36;90;16.11;140;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-12;70.0;89.1;0.8;0.0;0.0;2.91;20;17.0;20;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-19;68.0;88.0;1.83;0.0;0.0;6.71;30;16.11;340;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-20;68.0;87.1;0.86;0.0;0.0;4.47;220;16.11;220;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-22;70.0;88.0;0.01;0.0;0.0;6.71;230;14.09;330;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-25;59.0;82.9;0.0;0.0;0.0;2.68;40;10.07;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-27;69.1;93.0;0.0;0.0;0.0;4.03;250;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-28;71.1;93.9;0.0;0.0;0.0;6.04;240;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-29;72.0;93.9;0.0;0.0;0.0;7.38;230;14.99;210;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-04;72.0;91.9;0.01;0.0;0.0;2.91;40;12.97;110;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-07;71.1;91.9;0.03;0.0;0.0;2.68;170;8.95;170;14.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-09;66.9;80.1;0.15;0.0;0.0;5.37;40;12.97;30;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-10;66.9;88.0;0.26;0.0;0.0;4.47;230;23.04;230;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-12;72.0;88.0;0.13;0.0;0.0;5.14;30;12.97;40;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-13;73.9;81.0;0.28;0.0;0.0;11.18;20;21.03;40;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-14;73.0;79.0;2.5;0.0;0.0;20.36;40;33.11;50;48.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-16;73.0;75.9;0.9;0.0;0.0;14.99;80;23.04;80;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-06;68.0;82.0;0.0;0.0;0.0;3.58;80;10.07;80;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-07;66.0;87.1;0.0;0.0;0.0;2.91;90;10.07;30;17.0;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-10-08;69.1;84.9;0.0;0.0;0.0;6.26;100;16.11;100;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-17;53.1;71.1;0.0;0.0;0.0;3.58;270;12.08;260;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-21;37.0;57.9;0.0;0.0;0.0;5.59;340;19.91;350;34.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-24;37.9;61.0;0.0;0.0;0.0;3.58;40;14.99;40;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-26;42.1;52.0;1.58;0.0;0.0;8.05;90;21.92;90;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-29;39.0;64.9;0.0;0.0;0.0;5.14;290;17.0;300;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-05;54.0;62.1;0.82;0.0;0.0;3.8;90;18.12;80;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-06;57.0;73.9;0.03;0.0;0.0;7.38;230;27.96;240;36.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-14;39.0;48.0;0.04;0.0;0.0;8.05;60;16.11;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-15;36.0;43.0;0.88;0.0;0.0;10.29;50;21.03;40;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-19;43.0;64.9;0.0;0.0;0.0;3.36;230;12.97;220;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-21;30.2;57.0;0.0;0.0;0.0;2.24;270;12.08;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-23;27.1;45.0;0.0;0.0;0.0;7.83;100;14.09;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-24;36.0;45.0;0.72;0.0;0.0;5.14;290;12.97;300;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-27;31.1;48.0;0.0;0.0;0.0;6.71;320;14.09;350;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-02;57.9;71.1;0.0;0.0;0.0;10.96;220;21.03;230;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-09;30.2;37.9;1.75;7.01;3.15;15.21;50;23.94;30;35.12;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2018-12-26;26.2;51.1;0.0;0.0;0.0;2.46;100;8.95;110;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-28;50.0;68.0;1.61;0.0;0.0;9.84;20;21.03;200;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-03;55.0;82.0;0.0;0.0;0.0;2.91;240;16.11;230;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-10;59.0;79.0;0.02;0.0;0.0;7.83;220;17.0;220;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-14;46.9;61.0;0.14;0.0;0.0;8.72;40;14.99;50;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-10-17;45.0;57.9;0.0;0.0;0.0;6.26;30;14.09;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-29;48.0;68.0;0.0;0.0;0.0;5.82;80;14.99;70;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-03;37.9;71.1;0.0;0.0;0.0;2.01;20;8.05;290;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-10;55.9;63.0;0.88;0.0;0.0;4.7;30;16.11;30;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-11-16;42.1;73.9;0.0;0.0;0.0;0.89;80;8.05;100;12.08;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-17;46.9;63.0;0.0;0.0;0.0;5.82;50;14.09;50;17.0;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-18;52.0;62.1;0.45;0.0;0.0;8.28;40;16.11;50;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-11-19;57.9;73.0;0.01;0.0;0.0;5.14;250;10.07;250;14.99;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2009-11-22;37.0;57.0;0.19;0.0;0.0;5.82;70;17.0;70;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-11-27;36.0;54.0;0.0;0.0;0.0;7.38;250;21.03;270;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-01;30.0;55.9;0.0;0.0;0.0;2.01;240;8.05;230;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-08;33.1;46.0;0.45;0.0;0.0;6.49;80;16.11;80;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-12-11;25.0;36.0;0.0;0.0;0.0;3.36;290;12.08;290;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-16;28.9;48.9;0.0;0.0;0.0;2.91;10;10.07;350;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-17;28.0;45.0;0.0;0.0;0.0;2.01;50;10.07;20;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-21;24.1;48.9;0.0;0.0;0.0;2.24;240;14.09;270;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-23;25.0;53.1;0.0;0.0;0.0;0.45;50;6.04;160;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-07;19.9;48.0;0.0;0.0;0.0;5.37;210;12.97;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-08;21.9;42.1;0.05;0.0;0.0;8.95;240;23.04;230;33.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-01-10;19.0;37.0;0.0;0.0;0.0;2.46;30;12.08;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-14;23.0;57.0;0.0;0.0;0.0;3.58;220;8.95;220;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-19;35.1;66.0;0.0;0.0;0.0;1.79;240;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-16;27.0;41.0;0.0;0.0;0.0;7.61;240;17.9;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-20;23.0;59.0;0.0;0.0;0.0;2.46;280;12.08;290;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-22;36.0;52.0;0.29;0.0;0.0;2.46;110;16.11;110;19.91;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2010-03-02;33.1;42.1;0.29;0.2;0.0;9.62;50;19.91;10;25.95;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;Yes;No;Yes;No;No;No +2010-03-09;35.1;73.0;0.0;0.0;0.0;2.01;230;14.09;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-16;39.0;52.0;0.0;0.0;0.0;4.7;20;14.09;30;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-20;39.9;78.1;0.0;0.0;0.0;5.59;220;17.0;210;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-02;54.0;88.0;0.0;0.0;0.0;4.7;200;14.09;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-04;57.9;82.9;0.0;0.0;0.0;3.58;220;12.97;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-06;62.1;90.0;0.0;0.0;0.0;10.29;230;23.04;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-14;41.0;57.0;0.0;0.0;0.0;7.61;50;16.11;50;23.94;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-02;72.0;91.9;0.0;0.0;0.0;13.87;230;23.94;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-10;42.1;68.0;0.0;0.0;0.0;4.47;80;16.11;70;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-14;64.9;93.9;0.0;0.0;0.0;7.61;240;14.99;240;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2010-05-16;66.9;82.0;0.12;0.0;0.0;4.92;120;14.99;120;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;Yes;No;Yes;No;No;No +2010-05-20;57.9;79.0;0.0;0.0;0.0;2.68;30;8.95;40;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-26;62.1;82.9;0.0;0.0;0.0;5.82;50;16.11;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-28;64.0;87.1;0.41;0.0;0.0;6.71;230;25.05;220;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-06-01;69.1;84.9;0.29;0.0;0.0;6.49;160;19.91;170;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-06-02;71.1;88.0;0.01;0.0;0.0;4.7;140;12.97;140;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2010-06-14;71.1;93.0;0.0;0.0;0.0;3.8;270;12.97;240;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-15;72.0;93.9;0.01;0.0;0.0;2.46;230;14.99;220;17.0;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-06-25;77.0;93.9;0.0;0.0;0.0;4.47;190;14.09;190;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-27;73.0;100.9;0.0;0.0;0.0;8.05;230;17.9;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-20;73.0;98.1;0.64;0.0;0.0;7.61;280;29.97;280;44.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-07-21;75.0;97.0;0.0;0.0;0.0;7.83;230;17.0;260;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-24;79.0;100.0;0.0;0.0;0.0;9.62;230;17.9;240;25.95;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-07-28;73.9;93.9;0.0;0.0;0.0;5.14;250;12.97;220;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-30;73.0;89.1;0.0;0.0;0.0;5.59;60;14.09;30;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-31;64.0;78.1;0.12;0.0;0.0;2.91;100;10.07;110;16.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-08-03;71.1;91.0;0.0;0.0;0.0;3.8;190;10.07;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-14;73.9;88.0;0.0;0.0;0.0;7.61;90;14.09;90;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-18;75.0;96.1;0.1;0.0;0.0;6.49;240;19.91;230;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-21;66.9;90.0;0.0;0.0;0.0;3.36;130;12.97;140;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-08-23;72.0;89.1;0.0;0.0;0.0;4.25;100;16.11;70;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-28;70.0;90.0;0.0;0.0;0.0;2.68;50;12.97;110;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-08-31;64.9;97.0;0.0;0.0;0.0;2.24;50;10.07;30;16.11;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-08;71.1;91.0;0.0;0.0;0.0;8.95;280;17.9;270;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-10;57.9;88.0;0.0;0.0;0.0;5.37;30;14.09;10;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-12;64.9;88.0;0.03;0.0;0.0;3.8;290;12.97;340;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2010-09-13;63.0;87.1;0.0;0.0;0.0;3.58;60;16.11;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-14;60.1;96.1;0.0;0.0;0.0;4.03;280;16.11;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-19;60.1;93.0;0.0;0.0;0.0;2.01;80;10.07;130;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-20;64.0;93.0;0.0;0.0;0.0;4.7;50;14.09;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-22;70.0;96.1;0.0;0.0;0.0;8.5;240;17.9;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-23;71.1;99.0;0.0;0.0;0.0;6.71;220;14.99;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-24;70.0;96.1;0.0;0.0;0.0;7.83;170;14.99;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-30;68.0;77.0;1.84;0.0;0.0;7.83;160;21.92;170;31.09;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2010-10-05;46.9;69.1;0.0;0.0;0.0;4.03;290;14.99;310;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-07;46.9;82.0;0.0;0.0;0.0;5.59;260;17.9;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-12;57.0;88.0;0.0;0.0;0.0;3.8;230;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-20;52.0;64.9;0.1;0.0;0.0;2.24;40;8.05;50;12.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2010-10-22;43.0;68.0;0.0;0.0;0.0;2.91;290;10.07;330;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-24;46.9;78.1;0.0;0.0;0.0;5.82;230;16.11;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-30;36.0;64.9;0.0;0.0;0.0;5.82;220;17.0;250;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-01;46.0;63.0;0.0;0.0;0.0;8.5;50;16.11;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-03;45.0;55.9;0.02;0.0;0.0;4.03;40;10.07;40;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-11-11;39.9;66.0;0.0;0.0;0.0;4.03;40;14.99;40;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-15;39.9;70.0;0.0;0.0;0.0;1.79;230;8.05;150;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-16;54.0;66.9;0.38;0.0;0.0;8.28;250;25.05;280;36.91;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-11-17;39.9;64.9;0.09;0.0;0.0;7.16;240;31.09;250;42.95;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-11-24;46.0;63.0;0.0;0.0;0.0;5.14;80;12.08;120;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-09;19.9;42.1;0.0;0.0;0.0;2.24;350;8.05;300;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-12;36.0;52.0;0.4;0.0;0.0;7.61;190;21.03;240;29.97;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2010-12-14;16.0;35.1;0.0;0.0;0.0;10.07;280;17.9;300;31.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-12-24;21.9;46.9;0.0;0.0;0.0;0.89;350;8.95;340;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-31;28.9;61.0;0.0;0.0;0.0;2.91;230;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-05;26.1;46.0;0.0;0.0;0.0;0.67;150;6.04;20;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-09;19.0;35.1;0.0;0.0;0.0;4.03;330;12.97;300;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-18;32.0;46.9;0.0;0.0;0.0;4.7;20;12.97;10;21.92;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-01-21;28.0;46.9;0.0;0.0;0.0;7.16;300;17.9;290;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-22;17.1;32.0;0.0;0.0;0.0;5.82;50;14.09;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-26;37.9;43.0;0.37;0.0;0.0;6.26;280;14.99;290;25.05;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-01-27;28.0;48.0;0.0;0.0;0.0;2.68;240;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-28;28.0;55.9;0.0;0.0;0.0;4.47;270;17.0;270;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-02-01;34.0;53.1;0.0;0.0;0.0;4.47;160;8.95;160;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-05;35.1;48.9;0.92;0.0;0.0;8.05;230;21.03;230;25.95;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-02-06;30.0;54.0;0.0;0.0;0.0;2.01;240;8.95;220;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-11;21.0;51.1;0.0;0.0;0.0;1.12;330;6.93;320;10.07;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-02-13;25.0;61.0;0.0;0.0;0.0;6.93;230;17.9;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-16;34.0;63.0;0.0;0.0;0.0;5.37;230;17.9;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-18;52.0;78.1;0.0;0.0;0.0;10.74;230;17.9;280;23.04;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-02-23;28.9;53.1;0.0;0.0;0.0;3.36;50;8.95;50;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-03;35.1;53.1;0.0;0.0;0.0;10.74;70;21.03;80;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-16;46.9;64.0;0.05;0.0;0.0;2.91;270;10.07;300;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-19;55.9;75.0;0.0;0.0;0.0;5.82;40;17.9;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-21;52.0;75.0;0.0;0.0;0.0;12.75;240;27.96;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-23;50.0;82.9;0.45;0.0;0.0;6.71;230;25.95;220;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-03-30;39.9;48.0;1.05;0.0;0.0;7.83;100;21.92;100;29.08;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-01;37.9;55.0;0.0;0.0;0.0;6.26;280;17.9;290;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-02;37.0;64.9;0.0;0.0;0.0;8.95;270;27.96;280;42.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-07;46.0;79.0;0.0;0.0;0.0;6.49;230;14.99;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-08;53.1;82.0;0.06;0.0;0.0;5.14;30;21.92;20;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-04-10;52.0;72.0;0.0;0.0;0.0;3.8;210;8.95;200;14.09;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-12;57.0;73.0;0.0;0.0;0.0;12.3;220;31.99;200;40.04;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-04-13;46.9;72.0;0.0;0.0;0.0;5.14;290;14.09;270;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-19;55.9;84.9;0.0;0.0;0.0;11.18;230;21.03;190;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-21;55.0;73.0;0.01;0.0;0.0;5.82;120;16.11;360;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-23;54.0;78.1;0.01;0.0;0.0;5.82;210;17.0;210;23.04;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-24;62.1;87.1;0.0;0.0;0.0;11.18;230;21.92;210;25.95;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-26;68.0;82.9;0.0;0.0;0.0;10.29;190;17.9;190;25.05;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-04-27;68.0;87.1;0.21;0.0;0.0;12.97;230;29.97;230;40.94;Yes;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-05-14;63.0;79.0;0.12;0.0;0.0;4.7;170;14.09;170;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-05-17;57.9;72.0;0.17;0.0;0.0;7.16;180;16.11;160;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-05-20;57.0;82.0;0.0;0.0;0.0;2.68;260;12.08;240;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-22;59.0;89.1;0.0;0.0;0.0;4.03;280;12.08;290;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-23;66.0;91.0;0.09;0.0;0.0;7.38;230;19.91;210;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-06-02;70.0;95.0;0.0;0.0;0.0;2.91;20;10.07;30;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-06-03;66.0;84.9;0.0;0.0;0.0;6.93;40;16.11;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-05;69.1;90.0;0.0;0.0;0.0;5.82;40;16.11;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-06;69.1;90.0;0.0;0.0;0.0;4.7;50;12.97;20;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-10;72.0;96.1;0.0;0.0;0.0;7.38;140;12.97;80;31.99;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-06-12;66.9;93.9;0.24;0.0;0.0;5.59;300;23.04;310;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-06-16;68.0;91.0;0.0;0.0;0.0;8.5;230;19.91;200;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-17;66.9;91.9;0.0;0.0;0.0;4.92;230;14.99;150;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-24;72.0;96.1;0.02;0.0;0.0;11.41;230;21.92;240;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-25;70.0;89.1;0.0;0.0;0.0;4.03;250;14.99;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-26;68.0;93.9;0.0;0.0;0.0;3.58;230;14.09;250;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-29;68.0;93.0;0.04;0.0;0.0;4.47;10;10.07;360;17.0;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-01;64.9;93.0;0.0;0.0;0.0;3.13;30;14.09;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-06;73.0;89.1;0.22;0.0;0.0;6.26;220;21.92;220;25.95;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-14;69.1;87.1;0.0;0.0;0.0;8.72;50;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-16;63.0;89.1;0.0;0.0;0.0;6.04;100;12.97;140;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-17;68.0;88.0;0.0;0.0;0.0;2.68;200;8.95;120;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-25;73.9;97.0;0.07;0.0;0.0;4.92;250;25.95;240;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-27;73.0;99.0;0.0;0.0;0.0;4.92;110;14.99;140;27.96;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-31;73.0;84.9;1.16;0.0;0.0;2.68;30;14.99;40;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-08-01;71.1;93.9;0.0;0.0;0.0;2.46;80;12.08;50;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-04;77.0;95.0;0.0;0.0;0.0;4.92;90;14.09;30;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-08;73.0;96.1;0.0;0.0;0.0;5.59;280;12.97;260;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-16;64.0;88.0;0.0;0.0;0.0;1.79;50;8.95;30;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-23;66.0;84.0;0.0;0.0;0.0;5.82;60;12.97;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-01;60.1;86.0;0.0;0.0;0.0;2.01;90;12.08;90;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-12;66.0;87.1;0.0;0.0;0.0;2.91;140;8.95;40;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-21;66.9;82.9;0.43;0.0;0.0;3.36;120;8.05;;;Yes;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-09-24;66.9;78.1;0.03;0.0;0.0;3.8;90;8.05;;;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-26;68.0;84.9;0.0;0.0;0.0;2.91;160;17.9;160;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-29;61.0;84.0;0.0;0.0;0.0;4.25;240;16.11;280;21.92;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-10;55.9;75.0;0.0;0.0;0.0;6.71;50;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-18;59.0;82.9;1.04;0.0;0.0;6.26;170;14.09;160;19.91;No;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-10-19;54.0;68.0;0.84;0.0;0.0;10.51;250;25.95;260;34.9;No;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-10-23;39.9;69.1;0.0;0.0;0.0;1.57;80;8.95;90;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-24;43.0;72.0;0.0;0.0;0.0;1.12;260;8.95;270;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-03;36.0;66.9;0.17;0.0;0.0;4.03;180;12.97;180;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-04;46.9;55.0;1.43;0.0;0.0;11.41;40;21.03;30;29.08;No;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-11-11;33.1;53.1;0.0;0.0;0.0;5.82;300;16.11;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-15;62.1;78.1;0.0;0.0;0.0;10.51;220;21.03;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-21;60.1;77.0;0.0;0.0;0.0;4.7;220;12.08;230;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-23;48.9;73.9;0.18;0.0;0.0;12.08;190;21.92;290;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-30;34.0;53.1;0.0;0.0;0.0;5.82;300;14.99;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-05;45.0;71.1;0.0;0.0;0.0;4.7;160;12.08;150;16.11;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-10;36.0;53.1;0.0;0.0;0.0;2.91;50;12.08;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-22;61.0;68.0;0.08;0.0;0.0;7.83;210;21.03;200;29.08;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-27;42.1;64.0;0.56;0.0;0.0;11.86;240;29.97;230;44.07;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-29;26.1;55.9;0.0;0.0;0.0;4.7;230;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-31;39.9;64.9;0.0;0.0;0.0;6.49;270;14.99;290;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-01;35.1;68.0;0.01;0.0;0.0;7.83;220;23.04;210;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-06;33.1;66.0;0.0;0.0;0.0;5.59;230;14.09;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-11;44.1;60.1;0.61;0.0;0.0;8.05;230;19.91;230;27.96;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-01-12;44.1;59.0;0.0;0.0;0.0;12.97;220;23.04;210;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-17;42.1;64.9;0.1;0.0;0.0;14.99;240;31.09;230;40.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-20;33.1;57.0;0.19;0.0;0.0;3.8;130;12.08;120;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-01-21;36.0;57.9;0.42;0.0;0.0;7.61;220;17.9;220;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-01-25;34.0;64.0;0.0;0.0;0.0;1.79;150;8.95;150;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-28;32.0;62.1;0.0;0.0;0.0;4.47;340;14.99;330;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-29;32.0;53.1;0.0;0.0;0.0;5.59;230;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-31;36.0;68.0;0.0;0.0;0.0;10.07;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-01;46.9;70.0;0.0;0.0;0.0;7.83;230;19.91;240;25.05;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-02-07;32.0;57.0;0.0;0.0;0.0;1.12;40;10.07;50;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-08;28.9;51.1;0.0;0.0;0.0;2.01;350;8.05;330;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-14;39.0;60.1;0.0;0.0;0.0;9.17;230;23.04;230;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-15;41.0;64.0;0.0;0.0;0.0;3.36;50;12.08;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-17;42.1;63.0;0.0;0.0;0.0;2.46;280;8.95;10;16.11;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-18;39.9;64.9;0.0;0.0;0.0;2.46;220;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-24;50.0;78.1;0.09;0.0;0.0;17.45;230;36.01;220;46.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-28;41.0;66.0;0.0;0.0;0.0;4.25;50;12.97;50;17.0;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-04;34.0;54.0;0.17;0.0;0.0;5.37;300;19.91;260;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-06;27.0;54.0;0.0;0.0;0.0;4.03;200;10.07;110;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-08;48.0;75.0;0.0;0.0;0.0;10.07;220;23.04;210;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-13;57.0;78.1;0.02;0.0;0.0;10.51;230;17.0;230;23.04;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-21;60.1;75.0;0.04;0.0;0.0;3.13;120;12.08;120;14.99;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2012-03-25;55.9;68.0;0.03;0.0;0.0;3.8;330;12.97;20;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-04;57.0;84.9;0.62;0.0;0.0;4.25;240;16.11;350;25.95;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-04-08;37.9;75.9;0.0;0.0;0.0;3.58;280;17.0;260;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-17;60.1;86.0;0.0;0.0;0.0;6.93;60;17.0;80;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-28;54.0;62.1;0.0;0.0;0.0;6.04;80;14.99;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-29;55.0;77.0;0.0;0.0;0.0;3.36;30;12.08;30;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-07;57.9;78.1;0.0;0.0;0.0;5.59;140;12.97;130;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-08;61.0;80.1;0.0;0.0;0.0;7.83;200;16.11;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-10;51.1;72.0;0.0;0.0;0.0;3.8;290;14.09;290;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-13;60.1;75.0;0.15;0.0;0.0;5.59;190;14.09;180;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-14;63.0;75.0;0.49;0.0;0.0;6.26;180;16.11;180;23.04;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-20;52.0;82.0;0.0;0.0;0.0;6.49;30;21.03;40;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-21;66.0;82.0;0.0;0.0;0.0;1.34;50;8.95;150;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-10;64.9;89.1;0.0;0.0;0.0;6.26;200;14.09;200;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-12;68.0;82.9;0.43;0.0;0.0;7.61;50;19.91;50;25.05;No;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2012-06-16;53.1;80.1;0.0;0.0;0.0;6.26;40;17.0;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-13;48.0;69.1;0.0;0.0;0.0;6.93;230;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-19;34.0;54.0;0.0;0.0;0.0;6.93;270;17.0;260;23.04;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-01-21;28.0;35.1;0.8;0.0;0.0;5.82;90;12.97;90;17.0;Yes;No;Yes;Yes;No;Yes;Yes;No;No;Yes;No;No;No;No;No;No;No +2007-01-25;30.9;46.9;0.0;0.0;0.0;6.49;290;19.91;310;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-27;32.0;64.0;0.0;0.0;0.0;11.41;230;19.91;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-05;19.9;39.9;0.0;0.0;0.0;7.83;270;17.9;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-08;27.0;48.0;0.0;0.0;0.0;3.13;300;14.99;280;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-09;21.9;42.1;0.0;0.0;0.0;3.36;360;14.09;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-26;41.0;61.0;0.0;0.0;0.0;2.46;210;8.95;230;12.08;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-04;34.0;50.0;0.0;0.0;0.0;6.93;280;17.0;280;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-05;26.1;64.0;0.0;0.0;0.0;8.5;240;21.92;240;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-17;33.1;48.9;0.0;0.0;0.0;7.38;330;19.91;330;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-18;28.0;48.9;0.0;0.0;0.0;4.25;240;14.09;350;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-05;41.0;57.9;0.0;0.0;0.0;3.58;310;14.99;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-06;30.0;57.0;0.01;0.0;0.0;2.46;360;16.11;290;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-11;46.0;59.0;0.73;0.0;0.0;6.49;140;17.9;150;25.05;Yes;No;No;Yes;No;No;No;Yes;No;No;Yes;Yes;No;No;No;No;No +2007-04-17;46.9;72.0;0.0;0.0;0.0;7.61;360;19.91;320;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-19;44.1;57.9;0.04;0.0;0.0;4.47;90;12.97;90;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-23;52.0;82.9;0.0;0.0;0.0;11.41;230;21.92;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-27;63.0;82.9;0.25;0.0;0.0;11.18;220;21.03;230;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-28;59.0;75.9;0.0;0.0;0.0;6.71;270;16.11;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-29;53.1;80.1;0.0;0.0;0.0;6.49;300;17.9;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-02;63.0;90.0;0.0;0.0;0.0;8.72;230;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-03;57.0;71.1;0.0;0.0;0.0;9.62;80;17.0;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-05;55.0;66.0;0.01;0.0;0.0;2.68;320;6.93;90;8.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-05-07;42.1;70.0;0.0;0.0;0.0;12.53;50;25.05;40;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-08;50.0;69.1;0.04;0.0;0.0;11.41;40;17.9;40;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-05-16;62.1;84.0;0.02;0.0;0.0;13.87;230;23.94;230;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-05-18;48.9;70.0;0.0;0.0;0.0;7.83;30;16.11;40;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-25;55.9;86.0;0.0;0.0;0.0;4.92;240;12.97;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-14;60.1;70.0;0.01;0.0;0.0;6.71;80;14.99;80;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-22;62.1;91.0;0.13;0.0;0.0;4.25;30;19.91;30;25.05;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-06-24;66.9;89.1;0.31;0.0;0.0;5.37;260;14.99;260;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-06-27;69.1;93.0;0.0;0.0;0.0;7.38;230;21.03;220;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-28;73.0;93.9;0.0;0.0;0.0;9.17;190;17.9;200;23.04;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-01;66.0;86.0;0.0;0.0;0.0;6.93;30;17.0;70;21.92;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-03;63.0;86.0;0.0;0.0;0.0;6.93;180;12.97;180;17.0;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-04;64.9;89.1;0.0;0.0;0.0;9.17;200;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-15;66.9;90.0;0.0;0.0;0.0;7.38;230;14.99;230;17.9;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-16;70.0;91.9;0.0;0.0;0.0;8.05;230;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-22;57.9;84.9;0.0;0.0;0.0;5.14;50;17.9;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-29;66.9;89.1;0.0;0.0;0.0;4.25;160;16.11;150;19.91;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-09;78.1;104.0;0.0;0.0;0.0;4.25;120;23.04;90;25.95;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-20;75.0;102.9;0.0;0.0;0.0;10.51;230;19.91;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-26;72.0;98.1;0.06;0.0;0.0;6.04;10;21.03;10;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-08-29;73.0;93.0;0.0;0.0;0.0;6.49;100;12.08;150;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-03;59.0;91.0;0.0;0.0;0.0;3.36;90;10.07;130;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-05;66.0;96.1;0.0;0.0;0.0;4.25;170;10.07;170;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-09;60.1;95.0;0.0;0.0;0.0;3.58;20;12.08;10;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-15;61.0;82.0;0.0;0.0;0.0;5.59;50;16.11;360;21.92;Yes;No;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-23;66.0;91.9;0.0;0.0;0.0;4.47;110;12.97;80;17.0;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-24;64.9;86.0;0.0;0.0;0.0;5.59;50;12.08;50;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-26;63.0;89.1;0.0;0.0;0.0;5.82;170;12.08;170;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-09;66.0;93.9;0.0;0.0;0.0;4.7;270;10.07;300;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-18;63.0;84.9;0.04;0.0;0.0;5.14;230;12.97;170;16.11;Yes;Yes;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-10-31;37.9;73.9;0.0;0.0;0.0;1.79;140;8.95;170;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-03;39.9;66.0;0.0;0.0;0.0;5.37;20;14.99;20;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-07;30.0;55.0;0.0;0.0;0.0;3.8;40;12.97;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-09;34.0;61.0;0.0;0.0;0.0;4.25;210;12.08;230;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-16;34.0;51.1;0.0;0.0;0.0;6.26;290;17.0;320;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-19;46.0;61.0;0.0;0.0;0.0;3.13;10;8.95;40;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-21;46.9;78.1;0.0;0.0;0.0;7.61;230;21.03;220;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-25;36.0;48.9;0.06;0.0;0.0;3.13;90;10.07;100;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-11-29;36.0;63.0;0.0;0.0;0.0;3.36;260;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-02;33.1;54.0;0.0;0.0;0.0;5.82;230;14.99;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-04;36.0;45.0;0.0;0.0;0.0;5.82;270;16.11;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-13;54.0;75.9;0.01;0.0;0.0;9.17;220;23.94;230;29.08;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-17;28.0;44.1;0.0;0.0;0.0;6.26;270;14.99;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-23;46.9;66.9;0.16;0.0;0.0;10.74;220;25.05;220;29.97;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-12-27;36.0;57.9;0.0;0.0;0.0;3.58;220;14.09;220;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-03;19.9;35.1;0.0;0.0;0.0;4.47;330;12.08;310;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-08;50.0;73.0;0.0;0.0;0.0;8.5;210;16.11;210;21.03;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-11;48.9;68.0;0.0;0.0;0.0;13.42;220;29.97;220;38.03;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-25;21.0;39.0;0.0;0.0;0.0;3.8;340;14.09;340;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-29;37.0;64.0;0.0;0.0;0.0;13.42;220;23.94;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-01;36.0;60.1;0.83;0.0;0.0;8.5;330;25.95;210;35.12;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2008-02-06;61.0;77.0;0.0;0.0;0.0;19.01;220;33.11;230;40.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-07;43.0;66.0;0.0;0.0;0.0;8.05;230;25.95;240;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-11;27.0;46.9;0.0;0.0;0.0;4.92;20;12.08;320;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-12;30.0;62.1;0.28;0.0;0.0;6.04;240;27.96;240;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No +2008-02-18;45.0;73.0;0.29;0.0;0.0;14.54;230;31.09;240;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-19;30.9;55.0;0.0;0.0;0.0;8.72;250;23.04;220;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-25;35.1;61.0;0.01;0.0;0.0;4.25;240;12.08;240;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2008-02-28;21.9;43.0;0.0;0.0;0.0;5.82;260;17.0;260;21.92;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-03-01;39.9;64.9;0.0;0.0;0.0;9.84;270;21.92;270;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-12;44.1;68.0;0.0;0.0;0.0;5.14;280;17.0;260;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-25;28.9;57.9;0.0;0.0;0.0;6.26;220;17.0;210;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-02;51.1;66.0;0.0;0.0;0.0;9.17;110;17.0;90;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-10;48.0;78.1;0.0;0.0;0.0;4.03;170;14.09;170;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-04-19;54.0;82.0;0.0;0.0;0.0;11.18;170;19.91;180;25.05;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-04-22;55.9;71.1;0.23;0.0;0.0;11.41;40;23.04;30;27.96;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-04-24;51.1;80.1;0.0;0.0;0.0;2.46;90;12.08;120;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-26;60.1;87.1;0.0;0.0;0.0;9.62;220;19.91;230;23.04;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-05;55.0;73.0;0.0;0.0;0.0;6.71;40;14.99;30;17.9;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-14;44.1;73.9;0.0;0.0;0.0;6.26;230;16.11;220;21.92;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-05-20;57.9;82.9;0.43;0.0;0.0;10.51;230;25.05;220;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-05-22;48.0;78.1;0.0;0.0;0.0;4.03;230;16.11;280;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-23;52.0;79.0;0.0;0.0;0.0;4.7;70;10.07;100;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-01;64.9;91.0;0.14;0.0;0.0;4.92;350;21.92;330;31.09;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-06-05;75.9;96.1;0.0;0.0;0.0;5.82;220;17.0;230;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-06-07;73.9;100.0;0.0;0.0;0.0;5.59;230;16.11;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-14;69.1;96.1;0.01;0.0;0.0;7.61;200;17.9;170;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-06-21;66.0;88.0;1.18;0.0;0.0;4.47;50;23.04;50;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-06-22;64.9;87.1;0.93;0.0;0.0;6.93;200;23.04;200;29.97;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-06-27;71.1;96.1;0.0;0.0;0.0;7.83;220;17.9;220;21.92;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-06-29;69.1;95.0;0.82;0.0;0.0;11.41;230;25.05;230;29.08;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-07-07;69.1;87.1;0.0;0.0;0.0;9.4;230;17.0;220;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-09;70.0;90.0;0.97;0.0;0.0;10.51;300;23.04;300;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-07-13;68.0;91.0;0.0;0.0;0.0;5.14;180;14.09;160;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-17;64.0;89.1;0.0;0.0;0.0;5.37;50;14.99;100;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-07-19;70.0;90.0;0.76;0.0;0.0;3.36;150;19.91;130;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-07-29;72.0;91.9;0.0;0.0;0.0;6.26;230;14.09;220;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-07-30;75.0;93.0;0.0;0.0;0.0;7.61;230;17.0;240;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-08-13;61.0;73.9;0.11;0.0;0.0;3.8;130;14.09;130;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;Yes;No;No +2008-08-17;64.9;84.9;0.0;0.0;0.0;2.46;170;14.99;130;17.0;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-08-22;64.0;88.0;0.0;0.0;0.0;9.4;90;17.0;110;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-29;70.0;89.1;0.0;0.0;0.0;3.58;120;10.07;140;14.99;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;Yes;No +2008-09-04;64.0;90.0;0.0;0.0;0.0;4.47;170;10.07;180;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-09-13;72.0;91.0;0.0;0.0;0.0;6.26;240;14.09;230;17.0;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-15;73.0;86.0;0.0;0.0;0.0;5.59;220;14.09;360;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-09-17;60.1;73.9;0.0;0.0;0.0;3.8;30;10.07;50;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-24;53.1;70.0;0.0;0.0;0.0;12.3;40;23.04;20;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-26;63.0;81.0;0.96;0.0;0.0;10.07;30;21.92;30;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-10;64.9;73.0;0.02;0.0;0.0;6.71;50;16.11;40;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-11;60.1;71.1;0.0;0.0;0.0;9.62;40;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-14;48.9;84.9;0.0;0.0;0.0;1.12;230;10.07;230;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-16;55.9;84.9;0.0;0.0;0.0;2.24;220;12.08;240;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-20;35.1;66.9;0.0;0.0;0.0;2.24;220;10.07;220;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-26;44.1;70.0;0.0;0.0;0.0;3.13;230;12.08;;;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-05;52.0;68.0;0.0;0.0;0.0;6.93;40;14.99;30;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-07;46.9;80.1;0.0;0.0;0.0;4.03;230;14.99;220;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-10;34.0;61.0;0.0;0.0;0.0;1.79;270;12.08;260;17.0;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-15;51.1;75.9;0.62;0.0;0.0;14.54;220;29.97;240;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-11-22;21.0;46.0;0.0;0.0;0.0;3.13;270;12.97;330;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-24;28.0;55.0;0.19;0.0;0.0;6.04;220;16.11;220;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-10;61.0;70.0;0.07;0.0;0.0;10.51;170;17.9;170;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-12-17;44.1;57.9;0.0;0.0;0.0;4.47;230;14.09;240;14.99;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-19;54.0;71.1;0.0;0.0;0.0;10.74;230;31.99;220;36.91;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2008-12-23;21.9;44.1;0.0;0.0;0.0;4.7;180;14.99;170;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-06;43.0;57.0;0.9;0.0;0.0;6.04;90;16.11;100;21.03;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-01-17;10.9;36.0;0.0;0.0;0.0;5.82;200;14.09;180;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-20;23.0;35.1;0.19;3.5;2.01;6.71;30;19.91;30;25.95;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2009-01-26;33.1;46.9;0.0;0.0;0.0;3.58;100;10.07;100;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-06;19.9;55.0;0.0;0.0;0.0;5.82;220;17.0;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-09;39.9;66.0;0.0;0.0;0.0;6.04;100;14.09;120;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-15;34.0;54.0;0.0;0.0;0.0;4.7;30;14.09;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-16;30.9;46.0;0.0;0.0;0.0;7.38;60;16.11;50;21.03;No;No;No;Yes;No;No;No;No;Yes;No;No;No;No;Yes;No;No;No +2009-02-28;37.9;57.9;0.72;0.0;0.0;9.62;70;21.03;80;25.05;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-03-01;35.1;37.9;1.38;0.0;0.0;12.75;50;23.04;40;27.96;Yes;No;Yes;Yes;No;No;No;Yes;Yes;No;No;No;No;Yes;No;No;No +2009-03-04;19.9;50.0;0.0;0.0;0.0;2.91;220;14.09;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-14;39.0;44.1;0.73;0.0;0.0;4.92;50;14.09;60;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-03-17;43.0;62.1;0.0;0.0;0.0;7.38;40;14.99;20;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2009-03-25;42.1;48.9;0.01;0.0;0.0;4.7;130;12.97;110;16.11;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-03-27;57.0;68.0;0.62;0.0;0.0;3.36;170;14.09;180;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-04-05;44.1;82.9;0.0;0.0;0.0;8.5;210;23.04;200;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-07;41.0;51.1;0.0;0.0;0.0;10.07;260;21.92;280;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-14;55.9;73.0;0.12;0.0;0.0;7.61;210;14.99;200;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2009-04-19;53.1;73.0;0.0;0.0;0.0;8.5;230;21.03;240;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-04-20;59.0;79.0;0.36;0.0;0.0;10.29;220;23.94;200;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-11;48.0;68.0;0.07;0.0;0.0;6.49;50;17.0;20;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-12;46.9;75.9;0.0;0.0;0.0;3.36;20;14.09;30;19.91;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-05-14;60.1;82.0;0.0;0.0;0.0;7.16;170;16.11;180;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-23;61.0;84.9;0.0;0.0;0.0;5.59;180;14.99;170;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-26;69.1;82.0;0.69;0.0;0.0;6.49;130;17.0;130;21.92;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-20;73.9;96.1;0.0;0.0;0.0;7.61;270;16.11;290;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-06-27;71.1;93.9;0.0;0.0;0.0;5.59;40;14.99;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-30;64.0;95.0;0.0;0.0;0.0;4.92;240;19.91;250;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-06;70.0;82.9;0.12;0.0;0.0;5.14;40;12.08;40;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2009-07-09;69.1;87.1;0.0;0.0;0.0;6.93;90;14.09;80;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-10;66.0;84.0;0.0;0.0;0.0;4.7;90;8.05;;;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-23;72.0;93.0;0.0;0.0;0.0;5.59;210;14.99;200;21.92;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-07-29;72.0;91.9;0.28;0.0;0.0;10.29;230;31.09;240;40.04;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-07-30;73.9;95.0;0.06;0.0;0.0;8.28;210;23.94;210;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2009-08-02;73.9;82.9;0.27;0.0;0.0;8.95;230;16.11;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2009-08-05;72.0;96.1;0.18;0.0;0.0;5.82;230;17.9;230;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-07;68.0;88.0;0.0;0.0;0.0;3.36;180;14.09;180;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-08-09;70.0;99.0;0.0;0.0;0.0;7.61;220;23.04;210;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-12;71.1;84.0;0.03;0.0;0.0;2.24;30;12.08;30;19.91;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-24;68.0;87.1;0.0;0.0;0.0;3.8;40;12.97;50;16.11;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-27;70.0;93.9;0.0;0.0;0.0;4.7;230;12.08;90;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-06;63.0;87.1;0.0;0.0;0.0;6.26;100;19.91;90;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-07;63.0;79.0;0.57;0.0;0.0;7.38;50;17.9;40;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2009-09-08;68.0;80.1;0.0;0.0;0.0;8.05;30;17.0;30;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-09-13;59.0;82.0;0.0;0.0;0.0;4.25;50;12.97;10;21.92;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-14;57.0;87.1;0.0;0.0;0.0;2.01;90;12.08;120;16.11;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-18;64.9;77.0;0.0;0.0;0.0;2.01;110;10.07;130;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-19;62.1;81.0;0.0;0.0;0.0;5.59;90;14.99;80;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-26;63.0;68.0;0.32;0.0;0.0;6.49;90;14.09;110;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2012-06-25;72.0;93.0;0.0;0.0;0.0;6.49;40;17.0;40;21.03;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-01;75.0;102.9;0.0;0.0;0.0;4.92;20;23.94;30;36.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2012-07-06;71.1;100.0;0.0;0.0;0.0;3.8;20;17.9;10;27.96;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-09;73.0;96.1;0.23;0.0;0.0;3.36;180;17.0;80;23.04;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-11;68.0;80.1;0.45;0.0;0.0;4.03;90;21.92;90;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-21;71.1;93.0;1.09;0.0;0.0;7.38;200;19.91;190;23.94;No;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-25;70.0;90.0;0.0;0.0;0.0;4.03;240;12.08;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-27;73.9;99.0;0.14;0.0;0.0;6.93;20;19.91;300;31.09;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-29;66.9;91.9;0.0;0.0;0.0;2.01;100;8.95;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-02;72.0;93.0;0.05;0.0;0.0;5.82;180;23.94;170;29.08;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-06;73.9;93.0;0.49;0.0;0.0;6.26;230;21.92;230;25.95;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-10;72.0;87.1;0.13;0.0;0.0;8.95;220;21.92;240;27.96;No;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2012-08-14;66.0;91.0;0.0;0.0;0.0;5.59;230;16.11;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-24;68.0;77.0;0.02;0.0;0.0;4.7;80;12.97;90;17.0;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-26;64.9;84.0;0.0;0.0;0.0;3.13;50;10.07;60;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-28;73.0;87.1;0.0;0.0;0.0;7.61;210;17.0;220;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-30;68.0;89.1;0.0;0.0;0.0;4.47;170;12.97;180;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-02;72.0;88.0;1.85;0.0;0.0;3.58;340;17.0;340;23.04;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-14;63.0;80.1;0.0;0.0;0.0;1.57;50;8.95;50;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-25;48.0;77.0;0.0;0.0;0.0;3.13;210;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-02;66.9;88.0;0.12;0.0;0.0;7.61;210;12.97;210;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-07;50.0;64.9;0.23;0.0;0.0;6.71;40;17.0;50;23.04;No;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2012-10-14;44.1;78.1;0.0;0.0;0.0;3.8;230;14.99;230;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-16;44.1;70.0;0.0;0.0;0.0;2.01;280;8.95;10;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-25;50.0;80.1;0.0;0.0;0.0;1.34;100;8.05;140;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-27;62.1;66.0;0.0;0.0;0.0;12.08;40;21.03;30;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-01;37.9;57.9;0.0;0.0;0.0;5.14;270;16.11;300;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-02;34.0;64.9;0.0;0.0;0.0;3.58;310;14.99;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-18;45.0;55.9;0.0;0.0;0.0;12.3;40;19.91;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-19;46.9;59.0;0.0;0.0;0.0;8.05;40;16.11;40;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-30;30.9;63.0;0.0;0.0;0.0;2.46;230;12.97;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-02;39.0;69.1;0.0;0.0;0.0;4.47;220;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-14;27.0;57.9;0.0;0.0;0.0;0.89;240;6.93;230;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-16;48.0;57.9;0.09;0.0;0.0;5.59;220;16.11;220;17.9;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-12-21;37.0;57.9;0.0;0.0;0.0;15.43;290;25.05;240;38.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-24;44.1;53.1;0.0;0.0;0.0;6.26;210;17.0;210;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-28;27.0;45.0;0.0;0.0;0.0;1.34;180;6.93;170;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-29;37.9;52.0;0.37;0.0;0.0;6.26;290;17.0;300;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-31;25.0;53.1;0.0;0.0;0.0;6.26;230;21.92;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-15;44.1;60.1;0.01;0.0;0.0;7.83;30;17.0;20;23.94;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-01-21;28.9;59.0;0.0;0.0;0.0;5.14;230;17.9;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-10;25.0;53.1;0.03;0.0;0.0;4.47;150;12.08;160;16.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-11;45.0;63.0;0.05;0.0;0.0;10.51;220;21.03;240;25.05;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-02-16;32.0;46.9;0.39;0.71;0.0;4.03;10;12.97;20;21.03;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2013-02-23;36.0;44.1;0.92;0.0;0.0;2.46;30;10.07;40;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-02-25;32.0;42.1;0.0;0.0;0.0;6.93;70;16.11;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-09;33.1;62.1;0.0;0.0;0.0;3.58;40;12.97;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-15;28.0;62.1;0.0;0.0;0.0;7.83;240;19.91;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-20;37.9;55.0;0.0;0.0;0.0;3.8;230;16.11;250;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-25;35.1;48.0;0.0;0.0;0.0;7.38;270;21.92;270;31.99;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-03-26;32.0;50.0;0.0;0.0;0.0;6.49;310;12.97;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-30;37.9;66.0;0.0;0.0;0.0;3.58;230;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-05;39.0;63.0;0.04;0.0;0.0;2.68;30;12.08;30;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-09;57.0;82.9;0.0;0.0;0.0;7.61;240;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-17;57.9;80.1;0.0;0.0;0.0;7.61;200;14.99;200;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-20;44.1;64.0;0.01;0.0;0.0;3.8;240;21.92;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-21;41.0;61.0;0.0;0.0;0.0;9.4;50;21.03;50;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-02;52.0;64.9;0.0;0.0;0.0;7.61;50;17.0;50;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-04;48.9;64.0;0.0;0.0;0.0;11.63;50;19.91;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-05;50.0;60.1;0.0;0.0;0.0;12.3;80;21.03;80;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-10;55.9;84.0;0.0;0.0;0.0;7.16;240;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-11;64.9;81.0;0.3;0.0;0.0;9.62;230;23.04;240;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-17;61.0;86.0;0.0;0.0;0.0;2.46;110;12.97;110;16.11;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-05-25;41.0;73.0;0.0;0.0;0.0;2.91;270;14.99;260;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-05;64.0;82.0;0.0;0.0;0.0;6.04;110;14.09;120;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-11;70.0;86.0;0.0;0.0;0.0;8.5;240;16.11;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-14;59.0;80.1;0.0;0.0;0.0;4.25;340;14.09;80;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-19;64.9;80.1;0.0;0.0;0.0;5.14;70;12.97;90;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-16;69.1;93.9;0.0;0.0;0.0;2.01;210;12.08;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-21;73.0;89.1;0.0;0.0;0.0;6.71;220;16.11;210;21.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-08-02;66.9;89.1;0.77;0.0;0.0;0.67;250;14.99;240;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-05;64.0;82.0;0.0;0.0;0.0;4.47;190;12.97;190;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-12;73.0;91.9;0.66;0.0;0.0;2.01;300;19.91;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-13;71.1;90.0;0.08;0.0;0.0;5.59;230;21.03;240;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-18;66.9;81.0;0.05;0.0;0.0;5.59;270;12.97;260;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-29;72.0;87.1;0.0;0.0;0.0;6.93;50;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-03;71.1;89.1;0.3;0.0;0.0;4.03;270;21.92;270;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-04;68.0;84.9;0.0;0.0;0.0;2.91;80;12.97;60;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-08;57.9;63.0;0.0;0.0;0.0;11.41;50;19.91;60;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-13;62.1;66.9;0.07;0.0;0.0;7.16;30;12.97;30;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-29;50.0;73.0;0.0;0.0;0.0;1.79;40;8.05;40;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-30;55.0;72.0;0.0;0.0;0.0;4.92;240;14.09;220;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-02;50.0;71.1;0.0;0.0;0.0;4.03;300;14.99;280;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-09;30.2;59.0;0.0;0.0;0.0;3.8;230;14.99;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-12;35.1;61.0;0.01;0.0;0.0;6.93;40;19.91;30;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-17;52.0;71.1;0.08;0.0;0.0;5.37;210;18.12;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-18;54.0;75.0;0.06;0.0;0.0;7.16;230;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-19;41.0;55.9;0.0;0.0;0.0;6.49;20;14.09;30;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-28;23.2;45.0;0.0;0.0;0.0;1.79;310;12.97;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-19;30.2;62.1;0.0;0.0;0.0;7.61;230;21.92;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-21;50.0;73.9;0.0;0.0;0.0;9.17;220;21.03;200;29.97;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-01-02;37.0;48.9;0.33;0.0;0.0;2.68;310;12.97;320;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-11;45.0;69.1;0.28;0.0;0.0;10.29;230;59.95;220;86.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-13;33.1;62.1;0.0;0.0;0.0;7.16;220;21.03;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-15;33.1;59.0;0.0;0.0;0.0;4.47;180;17.0;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-18;27.1;46.9;0.0;0.0;0.0;6.71;270;17.0;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-19;30.2;54.0;0.0;0.0;0.0;8.5;240;17.0;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-27;33.1;64.9;0.0;0.0;0.0;9.62;230;18.12;30;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-08;34.0;50.0;0.0;0.0;0.0;2.46;70;8.95;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-11;25.2;35.1;0.0;0.0;0.0;7.16;50;14.09;80;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-14;27.1;55.9;0.0;0.0;1.18;8.95;220;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-16;29.1;53.1;0.0;0.0;0.0;4.47;250;16.11;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-19;48.9;72.0;0.5;0.0;0.0;8.28;240;21.92;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-20;52.0;72.0;0.0;0.0;0.0;9.17;200;23.94;200;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-03;20.1;61.0;0.36;0.2;0.0;10.96;30;25.05;30;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-16;36.0;55.9;0.29;0.0;0.0;8.95;50;18.12;50;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-17;31.1;36.0;0.46;0.0;0.0;10.29;50;19.91;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-22;46.0;75.9;0.0;0.0;0.0;8.05;220;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-31;36.0;72.0;0.0;0.0;0.0;4.03;360;12.97;330;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-12;54.0;81.0;0.0;0.0;0.0;7.16;80;16.11;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-15;39.0;71.1;1.32;0.0;0.0;10.51;280;25.05;270;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-25;48.9;80.1;0.47;0.0;0.0;6.71;210;23.94;290;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-27;51.1;84.0;0.0;0.0;0.0;5.14;130;16.11;130;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-02;51.1;69.1;0.0;0.0;0.0;4.7;230;14.09;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-03;53.1;75.9;0.0;0.0;0.0;5.82;240;17.0;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-07;59.0;78.1;0.0;0.0;0.0;3.58;110;12.08;120;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-19;45.0;73.0;0.0;0.0;0.0;2.01;40;12.08;130;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-21;60.1;87.1;0.0;0.0;0.0;7.83;240;16.11;250;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-23;63.0;82.0;0.0;0.0;0.0;3.58;300;12.97;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-27;66.0;90.0;0.22;0.0;0.0;5.82;300;25.05;280;40.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-07;62.1;84.9;0.0;0.0;0.0;2.91;80;8.95;80;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-09;69.1;90.0;0.29;0.0;0.0;3.8;320;14.09;300;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-11;68.0;93.9;0.58;0.0;0.0;4.7;200;31.99;190;44.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-23;64.9;84.9;0.0;0.0;0.0;5.14;120;10.07;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-24;64.9;86.0;0.0;0.0;0.0;5.82;190;12.97;190;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-26;69.1;93.0;0.0;0.0;0.0;4.03;30;12.08;20;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-29;60.1;84.9;0.0;0.0;0.0;3.8;40;8.95;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-30;66.0;90.0;0.0;0.0;0.0;5.82;230;12.08;190;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-07;66.9;96.1;0.0;0.0;0.0;10.51;230;19.91;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-12;66.0;90.0;0.0;0.0;0.0;3.36;160;10.07;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-18;64.0;86.0;0.0;0.0;0.0;5.82;100;14.99;140;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-21;73.0;79.0;1.16;0.0;0.0;2.68;120;12.08;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-31;66.0;82.0;0.08;0.0;0.0;2.68;120;8.95;90;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-01;64.9;75.9;0.71;0.0;0.0;7.38;80;19.91;90;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-03;66.9;80.1;0.0;0.0;0.0;1.34;120;10.07;140;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-08;69.1;81.0;0.0;0.0;0.0;3.58;120;12.08;120;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-10;66.0;81.0;0.56;0.0;0.0;6.71;100;14.99;110;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-13;66.9;82.0;0.0;0.0;0.0;3.8;290;12.97;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-20;70.0;90.0;1.06;0.0;0.0;2.24;300;31.09;320;57.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-24;63.0;81.0;0.0;0.0;0.0;8.72;40;16.11;90;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-31;73.0;91.0;0.0;0.0;0.0;6.49;230;12.08;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-01;73.0;93.0;0.0;0.0;0.0;4.7;230;12.97;270;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-02;71.1;96.1;0.0;0.0;0.0;7.38;210;23.94;200;33.11;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-09-05;71.1;91.0;0.0;0.0;0.0;3.8;240;12.08;180;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-09;66.0;75.9;0.03;0.0;0.0;5.14;30;12.97;40;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-10;68.0;81.0;0.0;0.0;0.0;2.01;110;6.04;;;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-14;62.1;71.1;0.03;0.0;0.0;6.26;50;17.0;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-16;66.9;82.9;0.01;0.0;0.0;3.13;40;10.07;100;23.04;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-09-18;59.0;81.0;0.01;0.0;0.0;3.36;50;10.07;130;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-29;64.0;73.0;0.01;0.0;0.0;1.12;280;6.93;280;8.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-01;55.9;79.0;0.0;0.0;0.0;0.89;40;8.05;30;12.97;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-10-05;41.0;66.0;0.0;0.0;0.0;3.13;220;10.07;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-07;55.0;80.1;0.0;0.0;0.0;9.4;200;17.0;190;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-21;51.1;73.9;0.0;0.0;0.0;4.03;330;14.09;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-26;45.0;75.9;0.0;0.0;0.0;4.47;280;16.11;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-28;50.0;84.0;0.0;0.0;0.0;5.82;220;14.99;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-30;46.9;66.9;0.0;0.0;0.0;3.36;40;10.07;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-04;39.9;66.0;0.0;0.0;0.0;6.71;230;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-06;50.0;68.0;0.21;0.0;0.0;10.74;230;21.92;310;36.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-17;43.0;66.9;0.43;0.0;0.0;9.4;210;25.05;220;31.99;Yes;Yes;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2014-11-27;35.1;46.9;0.05;0.0;0.0;4.25;320;12.08;310;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-05;39.9;52.0;0.0;0.0;0.0;2.46;90;8.05;50;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-15;30.2;60.1;0.0;0.0;0.0;1.57;90;12.08;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-16;37.0;52.0;0.32;0.0;0.0;3.13;200;10.07;180;14.09;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-12-17;39.0;60.1;0.0;0.0;0.0;3.58;250;12.97;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-20;31.1;39.0;0.07;0.0;0.0;2.91;60;12.97;50;16.11;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2014-12-21;37.9;50.0;0.0;0.0;0.0;4.03;80;10.07;80;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-24;46.0;66.0;1.71;0.0;0.0;7.38;230;18.12;190;25.05;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-26;30.2;57.9;0.0;0.0;0.0;1.57;220;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-30;28.2;41.0;0.02;0.0;0.0;5.82;40;17.0;40;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-01;23.2;51.1;0.0;0.0;0.0;4.7;230;14.99;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-08;11.1;27.1;0.0;0.0;0.0;5.37;210;14.99;360;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-10;22.1;39.0;0.0;0.0;0.0;1.57;20;8.05;30;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-15;31.1;41.0;0.0;0.0;0.0;3.13;230;8.95;240;10.07;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-17;27.1;51.1;0.0;0.0;0.0;4.7;170;12.08;140;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-18;41.0;60.1;0.49;0.0;0.0;5.37;300;18.12;310;31.09;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-01-22;30.2;59.0;0.0;0.0;0.0;2.91;270;12.97;280;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-24;35.1;48.9;0.14;0.0;0.0;5.82;310;12.97;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-02;29.1;62.1;0.39;0.0;0.0;13.42;230;25.95;300;38.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-05;27.1;50.0;0.0;0.0;0.0;6.26;320;16.11;330;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-12;29.1;54.0;0.0;0.0;0.0;5.59;310;21.03;300;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-21;18.1;39.9;0.0;0.0;0.0;3.36;160;8.95;150;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-26;28.2;35.1;0.72;3.19;3.94;6.26;50;17.0;30;25.05;Yes;Yes;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2015-02-27;23.2;45.0;0.0;0.0;3.15;3.13;30;10.07;30;14.09;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-03-02;34.0;61.0;0.0;0.0;0.0;4.92;320;12.97;280;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-04;37.9;75.0;0.02;0.0;0.0;13.87;230;29.97;230;38.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-09;48.0;64.9;0.0;0.0;0.0;3.8;250;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-19;39.9;54.0;0.34;0.0;0.0;4.92;90;14.09;100;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-29;45.0;64.9;0.0;0.0;0.0;3.36;250;14.09;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-30;45.0;59.0;0.01;0.0;0.0;2.91;160;10.07;140;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-02;46.9;54.0;0.01;0.0;0.0;5.14;90;12.97;70;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-05;44.1;61.0;0.01;0.0;0.0;9.62;250;21.03;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-19;37.0;59.0;0.0;0.0;0.0;8.05;190;17.0;190;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-23;31.1;64.0;0.04;0.0;0.0;7.83;180;21.03;170;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-25;27.1;46.9;0.0;0.0;0.0;3.58;270;14.09;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-26;22.1;51.1;0.0;0.0;0.0;2.46;240;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-29;31.1;54.0;0.16;0.0;0.0;8.95;250;23.94;260;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-02;29.1;60.1;0.0;0.0;0.0;3.8;210;10.07;190;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-07;60.1;79.0;0.0;0.0;0.0;12.75;230;23.04;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-15;48.9;66.9;0.0;0.0;0.0;10.51;230;23.04;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-16;34.0;57.9;0.45;0.0;0.0;8.05;50;25.05;50;34.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-19;33.1;45.0;0.25;0.0;0.0;5.37;100;12.08;130;16.11;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2019-02-25;37.0;59.0;0.0;0.0;0.0;7.83;290;19.91;270;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-02;37.0;59.0;0.0;0.0;0.0;4.25;120;12.97;110;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-08;39.0;48.9;0.1;0.0;0.0;4.7;130;10.07;130;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-13;32.0;64.0;0.0;0.0;0.0;4.7;170;12.97;170;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-20;32.0;53.1;0.05;0.0;0.0;6.71;50;12.97;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-22;42.1;63.0;0.0;0.0;0.0;9.4;230;21.03;270;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-23;35.1;62.1;0.0;0.0;0.0;6.04;270;17.0;310;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-31;44.1;64.9;0.01;0.0;0.0;9.17;210;19.91;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-01;34.0;53.1;0.0;0.0;0.0;5.82;50;17.0;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-12;59.0;69.1;0.65;0.0;0.0;9.17;180;17.0;150;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-15;46.9;71.1;0.05;0.0;0.0;10.51;230;29.08;280;36.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-18;61.0;80.1;0.0;0.0;0.0;11.41;230;23.04;200;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-26;51.1;77.0;0.21;0.0;0.0;12.97;230;36.01;230;46.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-27;45.0;73.9;0.0;0.0;0.0;8.05;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-01;63.0;84.0;0.0;0.0;0.0;8.05;240;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-03;63.0;84.0;0.0;0.0;0.0;8.28;220;18.12;220;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-05-04;64.9;86.0;0.63;0.0;0.0;7.38;240;35.12;230;44.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-05-05;63.0;77.0;0.36;0.0;0.0;6.71;240;23.04;250;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-10;66.0;78.1;0.0;0.0;0.0;8.28;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-16;51.1;79.0;0.0;0.0;0.0;4.03;230;14.99;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-18;62.1;91.0;0.0;0.0;0.0;2.01;250;8.95;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-25;71.1;91.9;0.0;0.0;0.0;6.71;200;16.11;180;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-27;68.0;89.1;0.0;0.0;0.0;3.13;350;12.97;10;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-29;68.0;95.0;0.0;0.0;0.0;5.37;250;14.09;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-01;61.0;84.0;0.0;0.0;0.0;2.91;40;12.08;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-03;60.1;82.0;0.0;0.0;0.0;4.7;40;14.09;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-17;72.0;93.0;0.0;0.0;0.0;9.84;210;19.91;210;23.94;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-06-18;71.1;91.0;0.06;0.0;0.0;9.4;230;17.0;240;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-21;64.9;84.9;0.0;0.0;0.0;7.61;300;19.91;310;29.08;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-06-22;63.0;84.0;0.01;0.0;0.0;4.03;40;12.08;10;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-28;70.0;97.0;1.09;0.0;0.0;3.8;150;23.04;120;34.0;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2019-06-29;68.0;91.9;0.03;0.0;0.0;4.03;90;12.08;80;14.99;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-30;69.1;93.9;0.0;0.0;0.0;5.14;300;14.09;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-05;70.0;91.0;0.31;0.0;0.0;4.7;220;14.99;150;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-07;75.0;93.0;0.21;0.0;0.0;6.04;180;21.03;180;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-09;73.0;84.9;0.0;0.0;0.0;6.26;50;14.09;60;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-11;75.0;93.0;0.0;0.0;0.0;9.17;230;36.01;230;46.08;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-13;73.0;95.0;0.0;0.0;0.0;4.92;100;12.08;260;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-21;73.0;99.0;0.0;0.0;0.0;9.62;230;23.04;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-23;64.0;82.0;1.16;0.0;0.0;5.14;30;21.92;260;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-25;63.0;87.1;0.0;0.0;0.0;4.25;80;14.99;90;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-26;64.9;87.1;0.0;0.0;0.0;3.8;40;14.09;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-29;66.0;93.0;0.0;0.0;0.0;4.92;170;12.08;160;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-30;68.0;93.9;0.0;0.0;0.0;6.26;170;14.09;180;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-08-05;68.0;84.9;0.22;0.0;0.0;2.68;300;14.09;310;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-10-15;45.0;55.0;0.07;0.0;0.0;3.58;40;10.07;30;14.09;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-10-16;46.0;57.9;0.0;0.0;0.0;6.04;40;14.09;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-19;34.0;61.0;0.0;0.0;0.0;2.01;30;12.97;80;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-20;35.1;72.0;0.0;0.0;0.0;2.91;230;12.08;210;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-22;46.0;78.1;0.0;0.0;0.0;4.47;240;17.0;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-23;60.1;81.0;0.0;0.0;0.0;8.95;200;21.03;190;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-10-26;44.1;64.0;0.06;0.0;0.0;5.82;40;14.09;50;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-11-04;37.9;64.0;0.0;0.0;0.0;2.91;80;14.99;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-05;37.9;64.9;0.0;0.0;0.0;2.91;270;14.99;280;23.04;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-14;48.0;66.9;0.01;0.0;0.0;4.47;20;12.08;20;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-11-24;48.0;57.9;0.0;0.0;0.0;3.36;50;10.07;20;14.99;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-11-26;41.0;61.0;0.07;0.0;0.0;3.36;300;14.09;320;25.05;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2009-12-05;36.0;48.0;0.41;0.0;0.0;4.92;350;14.09;330;23.04;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-12-06;28.0;44.1;0.0;0.0;0.0;2.01;50;12.97;30;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-12;21.9;43.0;0.0;0.0;0.0;2.24;80;8.95;130;12.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-19;30.0;34.0;0.44;0.0;0.0;7.61;50;21.03;340;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-20;26.1;45.0;0.0;0.0;0.0;2.68;300;14.09;300;23.94;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-25;36.0;59.0;0.8;0.0;0.0;10.96;110;21.03;100;36.91;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-12-29;24.1;42.1;0.0;0.0;0.0;6.26;300;14.99;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-01;30.9;48.0;0.0;0.0;0.0;4.7;330;12.08;320;21.03;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2010-01-03;18.0;32.0;0.0;0.0;0.0;8.5;290;17.0;300;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-05;17.1;36.0;0.0;0.0;0.0;5.14;310;14.99;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-06;19.0;41.0;0.0;0.0;0.0;5.59;280;14.09;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-16;30.0;62.1;0.02;0.0;0.0;1.57;230;8.95;230;12.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-01-18;39.0;62.1;0.0;0.0;0.0;3.13;360;12.08;10;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-23;30.0;50.0;0.0;0.0;0.0;4.7;100;12.08;100;17.9;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2010-01-25;46.9;66.0;0.86;0.0;0.0;17.67;230;29.08;170;38.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-01-26;30.9;51.1;0.0;0.0;0.0;8.28;240;19.91;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-31;17.1;37.9;0.0;0.0;4.02;2.24;10;12.97;360;19.91;Yes;No;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-02-03;33.1;51.1;0.01;0.0;0.0;3.13;350;12.08;320;17.9;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No +2010-02-08;21.9;46.0;0.0;0.0;0.0;2.24;40;8.95;290;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-15;28.9;51.1;0.03;0.0;0.0;7.61;230;27.96;210;36.01;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-02-24;37.0;48.0;0.12;0.0;0.0;5.59;50;12.08;40;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-02-27;30.0;51.1;0.0;0.0;0.0;6.71;270;14.99;310;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-28;26.1;51.1;0.0;0.0;0.0;6.71;300;17.9;310;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-10;50.0;69.1;0.16;0.0;0.0;8.05;220;23.04;230;29.08;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-03-17;35.1;64.0;0.0;0.0;0.0;1.79;100;12.08;50;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-28;37.9;69.1;0.09;0.0;0.0;11.63;180;27.96;170;42.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-04-01;43.0;84.0;0.0;0.0;0.0;2.46;240;10.07;240;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-05;57.9;88.0;0.0;0.0;0.0;6.71;240;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-10;42.1;70.0;0.0;0.0;0.0;2.01;10;10.07;90;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-11;41.0;75.9;0.0;0.0;0.0;3.8;230;12.97;260;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-12;46.0;78.1;0.0;0.0;0.0;4.03;50;16.11;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-17;55.9;78.1;0.0;0.0;0.0;7.61;280;19.91;250;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-18;41.0;66.0;0.0;0.0;0.0;4.7;290;14.09;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-23;48.0;72.0;0.0;0.0;0.0;1.34;30;8.05;40;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-24;57.0;77.0;0.11;0.0;0.0;5.59;110;14.09;160;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2010-04-25;62.1;81.0;0.29;0.0;0.0;14.32;230;27.96;220;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2010-04-28;41.0;66.9;0.0;0.0;0.0;4.47;290;17.0;300;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-05;55.9;89.1;0.0;0.0;0.0;4.47;140;14.99;190;17.0;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-11;55.9;68.0;0.0;0.0;0.0;7.16;140;19.91;150;23.04;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-05-18;54.0;63.0;0.08;0.0;0.0;3.8;30;12.08;40;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-05-21;54.0;84.0;0.0;0.0;0.0;2.68;120;10.07;120;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-03;70.0;89.1;0.0;0.0;0.0;6.04;230;12.97;230;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-06-08;64.0;82.9;0.0;0.0;0.0;4.7;30;10.07;100;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-10;73.9;91.0;0.0;0.0;0.0;7.38;230;17.9;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-11;70.0;91.0;0.0;0.0;0.0;4.7;70;12.97;20;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-17;71.1;91.0;0.0;0.0;0.0;3.36;280;16.11;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-22;69.1;98.1;0.0;0.0;0.0;4.47;200;17.9;200;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-29;75.0;96.1;0.0;0.0;0.0;7.16;230;17.0;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-06-30;69.1;78.1;0.18;0.0;0.0;5.59;40;12.97;120;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-07-04;61.0;93.0;0.0;0.0;0.0;4.92;230;12.97;260;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-07;69.1;102.0;0.0;0.0;0.0;4.25;40;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-09;72.0;95.0;0.4;0.0;0.0;3.58;230;36.01;230;48.09;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;Yes;Yes;No;No;No +2010-07-10;73.9;91.0;0.0;0.0;0.0;4.25;140;12.97;320;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2010-07-13;72.0;93.0;0.38;0.0;0.0;7.16;240;16.11;310;21.92;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2010-07-18;71.1;95.0;0.01;0.0;0.0;7.16;230;23.04;230;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-07-19;75.0;93.0;0.0;0.0;0.0;12.53;230;25.95;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-26;77.0;93.9;0.0;0.0;0.0;6.26;50;14.99;60;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-11;78.1;98.1;0.41;0.0;0.0;6.71;320;17.0;310;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-16;73.9;95.0;0.0;0.0;0.0;5.14;220;12.97;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-22;73.0;91.0;0.07;0.0;0.0;4.7;230;12.97;230;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-25;66.9;80.1;0.05;0.0;0.0;2.24;40;10.07;120;14.09;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-08-29;66.9;90.0;0.0;0.0;0.0;2.91;90;12.08;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-03;73.0;99.0;0.0;0.0;0.0;5.59;240;16.11;250;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-04;59.0;87.1;0.0;0.0;0.0;5.14;280;14.99;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-07;66.0;93.9;0.0;0.0;0.0;6.04;210;14.09;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-15;59.0;93.9;0.0;0.0;0.0;3.8;190;12.08;150;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-26;68.0;84.0;2.25;0.0;0.0;6.26;40;16.11;30;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-09-27;69.1;75.9;0.7;0.0;0.0;8.72;150;14.99;140;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-09-28;64.0;81.0;0.05;0.0;0.0;6.71;170;17.0;160;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-01;55.0;78.1;0.01;0.0;0.0;5.82;20;17.9;30;27.96;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2010-10-06;44.1;70.0;0.0;0.0;0.0;4.47;290;17.0;290;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-08;48.0;79.0;0.0;0.0;0.0;2.01;40;12.97;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-09;48.0;84.0;0.0;0.0;0.0;1.12;270;6.93;300;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-02;41.0;57.9;0.0;0.0;0.0;7.83;50;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-07;30.0;53.1;0.0;0.0;0.0;2.46;40;16.11;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-18;34.0;62.1;0.0;0.0;0.0;2.24;310;12.97;340;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-19;34.0;61.0;0.0;0.0;0.0;1.79;50;12.08;50;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-23;54.0;77.0;0.0;0.0;0.0;7.61;230;23.94;240;29.97;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-11-26;50.0;66.0;0.07;0.0;0.0;7.61;240;21.92;240;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-11-28;26.1;52.0;0.0;0.0;0.0;2.24;90;12.08;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-02;26.1;48.9;0.0;0.0;0.0;2.01;310;10.07;340;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-07;21.0;35.1;0.0;0.0;0.0;7.83;310;17.0;300;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-08;16.0;37.9;0.0;0.0;0.0;2.68;280;10.07;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-13;25.0;36.0;0.0;0.0;0.0;11.18;300;17.9;280;31.09;Yes;No;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-12-19;28.9;43.0;0.0;0.0;0.0;4.47;30;14.09;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-21;28.0;42.1;0.0;0.0;0.0;2.24;240;8.05;230;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-23;32.0;45.0;0.0;0.0;0.0;7.83;330;17.9;330;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-25;32.0;44.1;0.15;0.39;0.0;2.46;50;8.95;140;16.11;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;Yes;No;No;No +2010-12-29;24.1;46.9;0.0;0.0;0.98;1.57;360;12.08;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-04;23.0;54.0;0.0;0.0;0.0;4.92;230;17.9;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-08;24.1;44.1;0.0;0.0;0.0;6.71;300;19.91;320;31.09;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No +2011-01-14;19.0;41.0;0.0;0.0;0.0;1.12;230;8.05;230;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-16;25.0;53.1;0.0;0.0;0.0;1.34;60;8.95;50;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-17;30.0;46.0;0.03;0.0;0.0;7.16;50;14.09;50;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2011-01-20;28.0;51.1;0.0;0.0;0.0;3.13;200;14.09;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-29;24.1;57.9;0.0;0.0;0.0;6.04;230;21.03;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-09;24.1;48.0;0.0;0.0;0.0;4.47;170;12.08;240;17.0;No;No;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No;No;No +2011-02-15;32.0;57.0;0.0;0.0;0.0;4.25;40;14.09;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-20;30.9;62.1;0.0;0.0;0.0;4.92;210;17.0;200;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-21;44.1;75.9;0.0;0.0;0.0;13.2;220;23.04;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-24;37.0;59.0;0.02;0.0;0.0;4.7;190;16.11;180;23.04;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-27;44.1;81.0;0.0;0.0;0.0;8.28;230;19.91;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-08;28.0;57.9;0.0;0.0;0.0;6.26;100;14.09;120;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-17;37.0;70.0;0.0;0.0;0.0;2.91;180;8.95;220;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-28;30.9;48.9;0.02;0.0;0.0;2.46;40;12.97;50;17.0;Yes;No;Yes;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No +2011-03-31;39.9;48.0;0.03;0.0;0.0;3.58;120;10.07;10;12.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-05;46.9;71.1;0.5;0.0;0.0;13.2;250;38.03;260;51.0;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-04-20;64.0;84.0;0.0;0.0;0.0;11.63;240;23.94;250;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-25;66.0;84.0;0.0;0.0;0.0;10.07;230;17.9;180;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-29;52.0;75.9;0.0;0.0;0.0;5.14;240;17.9;250;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-02;55.9;82.9;0.0;0.0;0.0;7.16;240;17.0;250;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-03;63.0;84.9;0.0;0.0;0.0;11.41;230;21.92;240;25.05;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-05-05;42.1;68.0;0.0;0.0;0.0;3.13;230;12.97;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-06;44.1;72.0;0.3;0.0;0.0;7.61;210;19.91;210;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-07;53.1;73.9;0.0;0.0;0.0;3.36;250;12.08;240;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-05-11;57.0;79.0;0.0;0.0;0.0;3.36;110;8.95;140;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-05-15;63.0;80.1;0.02;0.0;0.0;5.82;260;16.11;250;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-19;53.1;78.1;0.0;0.0;0.0;2.91;240;14.09;240;17.0;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-21;55.0;84.0;0.0;0.0;0.0;2.01;30;10.07;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-25;64.9;93.0;0.0;0.0;0.0;3.13;220;12.08;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-27;64.9;82.0;1.64;0.0;0.0;6.93;280;16.11;290;21.92;Yes;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-05-28;64.9;86.0;0.0;0.0;0.0;4.03;120;14.99;130;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-14;64.0;84.0;0.0;0.0;0.0;4.92;30;12.97;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-18;68.0;95.0;0.24;0.0;0.0;6.49;260;21.92;260;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-27;73.0;93.0;0.03;0.0;0.0;5.59;140;17.0;360;21.92;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-09;73.0;89.1;0.09;0.0;0.0;5.14;40;12.97;40;25.05;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-11;73.9;96.1;0.0;0.0;0.0;6.26;220;17.0;310;25.05;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-12;78.1;100.0;0.0;0.0;0.0;6.49;230;17.0;210;29.97;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-13;75.9;97.0;0.0;0.0;0.0;3.13;20;12.97;300;23.04;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-19;70.0;96.1;0.0;0.0;0.0;4.92;260;12.08;220;14.99;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-20;75.0;100.0;0.0;0.0;0.0;2.46;180;25.95;180;31.99;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-29;75.0;104.0;0.0;0.0;0.0;3.8;270;12.08;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-30;75.0;100.0;2.1;0.0;0.0;4.7;140;21.03;40;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-08-06;73.0;89.1;4.31;0.0;0.0;5.37;120;14.99;190;21.92;Yes;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-08-07;75.0;96.1;0.0;0.0;0.0;7.38;270;14.99;250;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-09;73.0;93.9;0.0;0.0;0.0;5.14;250;16.11;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-15;64.0;84.9;0.0;0.0;0.0;5.14;270;12.97;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-21;71.1;91.9;1.0;0.0;0.0;8.95;230;19.91;240;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-08-27;72.0;78.1;0.54;0.0;0.0;13.65;20;23.04;330;38.92;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-05;72.0;86.0;0.12;0.0;0.0;8.28;190;16.11;170;25.95;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-16;55.0;60.1;0.09;0.0;0.0;8.28;40;19.91;30;23.94;Yes;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-17;55.0;61.0;0.23;0.0;0.0;8.05;50;14.09;30;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-18;57.0;70.0;0.0;0.0;0.0;7.38;40;14.09;40;17.0;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-19;60.1;75.0;0.0;0.0;0.0;2.91;140;8.95;140;12.08;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-20;64.0;78.1;0.0;0.0;0.0;1.34;130;6.93;130;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-25;70.0;80.1;0.0;0.0;0.0;5.82;150;17.9;170;23.94;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-27;73.0;87.1;0.0;0.0;0.0;7.61;210;12.97;190;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-28;66.9;82.9;0.78;0.0;0.0;4.25;250;21.92;240;27.96;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-10-09;52.0;77.0;0.0;0.0;0.0;6.26;50;16.11;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-12;63.0;78.1;0.09;0.0;0.0;4.25;90;12.97;120;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-10-14;53.1;73.9;0.0;0.0;0.0;9.62;260;19.91;270;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-17;55.0;84.9;0.0;0.0;0.0;8.72;220;19.91;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-25;45.0;71.1;0.0;0.0;0.0;1.12;30;10.07;30;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-02;34.0;64.0;0.0;0.0;0.0;0.67;120;6.93;30;10.07;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-09;39.0;71.1;0.0;0.0;0.0;0.22;230;6.04;130;6.93;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-13;39.9;66.9;0.0;0.0;0.0;10.51;240;21.92;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-14;55.9;75.9;0.0;0.0;0.0;12.97;240;23.94;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-20;46.0;73.9;0.0;0.0;0.0;6.49;230;19.91;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-27;51.1;75.0;0.0;0.0;0.0;8.95;230;19.91;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-03;35.1;57.0;0.0;0.0;0.0;4.92;90;14.09;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-08;33.1;51.1;0.0;0.0;0.0;2.46;320;10.07;310;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-17;30.9;48.9;0.09;0.0;0.0;3.36;30;12.08;10;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-18;27.0;48.9;0.0;0.0;0.0;2.01;360;12.97;20;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-30;36.0;62.1;0.0;0.0;0.0;9.4;220;19.91;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-04;19.0;44.1;0.0;0.0;0.0;6.04;230;16.11;210;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-07;39.0;72.0;0.0;0.0;0.0;6.04;240;14.09;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-09;43.0;48.9;0.28;0.0;0.0;3.58;100;8.95;140;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-01-13;30.0;55.0;0.0;0.0;0.0;11.86;240;31.09;240;40.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-14;23.0;46.0;0.0;0.0;0.0;5.14;230;17.9;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-15;30.0;44.1;0.0;0.0;0.0;3.58;10;14.09;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-24;43.0;64.0;0.0;0.0;0.0;4.25;230;10.07;260;12.97;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-26;39.9;69.1;0.0;0.0;0.0;6.71;190;23.04;200;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-05;32.0;50.0;0.15;0.0;0.0;5.59;40;14.99;40;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-10;28.9;50.0;0.0;0.0;0.0;3.58;230;12.08;230;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-21;28.0;57.9;0.0;0.0;0.0;7.16;220;17.9;190;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-23;45.0;73.9;0.2;0.0;0.0;8.5;300;23.94;290;44.07;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-01;52.0;80.1;0.01;0.0;0.0;9.62;240;25.05;240;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-09;39.9;61.0;0.28;0.0;0.0;5.14;360;14.99;10;27.96;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-10;39.0;57.0;0.0;0.0;0.0;5.59;60;14.99;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-16;57.9;80.1;0.19;0.0;0.0;4.7;240;12.08;350;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-17;57.9;79.0;0.1;0.0;0.0;3.8;50;12.97;130;17.9;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-04-01;48.9;69.1;0.0;0.0;0.0;6.26;50;21.03;50;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-03;42.1;77.0;0.0;0.0;0.0;5.59;220;17.0;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-05;46.9;63.0;0.17;0.0;0.0;7.61;100;16.11;80;21.92;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-07;37.0;68.0;0.0;0.0;0.0;3.13;260;12.08;290;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-09;45.0;73.9;0.0;0.0;0.0;6.49;230;21.92;230;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-13;36.0;69.1;0.0;0.0;0.0;2.01;260;8.05;350;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-15;57.9;81.0;0.0;0.0;0.0;12.3;230;21.92;220;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-26;55.9;77.0;0.38;0.0;0.0;9.62;230;21.92;260;33.11;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-04-30;61.0;80.1;0.0;0.0;0.0;7.16;200;16.11;210;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-03;64.0;91.0;0.0;0.0;0.0;4.92;280;10.07;270;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-05;64.0;84.0;1.58;0.0;0.0;4.47;40;14.09;40;21.92;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-06;61.0;73.0;0.01;0.0;0.0;7.16;40;14.99;40;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-25;62.1;88.0;0.0;0.0;0.0;3.58;80;12.08;60;14.99;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-03;52.0;81.0;0.0;0.0;0.0;5.37;240;17.0;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-05;57.0;75.9;0.0;0.0;0.0;6.93;50;16.11;90;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-13;63.0;84.0;0.28;0.0;0.0;6.04;50;17.0;40;23.94;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-06-15;59.0;80.1;0.0;0.0;0.0;8.05;50;17.0;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-19;66.9;91.9;0.0;0.0;0.0;5.14;250;12.97;260;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-22;71.1;95.0;0.1;0.0;0.0;6.04;320;17.0;310;29.08;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-06-27;55.0;87.1;0.0;0.0;0.0;3.13;20;14.09;10;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-30;70.0;105.1;0.0;0.0;0.0;4.7;240;14.09;290;21.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-08;75.9;105.1;0.0;0.0;0.0;8.28;220;14.99;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-13;72.0;88.0;0.0;0.0;0.0;3.8;150;10.07;;;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-19;75.9;99.0;0.0;0.0;0.0;9.62;230;17.9;140;36.01;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-20;73.9;95.0;0.14;0.0;0.0;6.71;210;29.08;210;44.07;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-24;73.0;96.1;0.01;0.0;0.0;6.26;270;23.94;280;38.03;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-30;71.1;89.1;0.0;0.0;0.0;5.59;130;21.92;140;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-17;64.9;91.9;0.0;0.0;0.0;4.03;240;16.11;270;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-18;66.9;86.0;0.0;0.0;0.0;4.92;50;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-25;63.0;72.0;0.41;0.0;0.0;3.58;340;12.08;350;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-07;71.1;84.9;0.0;0.0;0.0;2.91;80;8.95;100;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-08;69.1;90.0;0.31;0.0;0.0;6.04;230;17.9;310;27.96;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-13;55.0;80.1;0.0;0.0;0.0;3.58;70;12.08;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-22;63.0;84.9;0.0;0.0;0.0;8.95;240;21.03;180;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-24;51.1;72.0;0.0;0.0;0.0;3.13;40;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-26;54.0;82.9;0.0;0.0;0.0;3.8;210;12.97;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-27;59.0;84.9;0.0;0.0;0.0;1.79;230;10.07;260;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-01;61.0;66.9;0.14;0.0;0.0;4.7;80;12.08;70;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-10-04;64.0;79.0;0.0;0.0;0.0;2.91;240;8.95;270;14.99;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-24;51.1;82.0;0.0;0.0;0.0;2.24;240;8.95;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-28;51.1;64.0;0.03;0.0;0.0;9.84;40;17.9;330;25.95;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-11-04;42.1;55.0;0.0;0.0;0.0;5.59;40;12.97;50;16.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-05;37.0;55.0;0.0;0.0;0.0;4.7;40;12.97;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-06;33.1;46.9;0.0;0.0;0.0;5.59;50;16.11;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-24;32.0;55.0;0.0;0.0;0.0;5.59;330;14.09;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-28;28.9;53.1;0.0;0.0;0.0;2.24;340;10.07;40;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-04;48.9;71.1;0.0;0.0;0.0;5.14;240;16.11;250;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-05;44.1;64.9;0.0;0.0;0.0;5.14;230;12.97;20;17.9;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-06;37.0;51.1;0.0;0.0;0.0;6.71;70;14.99;80;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-20;39.9;62.1;0.42;0.0;0.0;10.07;180;29.08;170;44.07;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-27;34.0;50.0;0.0;0.0;0.0;7.38;290;14.99;290;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-01;43.0;50.0;0.21;0.0;0.0;6.49;220;19.91;220;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-07;28.9;52.0;0.0;0.0;0.0;2.24;50;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-11;41.0;51.1;0.22;0.0;0.0;3.13;70;10.07;90;14.09;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-01-12;48.9;71.1;0.0;0.0;0.0;2.01;130;8.05;140;12.08;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-16;42.1;50.0;0.18;0.0;0.0;2.46;20;8.05;170;12.97;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-01-19;26.1;54.0;0.0;0.0;0.0;3.58;210;12.08;210;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-20;35.1;63.0;0.0;0.0;0.0;6.49;280;14.99;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-25;19.9;28.0;0.32;0.2;0.0;3.8;230;12.08;140;21.03;No;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2013-01-28;32.0;51.1;0.01;0.0;0.0;6.26;230;14.09;230;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-01-31;33.1;63.0;0.09;0.0;0.0;13.2;230;29.97;250;40.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-01;26.1;39.9;0.0;0.0;0.0;9.4;290;21.92;320;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-02;19.0;45.0;0.0;0.0;0.0;6.04;240;19.91;250;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-03;35.1;50.0;0.0;0.0;0.0;5.37;240;16.11;300;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-04;26.1;48.9;0.0;0.0;0.0;4.7;220;12.97;320;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-06;30.0;62.1;0.0;0.0;0.0;3.13;110;12.08;90;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-20;27.0;52.0;0.0;0.0;0.0;5.14;260;16.11;260;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-22;32.0;42.1;0.36;0.0;0.0;4.92;90;16.11;100;21.92;No;No;Yes;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No +2013-03-06;37.0;46.0;0.01;0.0;0.0;10.74;320;21.92;330;38.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-12;48.0;69.1;0.65;0.0;0.0;9.84;200;23.04;190;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-13;34.0;57.9;0.0;0.0;0.0;6.93;300;17.9;250;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-17;39.0;61.0;0.0;0.0;0.0;10.29;50;19.91;50;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-23;35.1;55.0;0.0;0.0;0.0;1.12;30;6.93;130;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-28;28.0;55.9;0.0;0.0;0.0;4.7;290;14.99;360;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-31;48.0;68.0;0.87;0.0;0.0;8.5;230;23.04;230;27.96;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-03;39.0;60.1;0.0;0.0;0.0;4.25;40;12.97;340;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-10;60.1;84.9;0.0;0.0;0.0;11.41;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-16;57.9;75.9;0.0;0.0;0.0;3.13;200;8.95;160;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-24;48.9;77.0;0.0;0.0;0.0;9.84;230;23.04;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-16;62.1;84.0;0.0;0.0;0.0;6.49;240;14.99;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-19;64.0;78.1;0.54;0.0;0.0;6.49;200;17.0;190;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-16;62.1;87.1;0.0;0.0;0.0;10.29;230;19.91;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-18;69.1;84.9;0.14;0.0;0.0;8.5;230;21.92;220;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-23;66.9;86.0;0.04;0.0;0.0;3.58;190;12.08;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-27;66.9;89.1;0.0;0.0;0.0;9.62;240;19.91;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-29;68.0;86.0;0.1;0.0;0.0;5.82;220;12.97;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-03;73.0;84.9;0.0;0.0;0.0;6.93;250;14.99;180;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-07-07;70.0;89.1;0.0;0.0;0.0;7.38;220;16.11;250;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-08;72.0;90.0;0.0;0.0;0.0;5.14;170;14.09;200;18.12;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-07-11;72.0;84.0;0.2;0.0;0.0;6.71;240;14.99;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-17;73.9;93.0;0.0;0.0;0.0;2.68;80;12.97;360;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-18;73.0;93.0;0.0;0.0;0.0;2.46;220;12.08;210;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-19;75.0;91.9;0.0;0.0;0.0;9.84;230;18.12;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-22;72.0;91.0;0.0;0.0;0.0;6.71;230;18.12;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-30;62.1;87.1;0.0;0.0;0.0;2.24;90;10.07;130;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-31;70.0;82.9;0.51;0.0;0.0;4.92;220;25.05;220;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-09;73.9;91.9;0.0;0.0;0.0;9.62;230;19.91;250;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-19;66.9;75.0;0.6;0.0;0.0;1.57;140;16.11;150;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-26;55.0;82.9;0.0;0.0;0.0;1.34;60;8.05;120;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-31;68.0;90.0;0.0;0.0;0.0;5.82;230;14.99;210;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-07;59.0;82.0;0.0;0.0;0.0;1.12;210;8.95;200;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-09;64.0;87.1;0.0;0.0;0.0;3.36;90;14.99;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-11;68.0;91.0;0.0;0.0;0.0;5.14;160;14.09;180;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-12;70.0;90.0;0.0;0.0;0.0;6.04;230;12.97;230;21.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-09-17;57.9;75.9;0.0;0.0;0.0;8.5;50;18.12;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-20;62.1;72.0;0.19;0.0;0.0;3.8;170;10.07;150;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-23;54.0;73.0;0.0;0.0;0.0;3.8;80;14.09;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-01;51.1;82.0;0.0;0.0;0.0;1.12;270;8.95;250;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-06;63.0;84.9;0.0;0.0;0.0;6.71;170;14.09;130;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-10;53.1;61.0;0.14;0.0;0.0;5.82;360;12.97;360;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-12;61.0;69.1;0.01;0.0;0.0;3.58;10;8.95;10;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-15;54.0;71.1;0.0;0.0;0.0;5.14;40;12.97;40;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-21;39.0;68.0;0.0;0.0;0.0;0.45;180;8.05;170;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-27;39.9;69.1;0.0;0.0;0.0;2.46;230;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-04;35.1;55.0;0.0;0.0;0.0;6.49;50;16.11;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-20;37.0;52.0;0.0;0.0;0.0;8.5;60;19.91;60;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-21;41.0;62.1;0.0;0.0;0.0;3.8;40;12.08;50;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-23;43.0;61.0;0.01;0.0;0.0;3.8;330;10.07;320;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-03;33.1;57.9;0.0;0.0;0.0;2.91;180;10.07;200;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-04;53.1;64.0;0.0;0.0;0.0;3.36;210;10.07;210;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-07;42.1;69.1;0.11;0.0;0.0;10.74;230;18.12;30;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-09;34.0;46.0;0.17;0.0;0.0;2.68;180;10.07;180;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-16;28.2;54.0;0.0;0.0;0.0;4.47;220;12.08;220;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-23;46.9;68.0;1.95;0.0;0.0;8.05;240;21.92;230;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-25;23.2;39.9;0.0;0.0;0.0;2.68;40;12.08;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-31;32.0;51.1;0.0;0.0;0.0;3.8;270;12.97;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-01;29.1;51.1;0.0;0.0;0.0;2.46;200;8.95;210;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-07;9.1;25.2;0.0;0.0;0.0;7.61;300;16.11;320;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-08;15.3;43.0;0.0;0.0;0.0;2.91;220;10.07;210;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-09;25.2;54.0;0.0;0.0;0.0;2.46;110;8.95;120;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-14;37.9;54.0;0.3;0.0;0.0;2.91;190;12.08;320;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-16;32.0;44.1;0.07;0.0;0.0;3.8;270;12.08;280;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-24;11.1;27.1;0.0;0.0;0.0;6.26;10;14.09;20;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-25;18.1;39.9;0.0;0.0;0.0;15.21;230;25.05;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-03;39.9;64.0;0.18;0.0;0.0;9.62;230;21.03;220;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-09;29.1;55.0;0.0;0.0;0.0;3.13;230;14.99;220;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-13;30.2;36.0;0.39;0.39;1.18;6.71;30;16.11;30;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-15;32.0;45.0;0.27;0.0;0.0;6.49;290;21.92;290;36.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-18;35.1;64.9;0.0;0.0;0.0;4.03;280;14.09;270;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-02;34.0;71.1;0.0;0.0;0.0;8.28;230;21.92;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-06;30.2;42.1;0.55;0.0;0.0;13.42;40;21.03;30;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-08;27.1;68.0;0.0;0.0;0.0;4.25;230;17.0;240;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-13;29.1;45.0;0.0;0.0;0.0;7.61;300;21.03;300;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-14;24.3;60.1;0.0;0.0;0.0;9.17;220;23.04;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-18;30.2;37.0;0.09;0.0;0.0;8.05;40;14.99;10;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-19;35.1;46.9;0.04;0.0;0.0;5.37;230;14.09;230;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-20;39.0;66.0;0.0;0.0;0.0;5.37;240;17.0;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-23;36.0;57.0;0.14;0.0;0.0;4.92;70;19.91;80;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-14;63.0;75.9;0.03;0.0;0.0;10.74;200;21.92;200;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-20;48.9;68.0;0.0;0.0;0.0;12.3;50;23.94;30;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-21;42.1;73.9;0.0;0.0;0.0;3.58;40;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-24;39.9;71.1;0.0;0.0;0.0;3.8;120;12.97;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-05;55.0;73.0;0.0;0.0;0.0;5.82;50;17.0;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-06;55.9;84.0;0.0;0.0;0.0;3.8;90;10.07;80;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-08;55.0;89.1;0.0;0.0;0.0;6.26;230;21.03;230;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-10;64.0;86.0;0.0;0.0;0.0;8.95;230;23.04;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-12;57.9;90.0;0.0;0.0;0.0;2.68;250;14.09;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-13;66.9;91.9;0.0;0.0;0.0;5.82;190;12.08;210;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-22;64.0;88.0;0.0;0.0;0.0;4.7;260;14.09;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-24;53.1;79.0;0.0;0.0;0.0;3.36;30;10.07;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-28;64.0;90.0;0.0;0.0;0.0;3.8;70;14.99;70;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-29;64.9;75.9;0.08;0.0;0.0;5.82;80;12.97;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-03;57.0;89.1;0.05;0.0;0.0;4.03;230;14.09;330;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-06;68.0;82.9;0.0;0.0;0.0;5.82;80;12.08;130;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-08;64.9;87.1;0.0;0.0;0.0;8.5;230;16.11;190;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-10;68.0;93.9;0.0;0.0;0.0;3.36;230;12.97;240;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-13;66.9;88.0;0.42;0.0;0.0;4.25;360;18.12;350;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-14;60.1;86.0;0.0;0.0;0.0;2.91;30;12.97;40;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-21;68.0;91.0;0.0;0.0;0.0;3.58;110;14.99;140;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-22;68.0;84.0;0.0;0.0;0.0;5.82;90;14.09;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-25;73.0;93.0;0.0;0.0;0.0;6.71;230;14.99;260;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-27;70.0;84.9;0.88;0.0;0.0;4.92;90;21.03;90;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-01;73.9;93.0;0.0;0.0;0.0;7.83;170;16.11;190;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-03;73.9;90.0;0.0;0.0;0.0;6.93;180;10.96;200;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-05;61.0;82.9;0.0;0.0;0.0;4.92;50;14.99;80;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-16;64.0;80.1;0.0;0.0;0.0;3.13;30;14.09;30;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-19;66.0;82.0;0.0;0.0;0.0;4.25;50;14.09;120;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-22;72.0;84.9;0.0;0.0;0.0;3.8;80;8.95;120;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-30;63.0;81.0;0.0;0.0;0.0;4.25;80;12.97;130;18.12;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-08-02;64.0;70.0;0.08;0.0;0.0;3.36;50;12.08;80;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-04;68.0;84.9;0.0;0.0;0.0;2.24;40;12.08;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-06;70.0;90.0;0.0;0.0;0.0;3.36;260;14.99;260;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-11;70.0;84.0;0.31;0.0;0.0;6.71;170;14.99;170;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-15;61.0;86.0;0.0;0.0;0.0;2.68;220;12.08;270;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-18;70.0;88.0;0.61;0.0;0.0;3.36;280;19.91;290;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-21;71.1;91.0;0.0;0.0;0.0;2.24;270;8.95;260;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-30;72.0;89.1;0.0;0.0;0.0;4.92;190;12.08;190;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-07;70.0;78.1;0.0;0.0;0.0;7.16;60;16.11;80;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-08;68.0;73.0;1.04;0.0;0.0;8.28;40;16.11;40;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-11;66.9;88.0;0.09;0.0;0.0;5.59;230;19.91;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-09-13;69.1;80.1;0.02;0.0;0.0;5.37;30;14.09;50;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-20;57.9;81.0;0.0;0.0;0.0;5.82;40;14.09;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-21;63.0;87.1;0.12;0.0;0.0;6.26;230;14.99;220;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-24;55.0;64.0;3.18;0.0;0.0;9.62;30;17.0;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-25;63.0;68.0;0.03;0.0;0.0;7.38;30;12.97;30;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-28;54.0;79.0;0.0;0.0;0.0;1.34;80;8.05;50;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-09;51.1;79.0;0.0;0.0;0.0;2.68;170;10.07;170;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-14;70.0;79.0;0.42;0.0;0.0;10.29;140;23.94;150;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-16;53.1;72.0;0.0;0.0;0.0;4.47;240;12.97;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-17;48.9;73.9;0.0;0.0;0.0;4.25;230;14.99;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-18;53.1;75.0;0.0;0.0;0.0;4.25;320;14.09;320;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-20;41.0;71.1;0.0;0.0;0.0;4.25;230;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-22;48.0;66.9;0.0;0.0;0.0;6.04;290;14.99;10;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-25;39.0;71.1;0.0;0.0;0.0;2.68;220;8.95;90;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-09;39.9;60.1;0.0;0.0;0.0;0.67;30;6.93;140;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-11;45.0;72.0;0.0;0.0;0.0;3.8;40;12.97;40;16.11;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-11-15;25.2;46.0;0.0;0.0;0.0;1.79;40;8.05;70;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-22;22.1;54.0;0.0;0.0;0.0;1.79;220;8.95;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-26;35.1;50.0;1.69;0.0;0.0;6.71;30;23.04;40;36.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-29;27.1;54.0;0.0;0.0;0.0;5.82;220;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-07;35.1;53.1;0.0;0.0;0.0;12.97;40;23.94;40;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-09;35.1;45.0;0.5;0.0;0.0;3.58;340;8.95;320;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-19;36.0;52.0;0.0;0.0;0.0;2.01;280;8.95;30;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-25;35.1;64.0;0.03;0.0;0.0;5.82;240;17.0;270;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-03;46.0;51.1;0.16;0.0;0.0;3.8;80;8.95;330;23.94;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-07;16.2;39.0;0.0;0.0;0.0;6.26;330;17.0;340;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-09;22.1;45.0;0.0;0.0;0.0;8.28;240;21.03;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-16;30.2;53.1;0.0;0.0;0.0;3.58;330;14.09;330;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-19;31.1;63.0;0.0;0.0;0.0;5.14;280;14.99;270;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-27;30.2;44.1;0.01;0.0;0.0;5.14;280;12.08;330;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-28;25.2;46.0;0.0;0.0;0.0;2.91;40;12.08;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-04;25.2;54.0;0.0;0.0;0.0;6.04;220;16.11;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-16;19.2;27.1;0.22;0.31;0.0;6.26;100;12.97;50;16.11;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2015-02-17;19.2;35.1;0.39;0.71;1.18;4.7;40;12.97;20;18.12;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2015-02-18;19.2;39.9;0.06;0.39;0.0;6.04;230;23.94;230;27.96;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-02-20;7.2;26.2;0.0;0.0;0.0;5.59;300;12.97;330;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-08;35.1;71.1;0.0;0.0;0.0;4.92;250;16.11;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-10;50.0;75.0;0.0;0.0;0.0;6.93;220;21.03;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-13;42.1;53.1;0.02;0.0;0.0;4.92;50;12.08;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-14;45.0;62.1;0.3;0.0;0.0;4.7;250;21.03;250;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-18;39.0;60.1;0.0;0.0;0.0;4.7;30;14.09;20;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-02;32.0;55.9;0.0;0.0;0.0;3.13;320;12.97;330;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-03;28.9;62.1;0.0;0.0;0.0;2.24;220;14.09;220;14.99;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-04;46.0;69.1;0.0;0.0;0.0;4.47;220;14.09;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-10;27.0;44.1;0.0;0.0;0.0;4.7;280;14.99;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-17;28.9;39.9;0.0;0.0;0.0;8.72;40;17.9;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-18;27.0;35.1;0.29;0.98;0.0;4.7;80;10.07;350;12.08;Yes;No;No;Yes;No;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No +2007-01-30;24.1;48.9;0.0;0.0;0.0;5.82;220;17.9;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-10;26.1;46.0;0.0;0.0;0.0;2.91;300;12.08;300;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-18;26.1;45.0;0.0;0.0;0.0;8.72;290;23.94;300;40.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-20;41.0;66.0;0.0;0.0;0.0;16.11;230;25.95;230;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-21;50.0;73.0;0.01;0.0;0.0;7.16;230;21.92;220;25.05;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-01;41.0;66.9;0.2;0.0;0.0;10.29;170;27.96;150;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-11;39.9;70.0;0.0;0.0;0.0;5.14;30;16.11;30;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-15;57.0;81.0;0.0;0.0;0.0;9.4;220;21.92;210;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-19;26.1;63.0;0.0;0.0;0.0;9.4;230;23.04;240;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-21;50.0;63.0;0.0;0.0;0.0;9.17;90;21.92;90;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-22;43.0;77.0;0.0;0.0;0.0;5.14;220;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-03-25;51.1;79.0;0.0;0.0;0.0;6.71;90;21.92;110;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-29;41.0;61.0;0.18;0.0;0.0;6.26;50;21.92;50;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-30;34.0;70.0;0.0;0.0;0.0;0.22;80;8.05;90;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-31;46.9;79.0;0.0;0.0;0.0;7.16;240;17.0;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-12;55.9;75.0;0.93;0.0;0.0;7.38;230;25.05;240;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-04-13;46.0;66.9;0.0;0.0;0.0;6.49;270;14.99;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-16;43.0;60.1;0.0;0.0;0.0;14.09;300;29.97;290;48.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-18;42.1;66.9;0.0;0.0;0.0;6.04;90;14.99;100;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-20;44.1;71.1;0.0;0.0;0.0;4.03;360;14.09;50;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-21;39.9;77.0;0.0;0.0;0.0;2.24;50;8.95;140;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-24;57.9;82.9;0.0;0.0;0.0;9.84;230;16.11;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-09;63.0;81.0;0.31;0.0;0.0;8.28;110;21.03;100;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-05-22;63.0;81.0;0.0;0.0;0.0;8.05;90;14.09;100;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-23;55.0;82.0;0.0;0.0;0.0;6.93;80;14.99;130;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-26;61.0;91.0;0.0;0.0;0.0;7.61;200;12.97;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-27;61.0;91.0;0.0;0.0;0.0;7.83;210;14.09;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-30;63.0;90.0;0.0;0.0;0.0;6.26;90;14.09;90;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-01;64.0;89.1;0.0;0.0;0.0;6.71;200;12.97;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-03;64.9;77.0;1.53;0.0;0.0;9.62;60;17.9;50;25.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-06-04;60.1;90.0;0.0;0.0;0.0;10.07;220;23.94;220;29.08;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-06-05;64.0;90.0;0.03;0.0;0.0;7.16;230;21.03;220;25.05;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-06-07;66.0;93.9;0.0;0.0;0.0;8.72;200;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-21;62.1;87.1;0.0;0.0;0.0;2.91;50;12.97;40;17.0;Yes;No;Yes;No;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-26;69.1;95.0;0.53;0.0;0.0;4.92;240;29.08;250;33.11;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-06-30;71.1;89.1;0.0;0.0;0.0;4.25;20;16.11;30;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-02;63.0;84.0;0.0;0.0;0.0;3.36;20;12.08;80;14.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-12;70.0;89.1;0.0;0.0;0.0;3.36;350;12.08;360;17.0;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-14;61.0;87.1;0.0;0.0;0.0;3.36;230;10.07;230;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-23;62.1;84.9;0.0;0.0;0.0;3.8;40;14.99;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-25;64.9;88.0;0.0;0.0;0.0;5.59;110;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-26;66.0;91.9;0.0;0.0;0.0;1.79;160;10.07;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-30;72.0;88.0;0.13;0.0;0.0;5.59;100;23.94;100;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-07;75.0;99.0;0.0;0.0;0.0;2.24;230;12.97;250;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-14;71.1;93.9;0.0;0.0;0.0;6.49;40;14.99;30;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-15;70.0;99.0;0.0;0.0;0.0;6.04;220;14.99;200;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-25;75.0;99.0;0.0;0.0;0.0;8.95;220;17.0;210;21.03;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-11;73.9;99.0;0.0;0.0;0.0;12.08;230;29.08;220;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-12;66.0;91.0;0.0;0.0;0.0;5.37;30;14.99;10;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-18;53.1;78.1;0.0;0.0;0.0;8.5;80;17.9;90;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-20;64.9;73.9;0.31;0.0;0.0;8.28;40;14.99;40;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-28;64.0;84.9;0.0;0.0;0.0;6.49;320;16.11;340;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-29;50.0;79.0;0.0;0.0;0.0;6.71;40;19.91;20;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-06;68.0;82.9;0.0;0.0;0.0;4.25;50;10.07;40;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-10-14;46.0;78.1;0.0;0.0;0.0;2.68;30;12.08;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-22;55.9;82.9;0.0;0.0;0.0;5.82;140;14.99;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-29;37.0;61.0;0.0;0.0;0.0;4.47;50;16.11;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-30;33.1;66.9;0.0;0.0;0.0;1.12;50;8.05;140;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-13;46.9;73.9;0.0;0.0;0.0;4.03;230;12.97;230;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-23;35.1;51.1;0.0;0.0;0.0;6.49;20;14.99;350;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-24;25.0;50.0;0.0;0.0;0.0;3.36;80;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-01;27.0;57.9;0.0;0.0;0.0;4.7;90;14.09;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-10;55.9;81.0;0.0;0.0;0.0;7.61;230;16.11;240;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-11;51.1;73.9;0.0;0.0;0.0;3.58;80;10.07;140;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-15;37.9;46.9;0.97;0.0;0.0;10.29;50;16.11;90;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-21;39.9;48.0;0.01;0.0;0.0;10.07;50;17.0;50;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-24;32.0;57.9;0.0;0.0;0.0;2.91;260;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-01;35.1;55.0;0.0;0.0;0.0;8.95;300;19.91;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-09;55.9;73.0;0.0;0.0;0.0;9.84;230;19.91;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-14;30.9;52.0;0.0;0.0;0.0;4.25;270;16.11;290;21.92;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-01-18;33.1;51.1;0.0;0.0;0.0;6.71;220;12.08;280;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-01-19;33.1;42.1;0.28;0.51;0.0;3.58;320;8.95;330;14.09;Yes;No;Yes;Yes;No;No;No;Yes;Yes;No;Yes;No;No;No;No;No;No +2008-01-31;27.0;51.1;0.0;0.0;0.0;9.62;40;17.9;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-03;37.9;66.0;0.0;0.0;0.0;3.8;30;12.08;10;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-20;30.9;64.9;0.0;0.0;0.0;11.18;220;29.97;220;38.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-22;32.0;42.1;0.29;0.0;0.0;6.93;220;12.08;100;14.09;Yes;No;Yes;Yes;No;No;Yes;No;No;Yes;No;No;No;No;No;No;No +2008-02-24;37.0;46.0;0.03;0.0;0.0;6.26;90;14.99;120;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2008-03-02;32.0;63.0;0.0;0.0;0.0;4.7;110;12.97;100;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-04;57.9;73.9;2.0;0.0;0.0;15.88;240;36.91;260;46.98;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-03-17;33.1;57.9;0.0;0.0;0.0;7.16;30;17.0;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-18;39.0;59.0;0.0;0.0;0.0;6.71;190;17.0;190;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-22;48.0;75.0;0.0;0.0;0.0;12.75;230;25.05;220;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-23;37.0;57.9;0.0;0.0;0.0;6.04;50;16.11;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-03;46.0;52.0;0.49;0.0;0.0;7.83;100;16.11;100;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-04-06;48.9;61.0;0.16;0.0;0.0;9.17;60;14.09;30;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-04-07;46.0;55.9;0.0;0.0;0.0;8.72;40;14.09;50;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2008-04-17;37.9;80.1;0.0;0.0;0.0;2.01;270;14.09;270;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-25;55.0;82.0;0.0;0.0;0.0;7.38;210;14.99;220;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-29;45.0;61.0;0.0;0.0;0.0;8.05;300;17.0;270;23.04;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-07;51.1;82.9;0.0;0.0;0.0;9.62;210;21.03;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-08;64.9;77.0;0.07;0.0;0.0;12.53;170;21.03;180;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-12;51.1;64.0;0.01;0.0;0.0;8.05;300;19.91;310;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-15;60.1;78.1;0.11;0.0;0.0;7.61;220;16.11;240;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-16;57.9;82.0;0.39;0.0;0.0;10.29;230;21.92;240;25.05;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-05-28;55.9;73.0;0.17;0.0;0.0;7.61;80;23.94;80;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2008-05-30;54.0;86.0;0.0;0.0;0.0;7.16;210;14.99;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-10;73.9;100.9;0.0;0.0;0.0;8.05;220;17.0;200;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-16;66.9;95.0;0.1;0.0;0.0;5.37;230;17.0;220;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2008-06-18;55.9;84.9;0.0;0.0;0.0;3.13;290;14.09;280;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-08;70.0;88.0;0.0;0.0;0.0;10.74;230;19.91;220;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-07-12;68.0;89.1;0.0;0.0;0.0;2.91;110;12.08;110;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-08-07;73.0;93.0;0.0;0.0;0.0;4.92;220;17.9;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-12;55.9;89.1;0.0;0.0;0.0;3.58;170;10.07;140;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-14;60.1;84.9;0.0;0.0;0.0;5.59;220;14.99;230;17.9;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2008-08-20;68.0;91.9;0.56;0.0;0.0;6.71;140;17.0;160;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-08-23;66.0;88.0;0.0;0.0;0.0;6.93;120;12.97;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-02;61.0;87.1;0.0;0.0;0.0;2.24;40;12.08;20;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-10;66.9;75.0;1.19;0.0;0.0;5.14;30;12.97;30;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-09-11;66.9;78.1;0.0;0.0;0.0;4.47;50;10.07;80;12.97;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-20;53.1;73.0;0.0;0.0;0.0;5.59;30;12.97;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-28;66.9;82.9;0.0;0.0;0.0;2.91;270;12.08;240;17.0;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2008-10-01;51.1;73.0;0.25;0.0;0.0;3.36;310;12.97;320;17.9;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;Yes;Yes;No;No +2008-10-05;54.0;82.0;0.0;0.0;0.0;1.57;230;8.05;250;10.07;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-12;55.9;78.1;0.0;0.0;0.0;8.72;50;16.11;90;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-15;54.0;87.1;0.0;0.0;0.0;1.12;50;8.95;60;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-29;34.0;59.0;0.0;0.0;0.0;6.93;250;17.9;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-08;44.1;73.0;0.06;0.0;0.0;8.72;220;19.91;240;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-11-18;32.0;45.0;0.0;0.0;0.0;8.28;310;17.0;290;25.05;No;No;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2008-11-19;27.0;45.0;0.0;0.0;0.0;6.04;240;14.09;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-30;39.0;59.0;0.96;0.0;0.0;6.93;280;21.03;280;25.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-12-04;33.1;57.9;0.0;0.0;0.0;8.72;220;17.9;230;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-09;36.0;66.0;0.0;0.0;0.0;8.72;170;21.92;160;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-13;25.0;46.9;0.0;0.0;0.0;1.79;330;10.07;40;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-18;48.9;57.9;0.02;0.0;0.0;2.46;90;10.07;130;12.08;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No +2008-12-20;48.9;61.0;0.19;0.0;0.0;5.59;90;17.9;90;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-22;21.0;36.0;0.0;0.0;0.0;7.16;310;17.0;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-26;37.0;48.0;0.04;0.0;0.0;4.92;100;14.99;90;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-12-30;37.0;64.0;0.0;0.0;0.0;5.82;210;14.09;200;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-14;28.0;46.0;0.0;0.0;0.0;5.82;210;12.08;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-19;35.1;50.0;0.02;0.0;0.0;5.82;20;12.97;30;16.11;Yes;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;Yes;Yes;No;No +2009-01-25;30.0;36.0;0.0;0.0;0.0;6.26;70;14.09;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-27;39.9;43.0;0.11;0.0;0.0;3.8;90;8.05;90;10.07;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-01-29;30.0;54.0;0.0;0.0;0.0;2.91;20;12.08;20;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-31;26.1;46.9;0.0;0.0;0.0;5.59;270;17.9;260;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-10;48.0;73.0;0.0;0.0;0.0;10.51;230;25.05;220;31.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2009-02-11;54.0;75.0;0.04;0.0;0.0;17.45;230;34.9;220;44.96;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-02-17;23.0;50.0;0.0;0.0;0.0;3.8;220;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-19;34.0;57.9;0.0;0.0;0.0;10.29;300;21.03;300;29.08;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-02-24;23.0;46.0;0.0;0.0;0.0;2.68;50;12.08;10;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-27;53.1;72.0;0.03;0.0;0.0;9.62;220;25.95;220;31.09;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-03-02;23.0;35.1;0.3;3.19;2.99;6.93;350;14.99;360;21.92;Yes;No;Yes;Yes;No;No;No;No;Yes;No;Yes;No;No;No;No;No;No +2009-03-06;39.9;73.9;0.0;0.0;0.0;14.32;220;25.95;220;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-07;48.9;82.0;0.0;0.0;0.0;7.38;220;16.11;220;17.9;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-03-08;53.1;84.0;0.0;0.0;0.0;14.54;220;25.05;240;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-23;42.1;66.0;0.0;0.0;0.0;5.82;50;19.91;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-26;46.0;69.1;0.43;0.0;0.0;5.37;220;25.05;210;29.08;Yes;Yes;No;No;No;No;No;Yes;No;No;Yes;No;No;Yes;Yes;No;No +2009-03-29;50.0;77.0;0.0;0.0;0.0;17.45;230;31.09;240;40.04;Yes;No;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-04-09;43.0;70.0;0.0;0.0;0.0;4.7;240;14.99;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-10;54.0;78.1;0.35;0.0;0.0;10.74;230;29.97;230;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-04-12;44.1;66.0;0.0;0.0;0.0;4.47;30;14.09;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-15;48.9;64.0;0.0;0.0;0.0;8.72;40;19.91;10;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-04-25;66.0;91.9;0.0;0.0;0.0;10.51;230;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-05;60.1;73.0;0.98;0.0;0.0;5.14;210;12.97;210;14.99;Yes;No;No;No;No;No;No;Yes;No;No;Yes;Yes;No;Yes;No;No;No +2009-05-08;62.1;82.0;0.0;0.0;0.0;7.38;230;19.91;220;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-09;66.9;90.0;0.08;0.0;0.0;12.08;270;31.09;270;44.07;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-05-15;69.1;84.9;0.0;0.0;0.0;6.04;150;12.97;210;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-18;48.9;66.9;0.06;0.0;0.0;9.62;40;21.92;40;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-19;45.0;71.1;0.0;0.0;0.0;9.62;50;23.04;50;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-25;66.9;82.9;0.13;0.0;0.0;5.37;160;23.04;170;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-05-27;64.0;86.0;0.0;0.0;0.0;2.68;80;8.95;100;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-05-29;68.0;88.0;0.0;0.0;0.0;7.16;240;19.91;230;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2009-05-30;63.0;84.9;0.0;0.0;0.0;4.03;40;12.08;30;14.99;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-06-01;64.9;87.1;0.0;0.0;0.0;6.04;60;14.99;60;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-02;66.0;93.9;0.0;0.0;0.0;6.71;200;14.99;200;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-06-11;69.1;89.1;0.0;0.0;0.0;4.92;230;14.09;230;16.11;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-06-17;68.0;80.1;0.05;0.0;0.0;7.38;100;14.99;90;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-19;70.0;91.0;0.0;0.0;0.0;4.7;330;14.09;330;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-06-29;72.0;91.9;0.0;0.0;0.0;5.82;240;17.9;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-01;64.9;97.0;0.04;0.0;0.0;5.14;230;21.03;230;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-07-12;72.0;97.0;0.0;0.0;0.0;7.61;230;17.9;230;25.05;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2009-07-19;66.0;88.0;0.0;0.0;0.0;5.59;70;12.97;80;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-22;68.0;91.9;0.0;0.0;0.0;5.14;120;12.97;120;17.0;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2009-07-26;73.0;99.0;0.06;0.0;0.0;9.17;220;21.92;230;29.08;No;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2009-08-03;70.0;95.0;0.03;0.0;0.0;2.68;150;14.99;120;21.92;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;Yes;No;No +2009-08-15;71.1;88.0;0.0;0.0;0.0;4.03;40;14.09;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-17;68.0;93.0;0.06;0.0;0.0;3.13;200;12.97;200;17.0;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-22;70.0;86.0;0.25;0.0;0.0;3.8;280;21.92;260;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-08-23;69.1;84.9;0.0;0.0;0.0;3.36;90;8.95;160;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-09-03;59.0;81.0;0.0;0.0;0.0;5.82;50;17.9;60;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-09;62.1;82.0;0.0;0.0;0.0;4.47;90;14.99;100;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-10;59.0;72.0;0.0;0.0;0.0;5.82;50;16.11;40;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-21;57.0;82.0;0.0;0.0;0.0;5.59;90;14.99;90;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-24;71.1;90.0;0.0;0.0;0.0;3.36;220;10.07;220;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2015-03-20;39.9;51.1;0.31;0.0;0.0;3.36;80;12.08;90;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-21;39.9;64.9;0.0;0.0;0.0;3.36;230;12.97;230;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-28;32.0;46.0;0.0;0.0;0.0;6.26;290;17.0;310;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-30;41.0;66.0;0.16;0.0;0.0;9.84;230;21.03;240;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-04;43.0;73.0;0.0;0.0;0.0;8.5;220;23.94;320;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-09;57.0;78.1;0.53;0.0;0.0;5.82;90;23.94;90;27.96;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2015-04-12;46.9;73.0;0.0;0.0;0.0;7.61;90;19.91;90;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-16;48.0;66.0;0.05;0.0;0.0;4.47;50;10.07;110;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-24;37.9;66.9;0.0;0.0;0.0;3.58;260;14.99;330;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-25;45.0;57.0;0.34;0.0;0.0;3.58;210;12.08;20;14.99;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-30;51.1;73.0;0.99;0.0;0.0;4.47;50;18.12;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-05-01;51.1;61.0;0.58;0.0;0.0;4.47;50;16.11;10;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-05;55.9;82.0;0.0;0.0;0.0;7.38;240;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-13;57.9;80.1;0.0;0.0;0.0;3.58;330;12.08;10;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-14;55.9;72.0;0.0;0.0;0.0;7.16;50;16.11;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-18;69.1;91.0;0.0;0.0;0.0;6.49;220;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-19;69.1;90.0;1.38;0.0;0.0;4.25;350;25.05;330;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-05-25;57.0;84.0;0.0;0.0;0.0;6.49;190;14.99;200;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-04;61.0;68.0;0.02;0.0;0.0;5.37;30;12.08;20;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-06-06;59.0;88.0;0.0;0.0;0.0;5.59;40;14.09;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-07;62.1;86.0;0.0;0.0;0.0;6.71;130;12.97;130;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-14;71.1;96.1;0.0;0.0;0.0;3.36;50;14.99;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-17;73.9;96.1;0.51;0.0;0.0;3.8;80;16.11;160;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-23;75.9;98.1;0.0;0.0;0.0;8.28;220;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-02;72.0;87.1;0.24;0.0;0.0;6.71;240;18.12;250;21.92;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-07-04;69.1;87.1;0.06;0.0;0.0;8.5;220;21.03;230;29.08;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-11;72.0;91.0;0.0;0.0;0.0;5.37;40;17.0;50;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-12;66.0;86.0;0.0;0.0;0.0;3.58;40;12.08;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-15;73.9;88.0;0.0;0.0;0.0;4.92;280;12.97;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-17;68.0;90.0;0.0;0.0;0.0;3.36;170;6.93;170;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-30;73.0;93.9;0.0;0.0;0.0;2.91;270;8.95;260;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-05;73.0;97.0;0.0;0.0;0.0;3.13;240;14.99;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-12;64.9;87.1;0.0;0.0;0.0;3.13;30;12.08;40;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-16;69.1;91.9;0.0;0.0;0.0;3.13;60;8.05;30;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-17;69.1;95.0;0.0;0.0;0.0;4.25;230;12.97;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-25;72.0;89.1;0.0;0.0;0.0;2.91;30;8.95;40;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-05;69.1;86.0;0.0;0.0;0.0;6.71;60;19.91;50;25.05;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-09-10;71.1;89.1;0.21;0.0;0.0;6.04;290;19.91;300;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-09-11;70.0;84.0;0.0;0.0;0.0;2.24;40;8.95;150;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-16;52.0;81.0;0.0;0.0;0.0;1.57;60;8.95;50;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-18;55.9;84.0;0.0;0.0;0.0;3.8;40;12.08;120;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-22;66.0;79.0;0.0;0.0;0.0;9.4;40;18.12;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-29;73.9;82.0;0.9;0.0;0.0;5.59;140;12.97;140;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-30;66.0;82.9;0.06;0.0;0.0;4.7;40;18.12;50;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-02;55.0;60.1;2.07;0.0;0.0;14.54;40;23.04;20;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-07;52.0;81.0;0.0;0.0;0.0;0.22;350;6.93;130;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-13;60.1;79.0;0.0;0.0;0.0;9.4;230;17.0;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-30;45.0;68.0;0.0;0.0;0.0;2.68;30;8.95;20;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-31;39.9;66.0;0.0;0.0;0.0;3.13;60;8.95;130;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-08;50.0;59.0;0.0;0.0;0.0;9.17;50;18.12;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-27;43.0;71.1;0.0;0.0;0.0;0.89;20;6.93;20;8.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-28;45.0;71.1;0.0;0.0;0.0;1.79;240;10.07;220;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-02;52.0;64.0;0.04;0.0;0.0;7.61;170;17.0;180;21.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-17;51.1;59.0;0.89;0.0;0.0;2.01;300;14.09;310;21.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-19;26.2;48.0;0.0;0.0;0.0;6.71;240;21.03;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-21;36.0;57.0;0.0;0.0;0.0;2.01;200;6.93;200;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-22;51.1;64.9;0.66;0.0;0.0;4.92;160;16.11;180;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-28;51.1;68.0;0.15;0.0;0.0;8.95;80;21.92;80;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-05;23.2;34.0;0.0;0.0;0.0;6.26;50;14.99;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-06;21.2;45.0;0.0;0.0;0.0;3.58;50;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-11;27.1;45.0;0.0;0.0;0.0;3.58;260;12.97;300;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-15;35.1;51.1;0.37;0.0;0.0;5.59;90;25.05;90;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-22;25.2;32.0;0.95;1.18;0.0;12.3;60;25.05;40;36.01;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2016-01-23;24.3;32.0;0.01;0.0;1.18;7.83;310;16.11;320;25.95;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2016-01-29;31.1;54.0;0.0;0.0;0.0;5.82;270;18.12;290;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-31;37.9;70.0;0.0;0.0;0.0;11.18;220;25.05;230;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-04;42.1;63.0;0.27;0.0;0.0;6.26;40;17.0;40;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-09;29.1;44.1;0.0;0.0;0.0;6.49;240;18.12;240;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-12;25.2;32.0;0.0;0.0;0.0;4.47;90;12.97;100;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-18;32.0;51.1;0.0;0.0;0.0;3.58;40;12.97;340;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-22;45.0;57.0;0.87;0.0;0.0;6.26;80;14.09;90;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-02-26;31.1;50.0;0.0;0.0;0.0;5.59;280;17.0;330;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-04;35.1;52.0;0.08;0.0;0.0;5.37;20;12.97;30;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-05;34.0;55.0;0.0;0.0;0.0;4.47;220;14.09;30;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-14;57.9;80.1;1.87;0.0;0.0;3.8;230;31.99;240;46.98;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2016-03-15;55.0;78.1;0.0;0.0;0.0;3.36;250;10.07;340;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-18;48.0;72.0;0.0;0.0;0.0;3.13;280;14.99;260;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-21;37.0;57.0;0.0;0.0;0.0;5.37;270;18.12;270;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-23;48.0;77.0;0.0;0.0;0.0;15.43;240;23.94;230;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-27;54.0;59.0;0.73;0.0;0.0;4.7;100;12.97;120;14.99;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-09;37.9;52.0;0.0;0.0;0.0;10.29;280;25.05;290;42.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-10;29.1;60.1;0.0;0.0;0.0;5.14;190;12.08;110;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-22;62.1;72.0;1.02;0.0;0.0;7.38;230;18.12;200;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-02;66.0;87.1;0.09;0.0;0.0;8.72;210;27.96;220;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-11;63.0;82.9;0.0;0.0;0.0;5.37;230;14.99;220;18.12;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-05-13;59.0;78.1;0.0;0.0;0.0;4.47;260;12.08;290;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-18;57.0;64.0;0.1;0.0;0.0;5.82;40;12.97;30;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-20;55.9;71.1;0.0;0.0;0.0;6.26;110;14.99;110;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-22;53.1;70.0;0.22;0.0;0.0;4.03;340;14.09;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-01;66.9;86.0;0.0;0.0;0.0;4.92;100;21.92;110;31.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-03;70.0;91.0;0.07;0.0;0.0;4.25;40;17.0;30;23.94;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-06-10;59.0;84.9;0.0;0.0;0.0;3.36;90;10.07;120;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-12;70.0;93.0;0.0;0.0;0.0;6.93;260;14.99;280;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-16;73.0;91.9;0.0;0.0;0.0;5.59;40;14.99;40;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-17;66.9;82.9;0.1;0.0;0.0;7.61;40;23.04;30;35.12;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-06-18;59.0;82.0;0.0;0.0;0.0;9.62;80;23.04;80;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-22;72.0;91.9;0.12;0.0;0.0;6.93;250;14.99;260;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-01;72.0;89.1;0.0;0.0;0.0;5.82;240;14.99;240;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-04;69.1;84.9;0.02;0.0;0.0;4.25;180;14.99;180;18.12;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-07-11;73.0;90.0;0.0;0.0;0.0;2.91;230;8.95;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-15;71.1;95.0;1.58;0.0;0.0;6.49;200;29.97;210;38.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-24;73.9;95.0;0.0;0.0;0.0;5.59;210;10.07;160;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-07;73.9;86.0;0.39;0.0;0.0;4.92;40;14.09;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-13;77.0;93.9;0.0;0.0;0.0;9.84;230;18.12;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-20;73.9;91.0;0.0;0.0;0.0;2.24;220;19.91;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-31;71.1;95.0;0.0;0.0;0.0;3.36;160;12.97;190;18.12;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-05;57.9;84.0;0.0;0.0;0.0;2.46;30;10.07;40;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-08;68.0;96.1;0.0;0.0;0.0;6.71;230;16.11;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-09;71.1;93.9;0.0;0.0;0.0;6.71;190;12.08;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-11;72.0;91.0;0.0;0.0;0.0;6.04;80;14.99;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-14;66.0;91.0;0.0;0.0;0.0;3.8;170;12.97;190;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-26;64.9;75.9;0.02;0.0;0.0;5.59;220;12.08;220;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-06;59.0;72.0;0.02;0.0;0.0;10.29;50;17.0;20;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-08;63.0;70.0;6.45;0.0;0.0;16.11;40;31.99;40;46.98;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-11;43.0;68.0;0.0;0.0;0.0;3.36;40;12.08;80;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-19;62.1;88.0;0.0;0.0;0.0;2.91;230;10.07;220;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-22;42.1;64.0;0.0;0.0;0.0;8.28;290;17.0;300;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-28;54.0;73.9;0.0;0.0;0.0;4.25;30;12.08;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-01;52.0;64.0;0.0;0.0;0.0;2.68;140;10.07;100;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-18;39.0;75.9;0.0;0.0;0.0;0.89;240;8.05;240;8.95;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-11-25;52.0;73.9;0.0;0.0;0.0;2.01;230;8.95;280;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-27;27.1;55.9;0.0;0.0;0.0;0.67;300;8.05;330;10.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-01;46.0;68.0;0.0;0.0;0.0;6.49;230;23.94;220;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-02;33.1;57.9;0.0;0.0;0.0;3.58;250;14.99;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-16;19.2;32.0;0.01;0.0;0.0;4.7;50;12.97;50;17.0;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2016-12-24;43.0;59.0;0.02;0.0;0.0;3.13;240;14.99;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-03;46.9;55.9;0.31;0.0;0.0;5.37;250;14.99;230;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-04;41.0;64.0;0.0;0.0;0.0;5.82;320;16.11;330;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-24;41.0;63.0;0.0;0.0;0.0;6.04;290;19.91;310;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-02;37.0;61.0;0.0;0.0;0.0;2.24;40;12.08;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-08;54.0;73.9;0.09;0.0;0.0;5.82;230;18.12;240;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-02-11;41.0;73.0;0.0;0.0;0.0;12.3;230;21.92;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-18;37.0;73.0;0.0;0.0;0.0;7.61;240;25.05;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-22;51.1;70.0;0.0;0.0;0.0;3.8;220;12.08;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-02;39.0;62.1;0.0;0.0;0.0;8.05;290;18.12;300;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-05;30.2;53.1;0.0;0.0;0.0;6.26;70;17.0;80;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-12;30.2;48.0;0.03;0.31;0.0;4.92;40;16.11;20;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-15;24.3;39.9;0.0;0.0;0.0;10.51;290;23.94;260;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-16;24.3;50.0;0.0;0.0;0.0;6.04;280;17.0;250;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-24;37.0;71.1;0.0;0.0;0.0;9.62;230;23.04;230;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-28;60.1;80.1;0.06;0.0;0.0;7.61;230;16.11;220;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-03-29;55.0;73.0;0.0;0.0;0.0;4.92;50;16.11;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-02;48.9;69.1;0.0;0.0;0.0;6.04;80;16.11;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-03;50.0;75.9;0.4;0.0;0.0;9.17;170;23.04;190;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-04-08;34.0;66.9;0.0;0.0;0.0;3.13;270;12.97;280;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-13;54.0;80.1;0.0;0.0;0.0;8.05;120;18.12;110;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-14;53.1;81.0;0.0;0.0;0.0;4.47;250;12.08;240;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-15;61.0;84.9;0.0;0.0;0.0;9.62;220;21.03;220;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-19;55.0;69.1;0.0;0.0;0.0;3.58;50;10.07;50;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-05;55.9;78.1;1.48;0.0;0.0;15.88;220;25.95;230;36.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-07;45.0;69.1;0.0;0.0;0.0;5.82;250;17.0;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-09;43.0;64.0;0.01;0.0;0.0;1.79;230;8.95;230;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-17;66.0;89.1;0.0;0.0;0.0;8.95;210;17.0;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-25;60.1;75.9;0.82;0.0;0.0;11.41;230;27.96;230;36.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-26;59.0;81.0;0.0;0.0;0.0;7.83;280;18.12;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-05;66.9;84.9;1.54;0.0;0.0;6.04;220;23.94;220;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-10;61.0;89.1;0.0;0.0;0.0;6.04;240;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-15;70.0;91.0;0.0;0.0;0.0;3.36;160;8.95;;;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-21;66.0;84.9;0.2;0.0;0.0;6.71;230;14.99;190;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-23;73.0;91.0;0.04;0.0;0.0;13.65;230;25.05;230;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-16;73.0;91.0;0.05;0.0;0.0;5.14;130;14.99;130;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-29;70.0;82.0;0.01;0.0;0.0;8.5;30;18.12;30;27.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-30;63.0;84.9;0.0;0.0;0.0;6.26;60;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-10;63.0;88.0;0.0;0.0;0.0;4.03;70;12.08;110;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-15;75.9;91.0;0.07;0.0;0.0;2.91;240;14.99;240;19.01;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-23;73.9;95.0;0.21;0.0;0.0;5.82;50;16.11;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-09-02;61.0;82.9;0.0;0.0;0.0;6.26;170;12.97;160;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-04;59.0;87.1;0.0;0.0;0.0;3.58;230;12.08;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-16;62.1;84.9;0.0;0.0;0.0;3.8;70;14.09;70;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-17;63.0;84.9;0.0;0.0;0.0;5.59;60;12.97;80;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-24;63.0;87.1;0.0;0.0;0.0;5.59;40;16.11;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-26;69.1;84.9;0.0;0.0;0.0;7.61;40;16.11;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-29;60.1;72.0;0.0;0.0;0.0;6.04;50;12.97;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-30;54.0;77.0;0.0;0.0;0.0;7.83;50;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-02;46.9;75.9;0.0;0.0;0.0;4.92;100;12.97;110;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-03;50.0;77.0;0.0;0.0;0.0;6.26;40;14.09;60;18.12;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-10-07;59.0;86.0;0.15;0.0;0.0;6.26;150;17.0;150;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-12;64.9;77.0;0.0;0.0;0.0;8.28;50;17.0;50;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-13;63.0;71.1;0.0;0.0;0.0;7.38;40;14.99;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-20;43.0;77.0;0.0;0.0;0.0;2.01;40;12.08;110;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-01;46.0;73.0;0.0;0.0;0.0;4.25;170;12.08;170;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-04;55.9;64.0;0.0;0.0;0.0;8.28;40;16.11;80;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-09;45.0;50.0;0.27;0.0;0.0;4.03;40;12.08;30;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-21;30.2;64.0;0.0;0.0;0.0;2.91;140;12.97;170;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-23;29.1;50.0;0.0;0.0;0.0;2.68;70;8.95;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-24;26.2;57.0;0.0;0.0;0.0;1.57;50;8.95;50;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-26;33.1;62.1;0.0;0.0;0.0;2.91;280;12.08;330;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-28;29.1;64.9;0.0;0.0;0.0;2.24;150;12.08;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-30;35.1;69.1;0.0;0.0;0.0;1.12;240;8.05;160;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-04;33.1;61.0;0.0;0.0;0.0;2.46;130;10.07;150;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-06;41.0;57.0;0.24;0.0;0.0;4.7;10;12.08;10;21.03;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2017-12-14;30.2;57.0;0.0;0.0;0.0;7.38;230;16.11;220;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-20;48.0;55.9;0.42;0.0;0.0;2.46;190;6.93;40;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-21;36.0;53.1;0.0;0.0;0.0;4.47;80;12.97;80;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-23;48.0;71.1;0.0;0.0;0.0;12.08;220;25.95;230;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-29;15.3;42.1;0.0;0.0;0.0;2.01;160;8.95;190;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-01;13.1;28.2;0.0;0.0;0.0;6.49;40;14.99;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-13;29.1;55.9;0.0;0.0;0.0;9.62;230;23.04;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-15;17.2;39.0;0.0;0.0;0.0;3.8;40;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-17;23.2;37.9;0.49;5.91;0.0;5.82;30;18.12;20;25.05;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-19;19.2;48.9;0.0;0.0;3.94;3.58;230;12.08;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-26;25.2;57.0;0.0;0.0;0.0;4.25;200;12.97;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-30;25.2;39.9;0.04;0.0;0.0;6.93;300;19.91;310;31.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-02;24.3;57.0;0.16;0.0;0.0;7.83;220;23.04;230;29.97;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-02-03;18.1;42.1;0.0;0.0;0.0;5.14;160;10.07;20;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-04;33.1;55.9;0.61;0.0;0.0;6.49;170;27.96;170;36.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-12;42.1;64.9;0.08;0.0;0.0;9.84;50;21.92;50;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-18;39.0;61.0;0.02;0.0;0.0;5.14;130;14.09;110;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-24;57.0;78.1;0.0;0.0;0.0;11.18;220;23.04;220;27.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-26;39.9;63.0;0.09;0.0;0.0;4.25;20;16.11;20;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-03;35.1;57.0;0.0;0.0;0.0;8.72;340;17.0;350;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-04;35.1;55.9;0.0;0.0;0.0;6.93;40;21.03;20;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-07;35.1;54.0;0.0;0.0;0.0;6.71;290;18.12;300;27.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-10;37.9;55.9;0.0;0.0;0.0;3.13;140;12.08;140;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-16;39.0;68.0;0.0;0.0;0.0;5.82;290;17.0;260;31.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-03-20;36.0;57.0;1.05;0.0;0.0;8.72;50;21.03;40;27.07;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;Yes;No;No;No +2018-03-25;33.1;54.0;0.3;0.0;0.0;9.84;50;21.03;90;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-29;55.9;80.1;0.0;0.0;0.0;13.87;230;25.05;230;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-30;51.1;71.1;0.03;0.0;0.0;13.2;230;23.04;200;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-31;39.9;64.0;0.0;0.0;0.0;5.82;200;14.09;210;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-04;48.0;77.0;0.0;0.0;0.0;13.87;230;23.94;340;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-14;59.0;81.0;0.0;0.0;0.0;13.87;230;23.94;210;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-17;33.1;62.1;0.0;0.0;0.0;9.4;230;25.95;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-18;42.1;82.0;0.0;0.0;0.0;9.62;230;23.94;220;29.08;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-04-23;52.0;66.0;0.01;0.0;0.0;11.18;120;25.95;100;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-03;57.0;84.9;0.0;0.0;0.0;11.86;230;21.03;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-09;50.0;79.0;0.0;0.0;0.0;4.7;60;10.96;40;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-18;71.1;82.0;0.23;0.0;0.0;8.28;160;14.99;160;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-20;69.1;86.0;0.0;0.0;0.0;8.05;230;14.99;210;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-27;69.1;87.1;0.0;0.0;0.0;9.4;230;16.11;220;19.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-05-28;69.1;75.9;0.28;0.0;0.0;6.26;90;14.09;90;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-01;69.1;91.9;0.0;0.0;0.0;5.59;260;16.11;250;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-04;64.0;84.9;0.0;0.0;0.0;5.59;240;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-08;64.9;89.1;0.0;0.0;0.0;4.47;140;10.07;150;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-10;66.9;91.0;0.2;0.0;0.0;4.47;300;14.99;280;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-13;66.9;84.9;0.0;0.0;0.0;6.04;230;14.99;230;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-15;69.1;86.0;0.0;0.0;0.0;5.82;80;16.11;80;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-16;64.9;90.0;0.0;0.0;0.0;4.47;210;12.08;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-19;73.0;96.1;0.0;0.0;0.0;5.59;60;12.97;290;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-30;71.1;93.9;0.02;0.0;0.0;4.92;130;14.09;130;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-02;75.0;95.0;0.0;0.0;0.0;3.13;150;8.95;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-04;72.0;93.0;0.0;0.0;0.0;5.37;150;16.11;130;23.04;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-10;59.0;91.0;0.0;0.0;0.0;2.46;40;12.97;10;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-23;70.0;88.0;0.02;0.0;0.0;6.26;130;21.92;120;27.96;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-07-27;73.0;95.0;0.0;0.0;0.0;6.93;170;17.0;180;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-04;71.1;89.1;0.0;0.0;0.0;3.8;240;10.07;120;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-14;64.9;86.0;0.12;0.0;0.0;2.46;240;21.92;240;27.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-15;68.0;90.0;0.0;0.0;0.0;2.24;250;10.07;240;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-23;60.1;80.1;0.0;0.0;0.0;5.14;50;14.99;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-30;73.0;95.0;0.0;0.0;0.0;6.49;30;18.12;20;27.96;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-08;71.1;91.0;0.0;0.0;0.0;3.13;50;14.09;40;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-18;71.1;84.9;0.0;0.0;0.0;6.93;250;16.11;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-19;64.9;88.0;0.0;0.0;0.0;1.79;40;8.95;340;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-24;64.0;73.9;0.0;0.0;0.0;5.82;40;12.08;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-26;66.0;87.1;0.12;0.0;0.0;5.37;230;19.91;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-28;64.9;79.0;0.02;0.0;0.0;4.92;220;14.99;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-02;61.0;82.9;0.0;0.0;0.0;3.8;230;12.97;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-09;66.9;80.1;0.07;0.0;0.0;6.49;110;12.97;120;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-15;59.0;80.1;0.0;0.0;0.0;5.59;240;16.11;220;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-23;42.1;66.0;0.0;0.0;0.0;4.7;230;12.97;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-25;36.0;55.0;0.0;0.0;0.0;1.34;250;8.05;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-30;35.1;64.9;0.0;0.0;0.0;1.12;40;10.07;20;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-10;34.0;52.0;0.0;0.0;0.0;6.26;320;16.11;320;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-12;35.1;48.0;3.17;0.0;0.0;5.14;50;16.11;50;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-20;37.9;64.0;0.0;0.0;0.0;5.82;360;12.08;350;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-22;33.1;50.0;0.0;0.0;0.0;5.59;80;14.09;90;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-29;25.2;51.1;0.0;0.0;0.0;3.13;230;10.07;190;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-04;41.0;53.1;0.0;0.0;0.0;4.03;340;12.97;30;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-12;24.3;45.0;0.0;0.0;1.18;1.34;170;8.95;150;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-14;36.0;57.0;0.7;0.0;0.0;5.14;90;14.09;120;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-18;34.0;53.1;0.0;0.0;0.0;2.01;50;14.09;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-19;27.1;53.1;0.0;0.0;0.0;1.12;100;6.93;110;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-23;28.2;57.0;0.01;0.0;0.0;5.14;220;16.11;210;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-31;46.9;66.9;0.13;0.0;0.0;8.05;200;19.91;200;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-06;39.0;64.9;0.0;0.0;0.0;2.68;290;12.08;320;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-07;39.9;51.1;0.0;0.0;0.0;6.93;80;12.97;110;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-11;21.2;43.0;0.0;0.0;0.0;2.01;30;10.07;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-22;17.2;39.0;0.0;0.0;0.0;3.8;160;8.95;140;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-24;35.1;64.9;0.73;0.0;0.0;11.41;230;25.05;180;38.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-28;37.0;50.0;0.0;0.0;0.0;5.82;150;10.07;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-31;18.1;39.0;0.0;0.0;0.0;4.92;40;12.97;20;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-04;37.0;68.0;0.0;0.0;0.0;2.68;50;14.09;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-05;37.9;75.9;0.0;0.0;0.0;1.57;340;12.08;350;12.97;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-02-08;45.0;75.0;0.0;0.0;0.0;9.17;300;17.0;330;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-14;29.1;64.0;0.0;0.0;0.0;4.7;180;14.99;190;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-20;32.0;37.0;0.39;0.0;0.0;7.61;80;14.09;80;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-21;35.1;59.0;0.14;0.0;0.0;4.25;230;10.07;240;12.97;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-02-24;41.0;64.9;0.05;0.0;0.0;8.72;240;29.08;240;34.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-09;41.0;48.0;0.01;0.0;0.0;5.82;110;12.97;110;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-28;32.0;66.0;0.0;0.0;0.0;3.58;230;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-04;48.0;75.0;0.0;0.0;0.0;5.14;180;14.09;180;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-06;53.1;66.9;0.0;0.0;0.0;3.8;30;10.07;140;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-08;57.0;81.0;1.98;0.0;0.0;8.5;240;18.12;220;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-13;64.0;70.0;0.93;0.0;0.0;5.59;250;14.09;80;18.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-16;37.9;69.1;0.0;0.0;0.0;5.82;230;14.99;240;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-19;64.0;73.0;1.31;0.0;0.0;14.54;200;31.09;180;50.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-24;57.9;84.0;0.0;0.0;0.0;4.92;240;14.09;220;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-28;55.9;82.0;0.0;0.0;0.0;9.4;40;25.05;50;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-07;57.9;79.0;0.0;0.0;0.0;4.47;190;10.07;200;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-08;62.1;82.9;0.0;0.0;0.0;7.38;190;14.99;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-11;64.0;81.0;0.18;0.0;0.0;5.37;220;12.97;230;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-14;46.9;66.9;0.0;0.0;0.0;4.92;310;14.09;310;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-15;43.0;72.0;0.0;0.0;0.0;3.58;230;14.09;50;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-17;57.9;84.9;0.0;0.0;0.0;6.26;230;21.92;230;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-19;69.1;89.1;0.0;0.0;0.0;10.74;220;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-21;63.0;84.9;0.0;0.0;0.0;5.82;30;12.97;70;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-28;66.9;96.1;0.0;0.0;0.0;6.04;230;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-30;64.9;96.1;0.0;0.0;0.0;6.93;240;23.04;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-02;62.1;88.0;0.0;0.0;0.0;5.59;210;14.99;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-09;70.0;80.1;0.09;0.0;0.0;6.93;80;16.11;90;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-10;72.0;87.1;0.14;0.0;0.0;6.49;230;14.09;210;18.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-12;59.0;73.9;0.35;0.0;0.0;6.71;90;14.99;100;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-27;66.9;93.0;0.0;0.0;0.0;3.36;50;12.08;80;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-20;73.0;95.0;0.0;0.0;0.0;5.37;210;21.92;220;27.96;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-04;68.0;89.1;0.16;0.0;0.0;1.79;240;19.91;230;23.04;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-01-01;48.9;68.0;0.45;0.0;0.0;12.75;190;25.05;180;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-11;24.1;51.1;0.0;0.0;0.0;3.13;180;12.08;200;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-16;39.9;63.0;0.0;0.0;0.0;7.61;320;14.99;10;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-01;30.0;34.0;0.44;0.59;0.0;4.25;50;12.97;40;14.99;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2007-02-11;19.9;50.0;0.0;0.0;0.0;4.03;220;14.99;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-17;19.0;48.0;0.0;0.0;0.0;7.61;230;23.94;200;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-24;28.0;57.0;0.0;0.0;0.0;3.8;40;12.08;130;14.99;No;No;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No;No;No +2007-02-25;42.1;51.1;0.56;0.0;0.0;6.71;130;16.11;130;21.03;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-02-27;34.0;64.9;0.0;0.0;0.0;2.46;240;10.07;270;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-07;35.1;70.0;0.0;0.0;0.0;8.95;230;25.05;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-10;37.0;71.1;0.0;0.0;0.0;4.25;170;12.97;200;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-14;54.0;81.0;0.0;0.0;0.0;9.17;220;21.03;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-20;48.9;77.0;0.0;0.0;0.0;6.71;80;21.92;90;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-24;57.0;86.0;0.0;0.0;0.0;3.8;230;12.97;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-01;59.0;77.0;0.01;0.0;0.0;9.4;220;21.92;220;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-02;60.1;82.9;0.02;0.0;0.0;6.04;230;14.99;250;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-07;32.0;48.0;0.12;0.0;0.0;8.05;260;17.9;260;27.96;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2007-04-08;27.0;55.9;0.0;0.0;0.0;2.91;240;19.91;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-26;64.9;84.9;0.0;0.0;0.0;9.62;190;17.9;180;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-10;63.0;82.9;0.0;0.0;0.0;2.91;20;10.07;20;12.97;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-05-11;61.0;87.1;0.0;0.0;0.0;4.03;220;12.97;220;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-17;55.9;69.1;0.01;0.0;0.0;5.59;50;12.97;10;17.9;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-02;66.0;82.9;0.13;0.0;0.0;7.38;100;14.09;90;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-08;73.0;96.1;0.0;0.0;0.0;8.05;240;14.09;240;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-11;62.1;82.9;0.02;0.0;0.0;2.91;210;12.08;220;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-12;62.1;84.9;0.0;0.0;0.0;3.8;90;12.97;40;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-07-05;64.9;91.9;0.0;0.0;0.0;9.62;230;17.9;230;23.04;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-06;71.1;93.9;0.0;0.0;0.0;6.49;270;12.97;260;16.11;Yes;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-19;71.1;93.9;0.0;0.0;0.0;7.38;230;17.9;230;21.92;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-11;73.0;84.9;0.0;0.0;0.0;7.16;90;14.99;120;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-12;66.9;91.9;0.0;0.0;0.0;5.14;100;12.97;180;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-18;66.9;90.0;0.0;0.0;0.0;6.49;50;17.0;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-24;73.9;99.0;0.0;0.0;0.0;7.38;220;14.09;220;16.11;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-27;71.1;90.0;0.0;0.0;0.0;5.82;50;12.97;50;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-28;71.1;93.9;0.0;0.0;0.0;5.82;60;12.97;10;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-30;73.0;90.0;0.0;0.0;0.0;5.59;60;12.97;120;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-01;69.1;87.1;0.0;0.0;0.0;8.5;50;17.9;40;21.92;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-04;66.0;96.1;0.0;0.0;0.0;3.36;90;10.07;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-06;69.1;95.0;0.0;0.0;0.0;5.82;150;12.08;150;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-07;69.1;93.0;0.0;0.0;0.0;5.14;110;14.09;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-16;53.1;75.0;0.0;0.0;0.0;8.05;40;17.0;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-17;51.1;75.9;0.0;0.0;0.0;7.61;60;17.0;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-21;66.0;81.0;0.0;0.0;0.0;5.82;30;14.09;30;17.0;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-09-30;48.0;80.1;0.0;0.0;0.0;6.71;50;16.11;90;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-08;64.9;93.0;0.0;0.0;0.0;1.79;180;8.05;170;12.97;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-12;43.0;73.9;0.0;0.0;0.0;4.7;360;12.97;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-13;43.0;75.0;0.0;0.0;0.0;2.01;260;12.08;260;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-15;48.0;80.1;0.0;0.0;0.0;3.13;140;10.07;140;17.0;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-16;51.1;79.0;0.0;0.0;0.0;2.01;140;8.95;160;12.97;Yes;No;Yes;No;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-10-17;54.0;84.0;0.0;0.0;0.0;3.36;90;8.95;100;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-20;50.0;80.1;0.0;0.0;0.0;4.7;270;17.0;270;21.92;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-24;70.0;78.1;1.72;0.0;0.0;6.93;210;21.03;220;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-11-01;53.1;78.1;0.0;0.0;0.0;4.47;40;19.91;50;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-12;37.0;66.0;0.04;0.0;0.0;7.16;240;16.11;220;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-11-17;28.0;60.1;0.0;0.0;0.0;4.25;230;17.0;210;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-20;45.0;66.0;0.0;0.0;0.0;3.36;230;12.08;240;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-11-26;44.1;64.0;0.06;0.0;0.0;5.82;220;17.9;210;21.03;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-05;36.0;53.1;0.0;0.0;0.0;4.92;10;17.0;20;23.04;No;No;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2007-12-06;26.1;45.0;0.0;0.0;0.0;7.61;20;19.91;350;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-09;48.9;72.0;0.0;0.0;0.0;5.14;120;12.08;110;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-14;46.0;66.9;0.0;0.0;0.0;3.58;70;8.05;350;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-20;28.0;57.9;0.0;0.0;0.0;2.91;90;14.09;80;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-26;35.1;43.0;0.91;0.0;0.0;6.93;20;17.9;20;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-29;55.0;71.1;0.13;0.0;0.0;10.74;190;27.96;190;38.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-30;46.9;57.9;1.92;0.0;0.0;5.59;90;14.09;20;17.9;Yes;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2007-12-31;36.0;57.0;0.0;0.0;0.0;3.58;140;12.08;360;16.11;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-04;17.1;45.0;0.0;0.0;0.0;6.04;220;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-05;25.0;55.0;0.0;0.0;0.0;8.5;220;17.9;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-20;18.0;33.1;0.0;0.0;0.98;6.93;330;16.11;290;21.03;Yes;No;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2008-01-23;37.0;54.0;0.0;0.0;0.0;3.58;20;8.95;30;12.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-01-30;30.9;57.0;0.13;0.0;0.0;9.84;220;25.05;200;31.09;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2008-02-13;34.0;55.9;0.92;0.0;0.0;4.92;300;14.99;310;23.04;Yes;Yes;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2008-03-03;39.0;73.9;0.0;0.0;0.0;10.29;220;25.95;220;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-06;37.9;66.9;0.0;0.0;0.0;4.92;100;12.97;90;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-10;28.0;63.0;0.0;0.0;0.0;5.82;220;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-14;51.1;73.9;0.0;0.0;0.0;11.86;200;25.95;220;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-15;46.9;68.0;0.82;0.0;0.0;5.14;90;19.91;100;23.04;Yes;No;No;Yes;No;No;No;Yes;No;No;Yes;Yes;No;Yes;No;No;No +2008-03-24;36.0;51.1;0.0;0.0;0.0;6.93;50;17.0;50;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-03-28;57.0;81.0;0.0;0.0;0.0;10.74;230;23.94;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-29;41.0;68.0;0.06;0.0;0.0;10.74;40;21.92;30;27.96;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2008-04-13;46.0;66.9;0.0;0.0;0.0;6.04;240;17.9;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-16;32.0;68.0;0.0;0.0;0.0;3.8;50;16.11;10;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-21;46.0;69.1;0.01;0.0;0.0;6.71;40;17.0;40;21.92;Yes;Yes;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;Yes;Yes;No +2008-04-23;55.9;75.9;0.04;0.0;0.0;6.49;80;16.11;60;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2008-04-30;37.9;66.9;0.0;0.0;0.0;2.91;230;10.07;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-10;55.9;80.1;0.0;0.0;0.0;7.16;40;21.92;20;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-11;51.1;66.9;0.94;0.0;0.0;8.5;250;21.92;150;29.08;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-05-17;46.9;75.0;0.0;0.0;0.0;8.05;230;19.91;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-21;52.0;75.0;0.0;0.0;0.0;3.8;250;19.91;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-24;54.0;75.0;0.0;0.0;0.0;6.71;70;14.99;10;19.91;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-26;55.0;84.0;0.0;0.0;0.0;10.29;220;19.91;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-27;63.0;87.1;0.0;0.0;0.0;10.96;230;17.9;230;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-05-31;68.0;89.1;0.0;0.0;0.0;10.29;230;21.03;220;25.05;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-06-03;66.0;88.0;0.0;0.0;0.0;9.62;190;19.91;200;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-09;73.9;100.0;0.0;0.0;0.0;3.13;40;12.08;40;14.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-06-12;73.9;89.1;0.0;0.0;0.0;6.04;110;12.97;130;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-06-15;69.1;91.0;0.41;0.0;0.0;4.7;220;16.11;230;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2008-06-24;63.0;91.0;0.0;0.0;0.0;3.13;290;12.97;290;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-26;72.0;97.0;0.0;0.0;0.0;8.5;220;14.99;240;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-06-28;70.0;98.1;0.0;0.0;0.0;10.29;230;23.94;220;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-06-30;69.1;89.1;0.48;0.0;0.0;5.82;300;17.0;300;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-07-01;62.1;81.0;0.0;0.0;0.0;4.25;290;12.97;320;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-03;66.9;91.9;0.0;0.0;0.0;9.4;230;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-06;70.0;87.1;0.85;0.0;0.0;4.47;200;21.03;210;27.96;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-07-10;71.1;89.1;0.0;0.0;0.0;4.92;190;16.11;190;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-07-14;69.1;79.0;0.53;0.0;0.0;4.25;30;10.07;40;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2008-07-18;64.9;91.0;0.6;0.0;0.0;3.58;150;19.91;160;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-07-20;71.1;93.0;0.0;0.0;0.0;3.36;20;12.08;10;14.99;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-07-21;72.0;97.0;0.0;0.0;0.0;2.91;10;10.07;280;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-22;72.0;97.0;0.49;0.0;0.0;4.47;230;38.92;240;46.98;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-07-24;64.9;87.1;0.0;0.0;0.0;3.36;40;12.08;350;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-26;66.0;87.1;0.0;0.0;0.0;6.93;220;17.0;210;21.03;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-08-03;70.0;91.9;0.0;0.0;0.0;3.36;40;12.97;330;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-04;66.0;93.9;0.0;0.0;0.0;2.24;230;14.99;220;19.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-08;70.0;91.0;0.0;0.0;0.0;4.92;220;14.09;20;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-18;64.0;89.1;0.0;0.0;0.0;3.36;170;10.07;180;12.08;Yes;No;Yes;No;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-19;66.9;95.0;0.0;0.0;0.0;2.91;200;10.07;180;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-08-27;71.1;84.0;3.43;0.0;0.0;12.3;120;21.03;120;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-08-28;72.0;89.1;0.21;0.0;0.0;3.13;150;12.97;10;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-08-31;69.1;90.0;0.32;0.0;0.0;5.59;40;21.92;30;25.05;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-09-03;61.0;90.0;0.0;0.0;0.0;2.68;220;10.07;240;12.97;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-05;64.0;82.0;0.47;0.0;0.0;7.61;60;14.99;90;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-09-06;71.1;88.0;4.72;0.0;0.0;9.62;50;21.03;310;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-09-09;70.0;87.1;0.0;0.0;0.0;6.71;230;14.09;230;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-09-12;70.0;86.0;0.0;0.0;0.0;4.25;230;10.07;230;14.09;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2008-09-18;55.9;81.0;0.0;0.0;0.0;5.37;40;16.11;50;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-25;59.0;64.0;0.33;0.0;0.0;16.55;20;23.94;10;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2008-09-27;64.9;80.1;0.18;0.0;0.0;3.58;280;8.95;150;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-09;64.0;75.9;0.29;0.0;0.0;2.46;150;8.05;120;10.07;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-19;39.0;61.0;0.0;0.0;0.0;6.93;40;17.9;30;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-22;35.1;60.1;0.0;0.0;0.0;5.59;40;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-24;48.0;63.0;0.03;0.0;0.0;9.84;100;21.03;90;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-25;57.9;77.0;0.02;0.0;0.0;7.61;210;14.99;230;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-27;35.1;60.1;0.0;0.0;0.0;4.47;20;16.11;340;21.92;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-28;34.0;55.0;0.0;0.0;0.0;8.72;300;21.03;310;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-31;30.9;66.9;0.0;0.0;0.0;2.91;220;12.08;240;14.99;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-03;55.0;57.9;0.13;0.0;0.0;8.72;40;14.09;30;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;Yes;No +2008-11-04;55.9;59.0;0.92;0.0;0.0;10.51;20;16.11;30;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-11-12;39.0;61.0;0.0;0.0;0.0;4.03;90;12.97;90;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-13;51.1;66.0;0.09;0.0;0.0;4.7;140;14.99;150;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-11-17;32.0;55.0;0.0;0.0;0.0;3.8;270;12.97;330;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-27;28.9;63.0;0.0;0.0;0.0;2.91;230;10.07;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-01;36.0;52.0;0.0;0.0;0.0;14.09;220;34.9;220;42.95;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-07;25.0;43.0;0.0;0.0;0.0;4.47;290;17.0;270;23.04;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-27;43.0;59.0;0.01;0.0;0.0;3.36;180;8.05;210;8.95;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No +2008-12-29;39.0;60.1;0.02;0.0;0.0;3.36;270;12.08;360;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-01-02;27.0;42.1;0.05;0.0;0.0;6.26;220;14.09;220;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-01-03;32.0;57.9;0.0;0.0;0.0;2.01;240;8.05;240;10.07;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-01-07;41.0;68.0;0.16;0.0;0.0;18.34;240;42.95;230;59.06;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-01-08;36.0;53.1;0.0;0.0;0.0;9.17;240;17.0;230;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-10;33.1;64.0;0.0;0.0;0.0;10.74;230;23.94;230;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-13;32.0;43.0;0.0;0.0;0.0;2.46;260;8.05;130;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-23;30.9;60.1;0.0;0.0;0.0;8.05;240;17.0;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-28;42.1;66.9;0.42;0.0;0.0;9.17;220;31.99;290;40.04;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-01-30;28.0;50.0;0.0;0.0;0.0;4.7;290;17.0;330;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-01;32.0;62.1;0.0;0.0;0.0;11.86;220;25.05;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-02;37.0;64.0;0.11;0.0;0.0;9.62;240;21.03;220;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-02-04;25.0;37.9;0.0;0.0;0.0;8.5;300;17.0;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-08;44.1;75.0;0.0;0.0;0.0;7.83;280;16.11;280;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-12;51.1;69.1;0.0;0.0;0.0;11.86;270;23.94;260;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-14;45.0;63.0;0.0;0.0;0.0;8.72;240;17.9;230;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-18;39.9;57.0;0.59;0.0;0.0;10.74;220;17.0;210;23.04;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-02-26;37.0;64.9;0.0;0.0;0.0;7.38;220;17.9;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-03;18.0;36.0;0.0;0.0;0.98;3.58;360;12.08;290;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-18;43.0;68.0;0.0;0.0;0.0;4.92;230;12.08;240;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2009-03-21;30.9;57.0;0.0;0.0;0.0;4.03;50;12.97;130;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-30;44.1;66.9;0.0;0.0;0.0;6.04;270;16.11;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-02;57.9;64.9;0.33;0.0;0.0;7.38;140;14.99;150;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-04-17;36.0;73.9;0.0;0.0;0.0;3.8;230;10.07;240;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-18;45.0;82.9;0.0;0.0;0.0;7.83;230;14.99;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-21;50.0;75.0;0.0;0.0;0.0;5.14;230;29.97;220;36.91;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-26;61.0;91.0;0.0;0.0;0.0;8.05;220;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-27;61.0;89.1;0.0;0.0;0.0;7.38;210;17.0;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-28;55.0;84.9;0.0;0.0;0.0;9.62;220;17.9;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-30;55.0;75.9;0.0;0.0;0.0;5.59;190;16.11;190;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-05-06;61.0;82.9;0.17;0.0;0.0;6.93;230;21.03;220;23.94;Yes;Yes;No;No;No;No;No;No;No;No;Yes;Yes;No;Yes;Yes;No;No +2009-05-13;55.0;75.0;0.0;0.0;0.0;7.61;100;17.0;120;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-16;70.0;87.1;0.01;0.0;0.0;9.62;190;17.9;240;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-05-22;57.9;87.1;0.0;0.0;0.0;3.8;150;10.07;150;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-24;66.9;84.0;0.54;0.0;0.0;4.92;230;14.99;230;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-03;70.0;91.9;0.0;0.0;0.0;8.28;220;17.9;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-08;66.0;91.0;0.0;0.0;0.0;3.13;220;10.07;230;14.99;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-06-13;70.0;91.9;0.0;0.0;0.0;2.91;340;8.95;250;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-14;70.0;86.0;0.0;0.0;0.0;5.59;30;14.09;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-26;69.1;97.0;0.0;0.0;0.0;5.14;250;14.09;230;17.0;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-07-08;64.9;91.0;0.0;0.0;0.0;5.37;40;12.97;40;16.11;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-07-14;64.9;88.0;0.0;0.0;0.0;4.7;50;16.11;20;23.04;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-07-15;63.0;91.9;0.0;0.0;0.0;5.59;220;14.09;230;19.91;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2009-07-20;66.9;79.0;0.19;0.0;0.0;5.14;50;12.97;100;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-07-31;73.0;93.0;0.03;0.0;0.0;12.53;240;25.05;220;31.99;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-04;66.9;95.0;0.0;0.0;0.0;3.58;240;12.97;230;31.99;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-08-08;69.1;91.0;0.0;0.0;0.0;7.61;240;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-13;71.1;81.0;0.0;0.0;0.0;2.01;140;8.05;160;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-08-16;69.1;90.0;0.08;0.0;0.0;2.01;170;16.11;170;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-19;73.0;98.1;0.0;0.0;0.0;9.84;230;17.9;210;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-20;73.0;91.9;0.0;0.0;0.0;6.71;220;17.9;230;23.94;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-08-21;75.9;93.9;0.0;0.0;0.0;8.05;160;17.9;150;23.94;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-08-28;71.1;90.0;0.37;0.0;0.0;4.03;120;25.05;130;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-08-31;64.9;72.0;0.14;0.0;0.0;5.59;50;12.08;50;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-09-11;55.9;82.9;0.0;0.0;0.0;2.91;280;12.08;70;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-17;64.9;71.1;0.37;0.0;0.0;4.03;70;10.07;80;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2015-03-22;46.9;66.0;0.0;0.0;0.0;4.25;140;12.97;140;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-24;36.0;66.9;0.0;0.0;0.0;5.14;110;18.12;120;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-25;46.9;66.9;0.0;0.0;0.0;4.03;90;16.11;100;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-07;61.0;72.0;0.11;0.0;0.0;5.14;240;14.99;190;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-11;52.0;75.0;0.0;0.0;0.0;3.8;280;12.97;20;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-15;52.0;61.0;0.31;0.0;0.0;5.59;50;10.96;30;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-17;55.9;78.1;0.0;0.0;0.0;2.01;230;8.05;250;12.97;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-04-18;61.0;80.1;0.01;0.0;0.0;3.13;130;12.08;140;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-21;52.0;70.0;0.63;0.0;0.0;4.92;240;17.0;240;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-04-27;39.0;68.0;0.0;0.0;0.0;4.03;300;14.09;10;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-29;43.0;70.0;0.0;0.0;0.0;2.01;220;10.07;220;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-04;53.1;82.0;0.0;0.0;0.0;7.61;200;14.99;200;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-06;54.0;82.9;0.0;0.0;0.0;3.8;160;12.08;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-10;68.0;78.1;0.22;0.0;0.0;9.4;90;21.92;50;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-16;60.1;84.9;0.0;0.0;0.0;7.16;220;14.09;220;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-17;63.0;88.0;0.0;0.0;0.0;6.93;230;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-22;52.0;75.0;0.0;0.0;0.0;3.13;30;10.07;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-28;68.0;87.1;0.15;0.0;0.0;4.7;250;14.99;260;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-05-30;66.0;88.0;0.0;0.0;0.0;4.25;200;12.97;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-18;71.1;98.1;2.1;0.0;0.0;5.59;90;23.04;90;29.97;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-24;73.9;95.0;0.0;0.0;0.0;4.92;220;14.09;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-25;71.1;91.9;0.31;0.0;0.0;5.82;230;19.91;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-30;66.9;91.9;0.02;0.0;0.0;6.71;240;23.04;240;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-01;66.9;87.1;0.0;0.0;0.0;7.38;220;17.0;230;23.04;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-07-08;72.0;91.0;0.0;0.0;0.0;6.71;250;23.04;250;31.09;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-22;71.1;88.0;0.0;0.0;0.0;2.24;90;8.95;120;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-28;73.0;90.0;0.0;0.0;0.0;4.03;170;14.09;150;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-04;73.0;95.0;0.0;0.0;0.0;5.37;220;12.97;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-11;69.1;87.1;0.29;0.0;0.0;7.38;310;21.03;330;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-08-13;63.0;88.0;0.0;0.0;0.0;2.46;80;12.08;100;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-15;66.0;91.0;0.0;0.0;0.0;2.68;40;8.95;110;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-18;73.9;84.9;0.0;0.0;0.0;5.82;190;19.91;200;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-02;68.0;93.9;0.1;0.0;0.0;3.36;50;18.12;30;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-09-25;64.0;70.0;1.42;0.0;0.0;11.41;70;19.91;80;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-28;70.0;80.1;0.28;0.0;0.0;8.72;90;21.03;90;29.08;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-10-04;57.9;69.1;0.13;0.0;0.0;17.67;50;25.95;50;36.91;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-10-10;55.9;66.9;0.18;0.0;0.0;6.93;60;17.0;50;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-15;46.9;73.0;0.0;0.0;0.0;2.91;270;10.07;310;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-16;46.9;68.0;0.01;0.0;0.0;2.24;350;8.05;360;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-22;41.0;79.0;0.0;0.0;0.0;2.01;230;12.08;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-23;48.9;79.0;0.0;0.0;0.0;4.92;40;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-01;55.0;63.0;0.15;0.0;0.0;2.01;200;8.05;200;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-02;59.0;66.0;1.52;0.0;0.0;4.7;40;12.08;40;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-04;59.0;70.0;0.0;0.0;0.0;3.13;60;8.95;60;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-14;34.0;60.1;0.0;0.0;0.0;3.36;320;12.97;300;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-24;27.1;57.0;0.0;0.0;0.0;0.67;230;6.93;240;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-25;30.2;59.0;0.0;0.0;0.0;2.91;120;10.07;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-26;39.0;70.0;0.0;0.0;0.0;3.36;90;10.07;100;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-01;43.0;53.1;0.04;0.0;0.0;2.01;290;6.93;150;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-08;36.0;61.0;0.0;0.0;0.0;2.24;130;10.07;130;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-11;50.0;71.1;0.0;0.0;0.0;6.26;230;12.97;210;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-15;48.0;72.0;0.0;0.0;0.0;5.59;240;18.12;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-16;43.0;64.9;0.0;0.0;0.0;4.7;100;12.08;120;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-20;27.1;54.0;0.0;0.0;0.0;2.01;160;8.05;160;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-23;61.0;73.0;1.68;0.0;0.0;9.17;230;29.08;220;35.12;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-12-30;63.0;66.9;1.79;0.0;0.0;5.14;290;14.99;290;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-01-07;37.0;44.1;0.0;0.0;0.0;5.82;40;10.07;50;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-12;28.2;54.0;0.0;0.0;0.0;9.17;230;27.96;250;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-19;18.1;32.0;0.0;0.0;0.0;4.47;300;14.09;290;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-20;18.1;39.0;0.0;0.0;0.0;4.25;230;16.11;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-21;26.2;44.1;0.0;0.0;0.0;3.8;40;12.08;20;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-25;24.3;52.0;0.0;0.0;1.18;4.7;190;12.97;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-08;28.2;55.9;0.09;0.0;0.0;3.8;210;23.04;220;29.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-14;15.3;32.0;0.0;0.0;0.0;5.82;50;12.97;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-19;26.2;53.1;0.0;0.0;0.0;6.49;210;16.11;190;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-20;43.0;66.0;0.0;0.0;0.0;10.07;240;18.12;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-24;45.0;73.0;0.46;0.0;0.0;14.99;230;35.12;230;46.08;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-03-01;37.9;73.9;0.0;0.0;0.0;9.17;220;23.94;210;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-07;35.1;68.0;0.0;0.0;0.0;7.61;230;16.11;220;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-12;59.0;78.1;0.0;0.0;0.0;5.82;120;12.08;140;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-13;60.1;77.0;0.89;0.0;0.0;6.93;330;23.04;330;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2016-03-17;46.0;77.0;0.0;0.0;0.0;4.03;230;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-01;66.9;78.1;0.01;0.0;0.0;14.32;240;29.08;250;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-02;55.9;71.1;0.25;0.0;0.0;10.29;250;21.03;300;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-04;46.0;75.9;0.0;0.0;0.0;12.08;230;25.05;240;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-05;37.0;62.1;0.0;0.0;0.0;8.95;40;21.03;330;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-06;29.1;63.0;0.0;0.0;0.0;6.93;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-11;46.9;75.9;0.0;0.0;0.0;11.63;220;23.94;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-21;53.1;81.0;0.0;0.0;0.0;8.95;160;19.91;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-26;59.0;84.0;0.0;0.0;0.0;11.41;240;21.03;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-30;57.9;64.9;0.0;0.0;0.0;8.05;80;12.97;90;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-04;55.0;73.9;0.0;0.0;0.0;2.24;270;14.09;230;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-06;50.0;66.9;0.68;0.0;0.0;3.8;360;14.99;20;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-17;57.0;69.1;0.27;0.0;0.0;4.7;220;12.97;310;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-19;57.0;62.1;0.07;0.0;0.0;4.47;40;12.08;40;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-21;62.1;77.0;0.3;0.0;0.0;3.8;120;12.97;310;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-28;59.0;87.1;0.0;0.0;0.0;2.91;90;12.08;90;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-30;66.0;84.0;0.5;0.0;0.0;4.92;100;16.11;100;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-15;70.0;91.0;0.45;0.0;0.0;3.58;240;33.11;230;40.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-23;66.9;91.0;1.62;0.0;0.0;6.49;40;29.08;40;42.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-27;64.9;90.0;0.0;0.0;0.0;4.7;220;12.97;150;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-29;69.1;89.1;0.91;0.0;0.0;4.7;50;36.91;20;55.03;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-07-02;71.1;88.0;1.66;0.0;0.0;4.25;310;17.0;290;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-03;70.0;78.1;1.48;0.0;0.0;5.82;70;14.09;70;17.0;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-09;68.0;91.0;0.0;0.0;0.0;5.82;250;14.09;270;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-19;73.9;93.0;0.0;0.0;0.0;4.7;140;18.12;80;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-26;75.0;97.0;0.13;0.0;0.0;7.83;220;23.04;210;31.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-01;73.0;91.0;0.04;0.0;0.0;5.82;220;12.97;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-14;77.0;96.1;0.0;0.0;0.0;6.26;240;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-15;75.0;96.1;0.0;0.0;0.0;6.04;170;14.09;190;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-18;73.9;93.0;0.0;0.0;0.0;4.25;290;12.97;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-25;64.9;91.9;0.0;0.0;0.0;3.58;220;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-26;72.0;99.0;0.0;0.0;0.0;3.8;40;12.08;10;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-01;71.1;93.9;0.01;0.0;0.0;4.7;230;14.99;230;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-02;64.0;75.0;1.13;0.0;0.0;11.41;40;23.94;30;35.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-07;66.9;93.9;0.0;0.0;0.0;4.47;240;12.97;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-12;69.1;88.0;0.0;0.0;0.0;6.71;90;14.99;100;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-13;64.0;91.0;0.0;0.0;0.0;4.03;190;10.07;170;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-16;68.0;82.9;0.0;0.0;0.0;8.5;80;14.99;110;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-21;70.0;75.0;0.49;0.0;0.0;10.74;40;18.12;40;27.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-22;71.1;82.9;0.23;0.0;0.0;6.93;60;14.99;60;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-27;66.9;80.1;0.0;0.0;0.0;3.58;220;14.09;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-30;71.1;82.9;0.14;0.0;0.0;7.61;130;17.0;150;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-10-02;62.1;79.0;0.0;0.0;0.0;2.68;340;10.07;330;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-03;62.1;79.0;0.0;0.0;0.0;3.13;40;8.95;40;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-04;62.1;75.9;0.0;0.0;0.0;8.5;30;17.0;20;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-05;60.1;72.0;0.0;0.0;0.0;10.29;40;17.0;30;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-14;53.1;70.0;0.0;0.0;0.0;5.82;50;14.09;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-10;37.0;64.9;0.0;0.0;0.0;3.36;30;12.97;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-11;36.0;70.0;0.0;0.0;0.0;4.7;300;12.97;270;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-13;24.3;64.0;0.06;0.0;0.0;1.57;90;6.93;190;10.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-24;46.9;72.0;0.06;0.0;0.0;1.57;230;12.08;230;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-28;31.1;59.0;0.0;0.0;0.0;5.37;160;19.91;160;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-30;64.9;77.0;0.07;0.0;0.0;12.97;240;27.96;240;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-09;27.1;41.0;0.0;0.0;0.0;3.8;10;14.09;20;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-21;27.1;59.0;0.0;0.0;0.0;2.24;280;8.95;140;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-29;39.0;63.0;0.35;0.0;0.0;7.83;290;21.92;320;36.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-02;46.9;51.1;1.08;0.0;0.0;5.59;30;10.07;30;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-05;29.1;44.1;0.0;0.0;0.0;2.01;40;12.08;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-14;42.1;55.0;0.0;0.0;0.0;6.71;50;17.0;70;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-15;39.9;57.0;0.02;0.0;0.0;5.82;70;16.11;50;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-22;53.1;55.9;0.09;0.0;0.0;5.82;80;23.04;80;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-26;43.0;70.0;0.06;0.0;0.0;13.42;280;23.94;320;38.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-31;31.1;68.0;0.0;0.0;0.0;12.75;230;25.95;240;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-04;26.2;45.0;0.0;0.0;0.0;4.7;40;14.09;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-09;32.0;60.1;0.11;0.0;0.0;10.96;310;23.94;330;40.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-02-14;30.2;64.0;0.0;0.0;0.0;4.7;210;17.0;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-17;34.0;66.0;0.0;0.0;0.0;6.71;220;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-21;44.1;66.0;0.0;0.0;0.0;5.82;130;12.97;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-03;31.1;54.0;0.0;0.0;0.0;6.71;280;21.03;300;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-06;34.0;64.9;0.0;0.0;0.0;6.71;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-14;30.2;54.0;0.25;0.0;0.0;10.51;290;23.04;270;40.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-17;23.2;57.9;0.03;0.0;0.0;4.92;230;16.11;230;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-18;44.1;64.0;0.5;0.0;0.0;7.83;300;23.94;300;35.12;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2017-03-19;36.0;57.0;0.0;0.0;0.0;7.16;30;21.03;40;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-20;30.2;66.0;0.0;0.0;0.0;3.58;240;12.97;230;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-23;31.1;55.9;0.0;0.0;0.0;7.38;50;14.09;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-30;55.0;66.9;0.0;0.0;0.0;8.95;160;16.11;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-09;37.9;77.0;0.0;0.0;0.0;4.47;230;14.09;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-11;55.0;82.0;0.0;0.0;0.0;10.51;230;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-17;62.1;86.0;0.05;0.0;0.0;9.84;310;19.91;300;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-25;57.9;70.0;2.17;0.0;0.0;6.93;40;12.97;20;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-26;55.9;81.0;0.0;0.0;0.0;5.37;230;16.11;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-01;68.0;84.9;0.29;0.0;0.0;15.66;200;27.96;200;42.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-06;53.1;66.9;0.02;0.0;0.0;10.96;280;21.92;270;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-11;61.0;84.0;0.48;0.0;0.0;4.92;20;23.94;20;44.96;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2017-05-13;52.0;66.0;0.23;0.0;0.0;4.47;40;10.07;340;12.97;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-18;66.0;86.0;0.0;0.0;0.0;10.96;230;18.12;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-19;68.0;89.1;0.0;0.0;0.0;8.05;280;19.91;290;31.09;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-20;66.9;90.0;0.0;0.0;0.0;7.38;80;21.92;70;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-28;66.9;86.0;0.08;0.0;0.0;6.71;270;17.0;240;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-29;64.0;87.1;0.08;0.0;0.0;3.13;270;12.08;280;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-30;68.0;82.0;0.06;0.0;0.0;4.03;220;12.08;220;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-01;62.1;84.9;0.0;0.0;0.0;1.57;280;10.07;270;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-03;57.0;88.0;0.0;0.0;0.0;3.36;230;14.99;250;19.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-06-04;61.0;90.0;0.38;0.0;0.0;5.82;240;25.95;230;33.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-07;59.0;77.0;0.0;0.0;0.0;10.29;90;18.12;100;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-11;66.9;90.0;0.0;0.0;0.0;6.26;240;14.99;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-12;66.9;89.1;0.0;0.0;0.0;6.49;230;14.99;240;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-16;70.0;89.1;2.3;0.0;0.0;4.03;170;23.04;160;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-25;66.9;84.0;0.0;0.0;0.0;3.58;360;12.08;290;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-05;70.0;89.1;0.47;0.0;0.0;2.46;10;12.97;340;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-08;71.1;95.0;0.05;0.0;0.0;6.49;30;16.11;20;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-12;75.0;93.9;0.0;0.0;0.0;8.72;210;16.11;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-13;78.1;97.0;0.0;0.0;0.0;8.5;220;17.0;280;23.94;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-15;75.0;93.9;0.0;0.0;0.0;5.82;230;16.11;230;21.03;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-18;71.1;89.1;0.0;0.0;0.0;5.14;10;12.97;360;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-19;66.9;93.9;0.0;0.0;0.0;2.68;70;12.08;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-21;73.9;98.1;0.0;0.0;0.0;5.59;230;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-25;73.9;91.0;0.0;0.0;0.0;4.7;110;12.97;120;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-07-26;72.0;90.0;0.0;0.0;0.0;5.82;100;16.11;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-27;72.0;93.9;0.02;0.0;0.0;7.61;230;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-31;57.9;87.1;0.0;0.0;0.0;4.47;90;17.0;130;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-02;66.0;91.0;0.0;0.0;0.0;3.36;50;8.95;220;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-05;68.0;91.9;0.0;0.0;0.0;6.49;240;14.99;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-06;64.9;90.0;0.0;0.0;0.0;7.61;110;14.99;100;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-09;66.9;84.0;0.0;0.0;0.0;6.71;80;16.11;100;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-20;71.1;95.0;0.0;0.0;0.0;3.58;70;12.97;100;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-22;73.9;96.1;0.0;0.0;0.0;7.61;220;16.11;220;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-25;68.0;84.9;0.0;0.0;0.0;5.14;80;10.07;150;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-27;63.0;81.0;0.0;0.0;0.0;9.17;80;17.0;80;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-28;62.1;78.1;0.03;0.0;0.0;11.41;40;21.92;50;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-01;64.0;78.1;1.06;0.0;0.0;7.83;50;21.92;90;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-09-06;61.0;82.0;0.52;0.0;0.0;4.92;310;16.11;310;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-15;63.0;84.9;0.0;0.0;0.0;1.79;40;8.05;20;10.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-28;63.0;93.9;0.0;0.0;0.0;3.13;50;17.0;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-01;48.0;71.1;0.0;0.0;0.0;7.16;60;16.11;60;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-11;73.0;89.1;1.12;0.0;0.0;8.05;100;21.92;90;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-10-16;51.1;69.1;0.25;0.0;0.0;5.82;40;12.08;330;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-18;37.0;68.0;0.0;0.0;0.0;2.68;40;12.08;80;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-23;61.0;75.9;1.12;0.0;0.0;10.74;140;23.94;160;34.0;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-10-24;52.0;72.0;0.0;0.0;0.0;6.49;230;16.11;240;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-07;44.1;63.0;0.1;0.0;0.0;6.49;30;16.11;30;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-13;42.1;60.1;0.64;0.0;0.0;4.25;360;12.08;340;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-25;29.1;66.9;0.0;0.0;0.0;4.92;230;14.99;230;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-08;32.0;43.0;1.33;0.31;0.0;5.82;30;12.97;20;18.12;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2017-12-09;32.0;34.0;0.3;0.0;0.0;5.82;270;12.08;10;17.0;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2012-06-23;70.0;89.1;0.0;0.0;0.0;4.03;170;12.97;170;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-24;68.0;91.9;0.0;0.0;0.0;5.14;180;16.11;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-28;60.1;97.0;0.0;0.0;0.0;6.93;230;17.9;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-03;72.0;100.9;0.0;0.0;0.0;2.91;180;14.99;180;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-04;73.0;100.9;0.24;0.0;0.0;3.8;100;23.94;100;29.97;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-10;73.0;86.0;0.01;0.0;0.0;3.58;30;14.99;40;21.92;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-15;73.9;93.9;0.0;0.0;0.0;7.83;230;14.09;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-17;71.1;98.1;0.0;0.0;0.0;4.7;220;17.0;220;23.04;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-23;72.0;96.1;0.11;0.0;0.0;5.14;230;17.9;240;23.94;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-31;71.1;88.0;0.0;0.0;0.0;2.01;200;8.95;200;12.97;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-03;70.0;93.0;0.0;0.0;0.0;6.93;170;14.99;190;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-09;66.0;89.1;0.0;0.0;0.0;4.7;220;12.97;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-11;72.0;88.0;0.4;0.0;0.0;6.93;220;19.91;110;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-20;66.9;81.0;0.15;0.0;0.0;1.12;250;6.93;260;8.95;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-29;70.0;86.0;0.0;0.0;0.0;3.13;80;8.95;130;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-06;72.0;90.0;0.55;0.0;0.0;7.16;230;16.11;240;21.03;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-09;60.1;79.0;0.02;0.0;0.0;4.25;330;12.08;20;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-10;55.0;78.1;0.0;0.0;0.0;3.36;30;12.97;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-16;59.0;64.9;0.69;0.0;0.0;3.13;320;8.95;90;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-28;62.1;84.9;0.06;0.0;0.0;3.8;260;10.07;10;14.99;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-30;57.9;73.0;0.0;0.0;0.0;2.46;190;6.93;90;12.97;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-10-09;48.0;57.0;0.0;0.0;0.0;3.36;40;10.07;40;14.99;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-10-11;46.0;68.0;0.0;0.0;0.0;2.68;30;10.07;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-22;42.1;73.9;0.0;0.0;0.0;0.45;10;6.93;30;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-23;46.0;80.1;0.0;0.0;0.0;2.68;220;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-29;42.1;51.1;0.55;0.0;0.0;10.07;260;21.03;260;33.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-10-31;37.0;55.9;0.0;0.0;0.0;7.83;270;14.99;260;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-07;35.1;54.0;0.0;0.0;0.0;4.03;30;12.97;30;17.0;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-11-08;34.0;61.0;0.0;0.0;0.0;2.68;300;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-20;42.1;59.0;0.0;0.0;0.0;2.68;50;8.05;30;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-23;28.9;66.9;0.0;0.0;0.0;5.14;230;16.11;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-25;23.0;51.1;0.0;0.0;0.0;4.92;240;16.11;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-08;50.0;66.0;0.01;0.0;0.0;4.92;240;10.07;220;14.99;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-12-13;33.1;51.1;0.13;0.0;0.0;5.82;30;14.09;40;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-12-19;33.1;64.9;0.0;0.0;0.0;3.13;250;12.97;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-23;25.0;55.0;0.0;0.0;0.0;4.47;240;14.99;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-30;28.0;46.0;0.0;0.0;0.0;5.37;310;16.11;330;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-06;35.1;50.0;0.0;0.0;0.0;3.58;220;8.95;200;10.07;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-08;39.0;55.0;0.59;0.0;0.0;7.61;30;17.9;40;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-09;28.0;52.0;0.0;0.0;0.0;3.8;330;12.08;310;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-14;30.9;52.0;0.0;0.0;0.0;2.68;240;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-15;28.9;61.0;0.0;0.0;0.0;2.91;250;14.09;350;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-17;24.1;37.0;0.0;0.0;0.0;6.71;290;19.91;300;31.99;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2013-02-18;18.0;52.0;0.0;0.0;0.0;5.14;200;14.99;200;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-24;39.9;62.1;0.08;0.0;0.0;3.58;270;14.09;300;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-27;43.0;59.0;0.0;0.0;0.0;8.72;230;19.91;230;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-28;33.1;50.0;0.0;0.0;0.0;4.03;280;17.0;290;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-03;27.0;46.0;0.0;0.0;0.0;4.47;270;14.99;330;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-04;26.1;50.0;0.0;0.0;0.0;4.7;290;16.11;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-07;30.0;51.1;0.0;0.0;0.0;5.37;320;14.09;20;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-11;39.0;70.0;0.0;0.0;0.0;9.17;150;19.91;150;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-16;46.0;78.1;0.0;0.0;0.0;10.51;230;25.05;250;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-06;39.0;64.0;0.0;0.0;0.0;7.61;130;17.0;120;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-11;62.1;81.0;0.0;0.0;0.0;12.3;230;21.92;200;29.08;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2013-04-14;44.1;79.0;0.0;0.0;0.0;3.36;200;14.09;180;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-19;64.0;84.0;0.57;0.0;0.0;15.21;220;46.98;220;59.06;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-26;46.0;71.1;0.0;0.0;0.0;3.58;20;12.97;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-27;53.1;72.0;0.0;0.0;0.0;2.91;220;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-28;55.0;62.1;0.97;0.0;0.0;4.92;120;12.08;120;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-03;48.0;69.1;0.0;0.0;0.0;9.84;80;21.03;80;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-07;50.0;71.1;0.0;0.0;0.0;4.92;230;18.12;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-08;52.0;72.0;0.18;0.0;0.0;3.58;300;19.91;310;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-15;55.0;86.0;0.0;0.0;0.0;9.84;230;18.12;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-20;66.9;75.0;1.47;0.0;0.0;5.59;170;10.96;180;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-23;64.9;82.0;0.18;0.0;0.0;7.16;220;12.97;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-24;52.0;70.0;0.0;0.0;0.0;5.82;290;19.91;310;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-27;48.9;80.1;0.0;0.0;0.0;4.92;230;12.97;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-30;64.0;86.0;0.0;0.0;0.0;5.59;240;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-31;66.0;87.1;0.0;0.0;0.0;6.93;240;14.09;200;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-01;66.9;89.1;0.0;0.0;0.0;9.17;230;18.12;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-07;68.0;75.9;5.14;0.0;0.0;4.92;350;14.09;120;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-08;66.0;84.0;0.04;0.0;0.0;3.36;230;14.09;230;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-10;70.0;84.9;0.66;0.0;0.0;11.63;240;25.05;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-12;64.0;90.0;0.0;0.0;0.0;4.92;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-24;71.1;89.1;0.0;0.0;0.0;8.5;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-28;69.1;91.9;1.66;0.0;0.0;9.17;240;19.91;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-01;69.1;82.9;0.72;0.0;0.0;6.26;180;18.12;170;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-02;72.0;77.0;0.3;0.0;0.0;8.5;210;14.99;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-04;73.0;88.0;0.0;0.0;0.0;7.16;140;16.11;150;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-14;70.0;88.0;0.0;0.0;0.0;6.71;80;14.09;90;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-26;62.1;86.0;0.0;0.0;0.0;3.58;110;8.05;160;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-11;71.1;91.9;0.0;0.0;0.0;3.13;350;8.95;330;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-14;61.0;75.0;0.0;0.0;0.0;5.59;40;14.09;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-24;64.9;82.9;0.0;0.0;0.0;8.28;80;17.0;80;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-01;71.1;91.0;1.16;0.0;0.0;7.61;100;23.94;90;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-05;64.9;87.1;0.0;0.0;0.0;2.46;270;10.07;280;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-08;63.0;88.0;0.0;0.0;0.0;2.01;50;8.95;30;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-14;57.9;75.9;0.0;0.0;0.0;6.71;30;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-15;53.1;80.1;0.0;0.0;0.0;3.58;90;8.95;80;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-16;66.0;86.0;0.06;0.0;0.0;5.82;60;17.0;40;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-18;51.1;73.9;0.0;0.0;0.0;2.91;60;10.07;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-19;54.0;78.1;0.0;0.0;0.0;2.01;80;8.05;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-22;57.0;77.0;0.43;0.0;0.0;7.16;30;21.03;30;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-26;57.0;77.0;0.0;0.0;0.0;4.7;50;14.09;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-28;50.0;73.0;0.0;0.0;0.0;4.92;40;17.0;50;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-04;62.1;86.0;0.0;0.0;0.0;3.58;230;12.08;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-05;61.0;89.1;0.0;0.0;0.0;2.24;240;10.07;210;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-11;59.0;66.0;0.02;0.0;0.0;2.68;340;8.95;340;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-16;61.0;70.0;0.0;0.0;0.0;1.12;30;6.04;170;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-18;55.9;69.1;0.0;0.0;0.0;3.13;30;12.08;20;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-22;51.1;64.0;0.0;0.0;0.0;2.46;230;8.95;160;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-23;46.0;66.9;0.0;0.0;0.0;7.16;290;18.12;300;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-25;33.1;55.9;0.0;0.0;0.0;3.36;30;12.97;340;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-07;46.0;70.0;0.03;0.0;0.0;4.7;230;14.09;320;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-08;33.1;57.9;0.0;0.0;0.0;2.91;300;12.97;300;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-15;30.2;60.1;0.0;0.0;0.0;1.57;230;8.95;230;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-02;36.0;60.1;0.0;0.0;0.0;0.67;80;6.04;140;8.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-11;24.3;48.9;0.0;0.0;0.0;2.91;230;12.08;210;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-14;37.9;46.9;0.85;0.0;0.0;4.92;80;14.09;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-03;22.1;43.0;0.0;0.0;0.0;7.38;300;21.92;310;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-04;19.2;37.9;0.0;0.0;0.0;2.24;120;8.05;120;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-21;26.2;51.1;0.1;0.51;0.0;4.92;40;17.0;360;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-22;18.1;30.2;0.0;0.0;0.0;4.47;30;12.97;20;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-31;15.3;53.1;0.0;0.0;0.0;2.01;220;8.95;220;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-01;24.3;59.0;0.0;0.0;0.0;2.91;140;12.08;150;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-05;37.9;53.1;0.06;0.0;0.0;4.7;240;12.08;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-17;28.2;45.0;0.0;0.0;0.0;6.26;130;14.99;130;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-23;34.0;66.9;0.0;0.0;0.0;6.49;230;21.03;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-05;30.2;44.1;0.0;0.0;0.0;4.03;50;10.07;40;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-07;33.1;36.0;1.72;0.0;0.0;10.29;40;21.92;30;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-15;46.0;72.0;0.0;0.0;0.0;8.5;240;23.04;250;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-24;30.2;50.0;0.0;0.0;0.0;4.7;60;12.08;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-26;29.1;46.9;0.0;0.0;0.0;6.93;280;17.0;290;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-28;44.1;69.1;0.31;0.0;0.0;6.71;220;21.92;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-03;50.0;78.1;0.0;0.0;0.0;4.92;210;12.08;210;14.99;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-04-11;52.0;78.1;0.0;0.0;0.0;13.42;230;29.08;220;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-13;59.0;81.0;0.0;0.0;0.0;11.18;230;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-17;31.1;64.0;0.0;0.0;0.0;7.83;50;18.12;130;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-23;50.0;71.1;0.0;0.0;0.0;6.04;280;16.11;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-16;55.0;73.0;0.18;0.0;0.0;7.16;260;16.11;180;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-18;46.0;68.0;0.0;0.0;0.0;3.8;50;12.97;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-20;50.0;79.0;0.0;0.0;0.0;8.05;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-31;63.0;82.0;0.0;0.0;0.0;5.14;50;14.99;40;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-15;57.9;87.1;0.0;0.0;0.0;2.91;210;8.95;130;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-06;61.0;90.0;0.0;0.0;0.0;5.82;240;14.99;190;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-09;73.9;96.1;0.02;0.0;0.0;6.93;240;23.94;220;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-13;71.1;93.9;0.0;0.0;0.0;7.16;180;14.99;190;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-17;60.1;84.0;0.0;0.0;0.0;2.24;350;8.05;40;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-29;63.0;82.0;0.0;0.0;0.0;2.01;50;10.07;60;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-14;57.9;82.9;0.0;0.0;0.0;2.91;240;12.08;240;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-16;68.0;89.1;0.0;0.0;0.0;3.36;220;12.08;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-22;71.1;91.9;0.0;0.0;0.0;2.24;250;14.09;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-23;72.0;84.0;0.01;0.0;0.0;5.59;80;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-29;72.0;82.0;0.07;0.0;0.0;6.26;70;12.08;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-03;71.1;93.0;0.0;0.0;0.0;4.92;170;17.0;180;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-09-04;71.1;90.0;1.18;0.0;0.0;3.8;220;23.94;210;29.97;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2014-09-12;70.0;80.1;0.01;0.0;0.0;5.59;80;12.97;90;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-15;63.0;75.0;0.0;0.0;0.0;2.68;210;8.05;160;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-17;66.0;79.0;0.0;0.0;0.0;6.04;90;12.97;110;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-22;61.0;75.9;0.0;0.0;0.0;2.68;30;12.97;340;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-23;55.0;64.0;0.15;0.0;0.0;7.83;50;17.0;40;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-26;59.0;75.9;0.0;0.0;0.0;5.37;40;14.09;60;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-30;59.0;75.0;0.0;0.0;0.0;1.34;90;6.93;100;12.97;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-10-02;59.0;84.0;0.0;0.0;0.0;2.91;60;12.08;120;17.0;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-10-11;57.9;86.0;0.22;0.0;0.0;9.4;240;16.11;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-12;57.0;62.1;0.02;0.0;0.0;5.59;40;14.09;30;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-23;42.1;70.0;0.0;0.0;0.0;4.25;290;12.97;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-27;39.9;75.9;0.0;0.0;0.0;1.57;180;8.95;120;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-01;45.0;51.1;0.61;0.0;0.0;8.5;20;18.12;10;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-05;46.9;71.1;0.0;0.0;0.0;6.04;240;12.97;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-07;37.9;60.1;0.0;0.0;0.0;4.03;290;16.11;310;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-08;31.1;60.1;0.0;0.0;0.0;2.91;230;12.97;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-10;35.1;66.0;0.0;0.0;0.0;2.46;90;12.97;100;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-14;29.1;44.1;0.0;0.0;0.0;5.37;40;14.09;20;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-16;27.1;48.9;0.04;0.0;0.0;1.79;90;6.93;130;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-19;19.2;43.0;0.0;0.0;0.0;5.82;220;16.11;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-28;26.2;45.0;0.0;0.0;0.0;2.46;360;12.08;340;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-01;44.1;73.9;0.0;0.0;0.0;6.04;210;12.97;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-04;39.9;54.0;0.0;0.0;0.0;6.26;60;10.07;80;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-06;46.0;55.9;0.16;0.0;0.0;3.58;20;16.11;30;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-08;34.0;45.0;0.13;0.0;0.0;8.5;30;17.0;30;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-12;26.2;57.0;0.0;0.0;0.0;3.58;300;14.99;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-14;29.1;57.9;0.0;0.0;0.0;1.34;30;10.07;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-22;36.0;41.0;0.4;0.0;0.0;6.71;50;14.09;50;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-14;28.2;33.1;0.01;0.0;0.0;4.92;30;12.08;30;17.0;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2015-01-21;36.0;54.0;0.0;0.0;0.0;4.92;20;12.08;100;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-26;37.9;50.0;0.24;0.0;0.0;2.91;330;8.95;330;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-31;22.1;48.0;0.0;0.0;0.0;2.46;290;12.08;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-03;22.1;45.0;0.0;0.0;0.0;3.36;240;10.07;20;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-08;39.0;72.0;0.0;0.0;0.0;14.09;230;27.96;230;38.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-11;30.2;51.1;0.0;0.0;0.0;4.92;30;18.12;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-13;23.2;35.1;0.0;0.0;0.0;4.92;30;14.09;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-14;22.1;53.1;0.0;0.0;0.0;11.18;270;35.12;290;48.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-19;12.2;23.2;0.0;0.0;0.0;8.5;270;18.12;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-22;34.0;57.0;0.08;0.0;0.0;2.46;290;12.08;250;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-23;30.2;46.9;0.03;0.0;0.0;7.38;70;14.99;50;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-05;32.0;66.0;0.97;0.0;0.0;10.51;40;23.04;40;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-16;41.0;80.1;0.0;0.0;0.0;4.92;230;17.0;300;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-27;61.0;81.0;0.1;0.0;0.0;2.91;260;14.09;270;21.92;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-10-01;51.1;73.0;0.0;0.0;0.0;3.8;240;14.09;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-05;57.0;66.9;0.09;0.0;0.0;2.01;230;8.05;240;10.07;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-06;60.1;66.0;0.02;0.0;0.0;3.8;240;14.09;230;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2009-10-08;45.0;73.9;0.0;0.0;0.0;2.68;190;8.95;170;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-24;57.9;81.0;0.27;0.0;0.0;11.41;240;25.95;230;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-27;54.0;62.1;0.12;0.0;0.0;4.25;170;16.11;140;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-10-30;54.0;61.0;0.01;0.0;0.0;2.68;90;12.08;80;14.99;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-10-31;59.0;80.1;0.06;0.0;0.0;8.28;220;19.91;220;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-11-09;42.1;75.9;0.0;0.0;0.0;0.89;240;8.95;250;12.97;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-11;48.0;57.0;2.97;0.0;0.0;15.21;50;27.96;50;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-11-23;48.9;52.0;0.58;0.0;0.0;6.26;50;17.0;60;23.04;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-11-30;42.1;62.1;0.18;0.0;0.0;10.51;230;21.03;10;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-14;37.9;50.0;0.0;0.0;0.0;5.14;210;12.08;210;14.99;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No +2009-12-15;48.0;59.0;0.0;0.0;0.0;4.47;330;12.97;350;25.95;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-12-22;24.1;48.9;0.0;0.0;0.0;0.45;40;8.95;30;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-24;27.0;48.0;0.0;0.0;0.0;5.82;90;17.0;90;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-04;17.1;36.0;0.0;0.0;0.0;6.26;290;12.97;320;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-09;19.9;37.0;0.0;0.0;0.0;3.36;20;8.95;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-22;37.0;39.9;0.01;0.0;0.0;6.71;30;12.97;30;16.11;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2010-01-27;25.0;51.1;0.0;0.0;0.0;3.36;270;14.99;290;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-01;18.0;48.0;0.0;0.0;2.99;0.67;10;6.93;30;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-04;30.0;44.1;0.0;0.0;0.0;3.13;110;12.08;190;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-05;33.1;42.1;1.37;0.0;0.0;11.41;100;25.95;100;34.9;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;Yes;No;Yes;No;No;No +2010-02-09;32.0;39.9;0.35;0.0;0.0;4.7;90;16.11;90;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2010-02-10;28.0;37.9;0.0;0.0;0.0;13.42;280;27.96;290;44.07;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No +2010-02-11;30.0;45.0;0.0;0.0;0.0;8.28;290;16.11;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-13;28.0;42.1;0.05;0.98;2.01;4.92;290;14.09;300;21.03;Yes;No;Yes;Yes;No;No;No;No;Yes;No;Yes;No;No;No;No;No;No +2010-02-17;25.0;43.0;0.0;0.0;0.0;7.16;300;17.0;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-21;25.0;64.9;0.0;0.0;0.0;3.8;220;14.09;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-26;28.9;50.0;0.0;0.0;0.0;10.29;280;21.92;280;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-01;28.9;54.0;0.0;0.0;0.0;3.36;310;12.97;330;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-11;52.0;69.1;0.32;0.0;0.0;4.47;150;10.07;130;14.09;Yes;Yes;No;Yes;No;No;No;No;No;No;Yes;No;No;Yes;Yes;Yes;No +2010-03-13;48.9;68.0;0.42;0.0;0.0;8.28;230;21.03;220;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;Yes;Yes;No;No +2010-03-19;37.0;73.9;0.0;0.0;0.0;2.46;250;14.99;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-29;52.0;66.9;1.52;0.0;0.0;3.8;100;12.97;120;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-03-31;41.0;77.0;0.0;0.0;0.0;4.47;290;14.09;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-15;37.9;75.0;0.0;0.0;0.0;2.01;240;8.95;230;12.97;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-20;42.1;73.9;0.0;0.0;0.0;3.58;260;12.97;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-26;59.0;78.1;0.0;0.0;0.0;9.84;230;21.03;280;29.97;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-29;37.9;75.0;0.0;0.0;0.0;4.25;230;17.9;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-08;62.1;90.0;0.0;0.0;0.0;11.86;250;23.04;300;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-15;68.0;95.0;0.0;0.0;0.0;4.47;140;14.09;140;17.9;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-05-19;57.0;70.0;0.36;0.0;0.0;3.8;90;8.95;130;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-05-24;64.0;73.0;0.04;0.0;0.0;7.83;90;17.0;90;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2010-05-27;60.1;91.0;0.0;0.0;0.0;3.58;60;17.0;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-31;69.1;88.0;0.0;0.0;0.0;9.17;220;19.91;230;23.94;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-06-07;64.0;82.0;0.0;0.0;0.0;3.58;30;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-09;68.0;88.0;0.0;0.0;0.0;11.18;220;21.92;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-12;68.0;93.9;0.0;0.0;0.0;4.7;320;17.0;340;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2010-06-19;73.0;93.0;0.0;0.0;0.0;4.92;210;8.95;220;12.97;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-06-20;72.0;93.9;0.0;0.0;0.0;3.58;310;12.08;310;14.99;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-06-28;73.0;99.0;0.0;0.0;0.0;8.5;230;21.03;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-07-03;57.0;87.1;0.0;0.0;0.0;3.58;100;10.07;140;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-05;64.0;97.0;0.0;0.0;0.0;6.04;230;12.08;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-22;75.0;97.0;0.0;0.0;0.0;2.68;20;10.07;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-25;80.1;102.0;0.0;0.0;0.0;8.95;240;19.91;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-01;66.0;79.0;0.1;0.0;0.0;4.92;50;10.07;70;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-08-04;73.9;95.0;0.39;0.0;0.0;8.05;210;23.94;200;38.03;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2010-08-07;72.0;89.1;0.0;0.0;0.0;5.59;40;14.99;60;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-19;75.0;84.0;0.6;0.0;0.0;2.68;60;12.97;70;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-08-20;71.1;90.0;0.0;0.0;0.0;5.82;80;12.97;80;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-08-24;70.0;82.9;0.47;0.0;0.0;5.82;50;17.9;50;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-26;66.0;90.0;0.0;0.0;0.0;1.57;20;10.07;90;12.97;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-05;54.0;87.1;0.0;0.0;0.0;3.13;240;14.99;130;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-11;66.0;79.0;0.1;0.0;0.0;4.47;90;12.08;90;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-09-17;73.0;95.0;0.0;0.0;0.0;7.38;220;17.0;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-18;64.9;87.1;0.0;0.0;0.0;6.26;60;14.09;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-25;68.0;98.1;0.0;0.0;0.0;7.61;220;17.9;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-03;50.0;72.0;0.0;0.0;0.0;5.14;40;17.0;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-15;43.0;71.1;0.0;0.0;0.0;5.82;230;17.0;310;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-16;42.1;70.0;0.0;0.0;0.0;3.58;320;12.97;350;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-18;48.9;82.0;0.0;0.0;0.0;3.36;210;12.97;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-27;73.0;87.1;0.29;0.0;0.0;13.87;230;25.05;230;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-11-05;39.9;61.0;0.0;0.0;0.0;3.58;240;12.97;220;16.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-11-12;36.0;66.0;0.0;0.0;0.0;4.03;40;17.9;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-21;37.9;69.1;0.0;0.0;0.0;0.45;230;6.04;250;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-01;30.9;70.0;0.29;0.0;0.0;12.08;230;29.97;240;40.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2010-12-16;28.0;35.1;0.6;0.39;0.0;4.47;220;14.99;230;21.03;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No +2011-01-01;39.0;63.0;0.28;0.0;0.0;4.25;150;17.0;200;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-06;32.0;48.0;0.15;0.0;0.0;2.24;30;8.95;200;12.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-01-19;42.1;61.0;0.0;0.0;0.0;5.14;280;14.99;320;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-07;30.0;57.9;0.0;0.0;0.0;3.8;160;14.09;160;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-19;48.0;68.0;0.0;0.0;0.0;8.72;310;23.04;320;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-25;41.0;73.9;0.05;0.0;0.0;16.33;230;31.99;240;40.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-26;33.1;61.0;0.0;0.0;0.0;5.82;90;14.09;110;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-28;57.0;81.0;0.62;0.0;0.0;14.32;230;31.99;230;38.92;Yes;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-03-02;30.0;66.0;0.0;0.0;0.0;4.47;230;16.11;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-04;27.0;61.0;0.0;0.0;0.0;5.82;110;19.91;110;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-05;43.0;69.1;0.0;0.0;0.0;8.5;160;17.9;150;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-06;39.0;64.9;0.67;0.0;0.0;10.51;310;21.03;320;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-03-11;36.0;51.1;0.0;0.0;0.0;6.04;290;16.11;270;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-14;43.0;57.9;0.0;0.0;0.0;9.17;50;19.91;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-24;50.0;68.0;0.04;0.0;0.0;7.83;300;17.0;300;29.97;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-27;35.1;39.9;0.07;0.0;0.0;6.93;50;17.0;50;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-03;33.1;71.1;0.0;0.0;0.0;5.37;210;17.9;210;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-04;55.9;84.9;0.0;0.0;0.0;18.57;230;31.09;200;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-06;34.0;68.0;0.0;0.0;0.0;7.61;230;21.03;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-28;61.0;78.1;0.01;0.0;0.0;15.21;220;31.09;210;40.04;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-05-08;53.1;71.1;0.12;0.0;0.0;3.36;30;12.08;350;16.11;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-12;60.1;66.0;0.02;0.0;0.0;4.47;210;14.99;200;17.0;No;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-05-13;62.1;79.0;0.73;0.0;0.0;3.8;240;23.04;240;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-05-16;55.9;78.1;0.0;0.0;0.0;3.36;170;10.07;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-18;55.0;75.0;0.0;0.0;0.0;3.13;220;12.08;160;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-24;70.0;93.0;0.0;0.0;0.0;7.16;20;14.99;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-26;73.0;93.0;0.0;0.0;0.0;11.86;180;19.91;210;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-30;70.0;93.9;0.0;0.0;0.0;5.59;230;12.97;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-31;70.0;95.0;0.0;0.0;0.0;3.8;50;12.97;30;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-11;70.0;93.9;0.3;0.0;0.0;6.49;320;14.09;320;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-06-20;69.1;93.0;0.0;0.0;0.0;6.49;210;21.03;210;29.97;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-10;69.1;91.9;0.0;0.0;0.0;3.8;80;10.07;150;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-15;60.1;86.0;0.0;0.0;0.0;6.93;90;14.99;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-21;77.0;102.0;0.0;0.0;0.0;4.7;240;19.91;240;25.05;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-24;79.0;100.9;0.0;0.0;0.0;6.26;200;31.09;190;40.94;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-28;75.0;102.0;0.0;0.0;0.0;7.16;240;17.9;250;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-05;75.9;89.1;0.0;0.0;0.0;7.16;90;14.09;90;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2011-08-19;69.1;91.0;0.0;0.0;0.0;4.25;230;12.97;200;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-20;69.1;89.1;0.0;0.0;0.0;4.25;120;10.07;110;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-08-26;73.9;89.1;0.0;0.0;0.0;8.72;50;25.05;50;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-30;66.0;82.0;0.0;0.0;0.0;6.93;80;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-02;66.9;86.0;0.04;0.0;0.0;4.25;50;12.97;50;14.09;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-04;69.1;88.0;0.0;0.0;0.0;7.83;190;14.09;190;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-07;69.1;82.9;0.0;0.0;0.0;3.8;180;14.99;230;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-08;63.0;84.0;0.0;0.0;0.0;1.34;240;8.05;270;10.07;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-09;63.0;84.9;0.0;0.0;0.0;3.8;170;12.08;170;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-13;63.0;88.0;0.0;0.0;0.0;2.68;210;8.05;220;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-15;57.9;89.1;1.31;0.0;0.0;8.95;30;21.03;30;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-02;45.0;62.1;0.0;0.0;0.0;5.37;290;16.11;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-04;44.1;72.0;0.0;0.0;0.0;2.24;30;12.97;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-05;48.9;77.0;0.0;0.0;0.0;1.12;360;8.05;360;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-07;45.0;73.9;0.0;0.0;0.0;3.36;50;14.99;50;17.9;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-21;41.0;66.0;0.0;0.0;0.0;2.24;260;12.08;260;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-07;37.9;71.1;0.0;0.0;0.0;0.89;240;8.05;240;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-12;32.0;64.9;0.0;0.0;0.0;6.26;230;16.11;210;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-18;27.0;51.1;0.0;0.0;0.0;1.57;40;10.07;20;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-25;35.1;70.0;0.0;0.0;0.0;3.58;210;12.08;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-28;60.1;71.1;0.02;0.0;0.0;8.72;130;17.9;130;25.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-07;44.1;70.0;0.54;0.0;0.0;13.42;250;29.08;240;40.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-09;32.0;55.0;0.0;0.0;0.0;1.12;130;6.93;90;8.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-13;30.9;63.0;0.0;0.0;0.0;0.22;20;6.04;130;8.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-24;36.0;52.0;0.0;0.0;0.0;1.12;30;12.08;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-18;36.0;57.0;0.11;0.0;0.0;6.93;220;23.94;220;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-30;28.0;60.1;0.0;0.0;0.0;4.25;230;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-03;34.0;57.9;0.0;0.0;0.0;3.36;50;12.08;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-12;21.0;42.1;0.0;0.0;0.0;7.61;310;19.91;320;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-16;42.1;57.9;0.25;0.0;0.0;4.47;160;16.11;130;23.04;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-03-03;51.1;64.9;0.73;0.0;0.0;5.82;230;31.09;210;36.91;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-05;32.0;52.0;0.0;0.0;0.0;10.07;300;23.94;310;36.91;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-23;60.1;82.9;0.03;0.0;0.0;6.26;230;16.11;240;23.04;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-24;55.9;71.1;0.66;0.0;0.0;4.7;90;14.09;290;21.03;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-28;44.1;78.1;0.0;0.0;0.0;13.87;220;25.95;220;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-30;48.9;77.0;0.0;0.0;0.0;6.49;220;17.9;220;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-02;48.9;73.0;0.0;0.0;0.0;7.83;40;19.91;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-10;46.0;73.9;0.0;0.0;0.0;7.16;240;25.05;230;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-16;60.1;84.0;0.0;0.0;0.0;11.41;230;23.04;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-18;55.0;69.1;0.31;0.0;0.0;7.83;80;17.9;100;23.94;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-04-20;51.1;73.0;0.0;0.0;0.0;2.01;230;8.95;230;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-24;36.0;64.0;0.0;0.0;0.0;6.93;280;21.03;280;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-27;59.0;77.0;0.0;0.0;0.0;5.14;50;12.08;40;17.0;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-04;62.1;90.0;0.0;0.0;0.0;5.37;230;14.99;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-09;57.9;77.0;0.51;0.0;0.0;3.8;310;19.91;300;33.11;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-12;46.9;77.0;0.0;0.0;0.0;3.8;150;10.07;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-15;64.9;82.9;0.15;0.0;0.0;4.25;170;23.94;170;31.09;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-16;66.0;82.9;0.01;0.0;0.0;2.91;200;12.08;230;14.99;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-17;61.0;81.0;0.0;0.0;0.0;6.71;50;16.11;50;23.04;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-18;59.0;77.0;0.0;0.0;0.0;8.72;40;17.0;50;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-22;62.1;86.0;0.0;0.0;0.0;4.25;170;14.99;170;17.9;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-23;64.0;84.0;0.03;0.0;0.0;4.25;150;21.92;150;25.95;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-27;66.0;86.0;0.35;0.0;0.0;5.14;110;12.97;110;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-29;72.0;89.1;0.0;0.0;0.0;7.61;200;23.04;190;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-31;64.0;90.0;0.11;0.0;0.0;4.47;240;21.03;210;25.05;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-06-01;64.9;88.0;1.19;0.0;0.0;7.83;220;23.04;220;31.99;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-06-02;55.9;75.9;0.0;0.0;0.0;3.13;300;12.08;330;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-17;54.0;81.0;0.0;0.0;0.0;3.13;120;10.07;20;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-18;63.0;86.0;0.0;0.0;0.0;6.26;190;12.97;190;16.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-25;30.2;46.9;0.0;0.0;0.0;7.61;300;19.91;290;34.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-26;27.1;43.0;0.0;0.0;0.0;2.24;10;8.95;60;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-27;27.1;45.0;0.0;0.0;0.0;4.7;20;12.08;360;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-30;27.1;52.0;0.0;0.0;0.0;4.92;230;16.11;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-05;12.2;31.1;0.0;0.0;0.0;5.59;280;17.0;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-06;12.2;27.1;0.0;0.0;0.0;4.03;320;12.97;310;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-09;29.1;63.0;0.0;0.0;0.0;2.68;120;8.95;120;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-14;21.2;33.1;0.0;0.0;0.0;8.72;50;18.12;30;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-16;20.1;46.9;0.0;0.0;0.0;1.79;240;8.95;240;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-25;26.2;48.9;0.0;0.0;0.0;3.13;350;12.97;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-28;52.0;60.1;1.3;0.0;0.0;5.14;40;12.97;20;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-31;19.2;46.9;0.0;0.0;0.0;5.82;200;14.99;200;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-09;28.2;57.9;0.0;0.0;0.0;4.03;140;14.09;190;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-15;54.0;75.0;0.0;0.0;0.0;14.32;230;23.04;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-21;63.0;77.0;0.0;0.0;0.0;8.95;230;21.03;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-23;52.0;70.0;0.0;0.0;0.0;4.92;60;12.08;110;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-14;31.1;44.1;0.0;0.0;0.0;7.61;280;18.12;310;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-24;27.1;50.0;0.91;0.2;0.0;3.58;260;14.99;260;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-04-07;33.1;62.1;0.99;0.0;0.0;8.05;30;21.03;20;31.99;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2018-04-09;39.9;57.0;0.0;0.0;0.0;5.14;120;16.11;130;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-10;39.0;62.1;0.0;0.0;0.0;5.37;30;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-22;42.1;70.0;0.0;0.0;0.0;5.59;140;14.09;120;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-29;44.1;66.0;0.0;0.0;0.0;5.82;320;14.99;320;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-30;36.0;72.0;0.0;0.0;0.0;4.03;240;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-13;66.0;93.0;0.0;0.0;0.0;6.04;220;14.09;240;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-17;69.1;77.0;0.69;0.0;0.0;7.16;140;16.11;150;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-22;66.9;84.9;0.05;0.0;0.0;5.82;280;17.0;280;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-26;68.0;87.1;0.33;0.0;0.0;8.5;230;29.08;240;36.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-30;73.0;84.9;0.49;0.0;0.0;5.59;200;21.03;190;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-31;71.1;88.0;0.0;0.0;0.0;7.16;230;14.99;210;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-06;61.0;84.9;0.23;0.0;0.0;5.14;60;16.11;330;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-11;64.0;84.9;0.31;0.0;0.0;8.72;40;21.92;40;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-12;63.0;70.0;0.01;0.0;0.0;6.26;50;14.99;80;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-21;72.0;91.9;0.12;0.0;0.0;3.58;250;16.11;240;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-22;71.1;95.0;0.0;0.0;0.0;6.04;220;23.04;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-24;73.0;96.1;0.07;0.0;0.0;7.61;220;16.11;290;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-26;66.0;73.9;0.74;0.0;0.0;6.93;80;14.99;120;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-28;68.0;90.0;0.0;0.0;0.0;4.92;280;12.97;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-29;70.0;91.9;0.0;0.0;0.0;4.25;60;14.09;60;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-06;71.1;93.0;0.34;0.0;0.0;3.8;200;16.11;200;21.92;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2018-07-07;66.9;79.0;0.65;0.0;0.0;9.4;40;18.12;30;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-14;64.9;89.1;0.0;0.0;0.0;4.03;100;12.08;120;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-15;68.0;95.0;0.0;0.0;0.0;6.04;230;14.99;30;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-16;73.9;95.0;0.0;0.0;0.0;8.05;230;21.03;220;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-17;72.0;98.1;0.1;0.0;0.0;8.5;230;17.0;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-18;72.0;89.1;0.0;0.0;0.0;6.71;50;14.99;80;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-20;69.1;86.0;0.0;0.0;0.0;9.4;80;18.12;100;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-24;71.1;86.0;0.0;0.0;0.0;7.38;140;14.09;130;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-30;72.0;86.0;0.72;0.0;0.0;4.47;210;12.97;210;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-10;69.1;91.0;0.0;0.0;0.0;2.01;230;8.95;30;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-18;73.0;88.0;0.49;0.0;0.0;9.84;220;17.0;220;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-26;60.1;88.0;0.0;0.0;0.0;2.68;230;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-02;69.1;90.0;0.0;0.0;0.0;2.24;230;19.91;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-06;71.1;91.9;0.0;0.0;0.0;2.91;260;8.05;160;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-11;68.0;88.0;0.0;0.0;0.0;2.91;110;14.99;140;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-20;66.9;87.1;0.0;0.0;0.0;4.25;110;12.08;140;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-23;64.0;75.9;0.0;0.0;0.0;5.37;40;12.97;40;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-27;70.0;79.0;0.21;0.0;0.0;4.25;220;21.92;220;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-29;60.1;82.0;0.0;0.0;0.0;3.36;50;10.07;100;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-04;66.0;89.1;0.0;0.0;0.0;2.68;250;10.07;260;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-11;63.0;79.0;2.6;0.0;0.0;11.63;150;33.11;290;53.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-12;51.1;71.1;0.0;0.0;0.0;2.91;340;12.08;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-14;48.9;64.9;0.0;0.0;0.0;3.58;100;8.05;80;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-20;54.0;66.9;0.21;0.0;0.0;8.05;250;14.09;300;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-28;42.1;64.0;0.0;0.0;0.0;8.5;230;18.12;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-31;42.1;72.0;0.0;0.0;0.0;8.5;230;21.03;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-01;55.0;75.0;0.11;0.0;0.0;10.29;190;21.03;200;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-25;42.1;59.0;0.0;0.0;0.0;3.8;240;8.95;90;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-28;25.2;42.1;0.0;0.0;0.0;6.71;270;16.11;260;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-05;30.2;48.0;0.0;0.0;0.0;4.03;290;16.11;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-10;30.2;34.0;0.73;1.89;1.18;7.61;20;16.11;30;23.94;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2018-12-11;27.1;44.1;0.0;0.0;1.97;3.8;280;8.95;270;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-16;42.1;60.1;0.0;0.0;0.0;7.61;230;14.99;180;23.94;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-17;36.0;61.0;0.0;0.0;0.0;5.82;270;14.99;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-20;45.0;66.0;0.68;0.0;0.0;8.72;140;23.04;150;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-24;29.1;51.1;0.0;0.0;0.0;4.03;300;12.08;260;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-03;46.9;55.0;0.21;0.0;0.0;2.68;230;8.95;230;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-10;27.1;39.0;0.0;0.0;0.0;6.93;330;16.11;290;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-13;32.0;37.0;1.04;0.0;0.0;7.38;40;14.99;30;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-16;26.2;54.0;0.0;0.0;0.0;3.13;290;12.08;270;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-17;28.2;48.9;0.01;0.0;0.0;4.7;230;12.97;90;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-18;39.0;59.0;0.0;0.0;0.0;4.92;300;12.97;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-27;26.2;53.1;0.0;0.0;0.0;2.91;210;10.07;250;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-03;33.1;61.0;0.0;0.0;0.0;0.0;130;6.04;140;10.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-11;36.0;46.0;0.15;0.0;0.0;3.58;50;10.07;110;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-22;39.9;53.1;0.69;0.0;0.0;7.38;60;14.99;60;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-10;46.9;68.0;0.04;0.0;0.0;9.4;240;25.05;240;31.99;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-12;35.1;60.1;0.0;0.0;0.0;2.68;330;12.08;340;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-18;32.0;60.1;0.0;0.0;0.0;4.47;30;16.11;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-25;51.1;71.1;0.54;0.0;0.0;7.38;250;18.12;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-03-29;45.0;73.9;0.0;0.0;0.0;8.28;230;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-30;53.1;75.9;0.0;0.0;0.0;10.74;210;21.92;220;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-02;31.1;39.9;0.35;0.0;0.0;5.82;20;12.97;20;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-05;54.0;60.1;0.54;0.0;0.0;6.93;100;17.0;100;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-10;54.0;73.9;0.0;0.0;0.0;4.25;50;14.99;90;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-20;48.9;66.0;0.02;0.0;0.0;12.53;230;27.96;240;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-29;54.0;69.1;0.0;0.0;0.0;7.61;40;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-30;60.1;86.0;0.0;0.0;0.0;8.5;230;17.0;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-09;63.0;82.9;0.0;0.0;0.0;8.05;170;14.99;170;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-31;64.0;91.0;0.67;0.0;0.0;2.46;290;25.05;310;44.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-04;57.0;84.0;0.0;0.0;0.0;6.93;210;17.0;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-05;68.0;88.0;0.29;0.0;0.0;10.51;220;21.92;220;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-06;69.1;90.0;0.0;0.0;0.0;7.61;240;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-15;51.1;82.9;0.0;0.0;0.0;6.93;180;14.99;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-16;66.0;89.1;0.0;0.0;0.0;11.41;220;19.91;250;25.95;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-06-19;71.1;88.0;0.02;0.0;0.0;7.61;230;18.12;250;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-20;69.1;93.0;0.3;0.0;0.0;10.74;240;27.96;310;46.98;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-24;64.0;95.0;0.0;0.0;0.0;7.38;240;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-25;70.0;90.0;0.0;0.0;0.0;5.14;260;16.11;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-26;68.0;89.1;0.0;0.0;0.0;2.46;40;12.97;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-01;72.0;90.0;0.0;0.0;0.0;5.14;50;14.99;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-06;73.9;93.0;0.0;0.0;0.0;8.95;250;17.0;250;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-12;73.0;91.9;0.08;0.0;0.0;8.05;230;16.11;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-14;72.0;96.1;0.0;0.0;0.0;3.36;30;10.07;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-18;73.9;96.1;0.02;0.0;0.0;7.61;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-19;73.9;98.1;0.0;0.0;0.0;6.93;160;23.94;170;31.99;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-27;63.0;88.0;0.0;0.0;0.0;1.12;90;8.95;170;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-28;63.0;90.0;0.0;0.0;0.0;2.68;180;8.95;130;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-05;57.0;72.0;0.86;0.0;0.0;8.05;190;21.03;190;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-07;44.1;66.0;0.21;0.0;0.0;6.71;150;19.91;170;25.05;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-12;36.0;64.9;0.0;0.0;0.0;3.58;220;14.99;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-22;33.1;41.0;0.08;0.0;0.0;2.01;230;8.05;10;12.08;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-01-28;30.9;57.9;0.0;0.0;0.0;8.95;310;17.0;300;29.08;No;No;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2007-01-29;19.9;37.0;0.0;0.0;0.0;6.93;300;17.0;310;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-31;25.0;39.9;0.0;0.0;0.0;5.37;20;12.97;350;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-02;34.0;45.0;0.0;0.0;0.0;5.59;230;12.97;240;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-02-04;25.0;50.0;0.0;0.0;0.0;10.51;230;27.96;240;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-07;35.1;52.0;0.0;0.0;0.0;8.05;220;16.11;350;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-12;26.1;64.0;0.0;0.0;0.0;4.03;220;19.91;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-19;19.0;50.0;0.0;0.0;0.0;6.93;200;17.9;200;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-23;37.0;55.0;0.0;0.0;0.0;7.61;290;17.9;260;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-28;37.9;61.0;0.0;0.0;0.0;4.92;90;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-02;46.9;68.0;0.96;0.0;0.0;12.97;190;38.03;150;57.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-03;41.0;69.1;0.0;0.0;0.0;11.41;230;25.95;240;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-06;37.9;55.0;0.0;0.0;0.0;6.04;10;12.97;20;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-09;30.9;59.0;0.0;0.0;0.0;5.37;150;14.09;160;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-12;37.9;66.9;0.0;0.0;0.0;3.8;60;12.97;60;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-23;53.1;82.9;0.0;0.0;0.0;7.83;230;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-26;44.1;73.9;0.0;0.0;0.0;6.04;230;16.11;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-27;59.0;87.1;0.04;0.0;0.0;5.14;230;14.09;10;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-04-03;53.1;86.0;0.0;0.0;0.0;4.03;180;16.11;170;21.03;Yes;No;Yes;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-04-04;55.9;82.0;0.0;0.0;0.0;9.62;280;17.9;280;27.96;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-04-10;32.0;64.0;0.0;0.0;0.0;2.01;80;12.97;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-14;48.9;70.0;0.01;0.0;0.0;9.17;160;17.0;150;21.03;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-15;42.1;77.0;1.76;0.0;0.0;12.75;180;25.05;300;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-04-25;61.0;87.1;0.0;0.0;0.0;10.29;230;23.94;230;29.97;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-05-04;53.1;57.0;0.08;0.0;0.0;6.49;50;14.09;40;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-05-12;66.0;82.0;0.96;0.0;0.0;5.14;40;12.97;30;14.99;Yes;Yes;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-05-24;53.1;82.0;0.0;0.0;0.0;4.7;60;12.08;110;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-28;61.0;91.0;0.0;0.0;0.0;7.61;220;16.11;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-29;62.1;91.9;0.0;0.0;0.0;4.7;80;12.08;80;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-13;64.0;79.0;0.18;0.0;0.0;3.8;30;14.09;20;17.9;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-06-15;59.0;75.0;0.01;0.0;0.0;4.25;90;12.97;120;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-19;70.0;97.0;0.38;0.0;0.0;7.16;230;27.96;230;38.03;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-06-29;71.1;93.0;0.18;0.0;0.0;7.83;230;19.91;230;25.05;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-07-07;68.0;93.9;0.0;0.0;0.0;4.47;140;17.9;140;23.04;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-08;70.0;95.0;0.0;0.0;0.0;5.82;230;17.9;230;21.92;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-09;71.1;98.1;0.0;0.0;0.0;6.93;200;21.03;220;25.05;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-13;64.0;81.0;0.0;0.0;0.0;2.91;50;8.95;110;12.97;Yes;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-20;72.0;88.0;0.0;0.0;0.0;5.82;360;14.09;360;19.91;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-21;62.1;84.0;0.0;0.0;0.0;6.71;40;17.0;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-24;64.0;88.0;0.0;0.0;0.0;3.8;230;14.09;360;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-07-28;69.1;90.0;0.57;0.0;0.0;4.7;230;38.03;220;53.02;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-07-31;70.0;89.1;0.0;0.0;0.0;6.26;40;14.99;50;17.0;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-03;71.1;93.0;0.0;0.0;0.0;5.14;180;12.97;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-06;73.9;97.0;0.0;0.0;0.0;2.46;90;12.08;150;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-08;75.9;102.0;0.17;0.0;0.0;4.47;200;16.11;220;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-16;75.9;100.9;0.0;0.0;0.0;11.63;210;17.9;210;23.04;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-17;73.9;97.0;0.01;0.0;0.0;6.71;30;21.03;40;27.96;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-19;70.0;97.0;0.0;0.0;0.0;9.84;220;17.0;210;21.03;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-21;73.9;105.1;0.06;0.0;0.0;8.28;300;23.94;280;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-08-23;75.0;90.0;0.53;0.0;0.0;5.82;130;12.08;130;19.91;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-31;68.0;91.0;0.0;0.0;0.0;5.37;100;14.09;80;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-02;61.0;88.0;0.0;0.0;0.0;7.61;90;16.11;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-08;64.9;93.0;0.0;0.0;0.0;4.47;50;14.09;120;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-10;66.9;100.9;0.0;0.0;0.0;7.16;210;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-22;69.1;91.0;0.0;0.0;0.0;2.24;20;8.95;20;12.97;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-25;59.0;89.1;0.0;0.0;0.0;4.47;190;10.07;160;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-01;53.1;82.0;0.0;0.0;0.0;6.71;80;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-03;63.0;84.9;0.0;0.0;0.0;3.36;70;10.07;90;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-05;68.0;78.1;0.13;0.0;0.0;5.82;50;10.07;110;16.11;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-07;64.0;90.0;0.0;0.0;0.0;1.79;170;8.05;160;10.07;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-19;70.0;84.0;0.09;0.0;0.0;10.51;230;19.91;210;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-21;45.0;81.0;0.0;0.0;0.0;2.91;200;14.09;190;16.11;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-23;64.0;82.9;0.0;0.0;0.0;8.95;190;16.11;180;21.92;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-26;60.1;71.1;2.19;0.0;0.0;6.26;160;12.97;170;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-10-28;44.1;64.9;0.0;0.0;0.0;5.82;50;16.11;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-05;36.0;68.0;0.0;0.0;0.0;5.59;220;17.0;210;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-10;35.1;57.9;0.0;0.0;0.0;4.7;40;16.11;40;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-14;48.9;78.1;0.0;0.0;0.0;6.04;210;16.11;210;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-11-22;51.1;77.0;0.0;0.0;0.0;14.54;230;29.08;220;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-27;39.0;64.0;0.0;0.0;0.0;5.59;320;14.09;310;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-28;32.0;57.0;0.0;0.0;0.0;4.47;120;14.99;90;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-03;34.0;62.1;0.04;0.0;0.0;10.74;280;23.94;280;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-07;25.0;52.0;0.0;0.0;0.0;3.36;230;12.08;230;14.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-18;21.0;46.0;0.0;0.0;0.0;1.12;170;6.93;200;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-22;43.0;50.0;0.0;0.0;0.0;7.61;40;14.09;20;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-25;30.9;54.0;0.0;0.0;0.0;4.47;40;12.97;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-07;43.0;72.0;0.0;0.0;0.0;6.26;240;14.99;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-12;41.0;57.9;0.0;0.0;0.0;6.71;40;14.99;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-13;39.0;46.9;0.0;0.0;0.0;5.82;50;12.97;40;14.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-16;21.0;46.0;0.0;0.0;0.0;2.68;50;10.07;40;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-21;15.1;37.0;0.0;0.0;0.0;4.92;40;10.07;40;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-22;24.1;42.1;0.15;0.0;0.0;3.58;220;10.07;210;12.08;Yes;No;Yes;Yes;No;No;Yes;No;No;Yes;No;No;No;No;No;No;No +2008-02-04;41.0;71.1;0.0;0.0;0.0;4.47;230;14.99;230;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-15;33.1;61.0;0.0;0.0;0.0;7.83;220;12.97;220;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-16;41.0;57.9;0.0;0.0;0.0;7.16;130;17.0;130;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-17;37.0;64.9;0.0;0.0;0.0;8.72;170;23.04;170;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-21;30.0;43.0;0.01;0.0;0.0;9.17;50;16.11;30;21.92;No;No;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2008-02-23;42.1;62.1;0.02;0.0;0.0;6.04;40;14.99;20;19.91;Yes;Yes;No;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2008-02-27;28.9;48.9;0.0;0.0;0.0;10.29;300;17.9;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-05;44.1;64.0;0.0;0.0;0.0;8.5;230;23.94;240;31.99;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-03-08;35.1;66.0;0.2;0.0;0.0;16.55;240;40.94;230;51.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-03-19;57.0;75.0;0.08;0.0;0.0;18.12;220;33.11;230;38.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-03-20;41.0;66.0;0.0;0.0;0.0;10.51;220;25.05;230;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-26;41.0;73.0;0.0;0.0;0.0;13.42;220;21.92;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-30;41.0;45.0;0.36;0.0;0.0;9.17;60;16.11;50;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2008-03-31;44.1;60.1;0.98;0.0;0.0;4.7;180;14.99;180;19.91;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-04-01;60.1;77.0;0.02;0.0;0.0;13.42;240;25.95;230;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-04-05;60.1;64.9;0.25;0.0;0.0;6.49;90;14.99;90;17.9;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-04-11;57.0;82.9;0.0;0.0;0.0;11.86;230;21.92;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-14;37.0;55.0;0.0;0.0;0.0;3.8;50;14.99;50;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-03;60.1;80.1;0.0;0.0;0.0;13.42;220;23.04;230;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-04;60.1;82.0;0.0;0.0;0.0;5.14;220;12.97;30;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-06;54.0;79.0;0.0;0.0;0.0;2.68;40;14.09;30;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-13;44.1;71.1;0.0;0.0;0.0;4.7;40;17.0;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-25;52.0;80.1;0.0;0.0;0.0;2.68;210;12.08;210;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-29;55.0;78.1;0.0;0.0;0.0;3.8;140;8.95;80;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-02;61.0;84.0;0.0;0.0;0.0;4.03;50;14.09;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-06;75.9;99.0;0.0;0.0;0.0;6.49;230;14.99;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-08;73.0;100.9;0.0;0.0;0.0;4.03;230;14.09;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-13;68.0;93.0;0.0;0.0;0.0;5.14;140;14.99;140;21.03;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-06-19;55.9;88.0;0.0;0.0;0.0;3.8;220;14.99;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-02;55.9;88.0;0.0;0.0;0.0;3.36;230;14.99;220;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-04;69.1;95.0;0.62;0.0;0.0;9.4;240;25.05;240;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-07-05;69.1;87.1;0.86;0.0;0.0;5.14;270;17.9;280;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-07-23;70.0;90.0;0.11;0.0;0.0;4.25;190;23.04;210;29.08;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-07-27;72.0;91.0;0.09;0.0;0.0;6.71;230;25.95;240;36.01;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2008-07-31;73.0;95.0;0.05;0.0;0.0;3.13;350;17.9;20;27.96;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-08-10;66.0;88.0;0.12;0.0;0.0;5.82;220;21.92;210;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-08-21;70.0;88.0;0.0;0.0;0.0;9.17;100;16.11;100;23.04;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-24;66.9;91.0;0.0;0.0;0.0;3.36;170;10.07;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-16;63.0;73.9;1.38;0.0;0.0;8.05;30;17.0;20;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2008-09-19;55.9;75.9;0.0;0.0;0.0;9.17;50;17.9;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-21;57.0;75.0;0.0;0.0;0.0;4.25;50;10.07;60;14.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-03;46.9;75.0;0.0;0.0;0.0;2.68;250;14.09;250;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-06;53.1;82.0;0.0;0.0;0.0;3.8;190;12.08;80;14.99;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-13;52.0;79.0;0.0;0.0;0.0;1.57;30;6.93;360;8.95;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2008-10-17;53.1;70.0;0.26;0.0;0.0;7.83;50;17.0;30;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-10-21;42.1;73.9;0.0;0.0;0.0;6.26;300;12.97;260;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-30;28.0;60.1;0.0;0.0;0.0;2.68;40;12.08;30;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-02;37.9;75.0;0.0;0.0;0.0;4.7;70;14.09;80;16.11;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-06;46.9;77.0;0.0;0.0;0.0;3.13;290;12.97;280;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-11;33.1;57.0;0.0;0.0;0.0;4.25;90;12.97;80;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-14;55.0;64.0;0.81;0.0;0.0;3.13;160;12.97;150;16.11;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2008-11-16;36.0;55.9;0.0;0.0;0.0;6.26;270;19.91;260;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-23;26.1;55.0;0.0;0.0;0.0;2.68;230;12.08;230;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-02;28.0;48.9;0.0;0.0;0.0;;290;10.07;280;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-03;25.0;54.0;0.0;0.0;0.0;4.03;200;12.08;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-06;26.1;46.9;0.06;0.0;0.0;2.01;230;8.05;160;12.08;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2008-12-12;36.0;57.9;0.09;0.0;0.0;8.95;310;17.0;320;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-15;54.0;70.0;0.0;0.0;0.0;8.28;190;21.92;190;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-31;28.9;57.0;0.0;0.0;0.0;10.96;310;23.94;280;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-01;23.0;42.1;0.0;0.0;0.0;3.8;50;12.08;40;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-05;53.1;60.1;0.0;0.0;0.0;5.82;240;14.09;240;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-09;27.0;50.0;0.0;0.0;0.0;3.58;290;12.08;250;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-11;39.9;57.9;0.06;0.0;0.0;6.26;220;23.04;230;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-01-16;15.1;28.0;0.0;0.0;0.0;4.47;300;12.97;310;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-03;32.0;46.0;0.15;0.0;0.0;7.61;290;16.11;30;21.92;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;Yes;No;No;No +2009-02-20;27.0;43.0;0.0;0.0;0.0;7.38;280;17.9;290;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-21;21.9;54.0;0.0;0.0;0.0;5.37;200;17.0;200;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-23;28.0;44.1;0.0;0.0;0.0;7.38;300;17.0;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-05;28.9;61.0;0.0;0.0;0.0;8.28;220;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-10;46.9;69.1;0.0;0.0;0.0;8.5;100;17.9;90;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-11;61.0;82.9;0.0;0.0;0.0;9.84;240;17.9;230;23.04;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-03-12;46.9;62.1;0.0;0.0;0.0;8.95;40;16.11;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-13;39.0;46.9;0.53;0.0;0.0;8.72;60;16.11;40;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-03-15;43.0;48.9;0.87;0.0;0.0;2.46;110;8.95;110;10.07;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-03-20;41.0;60.1;0.0;0.0;0.0;6.93;40;14.09;40;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-28;62.1;70.0;0.91;0.0;0.0;5.37;120;29.08;120;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2009-03-31;39.0;69.1;0.0;0.0;0.0;5.82;140;12.97;140;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-01;53.1;70.0;0.01;0.0;0.0;6.49;180;14.09;200;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-04-03;55.0;78.1;0.06;0.0;0.0;15.21;230;34.9;230;42.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-04-04;46.9;73.9;0.0;0.0;0.0;6.04;260;16.11;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-08;32.0;61.0;0.0;0.0;0.0;10.51;220;25.05;220;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-11;51.1;72.0;0.0;0.0;0.0;9.17;300;17.9;310;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-13;45.0;63.0;0.0;0.0;0.0;6.26;140;17.0;130;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-16;43.0;68.0;0.0;0.0;0.0;9.4;40;19.91;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-23;41.0;80.1;0.0;0.0;0.0;5.37;280;19.91;280;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-29;57.9;82.9;0.0;0.0;0.0;8.28;90;17.0;90;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-01;66.9;82.0;0.07;0.0;0.0;12.97;230;23.94;250;29.08;Yes;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-05-02;66.0;84.0;0.0;0.0;0.0;9.84;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-03;64.0;86.0;0.0;0.0;0.0;11.18;230;25.95;220;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-17;52.0;73.0;0.29;0.0;0.0;8.95;30;17.9;40;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-31;64.9;88.0;0.0;0.0;0.0;4.92;310;14.99;300;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-04;68.0;90.0;0.76;0.0;0.0;7.38;210;17.0;230;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-06;63.0;75.9;0.0;0.0;0.0;5.82;50;14.09;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-07;62.1;86.0;0.0;0.0;0.0;3.13;140;8.95;140;12.08;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-06-10;64.9;84.9;0.07;0.0;0.0;4.7;160;12.97;140;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-06-15;68.0;84.9;0.04;0.0;0.0;5.59;50;17.9;50;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2009-06-16;66.0;73.0;0.42;0.0;0.0;6.49;110;14.99;100;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-18;71.1;91.0;0.03;0.0;0.0;6.26;240;12.97;230;17.0;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-06-21;72.0;90.0;0.0;0.0;0.0;7.38;290;17.0;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-22;68.0;88.0;0.0;0.0;0.0;3.8;350;14.09;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-06-23;68.0;89.1;0.02;0.0;0.0;5.37;40;14.09;30;16.11;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-24;68.0;91.0;0.0;0.0;0.0;3.58;40;12.08;330;14.99;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-07-02;66.9;91.9;0.02;0.0;0.0;4.92;230;14.99;230;19.91;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-03;64.9;87.1;0.0;0.0;0.0;4.25;270;14.09;260;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-07-04;60.1;90.0;0.0;0.0;0.0;4.03;240;14.09;230;17.9;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-07-11;66.9;91.0;0.03;0.0;0.0;7.61;230;17.9;240;23.94;Yes;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-07-13;69.1;82.0;0.63;0.0;0.0;3.36;240;19.91;250;25.95;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2009-07-17;73.0;97.0;0.27;0.0;0.0;8.05;220;21.92;270;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-07-24;71.1;91.9;0.34;0.0;0.0;3.36;190;12.08;270;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2009-07-27;73.0;93.9;0.0;0.0;0.0;7.83;240;21.92;230;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-08-06;70.0;84.9;0.23;0.0;0.0;2.68;40;12.08;30;17.9;Yes;No;No;Yes;No;No;No;Yes;No;No;Yes;Yes;No;No;No;No;No +2009-08-11;73.0;99.0;0.0;0.0;0.0;4.92;320;17.9;310;27.96;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-08-14;71.1;84.9;0.0;0.0;0.0;5.59;100;14.99;100;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-25;68.0;88.0;0.0;0.0;0.0;3.36;100;12.08;70;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-08-26;66.9;95.0;0.0;0.0;0.0;3.36;260;12.97;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-29;71.1;91.9;0.0;0.0;0.0;5.14;230;17.9;230;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-08-30;69.1;86.0;0.01;0.0;0.0;2.68;40;12.08;40;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-09-04;57.9;87.1;0.0;0.0;0.0;2.91;50;12.08;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-15;62.1;91.0;0.0;0.0;0.0;4.03;240;12.08;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-22;64.0;81.0;1.45;0.0;0.0;4.25;90;12.97;90;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-09-23;71.1;82.9;0.25;0.0;0.0;2.24;150;12.97;150;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-09-25;62.1;77.0;0.02;0.0;0.0;6.26;50;19.91;50;25.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2015-03-29;22.1;52.0;0.0;0.0;0.0;4.7;240;14.09;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-01;46.9;66.0;0.0;0.0;0.0;6.71;40;16.11;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-02;39.0;73.9;0.0;0.0;0.0;10.07;220;21.03;210;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-03;61.0;82.9;0.0;0.0;0.0;16.33;230;29.97;230;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-14;61.0;79.0;1.23;0.0;0.0;6.04;40;17.0;30;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-04-19;63.0;73.0;0.76;0.0;0.0;8.5;120;19.91;100;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-02;46.0;73.0;0.0;0.0;0.0;2.91;40;12.97;50;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-09;64.9;84.9;0.03;0.0;0.0;9.4;80;21.03;70;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-15;55.0;77.0;0.0;0.0;0.0;5.37;170;10.07;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-20;62.1;88.0;0.0;0.0;0.0;4.03;120;14.09;120;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-21;57.0;71.1;0.24;0.0;0.0;6.49;120;17.0;110;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-05-24;54.0;82.9;0.0;0.0;0.0;4.7;200;12.08;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-29;66.0;87.1;0.0;0.0;0.0;4.03;140;14.09;140;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-01;68.0;90.0;0.08;0.0;0.0;6.93;220;25.95;220;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-11;70.0;93.0;0.08;0.0;0.0;6.49;220;16.11;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-16;73.0;100.0;0.0;0.0;0.0;4.03;50;14.99;340;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-20;71.1;96.1;0.01;0.0;0.0;9.4;220;36.01;220;51.0;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-26;69.1;91.9;1.26;0.0;0.0;4.7;250;29.08;240;42.95;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2015-07-03;69.1;78.1;0.14;0.0;0.0;4.03;250;12.08;250;14.99;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-07-06;70.0;89.1;0.0;0.0;0.0;8.05;230;17.0;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-09;72.0;93.9;0.0;0.0;0.0;5.82;230;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-13;71.1;88.0;0.65;0.0;0.0;6.49;230;23.94;210;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-14;70.0;88.0;0.0;0.0;0.0;9.62;230;18.12;250;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-19;72.0;93.0;1.57;0.0;0.0;5.14;20;23.94;20;36.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-20;72.0;93.0;0.0;0.0;0.0;4.47;200;16.11;180;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-21;73.0;93.0;0.78;0.0;0.0;6.04;280;31.99;280;44.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-23;72.0;82.0;0.76;0.0;0.0;5.59;40;21.92;290;29.08;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2015-07-24;68.0;86.0;0.0;0.0;0.0;5.14;50;16.11;40;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-29;75.0;91.0;0.0;0.0;0.0;4.47;140;8.95;170;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-31;71.1;91.0;0.0;0.0;0.0;3.8;40;12.97;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-01;64.9;93.0;0.0;0.0;0.0;1.57;240;12.97;270;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-07;70.0;75.0;0.02;0.0;0.0;5.82;40;12.08;10;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-08;66.0;84.9;0.0;0.0;0.0;7.38;40;17.0;50;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-10;71.1;84.9;0.0;0.0;0.0;7.38;170;14.09;160;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-20;72.0;90.0;0.0;0.0;0.0;4.25;240;10.07;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-22;66.0;87.1;0.0;0.0;0.0;4.7;60;12.97;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-24;72.0;91.9;0.89;0.0;0.0;3.58;250;17.0;180;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-08-26;69.1;82.0;0.0;0.0;0.0;6.26;40;12.97;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-30;63.0;86.0;0.0;0.0;0.0;2.46;200;10.07;210;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-01;66.9;91.0;0.0;0.0;0.0;1.12;40;8.05;40;12.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-06;66.0;81.0;0.0;0.0;0.0;6.04;40;14.09;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-07;71.1;87.1;0.0;0.0;0.0;4.03;130;12.08;150;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-08;70.0;89.1;0.04;0.0;0.0;2.01;200;10.07;120;14.99;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-14;48.0;78.1;0.0;0.0;0.0;1.12;230;12.08;260;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-15;50.0;82.0;0.0;0.0;0.0;2.01;40;12.08;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-19;62.1;87.1;0.0;0.0;0.0;1.57;80;10.07;80;12.97;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-21;64.9;79.0;0.0;0.0;0.0;6.26;90;12.08;100;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-08;57.0;82.9;0.0;0.0;0.0;2.24;250;10.07;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-09;60.1;82.0;0.0;0.0;0.0;8.5;240;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-11;52.0;72.0;0.0;0.0;0.0;4.47;50;12.97;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-14;52.0;77.0;0.0;0.0;0.0;2.46;240;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-18;33.1;57.9;0.0;0.0;0.0;3.36;330;12.08;320;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-24;51.1;71.1;0.0;0.0;0.0;4.25;90;10.07;80;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-27;50.0;63.0;0.47;0.0;0.0;10.51;100;19.91;90;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-29;57.0;73.9;0.05;0.0;0.0;6.71;250;12.97;300;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-03;59.0;64.9;0.53;0.0;0.0;4.92;40;10.07;50;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-05;63.0;73.9;0.0;0.0;0.0;2.46;220;6.93;150;12.97;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-11-09;46.9;55.0;1.45;0.0;0.0;8.05;40;16.11;30;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-11;46.0;68.0;0.0;0.0;0.0;2.01;290;8.05;310;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-19;55.9;73.0;1.86;0.0;0.0;6.49;150;17.0;160;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-11-21;32.0;60.1;0.0;0.0;0.0;1.34;80;10.07;80;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-23;29.1;46.9;0.0;0.0;0.0;2.01;280;10.07;330;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-30;45.0;60.1;0.74;0.0;0.0;6.93;50;14.09;60;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-12;53.1;75.0;0.0;0.0;0.0;4.47;230;12.08;230;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-27;64.0;75.9;0.0;0.0;0.0;9.4;230;21.92;230;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-29;53.1;73.9;0.1;0.0;0.0;4.25;220;17.0;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-01;43.0;51.1;0.0;0.0;0.0;2.68;350;8.95;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-16;42.1;61.0;0.0;0.0;0.0;6.93;230;14.09;330;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-05;29.1;46.9;0.01;0.0;0.0;5.14;360;14.99;320;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-17;37.9;57.0;0.0;0.0;0.0;2.46;40;14.99;40;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-25;39.9;55.0;0.0;0.0;0.0;14.09;240;29.97;250;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-27;24.3;52.0;0.0;0.0;0.0;3.8;240;16.11;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-29;46.0;73.0;0.0;0.0;0.0;9.17;240;21.03;280;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-02;35.1;64.0;0.1;0.0;0.0;8.5;230;25.05;230;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-08;46.9;78.1;0.0;0.0;0.0;7.16;230;16.11;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-09;51.1;78.1;0.0;0.0;0.0;11.18;240;21.03;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-19;43.0;60.1;0.03;0.0;0.0;7.61;40;19.91;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-24;54.0;78.1;0.0;0.0;0.0;14.09;220;27.96;210;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-28;54.0;75.0;0.08;0.0;0.0;6.71;300;19.91;290;29.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-29;45.0;66.9;0.0;0.0;0.0;3.36;30;12.97;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-31;55.0;77.0;0.0;0.0;0.0;11.41;220;21.92;220;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-03;44.1;62.1;0.0;0.0;0.0;7.61;290;17.0;250;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-14;37.9;66.0;0.0;0.0;0.0;8.05;40;16.11;80;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-17;37.0;72.0;0.0;0.0;0.0;4.25;40;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-18;42.1;84.0;0.0;0.0;0.0;2.68;230;8.95;230;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-19;53.1;88.0;0.0;0.0;0.0;3.8;290;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-25;53.1;81.0;0.0;0.0;0.0;10.74;230;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-27;64.0;87.1;0.52;0.0;0.0;7.83;230;17.0;230;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-04-29;60.1;78.1;0.0;0.0;0.0;5.82;30;12.97;120;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-05;48.9;61.0;0.68;0.0;0.0;4.7;340;12.08;340;21.92;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-10;64.9;84.0;0.0;0.0;0.0;5.37;190;14.09;120;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-12;64.0;81.0;0.56;0.0;0.0;3.58;270;16.11;300;23.94;Yes;Yes;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-05-16;42.1;73.0;0.0;0.0;0.0;2.46;230;12.97;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-24;50.0;82.9;0.0;0.0;0.0;4.47;230;14.09;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-27;68.0;88.0;0.0;0.0;0.0;7.38;240;12.97;210;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-02;70.0;88.0;0.0;0.0;0.0;0.89;130;8.05;130;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-04;69.1;91.9;0.61;0.0;0.0;4.25;300;17.0;300;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-08;57.9;81.0;0.0;0.0;0.0;4.92;290;17.0;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-11;69.1;91.9;0.0;0.0;0.0;8.05;240;16.11;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-14;59.0;90.0;0.0;0.0;0.0;4.03;80;12.08;80;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-19;55.9;84.0;0.0;0.0;0.0;2.24;70;12.97;110;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-30;69.1;88.0;0.01;0.0;0.0;4.03;170;14.99;180;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-06;72.0;91.0;0.0;0.0;0.0;6.04;250;17.0;20;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-08;71.1;93.9;0.25;0.0;0.0;6.04;20;21.92;20;36.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-10;69.1;88.0;0.0;0.0;0.0;2.01;290;14.09;300;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-12;70.0;91.0;0.37;0.0;0.0;3.13;280;19.91;240;29.97;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-14;73.0;95.0;0.0;0.0;0.0;3.36;200;12.08;210;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-22;73.0;93.0;0.0;0.0;0.0;7.83;180;14.99;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-30;73.9;95.0;0.03;0.0;0.0;4.92;230;17.0;230;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-08-03;73.0;88.0;0.0;0.0;0.0;8.72;90;14.99;80;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-04;69.1;87.1;1.02;0.0;0.0;6.71;210;12.08;70;16.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-12;75.9;93.9;0.0;0.0;0.0;6.04;220;14.09;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-16;75.0;95.0;0.0;0.0;0.0;7.61;240;14.09;170;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-22;66.9;87.1;0.0;0.0;0.0;2.91;40;12.08;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-24;64.0;87.1;0.0;0.0;0.0;3.13;120;8.95;130;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-27;75.0;98.1;0.18;0.0;0.0;4.92;120;19.91;120;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-10;73.9;91.9;0.0;0.0;0.0;8.05;170;14.99;180;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-23;66.9;84.9;0.0;0.0;0.0;4.47;40;10.07;350;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-24;64.0;91.9;0.0;0.0;0.0;1.34;40;12.97;80;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-25;69.1;73.9;0.0;0.0;0.0;6.71;90;12.97;130;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-09;52.0;73.0;0.13;0.0;0.0;7.38;360;17.0;310;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-16;51.1;78.1;0.0;0.0;0.0;0.22;170;8.05;160;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-17;57.0;82.0;0.0;0.0;0.0;4.7;230;12.97;220;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-24;46.9;78.1;0.0;0.0;0.0;5.59;260;14.99;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-03;55.9;82.9;0.01;0.0;0.0;5.14;240;12.97;240;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-08;33.1;66.9;0.0;0.0;0.0;2.91;230;8.05;240;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-14;44.1;54.0;0.27;0.0;0.0;4.47;80;12.08;90;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-17;37.0;69.1;0.0;0.0;0.0;0.67;360;8.05;230;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-22;27.1;57.9;0.0;0.0;0.0;2.46;320;10.07;320;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-03;33.1;54.0;0.0;0.0;0.0;2.91;40;12.97;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-05;42.1;59.0;0.41;0.0;0.0;4.47;40;14.09;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-08;37.9;52.0;0.0;0.0;0.0;4.25;330;14.09;310;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-10;20.1;45.0;0.0;0.0;0.0;1.79;250;10.07;310;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-11;23.2;46.0;0.0;0.0;0.0;2.91;160;8.95;140;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-14;34.0;52.0;0.0;0.0;0.0;3.58;30;10.07;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-15;24.3;41.0;0.0;0.0;0.0;6.49;320;16.11;300;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-17;28.2;48.9;0.01;0.0;0.0;6.49;220;14.99;220;19.01;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2016-12-19;34.0;46.9;0.21;0.0;0.0;9.62;40;17.0;40;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-20;29.1;45.0;0.0;0.0;0.0;4.47;40;12.97;30;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-22;37.9;66.0;0.0;0.0;0.0;7.38;230;14.99;240;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-30;28.2;48.0;0.0;0.0;0.0;8.28;280;21.03;280;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-01;41.0;50.0;0.54;0.0;0.0;6.49;230;17.0;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-11;39.9;57.0;0.0;0.0;0.0;6.04;210;12.97;200;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-13;50.0;75.9;0.01;0.0;0.0;7.38;90;18.12;100;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-18;45.0;70.0;0.0;0.0;0.0;6.49;300;17.0;360;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-20;46.0;59.0;0.09;0.0;0.0;2.91;140;8.95;120;12.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-03;34.0;48.9;0.06;0.0;0.0;4.7;60;12.08;340;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-07;48.9;75.9;0.0;0.0;0.0;12.53;210;21.03;210;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-16;32.0;53.1;0.0;0.0;0.0;6.71;270;21.03;270;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-07;48.9;73.9;0.0;0.0;0.0;13.87;230;23.04;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-13;26.2;42.1;0.56;0.0;0.0;8.28;80;18.12;40;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-21;50.0;82.0;0.2;0.0;0.0;5.82;250;14.99;270;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-03-26;52.0;77.0;0.0;0.0;0.0;6.93;180;16.11;210;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-27;59.0;79.0;0.06;0.0;0.0;9.17;230;18.12;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-04;63.0;82.0;0.0;0.0;0.0;12.97;240;23.94;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-06;50.0;70.0;0.09;0.0;0.0;15.21;230;44.07;240;52.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-04-10;48.9;78.1;0.0;0.0;0.0;9.62;230;18.12;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-18;61.0;73.9;0.03;0.0;0.0;9.62;90;18.12;110;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-21;63.0;89.1;0.21;0.0;0.0;6.93;230;18.12;230;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-27;62.1;82.0;0.0;0.0;0.0;10.51;220;19.91;210;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-28;69.1;88.0;0.0;0.0;0.0;9.17;220;17.0;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-29;72.0;89.1;0.0;0.0;0.0;10.07;230;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-30;70.0;86.0;0.02;0.0;0.0;10.51;250;19.91;250;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-09;53.1;82.9;0.0;0.0;0.0;4.03;250;12.97;260;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-24;71.1;91.0;0.46;0.0;0.0;7.83;240;25.05;210;33.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-06;68.0;93.0;0.0;0.0;0.0;5.82;250;14.99;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-17;71.1;90.0;0.02;0.0;0.0;4.47;200;12.08;190;16.11;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-07-22;75.9;100.9;0.0;0.0;0.0;10.74;220;19.91;240;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-28;75.0;93.9;0.21;0.0;0.0;7.61;190;19.91;190;25.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-01;60.1;88.0;0.0;0.0;0.0;2.91;50;12.08;90;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-03;68.0;93.9;0.0;0.0;0.0;3.8;170;14.09;160;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-04;68.0;91.9;0.0;0.0;0.0;7.16;230;17.0;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-07;73.9;91.9;0.04;0.0;0.0;10.96;220;25.05;210;34.0;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-08;68.0;78.1;1.5;0.0;0.0;5.82;230;21.03;230;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-16;73.9;91.9;0.0;0.0;0.0;4.03;50;10.07;110;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-19;73.0;91.9;0.05;0.0;0.0;2.91;20;10.07;30;14.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-30;59.0;84.0;0.0;0.0;0.0;1.79;170;10.07;220;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-31;69.1;87.1;0.01;0.0;0.0;7.16;240;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-05;64.0;90.0;0.06;0.0;0.0;8.05;240;21.92;230;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-09-08;51.1;77.0;0.0;0.0;0.0;2.68;40;12.97;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-12;63.0;79.0;0.63;0.0;0.0;10.74;80;18.12;80;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-13;61.0;84.0;0.0;0.0;0.0;6.71;230;14.99;230;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-14;64.0;82.9;0.0;0.0;0.0;6.04;230;14.99;240;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-18;64.9;82.9;0.0;0.0;0.0;6.71;40;17.0;50;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-19;64.0;84.9;0.0;0.0;0.0;4.25;20;10.07;360;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-20;62.1;91.0;0.0;0.0;0.0;3.58;280;14.09;280;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-22;61.0;89.1;0.0;0.0;0.0;2.24;40;12.97;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-23;61.0;87.1;0.0;0.0;0.0;4.47;80;14.09;50;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-27;68.0;91.0;0.0;0.0;0.0;5.59;30;17.0;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-04;50.0;82.0;0.0;0.0;0.0;2.24;230;8.95;170;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-05;54.0;84.9;0.0;0.0;0.0;3.13;170;12.08;170;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-06;55.0;86.0;0.0;0.0;0.0;2.91;150;12.08;230;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-09;73.9;91.9;0.09;0.0;0.0;11.86;230;25.95;240;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-10;75.0;90.0;0.0;0.0;0.0;6.71;250;12.97;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-15;62.1;82.9;0.0;0.0;0.0;9.84;230;19.91;230;25.05;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-27;37.9;73.0;0.0;0.0;0.0;5.82;170;14.09;170;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-29;41.0;68.0;0.78;0.0;0.0;7.61;290;21.03;290;31.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-02;55.0;78.1;0.0;0.0;0.0;2.01;240;10.07;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-03;52.0;81.0;0.0;0.0;0.0;2.01;230;12.97;230;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-08;43.0;45.0;0.13;0.0;0.0;8.28;40;16.11;40;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-10;35.1;57.9;0.0;0.0;0.0;6.71;50;21.92;60;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-15;33.1;54.0;0.0;0.0;0.0;3.58;40;12.97;50;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-16;36.0;66.9;0.0;0.0;0.0;3.13;300;12.97;280;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-19;34.0;64.0;0.08;0.0;0.0;9.17;220;25.95;230;36.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-20;28.2;57.0;0.0;0.0;0.0;2.01;340;10.07;350;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-01;41.0;63.0;0.0;0.0;0.0;5.14;50;14.99;50;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-02;45.0;51.1;0.0;0.0;0.0;2.91;100;10.07;100;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-03;42.1;64.0;0.0;0.0;0.0;2.46;50;8.95;30;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-05;41.0;69.1;0.0;0.0;0.0;4.7;220;14.09;220;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-07;39.9;48.9;0.0;0.0;0.0;2.46;210;8.05;190;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-11;26.2;55.0;0.0;0.0;0.0;4.92;240;12.08;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-29;50.0;72.0;0.0;0.0;0.0;5.14;260;16.11;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-30;46.9;75.0;0.0;0.0;0.0;3.13;30;12.08;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-02;55.0;77.0;0.0;0.0;0.0;6.93;210;16.11;210;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-04;48.9;75.0;0.0;0.0;0.0;2.68;250;14.09;260;19.91;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-11;55.9;70.0;0.01;0.0;0.0;4.7;50;14.99;90;19.91;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-10-18;39.9;52.0;0.0;0.0;0.0;5.14;30;17.0;40;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-21;42.1;78.1;0.0;0.0;0.0;1.79;220;8.95;220;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-28;54.0;75.9;0.04;0.0;0.0;5.82;210;16.11;200;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-11-01;48.9;70.0;0.92;0.0;0.0;10.51;40;21.92;30;31.09;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-11-02;42.1;60.1;0.03;0.0;0.0;4.7;40;12.08;30;17.0;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-11-06;37.9;60.1;0.0;0.0;0.0;2.68;20;14.09;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-13;48.0;55.0;0.03;0.0;0.0;11.41;20;19.91;10;31.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;Yes;No +2009-11-15;44.1;73.0;0.0;0.0;0.0;0.0;220;4.92;110;10.07;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-11-20;42.1;63.0;0.0;0.0;0.0;3.58;40;14.99;40;23.04;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-21;39.0;57.0;0.0;0.0;0.0;3.58;40;14.09;50;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-29;39.0;71.1;0.0;0.0;0.0;7.83;210;14.99;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-02;39.9;68.0;2.3;0.0;0.0;8.72;220;31.99;230;38.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-03;39.0;68.0;0.0;0.0;0.0;9.4;230;31.09;220;40.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-07;27.0;51.1;0.0;0.0;0.0;1.79;240;8.95;230;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-09;39.9;70.0;0.76;0.0;0.0;14.99;230;36.91;240;51.0;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;Yes;No;No +2009-12-10;35.1;59.0;0.0;0.0;0.0;8.95;240;17.9;270;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-18;30.9;37.0;0.46;0.12;0.0;9.4;50;25.05;50;33.11;Yes;No;Yes;Yes;No;Yes;No;No;Yes;No;No;Yes;No;Yes;No;No;No +2009-12-27;28.0;55.0;0.0;0.0;0.0;3.58;220;12.08;210;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-30;23.0;37.9;0.07;0.0;0.0;3.58;110;8.95;140;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-31;32.0;46.0;0.11;0.0;0.0;1.57;110;6.93;120;12.08;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2010-01-12;28.0;37.9;0.0;0.0;0.0;2.68;20;12.97;10;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-20;37.0;64.9;0.0;0.0;0.0;4.47;80;16.11;70;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-01-24;39.9;64.9;0.13;0.0;0.0;9.62;160;27.96;140;36.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-01-29;28.0;46.0;0.1;1.42;0.0;7.16;60;14.99;50;19.91;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-02-02;28.9;37.0;0.09;0.0;0.98;5.14;60;21.92;60;29.08;Yes;No;Yes;Yes;No;No;No;Yes;No;Yes;Yes;No;No;Yes;No;No;No +2010-02-07;21.9;42.1;0.0;0.0;0.0;2.24;10;12.97;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-12;26.1;39.0;0.1;0.98;0.0;1.79;80;8.95;350;12.97;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-02-14;24.1;46.9;0.0;0.0;0.0;4.92;230;14.09;250;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-19;25.0;54.0;0.0;0.0;0.0;3.13;260;14.09;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-03;33.1;44.1;0.12;0.59;0.98;6.04;320;12.97;320;21.03;Yes;No;Yes;Yes;No;Yes;No;No;Yes;No;No;No;No;Yes;No;No;No +2010-03-05;25.0;51.1;0.0;0.0;0.0;3.36;310;14.09;310;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-08;30.0;66.0;0.0;0.0;0.0;2.01;60;12.97;330;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-12;57.0;64.0;0.09;0.0;0.0;6.71;90;14.99;90;21.03;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;No;No +2010-03-14;45.0;62.1;0.22;0.0;0.0;5.59;240;14.99;250;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-03-15;39.9;62.1;0.0;0.0;0.0;5.37;290;14.99;300;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-21;52.0;69.1;0.0;0.0;0.0;8.95;230;17.9;160;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-26;36.0;66.9;0.06;0.0;0.0;8.95;200;19.91;40;29.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-03-30;51.1;69.1;0.0;0.0;0.0;7.83;280;17.9;300;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-03;55.0;80.1;0.0;0.0;0.0;7.83;230;16.11;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-07;61.0;87.1;0.0;0.0;0.0;12.97;230;21.92;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-08;62.1;81.0;0.13;0.0;0.0;15.21;230;27.96;210;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-04-16;50.0;86.0;0.0;0.0;0.0;8.28;240;21.03;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-21;48.0;64.9;0.33;0.0;0.0;2.68;310;12.97;320;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-04-30;50.0;82.9;0.0;0.0;0.0;9.62;230;21.03;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-01;61.0;89.1;0.0;0.0;0.0;10.51;220;19.91;240;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-04;57.9;82.0;0.0;0.0;0.0;3.8;230;14.09;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-06;68.0;91.9;0.0;0.0;0.0;8.05;240;16.11;220;21.92;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-05-07;61.0;90.0;0.0;0.0;0.0;7.83;210;16.11;170;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-12;64.0;84.9;0.0;0.0;0.0;11.18;230;21.92;220;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-13;64.0;75.9;0.0;0.0;0.0;6.93;50;14.99;120;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes;No +2010-05-17;55.9;77.0;2.3;0.0;0.0;8.28;110;16.11;10;21.03;Yes;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;Yes;No;No;No +2010-05-22;66.0;82.0;0.59;0.0;0.0;4.92;250;17.9;250;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-05-29;64.9;84.0;0.02;0.0;0.0;5.14;190;16.11;200;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-05-30;69.1;88.0;0.0;0.0;0.0;7.38;240;17.9;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-06;72.0;93.0;0.18;0.0;0.0;10.29;230;21.92;230;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-06-18;69.1;88.0;0.0;0.0;0.0;5.82;70;14.09;80;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-21;69.1;93.0;0.0;0.0;0.0;2.46;40;12.08;10;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-06-26;73.0;97.0;0.0;0.0;0.0;5.37;220;19.91;220;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-07-11;73.0;96.1;0.0;0.0;0.0;4.25;230;16.11;230;21.92;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-07-15;71.1;96.1;0.0;0.0;0.0;3.58;240;14.09;140;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-17;72.0;88.0;0.18;0.0;0.0;8.05;300;21.03;320;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-07-27;72.0;82.9;0.32;0.0;0.0;5.14;150;12.97;160;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-02;70.0;86.0;0.0;0.0;0.0;4.03;50;8.95;100;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-05;73.9;95.0;0.8;0.0;0.0;10.51;210;23.94;290;38.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-08;71.1;90.0;0.0;0.0;0.0;3.58;70;12.08;110;21.03;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-08-09;71.1;93.0;0.0;0.0;0.0;3.36;120;10.07;110;14.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-08-10;73.9;97.0;0.0;0.0;0.0;6.49;230;14.09;230;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-13;73.9;88.0;0.0;0.0;0.0;7.16;110;16.11;110;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2010-08-15;73.9;93.0;0.0;0.0;0.0;4.92;200;12.97;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-17;73.9;97.0;0.0;0.0;0.0;6.71;220;12.97;180;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-30;64.9;98.1;0.0;0.0;0.0;1.79;40;8.95;50;14.09;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-01;69.1;95.0;0.0;0.0;0.0;2.91;110;12.97;140;21.03;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-06;57.9;90.0;0.0;0.0;0.0;3.36;140;12.97;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-21;66.9;89.1;0.0;0.0;0.0;6.71;170;14.99;180;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-29;63.0;69.1;1.69;0.0;0.0;8.05;60;16.11;70;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-10-02;50.0;73.9;0.0;0.0;0.0;4.47;30;12.97;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-11;57.9;87.1;0.0;0.0;0.0;5.59;230;14.99;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-13;62.1;79.0;0.0;0.0;0.0;4.25;80;12.97;90;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-14;55.0;71.1;1.11;0.0;0.0;4.92;320;12.08;310;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-10-17;39.9;78.1;0.0;0.0;0.0;3.8;230;14.09;230;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-21;48.9;78.1;0.0;0.0;0.0;6.49;240;19.91;240;29.08;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2010-10-25;61.0;78.1;0.27;0.0;0.0;7.61;260;25.95;240;38.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-10-29;44.1;62.1;0.0;0.0;0.0;4.92;30;14.99;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-09;37.0;73.0;0.0;0.0;0.0;1.57;340;10.07;340;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-10;39.9;70.0;0.0;0.0;0.0;1.79;40;10.07;40;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-13;32.0;69.1;0.0;0.0;0.0;1.34;40;8.05;40;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-27;34.0;54.0;0.0;0.0;0.0;4.25;280;12.97;260;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-29;27.0;55.0;0.0;0.0;0.0;4.25;80;10.07;90;14.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-12-03;33.1;48.9;0.0;0.0;0.0;2.01;10;8.95;260;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-04;28.9;41.0;0.27;0.79;0.0;0.89;220;8.95;230;12.08;Yes;Yes;No;Yes;No;Yes;No;Yes;Yes;No;Yes;No;No;No;Yes;No;No +2010-12-05;28.9;41.0;0.0;0.0;0.0;6.93;290;19.91;320;29.97;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2010-12-06;25.0;37.9;0.0;0.0;0.0;8.28;290;19.91;280;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-10;24.1;48.0;0.0;0.0;0.0;0.22;110;6.93;130;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-11;26.1;41.0;0.17;0.0;0.0;2.91;50;8.05;20;10.07;Yes;Yes;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2010-12-17;28.0;43.0;0.0;0.0;0.0;2.24;50;8.95;110;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-18;28.9;39.0;0.01;0.0;0.0;4.92;50;8.95;360;12.08;Yes;No;Yes;Yes;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No +2010-12-22;41.0;52.0;0.0;0.0;0.0;2.01;330;12.97;320;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-27;19.9;37.0;0.0;0.0;4.02;8.05;300;19.91;290;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-30;24.1;46.0;0.0;0.0;0.0;0.89;220;6.04;180;8.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-02;37.0;62.1;0.17;0.0;0.0;7.38;220;14.09;360;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-01-12;26.1;37.9;0.0;0.0;0.0;9.17;290;21.92;310;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-13;19.9;42.1;0.0;0.0;0.0;3.8;350;12.08;320;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-15;26.1;50.0;0.0;0.0;0.0;6.71;240;17.9;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-24;25.0;39.9;0.0;0.0;0.0;4.25;90;14.09;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-30;35.1;69.1;0.0;0.0;0.0;3.8;60;10.07;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-02;44.1;68.0;0.18;0.0;0.0;14.32;230;31.09;230;40.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-08;30.0;50.0;0.0;0.0;0.0;8.05;290;16.11;290;27.96;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-12;24.1;57.0;0.0;0.0;0.0;5.14;270;17.9;320;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-14;37.9;72.0;0.0;0.0;0.0;11.41;230;29.08;300;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-10;42.1;68.0;0.47;0.0;0.0;9.84;240;31.99;250;44.96;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-03-12;30.9;69.1;0.0;0.0;0.0;10.07;220;23.04;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-13;45.0;77.0;0.0;0.0;0.0;5.82;280;14.99;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-18;46.0;84.9;0.0;0.0;0.0;8.5;240;17.9;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-20;42.1;60.1;0.0;0.0;0.0;6.04;90;14.99;100;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-22;54.0;84.9;0.0;0.0;0.0;6.71;270;16.11;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-16;55.9;73.9;0.39;0.0;0.0;15.43;170;36.01;160;48.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-04-17;45.0;71.1;0.0;0.0;0.0;6.49;280;17.0;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-22;51.1;57.9;0.43;0.0;0.0;5.82;110;14.99;100;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-30;46.0;77.0;0.0;0.0;0.0;3.13;320;10.07;350;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-01;54.0;75.0;0.0;0.0;0.0;5.14;130;14.09;130;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-09;50.0;80.1;0.0;0.0;0.0;1.57;300;8.05;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-10;54.0;82.0;0.16;0.0;0.0;4.7;110;14.99;320;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-06-04;55.9;89.1;0.0;0.0;0.0;2.91;230;12.08;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-08;72.0;97.0;0.0;0.0;0.0;4.92;250;12.08;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-09;73.9;97.0;0.0;0.0;0.0;7.61;230;10.96;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-13;69.1;84.9;0.0;0.0;0.0;4.92;70;12.97;90;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-30;66.0;91.0;0.0;0.0;0.0;4.47;40;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-02;66.0;95.0;0.0;0.0;0.0;2.68;50;12.97;20;17.9;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-08;73.9;91.9;0.41;0.0;0.0;7.83;220;17.0;210;21.92;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-22;78.1;102.9;0.0;0.0;0.0;8.05;230;17.9;230;25.95;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-07-23;78.1;102.9;0.0;0.0;0.0;7.16;250;17.9;210;27.96;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-08-02;70.0;97.0;0.0;0.0;0.0;2.91;350;10.07;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-12;71.1;88.0;0.0;0.0;0.0;6.26;140;17.0;130;25.05;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-08-13;71.1;82.0;0.48;0.0;0.0;5.37;240;14.99;190;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-08-24;64.9;88.0;0.0;0.0;0.0;5.14;160;12.08;190;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-06;73.9;88.0;1.59;0.0;0.0;10.29;170;29.08;190;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-09-11;64.9;88.0;0.0;0.0;0.0;2.46;240;10.07;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-22;70.0;82.0;0.08;0.0;0.0;2.46;230;8.95;220;12.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2011-09-23;66.0;73.9;0.68;0.0;0.0;3.58;190;19.91;190;25.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-09-30;55.9;84.0;0.16;0.0;0.0;2.91;300;19.91;320;25.05;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-10-06;50.0;75.0;0.0;0.0;0.0;4.92;80;14.09;90;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-08;46.0;73.0;0.0;0.0;0.0;5.14;40;12.97;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-13;66.0;80.1;0.0;0.0;0.0;8.05;220;17.9;240;23.94;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-20;45.0;62.1;0.0;0.0;0.0;13.42;240;23.94;240;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-26;45.0;75.9;0.0;0.0;0.0;7.61;230;23.04;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-28;43.0;63.0;0.08;0.0;0.0;9.4;40;21.92;40;25.95;No;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-10-30;30.0;57.9;0.0;0.0;0.0;2.91;50;10.07;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-01;37.0;61.0;0.0;0.0;0.0;2.46;30;16.11;30;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-06;39.9;64.9;0.0;0.0;0.0;3.36;110;10.07;110;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-10;39.9;66.9;0.01;0.0;0.0;3.58;50;12.97;310;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-19;28.0;63.0;0.0;0.0;0.0;1.34;230;8.95;310;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-22;61.0;77.0;0.0;0.0;0.0;6.93;200;19.91;200;27.96;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-29;39.9;66.9;0.97;0.0;0.0;12.3;230;31.99;230;36.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-01;28.9;55.9;0.0;0.0;0.0;1.57;40;10.07;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-02;28.9;64.0;0.0;0.0;0.0;1.57;240;8.95;240;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-06;60.1;72.0;0.0;0.0;0.0;7.83;220;16.11;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-12;32.0;48.0;0.0;0.0;0.0;3.13;30;8.95;30;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-16;43.0;66.0;0.53;0.0;0.0;6.71;40;14.99;350;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-19;28.0;57.9;0.0;0.0;0.0;7.16;230;19.91;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-20;39.9;62.1;0.0;0.0;0.0;5.82;230;12.08;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-25;34.0;52.0;0.0;0.0;0.0;4.92;230;14.99;230;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-02;32.0;55.0;0.0;0.0;0.0;8.95;290;16.11;310;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-03;24.1;35.1;0.0;0.0;0.0;8.72;310;21.03;280;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-08;48.0;59.0;0.02;0.0;0.0;4.03;80;12.08;80;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-10;43.0;55.9;0.0;0.0;0.0;1.12;240;8.05;240;10.07;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-16;27.0;46.9;0.0;0.0;0.0;6.49;210;14.09;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-06;30.9;48.9;0.0;0.0;0.0;0.0;230;6.04;220;10.07;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-09;28.0;51.1;0.0;0.0;0.0;1.57;40;10.07;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-11;25.0;48.0;0.0;0.0;0.0;8.28;310;23.04;290;42.95;No;No;No;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2012-02-22;41.0;70.0;0.0;0.0;0.0;10.51;220;29.97;230;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-25;36.0;53.1;0.0;0.0;0.0;11.41;250;23.94;280;38.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-26;25.0;54.0;0.0;0.0;0.0;3.58;240;10.07;160;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-02;44.1;61.0;0.02;0.0;0.0;4.92;50;14.09;110;17.0;No;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-11;30.9;64.0;0.0;0.0;0.0;2.91;150;12.08;140;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-14;54.0;84.0;0.0;0.0;0.0;3.36;230;12.97;240;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-15;54.0;84.0;0.0;0.0;0.0;4.25;230;21.03;220;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-18;57.9;70.0;0.87;0.0;0.0;2.24;130;8.95;50;12.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-19;53.1;77.0;0.33;0.0;0.0;1.79;50;12.08;30;17.9;No;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-20;57.9;81.0;1.58;0.0;0.0;3.58;350;10.07;350;17.9;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-03-22;59.0;80.1;0.0;0.0;0.0;4.47;210;12.08;200;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-27;39.0;62.1;0.0;0.0;0.0;5.37;70;14.09;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-11;43.0;57.9;0.0;0.0;0.0;6.93;320;17.9;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-12;32.0;63.0;0.0;0.0;0.0;2.68;40;14.09;300;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-14;42.1;75.9;0.0;0.0;0.0;8.05;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-19;52.0;63.0;0.0;0.0;0.0;3.8;30;10.07;310;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-01;66.9;86.0;0.0;0.0;0.0;10.51;230;21.92;220;25.05;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-05-02;66.9;91.0;0.0;0.0;0.0;6.26;230;14.99;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-24;64.9;86.0;0.19;0.0;0.0;3.58;90;17.9;90;21.92;No;Yes;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2012-06-21;71.1;96.1;0.0;0.0;0.0;5.82;150;16.11;140;21.03;No;No;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-02;73.9;93.9;0.0;0.0;0.0;5.14;290;19.91;280;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-05;72.0;100.9;0.0;0.0;0.0;5.59;60;14.09;60;17.9;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-26;75.9;98.1;0.0;0.0;0.0;8.28;220;17.9;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-28;68.0;95.0;1.12;0.0;0.0;4.25;10;19.91;10;38.92;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-01;72.0;90.0;0.03;0.0;0.0;1.79;80;21.03;80;29.08;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-07;73.9;87.1;0.08;0.0;0.0;5.59;180;14.09;230;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-08;69.1;89.1;0.06;0.0;0.0;5.14;340;17.0;330;23.94;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-12;71.1;87.1;0.0;0.0;0.0;2.46;80;6.93;;;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-08-16;69.1;89.1;0.0;0.0;0.0;2.91;90;10.07;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-19;69.1;75.0;2.08;0.0;0.0;5.59;120;12.97;110;16.11;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-22;69.1;81.0;0.13;0.0;0.0;3.36;350;21.03;330;29.08;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-23;66.9;84.0;0.0;0.0;0.0;4.92;80;10.96;;;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-01;73.0;91.9;0.0;0.0;0.0;4.03;50;14.99;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-03;71.1;89.1;0.91;0.0;0.0;3.8;30;19.91;30;25.95;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-04;73.0;89.1;0.03;0.0;0.0;7.16;190;14.09;200;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-05;73.9;88.0;0.0;0.0;0.0;9.84;240;21.03;240;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-15;61.0;80.1;0.0;0.0;0.0;5.14;40;14.09;50;17.9;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-19;57.0;72.0;0.0;0.0;0.0;6.26;50;17.0;40;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-23;53.1;75.0;0.0;0.0;0.0;2.68;50;14.09;40;19.91;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-05;57.0;82.0;0.0;0.0;0.0;1.57;190;8.05;180;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-06;57.9;84.0;0.0;0.0;0.0;3.8;240;14.99;240;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-13;42.1;66.9;0.0;0.0;0.0;3.36;50;14.99;40;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-15;55.9;73.0;0.11;0.0;0.0;5.82;230;12.08;240;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-17;46.0;72.0;0.0;0.0;0.0;3.8;170;12.08;140;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-19;53.1;78.1;0.19;0.0;0.0;7.61;230;25.05;230;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-26;57.0;72.0;0.01;0.0;0.0;7.83;40;16.11;30;21.92;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-13;39.9;64.9;0.18;0.0;0.0;6.71;30;12.97;10;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-11-15;37.0;46.0;0.29;0.0;0.0;4.47;50;10.07;30;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-11-21;36.0;59.0;0.0;0.0;0.0;3.8;40;14.09;50;19.91;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-26;30.9;66.9;0.0;0.0;0.0;2.68;230;12.08;230;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-27;42.1;57.9;0.09;0.0;0.0;4.25;30;14.09;30;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-01;34.0;64.9;0.0;0.0;0.0;0.22;240;6.04;250;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-03;53.1;75.9;0.0;0.0;0.0;4.92;220;8.95;220;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-10;63.0;72.0;0.01;0.0;0.0;11.63;230;23.04;230;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-18;39.0;62.1;0.0;0.0;0.0;6.71;230;17.0;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-25;44.1;60.1;0.01;0.0;0.0;5.14;90;17.0;100;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-04;26.1;51.1;0.0;0.0;0.0;4.47;300;14.09;310;23.94;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-05;25.0;48.9;0.0;0.0;0.0;1.79;230;8.05;230;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-18;28.9;46.0;0.06;0.12;0.98;2.24;360;12.08;360;17.0;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2013-01-26;27.0;37.9;0.0;0.0;0.0;1.34;40;8.05;30;10.07;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes +2013-01-27;21.9;41.0;0.0;0.0;0.0;1.57;100;10.07;80;14.09;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes +2013-01-30;61.0;72.0;0.35;0.0;0.0;18.12;210;31.99;200;46.98;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-07;36.0;48.0;0.43;0.0;0.0;8.72;70;16.11;80;21.92;No;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2013-02-12;46.9;60.1;0.0;0.0;0.0;3.8;290;12.97;330;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-19;35.1;51.1;0.14;0.0;0.0;9.62;210;21.92;210;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-26;36.0;57.9;0.86;0.0;0.0;10.29;110;25.05;120;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-01;28.0;48.9;0.0;0.0;0.0;4.7;290;12.97;290;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-05;35.1;50.0;0.41;0.0;0.0;4.92;110;17.9;120;27.96;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-03-08;30.9;55.0;0.0;0.0;0.0;5.59;310;16.11;10;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-14;28.9;53.1;0.0;0.0;0.0;4.7;280;14.99;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-19;39.9;66.9;0.0;0.0;0.0;6.71;280;17.9;300;27.96;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-03-22;23.0;52.0;0.0;0.0;0.0;4.92;240;17.0;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-01;48.9;71.1;0.01;0.0;0.0;5.59;290;17.0;310;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-07;36.0;71.1;0.0;0.0;0.0;6.04;230;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-15;57.9;71.1;0.02;0.0;0.0;7.16;90;17.0;100;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-23;46.9;66.9;0.13;0.0;0.0;4.47;40;14.99;50;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-25;50.0;71.1;0.0;0.0;0.0;4.03;20;12.97;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-29;55.0;72.0;0.86;0.0;0.0;2.68;240;10.07;240;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-30;57.0;66.0;0.0;0.0;0.0;5.37;50;12.08;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-06;55.9;68.0;1.41;0.0;0.0;8.05;240;18.12;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-09;54.0;80.1;0.0;0.0;0.0;3.36;280;14.99;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-18;62.1;78.1;0.42;0.0;0.0;2.46;270;17.0;280;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-21;69.1;84.9;0.0;0.0;0.0;7.83;170;14.99;170;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-29;63.0;84.9;0.0;0.0;0.0;8.5;230;14.99;170;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-02;68.0;87.1;0.11;0.0;0.0;11.18;190;18.12;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-04;64.0;79.0;0.0;0.0;0.0;4.03;40;14.09;40;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-09;66.9;87.1;0.02;0.0;0.0;3.13;180;8.05;180;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-13;68.0;93.9;0.05;0.0;0.0;9.4;300;29.97;300;48.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-17;71.1;87.1;0.0;0.0;0.0;8.5;230;14.09;220;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-20;63.0;82.0;0.0;0.0;0.0;7.16;50;14.09;110;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-21;55.0;82.9;0.0;0.0;0.0;6.04;90;12.08;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-25;70.0;91.9;0.01;0.0;0.0;8.95;230;21.03;110;25.95;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-06-30;68.0;87.1;0.99;0.0;0.0;6.49;280;18.12;310;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-09;72.0;89.1;0.0;0.0;0.0;6.71;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-10;73.0;89.1;0.04;0.0;0.0;9.17;230;19.91;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-13;70.0;78.1;0.53;0.0;0.0;5.37;90;12.97;110;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-20;73.9;90.0;0.0;0.0;0.0;10.51;230;18.12;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-23;73.9;91.0;0.0;0.0;0.0;7.83;280;14.09;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-24;71.1;96.1;0.5;0.0;0.0;2.91;320;16.11;330;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-25;66.0;80.1;0.0;0.0;0.0;5.14;30;14.09;30;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-28;69.1;90.0;0.46;0.0;0.0;6.26;270;16.11;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-06;66.9;84.0;0.14;0.0;0.0;5.82;240;16.11;230;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-07;70.0;87.1;0.0;0.0;0.0;4.92;220;12.97;210;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-21;70.0;88.0;0.01;0.0;0.0;3.13;230;12.08;330;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-22;70.0;89.1;0.0;0.0;0.0;3.8;190;8.95;200;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-23;66.9;88.0;0.0;0.0;0.0;5.14;30;14.09;340;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-25;60.1;80.1;0.0;0.0;0.0;4.92;80;14.99;80;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-27;62.1;89.1;0.0;0.0;0.0;2.91;220;8.05;260;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-02;70.0;88.0;0.0;0.0;0.0;5.59;230;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-10;68.0;91.0;0.0;0.0;0.0;4.7;220;8.95;240;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-13;64.9;84.9;0.0;0.0;0.0;3.58;300;12.08;280;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-21;66.0;75.9;0.77;0.0;0.0;4.7;310;10.07;150;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-24;53.1;75.9;0.0;0.0;0.0;1.12;30;6.93;140;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-25;53.1;75.0;0.0;0.0;0.0;1.12;100;8.95;90;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-27;52.0;73.9;0.0;0.0;0.0;5.82;50;16.11;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-02;57.0;84.9;0.0;0.0;0.0;1.57;270;8.95;300;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-03;59.0;86.0;0.0;0.0;0.0;3.58;220;12.97;210;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-07;63.0;73.9;0.86;0.0;0.0;6.93;210;21.03;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-14;55.9;64.9;0.11;0.0;0.0;7.61;50;14.99;40;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-17;60.1;77.0;0.0;0.0;0.0;6.49;230;17.0;220;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-19;57.9;70.0;0.01;0.0;0.0;2.91;230;12.08;210;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-20;43.0;64.9;0.0;0.0;0.0;2.68;50;12.97;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-28;45.0;69.1;0.0;0.0;0.0;0.67;220;8.05;200;8.95;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2013-11-03;39.9;63.0;0.0;0.0;0.0;3.8;40;14.99;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-06;44.1;71.1;0.0;0.0;0.0;3.58;80;8.95;150;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-13;26.2;45.0;0.0;0.0;0.0;3.13;30;16.11;30;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-14;25.2;57.0;0.0;0.0;0.0;5.37;230;14.99;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-24;23.2;43.0;0.0;0.0;0.0;6.93;20;14.99;300;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-29;24.3;50.0;0.0;0.0;0.0;4.03;40;14.09;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-01;27.1;59.0;0.0;0.0;0.0;0.67;230;8.05;290;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-05;55.0;66.9;0.03;0.0;0.0;6.71;220;18.12;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-08;33.1;42.1;0.05;0.0;0.0;8.05;30;17.0;40;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-10;28.2;48.0;0.47;0.0;0.0;2.91;40;12.08;320;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-12;25.2;44.1;0.0;0.0;0.0;2.24;300;12.08;290;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-13;23.2;52.0;0.0;0.0;0.0;2.91;230;12.97;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-17;35.1;60.1;0.0;0.0;0.0;6.49;220;18.12;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-18;31.1;48.9;0.0;0.0;0.0;3.36;270;12.97;300;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-20;43.0;66.9;0.0;0.0;0.0;8.28;230;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-24;29.1;46.9;0.0;0.0;0.0;6.49;10;12.97;10;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-26;24.3;53.1;0.03;0.0;0.0;1.12;260;8.05;270;10.07;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2013-12-29;43.0;63.0;1.94;0.0;0.0;7.16;230;21.92;170;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-30;35.1;53.1;0.0;0.0;0.0;1.79;300;8.95;270;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-06;16.2;61.0;0.13;0.0;0.0;13.65;220;29.97;210;38.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-10;39.0;45.0;0.57;0.0;0.0;3.58;270;10.07;280;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-12;39.0;57.9;0.0;0.0;0.0;5.82;250;16.11;260;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-20;30.2;64.0;0.0;0.0;0.0;8.05;230;18.12;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-26;22.1;52.0;0.0;0.0;0.0;8.5;220;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-24;37.9;60.1;0.0;0.0;0.0;5.14;290;14.99;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-27;24.3;55.0;0.0;0.0;0.0;5.82;230;21.92;250;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-01;28.2;55.0;0.0;0.0;0.0;3.36;90;12.08;90;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-09;39.0;66.0;0.0;0.0;0.0;3.36;330;12.97;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-10;34.0;73.9;0.0;0.0;0.0;5.37;240;16.11;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-11;44.1;79.0;0.0;0.0;0.0;5.14;240;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-29;55.9;66.0;0.49;0.0;0.0;5.59;250;25.05;270;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-04;57.0;82.0;0.0;0.0;0.0;11.63;230;31.99;230;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-08;55.0;66.9;0.01;0.0;0.0;6.71;220;21.92;230;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-09;45.0;68.0;0.07;0.0;0.0;3.36;340;12.97;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-16;33.1;54.0;0.0;0.0;0.0;7.61;40;17.0;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-19;46.0;53.1;0.56;0.0;0.0;8.95;40;16.11;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-22;46.9;82.9;0.0;0.0;0.0;5.82;230;17.0;260;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-26;48.9;79.0;0.0;0.0;0.0;6.71;230;19.91;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-28;54.0;66.9;0.0;0.0;0.0;6.93;110;14.99;110;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-30;64.9;77.0;1.12;0.0;0.0;10.96;180;23.94;160;38.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-01;62.1;79.0;0.0;0.0;0.0;13.65;230;27.96;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-04;48.9;82.9;0.0;0.0;0.0;5.59;240;19.91;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-11;60.1;86.0;0.0;0.0;0.0;2.24;60;8.95;40;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-25;54.0;82.0;0.0;0.0;0.0;2.46;240;10.07;240;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-26;61.0;87.1;0.09;0.0;0.0;8.72;230;17.0;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-30;63.0;73.9;0.0;0.0;0.0;4.7;50;12.97;120;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-17;70.0;96.1;0.0;0.0;0.0;7.16;220;18.12;210;23.04;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-06-19;70.0;97.0;0.27;0.0;0.0;6.04;280;31.09;280;46.98;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-20;68.0;91.0;0.64;0.0;0.0;2.68;120;17.0;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-28;69.1;84.9;0.0;0.0;0.0;8.5;90;17.0;90;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-08;73.9;98.1;0.0;0.0;0.0;11.86;230;23.04;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-10;71.1;88.0;0.66;0.0;0.0;5.14;120;17.0;110;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-14;75.0;98.1;0.0;0.0;0.0;9.62;190;14.99;270;21.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-07-20;68.0;81.0;0.93;0.0;0.0;4.03;100;8.95;130;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-25;66.0;82.9;0.0;0.0;0.0;3.36;80;8.95;140;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-26;69.1;90.0;0.0;0.0;0.0;3.13;220;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-27;72.0;87.1;0.45;0.0;0.0;7.61;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-28;70.0;88.0;0.0;0.0;0.0;6.49;270;18.12;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-05;68.0;88.0;0.0;0.0;0.0;2.46;50;12.08;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-07;69.1;86.0;0.0;0.0;0.0;4.47;50;12.08;60;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-12;70.0;87.1;2.45;0.0;0.0;4.92;230;23.04;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-27;57.9;86.0;0.0;0.0;0.0;3.36;50;12.08;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-27;55.0;75.9;0.0;0.0;0.0;3.8;40;12.97;80;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-03;64.9;84.9;0.09;0.0;0.0;7.83;220;19.91;220;23.94;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2014-10-04;46.9;73.0;0.0;0.0;0.0;7.38;290;14.09;290;21.03;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-10-06;45.0;75.9;0.0;0.0;0.0;8.05;210;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-08;60.1;82.9;0.0;0.0;0.0;5.14;240;14.99;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-15;57.0;75.0;0.62;0.0;0.0;6.71;170;18.12;170;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-31;42.1;62.1;0.0;0.0;0.0;5.14;90;12.97;80;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-12;50.0;75.9;0.0;0.0;0.0;3.13;300;8.95;300;12.97;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-21;26.2;48.0;0.0;0.0;0.0;3.58;350;12.97;10;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-23;34.0;66.0;0.64;0.0;0.0;4.7;170;21.92;160;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-24;60.1;72.0;0.01;0.0;0.0;13.2;230;25.05;230;33.11;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-12-03;44.1;57.0;0.0;0.0;0.0;4.25;220;14.99;220;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-11;26.2;48.0;0.0;0.0;0.0;5.37;250;14.99;260;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-13;28.2;60.1;0.0;0.0;0.0;1.57;310;8.95;300;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-18;31.1;51.1;0.0;0.0;0.0;1.12;30;8.95;30;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-27;31.1;62.1;0.0;0.0;0.0;3.13;230;12.08;240;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-12-28;48.0;61.0;0.01;0.0;0.0;6.71;230;14.99;230;19.91;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-29;41.0;55.0;0.72;0.0;0.0;6.71;30;12.08;50;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-05;32.0;55.9;0.0;0.0;0.0;5.37;310;14.99;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-06;26.2;55.0;0.0;0.0;0.0;4.7;230;21.03;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-29;23.2;46.9;0.02;0.0;0.0;4.7;220;14.99;200;18.12;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2015-02-01;32.0;57.0;0.0;0.0;0.0;6.71;220;19.91;190;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-07;26.2;60.1;0.0;0.0;0.0;8.28;240;23.04;240;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-09;45.0;62.1;0.4;0.0;0.0;6.04;50;17.0;50;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-02-10;36.0;45.0;0.17;0.0;0.0;10.96;30;16.11;10;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-15;15.3;29.1;0.0;0.0;0.0;9.4;310;23.04;310;38.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-28;26.2;37.0;0.0;0.0;1.18;6.93;50;17.0;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-03;35.1;43.0;0.07;0.0;0.0;5.37;90;14.09;90;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-06;24.3;37.0;0.0;0.0;0.0;5.82;50;17.0;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-11;59.0;75.9;0.11;0.0;0.0;5.14;240;16.11;360;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-17;46.9;82.0;0.0;0.0;0.0;6.04;330;17.0;340;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-18;35.1;61.0;0.0;0.0;0.0;2.01;230;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-03;9.1;32.0;0.06;0.91;0.0;4.25;360;12.97;340;23.04;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-01-08;16.2;46.9;0.0;0.0;0.0;5.37;220;16.11;230;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-12;55.9;71.1;0.5;0.0;0.0;11.41;240;23.04;230;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-24;34.0;54.0;0.0;0.0;0.0;4.03;360;16.11;20;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-19;39.9;50.0;0.3;0.0;0.0;2.46;120;12.08;130;16.11;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-25;60.1;73.0;0.0;0.0;0.0;11.18;240;23.04;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-01;50.0;57.0;0.59;0.0;0.0;4.47;220;14.99;260;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-09;25.2;52.0;0.0;0.0;0.0;6.04;260;17.0;250;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-13;29.1;48.0;0.0;0.0;1.18;6.71;290;17.0;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-17;34.0;71.1;0.27;0.0;0.0;6.26;230;25.05;220;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-03-19;44.1;64.9;0.0;0.0;0.0;5.59;120;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-26;32.0;53.1;0.0;0.0;0.0;10.29;40;19.91;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-27;34.0;48.9;0.01;0.0;0.0;5.37;220;14.09;210;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-02;51.1;81.0;0.0;0.0;0.0;9.84;50;21.03;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-06;45.0;73.0;0.0;0.0;0.0;11.41;240;25.95;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-13;52.0;80.1;0.0;0.0;0.0;14.32;230;27.96;240;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-15;61.0;82.0;3.31;0.0;0.0;12.53;220;38.92;210;48.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-04-16;41.0;64.0;0.0;0.0;0.0;14.76;230;33.11;230;42.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-24;53.1;64.9;0.85;0.0;0.0;12.3;110;29.08;110;36.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-25;51.1;68.0;0.0;0.0;0.0;3.8;300;12.97;290;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-27;54.0;73.0;0.01;0.0;0.0;4.92;240;14.99;260;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-28;50.0;78.1;0.0;0.0;0.0;5.82;230;18.12;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-01;45.0;82.9;0.0;0.0;0.0;4.47;240;16.11;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-05;63.0;82.0;0.0;0.0;0.0;7.83;220;12.97;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-11;59.0;89.1;0.0;0.0;0.0;4.03;260;14.09;250;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-16;68.0;84.9;0.76;0.0;0.0;6.71;170;18.12;240;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-19;69.1;75.0;0.59;0.0;0.0;8.5;170;16.11;180;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-23;69.1;87.1;0.0;0.0;0.0;6.93;240;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-24;68.0;84.0;0.0;0.0;0.0;6.93;50;16.11;110;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-17;70.0;93.0;0.0;0.0;0.0;5.37;220;12.97;220;14.99;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-20;73.0;93.9;0.0;0.0;0.0;4.47;200;17.0;200;21.03;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-01;73.0;95.0;0.48;0.0;0.0;5.82;220;14.99;200;18.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-08;62.1;82.0;0.0;0.0;0.0;8.05;40;17.0;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-11;66.9;96.1;0.05;0.0;0.0;3.8;80;12.97;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-13;68.0;88.0;0.0;0.0;0.0;7.61;100;16.11;130;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-21;69.1;88.0;0.01;0.0;0.0;6.71;60;17.0;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-25;69.1;82.0;0.27;0.0;0.0;3.8;280;12.97;240;16.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-01;73.0;90.0;0.02;0.0;0.0;9.17;180;18.12;170;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-03;70.0;77.0;1.12;0.0;0.0;5.82;170;21.03;170;29.97;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-06;72.0;91.9;0.05;0.0;0.0;2.91;260;12.97;280;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-07;71.1;93.0;0.2;0.0;0.0;6.71;270;16.11;250;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-08;69.1;93.9;0.46;0.0;0.0;6.49;270;21.92;280;31.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-09;69.1;90.0;0.0;0.0;0.0;4.7;260;12.08;290;18.12;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-08-13;66.9;84.9;0.08;0.0;0.0;3.58;40;17.0;30;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-17;73.0;91.0;0.0;0.0;0.0;9.62;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-21;71.1;87.1;0.01;0.0;0.0;9.4;240;18.12;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-15;73.0;77.0;1.85;0.0;0.0;15.88;80;29.97;90;38.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-21;70.0;82.9;0.0;0.0;0.0;4.92;170;10.07;150;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-22;66.9;88.0;0.0;0.0;0.0;4.47;230;10.07;160;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-30;62.1;81.0;0.0;0.0;0.0;4.03;80;12.08;130;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-01;60.1;82.0;0.0;0.0;0.0;2.01;80;8.95;170;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-03;64.0;86.0;0.0;0.0;0.0;2.68;230;8.95;230;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-16;64.0;75.0;0.01;0.0;0.0;4.92;40;12.08;40;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-22;34.0;62.1;0.0;0.0;0.0;3.8;240;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-27;46.9;55.0;0.01;0.0;0.0;8.5;230;18.12;230;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-03;39.0;61.0;0.0;0.0;0.0;5.82;230;19.91;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-04;37.0;64.9;0.04;0.0;0.0;7.38;80;17.0;100;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-07;48.9;73.0;0.0;0.0;0.0;1.34;140;8.05;140;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-16;34.0;54.0;0.0;0.0;0.0;5.59;250;12.97;250;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-26;39.0;63.0;0.01;0.0;0.0;9.84;250;23.04;250;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-03;46.9;68.0;0.0;0.0;0.0;5.59;230;12.08;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-08;31.1;43.0;0.0;0.0;0.0;4.7;70;12.97;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-13;29.1;51.1;0.0;0.0;0.0;2.24;160;10.07;170;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-22;34.0;53.1;0.0;0.0;0.0;6.71;280;16.11;270;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-27;29.1;54.0;0.02;0.0;0.0;5.14;90;14.09;110;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-01;51.1;71.1;0.0;0.0;0.0;7.38;220;21.92;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-21;17.2;31.1;0.0;0.0;0.0;5.82;270;14.99;290;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-30;21.2;44.1;0.0;0.0;0.0;8.28;230;25.05;240;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-01;27.1;57.9;0.0;0.0;0.0;5.37;230;18.12;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-06;46.9;77.0;0.0;0.0;0.0;7.16;200;19.91;200;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-09;33.1;46.0;0.0;0.0;0.0;6.04;50;14.09;10;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-10;27.1;43.0;0.0;0.0;0.0;3.8;90;12.97;80;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-13;39.0;57.0;0.0;0.0;0.0;10.07;280;21.03;270;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-23;39.0;42.1;1.02;0.0;0.0;5.14;140;14.09;60;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-28;42.1;62.1;0.0;0.0;0.0;5.82;130;16.11;140;21.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-04;34.0;50.0;0.01;0.0;0.0;4.92;270;12.08;310;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-03-07;23.2;50.0;0.0;0.0;0.0;2.46;280;10.07;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-11;44.1;66.0;0.0;0.0;0.0;2.91;40;12.08;320;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-14;50.0;75.0;0.0;0.0;0.0;10.29;230;23.04;240;29.97;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2019-03-16;39.9;59.0;0.0;0.0;0.0;4.92;360;14.09;340;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-19;33.1;55.0;0.0;0.0;0.0;6.26;40;14.99;50;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-21;44.1;59.0;0.58;0.0;0.0;6.26;330;14.09;360;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-24;32.0;71.1;0.0;0.0;0.0;7.61;230;21.03;240;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-27;30.2;57.0;0.0;0.0;0.0;6.93;40;17.0;80;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-03;31.1;69.1;0.0;0.0;0.0;4.7;230;16.11;230;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-07;52.0;71.1;0.0;0.0;0.0;5.14;210;12.08;210;14.99;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-11;46.9;79.0;0.0;0.0;0.0;6.49;180;14.99;140;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-14;66.0;79.0;0.28;0.0;0.0;11.86;220;31.09;210;44.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-04-17;48.0;80.1;0.0;0.0;0.0;6.71;230;12.97;220;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-21;44.1;64.0;0.0;0.0;0.0;3.13;220;12.08;210;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-22;43.0;73.0;0.0;0.0;0.0;1.79;310;12.08;310;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-25;59.0;82.0;0.0;0.0;0.0;5.14;240;17.0;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-02;63.0;84.9;0.0;0.0;0.0;9.17;250;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-20;69.1;88.0;0.0;0.0;0.0;10.96;240;18.12;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-22;62.1;80.1;0.0;0.0;0.0;6.04;210;14.99;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-23;64.0;84.0;0.0;0.0;0.0;8.05;230;19.91;240;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-07;71.1;78.1;0.53;0.0;0.0;4.7;230;12.08;90;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-11;61.0;81.0;0.02;0.0;0.0;6.26;40;14.99;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-13;61.0;79.0;0.35;0.0;0.0;7.61;230;19.91;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-14;53.1;79.0;0.0;0.0;0.0;4.03;340;14.09;350;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-06-23;66.9;81.0;0.0;0.0;0.0;4.03;90;12.08;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-04;72.0;96.1;1.0;0.0;0.0;3.58;220;21.03;230;29.97;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2019-07-08;73.9;91.9;0.17;0.0;0.0;4.7;40;17.0;40;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-16;71.1;96.1;0.0;0.0;0.0;3.36;150;14.99;120;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-17;75.9;98.1;0.03;0.0;0.0;8.95;240;25.95;250;33.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-24;62.1;84.0;0.0;0.0;0.0;4.7;40;14.99;30;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-08-01;66.9;91.0;0.87;0.0;0.0;4.47;130;33.11;140;50.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-08;68.0;91.0;0.12;0.0;0.0;3.36;240;19.91;240;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-06-26;61.0;81.0;0.0;0.0;0.0;6.93;50;17.9;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-29;71.1;105.1;0.0;0.0;0.0;5.82;350;23.04;330;38.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-07;72.0;102.0;0.0;0.0;0.0;6.26;240;17.9;230;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-12;69.1;82.9;0.0;0.0;0.0;4.03;70;8.05;;;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-14;73.9;91.9;0.0;0.0;0.0;4.47;160;8.05;;;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-16;73.9;96.1;0.0;0.0;0.0;7.38;230;14.99;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-07-18;75.0;98.1;0.0;0.0;0.0;8.5;220;17.0;240;25.05;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-07-22;72.0;88.0;1.1;0.0;0.0;2.01;90;10.07;90;12.08;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-04;75.0;91.9;0.0;0.0;0.0;6.71;190;14.99;190;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-05;73.9;91.9;0.0;0.0;0.0;8.95;180;21.92;180;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-13;66.9;90.0;0.0;0.0;0.0;2.24;240;8.95;160;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-15;71.1;88.0;0.0;0.0;0.0;4.25;140;14.09;140;17.9;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-08-21;69.1;82.0;0.0;0.0;0.0;1.57;140;10.07;120;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-27;70.0;88.0;0.0;0.0;0.0;3.13;160;12.08;90;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-08-31;71.1;91.9;0.0;0.0;0.0;6.49;240;12.97;250;16.11;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-11;55.0;78.1;0.0;0.0;0.0;2.46;50;12.08;50;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-12;53.1;79.0;0.0;0.0;0.0;3.36;80;12.97;100;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-17;62.1;82.0;0.72;0.0;0.0;3.36;160;10.07;140;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-18;68.0;81.0;1.7;0.0;0.0;9.17;230;23.04;280;34.9;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-09-20;53.1;75.9;0.0;0.0;0.0;1.34;50;8.95;120;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-21;55.0;82.0;0.0;0.0;0.0;2.91;220;10.07;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-09-29;60.1;68.0;0.99;0.0;0.0;4.03;40;12.08;50;14.09;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-10-03;72.0;86.0;0.0;0.0;0.0;4.92;210;12.97;210;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-08;46.9;52.0;0.38;0.0;0.0;8.05;50;16.11;50;21.03;No;No;No;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2012-10-10;54.0;72.0;0.0;0.0;0.0;4.03;240;14.09;280;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-12;44.1;73.0;0.0;0.0;0.0;3.36;70;17.9;80;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-18;48.0;79.0;0.0;0.0;0.0;5.59;170;17.0;170;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-20;46.0;72.0;0.0;0.0;0.0;2.68;240;14.09;240;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-21;41.0;68.0;0.0;0.0;0.0;0.89;40;8.95;40;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-10-30;42.1;51.1;0.07;0.0;0.0;12.75;250;21.03;230;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-03;34.0;61.0;0.0;0.0;0.0;2.68;320;12.08;300;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-09;30.9;64.9;0.0;0.0;0.0;1.12;240;8.95;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-10;36.0;73.9;0.0;0.0;0.0;2.68;240;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-11;39.0;75.0;0.0;0.0;0.0;4.47;200;12.08;180;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-12;52.0;73.9;0.0;0.0;0.0;6.93;190;14.09;180;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-14;33.1;51.1;0.0;0.0;0.0;7.61;40;17.9;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-16;39.0;55.0;0.0;0.0;0.0;4.47;40;14.09;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-17;34.0;55.9;0.0;0.0;0.0;7.61;40;19.91;40;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-22;34.0;61.0;0.0;0.0;0.0;3.58;40;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-11-29;25.0;55.0;0.0;0.0;0.0;1.34;240;10.07;240;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-07;45.0;55.9;0.05;0.0;0.0;3.13;80;8.05;10;8.95;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-12-09;51.1;72.0;0.02;0.0;0.0;5.59;170;14.09;170;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-11;50.0;64.9;0.0;0.0;0.0;6.93;220;17.9;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-12;39.0;50.0;0.24;0.0;0.0;9.17;50;17.0;50;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-15;32.0;57.9;0.0;0.0;0.0;1.57;90;8.95;140;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-17;55.0;62.1;0.18;0.0;0.0;7.83;220;19.91;150;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-22;32.0;50.0;0.0;0.0;0.0;7.38;290;17.0;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-12-26;37.0;48.9;1.41;0.0;0.0;9.17;80;23.04;90;31.09;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-01-02;39.9;48.9;0.24;0.0;0.0;3.58;40;12.08;40;16.11;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-01-03;28.9;45.0;0.0;0.0;0.0;1.79;40;6.93;90;12.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-08;28.0;55.9;0.0;0.0;0.0;0.89;130;8.95;140;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-09;35.1;68.0;0.0;0.0;0.0;1.79;230;12.08;230;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-10;46.0;64.9;0.0;0.0;0.0;4.47;70;12.97;80;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-13;55.0;75.0;0.0;0.0;0.0;8.05;230;21.03;230;23.94;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-14;57.9;69.1;0.0;0.0;0.0;6.04;230;14.09;230;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-17;33.1;51.1;1.41;0.71;0.0;8.72;50;31.99;30;38.92;No;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2013-01-22;25.0;43.0;0.0;0.0;0.0;5.37;300;14.99;300;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-23;18.0;42.1;0.0;0.0;0.0;4.25;230;17.0;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-24;21.0;36.0;0.0;0.0;0.0;6.93;20;17.9;340;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-01-29;44.1;73.0;0.0;0.0;0.0;8.95;230;17.0;230;19.91;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-05;39.0;60.1;0.0;0.0;0.0;5.82;220;14.99;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-02-13;42.1;50.0;0.23;0.0;0.0;3.58;310;12.08;320;17.0;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2013-02-21;25.0;54.0;0.0;0.0;0.0;4.25;90;16.11;100;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-02;26.1;48.0;0.0;0.0;0.0;3.58;310;12.97;320;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-10;32.0;66.9;0.0;0.0;0.0;3.36;140;12.08;170;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-18;37.9;43.0;0.28;0.0;0.0;6.49;90;14.09;80;19.91;Yes;Yes;No;No;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2013-03-21;30.9;46.0;0.0;0.0;0.0;7.38;320;17.0;330;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-24;34.0;43.0;0.73;0.0;0.0;7.61;50;17.9;50;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-27;34.0;52.0;0.0;0.0;0.0;6.04;290;17.0;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-03-29;28.0;57.9;0.0;0.0;0.0;2.46;240;14.09;260;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-02;35.1;60.1;0.0;0.0;0.0;4.7;300;16.11;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-04;39.0;48.0;0.72;0.0;0.0;10.51;50;17.0;50;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-08;52.0;78.1;0.0;0.0;0.0;9.84;230;21.03;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-12;63.0;80.1;1.04;0.0;0.0;12.3;230;23.94;230;33.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-13;52.0;73.9;0.0;0.0;0.0;3.8;240;14.09;270;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-18;62.1;79.0;0.0;0.0;0.0;8.95;160;18.12;170;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-04-22;35.1;61.0;0.01;0.0;0.0;10.51;50;19.91;50;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-01;57.0;62.1;0.01;0.0;0.0;9.84;50;19.91;80;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-12;52.0;72.0;0.0;0.0;0.0;5.82;280;16.11;280;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-13;44.1;64.9;0.0;0.0;0.0;3.36;280;16.11;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-14;39.0;70.0;0.0;0.0;0.0;4.7;230;17.0;240;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-22;69.1;82.9;0.01;0.0;0.0;9.17;170;14.99;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-26;48.0;73.0;0.0;0.0;0.0;2.01;240;12.97;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-05-28;64.0;84.9;0.0;0.0;0.0;9.17;220;16.11;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-03;64.0;82.9;0.45;0.0;0.0;5.59;330;16.11;330;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-06;66.0;77.0;0.38;0.0;0.0;8.5;140;17.0;150;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-15;57.0;84.9;0.0;0.0;0.0;4.47;230;14.99;220;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-22;69.1;82.0;0.0;0.0;0.0;6.71;130;17.0;130;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-06-26;69.1;91.9;0.29;0.0;0.0;9.4;340;19.91;330;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-05;72.0;89.1;0.0;0.0;0.0;7.61;140;14.09;170;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-06;73.0;88.0;0.01;0.0;0.0;6.49;190;17.0;180;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-12;70.0;77.0;0.05;0.0;0.0;4.25;170;12.97;50;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-15;69.1;90.0;0.0;0.0;0.0;2.24;70;8.95;90;31.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-27;68.0;88.0;0.13;0.0;0.0;4.25;300;14.09;300;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-07-29;69.1;87.1;0.03;0.0;0.0;2.24;230;14.09;200;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-01;70.0;87.1;0.0;0.0;0.0;4.92;240;14.09;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-03;70.0;91.0;2.3;0.0;0.0;5.82;120;18.12;130;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-04;66.0;84.0;0.0;0.0;0.0;4.25;50;14.09;30;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-08;72.0;91.0;0.0;0.0;0.0;3.8;240;12.08;260;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-10;73.0;93.9;0.08;0.0;0.0;6.71;230;10.96;;;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2013-08-15;59.0;75.9;0.0;0.0;0.0;5.37;50;12.97;80;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-16;59.0;71.1;0.0;0.0;0.0;4.25;50;10.07;50;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-17;64.0;73.0;0.19;0.0;0.0;7.38;50;12.97;60;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-20;68.0;82.9;0.0;0.0;0.0;1.34;130;6.93;120;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-28;70.0;82.9;0.0;0.0;0.0;3.58;230;12.97;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-08-30;64.9;88.0;0.0;0.0;0.0;2.91;60;8.05;110;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-06;64.0;82.0;0.0;0.0;0.0;4.92;50;14.09;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-29;52.0;75.0;0.0;0.0;0.0;3.36;50;14.09;40;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-09-30;51.1;75.9;0.0;0.0;0.0;1.79;50;10.07;20;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-09;54.0;62.1;0.19;0.0;0.0;9.84;40;17.0;10;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-24;35.1;59.0;0.0;0.0;0.0;4.25;270;14.99;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-26;29.1;59.0;0.0;0.0;0.0;5.14;230;16.11;270;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-10-31;57.9;75.9;0.0;0.0;0.0;8.72;200;19.91;210;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-01;60.1;73.0;1.23;0.0;0.0;12.53;220;21.92;180;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-05;37.0;57.0;0.0;0.0;0.0;5.14;40;12.08;40;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-10;37.9;72.0;0.0;0.0;0.0;5.37;280;17.0;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-11;32.0;59.0;0.0;0.0;0.0;1.79;140;8.95;150;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-16;50.0;69.1;0.0;0.0;0.0;3.13;30;8.95;20;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-22;46.9;71.1;0.03;0.0;0.0;5.37;230;17.0;230;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-25;18.1;43.0;0.0;0.0;0.0;2.01;170;10.07;160;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-26;37.0;66.0;0.83;0.0;0.0;8.05;170;18.12;170;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-27;30.2;50.0;0.71;0.0;0.0;6.26;310;14.99;330;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-11-30;27.1;48.0;0.0;0.0;0.0;3.58;40;12.08;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-06;64.9;79.0;0.0;0.0;0.0;13.87;230;27.96;230;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-15;34.0;54.0;0.03;0.0;0.0;4.92;310;12.97;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-22;64.0;78.1;0.28;0.0;0.0;14.09;220;25.95;220;35.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-27;26.2;52.0;0.0;0.0;0.0;1.12;40;8.05;30;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2013-12-28;25.2;59.0;0.0;0.0;0.0;1.12;240;8.95;230;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-05;37.0;62.1;0.0;0.0;0.0;4.92;180;16.11;180;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-17;29.1;55.9;0.0;0.0;0.0;9.17;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-23;16.2;37.9;0.0;0.0;0.0;4.7;30;14.99;10;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-28;18.1;33.1;0.18;1.18;0.0;8.28;80;14.99;20;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-29;14.2;27.1;0.0;0.2;1.18;4.03;10;10.07;10;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-01-30;7.2;37.9;0.0;0.0;1.18;1.79;100;12.08;110;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-02;41.0;64.0;0.0;0.0;0.0;8.05;230;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-04;37.9;39.9;0.48;0.0;0.0;7.61;80;16.11;80;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-06;31.1;42.1;0.0;0.0;0.0;3.58;50;10.07;330;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-07;35.1;52.0;0.0;0.0;0.0;2.91;240;10.07;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-10;35.1;43.0;0.08;0.0;0.0;2.91;30;12.97;40;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-12;23.2;30.2;0.64;3.31;0.0;10.96;40;17.0;50;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-21;41.0;73.0;0.4;0.0;0.0;11.41;250;31.99;250;40.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-22;36.0;64.0;0.0;0.0;0.0;2.01;240;8.05;160;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-25;29.1;53.1;0.0;0.0;0.0;3.13;40;10.07;310;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-26;32.0;48.9;0.0;0.0;0.0;3.58;40;10.07;40;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-02-28;26.2;45.0;0.0;0.0;0.0;8.95;70;17.0;80;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-04;16.2;37.9;0.0;0.0;0.0;7.38;40;17.0;30;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-12;42.1;70.0;0.35;0.0;0.0;12.97;220;29.08;320;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-21;32.0;69.1;0.0;0.0;0.0;5.37;230;17.0;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-25;33.1;45.0;0.03;0.0;0.0;5.82;120;12.97;320;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-27;24.3;59.0;0.0;0.0;0.0;6.93;210;17.0;220;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-03-30;42.1;62.1;0.23;0.0;0.0;10.51;250;25.05;270;36.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-01;39.0;80.1;0.0;0.0;0.0;2.68;230;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-02;52.0;86.0;0.0;0.0;0.0;6.26;230;18.12;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-05;53.1;71.1;0.0;0.0;0.0;6.04;350;14.99;330;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-06;44.1;60.1;0.0;0.0;0.0;9.62;60;18.12;60;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-07;43.0;64.0;1.42;0.0;0.0;6.93;200;18.12;200;27.96;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-10;39.9;73.9;0.0;0.0;0.0;6.49;230;21.03;210;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-18;37.9;63.0;0.18;0.0;0.0;6.26;50;14.99;50;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-04-29;52.0;64.9;0.05;0.0;0.0;6.93;80;12.97;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-09;63.0;89.1;0.07;0.0;0.0;8.72;230;21.03;230;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-14;68.0;89.1;0.0;0.0;0.0;8.05;160;14.99;180;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-15;66.9;79.0;3.38;0.0;0.0;8.95;150;14.99;170;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-05-17;46.9;71.1;0.0;0.0;0.0;5.37;270;16.11;320;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-01;53.1;78.1;0.0;0.0;0.0;5.59;120;14.09;90;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-02;52.0;82.9;0.0;0.0;0.0;2.24;250;10.07;300;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-04;64.9;91.9;0.02;0.0;0.0;4.7;20;21.92;20;40.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-05;72.0;91.0;0.0;0.0;0.0;7.61;230;18.12;270;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-12;69.1;84.9;0.08;0.0;0.0;3.58;210;12.08;200;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-16;69.1;95.0;0.08;0.0;0.0;4.25;250;14.99;240;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-06-18;70.0;97.0;0.0;0.0;0.0;7.38;240;18.12;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-02;75.9;97.0;0.0;0.0;0.0;9.84;190;17.0;200;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-04;71.1;88.0;0.0;0.0;0.0;6.04;260;12.08;340;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-11;69.1;86.0;0.0;0.0;0.0;2.46;110;8.95;120;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-15;70.0;93.9;4.21;0.0;0.0;7.61;230;17.0;330;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-23;71.1;91.9;0.0;0.0;0.0;5.59;210;17.0;220;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-07-24;68.0;88.0;1.45;0.0;0.0;5.37;10;21.92;10;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-09;64.0;73.9;1.01;0.0;0.0;5.59;90;12.97;130;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-17;70.0;89.1;0.0;0.0;0.0;2.24;250;8.95;260;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-19;69.1;86.0;0.0;0.0;0.0;2.46;220;8.05;;;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-25;60.1;79.0;0.0;0.0;0.0;6.49;40;16.11;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-26;60.1;82.0;0.0;0.0;0.0;4.47;50;14.09;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-08-28;64.9;91.9;0.0;0.0;0.0;1.34;60;8.95;320;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-06;71.1;91.0;0.0;0.0;0.0;5.59;180;12.97;190;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-09-19;63.0;80.1;0.0;0.0;0.0;6.93;80;16.11;130;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-10;57.9;84.0;0.63;0.0;0.0;8.05;220;17.0;10;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-10-13;60.1;81.0;0.0;0.0;0.0;4.03;150;12.08;150;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-19;44.1;64.9;0.0;0.0;0.0;2.91;10;12.97;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-24;43.0;70.0;0.0;0.0;0.0;2.01;230;8.95;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-10-29;55.0;78.1;0.18;0.0;0.0;7.83;240;19.91;220;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-02;37.0;53.1;0.0;0.0;0.0;6.71;330;17.0;300;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-03;29.1;64.0;0.0;0.0;0.0;3.36;230;12.97;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-13;44.1;59.0;0.0;0.0;0.0;7.38;50;14.09;80;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-18;23.2;43.0;0.0;0.0;0.0;5.59;270;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-20;28.2;59.0;0.0;0.0;0.0;7.38;240;21.03;250;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-11-25;48.0;64.9;0.1;0.0;0.0;5.37;220;16.11;220;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2014-11-30;36.0;66.0;0.0;0.0;0.0;8.72;230;23.04;240;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-02;46.0;55.0;0.0;0.0;0.0;6.49;50;18.12;50;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-10;31.1;50.0;0.0;0.0;0.0;5.37;300;14.99;310;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2014-12-23;37.0;46.9;0.9;0.0;0.0;2.46;90;8.95;100;12.97;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2014-12-31;26.2;46.0;0.0;0.0;0.0;1.34;50;8.95;270;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-02;41.0;54.0;0.0;0.0;0.0;2.91;230;8.95;230;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-04;48.9;69.1;0.29;0.0;0.0;10.07;240;25.95;210;38.92;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-11;17.2;48.9;0.0;0.0;0.0;0.89;80;6.93;140;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-12;36.0;48.0;1.29;0.0;0.0;2.01;130;12.97;130;18.12;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-13;31.1;44.1;0.03;0.0;0.0;11.41;40;19.91;50;27.96;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2015-01-20;39.0;66.9;0.0;0.0;0.0;6.26;230;16.11;220;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-23;35.1;41.0;0.67;0.0;0.0;6.93;60;14.09;50;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-25;29.1;55.0;0.0;0.0;0.0;4.7;230;12.97;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-01-30;29.1;48.0;0.0;0.0;0.0;8.05;300;18.12;310;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-06;17.2;42.1;0.0;0.0;0.0;4.25;230;12.97;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-24;19.2;30.2;0.09;1.42;0.0;4.47;90;16.11;90;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-02-25;18.1;46.0;0.36;1.89;1.18;4.25;170;12.08;160;16.11;Yes;No;No;No;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No +2015-03-01;28.2;35.1;0.67;0.0;1.18;3.58;220;12.08;220;14.09;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2015-03-07;20.1;57.9;0.0;0.0;0.0;6.04;230;16.11;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-12;48.9;66.0;0.0;0.0;0.0;7.83;90;17.0;90;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-15;48.0;73.0;0.0;0.0;0.0;6.26;290;16.11;310;25.05;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-01-08;39.9;66.9;0.3;0.0;0.0;9.84;210;25.05;220;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-20;26.1;48.0;0.0;0.0;0.0;4.92;290;16.11;320;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-23;32.0;50.0;0.0;0.0;0.0;2.68;20;10.07;310;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-24;30.0;48.9;0.0;0.0;0.0;2.91;50;14.09;50;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-01-26;21.9;48.9;0.0;0.0;0.0;5.82;250;17.0;250;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-03;27.0;45.0;0.0;0.0;0.0;7.83;250;17.0;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-06;15.1;39.0;0.0;0.0;0.0;6.04;190;17.0;200;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-13;37.9;50.0;0.59;0.0;0.0;6.71;10;21.03;10;25.95;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-14;28.0;53.1;0.14;0.0;0.0;8.5;220;31.99;230;40.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-15;21.9;39.9;0.0;0.0;0.0;4.47;290;12.08;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-16;23.0;39.0;0.0;0.0;0.0;4.92;300;14.99;260;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-02-22;48.9;73.9;0.0;0.0;0.0;9.62;270;27.96;310;33.11;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-03-08;30.0;55.0;0.0;0.0;0.0;6.93;50;21.92;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-13;44.1;80.1;0.0;0.0;0.0;4.47;210;14.09;210;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-16;37.9;66.0;2.14;0.0;0.0;8.05;30;16.11;340;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-03-28;61.0;86.0;0.0;0.0;0.0;5.14;110;21.03;100;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-04-09;32.0;55.9;0.0;0.0;0.0;0.89;230;12.97;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-22;48.9;84.0;0.0;0.0;0.0;5.59;190;12.97;200;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-04-30;46.9;87.1;0.0;0.0;0.0;6.49;230;17.9;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-01;59.0;91.9;0.0;0.0;0.0;6.26;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-06;46.9;66.9;0.0;0.0;0.0;13.42;30;23.94;40;31.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-13;51.1;73.0;0.0;0.0;0.0;8.72;40;21.03;50;23.94;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-05-14;44.1;75.0;0.0;0.0;0.0;4.25;190;12.97;160;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-15;53.1;82.0;0.0;0.0;0.0;10.74;220;19.91;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-19;43.0;73.0;0.0;0.0;0.0;3.58;290;12.97;280;16.11;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-20;46.9;82.9;0.0;0.0;0.0;4.92;270;17.0;270;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-21;54.0;88.0;0.0;0.0;0.0;3.36;120;17.0;120;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-05-31;64.0;91.0;0.0;0.0;0.0;6.49;180;14.09;170;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-06;60.1;84.0;0.22;0.0;0.0;4.7;270;12.97;290;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-06-09;68.0;91.9;0.39;0.0;0.0;5.59;30;36.01;30;44.07;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-06-10;69.1;87.1;0.0;0.0;0.0;6.49;100;14.99;100;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-16;57.9;82.9;0.03;0.0;0.0;4.25;230;14.99;240;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-17;64.0;89.1;0.06;0.0;0.0;3.58;10;10.07;10;14.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-18;63.0;96.1;0.0;0.0;0.0;3.13;220;12.08;220;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-20;64.9;82.9;0.2;0.0;0.0;3.13;40;12.97;40;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-06-23;66.0;84.9;0.12;0.0;0.0;3.8;90;12.97;120;14.99;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-06-25;68.0;91.0;0.0;0.0;0.0;5.37;130;14.09;130;16.11;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-07-10;72.0;95.0;0.11;0.0;0.0;5.82;240;19.91;230;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-07-11;70.0;95.0;0.82;0.0;0.0;10.07;220;36.01;210;42.95;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;Yes;No;No;No;No +2007-07-17;70.0;96.1;2.05;0.0;0.0;6.49;230;25.05;220;29.97;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-07-18;71.1;91.0;0.08;0.0;0.0;5.82;240;14.99;230;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-07-27;69.1;93.9;1.18;0.0;0.0;5.59;230;23.04;230;27.96;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-01;69.1;91.9;0.0;0.0;0.0;4.47;80;14.09;90;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-02;69.1;91.9;0.0;0.0;0.0;3.8;90;14.09;90;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-04;70.0;96.1;0.0;0.0;0.0;4.7;180;10.07;210;14.09;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-05;72.0;98.1;0.03;0.0;0.0;3.8;140;12.97;140;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-08-10;75.0;104.0;0.05;0.0;0.0;4.92;30;19.91;340;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2007-08-13;70.0;98.1;0.0;0.0;0.0;5.14;50;14.99;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-08-22;71.1;95.0;0.0;0.0;0.0;4.7;10;12.08;130;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-13;63.0;91.0;0.0;0.0;0.0;6.71;80;16.11;90;21.03;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-09-14;70.0;82.9;1.91;0.0;0.0;6.49;110;14.09;170;16.11;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2007-09-19;57.0;75.9;0.0;0.0;0.0;8.05;50;14.99;20;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-09-27;64.9;91.0;0.0;0.0;0.0;4.47;190;12.08;190;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-02;61.0;82.0;0.0;0.0;0.0;8.05;50;14.09;50;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-10-04;68.0;87.1;0.0;0.0;0.0;4.7;80;12.97;50;17.0;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-10;64.0;88.0;0.04;0.0;0.0;6.49;240;17.9;230;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-11;51.1;69.1;0.0;0.0;0.0;7.61;300;14.99;330;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-10-25;59.0;70.0;0.08;0.0;0.0;11.63;50;17.0;30;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No +2007-10-27;55.9;75.0;0.37;0.0;0.0;5.37;160;12.97;240;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-11-02;46.9;62.1;0.0;0.0;0.0;12.3;40;23.04;40;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-04;35.1;66.0;0.0;0.0;0.0;2.01;240;14.09;290;17.0;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-06;43.0;63.0;0.0;0.0;0.0;9.4;270;19.91;220;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-08;32.0;54.0;0.0;0.0;0.0;2.68;90;12.08;80;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-11;30.0;57.9;0.0;0.0;0.0;1.34;220;10.07;210;12.97;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-15;39.0;66.0;0.32;0.0;0.0;11.41;230;21.92;320;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-18;35.1;70.0;0.0;0.0;0.0;1.57;240;12.08;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-11-30;32.0;57.0;0.0;0.0;0.0;2.68;50;12.97;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-08;39.9;71.1;0.0;0.0;0.0;5.37;230;14.09;100;16.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-12;55.9;79.0;0.0;0.0;0.0;8.72;240;21.92;240;25.95;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2007-12-16;35.1;53.1;0.24;0.0;0.0;10.07;290;25.05;270;36.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2007-12-19;28.9;53.1;0.02;0.0;0.0;3.13;230;12.97;240;14.99;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2007-12-28;36.0;64.0;0.04;0.0;0.0;6.04;210;21.03;200;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-01-02;25.0;35.1;0.0;0.0;0.0;11.18;280;19.91;260;27.96;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2008-01-06;39.9;69.1;0.0;0.0;0.0;7.83;240;17.9;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-10;46.9;55.9;0.15;0.0;0.0;5.14;100;16.11;100;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-15;24.1;44.1;0.0;0.0;0.0;4.47;300;17.9;300;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-17;34.0;39.0;0.55;0.0;0.0;7.61;80;17.0;90;21.03;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2008-01-24;30.0;46.9;0.0;0.0;0.0;5.82;310;17.9;320;23.94;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-01-26;28.9;48.0;0.0;0.0;0.0;4.7;220;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-27;26.1;52.0;0.0;0.0;0.0;2.91;300;12.08;300;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-01-28;24.1;55.0;0.0;0.0;0.0;2.01;270;12.08;280;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-02;28.9;61.0;0.0;0.0;0.0;3.13;220;10.07;170;12.97;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-05;48.0;75.9;0.0;0.0;0.0;10.07;240;25.05;240;33.11;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-02-08;35.1;59.0;0.0;0.0;0.0;4.7;360;12.08;360;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-09;42.1;66.9;0.0;0.0;0.0;9.17;230;21.03;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-10;37.9;64.9;0.0;0.0;0.0;14.09;270;33.11;260;46.98;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-02-14;28.0;50.0;0.01;0.0;0.0;5.14;320;14.09;330;21.92;Yes;No;Yes;Yes;No;Yes;No;No;Yes;No;No;No;No;No;No;No;No +2008-02-26;46.9;61.0;0.47;0.0;0.0;8.72;230;23.94;230;31.09;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2008-02-29;26.1;55.9;0.0;0.0;0.0;8.5;180;19.91;210;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-07;46.0;59.0;1.02;0.0;0.0;5.59;250;17.9;250;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-03-09;28.0;52.0;0.0;0.0;0.0;5.14;300;14.09;280;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-11;37.0;64.0;0.0;0.0;0.0;5.82;220;12.08;230;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-13;37.0;75.9;0.0;0.0;0.0;6.93;220;17.0;220;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-16;46.9;63.0;0.01;0.0;0.0;7.83;320;14.99;350;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-03-21;33.1;66.9;0.0;0.0;0.0;6.71;210;16.11;210;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-03-27;46.9;77.0;0.0;0.0;0.0;13.42;230;25.95;240;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-04;45.0;73.0;0.39;0.0;0.0;7.16;240;21.92;230;27.96;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;Yes;Yes;No;No +2008-04-08;46.9;64.0;0.0;0.0;0.0;8.72;50;14.99;20;17.0;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-04-09;51.1;71.1;0.0;0.0;0.0;3.58;50;12.08;150;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-12;57.0;75.9;0.06;0.0;0.0;15.21;230;27.96;240;36.01;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-04-15;37.9;61.0;0.0;0.0;0.0;8.5;20;21.92;40;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-18;46.0;86.0;0.0;0.0;0.0;5.14;220;14.99;220;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-04-20;48.0;73.9;0.43;0.0;0.0;4.25;270;25.05;280;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-04-27;63.0;79.0;1.16;0.0;0.0;5.82;80;14.99;80;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-04-28;55.9;71.1;0.68;0.0;0.0;8.72;230;29.08;230;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-05-01;48.0;78.1;0.0;0.0;0.0;10.96;230;21.03;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-02;57.0;81.0;0.0;0.0;0.0;13.2;230;23.04;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-05-09;63.0;82.0;0.43;0.0;0.0;10.29;200;23.94;200;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-05-18;53.1;79.0;0.57;0.0;0.0;10.51;220;25.95;290;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-05-19;52.0;75.0;0.0;0.0;0.0;6.26;250;19.91;310;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-04;72.0;93.9;0.0;0.0;0.0;10.51;220;21.92;240;25.95;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-06-11;73.9;93.0;0.0;0.0;0.0;8.5;50;19.91;120;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-06-17;68.0;90.0;0.0;0.0;0.0;5.59;280;16.11;350;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-06-20;63.0;91.0;0.0;0.0;0.0;5.14;220;23.04;200;27.96;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2008-06-23;66.9;89.1;0.01;0.0;0.0;3.8;280;16.11;300;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-06-25;62.1;95.0;0.0;0.0;0.0;5.14;220;17.0;200;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-11;72.0;87.1;0.03;0.0;0.0;3.58;90;14.09;30;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2008-07-15;66.0;87.1;0.0;0.0;0.0;6.26;40;14.09;40;17.9;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2008-07-16;64.9;88.0;0.0;0.0;0.0;4.47;50;14.99;40;19.91;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-07-25;63.0;86.0;0.0;0.0;0.0;1.57;150;8.95;130;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-07-28;70.0;93.0;0.0;0.0;0.0;2.91;100;8.95;110;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-01;73.0;93.9;0.0;0.0;0.0;3.13;300;12.08;320;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-02;71.1;95.0;0.1;0.0;0.0;4.25;320;17.9;320;25.05;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2008-08-05;72.0;96.1;0.0;0.0;0.0;2.46;290;8.95;310;12.97;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-06;73.0;96.1;0.0;0.0;0.0;3.8;310;14.09;320;17.0;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2008-08-09;64.0;89.1;0.0;0.0;0.0;3.8;50;14.09;50;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-11;64.9;86.0;0.0;0.0;0.0;5.14;310;12.97;320;17.9;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-15;66.0;91.0;0.36;0.0;0.0;3.58;170;17.0;170;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-08-16;66.9;86.0;0.0;0.0;0.0;3.13;40;10.07;130;14.09;Yes;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;Yes;No;No +2008-08-25;69.1;88.0;0.0;0.0;0.0;6.04;230;12.97;230;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-08-26;72.0;81.0;0.07;0.0;0.0;5.82;80;14.99;90;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-08-30;70.0;91.0;0.64;0.0;0.0;4.47;60;29.97;60;38.03;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;Yes;Yes;No;Yes;No +2008-09-01;64.9;86.0;0.0;0.0;0.0;4.47;40;12.97;90;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-07;69.1;89.1;0.0;0.0;0.0;2.01;40;8.95;40;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-08;66.9;90.0;0.0;0.0;0.0;3.13;130;12.08;170;14.99;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-14;73.0;91.0;0.0;0.0;0.0;12.3;230;21.92;230;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-22;60.1;80.1;0.0;0.0;0.0;4.92;30;14.09;30;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-09-23;59.0;75.9;0.0;0.0;0.0;10.29;40;21.92;40;25.95;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2008-09-29;64.0;82.0;0.0;0.0;0.0;2.68;40;12.97;40;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-09-30;62.1;81.0;0.01;0.0;0.0;2.68;310;12.97;310;17.9;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2008-10-02;46.9;70.0;0.0;0.0;0.0;2.91;290;12.97;300;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-04;48.9;79.0;0.0;0.0;0.0;1.79;200;8.05;250;10.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-07;55.9;71.1;0.0;0.0;0.0;6.71;90;12.97;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-08;52.0;73.9;0.0;0.0;0.0;6.04;170;12.97;180;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-10-18;51.1;62.1;0.3;0.0;0.0;9.62;40;17.0;30;21.92;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-10-23;39.0;60.1;0.0;0.0;0.0;6.26;110;14.09;80;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-01;37.9;77.0;0.0;0.0;0.0;1.79;230;8.95;200;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-09;37.0;66.0;0.0;0.0;0.0;1.57;30;10.07;360;14.09;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-20;28.0;57.0;0.0;0.0;0.0;6.49;270;16.11;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-21;28.0;44.1;0.05;0.39;0.0;7.83;300;19.91;310;27.96;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2008-11-25;30.9;54.0;0.18;0.0;0.0;8.05;280;21.03;290;29.97;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-11-26;26.1;54.0;0.0;0.0;0.0;3.8;280;10.96;320;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-28;39.0;68.0;0.0;0.0;0.0;3.13;260;10.07;270;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-11-29;39.0;50.0;0.04;0.0;0.0;7.61;80;16.11;80;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;No;No +2008-12-05;28.0;52.0;0.0;0.0;0.0;4.7;350;12.97;360;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-08;21.9;48.0;0.0;0.0;0.0;3.8;150;8.95;140;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-11;57.0;69.1;1.4;0.0;0.0;10.29;220;27.96;190;34.9;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2008-12-14;28.0;57.0;0.0;0.0;0.0;2.24;160;12.08;160;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-16;44.1;61.0;0.02;0.0;0.0;7.16;50;21.03;40;27.96;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2008-12-21;35.1;60.1;0.6;0.0;0.0;9.84;250;25.05;280;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-24;37.9;66.9;0.0;0.0;0.0;7.38;210;25.05;200;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2008-12-25;37.9;66.0;0.31;0.0;0.0;3.8;220;23.94;210;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2008-12-28;57.0;73.9;0.23;0.0;0.0;12.75;220;27.96;220;31.99;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-01-04;43.0;55.9;0.62;0.0;0.0;4.03;230;12.08;250;14.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2009-01-12;30.0;48.0;0.0;0.0;0.0;3.58;360;12.97;30;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-15;21.9;44.1;0.0;0.0;0.0;7.61;360;14.09;30;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-18;32.0;41.0;0.0;0.0;0.0;10.51;210;17.0;220;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-01-21;12.9;35.1;0.0;0.0;2.01;4.7;240;12.97;270;17.0;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-01-22;21.9;48.9;0.0;0.0;0.0;5.82;230;14.09;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-01-24;36.0;57.0;0.0;0.0;0.0;5.59;30;12.08;30;14.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-02-05;19.0;34.0;0.0;0.0;0.0;6.04;300;14.09;340;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-07;30.9;71.1;0.0;0.0;0.0;6.71;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-13;41.0;68.0;0.0;0.0;0.0;6.93;290;21.92;320;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-02-22;30.9;50.0;0.01;0.0;0.0;10.96;270;21.92;300;33.11;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-02-25;25.0;55.9;0.0;0.0;0.0;3.8;200;12.08;210;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-09;55.0;84.0;0.0;0.0;0.0;8.72;270;19.91;270;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-16;46.9;51.1;0.41;0.0;0.0;3.8;80;12.08;80;14.09;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-03-19;45.0;75.9;0.64;0.0;0.0;10.07;310;21.03;310;33.11;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-03-22;30.9;66.9;0.0;0.0;0.0;3.36;210;10.07;170;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-03-24;41.0;57.9;0.0;0.0;0.0;8.28;90;16.11;80;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-06;48.0;71.1;0.46;0.0;0.0;11.18;280;19.91;290;31.09;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-04-22;46.9;64.9;0.0;0.0;0.0;8.28;300;29.08;300;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-04-24;52.0;89.1;0.0;0.0;0.0;6.93;200;16.11;200;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-04;66.9;87.1;0.29;0.0;0.0;14.54;220;25.95;220;31.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-05-07;66.0;84.0;0.1;0.0;0.0;9.4;230;19.91;230;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-05-10;63.0;80.1;0.0;0.0;0.0;3.36;280;10.07;310;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-20;44.1;79.0;0.0;0.0;0.0;7.61;100;14.09;100;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-21;60.1;82.0;0.0;0.0;0.0;6.71;80;14.99;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-05-28;68.0;86.0;0.65;0.0;0.0;5.82;240;25.95;240;34.9;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2009-06-05;64.9;80.1;0.13;0.0;0.0;7.38;200;17.9;190;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;Yes;No;Yes;No +2009-06-09;66.0;93.9;0.82;0.0;0.0;7.16;40;23.04;40;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2009-06-12;66.9;91.0;0.0;0.0;0.0;6.04;260;14.99;290;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-06-25;64.0;95.0;0.0;0.0;0.0;2.24;260;10.07;260;14.09;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-06-28;63.0;91.9;0.0;0.0;0.0;4.03;240;14.09;280;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-05;70.0;82.0;0.03;0.0;0.0;2.91;50;8.95;80;10.07;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;Yes;No;Yes;No +2009-07-07;64.0;91.0;0.0;0.0;0.0;2.68;50;8.95;50;8.95;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-16;73.9;91.0;0.0;0.0;0.0;8.95;230;19.91;110;27.96;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-07-18;71.1;86.0;0.06;0.0;0.0;4.03;360;12.08;130;23.94;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-07-21;68.0;88.0;0.0;0.0;0.0;3.13;170;8.05;170;10.07;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2009-07-25;66.9;96.1;0.0;0.0;0.0;4.92;200;25.05;90;40.04;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2009-07-28;69.1;95.0;0.0;0.0;0.0;6.71;190;27.96;190;36.01;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-08-01;73.0;91.9;0.0;0.0;0.0;5.82;220;10.07;;;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-08-10;72.0;99.0;0.0;0.0;0.0;6.71;240;17.9;220;23.04;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2009-08-18;72.0;96.1;0.0;0.0;0.0;7.61;230;17.9;250;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-01;61.0;79.0;0.0;0.0;0.0;9.4;40;21.03;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-02;57.0;79.0;0.0;0.0;0.0;8.5;40;17.0;40;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-05;57.0;89.1;0.0;0.0;0.0;3.36;70;12.08;150;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-12;60.1;87.1;0.0;0.0;0.0;3.13;270;12.08;30;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-16;66.9;79.0;0.05;0.0;0.0;4.7;40;14.09;40;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-09-20;62.1;78.1;0.0;0.0;0.0;6.93;80;14.99;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-09-28;55.0;86.0;0.22;0.0;0.0;8.28;290;25.95;260;42.95;Yes;No;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No +2009-10-07;57.9;82.9;0.0;0.0;0.0;9.17;280;19.91;280;31.09;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-10-09;55.9;82.9;0.0;0.0;0.0;10.29;220;17.9;210;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-10-12;53.1;60.1;0.19;0.0;0.0;5.14;150;10.07;340;14.99;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2009-10-13;52.0;77.0;0.0;0.0;0.0;2.91;320;8.95;350;14.99;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2009-10-25;46.9;60.1;0.0;0.0;0.0;5.14;40;12.97;30;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-07;33.1;66.0;0.0;0.0;0.0;5.59;240;16.11;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-08;42.1;75.9;0.0;0.0;0.0;2.91;270;8.05;90;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-11-12;46.0;48.0;0.58;0.0;0.0;14.09;20;21.92;30;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-11-25;46.9;55.9;0.01;0.0;0.0;2.68;230;8.95;230;12.08;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-11-28;28.9;57.9;0.0;0.0;0.0;3.36;230;12.08;330;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2009-12-04;34.0;55.9;0.0;0.0;0.0;2.24;60;10.07;40;12.97;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2009-12-13;36.0;42.1;0.29;0.0;0.0;2.91;250;8.95;90;12.97;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2009-12-26;39.0;53.1;0.0;0.0;0.0;6.71;320;10.07;320;10.07;Yes;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2009-12-28;30.9;46.0;0.0;0.0;0.0;8.05;260;16.11;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-02;21.9;32.0;0.0;0.0;0.0;9.62;300;19.91;290;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-11;15.1;45.0;0.0;0.0;0.0;3.8;230;16.11;240;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-13;19.0;46.0;0.0;0.0;0.0;1.79;250;8.95;240;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-15;28.0;63.0;0.0;0.0;0.0;2.01;240;8.05;230;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-17;45.0;68.0;1.46;0.0;0.0;7.38;110;21.03;110;27.96;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-01-21;37.0;41.0;0.65;0.0;0.0;9.84;60;17.0;40;21.92;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;Yes;No;No;No +2010-01-28;30.0;63.0;0.0;0.0;0.0;5.82;270;17.0;280;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-01-30;19.0;28.0;0.61;3.58;2.99;10.29;40;21.92;30;27.96;Yes;No;Yes;Yes;No;Yes;No;No;Yes;No;No;Yes;No;No;No;No;No +2010-02-06;30.0;37.0;0.02;0.0;0.0;6.26;40;12.97;20;19.91;Yes;No;Yes;Yes;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No +2010-02-18;28.0;50.0;0.0;0.0;0.0;6.71;300;16.11;290;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-23;39.9;53.1;0.0;0.0;0.0;2.68;10;8.95;340;12.97;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-02-25;30.0;42.1;0.0;0.12;0.0;8.5;300;17.9;320;29.08;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-03-04;36.0;51.1;0.0;0.0;0.0;5.59;310;14.09;310;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-06;28.9;55.9;0.0;0.0;0.0;2.46;10;14.09;10;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-07;24.1;63.0;0.0;0.0;0.0;2.24;230;12.97;250;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-18;45.0;68.0;0.0;0.0;0.0;2.01;30;14.09;20;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-22;44.1;66.0;0.0;0.0;0.0;14.54;230;25.95;220;31.99;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-03-23;39.0;66.0;0.01;0.0;0.0;11.63;270;21.92;290;29.97;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-03-24;39.0;73.9;0.0;0.0;0.0;4.7;270;14.99;270;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-03-25;48.9;75.9;0.0;0.0;0.0;9.62;220;21.03;230;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-03-27;32.0;57.9;0.0;0.0;0.0;6.04;120;14.99;120;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-09;46.0;66.0;0.61;0.0;0.0;5.82;250;19.91;300;25.05;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-04-13;51.1;79.0;0.0;0.0;0.0;6.93;60;21.03;80;25.95;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-04-19;39.9;68.0;0.0;0.0;0.0;3.36;310;12.97;360;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-22;44.1;75.0;0.0;0.0;0.0;2.91;280;12.97;280;17.9;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-04-27;50.0;68.0;0.0;0.0;0.0;7.61;290;17.0;250;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-03;72.0;78.1;0.0;0.0;0.0;11.41;230;21.03;220;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-05-09;48.9;68.0;0.0;0.0;0.0;6.93;270;17.0;340;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-05-23;64.9;80.1;1.08;0.0;0.0;3.36;240;14.99;100;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2010-05-25;64.0;78.1;0.0;0.0;0.0;7.38;40;17.9;40;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-06-04;70.0;91.9;0.0;0.0;0.0;7.61;230;17.9;220;23.04;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2010-06-05;73.0;91.9;0.0;0.0;0.0;7.83;230;17.0;240;21.92;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-06-13;72.0;96.1;1.23;0.0;0.0;5.59;250;23.04;240;31.09;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;No;No +2010-06-16;73.0;91.0;0.16;0.0;0.0;4.92;250;19.91;240;23.94;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;Yes;No;Yes;No +2010-06-23;73.0;97.0;0.05;0.0;0.0;4.7;300;17.0;320;29.97;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2010-06-24;73.0;99.0;0.0;0.0;0.0;5.14;230;17.9;230;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-01;64.0;81.0;0.0;0.0;0.0;5.37;40;14.99;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-02;57.9;82.9;0.0;0.0;0.0;3.8;50;14.99;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-06;66.0;100.9;0.0;0.0;0.0;3.8;230;12.97;210;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-07-08;73.0;99.0;0.01;0.0;0.0;4.7;100;16.11;100;19.91;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2010-07-12;73.9;87.1;0.14;0.0;0.0;6.49;170;14.99;170;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-07-14;72.0;91.9;0.23;0.0;0.0;3.36;30;12.08;40;14.99;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-07-16;77.0;97.0;0.0;0.0;0.0;9.62;230;17.0;230;21.92;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;Yes;No +2010-07-23;75.9;100.0;0.0;0.0;0.0;5.82;230;17.0;240;23.04;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-07-29;73.9;97.0;0.46;0.0;0.0;5.59;40;21.92;40;25.95;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2010-08-06;72.0;91.9;0.0;0.0;0.0;3.8;260;12.08;270;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-08-12;75.9;97.0;0.05;0.0;0.0;4.25;60;12.97;250;17.0;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2010-08-27;66.9;91.0;0.0;0.0;0.0;2.91;90;8.95;80;12.97;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;Yes;No +2010-09-02;66.0;89.1;0.0;0.0;0.0;4.7;50;14.09;40;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-09;57.9;91.9;0.0;0.0;0.0;3.58;280;14.09;270;21.03;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2010-09-16;68.0;93.9;0.0;0.0;0.0;11.86;230;25.05;250;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-04;53.1;68.0;0.0;0.0;0.0;4.92;40;16.11;360;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-10;52.0;87.1;0.0;0.0;0.0;2.01;230;8.05;250;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-19;54.0;79.0;0.0;0.0;0.0;3.13;220;8.95;220;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-23;39.0;73.9;0.0;0.0;0.0;2.68;240;12.97;230;16.11;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No +2010-10-26;64.0;81.0;0.53;0.0;0.0;10.07;190;17.9;190;23.94;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;Yes;No;Yes;No;No;No +2010-10-28;61.0;82.0;0.0;0.0;0.0;6.71;230;14.99;220;17.9;No;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-10-31;44.1;75.0;0.0;0.0;0.0;4.7;50;14.09;40;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-04;48.0;54.0;0.72;0.0;0.0;2.24;340;8.05;340;14.09;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;Yes;Yes;No;No +2010-11-06;37.9;53.1;0.16;0.0;0.0;3.36;30;16.11;40;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-11-08;30.9;66.9;0.0;0.0;0.0;3.13;270;16.11;270;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-14;32.0;70.0;0.0;0.0;0.0;2.01;190;8.05;200;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-20;39.9;69.1;0.0;0.0;0.0;3.8;230;16.11;250;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-11-22;43.0;73.0;0.0;0.0;0.0;4.25;240;16.11;230;21.92;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No +2010-11-25;41.0;61.0;0.0;0.0;0.0;4.03;220;10.07;220;14.09;Yes;Yes;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No +2010-11-30;48.9;72.0;0.01;0.0;0.0;11.86;170;25.05;170;33.11;Yes;No;No;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No +2010-12-15;16.0;37.0;0.0;0.0;0.0;5.59;280;12.97;280;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-20;25.0;42.1;0.0;0.0;0.0;4.03;280;14.09;290;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2010-12-26;26.1;33.1;0.5;6.69;2.99;7.16;10;16.11;30;25.95;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2010-12-28;19.0;46.9;0.0;0.0;2.01;4.7;260;14.99;300;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-03;26.1;45.0;0.0;0.0;0.0;2.01;40;10.07;30;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-07;30.9;46.0;0.0;0.0;0.0;5.37;230;17.9;230;23.04;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-10;26.1;34.0;0.12;0.31;0.0;4.7;40;14.09;40;17.0;Yes;No;No;Yes;No;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No +2011-01-11;28.0;32.0;0.08;0.0;0.0;5.82;240;12.97;250;19.91;Yes;No;No;Yes;No;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No +2011-01-23;16.0;46.0;0.0;0.0;0.0;2.24;290;10.07;270;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-01-25;30.0;51.1;0.17;0.0;0.0;2.91;90;14.09;90;17.9;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-01-31;35.1;46.9;0.0;0.0;0.0;9.4;50;19.91;40;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-03;32.0;44.1;0.0;0.0;0.0;5.14;360;12.08;10;17.9;No;No;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2011-02-04;33.1;37.0;0.45;0.0;0.0;3.13;80;8.95;70;12.97;Yes;No;Yes;Yes;No;Yes;No;Yes;No;No;No;No;No;No;No;No;No +2011-02-10;26.1;46.0;0.03;0.39;0.0;4.25;30;14.09;330;19.91;Yes;No;Yes;No;No;Yes;No;No;Yes;No;No;No;No;No;No;No;No +2011-02-17;39.9;71.1;0.0;0.0;0.0;7.61;210;17.9;220;25.05;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-02-22;33.1;64.9;0.0;0.0;0.0;9.17;20;21.92;20;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-01;39.9;57.0;0.0;0.0;0.0;9.17;40;23.94;40;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-07;34.0;54.0;0.0;0.0;0.0;5.82;50;16.11;60;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-09;39.0;61.0;0.23;0.0;0.0;8.72;130;17.9;120;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-15;42.1;55.9;0.1;0.0;0.0;8.05;90;16.11;80;21.03;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-25;42.1;57.0;0.0;0.0;0.0;3.58;360;12.08;30;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-03-26;39.0;50.0;0.34;0.0;0.0;8.05;60;14.09;40;19.91;Yes;No;Yes;Yes;No;No;No;Yes;No;No;Yes;No;No;No;No;No;No +2011-03-29;28.9;62.1;0.0;0.0;0.0;1.34;230;10.07;260;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-09;48.0;57.0;1.04;0.0;0.0;5.59;150;23.04;160;29.97;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-04-11;60.1;84.0;0.0;0.0;0.0;11.63;210;23.04;220;29.97;Yes;No;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-04-14;43.0;75.0;0.0;0.0;0.0;2.01;50;10.07;310;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-15;48.9;75.9;0.0;0.0;0.0;9.62;110;19.91;130;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-04-18;50.0;80.1;0.0;0.0;0.0;10.07;220;21.92;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-05-04;50.0;71.1;0.67;0.0;0.0;5.82;340;17.0;330;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-05-29;70.0;89.1;0.0;0.0;0.0;4.92;250;10.07;220;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-01;70.0;95.0;0.0;0.0;0.0;2.46;80;8.05;150;14.09;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-06-07;64.0;93.0;0.0;0.0;0.0;3.13;240;12.08;270;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-15;57.9;82.9;0.0;0.0;0.0;3.58;40;12.97;30;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-19;66.0;91.9;0.0;0.0;0.0;5.59;280;12.97;290;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-21;71.1;95.0;0.0;0.0;0.0;4.92;170;17.0;170;23.94;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-06-22;72.0;96.1;0.0;0.0;0.0;9.4;230;23.04;250;34.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-23;73.9;91.9;0.0;0.0;0.0;11.18;240;25.95;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-06-28;72.0;99.0;0.29;0.0;0.0;8.05;240;25.05;80;29.08;Yes;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-03;72.0;97.0;0.0;0.0;0.0;8.5;230;16.11;210;25.95;No;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-04;70.0;99.0;1.38;0.0;0.0;9.17;330;17.9;290;29.08;Yes;No;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-07-05;70.0;91.9;0.0;0.0;0.0;3.8;220;14.99;230;17.9;Yes;No;Yes;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-07;70.0;93.9;0.06;0.0;0.0;5.82;260;16.11;200;25.05;Yes;No;No;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-07-18;68.0;93.9;0.0;0.0;0.0;6.26;230;12.97;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-07-26;73.0;93.0;0.0;0.0;0.0;4.7;110;12.97;130;16.11;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2011-08-03;73.0;98.1;0.0;0.0;0.0;4.7;230;17.9;220;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-10;70.0;93.9;0.0;0.0;0.0;3.58;230;16.11;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-11;71.1;89.1;0.0;0.0;0.0;2.46;140;8.95;170;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-14;64.9;87.1;1.08;0.0;0.0;5.37;260;23.94;280;36.91;Yes;No;Yes;Yes;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2011-08-17;64.0;89.1;0.0;0.0;0.0;2.91;110;12.08;140;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-18;69.1;89.1;0.0;0.0;0.0;3.36;180;12.08;180;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-22;70.0;89.1;0.0;0.0;0.0;5.37;230;14.09;230;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-25;72.0;91.0;0.0;0.0;0.0;7.61;220;16.11;210;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-28;69.1;91.9;0.0;0.0;0.0;4.92;270;14.09;280;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-08-29;66.9;90.0;1.36;0.0;0.0;4.7;30;25.05;30;34.9;Yes;Yes;No;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2011-08-31;62.1;82.9;0.0;0.0;0.0;4.25;60;8.95;120;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-03;69.1;87.1;0.0;0.0;0.0;3.13;160;8.95;180;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-10;64.0;87.1;0.0;0.0;0.0;1.57;360;8.05;330;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-09-14;66.0;89.1;0.0;0.0;0.0;2.46;230;12.08;220;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-01;46.9;64.0;0.0;0.0;0.0;6.71;260;16.11;320;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-03;42.1;68.0;0.0;0.0;0.0;4.03;290;12.97;300;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-11;62.1;66.9;0.32;0.0;0.0;8.05;50;21.03;40;27.96;No;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-10-15;46.9;73.9;0.0;0.0;0.0;4.7;270;17.0;280;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-16;44.1;77.0;0.0;0.0;0.0;6.26;230;17.0;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-22;43.0;66.9;0.0;0.0;0.0;2.01;40;8.95;50;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-27;54.0;77.0;0.0;0.0;0.0;10.74;230;21.03;220;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-29;34.0;54.0;0.87;0.0;0.0;5.37;320;16.11;320;25.95;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-10-31;34.0;55.9;0.27;0.0;0.0;3.13;40;10.07;40;14.09;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-05;37.9;55.0;0.0;0.0;0.0;8.28;60;17.9;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-08;39.9;70.0;0.0;0.0;0.0;0.89;50;8.05;40;12.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-16;62.1;79.0;0.0;0.0;0.0;11.63;220;21.92;210;29.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-11-17;34.0;62.1;0.54;0.0;0.0;6.93;40;23.04;30;29.97;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-11-24;37.9;64.0;0.0;0.0;0.0;0.89;340;8.05;20;10.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-11-26;39.0;70.0;0.0;0.0;0.0;4.92;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-04;30.9;64.0;0.0;0.0;0.0;0.67;170;6.93;90;8.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-11;30.0;46.9;0.0;0.0;0.0;6.26;70;16.11;90;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-14;39.0;60.1;0.0;0.0;0.0;2.24;150;6.93;170;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-15;43.0;68.0;0.0;0.0;0.0;8.95;230;25.05;230;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-21;55.0;64.9;0.25;0.0;0.0;9.62;210;21.03;200;29.08;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2011-12-23;45.0;68.0;0.0;0.0;0.0;7.61;200;25.95;200;36.01;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-26;34.0;54.0;0.0;0.0;0.0;3.36;50;12.08;10;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2011-12-28;37.9;53.1;0.0;0.0;0.0;6.49;270;17.0;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-05;30.0;55.0;0.0;0.0;0.0;3.58;280;14.09;240;17.9;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-19;27.0;48.9;0.0;0.0;0.0;6.26;240;14.99;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-22;32.0;37.0;0.0;0.0;0.0;8.05;40;17.9;40;23.04;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-01-23;36.0;53.1;0.0;0.0;0.0;4.03;180;8.95;190;12.97;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-01-27;46.0;69.1;0.22;0.0;0.0;11.18;230;31.09;220;40.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-02;48.9;69.1;0.02;0.0;0.0;6.71;300;14.09;320;23.94;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-02-04;37.9;55.0;0.23;0.0;0.0;4.03;230;14.09;230;16.11;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-13;21.9;52.0;0.0;0.0;0.0;3.36;230;14.99;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-02-19;33.1;54.0;0.71;0.91;0.0;10.51;40;23.04;50;31.09;Yes;No;Yes;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2012-02-20;30.0;48.9;0.0;0.0;0.98;5.14;50;17.0;10;25.05;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No +2012-02-27;33.1;48.9;0.24;0.0;0.0;2.01;250;8.95;240;12.08;Yes;Yes;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-02-29;48.0;71.1;0.05;0.0;0.0;9.84;230;25.05;230;31.99;Yes;No;Yes;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-03-07;34.0;70.0;0.0;0.0;0.0;7.16;220;19.91;210;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-12;42.1;73.0;0.0;0.0;0.0;8.28;220;19.91;240;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-26;53.1;77.0;0.03;0.0;0.0;5.82;40;17.9;40;23.94;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-29;55.9;82.9;0.0;0.0;0.0;6.04;280;17.0;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-03-31;59.0;75.9;0.27;0.0;0.0;6.26;80;17.9;80;21.92;No;No;Yes;Yes;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2012-04-06;39.9;63.0;0.05;0.0;0.0;6.93;40;19.91;20;27.96;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-21;55.0;80.1;0.24;0.0;0.0;5.82;20;14.99;200;19.91;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-22;48.0;62.1;0.82;0.0;0.0;8.28;50;17.0;30;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-04-23;39.9;51.1;0.01;0.0;0.0;6.71;290;17.0;290;29.08;No;No;No;Yes;No;No;No;Yes;No;No;No;No;No;No;No;No;No +2012-04-25;39.9;68.0;0.03;0.0;0.0;6.71;230;17.9;240;25.05;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-11;46.9;73.9;0.0;0.0;0.0;2.46;40;12.97;30;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-19;54.0;77.0;0.0;0.0;0.0;6.04;40;17.9;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-26;66.0;86.0;0.0;0.0;0.0;6.93;80;14.99;80;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-28;72.0;90.0;0.0;0.0;0.0;4.7;200;23.04;200;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-05-30;64.0;82.0;0.39;0.0;0.0;4.7;30;17.0;30;23.04;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-04;61.0;82.9;0.0;0.0;0.0;4.92;280;14.99;290;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-06;57.0;73.9;0.04;0.0;0.0;4.47;100;12.97;90;17.0;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-07;54.0;81.0;0.0;0.0;0.0;1.12;250;8.05;240;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-08;57.0;84.0;0.0;0.0;0.0;2.24;40;12.08;20;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-09;57.0;89.1;0.0;0.0;0.0;4.7;230;14.99;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-11;71.1;84.0;1.06;0.0;0.0;7.38;200;17.0;210;23.94;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-14;57.0;79.0;0.0;0.0;0.0;6.71;50;17.0;40;21.03;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No +2012-06-20;69.1;93.9;0.0;0.0;0.0;3.13;160;12.08;150;14.09;Yes;No;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-23;43.0;57.9;0.0;0.0;0.0;8.5;50;17.0;60;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-26;57.0;75.0;0.13;0.0;0.0;10.51;230;25.95;220;31.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-03-27;39.9;66.0;0.18;0.0;0.0;8.28;50;23.94;40;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-03-31;35.1;73.9;0.0;0.0;0.0;9.17;230;29.08;260;36.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-05;33.1;68.0;0.0;0.0;0.0;4.7;230;16.11;200;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-06;52.0;75.9;0.0;0.0;0.0;7.61;220;18.12;210;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-10;64.9;84.0;0.0;0.0;0.0;13.65;230;29.97;230;36.91;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2015-04-13;50.0;80.1;0.0;0.0;0.0;6.04;180;14.99;160;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-22;44.1;77.0;0.0;0.0;0.0;9.62;230;25.05;230;35.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-04-23;48.9;68.0;0.0;0.0;0.0;6.71;250;19.91;230;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-07;57.9;82.0;0.0;0.0;0.0;7.61;40;18.12;30;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-08;57.0;81.0;0.0;0.0;0.0;7.83;80;18.12;90;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-11;69.1;87.1;0.14;0.0;0.0;8.5;190;19.91;190;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-12;68.0;87.1;0.0;0.0;0.0;8.05;240;17.0;240;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-05-26;64.9;89.1;0.0;0.0;0.0;8.05;170;18.12;200;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-02;66.9;82.0;0.15;0.0;0.0;3.8;260;10.07;240;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-03;63.0;68.0;0.02;0.0;0.0;7.16;50;14.99;50;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-05;60.1;78.1;0.01;0.0;0.0;3.58;90;10.07;90;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-08;64.9;89.1;0.0;0.0;0.0;11.18;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-10;66.9;88.0;0.25;0.0;0.0;4.47;70;12.08;300;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-12;71.1;90.0;0.0;0.0;0.0;8.05;230;18.12;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-15;72.0;99.0;0.0;0.0;0.0;3.13;250;10.07;30;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-19;72.0;95.0;0.23;0.0;0.0;4.7;100;14.09;110;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-21;73.0;95.0;0.0;0.0;0.0;6.49;230;14.99;260;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-06-27;70.0;88.0;0.99;0.0;0.0;8.28;210;18.12;210;29.97;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-06-29;60.1;88.0;0.0;0.0;0.0;3.8;50;12.97;120;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-05;69.1;90.0;0.79;0.0;0.0;6.04;240;29.08;230;44.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-07-07;70.0;91.0;0.0;0.0;0.0;6.26;230;14.09;240;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-10;73.0;93.9;0.0;0.0;0.0;4.92;250;12.97;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-07-18;73.9;93.0;0.02;0.0;0.0;7.61;190;14.09;320;21.03;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2015-08-03;69.1;95.0;0.0;0.0;0.0;6.26;220;14.99;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-09;64.0;89.1;0.0;0.0;0.0;2.01;110;8.95;160;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-14;64.9;88.0;0.0;0.0;0.0;3.36;80;12.97;140;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-27;64.9;84.0;0.0;0.0;0.0;6.49;60;14.99;30;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-28;60.1;87.1;0.0;0.0;0.0;4.25;80;12.97;100;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-29;60.1;86.0;0.0;0.0;0.0;2.01;110;12.08;140;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-08-31;66.9;77.0;1.75;0.0;0.0;2.24;30;18.12;20;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-03;69.1;91.0;0.0;0.0;0.0;0.45;340;6.93;20;8.95;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-04;68.0;91.9;0.0;0.0;0.0;2.68;50;23.04;50;29.08;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2015-09-23;63.0;77.0;0.0;0.0;0.0;9.17;50;17.0;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-09-26;64.0;69.1;1.02;0.0;0.0;12.3;50;18.12;50;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-05;55.9;60.1;0.12;0.0;0.0;11.18;40;18.12;30;29.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-06;51.1;73.0;0.0;0.0;0.0;5.14;40;16.11;50;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-12;51.1;78.1;0.0;0.0;0.0;2.91;230;12.97;220;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-19;32.0;60.1;0.0;0.0;0.0;1.79;60;10.07;50;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-20;34.0;70.0;0.0;0.0;0.0;2.91;250;10.07;240;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-26;52.0;64.0;0.0;0.0;0.0;9.84;50;18.12;40;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-10-28;63.0;73.0;0.46;0.0;0.0;10.29;170;17.0;170;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-06;64.9;75.9;0.0;0.0;0.0;9.62;240;23.94;210;29.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-16;36.0;64.9;0.0;0.0;0.0;0.67;230;8.05;220;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-20;39.9;62.1;0.0;0.0;0.0;3.13;40;14.99;360;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-11-22;36.0;52.0;0.0;0.0;0.0;3.36;30;12.97;10;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-05;29.1;55.9;0.0;0.0;0.0;3.8;50;14.99;30;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-06;29.1;60.1;0.0;0.0;0.0;1.12;340;6.04;330;8.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-07;41.0;57.9;0.0;0.0;0.0;1.34;220;6.93;140;10.07;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-13;50.0;73.0;0.0;0.0;0.0;2.91;220;10.07;210;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-14;62.1;75.0;0.04;0.0;0.0;10.74;230;23.04;230;29.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2015-12-31;51.1;66.0;0.47;0.0;0.0;4.47;220;14.09;200;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-02;32.0;52.0;0.0;0.0;0.0;2.24;240;8.95;250;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-04;29.1;43.0;0.0;0.0;0.0;4.7;40;16.11;10;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-08;39.9;46.9;0.04;0.0;0.0;4.03;40;12.08;50;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-09;45.0;54.0;0.18;0.0;0.0;5.82;70;21.03;80;27.96;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-14;27.1;60.1;0.0;0.0;0.0;5.82;230;16.11;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-17;29.1;42.1;0.13;0.0;0.0;4.47;30;12.97;;;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-27;39.9;52.0;0.0;0.0;0.0;4.92;40;14.09;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-01-28;34.0;45.0;0.0;0.0;0.0;2.01;120;6.93;130;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-02;48.9;60.1;0.0;0.0;0.0;8.28;120;18.12;110;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-06;26.2;48.0;0.0;0.0;0.0;2.01;30;8.95;150;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-10;24.3;39.9;0.0;0.0;0.0;7.38;300;16.11;290;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-02-15;23.2;35.1;0.33;0.2;0.0;4.03;60;12.08;140;14.99;Yes;Yes;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2016-03-22;32.0;66.0;0.0;0.0;0.0;6.71;220;23.04;220;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-03-25;64.0;75.9;0.04;0.0;0.0;9.84;220;21.03;240;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-07;53.1;69.1;0.09;0.0;0.0;14.32;230;31.99;230;38.92;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-04-08;41.0;63.0;0.0;0.0;0.0;4.92;250;16.11;250;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-20;57.0;75.0;0.0;0.0;0.0;9.4;80;19.91;80;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-04-28;64.0;84.9;0.24;0.0;0.0;5.59;210;23.94;210;33.11;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-01;59.0;77.0;0.18;0.0;0.0;7.83;190;14.99;210;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-03;63.0;79.0;0.44;0.0;0.0;4.47;210;14.99;210;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;Yes;No;No;No +2016-05-08;60.1;82.0;0.0;0.0;0.0;6.71;290;17.0;290;27.96;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-09;57.9;81.0;0.12;0.0;0.0;1.34;240;6.93;240;10.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-15;48.0;66.9;0.0;0.0;0.0;5.14;250;17.0;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-23;51.1;68.0;0.02;0.0;0.0;2.68;50;14.09;40;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-05-29;64.9;75.9;1.95;0.0;0.0;5.59;210;14.99;200;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-05-31;70.0;84.9;0.0;0.0;0.0;5.37;60;16.11;40;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-05;70.0;89.1;0.69;0.0;0.0;10.96;210;42.95;220;59.06;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-06-06;71.1;82.0;0.04;0.0;0.0;8.72;230;16.11;230;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-07;66.9;88.0;0.05;0.0;0.0;5.82;320;12.97;260;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-20;55.9;88.0;0.0;0.0;0.0;3.8;240;10.07;240;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-21;66.9;91.0;0.0;0.0;0.0;10.07;230;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-25;71.1;84.9;0.0;0.0;0.0;6.26;50;16.11;60;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-06-28;71.1;78.1;1.25;0.0;0.0;4.7;230;12.08;200;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-05;73.0;95.0;0.42;0.0;0.0;6.71;240;31.09;240;38.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-07;73.0;93.0;0.06;0.0;0.0;7.61;240;23.04;260;31.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-17;68.0;90.0;0.0;0.0;0.0;4.03;210;14.09;220;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-20;70.0;89.1;0.0;0.0;0.0;4.92;40;12.97;90;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-21;70.0;90.0;0.0;0.0;0.0;4.03;150;8.95;120;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-23;72.0;95.0;0.0;0.0;0.0;4.47;210;12.08;220;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-25;77.0;96.1;0.0;0.0;0.0;8.72;220;14.99;210;19.91;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-07-27;75.9;95.0;0.0;0.0;0.0;2.01;40;10.07;350;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-28;73.9;96.1;0.0;0.0;0.0;7.16;250;19.91;240;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-07-31;72.0;96.1;0.13;0.0;0.0;6.93;150;21.92;150;27.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-02;73.0;91.0;0.28;0.0;0.0;4.03;130;14.09;90;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-05;73.0;88.0;0.18;0.0;0.0;3.8;230;12.08;230;14.99;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-08-09;75.0;91.0;0.0;0.0;0.0;5.59;150;19.91;150;25.95;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-08-10;73.0;91.9;0.0;0.0;0.0;5.37;180;12.97;150;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-11;73.9;91.9;0.0;0.0;0.0;4.03;150;12.08;160;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-17;75.0;97.0;0.0;0.0;0.0;7.61;230;27.96;220;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-19;75.0;91.0;0.38;0.0;0.0;2.68;40;12.97;40;14.99;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2016-08-23;64.9;89.1;0.0;0.0;0.0;4.47;80;12.97;80;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-08-28;71.1;90.0;0.0;0.0;0.0;7.61;40;14.99;50;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-03;64.0;81.0;0.44;0.0;0.0;7.83;50;23.04;30;27.96;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-09-04;61.0;82.9;0.0;0.0;0.0;4.25;40;14.99;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-17;66.0;89.1;0.0;0.0;0.0;3.58;120;10.07;150;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-09-19;71.1;79.0;1.3;0.0;0.0;5.59;310;14.09;280;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2016-09-20;71.1;75.0;0.02;0.0;0.0;7.38;30;14.09;20;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-07;64.9;73.9;0.36;0.0;0.0;9.4;90;18.12;100;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-13;48.0;79.0;0.0;0.0;0.0;2.68;250;10.07;240;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-15;52.0;72.0;0.0;0.0;0.0;2.68;50;10.07;130;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-21;55.9;78.1;0.0;0.0;0.0;7.61;320;18.12;310;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-27;46.9;75.0;0.14;0.0;0.0;6.71;220;19.91;230;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-29;48.0;78.1;0.0;0.0;0.0;4.7;240;14.09;250;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-30;55.9;84.0;0.0;0.0;0.0;4.92;280;14.09;300;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-10-31;54.0;71.1;0.0;0.0;0.0;6.04;80;18.12;80;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-02;50.0;79.0;0.0;0.0;0.0;3.36;230;10.07;220;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-07;37.9;64.0;0.0;0.0;0.0;3.8;40;16.11;40;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-15;37.0;64.0;0.0;0.0;0.0;1.79;230;8.95;280;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-16;35.1;69.1;0.0;0.0;0.0;1.34;290;10.07;260;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-11-26;32.0;57.9;0.0;0.0;0.0;4.92;20;14.09;330;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-12-04;41.0;46.9;0.32;0.0;0.0;3.58;60;8.95;80;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-12;37.0;62.1;0.03;0.0;0.0;5.37;230;12.97;230;16.11;Yes;Yes;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2016-12-13;37.9;55.0;0.0;0.0;0.0;2.68;40;10.07;150;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-18;43.0;75.0;0.22;0.0;0.0;11.41;240;25.95;240;34.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-23;29.1;53.1;0.0;0.0;0.0;2.91;100;12.97;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-26;46.9;60.1;0.04;0.0;0.0;4.92;70;12.97;60;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2016-12-28;36.0;60.1;0.0;0.0;0.0;2.91;10;8.95;20;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-07;20.1;32.0;0.6;0.51;0.0;9.62;40;21.03;40;31.99;Yes;No;No;No;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No +2017-01-09;9.1;31.1;0.0;0.0;1.18;2.46;230;8.95;230;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-16;44.1;51.1;0.0;0.0;0.0;4.47;80;12.08;100;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-17;46.9;62.1;0.04;0.0;0.0;8.28;220;12.97;;;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-19;36.0;63.0;0.0;0.0;0.0;1.34;220;8.05;160;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-21;51.1;55.0;0.38;0.0;0.0;3.58;90;12.08;90;14.09;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-25;36.0;73.0;0.0;0.0;0.0;7.61;220;17.0;230;23.94;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-27;30.2;51.1;0.0;0.0;0.0;6.49;250;16.11;250;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-01-29;30.2;54.0;0.02;0.0;0.0;8.05;260;23.04;270;31.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-06;31.1;68.0;0.0;0.0;0.0;4.7;210;12.97;220;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-10;26.2;51.1;0.0;0.0;0.0;6.71;210;21.92;220;25.95;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-02-12;57.9;82.9;0.05;0.0;0.0;11.41;230;25.05;240;33.11;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-02-13;37.0;64.0;0.0;0.0;0.0;7.16;280;14.99;330;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-23;50.0;77.0;0.0;0.0;0.0;3.36;180;12.97;180;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-02-26;37.0;55.9;0.0;0.0;0.0;4.47;250;14.09;280;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-01;59.0;79.0;0.97;0.0;0.0;17.22;230;35.12;230;44.07;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-03-04;25.2;54.0;0.0;0.0;0.0;2.46;270;12.97;280;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-09;37.0;75.0;0.0;0.0;0.0;6.04;230;23.04;240;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-10;41.0;69.1;0.0;0.0;0.0;10.74;300;23.04;310;36.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-11;31.1;50.0;0.0;0.0;0.0;4.47;280;14.09;270;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-22;39.0;64.0;0.0;0.0;0.0;8.28;50;21.03;50;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-03-31;57.9;79.0;0.42;0.0;0.0;10.74;230;25.05;230;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-04-01;48.9;75.0;0.0;0.0;0.0;6.04;20;14.09;330;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-04-05;53.1;78.1;0.32;0.0;0.0;6.71;160;17.0;290;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-04-20;55.9;84.9;0.0;0.0;0.0;5.82;230;14.99;230;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-05-02;60.1;77.0;0.0;0.0;0.0;11.41;240;23.04;250;31.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-03;53.1;79.0;0.0;0.0;0.0;5.14;280;16.11;280;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-08;43.0;71.1;0.0;0.0;0.0;4.7;290;16.11;330;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-10;57.0;82.9;0.45;0.0;0.0;3.8;30;16.11;40;21.92;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-05-12;54.0;61.0;0.07;0.0;0.0;7.61;40;16.11;80;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-15;60.1;84.9;0.0;0.0;0.0;4.7;290;14.09;320;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-16;57.0;87.1;0.0;0.0;0.0;3.58;120;12.97;130;17.0;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-05-21;60.1;75.9;0.0;0.0;0.0;7.61;90;14.09;100;18.12;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2017-05-23;66.9;71.1;0.69;0.0;0.0;4.47;80;12.08;90;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-05-31;68.0;86.0;0.0;0.0;0.0;4.7;140;14.99;130;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-02;61.0;84.9;0.0;0.0;0.0;3.8;40;12.97;40;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-06;64.0;82.9;0.0;0.0;0.0;3.8;40;12.08;340;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-08;55.0;73.0;0.0;0.0;0.0;7.38;40;19.91;40;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-13;66.9;89.1;0.0;0.0;0.0;8.05;240;17.0;240;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-14;66.0;93.0;0.0;0.0;0.0;5.82;50;19.91;50;27.07;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-19;70.0;91.9;0.09;0.0;0.0;11.86;170;25.05;170;31.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-06-26;60.1;84.9;0.0;0.0;0.0;3.36;250;12.08;260;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-27;59.0;82.9;0.0;0.0;0.0;3.8;50;12.97;40;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-06-30;69.1;87.1;0.05;0.0;0.0;7.83;170;17.0;180;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-01;73.0;90.0;0.0;0.0;0.0;9.17;220;17.0;220;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-07;73.0;91.0;0.0;0.0;0.0;8.95;240;16.11;230;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-10;70.0;90.0;0.0;0.0;0.0;4.47;150;14.99;150;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-07-24;71.1;93.0;0.0;0.0;0.0;7.16;230;14.09;260;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-13;73.0;81.0;0.73;0.0;0.0;6.26;40;14.99;60;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-14;73.0;88.0;0.21;0.0;0.0;3.8;200;16.11;190;19.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-18;75.0;98.1;0.01;0.0;0.0;7.38;220;16.11;210;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2017-08-21;71.1;93.0;0.0;0.0;0.0;3.13;150;12.97;140;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-24;71.1;84.0;0.0;0.0;0.0;6.04;80;17.0;110;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-08-26;68.0;82.9;0.0;0.0;0.0;8.05;80;14.99;60;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-10;51.1;71.1;0.0;0.0;0.0;8.95;50;21.03;50;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-09-25;63.0;82.9;0.0;0.0;0.0;6.71;40;16.11;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-08;73.9;84.0;0.02;0.0;0.0;8.28;170;17.0;140;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-17;42.1;64.0;0.0;0.0;0.0;5.14;40;16.11;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-10-31;39.0;69.1;0.0;0.0;0.0;1.79;30;8.95;40;10.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-05;51.1;70.0;0.0;0.0;0.0;2.46;40;8.05;170;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-06;53.1;75.9;0.0;0.0;0.0;4.7;240;18.12;240;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-11;28.2;46.0;0.0;0.0;0.0;5.14;60;16.11;50;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-14;43.0;52.0;0.0;0.0;0.0;8.72;30;17.0;50;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-17;34.0;57.0;0.0;0.0;0.0;2.91;20;8.05;30;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-18;33.1;66.9;0.0;0.0;0.0;11.41;230;29.08;240;36.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-27;26.2;61.0;0.0;0.0;0.0;1.34;40;10.07;40;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-11-29;39.9;70.0;0.0;0.0;0.0;2.46;290;10.07;280;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-10;27.1;43.0;0.0;0.0;0.0;5.82;270;14.99;280;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-13;21.2;43.0;0.0;0.0;0.0;8.72;230;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-15;31.1;43.0;0.0;0.0;0.0;5.14;290;12.08;80;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-16;24.3;50.0;0.0;0.0;0.0;3.58;230;14.09;250;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-22;36.0;61.0;0.0;0.0;0.0;3.58;240;12.97;250;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2017-12-24;43.0;61.0;0.0;0.0;0.0;7.38;90;19.91;90;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-04;18.1;30.2;0.0;0.0;1.18;9.62;300;21.03;350;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-07;4.1;30.2;0.0;0.0;0.0;2.68;80;10.07;80;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-11;41.0;64.0;0.11;0.0;0.0;6.71;150;14.99;130;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-21;31.1;68.0;0.0;0.0;0.0;1.12;250;8.95;230;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-01-23;46.9;70.0;0.83;0.0;0.0;15.66;230;31.99;240;42.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-05;29.1;48.0;0.0;0.0;0.0;4.03;330;14.09;330;23.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-06;29.1;59.0;0.0;0.0;0.0;5.37;240;14.09;230;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-08;33.1;50.0;0.0;0.0;0.0;3.36;360;12.97;20;21.03;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-10;43.0;64.9;0.08;0.0;0.0;4.47;200;16.11;180;23.04;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-11;64.0;72.0;0.0;0.0;0.0;14.99;220;25.05;230;33.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-14;37.0;57.9;0.0;0.0;0.0;6.49;220;14.99;210;25.05;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No;No +2018-02-17;39.9;55.9;0.06;0.0;0.0;6.93;90;19.91;80;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-22;61.0;78.1;0.0;0.0;0.0;9.84;230;18.12;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-02-27;35.1;61.0;0.0;0.0;0.0;2.24;110;14.99;50;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-02;41.0;55.0;0.0;0.0;0.0;14.99;300;25.95;270;46.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-06;32.0;42.1;0.45;0.0;0.0;4.47;140;12.97;130;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-03-21;32.0;42.1;0.05;0.0;0.0;6.93;290;17.0;290;27.07;Yes;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No +2018-03-22;32.0;53.1;0.0;0.0;0.0;6.04;310;14.09;340;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-03;45.0;75.0;0.0;0.0;0.0;7.61;200;19.91;200;25.05;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-05;34.0;61.0;0.0;0.0;0.0;3.58;270;10.07;280;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-11;37.9;62.1;0.0;0.0;0.0;5.37;230;12.08;230;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-12;44.1;75.0;0.0;0.0;0.0;13.87;220;25.95;220;34.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-20;34.0;64.9;0.0;0.0;0.0;2.91;40;14.99;50;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-21;37.0;68.0;0.0;0.0;0.0;4.47;80;14.09;;;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-04-26;48.0;75.0;0.18;0.0;0.0;3.36;280;21.92;280;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-07;55.0;73.9;0.0;0.0;0.0;7.61;80;17.0;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-08;53.1;77.0;0.0;0.0;0.0;7.83;50;14.99;30;21.03;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-10;59.0;87.1;0.18;0.0;0.0;9.17;240;21.92;270;27.96;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-12;66.9;91.9;0.0;0.0;0.0;6.26;240;14.99;230;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-21;68.0;86.0;0.72;0.0;0.0;4.7;80;21.92;80;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-05-25;64.9;86.0;0.0;0.0;0.0;5.82;220;14.09;230;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-05-29;69.1;82.0;0.62;0.0;0.0;4.47;110;12.08;110;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-06-03;69.1;88.0;0.0;0.0;0.0;4.92;40;14.09;310;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-05;57.0;82.0;0.0;0.0;0.0;3.13;230;14.09;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-07;62.1;84.9;0.0;0.0;0.0;4.92;170;12.08;20;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-09;68.0;89.1;0.0;0.0;0.0;2.68;110;12.08;150;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-23;73.9;91.9;0.18;0.0;0.0;8.72;230;21.03;240;27.07;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-06-27;64.9;86.0;0.0;0.0;0.0;3.58;230;12.08;240;14.99;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-03;75.0;95.0;0.0;0.0;0.0;6.49;80;14.09;50;23.04;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-05;72.0;95.0;0.03;0.0;0.0;4.92;240;23.94;150;31.09;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-09;57.0;87.1;0.0;0.0;0.0;3.58;40;12.97;50;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-12;72.0;87.1;0.01;0.0;0.0;7.61;90;14.09;90;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-19;63.0;90.0;0.0;0.0;0.0;7.16;80;16.11;120;25.95;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-07-22;68.0;89.1;1.11;0.0;0.0;5.59;40;25.05;50;42.95;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-28;71.1;91.0;0.84;0.0;0.0;4.25;220;16.11;220;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-07-31;73.0;87.1;0.22;0.0;0.0;5.37;170;16.11;170;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-02;71.1;89.1;0.26;0.0;0.0;7.83;250;19.91;240;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-11;72.0;91.0;0.04;0.0;0.0;4.47;220;16.11;220;19.01;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-08-16;68.0;91.9;0.0;0.0;0.0;2.91;250;12.97;250;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-24;55.0;82.0;0.0;0.0;0.0;4.7;70;14.09;90;19.01;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-08-31;69.1;91.9;0.27;0.0;0.0;3.8;300;14.99;300;21.03;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-01;71.1;93.0;0.19;0.0;0.0;4.92;80;21.03;40;25.05;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-03;69.1;91.0;0.0;0.0;0.0;1.12;110;6.93;120;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-05;71.1;91.0;0.0;0.0;0.0;4.03;110;12.08;160;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-09-17;72.0;88.0;1.32;0.0;0.0;11.63;170;23.04;130;34.0;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2018-09-25;69.1;84.9;0.0;0.0;0.0;3.36;40;12.08;30;14.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-05;68.0;90.0;0.0;0.0;0.0;3.8;90;12.97;80;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-10;69.1;81.0;0.1;0.0;0.0;7.61;130;14.09;140;19.91;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-13;48.0;70.0;0.0;0.0;0.0;3.36;360;12.97;340;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-18;43.0;62.1;0.0;0.0;0.0;4.47;40;21.92;50;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-10-19;39.0;69.1;0.0;0.0;0.0;3.13;230;14.09;220;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-02;60.1;70.0;0.0;0.0;0.0;11.86;200;25.95;190;34.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-08;51.1;64.9;0.0;0.0;0.0;7.16;40;17.0;30;21.92;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-09;50.0;53.1;0.07;0.0;0.0;5.37;50;14.09;80;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-11;28.2;51.1;0.0;0.0;0.0;4.03;60;12.97;60;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-13;44.1;51.1;1.19;0.0;0.0;2.91;300;14.09;310;18.12;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-17;33.1;59.0;0.0;0.0;0.0;1.57;50;14.09;50;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-18;37.0;59.0;0.0;0.0;0.0;1.57;100;8.05;130;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-11-30;42.1;68.0;0.02;0.0;0.0;8.72;240;21.92;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-01;52.0;62.1;0.32;0.0;0.0;5.14;130;14.09;140;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-06;25.2;46.0;0.0;0.0;0.0;3.8;220;12.08;240;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-07;29.1;50.0;0.0;0.0;0.0;1.79;300;8.05;20;12.97;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-15;42.1;48.9;0.23;0.0;0.0;3.58;50;14.09;50;17.0;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-21;46.0;64.9;0.04;0.0;0.0;14.99;210;31.09;200;40.04;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2018-12-25;26.2;50.0;0.0;0.0;0.0;1.57;160;8.95;120;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-04;46.0;60.1;0.54;0.0;0.0;7.16;130;21.03;120;29.08;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-08;46.0;66.9;0.0;0.0;0.0;9.17;240;21.03;220;27.96;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-09;37.0;57.0;0.0;0.0;0.0;9.4;290;18.12;310;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-12;30.2;39.0;0.07;0.0;0.0;5.59;70;12.08;90;17.0;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-14;31.1;41.0;0.0;0.0;0.0;3.58;30;10.07;40;17.0;Yes;No;No;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No +2019-01-15;28.2;46.9;0.0;0.0;0.0;1.34;330;8.05;310;12.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-01-20;26.2;59.0;0.61;0.0;0.0;12.3;220;23.94;300;31.99;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-12;41.0;48.0;0.17;0.0;0.0;5.37;310;17.0;300;27.07;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-17;34.0;39.9;0.24;0.0;0.0;4.47;90;12.08;90;14.09;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-18;37.9;63.0;0.42;0.0;0.0;6.71;280;14.09;10;21.92;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-26;30.2;63.0;0.0;0.0;0.0;3.8;220;19.91;220;23.94;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-02-27;39.9;50.0;0.29;0.0;0.0;3.13;30;8.95;20;12.08;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-01;39.0;46.9;0.65;0.0;0.0;7.38;120;14.99;120;19.01;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-03;42.1;50.0;0.81;0.0;0.0;6.93;110;12.97;330;21.03;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-05;32.0;44.1;0.0;0.0;0.0;5.14;290;12.08;270;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-06;27.1;42.1;0.0;0.0;0.0;5.59;320;16.11;270;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-15;57.9;73.9;0.31;0.0;0.0;13.42;220;25.95;220;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-03-17;35.1;57.0;0.0;0.0;0.0;3.8;250;12.97;250;14.09;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-03-26;39.0;55.9;0.06;0.0;0.0;10.07;40;21.03;30;25.95;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-09;61.0;73.9;0.04;0.0;0.0;5.82;250;12.08;240;16.11;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-04-23;46.0;81.0;0.0;0.0;0.0;7.38;240;16.11;230;19.91;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-06;60.1;77.0;0.0;0.0;0.0;5.82;40;14.09;50;18.12;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-12;64.9;75.9;0.0;0.0;0.0;11.63;230;21.92;220;27.07;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-05-13;57.0;73.9;1.32;0.0;0.0;3.58;330;23.04;10;36.91;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-05-24;68.0;93.0;0.0;0.0;0.0;5.82;280;14.09;330;21.03;Yes;No;No;No;No;No;No;No;No;No;Yes;Yes;No;No;No;No;No +2019-05-26;72.0;93.9;0.05;0.0;0.0;5.82;240;17.0;240;23.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-06-08;71.1;79.0;0.32;0.0;0.0;9.4;100;18.12;80;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-02;68.0;95.0;0.0;0.0;0.0;3.36;260;12.08;230;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-03;70.0;97.0;0.0;0.0;0.0;4.03;260;12.08;360;16.11;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-10;72.0;91.0;0.0;0.0;0.0;5.82;200;12.97;180;17.0;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-07-15;70.0;95.0;0.35;0.0;0.0;4.25;150;17.0;310;23.94;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-22;73.9;97.0;0.06;0.0;0.0;12.08;220;27.96;230;35.12;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-07-31;69.1;95.0;0.24;0.0;0.0;3.36;10;14.09;10;19.01;No;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-02;68.0;87.1;0.21;0.0;0.0;5.14;110;23.04;110;29.08;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-03;70.0;86.0;0.0;0.0;0.0;3.36;150;8.95;130;12.97;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No +2019-08-06;64.9;90.0;0.16;0.0;0.0;4.92;230;17.0;230;34.0;Yes;Yes;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-07;72.0;91.0;0.14;0.0;0.0;6.49;220;29.97;240;40.04;Yes;No;No;No;No;No;No;No;No;No;No;Yes;No;No;No;No;No +2019-08-09;66.9;93.0;0.0;0.0;0.0;;;;;;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No diff --git a/the_archive/archived_rapids_demos/cuml/dbscan_demo.ipynb b/the_archive/archived_rapids_demos/cuml/dbscan_demo.ipynb new file mode 100644 index 00000000..80f7e418 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/dbscan_demo.ipynb @@ -0,0 +1,240 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Density-Based Spatial Clustering of Applications with Noise (DBSCAN)\n", + "\n", + "The DBSCAN algorithm is a clustering algorithm that works really well for datasets that have regions of high density.\n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames.\n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For information about cuML's DBSCAN implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.DBSCAN." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from cuml.datasets import make_blobs\n", + "from cuml.cluster import DBSCAN as cuDBSCAN\n", + "from sklearn.cluster import DBSCAN as skDBSCAN\n", + "from sklearn.metrics import adjusted_rand_score\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 10**4\n", + "n_features = 2\n", + "\n", + "eps = 0.15\n", + "min_samples = 3\n", + "random_state = 23" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "device_data, device_labels = make_blobs(n_samples=n_samples, \n", + " n_features=n_features,\n", + " centers=5,\n", + " cluster_std=0.1,\n", + " random_state=random_state)\n", + "\n", + "device_data = cudf.DataFrame.from_gpu_matrix(device_data)\n", + "device_labels = cudf.Series(device_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "host_data = device_data.to_pandas()\n", + "host_labels = device_labels.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "clustering_sk = skDBSCAN(eps=eps,\n", + " min_samples=min_samples,\n", + " algorithm=\"brute\",\n", + " n_jobs=-1)\n", + "\n", + "clustering_sk.fit(host_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "clustering_cuml = cuDBSCAN(eps=eps,\n", + " min_samples=min_samples,\n", + " verbose=True,\n", + " max_mbytes_per_batch=13e3)\n", + "\n", + "clustering_cuml.fit(device_data, out_dtype=\"int32\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize Centroids\n", + "\n", + "Chart the resulting clusters from cuML's DBSCAN, where each color represents one cluster found by the algorithm and black points are those not assigned to any cluster. (Unlike many clustering algorithms, DBSCAN can label some outlier points as \"noise\" that do not belong to a cluster.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(16, 10))\n", + "\n", + "X = np.array(host_data)\n", + "labels = clustering_cuml.labels_\n", + "\n", + "n_clusters_ = len(labels)\n", + "\n", + "# Black removed and is used for noise instead.\n", + "unique_labels = labels.unique()\n", + "colors = [plt.cm.Spectral(each)\n", + " for each in np.linspace(0, 1, len(unique_labels))]\n", + "for k, col in zip(unique_labels, colors):\n", + " if k == -1:\n", + " # Black used for noise.\n", + " col = [0, 0, 0, 1]\n", + "\n", + " class_member_mask = (labels == k)\n", + "\n", + " xy = X[class_member_mask]\n", + " plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),\n", + " markersize=5, markeredgecolor=tuple(col))\n", + "\n", + "plt.title('Estimated number of clusters: %d' % n_clusters_)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "Use the `adjusted_rand_score` to compare the two results, making sure the clusters are labeled similarly by both algorithms even if the exact numerical labels are not identical. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sk_score = adjusted_rand_score(host_labels, clustering_sk.labels_)\n", + "cuml_score = adjusted_rand_score(host_labels, clustering_cuml.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = (cuml_score - sk_score) < 1e-10\n", + "print('compare dbscan: cuml vs sklearn labels_ are ' + ('equal' if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/forest_inference_demo.ipynb b/the_archive/archived_rapids_demos/cuml/forest_inference_demo.ipynb new file mode 100644 index 00000000..d577632c --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/forest_inference_demo.ipynb @@ -0,0 +1,312 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Forest Inference Library (FIL)\n", + "The forest inference library is used to load saved forest models of xgboost, lightgbm or protobuf and perform inference on them. It can be used to perform both classification and regression. In this notebook, we'll begin by fitting a model with XGBoost and saving it. We'll then load the saved model into FIL and use it to infer on new data.\n", + "\n", + "FIL works in the same way with lightgbm and protobuf model as well.\n", + "\n", + "The model accepts both numpy arrays and cuDF dataframes. In order to convert your dataset to cudf format please read the cudf documentation on https://docs.rapids.ai/api/cudf/stable. \n", + "\n", + "For additional information on the forest inference library please refer to the documentation on https://rapidsai.github.io/projects/cuml/en/stable/api.html#forest-inferencing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import os\n", + "\n", + "from cuml.test.utils import array_equal\n", + "from cuml.utils.import_utils import has_xgboost\n", + "\n", + "from sklearn.datasets import make_classification\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.model_selection import train_test_split\n", + " \n", + "from cuml import ForestInference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check for xgboost\n", + "Checks if xgboost is present, if not then it throws an error." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if has_xgboost():\n", + " import xgboost as xgb\n", + "else:\n", + " raise ImportError(\"Please install xgboost using the conda package,\"\n", + " \" Use conda install -c conda-forge xgboost \"\n", + " \"command to install xgboost\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train helper function\n", + "Defines a simple function that trains the XGBoost model and returns the trained model.\n", + "\n", + "For additional information on the xgboost library please refer to the documentation on : \n", + "https://xgboost.readthedocs.io/en/latest/parameter.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def train_xgboost_model(X_train, y_train,\n", + " num_rounds, model_path):\n", + " # set the xgboost model parameters\n", + " params = {'silent': 1, 'eval_metric':'error',\n", + " 'objective':'binary:logistic',\n", + " 'max_depth': 25}\n", + " dtrain = xgb.DMatrix(X_train, label=y_train)\n", + " # train the xgboost model\n", + " bst = xgb.train(params, dtrain, num_rounds)\n", + "\n", + " # save the trained xgboost model\n", + " bst.save_model(model_path)\n", + "\n", + " return bst" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predict helper function\n", + "Uses the trained xgboost model to perform prediction and return the labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_xgboost_model(X_validation, y_validation, xgb_model):\n", + "\n", + " # predict using the xgboost model\n", + " dvalidation = xgb.DMatrix(X_validation, label=y_validation)\n", + " xgb_preds = xgb_model.predict(dvalidation)\n", + "\n", + " # convert the predicted values from xgboost into class labels\n", + " xgb_preds = np.around(xgb_preds)\n", + " return xgb_preds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_rows = 10000\n", + "n_columns = 100\n", + "n_categories = 2\n", + "random_state = np.random.RandomState(43210)\n", + "\n", + "# enter path to the directory where the trained model will be saved\n", + "model_path = 'xgb.model'\n", + "\n", + "# num of iterations for which the model is trained\n", + "num_rounds = 15" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create the dataset\n", + "X, y = make_classification(n_samples=n_rows,\n", + " n_features=n_columns,\n", + " n_informative=int(n_columns/5),\n", + " n_classes=n_categories,\n", + " random_state=random_state)\n", + "train_size = 0.8\n", + "\n", + "# convert the dataset to np.float32\n", + "X = X.astype(np.float32)\n", + "y = y.astype(np.float32)\n", + "\n", + "# split the dataset into training and validation splits\n", + "X_train, X_validation, y_train, y_validation = train_test_split(\n", + " X, y, train_size=train_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train and Predict the model\n", + "Invoke the function to train the model and get predictions so that we can validate them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# train the xgboost model\n", + "xgboost_model = train_xgboost_model(X_train, y_train,\n", + " num_rounds, model_path)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "# test the xgboost model\n", + "trained_model_preds = predict_xgboost_model(X_validation,\n", + " y_validation,\n", + " xgboost_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Forest Inference Library (FIL)\n", + "\n", + "The load function of the ForestInference class accepts the following parameters:\n", + "\n", + " filename : str\n", + " Path to saved model file in a treelite-compatible format\n", + " (See https://treelite.readthedocs.io/en/latest/treelite-api.html\n", + " output_class : bool\n", + " If true, return a 1 or 0 depending on whether the raw prediction\n", + " exceeds the threshold. If False, just return the raw prediction.\n", + " threshold : float\n", + " Cutoff value above which a prediction is set to 1.0\n", + " Only used if the model is classification and output_class is True\n", + " algo : string name of the algo from (from algo_t enum)\n", + " 'NAIVE' - simple inference using shared memory\n", + " 'TREE_REORG' - similar to naive but trees rearranged to be more\n", + " coalescing-friendly\n", + " 'BATCH_TREE_REORG' - similar to TREE_REORG but predicting\n", + " multiple rows per thread block\n", + " model_type : str\n", + " Format of saved treelite model to load.\n", + " Can be 'xgboost', 'lightgbm', or 'protobuf'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loaded the saved model\n", + "Use FIL to load the saved xgboost model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fm = ForestInference.load(filename=model_path,\n", + " algo='BATCH_TREE_REORG',\n", + " output_class=True,\n", + " threshold=0.50,\n", + " model_type='xgboost')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predict using FIL" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "# perform prediction on the model loaded from path\n", + "fil_preds = fm.predict(X_validation)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate results\n", + "\n", + "Verify the predictions for the original and FIL model match." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The shape of predictions obtained from xgboost : \",(trained_model_preds).shape)\n", + "print(\"The shape of predictions obtained from FIL : \",(fil_preds).shape)\n", + "print(\"Are the predictions for xgboost and FIL the same : \" , array_equal(trained_model_preds, fil_preds))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/holtwinters_demo.ipynb b/the_archive/archived_rapids_demos/cuml/holtwinters_demo.ipynb new file mode 100644 index 00000000..99cd934f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/holtwinters_demo.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Holt-Winters Demo\n", + "\n", + "Holt-Winters is a time-series analysis technique, used in both forecasting future entries in a time series as well as in providing exponential smoothing, where weights are assigned against historical data with exponentially decreasing impact. It does this by analyzing three components of the data: level, trend, and seasonality. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input.\n", + "\n", + "For information on cuDF, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For information on cuML's Holt-Winters implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#holtwinters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from sklearn.metrics import r2_score\n", + "\n", + "from cuml.tsa.holtwinters import ExponentialSmoothing as cuES\n", + "from statsmodels.tsa.holtwinters import ExponentialSmoothing as smES" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_series = 500\n", + "n_samples = 750" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "To create a dataset on which to run Holt-Winters, we will artificially create additive time series by generating trend-components, seasonality-components, and noise-components, and taking the sum. Below we define our time series generator `get_timeseries_components`, which returns a tuple of randomly generated trend (with slope `m` and intercept `b`), season (with frequency `f` and amplitude `amp`), and noise (from a Gaussian distribution with scale `scale`) components of length `fs` -- by adding these parts together, we get a complete series on which to run Holt-Winters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def trend(x, m=1, b=0):\n", + " return m*x + b\n", + "\n", + "def sine_season(x, fs=100, f=2, amp=1):\n", + " return amp * np.sin(2*np.pi*f * (x/fs))\n", + "\n", + "def normal_noise(scale=1, size=1):\n", + " return np.random.normal(scale=scale, size=size)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_timeseries_components(fs=100, f=4, m=1, b=0, amp=1, scale=1):\n", + " x = np.arange(fs)\n", + " t = trend(x, m, b)\n", + " s = sine_season(x, fs, f, amp)\n", + " n = normal_noise(scale, fs)\n", + " return (t, s, n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "np.random.seed(100)\n", + "\n", + "tt_split = int(0.8*n_samples)\n", + "n_preds = n_samples - tt_split\n", + "train_pdf = pd.DataFrame()\n", + "test_pdf = pd.DataFrame()\n", + "\n", + "for i in range(n_series):\n", + " t, s, n = get_timeseries_components(fs=n_samples,\n", + " f=4,\n", + " m=np.random.uniform(-2, 2),\n", + " b=np.random.uniform(-3, 3),\n", + " amp=np.random.uniform(-1, 1),\n", + " scale=np.random.uniform(1, 3))\n", + " time_series = t + s + n\n", + " train_pdf[i] = time_series[:tt_split]\n", + " test_pdf[i] = time_series[tt_split:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "train_gdf = gd.from_pandas(train_pdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Statsmodels Model\n", + "\n", + "smES requires that the time series `endog` be one-dimensional -- thus, to forecast out-of-sample predictions for multiple time series (in our case, all the columns of our dataframe), we have no choice but to iterate over the columns and for each time series, initialize, fit, and forecast. We store each series prediction in `sm_preds`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit / Forecast" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "sm_preds = np.zeros((n_series, n_preds))\n", + "\n", + "for i in range(len(train_pdf.columns)):\n", + " sm = smES(train_pdf[train_pdf.columns[i]], seasonal_periods=int(n_samples/4), seasonal='add')\n", + " sm = sm.fit()\n", + " sm_preds[i] = sm.forecast(n_preds)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "On the other hand, cuES allows for multi-dimensional input such as a cudf.DataFrame. When passed an entire dataframe, initialization, fitting, and forecasts for every series can be done simultaneously. These results are returned in a cudf.DataFrame, which we can cast to the same NumPy format as `sm_preds` by calling `as_matrix()`, and then to be row-major by calling `.transpose()`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "cu = cuES(train_gdf, seasonal_periods=int(n_samples/4), seasonal='add', ts_num=n_series)\n", + "cu.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Forecast" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "cu_preds = cu.forecast(n_preds).as_matrix().transpose()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "test_arr = test_pdf.values.transpose()\n", + "\n", + "cu_r2_scores = r2_score(test_arr, cu_preds)\n", + "sm_r2_scores = r2_score(test_arr, sm_preds)\n", + "\n", + "print(\"Average cuES r2 score: %s\" % np.mean(cu_r2_scores))\n", + "print(\"Average smES r2 score: %s\" % np.mean(sm_r2_scores))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cuml4", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/holtwinters_demo_full.ipynb b/the_archive/archived_rapids_demos/cuml/holtwinters_demo_full.ipynb new file mode 100644 index 00000000..291ca1f1 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/holtwinters_demo_full.ipynb @@ -0,0 +1,699 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# HoltWinters for Time Series Forecasting\n", + "\n", + "Holt-Winters is a time-series analysis technique, used in both forecasting future entries in a time series as well as in providing exponential smoothing, where weights are assigned against historical data with exponentially decreasing impact. It does this by analyzing three components of the data: level, trend, and seasonality. \n", + "\n", + "In order to convert your dataset to cudf format please read the cudf documentation on https://docs.rapids.ai/api/cudf/stable. For additional information on the ExponentialSmoothing model please refer to the documentation on https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.ExponentialSmoothing\n", + "\n", + "This notebook will demonstrate how to forecast future datapoints using cuML's ExponentialSmoothing model by using weather data collected by NOAA at Raleigh-Durham International Airport between 2009 and today. It will predict weather patterns for the next 12 months, including temperature and precipitation. This notebook will also look at the accuracy of the algorithm as compared to statsmodels by using a train/test split on the average windspeed of the dataset, and finally run through some performance benchmarks on a mixture of different time series." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import needed packages\n", + "\n", + "from cuml import ExponentialSmoothing as cuES\n", + "import cudf\n", + "import numpy as np\n", + "import urllib.request\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from statsmodels.tsa.holtwinters import ExponentialSmoothing as smES\n", + "from sklearn.metrics import r2_score\n", + "from time import time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ignore warning messages\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import NOAA RDU Weather Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file_path = \"../cuml/data/weather/noaa_rdu.csv\"\n", + "pdf = pd.read_csv(file_path, sep=';')\n", + "pdf.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Parse data and groupby month to accumulate average" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def date_helper(month):\n", + " if len(str(month)) == 1:\n", + " return '0'+str(month)\n", + " else:\n", + " return str(month)\n", + "\n", + "pdf['date'] = pd.to_datetime(pdf['date']).apply(lambda x : str(x.year) + '-' + date_helper(x.month))\n", + "\n", + "pdf = pdf.groupby('date').mean()\n", + "pdf['month'] = pdf.index.map(lambda x : x[-2:])\n", + "pdf.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examine Monthly Max/Min Temperature" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,10))\n", + "l1, = plt.plot(pdf['temperaturemax'], color = 'red')\n", + "l2, = plt.plot(pdf['temperaturemin'], color = 'blue')\n", + "plt.ylabel('Temperature')\n", + "plot1 = plt.gca()\n", + "plt.legend((l1, l2), ('Average Max Temp', 'Average Min Temp'), loc = 'best')\n", + "plot1.axes.get_xaxis().set_ticks([])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Max/Min Temperature Over Past 2 Years" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,10))\n", + "l1, = plt.plot(pdf.index[-24:], pdf['temperaturemax'].tail(24), color = 'red')\n", + "l2, = plt.plot(pdf['temperaturemin'].tail(24), color = 'blue')\n", + "plt.ylabel('Temperature')\n", + "plt.xlabel('Date')\n", + "plt.legend((l1, l2), ('Avg Daily Max', 'Avg Daily Min'))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Forecast Next 12 Months Using HoltWinters\n", + "\n", + "Now we'll use cuML's HoltWinters algorithm to predict the average max/min temperature as well as the precipitation for the next year. First we create a cuDF.Dataframe of the data we want to predict on:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = cudf.DataFrame.from_pandas(pdf[['temperaturemax','temperaturemin','precipitation']])\n", + "data.to_pandas().head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Begin by creating an `ExponentialSmoothing` object. Valid parameters include:\n", + "\n", + "- `endog`: the endogenous dataset in question\n", + "- `seasonal` (default='additive'): whether the seasonality is \"additive\" or \"multiplicative\".\n", + "- `seasonal_periods` (default=2): seasonality of the data. As our data is monthly, we set this to 12.\n", + "- `start_periods` (default=2): number of seasons to be used for seasonal seed values.\n", + "- `ts_num` (default=1): number of different time series in `endog`.\n", + "- `eps` (default=2.24e-3): accuracy to which gradient descent should achieve.\n", + "- `handle` (default=None): cuml.Handle. A new one is created if None is passed.\n", + "\n", + "The data in `endog` should be array-like, but can be any of type `cudf.dataframe`, `cupy.ndarray`, `numpy.ndarray`, or `cuda_array`. It is important to note that `cudf.dataframe` is column major, while the other types are row major. We then can fit the object to the data by using the `.fit()` method.\n", + "\n", + "Finally, use the `.forecast()` method to return a cudf.Series or cudf.DataFrame of your forecasted points. Predict takes `h`, the number of points you would like to forecast, and `index`, the index of the time series from which you want forecasted points. If `index = None`, then the forecast is done for all points and a cudf.DataFrame of the results is returned.\n", + "\n", + "- `h` (default=1): number of forecasted points to return.\n", + "- `index` (default=None): index of the time series from data from which you want the forecasted points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "months_to_predict = 12\n", + "\n", + "cu_hw = cuES(data, seasonal_periods=12, ts_num=3)\n", + "cu_hw.fit()\n", + "cu_preds = cu_hw.forecast(months_to_predict)\n", + "\n", + "tempmax_pred = cu_preds[0]\n", + "tempmin_pred = cu_preds[1]\n", + "precip_pred = cu_preds[2]\n", + "\n", + "# Equivalent to:\n", + "# tempmax_pred = cu_hw.forecast(months_to_predict, 0)\n", + "# tempmin_pred = cu_hw.forecast(months_to_predict, 1)\n", + "# precip_pred = cu_hw.forecast(months_to_predict, 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Forecasted Points Alongside Original Data\n", + "\n", + "First, we compare how the forecasted points look when put alongside the original temperature data (just the last year, and then all data)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "next_six_months = ['2019-08', '2019-09', '2019-10', '2019-11',\n", + " '2019-12', '2020-01', '2020-02', '2020-03',\n", + " '2020-04', '2020-05', '2020-06', '2020-07',\n", + " '2020-08']\n", + "tempmax_pred = np.insert(tempmax_pred.to_array(), 0, pdf['temperaturemax'].iloc[-1])\n", + "tempmin_pred = np.insert(tempmin_pred.to_array(), 0, pdf['temperaturemin'].iloc[-1])\n", + "precip_pred = np.insert(precip_pred.to_array(), 0, pdf['precipitation'].iloc[-1])\n", + "\n", + "plt.figure(figsize=(20,10))\n", + "l1, = plt.plot(pdf.index[-12:], pdf['temperaturemax'].tail(12), 'r-')\n", + "l2, = plt.plot(pdf.index[-12:], pdf['temperaturemin'].tail(12), 'b-')\n", + "p1, = plt.plot(next_six_months, tempmax_pred, 'r:')\n", + "p2, = plt.plot(next_six_months, tempmin_pred, 'b:')\n", + "plt.ylabel('Temperature')\n", + "plt.xlabel('Date')\n", + "plt.legend((l1, l2, p1, p2), ('Avg Max Temp', 'Avg Min Temp', 'Predicted Max Temp', 'Predicted Min Temp'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,10))\n", + "\n", + "n = len(pdf.index)\n", + "\n", + "l1, = plt.plot(np.arange(n), pdf['temperaturemax'], 'r-')\n", + "l2, = plt.plot(np.arange(n), pdf['temperaturemin'], 'b-')\n", + "p1, = plt.plot(np.arange(months_to_predict+1)+n-1, tempmax_pred, 'r:')\n", + "p2, = plt.plot(np.arange(months_to_predict+1)+n-1, tempmin_pred, 'b:')\n", + "plt.ylabel('Temperature')\n", + "plot1 = plt.gca()\n", + "plt.legend((l1, l2, p1, p2), ('Avg Max Temp', 'Avg Min Temp', 'Predicted Max Temp', 'Predicted Min Temp'))\n", + "plot1.axes.get_xaxis().set_ticks([])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Examine Precipitation Forecast\n", + "\n", + "Next we examine the forecast for a less \"nice\" dataset: the precipitation levels over the past years." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,10))\n", + "l1, = plt.plot(np.arange(n), pdf['precipitation'], 'b-')\n", + "p1, = plt.plot(np.arange(months_to_predict+1)+n-1, precip_pred, 'b:')\n", + "plt.ylabel('Precipitation')\n", + "plot1 = plt.gca()\n", + "plt.legend((l1, p1), ('Avg', 'Predicted'))\n", + "plot1.axes.get_xaxis().set_ticks([])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compare Accuracy to StatsModels on Windspeed Dataset\n", + "\n", + "The last thing we'll do with our NOAA dataset is to compare the accuracy of cuML's ExponentialSmoothing with statsmodels' ExponentialSmoothing. To do this, we'll take the windspeed data, do a train/test split, and take the r2 scores of both statsmodels' forecasted points and cuML's forecasted points as compared to the test points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get Windspeed data from dataframe\n", + "wind_data = pdf['avgwindspeed'].values\n", + "\n", + "# Test/Train Split\n", + "spl = 0.2\n", + "wind_data = np.asarray(wind_data, dtype=np.float64)\n", + "h = int(wind_data.shape[0]*spl)\n", + "train = wind_data[:-h]\n", + "test = wind_data[-h:]\n", + "\n", + "\n", + "# cuML HoltWinters\n", + "cu_hw = cuES(train, seasonal='additive', seasonal_periods=12)\n", + "cu_hw.fit()\n", + "cu_pred = cu_hw.forecast(h)\n", + "\n", + "# statsmodels ExponentialSmoothing\n", + "sm_hw = smES(train, seasonal='additive', seasonal_periods=12)\n", + "sm_hw = sm_hw.fit()\n", + "sm_pred = sm_hw.forecast(h)\n", + "\n", + "cu_r2 = r2_score(test, cu_pred)\n", + "sm_r2 = r2_score(test, sm_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,10))\n", + "\n", + "n = int(0.4*train.shape[0])\n", + "\n", + "test = np.insert(test, 0, train[-1])\n", + "cu_pred = np.insert(cu_pred.to_array(), 0, train[-1])\n", + "sm_pred = np.insert(sm_pred, 0, train[-1])\n", + "\n", + "tr_d, = plt.plot(np.arange(n), train[-n:], 'r-')\n", + "te_d, = plt.plot(np.arange(h+1)+n-1, test, 'r:')\n", + "cu, = plt.plot(np.arange(h+1)+n-1, cu_pred, 'b:')\n", + "sm, = plt.plot(np.arange(h+1)+n-1, sm_pred, 'g:')\n", + "plt.ylabel('Wind Speed')\n", + "plot1 = plt.gca()\n", + "plt.legend((tr_d, te_d, cu, sm), ('Training Data', 'Test Data', 'cuML', 'statsmodel'))\n", + "plot1.axes.get_xaxis().set_ticks([])\n", + "plt.show()\n", + "\n", + "print('cuML accuracy score: ' + str(cu_r2))\n", + "print('statsmodels accuracy score: ' + str(sm_r2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Comparing Speed to Statsmodels\n", + "\n", + "Finally, we'll see how statsmodels and cuML compare on their speed of execution.\n", + "\n", + "## Time Series Generator\n", + "To do this, we'll need a way of creating a large number of datasets. Here, we define functions to artificially create trends (which implicitly defines a level), seasons (via sine waves), and Gaussian noise." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def trend(x, m=1, b=0):\n", + " return m*x + b\n", + "\n", + "def sine_season(x, fs=100, f=2, amp=1):\n", + " return amp * np.sin(2*np.pi*f * (x/fs))\n", + "\n", + "def normal_noise(scale=1, size=1):\n", + " return np.random.normal(scale=scale, size=size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By combining them, we can create artificial time series on which to test our execution speed:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_timeseries_components(fs=100, f=4, m=1, b=0, amp=1, scale=1):\n", + " x = np.arange(fs)\n", + " t = trend(x, m, b)\n", + " s = sine_season(x, fs, f, amp)\n", + " n = normal_noise(scale, fs)\n", + " return (t, s, n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t, s, n = get_timeseries_components(100, 4, 1, 0, 20, 2.5)\n", + "a = t + s + n\n", + "split = 75\n", + "train_a = a[:split]\n", + "test_a = a[split:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(train_a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuES and smES on Our Time Series Generator\n", + "We now can examine how long it takes to fit our cuML model (cuES) as well as our statsmodels model (smES) on the above time series:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "cu = cuES(train_a, seasonal_periods=25, start_periods=2, ts_num=1, eps=2.24e-7, seasonal='add')\n", + "cu = cu.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "sm = smES(train_a, seasonal_periods=25, seasonal='add')\n", + "sm = sm.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also see how well these models forecast future points in our time series, both visually as well as by again looking at the r2 score as compared to the test split." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cu_f = cu.forecast(25)\n", + "sm_f = sm.forecast(25)\n", + "plt.plot(np.arange(0, split), train_a, color='b')\n", + "plt.plot(np.arange(split, 100), cu_f.to_pandas(), color='r')\n", + "plt.plot(np.arange(split, 100), test_a, color='b', linestyle='dashed')\n", + "plt.plot(np.arange(split, 100), sm_f, color='g')\n", + "plt.legend(['train', 'cuml', 'test', 'statsmodels'])\n", + "plt.title(\"cuml vs statsmodels predictions on sine waves\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "r2_score(test_a, cu_f), r2_score(test_a, sm_f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuES Over Multiple Generated TS\n", + "\n", + "We now demonstrate that the same process could be used to generate multiple unique time series with different frequencies, amplitude, and noise. By putting the time series into a single DataFrame, we can use cuES to fit over all series at the same time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ta, sa, na = get_timeseries_components(m=1, amp=20, scale=2.5)\n", + "tb, sb, nb = get_timeseries_components(m=0.5, amp=20, scale=5)\n", + "tc, sc, nc = get_timeseries_components(m=0, amp=20, scale=3.3)\n", + "a = ta + sa + na\n", + "b = tb + sb + nb\n", + "c = tc + sc + nc\n", + "split = 75\n", + "train_a, train_b, train_c = a[:split], b[:split], c[:split]\n", + "test_a, test_b, test_c = a[split:], b[split:], c[split:]\n", + "train_df = cudf.DataFrame({\"a\":train_a, \"b\":train_b, \"c\":train_c})\n", + "test_df = cudf.DataFrame({\"a\":test_a, \"b\":test_b, \"c\":test_c})\n", + "plt.plot(train_df.to_pandas())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "cu = cuES(train_df, seasonal_periods=25, start_periods=3, ts_num=3, eps=2.24e-7, seasonal='additive')\n", + "cu = cu.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison Numbers\n", + "\n", + "Now for the final comparisons: we'll use the above generator to create a large number of series, stick them into a DataFrame, and compare the time it takes to run cuES over the DataFrame, or equivalently, smES over each column. We begin by creating the DataFrame:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize parameters:\n", + "np.random.seed(100)\n", + "single_series_len = 1250\n", + "num_of_series = 1000\n", + "tt_split = int(0.8*num_of_series)\n", + "train_pdf = pd.DataFrame()\n", + "test_pdf = pd.DataFrame()\n", + "\n", + "#Create Dataframe of series:\n", + "for i in range(num_of_series):\n", + " t, s, n = get_timeseries_components(fs=single_series_len,\n", + " f = 4,\n", + " m = np.random.uniform(-2, 2),\n", + " b = np.random.uniform(-3, 3),\n", + " amp = np.random.uniform(-1, 1),\n", + " scale = np.random.uniform(1, 3))\n", + " time_series = t + s + n\n", + " train_pdf[i] = time_series[:tt_split]\n", + " test_pdf[i] = time_series[tt_split:]\n", + " \n", + "train_pdf[train_pdf.columns[:5]].head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we time how long it takes for us to fit both cuES and smES over all the columns of our DataFrame. Note that on several occasions, statsmodels fails to converge, which could possibly accelerate its computation time (exiting earlier)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Raw time comparisons\n", + "\n", + "train_gdf = cudf.from_pandas(train_pdf)\n", + "cu_st = time()\n", + "cu = cuES(train_gdf, seasonal_periods=int(single_series_len/4), seasonal='add', ts_num=num_of_series)\n", + "cu.fit()\n", + "cu_et = time()\n", + "\n", + "sm_st = time()\n", + "for column in train_pdf:\n", + " sm = smES(train_pdf[column], seasonal_periods=int(single_series_len/4), seasonal='add')\n", + " sm = sm.fit()\n", + "sm_et = time()\n", + "\n", + "print(\"For \" + str(num_of_series) + \" columns of length \" + str(single_series_len)\n", + " + \" it takes cuml \" + str(cu_et - cu_st) + \" seconds to fit.\")\n", + "print()\n", + "print(\"For \" + str(num_of_series) + \" columns of length \" + str(single_series_len)\n", + " + \" it takes statsmodels \" + str(sm_et - sm_st) + \" seconds to fit.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we wanted to, we could also time predictions and compare their r2 score to the test data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num_of_series = 100\n", + "\n", + "#take only 100 samples\n", + "train_pdf = train_pdf[train_pdf.columns[:num_of_series]]\n", + "test_arr = test_pdf[test_pdf.columns[:num_of_series]].values.transpose()\n", + "num_of_preds = test_arr.shape[1]\n", + "\n", + "#timing for cuES to forecast points from each time series\n", + "train_gdf = cudf.from_pandas(train_pdf)\n", + "cu_st = time()\n", + "cu = cuES(train_gdf, seasonal_periods=int(single_series_len/4), seasonal='add', ts_num=num_of_series)\n", + "cu.fit()\n", + "cu_preds = cu.forecast(num_of_preds)\n", + "cu_et = time()\n", + "\n", + "#timing for smES to forecast points from each time series\n", + "sm_preds = np.zeros((num_of_series, num_of_preds))\n", + "sm_st = time()\n", + "for i in range(len(train_pdf.columns)):\n", + " sm = smES(train_pdf[train_pdf.columns[i]], seasonal_periods=int(single_series_len/4), seasonal='add')\n", + " sm = sm.fit()\n", + " sm_preds[i] = sm.forecast(num_of_preds)\n", + "sm_et = time()\n", + "\n", + "cu_preds = cu_preds.as_matrix().transpose()\n", + "cu_r2_scores = r2_score(test_arr, cu_preds)\n", + "sm_r2_scores = r2_score(test_arr, sm_preds)\n", + "\n", + "print(\"Forecasting \" + str(num_of_preds) + \" points for \" + str(num_of_series) + \" different time series:\")\n", + "print(\"cuES: \" + str(cu_et - cu_st) + \" s\")\n", + "print(\"smES: \" + str(sm_et - sm_st) + \" s\")\n", + "print()\n", + "print(\"Average cuES r2 score: \" + str(np.mean(cu_r2_scores)))\n", + "print(\"Average smES r2 score: \" + str(np.mean(sm_r2_scores)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Additional Notes and Warnings:\n", + "\n", + "**Known Limitations**:\n", + " This version of ExponentialSmoothing currently provides only a limited\n", + " number of features when compared to the\n", + " statsmodels.holtwinters.ExponentialSmoothing model. Noticeably, it lacks:\n", + "- `.predict()` : no support for in-sample prediction.\n", + " (https://github.com/rapidsai/cuml/issues/875)\n", + "- `.hessian()` : no support for returning Hessian matrix.\n", + " (https://github.com/rapidsai/cuml/issues/880)\n", + "- `.information()` : no support for returning Fisher matrix.\n", + " (https://github.com/rapidsai/cuml/issues/880)\n", + "- `.loglike()` : no support for returning Log-likelihood.\n", + " (https://github.com/rapidsai/cuml/issues/880)\n", + " \n", + "Additionally, be warned that there may exist floating point instability\n", + "issues in this model. Small values in endog may lead to faulty results.\n", + "See https://github.com/rapidsai/cuml/issues/888 for more information.\n", + " \n", + "**Known Differences**:\n", + "This version of ExponentialSmoothing differs from statsmodels in some\n", + "other minor ways:\n", + "- `.__init__()` : Cannot pass trend component or damped trend component\n", + "- `.__init__()` : this version can take additional parameters (eps, start_periods, ts_num, handle)\n", + "- `.score()` : returns SSE rather than gradient logL\n", + " (https://github.com/rapidsai/cuml/issues/876)\n", + "- this version provides `get_level()`, `get_trend()`, `get_season()`" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/kmeans_demo.ipynb b/the_archive/archived_rapids_demos/cuml/kmeans_demo.ipynb new file mode 100644 index 00000000..4936119a --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/kmeans_demo.ipynb @@ -0,0 +1,241 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Means Demo\n", + "\n", + "KMeans is a basic but powerful clustering method which is optimized via Expectation Maximization. It randomly selects K data points in X, and computes which samples are close to these points. For every cluster of points, a mean is computed, and this becomes the new centroid.\n", + "\n", + "cuML’s KMeans supports the scalable KMeans++ intialization method. This method is more stable than randomnly selecting K points.\n", + " \n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input.\n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For additional information on cuML's k-means implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.KMeans." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import cupy\n", + "import matplotlib.pyplot as plt\n", + "from cuml.cluster import KMeans as cuKMeans\n", + "from cuml.datasets import make_blobs\n", + "from sklearn.cluster import KMeans as skKMeans\n", + "from sklearn.metrics import adjusted_rand_score\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 100000\n", + "n_features = 2\n", + "\n", + "n_clusters = 5\n", + "random_state = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device_data, device_labels = make_blobs(n_samples=n_samples,\n", + " n_features=n_features,\n", + " centers=n_clusters,\n", + " random_state=random_state,\n", + " cluster_std=0.1)\n", + "\n", + "device_data = cudf.DataFrame.from_gpu_matrix(device_data)\n", + "device_labels = cudf.Series(device_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "host_data = device_data.to_pandas()\n", + "host_labels = device_labels.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "kmeans_sk = skKMeans(init=\"k-means++\",\n", + " n_clusters=n_clusters,\n", + " n_jobs=-1,\n", + " random_state=random_state)\n", + "\n", + "kmeans_sk.fit(host_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "kmeans_cuml = cuKMeans(init=\"k-means||\",\n", + " n_clusters=n_clusters,\n", + " oversampling_factor=40,\n", + " random_state=random_state)\n", + "\n", + "kmeans_cuml.fit(device_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize Centroids\n", + "\n", + "Scikit-learn's k-means implementation uses the `k-means++` initialization strategy while cuML's k-means uses `k-means||`. As a result, the exact centroids found may not be exact as the std deviation of the points around the centroids in `make_blobs` is increased.\n", + "\n", + "*Note*: Visualizing the centroids will only work when `n_features = 2` " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(16, 10))\n", + "plt.scatter(host_data.iloc[:, 0], host_data.iloc[:, 1], c=host_labels, s=50, cmap='viridis')\n", + "\n", + "#plot the sklearn kmeans centers with blue filled circles\n", + "centers_sk = kmeans_sk.cluster_centers_\n", + "plt.scatter(centers_sk[:,0], centers_sk[:,1], c='blue', s=100, alpha=.5)\n", + "\n", + "#plot the cuml kmeans centers with red circle outlines\n", + "centers_cuml = kmeans_cuml.cluster_centers_\n", + "plt.scatter(cupy.asnumpy(centers_cuml[0].values), \n", + " cupy.asnumpy(centers_cuml[1].values), \n", + " facecolors = 'none', edgecolors='red', s=100)\n", + "\n", + "plt.title('cuml and sklearn kmeans clustering')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cuml_score = adjusted_rand_score(host_labels, kmeans_cuml.labels_)\n", + "sk_score = adjusted_rand_score(host_labels, kmeans_sk.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "threshold = 1e-4\n", + "\n", + "passed = (cuml_score - sk_score) < threshold\n", + "print('compare kmeans: cuml vs sklearn labels_ are ' + ('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cuml4", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/kmeans_mnmg_demo.ipynb b/the_archive/archived_rapids_demos/cuml/kmeans_mnmg_demo.ipynb new file mode 100644 index 00000000..cf18a1a6 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/kmeans_mnmg_demo.ipynb @@ -0,0 +1,243 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Means Multi-Node Multi-GPU (MNMG) Demo\n", + "\n", + "K-Means multi-Node multi-GPU implementation leverages Dask to spread data and computations across multiple workers. cuML uses One Process Per GPU (OPG) layout, which maps a single Dask worker to each GPU.\n", + "\n", + "The main difference between cuML's MNMG implementation of k-means and the single-GPU is that the fit can be performed in parallel for each iteration, sharing only the centroids between iterations. The MNMG version also provides the same scalable k-means++ initialization algorithm as the single-GPU version.\n", + "\n", + "Unlike the single-GPU implementation, The MNMG k-means API requires a Dask cuDF Dataframe as input. `predict()` and `transform()` also return a Dask cuDF Dataframe. The Dask cuDF Dataframe API is very similar to the Dask DataFrame API, but underlying Dataframes are cuDF, rather than Pandas.\n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For additional information on cuML's k-means implementation: \n", + "https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.dask.cluster.KMeans." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from cuml.dask.cluster.kmeans import KMeans as cuKMeans\n", + "from cuml.dask.common import to_dask_df\n", + "from cuml.dask.datasets import make_blobs\n", + "from cuml.metrics import adjusted_rand_score\n", + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "from dask_ml.cluster import KMeans as skKMeans" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Dask Cluster\n", + "\n", + "We can use the `LocalCUDACluster` to start a Dask cluster on a single machine with one worker mapped to each GPU. This is called one-process-per-GPU (OPG). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cluster = LocalCUDACluster(threads_per_worker=1)\n", + "client = Client(cluster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 1000000\n", + "n_features = 2\n", + "\n", + "n_total_partitions = len(list(client.has_what().keys()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### Device\n", + "\n", + "We can generate a dask_cudf.DataFrame of synthetic data for multiple clusters using `cuml.dask.datasets.make_blobs`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_cudf, Y_cudf = make_blobs(n_samples, \n", + " n_features,\n", + " centers = 5, \n", + " n_parts = n_total_partitions,\n", + " cluster_std=0.1, \n", + " verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host\n", + "\n", + "We use `cuml.dask.common.to_dask_df` to convert a dask_cuml.DataFrame using device memory into a dask.DataFrame containing Pandas in host memory. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wait(X_cudf)\n", + "\n", + "X_df = to_dask_df(X_cudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn model\n", + "\n", + "### Fit and predict\n", + "\n", + "Since a scikit-learn equivalent to the multi-node multi-GPU K-means in cuML doesn't exist, we will use Dask-ML's implementation for comparison." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "kmeans_sk = skKMeans(init=\"k-means||\",\n", + " n_clusters=5,\n", + " n_jobs=-1,\n", + " random_state=100)\n", + "\n", + "kmeans_sk.fit(X_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "labels_sk = kmeans_sk.predict(X_df).compute()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit and predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "kmeans_cuml = cuKMeans(init=\"k-means||\",\n", + " n_clusters=5,\n", + " random_state=100)\n", + "\n", + "kmeans_cuml.fit(X_cudf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "labels_cuml = kmeans_cuml.predict(X_cudf).compute()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "score = adjusted_rand_score(labels_sk, labels_cuml.to_pandas().values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = score == 1.0\n", + "print('compare kmeans: cuml vs sklearn labels_ are ' + ('equal' if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/kneighbors_classifier_demo.ipynb b/the_archive/archived_rapids_demos/cuml/kneighbors_classifier_demo.ipynb new file mode 100644 index 00000000..63e7a7a1 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/kneighbors_classifier_demo.ipynb @@ -0,0 +1,206 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Nearest Neighbors Classification Demo\n", + "\n", + "K-nearest neighbors classification uses the labels of neighborhoods around data samples to classify unseen data samples. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information on converting your dataset to cuDF format, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For additional information on cuML's Nearest Neighbors implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#nearest-neighbors-classification" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import numpy as np\n", + "\n", + "from sklearn.datasets import make_blobs\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from sklearn.neighbors import KNeighborsClassifier as skKNC\n", + "from cuml.neighbors import KNeighborsClassifier as cumlKNC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**17\n", + "n_features = 40\n", + "\n", + "n_query = 5000\n", + "\n", + "n_neighbors = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_host_train, y_host_train = make_blobs(\n", + " n_samples=n_samples, n_features=n_features, centers=5, random_state=0)\n", + "\n", + "X_host_train = pd.DataFrame(X_host_train)\n", + "y_host_train = pd.DataFrame(y_host_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_host_test, y_host_test = make_blobs(\n", + " n_samples=n_query, n_features=n_features, centers=5, random_state=0)\n", + "\n", + "X_host_test = pd.DataFrame(X_host_test)\n", + "y_host_test = pd.DataFrame(y_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Device" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_device_train = gd.DataFrame.from_pandas(X_host_train)\n", + "y_device_train = gd.DataFrame.from_pandas(y_host_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_device_test = gd.DataFrame.from_pandas(X_host_test)\n", + "y_device_test = gd.DataFrame.from_pandas(y_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_sk = skKNC(algorithm=\"brute\", n_neighbors=n_neighbors, n_jobs=-1)\n", + "knn_sk.fit(X_host_train, y_host_train)\n", + "\n", + "sk_result = knn_sk.predict(X_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_cuml = cumlKNC(n_neighbors=n_neighbors)\n", + "knn_cuml.fit(X_device_train, y_device_train)\n", + "\n", + "cuml_result = knn_cuml.predict(X_device_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.array_equal(np.asarray(cuml_result.as_gpu_matrix())[:,0], sk_result)\n", + "print('compare knn: cuml vs sklearn classes %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/kneighbors_regressor_demo.ipynb b/the_archive/archived_rapids_demos/cuml/kneighbors_regressor_demo.ipynb new file mode 100644 index 00000000..d15f514f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/kneighbors_regressor_demo.ipynb @@ -0,0 +1,206 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K-Nearest Neighbors Regression Demo\n", + "\n", + "K-nearest neighbors regression uses the labels of neighborhoods around data samples to determine the outputs of unseen data samples. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information on converting your dataset to cuDF format, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For additional information on cuML's Nearest Neighbors implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.neighbors.KNeighborsRegressor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import numpy as np\n", + "\n", + "from sklearn.datasets import make_blobs\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from sklearn.neighbors import KNeighborsRegressor as skKNR\n", + "from cuml.neighbors import KNeighborsRegressor as cumlKNR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**17\n", + "n_features = 40\n", + "\n", + "n_query = 5000\n", + "\n", + "n_neighbors = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_host_train, y_host_train = make_blobs(\n", + " n_samples=n_samples, n_features=n_features, centers=5, random_state=0)\n", + "\n", + "X_host_train = pd.DataFrame(X_host_train)\n", + "y_host_train = pd.DataFrame(y_host_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_host_test, y_host_test = make_blobs(\n", + " n_samples=n_query, n_features=n_features, centers=5, random_state=0)\n", + "\n", + "X_host_test = pd.DataFrame(X_host_test)\n", + "y_host_test = pd.DataFrame(y_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Device" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_device_train = gd.DataFrame.from_pandas(X_host_train)\n", + "y_device_train = gd.DataFrame.from_pandas(y_host_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_device_test = gd.DataFrame.from_pandas(X_host_test)\n", + "y_device_test = gd.DataFrame.from_pandas(y_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_sk = skKNR(algorithm=\"brute\", n_neighbors=n_neighbors, n_jobs=-1)\n", + "knn_sk.fit(X_host_train, y_host_train)\n", + "\n", + "sk_result = knn_sk.predict(X_host_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_cuml = cumlKNR(n_neighbors=n_neighbors)\n", + "knn_cuml.fit(X_device_train, y_device_train)\n", + "\n", + "cuml_result = knn_cuml.predict(X_device_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(np.asarray(cuml_result.as_gpu_matrix()), sk_result, atol=1e-9)\n", + "print('compare knn: cuml vs sklearn classes %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/linear_regression_demo.ipynb b/the_archive/archived_rapids_demos/cuml/linear_regression_demo.ipynb new file mode 100644 index 00000000..28f08516 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/linear_regression_demo.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Linear Regression\n", + "\n", + "**Linear Regression** is a simple machine learning model where the response y is modelled by a linear combination of the predictors in X.\n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For information about cuML's linear regression API: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.LinearRegression\n", + "\n", + "**NOTE:** This notebook is not expected to run on a GPU with under 16GB of RAM with its current value for `n_smaples`. Please change `n_samples` from `2**20` to `2**19`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "from cuml import make_regression, train_test_split\n", + "from cuml.linear_model import LinearRegression as cuLinearRegression\n", + "from cuml.metrics.regression import r2_score\n", + "from sklearn.linear_model import LinearRegression as skLinearRegression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**20 #If you are running on a GPU with less than 16GB RAM, please change to 2**19 or you could run out of memory\n", + "n_features = 399\n", + "\n", + "random_state = 23" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X, y = make_regression(n_samples=n_samples, n_features=n_features, random_state=random_state)\n", + "\n", + "X = cudf.DataFrame.from_gpu_matrix(X)\n", + "y = cudf.DataFrame.from_gpu_matrix(y)[0]\n", + "\n", + "X_cudf, X_cudf_test, y_cudf, y_cudf_test = train_test_split(X, y, test_size = 0.2, random_state=random_state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "X_train = X_cudf.to_pandas()\n", + "X_test = X_cudf_test.to_pandas()\n", + "y_train = y_cudf.to_pandas()\n", + "y_test = y_cudf_test.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "ols_sk = skLinearRegression(fit_intercept=True,\n", + " normalize=True,\n", + " n_jobs=-1)\n", + "\n", + "ols_sk.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_sk = ols_sk.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_sk = r2_score(y_cudf_test, predict_sk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit, predict and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "ols_cuml = cuLinearRegression(fit_intercept=True,\n", + " normalize=True,\n", + " algorithm='eig')\n", + "\n", + "ols_cuml.fit(X_cudf, y_cudf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_cuml = ols_cuml.predict(X_cudf_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_cuml = r2_score(y_cudf_test, predict_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"R^2 score (SKL): %s\" % r2_score_sk)\n", + "print(\"R^2 score (cuML): %s\" % r2_score_cuml)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/metrics_demo.ipynb b/the_archive/archived_rapids_demos/cuml/metrics_demo.ipynb new file mode 100644 index 00000000..9d6918a8 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/metrics_demo.ipynb @@ -0,0 +1,218 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Metrics for evaluating machine learning models\n", + "This notebook explores different metrics that can be used for evaluating various machine learning models. Here we use data obtained from functions provided by sklearn." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import cuml\n", + "import sklearn\n", + "\n", + "from cuml.cluster import KMeans\n", + "from cuml.ensemble import RandomForestRegressor as curfr\n", + "from cuml.ensemble import RandomForestClassifier as curfc\n", + "from cuml.manifold.umap import UMAP as cuUMAP\n", + "\n", + "from sklearn import manifold\n", + "from sklearn.datasets import make_classification, make_regression\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.datasets.samples_generator import make_blobs\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**10\n", + "n_features = 100\n", + "n_info = 70" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the required datasets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "centers = round(n_samples*0.4)\n", + "X_blobs, y_blobs = make_blobs(n_samples=n_samples, centers=centers,\n", + " n_features=n_features)\n", + "X_class, y_class = make_classification(n_samples=n_samples, n_features=n_features,\n", + " n_clusters_per_class=1, n_informative=n_info,\n", + " random_state=123, n_classes=2)\n", + "X_class = X_class.astype(np.float32)\n", + "y_class = y_class.astype(np.int32)\n", + "X_class_train, X_class_test, y_class_train, y_class_test = train_test_split(X_class,\n", + " y_class, train_size=0.8,\n", + " random_state=10)\n", + "X_reg, y_reg = make_regression(n_samples=n_samples, n_features=n_features,\n", + " n_informative=n_info, random_state=123)\n", + "X_reg = X_reg.astype(np.float32)\n", + "y_reg = y_reg.astype(np.float32)\n", + "X_reg_train, X_reg_test, y_reg_train, y_reg_test = train_test_split(X_reg,\n", + " y_reg, train_size=0.8,\n", + " random_state=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Trustworthiness\n", + "It is a measure of the extent to which the local structure is retained in the embedding of the model. Therefore, if a sample predicted by the model lied within the unexpected region of the nearest neighbors, then those samples would be penalized. For more information on the trustworthiness metric please refer to: https://scikit-learn.org/dev/modules/generated/sklearn.manifold.t_sne.trustworthiness.html\n", + "\n", + "the documentation for cuML's implementation of the trustworthiness metric is: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.metrics.trustworthiness.trustworthiness\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_embedded = cuUMAP(n_neighbors=10).fit_transform(X_blobs)\n", + "X_embedded = X_embedded.astype(np.float32)\n", + "\n", + "cu_score = cuml.metrics.trustworthiness(X_blobs, X_embedded)\n", + "sk_score = sklearn.manifold.trustworthiness(X_blobs, X_embedded)\n", + "\n", + "print(\" cuml's trustworthiness score : \", cu_score)\n", + "print(\" sklearn's trustworthiness score : \", sk_score)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adjusted random index\n", + "This is a metrics which is used to measure the similarity between two data clusters, and it is adjusted to take into consideration the chance grouping of elements.\n", + "For more information on Adjusted random index please refer to: https://en.wikipedia.org/wiki/Rand_index" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_kmeans = KMeans(n_clusters=10)\n", + "X_blobs = StandardScaler().fit_transform(X_blobs)\n", + "cu_y_pred = cuml_kmeans.fit_predict(X_blobs).to_array()\n", + "\n", + "cu_adjusted_rand_index = cuml.metrics.cluster.adjusted_rand_score(y_blobs, cu_y_pred)\n", + "sk_adjusted_rand_index = sklearn.metrics.cluster.adjusted_rand_score(y_blobs, cu_y_pred)\n", + "\n", + "print(\" cuml's adjusted random index score : \", cu_adjusted_rand_index)\n", + "print(\" sklearn's adjusted random index score : \", sk_adjusted_rand_index)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## R^2 score\n", + "R^2 score is also known as the coefficient of determination. It is used as a metric for scoring regression models. It scores the output of the model based on the proportion of total variation of the model.\n", + "For more information on the R^2 score metrics please refer to: https://en.wikipedia.org/wiki/Coefficient_of_determination\n", + "\n", + "For more information on cuML's implementation of the r2 score metrics please refer to : https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.metrics.regression.r2_score\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_reg_model = curfr(max_features=1.0, n_bins=8, max_depth=10,\n", + " split_algo=0, min_rows_per_node=2,\n", + " n_estimators=30)\n", + "cuml_reg_model.fit(X_reg_train,y_reg_train)\n", + "cu_preds = cuml_reg_model.predict(X_reg_test,y_reg_test)\n", + "\n", + "cu_r2 = cuml.metrics.r2_score(y_reg_test, cu_preds)\n", + "sk_r2 = sklearn.metrics.r2_score(y_reg_test, cu_preds)\n", + "\n", + "print(\"cuml's r2 score : \", cu_r2)\n", + "print(\"sklearn's r2 score : \", sk_r2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Accuracy score\n", + "Accuracy score is the ratio of correct predictions to the total number of predictions. It is used to measure the performance of classification models. \n", + "For more information on the accuracy score metric please refer to: https://en.wikipedia.org/wiki/Accuracy_and_precision\n", + "\n", + "For more information on cuML's implementation of accuracy score metrics please refer to: https://rapidsai.github.io/projects/cuml/en/0.10.0/api.html#cuml.metrics.accuracy.accuracy_score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_class_model = curfc(max_features=1.0, n_bins=8, max_depth=10,\n", + " split_algo=0, min_rows_per_node=2,\n", + " n_estimators=30)\n", + "cuml_class_model.fit(X_class_train,y_class_train)\n", + "cu_preds = cuml_class_model.predict(X_class_test,y_class_test)\n", + "\n", + "cu_accuracy = cuml.metrics.accuracy_score(y_class_test, cu_preds)\n", + "sk_accuracy = sklearn.metrics.accuracy_score(y_class_test, cu_preds)\n", + "\n", + "print(\"cuml's accuracy score : \", cu_accuracy)\n", + "print(\"sklearn's accuracy score : \", sk_accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/mini_batch_sgd_demo.ipynb b/the_archive/archived_rapids_demos/cuml/mini_batch_sgd_demo.ipynb new file mode 100644 index 00000000..feadee1f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/mini_batch_sgd_demo.ipynb @@ -0,0 +1,394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mini Batch SGD classifier and regressor\n", + "Mini Batch SGD (MBSGD) models are linear models which are fitted by minimizing a regularized empirical loss with mini-batch SGD. In this notebook we compare the performance of cuMl's MBSGD classifier and regressor models with their respective scikit-learn counterparts.\n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input.\n", + "\n", + "For information about cuDF, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf as gd\n", + "import cuml\n", + "import numpy as np\n", + "import pandas as pd\n", + "import sklearn\n", + "\n", + "from sklearn import linear_model\n", + "from sklearn.datasets.samples_generator import make_classification, make_regression\n", + "from sklearn.metrics import accuracy_score, r2_score\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define parameters\n", + "\n", + "### Data parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num_samples = 2**13\n", + "num_features = 300\n", + "n_informative = 270\n", + "random_state = 0\n", + "train_size = 0.8\n", + "datatype = np.float32" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learning_rate = 'constant'\n", + "penalty = 'elasticnet'\n", + "eta0 = 0.005\n", + "max_iter = 100\n", + "fit_intercept = True\n", + "tol=0.0\n", + "batch_size=2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate data\n", + "\n", + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_class, y_class = make_classification(n_samples=num_samples, n_features=num_features,\n", + " n_informative=n_informative, random_state=random_state)\n", + "# change the datatype of the input data\n", + "X_class = X_class.astype(datatype)\n", + "y_class = y_class.astype(datatype)\n", + "\n", + "# convert numpy arrays to pandas dataframe\n", + "X_class = pd.DataFrame(X_class)\n", + "y_class = pd.DataFrame(y_class)\n", + "\n", + "X_class_train, X_class_test, y_class_train, y_class_test = train_test_split(X_class, y_class,\n", + " train_size=train_size,\n", + " random_state=random_state)\n", + "X_reg, y_reg = make_regression(n_samples=num_samples, n_features=num_features,\n", + " n_informative=n_informative, random_state=random_state)\n", + "\n", + "# change the datatype of the input data\n", + "X_reg = X_reg.astype(datatype)\n", + "y_reg = y_reg.astype(datatype)\n", + "\n", + "# convert numpy arrays to pandas dataframe\n", + "X_reg = pd.DataFrame(X_reg)\n", + "y_reg = pd.DataFrame(y_reg)\n", + "\n", + "X_reg_train, X_reg_test, y_reg_train, y_reg_test = train_test_split(X_reg, y_reg,\n", + " train_size=train_size,\n", + " random_state=random_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "# classification dataset\n", + "X_class_cudf = gd.DataFrame.from_pandas(X_class_train)\n", + "X_class_cudf_test = gd.DataFrame.from_pandas(X_class_test)\n", + "\n", + "y_class_cudf = gd.Series(y_class_train.values[:,0])\n", + "\n", + "# regression dataset\n", + "X_reg_cudf = gd.DataFrame.from_pandas(X_reg_train)\n", + "X_reg_cudf_test = gd.DataFrame.from_pandas(X_reg_test)\n", + "\n", + "y_reg_cudf = gd.Series(y_reg_train.values[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Classification :\n", + "\n", + "#### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_sgd_classifier = sklearn.linear_model.SGDClassifier(learning_rate=learning_rate,\n", + " eta0=eta0,\n", + " max_iter=max_iter,\n", + " fit_intercept=fit_intercept,\n", + " tol=tol,\n", + " penalty=penalty,\n", + " random_state=random_state)\n", + "\n", + "skl_sgd_classifier.fit(X_class_train, y_class_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_class_pred = skl_sgd_classifier.predict(X_class_test)\n", + "skl_class_acc = accuracy_score(skl_class_pred, y_class_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Regression :\n", + "\n", + "#### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_sgd_regressor = sklearn.linear_model.SGDRegressor(learning_rate=learning_rate,\n", + " eta0=eta0,\n", + " max_iter=max_iter,\n", + " fit_intercept=fit_intercept,\n", + " tol=tol,\n", + " penalty=penalty,\n", + " random_state=random_state)\n", + "\n", + "skl_sgd_regressor.fit(X_reg_train, y_reg_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_reg_pred = skl_sgd_regressor.predict(X_reg_test)\n", + "skl_reg_r2 = r2_score(skl_reg_pred, y_reg_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Classification:\n", + "\n", + "#### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cu_mbsgd_classifier = cuml.linear_model.MBSGDClassifier(learning_rate=learning_rate,\n", + " eta0=eta0,\n", + " epochs=max_iter,\n", + " fit_intercept=fit_intercept,\n", + " batch_size=batch_size,\n", + " tol=tol,\n", + " penalty=penalty)\n", + "\n", + "cu_mbsgd_classifier.fit(X_class_cudf, y_class_cudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cu_class_pred = cu_mbsgd_classifier.predict(X_class_cudf_test).to_array()\n", + "cu_class_acc = accuracy_score(cu_class_pred, y_class_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Regression:\n", + "\n", + "#### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cu_mbsgd_regressor = cuml.linear_model.MBSGDRegressor(learning_rate=learning_rate,\n", + " eta0=eta0,\n", + " epochs=max_iter,\n", + " fit_intercept=fit_intercept,\n", + " batch_size=batch_size,\n", + " tol=tol,\n", + " penalty=penalty)\n", + "\n", + "cu_mbsgd_regressor.fit(X_reg_cudf, y_reg_cudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cu_reg_pred = cu_mbsgd_regressor.predict(X_reg_cudf_test).to_array()\n", + "cu_reg_r2 = r2_score(cu_reg_pred, y_reg_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "### Classification" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Sklearn's R^2 score for classification : %s\" % skl_class_acc)\n", + "print(\"cuML's R^2 score for classification : %s\" % cu_class_acc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Regression" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Sklearn's R^2 score for regression : %s\" % skl_reg_r2)\n", + "print(\"cuML's R^2 score for regression : %s\" % cu_reg_r2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/nearest_neighbors_demo.ipynb b/the_archive/archived_rapids_demos/cuml/nearest_neighbors_demo.ipynb new file mode 100644 index 00000000..2b8cd81d --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/nearest_neighbors_demo.ipynb @@ -0,0 +1,218 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Nearest Neighbors\n", + "\n", + "Nearest Neighbors enables the query of the k-nearest neighbors from a set of input samples." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information on converting your dataset to cuDF format, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For additional information on cuML's Nearest Neighbors implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#nearest-neighbors" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import numpy as np\n", + "from cuml.datasets import make_blobs\n", + "from cuml.neighbors import NearestNeighbors as cuNearestNeighbors\n", + "from sklearn.neighbors import NearestNeighbors as skNearestNeighbors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**17\n", + "n_features = 40\n", + "\n", + "n_query = 2**13\n", + "n_neighbors = 4\n", + "random_state = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "device_data, _ = make_blobs(n_samples=n_samples,\n", + " n_features=n_features,\n", + " centers=5,\n", + " random_state=random_state)\n", + "\n", + "device_data = cudf.DataFrame.from_gpu_matrix(device_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "host_data = device_data.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "## Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_sk = skNearestNeighbors(algorithm=\"brute\",\n", + " n_jobs=-1)\n", + "knn_sk.fit(host_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "D_sk, I_sk = knn_sk.kneighbors(host_data[:n_query], n_neighbors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "knn_cuml = cuNearestNeighbors()\n", + "knn_cuml.fit(device_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "D_cuml, I_cuml = knn_cuml.kneighbors(device_data[:n_query], n_neighbors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results\n", + "\n", + "cuML currently uses FAISS for exact nearest neighbors search, which limits inputs to single-precision. This results in possible round-off errors when floats of different magnitude are added. As a result, it's very likely that the cuML results will not match Sciklearn's nearest neighbors exactly. You can read more in the [FAISS wiki](https://github.com/facebookresearch/faiss/wiki/FAQ#why-do-i-get-weird-results-with-brute-force-search-on-vectors-with-large-components).\n", + "\n", + "### Distances" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(D_sk, D_cuml.as_gpu_matrix(), atol=1e-3)\n", + "print('compare knn: cuml vs sklearn distances %s'%('equal'if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Indices" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sk_sorted = np.sort(I_sk, axis=1)\n", + "cuml_sorted = np.sort(I_cuml.as_gpu_matrix(), axis=1)\n", + "\n", + "diff = sk_sorted - cuml_sorted\n", + "\n", + "passed = (len(diff[diff!=0]) / n_samples) < 1e-9\n", + "print('compare knn: cuml vs sklearn indexes %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/pca_demo.ipynb b/the_archive/archived_rapids_demos/cuml/pca_demo.ipynb new file mode 100644 index 00000000..2be63df9 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/pca_demo.ipynb @@ -0,0 +1,267 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Principal Componenet Analysis (PCA)\n", + "\n", + "The PCA algorithm is a dimensionality reduction algorithm which works really well for datasets which have correlated columns. It combines the features of X in linear combination such that the new components capture the most information of the data. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For more information about cuDF, refer to the cuDF documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For more information about cuML's PCA implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.PCA" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import numpy as np\n", + "from cuml.datasets import make_blobs\n", + "from cuml.decomposition import PCA as cuPCA\n", + "from sklearn.decomposition import PCA as skPCA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**15\n", + "n_features = 400\n", + "\n", + "n_components = 2\n", + "whiten = False\n", + "svd_solver = \"full\"\n", + "random_state = 23" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "device_data, _ = make_blobs(n_samples=n_samples, \n", + " n_features=n_features, \n", + " centers=5, \n", + " random_state=random_state)\n", + "\n", + "device_data = cudf.DataFrame.from_gpu_matrix(device_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "host_data = device_data.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "pca_sk = skPCA(n_components=n_components,\n", + " svd_solver=svd_solver,\n", + " whiten=whiten,\n", + " random_state=random_state)\n", + "\n", + "result_sk = pca_sk.fit_transform(host_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "pca_cuml = cuPCA(n_components=n_components,\n", + " svd_solver=svd_solver,\n", + " whiten=whiten,\n", + " random_state=random_state)\n", + "\n", + "result_cuml = pca_cuml.fit_transform(device_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "### Singular Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.singular_values_, \n", + " pca_cuml.singular_values_.to_array(), \n", + " atol=0.01)\n", + "print('compare pca: cuml vs sklearn singular_values_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explained Variance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.explained_variance_, \n", + " pca_cuml.explained_variance_.to_array(), \n", + " atol=1e-6)\n", + "print('compare pca: cuml vs sklearn explained_variance_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explained Variance Ratio" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.explained_variance_ratio_, \n", + " pca_cuml.explained_variance_ratio_.to_array(), \n", + " atol=1e-6)\n", + "print('compare pca: cuml vs sklearn explained_variance_ratio_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Components" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.components_, \n", + " np.asarray(pca_cuml.components_.as_gpu_matrix()), \n", + " atol=1e-6)\n", + "print('compare pca: cuml vs sklearn components_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transform" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(result_sk, np.asarray(result_cuml.as_gpu_matrix()), atol=1e-1)\n", + "print('compare pca: cuml vs sklearn transformed results %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/pca_mnmg_demo.ipynb b/the_archive/archived_rapids_demos/cuml/pca_mnmg_demo.ipynb new file mode 100644 index 00000000..ef027745 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/pca_mnmg_demo.ipynb @@ -0,0 +1,292 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Principal Componenet Analysis (PCA) Multi-Node Multi-GPU (MNMG) Demo\n", + "\n", + "PCA is a dimensionality reduction algorithm that works really well for datasets which have correlated columns. It combines the features of X in linear combination such that the new components capture the most information, or variance, of the data. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike the single-GPU implementation, The MNMG PCA API currently requires a Dask cuDF Dataframe as input. `transform()` also returns a Dask cuDF Dataframe. The Dask cuDF Dataframe API is very similar to the Dask DataFrame API, but underlying Dataframes are cuDF, rather than Pandas.\n", + "\n", + "For information on converting your dataset to Dask cuDF format: https://rapidsai.github.io/projects/cudf/en/stable/dask-cudf.html#multi-gpu-with-dask-cudf\n", + "\n", + "For more information about cuML's PCA implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.dask.decomposition.PCA" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from cuml.dask.common import to_dask_df\n", + "from cuml.dask.datasets import make_blobs\n", + "\n", + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "\n", + "from dask_ml.decomposition import PCA as skPCA\n", + "from cuml.dask.decomposition import PCA as cumlPCA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Dask Cluster\n", + "\n", + "We can use the `LocalCUDACluster` to start a Dask cluster on a single machine with one worker mapped to each GPU. This is called one-process-per-GPU (OPG). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cluster = LocalCUDACluster(threads_per_worker=1)\n", + "client = Client(cluster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**18\n", + "n_features = 20\n", + "\n", + "n_components = 2\n", + "whiten = False\n", + "random_state = 32\n", + "svd_solver = \"full\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_dcudf, _ = make_blobs(n_samples, \n", + " n_features, \n", + " centers=1, \n", + " cluster_std=0.01,\n", + " random_state=random_state)\n", + "wait(X_dcudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host\n", + "\n", + "Dask-ML accepts a Dask.Array, instead of Dask.Dataframe, as input. Dask ML also wants to know the exact sizes of the partitions so we use the argument `lengths=True` to get this information from the workers. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_ddf = to_dask_df(X_dcudf).to_dask_array(lengths=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "pca_sk = skPCA(n_components=n_components,\n", + " svd_solver=svd_solver, \n", + " whiten=whiten, \n", + " random_state=random_state)\n", + "\n", + "result_sk = pca_sk.fit_transform(X_ddf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "pca_cuml = cumlPCA(n_components=n_components,\n", + " svd_solver=svd_solver, \n", + " whiten=whiten,\n", + " random_state=random_state)\n", + "\n", + "result_cuml = pca_cuml.fit_transform(X_dcudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "### Singular Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.singular_values_, \n", + " pca_cuml.singular_values_.to_array(), \n", + " atol=0.01)\n", + "print('compare pca: cuml vs sklearn singular_values_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explained Variance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.explained_variance_, \n", + " pca_cuml.explained_variance_.to_array(), \n", + " atol=1e-6)\n", + "print('compare pca: cuml vs sklearn explained_variance_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explained Variance Ratio" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(pca_sk.explained_variance_ratio_, \n", + " pca_cuml.explained_variance_ratio_.to_array(), \n", + " atol=1e-6)\n", + "print('compare pca: cuml vs sklearn explained_variance_ratio_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Components" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "sk_components = np.abs(pca_sk.components_)\n", + "cuml_components = np.abs(np.asarray(pca_cuml.components_.as_gpu_matrix()))\n", + "\n", + "passed = np.allclose(sk_components, cuml_components, atol=1e-3)\n", + "print('compare pca: cuml vs sklearn components_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transform" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(result_sk, np.asarray(result_cuml.compute().as_gpu_matrix()), atol=1e-1)\n", + "print('compare pca: cuml vs sklearn transformed results %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/random_forest_demo.ipynb b/the_archive/archived_rapids_demos/cuml/random_forest_demo.ipynb new file mode 100644 index 00000000..324b0645 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/random_forest_demo.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random Forest and Pickling\n", + "The Random Forest algorithm is a classification method which builds several decision trees, and aggregates each of their outputs to make a prediction.\n", + "\n", + "In this notebook we will train a scikit-learn and a cuML Random Forest Classification model. Then we save the cuML model for future use with Python's `pickling` mechanism and demonstrate how to re-load it for prediction. We also compare the results of the scikit-learn, non-pickled and pickled cuML models.\n", + "\n", + "Note that the underlying algorithm in cuML for tree node splits differs from that used in scikit-learn.\n", + "\n", + "For information on converting your dataset to cuDF format, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable)\n", + "\n", + "For additional information cuML's random forest model: https://rapidsai.github.io/projects/cuml/en/stable/api.html#random-forest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "import numpy as np\n", + "import pandas as pd\n", + "import pickle\n", + "\n", + "from cuml.ensemble import RandomForestClassifier as curfc\n", + "\n", + "from sklearn.ensemble import RandomForestClassifier as skrfc\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.datasets import make_classification\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**17\n", + "n_features = 399\n", + "n_info = 300\n", + "data_type = np.float32" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X,y = make_classification(n_samples=n_samples,\n", + " n_features=n_features,\n", + " n_informative=n_info,\n", + " random_state=123, n_classes=2)\n", + "\n", + "X = pd.DataFrame(X.astype(data_type))\n", + "# cuML Random Forest Classifier requires the labels to be integers\n", + "y = pd.Series(y.astype(np.int32))\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y,\n", + " test_size = 0.2,\n", + " random_state=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_cudf_train = cudf.DataFrame.from_pandas(X_train)\n", + "X_cudf_test = cudf.DataFrame.from_pandas(X_test)\n", + "\n", + "y_cudf_train = cudf.Series(y_train.values)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sk_model = skrfc(n_estimators=40,\n", + " max_depth=16,\n", + " max_features=1.0,\n", + " random_state=10)\n", + "\n", + "sk_model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sk_predict = sk_model.predict(X_test)\n", + "sk_acc = accuracy_score(y_test, sk_predict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cuml_model = curfc(n_estimators=40,\n", + " max_depth=16,\n", + " max_features=1.0,\n", + " seed=10)\n", + "\n", + "cuml_model.fit(X_cudf_train, y_cudf_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "fil_preds_orig = cuml_model.predict(X_cudf_test)\n", + "\n", + "fil_acc_orig = accuracy_score(y_test, fil_preds_orig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pickle the cuML random forest classification model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'cuml_random_forest_model.sav'\n", + "# save the trained cuml model into a file\n", + "pickle.dump(cuml_model, open(filename, 'wb'))\n", + "# delete the previous model to ensure that there is no leakage of pointers.\n", + "# this is not strictly necessary but just included here for demo purposes.\n", + "del cuml_model\n", + "# load the previously saved cuml model from a file\n", + "pickled_cuml_model = pickle.load(open(filename, 'rb'))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict using the pickled model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "pred_after_pickling = pickled_cuml_model.predict(X_cudf_test)\n", + "\n", + "fil_acc_after_pickling = accuracy_score(y_test, pred_after_pickling)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"CUML accuracy of the RF model before pickling: %s\" % fil_acc_orig)\n", + "print(\"CUML accuracy of the RF model after pickling: %s\" % fil_acc_after_pickling)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"SKL accuracy: %s\" % sk_acc)\n", + "print(\"CUML accuracy before pickling: %s\" % fil_acc_orig)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/random_forest_mnmg_demo.ipynb b/the_archive/archived_rapids_demos/cuml/random_forest_mnmg_demo.ipynb new file mode 100644 index 00000000..4176481e --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/random_forest_mnmg_demo.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random Forests Multi-node, Multi-GPU demo\n", + "\n", + "The experimental cuML multi-node, multi-GPU (MNMG) implementation of random forests leverages Dask to do embarrassingly-parallel model fitting. For a random forest with `N` trees being fit by `W` workers, each worker will build `N / W` trees. During inference, predictions from all `N` trees will be combined.\n", + "\n", + "The caller is responsible for partitioning the data efficiently via Dask. To build an accurate model, it's important to ensure that each worker has a representative chunk of the data. This can come by distributing the data evenly after ensuring that it is well shuffled. Or, given sufficient memory capacity, the caller can replicate the data to all workers. This approach will most closely simulate the single-GPU building approach.\n", + "\n", + "**Note:** cuML 0.9 contains the first, experimental preview release of the MNMG random forest model. The API is subject to change in future releases, and some known limitations remain (listed in the documentation).\n", + "\n", + "For more information on MNMG Random Forest models, see the documentation:\n", + " * https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.dask.ensemble.RandomForestClassifier\n", + " * https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.dask.ensemble.RandomForestRegressor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn\n", + "\n", + "import pandas as pd\n", + "import cudf\n", + "import cuml\n", + "\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn import model_selection, datasets\n", + "\n", + "from cuml.dask.common import utils as dask_utils\n", + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "import dask_cudf\n", + "\n", + "from cuml.dask.ensemble import RandomForestClassifier as cumlDaskRF\n", + "from sklearn.ensemble import RandomForestClassifier as sklRF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Dask cluster" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This will use all GPUs on the local host by default\n", + "cluster = LocalCUDACluster(threads_per_worker=1)\n", + "c = Client(cluster)\n", + "\n", + "# Query the client for all connected workers\n", + "workers = c.has_what().keys()\n", + "n_workers = len(workers)\n", + "n_streams = 8 # Performance optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters\n", + "\n", + "In addition to the number of examples, random forest fitting performance depends heavily on the number of columns in a dataset and (especially) on the maximum depth to which trees are allowed to grow. Lower `max_depth` values can greatly speed up fitting, though going too low may reduce accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Data parameters\n", + "train_size = 100000\n", + "test_size = 1000\n", + "n_samples = train_size + test_size\n", + "n_features = 20\n", + "\n", + "# Random Forest building parameters\n", + "max_depth = 12\n", + "n_bins = 16\n", + "n_trees = 1000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data on host\n", + "\n", + "In this case, we generate data on the client (initial process) and pass it to the workers. You could also load data directly onto the workers via, for example, `dask_cudf.read_csv()`. See also the k-means MNMG notebook (kmeans_mnmg_demo.ipynb) for an alternative method of generating data on the worker nodes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X, y = datasets.make_classification(n_samples=n_samples, n_features=n_features,\n", + " n_clusters_per_class=1, n_informative=int(n_features / 3),\n", + " random_state=123, n_classes=5)\n", + "y = y.astype(np.int32)\n", + "X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=test_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Distribute data to worker GPUs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_partitions = n_workers\n", + "\n", + "# First convert to cudf (with real data, you would likely load in cuDF format to start)\n", + "X_train_cudf = cudf.DataFrame.from_pandas(pd.DataFrame(X_train))\n", + "y_train_cudf = cudf.Series(y_train)\n", + "\n", + "# Partition with Dask\n", + "# In this case, each worker will train on 1/n_partitions fraction of the data\n", + "X_train_dask = dask_cudf.from_cudf(X_train_cudf, npartitions=n_partitions)\n", + "y_train_dask = dask_cudf.from_cudf(y_train_cudf, npartitions=n_partitions)\n", + "\n", + "# Persist to cache the data in active memory\n", + "X_train_dask, y_train_dask = \\\n", + " dask_utils.persist_across_workers(c, [X_train_dask, y_train_dask], workers=workers)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build a scikit-learn model (single node)\n", + "\n", + "Dask does not currently have a simple wrapper for scikit-learn's RandomForest, but scikit-learn does offer multi-CPU support via joblib, which we'll use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "# Use all avilable CPU cores\n", + "skl_model = sklRF(max_depth=max_depth, n_estimators=n_trees, n_jobs=-1)\n", + "skl_model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the distributed cuML model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "cuml_model = cumlDaskRF(max_depth=max_depth, n_estimators=n_trees, n_bins=n_bins, n_streams=n_streams)\n", + "cuml_model.fit(X_train_dask, y_train_dask)\n", + "\n", + "wait(cuml_model.rfs) # Allow asynchronous training tasks to finish" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Predict and check accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "skl_y_pred = skl_model.predict(X_test)\n", + "cuml_y_pred = cuml_model.predict(X_test)\n", + "\n", + "# Due to randomness in the algorithm, you may see slight variation in accuracies\n", + "print(\"SKLearn accuracy: \", accuracy_score(y_test, skl_y_pred))\n", + "print(\"CuML accuracy: \", accuracy_score(y_test, cuml_y_pred))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/ridge_regression_demo.ipynb b/the_archive/archived_rapids_demos/cuml/ridge_regression_demo.ipynb new file mode 100644 index 00000000..ff0f9f6b --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/ridge_regression_demo.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ridge Regression\n", + "\n", + "**Ridge Regression** extends linear regression by providing L2 regularization of the coefficients. It can reduce the variance of the predictors, and improves the conditioning of the problem.\n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For information about cuML's ridge regression API: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.Ridge.\n", + "\n", + "**NOTE:** This notebook is not expected to run on a GPU with under 16GB of RAM with its current value for `n_smaples`. Please change `n_samples` from `2**20` to `2**19`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudf\n", + "from cuml import make_regression, train_test_split\n", + "from cuml.metrics.regression import r2_score\n", + "from cuml.linear_model import Ridge as cuRidge\n", + "from sklearn.linear_model import Ridge as skRidge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**20 #If you are running on a GPU with less than 16GB RAM, please change to 2**19 or you could run out of memory\n", + "n_features = 399\n", + "\n", + "random_state = 23" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%time\n", + "X, y = make_regression(n_samples=n_samples, n_features=n_features, random_state=0)\n", + "\n", + "X = cudf.DataFrame.from_gpu_matrix(X)\n", + "y = cudf.DataFrame.from_gpu_matrix(y)[0]\n", + "\n", + "X_cudf, X_cudf_test, y_cudf, y_cudf_test = train_test_split(X, y, test_size = 0.2, random_state=random_state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset from GPU memory to host memory.\n", + "# This is done to later compare CPU and GPU results.\n", + "X_train = X_cudf.to_pandas()\n", + "X_test = X_cudf_test.to_pandas()\n", + "y_train = y_cudf.to_pandas()\n", + "y_test = y_cudf_test.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit, predit and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "ridge_sk = skRidge(fit_intercept=False, normalize=True, alpha=0.1)\n", + "\n", + "ridge_sk.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_sk= ridge_sk.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_sk = r2_score(y_cudf_test, predict_sk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model\n", + "\n", + "### Fit, predit and evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%time\n", + "# Run the cuml ridge regression model to fit the training dataset.\n", + "# Eig is the faster algorithm, but svd is more accurate.\n", + "# In general svd uses significantly more memory and is slower than eig.\n", + "# If using CUDA 10.1, the memory difference is even bigger than in the other supported CUDA versions\n", + "ridge_cuml = cuRidge(fit_intercept=False, normalize=True, solver='eig', alpha=0.1)\n", + "\n", + "ridge_cuml.fit(X_cudf, y_cudf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "predict_cuml = ridge_cuml.predict(X_cudf_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "r2_score_cuml = r2_score(y_cudf_test, predict_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"R^2 score (SKL): %s\" % r2_score_sk)\n", + "print(\"R^2 score (cuML): %s\" % r2_score_cuml)" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/sgd_demo.ipynb b/the_archive/archived_rapids_demos/cuml/sgd_demo.ipynb new file mode 100644 index 00000000..2d473834 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/sgd_demo.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Stochastic Gradient Descent (SGD) \n", + "\n", + "Stochastic gradient descent is an iterative algorithm that optimizes an objective function by using samples from the dataset. cuML's implementation is mini-batch SGD (MBSGD), which is not implemented by Scikit-learn." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information about cuDF, refer to the documentation: https://docs.rapids.ai/api/cudf/stable\n", + "\n", + "For information about cuML's mini-batch SGD implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#stochastic-gradient-descent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "from sklearn.datasets import make_regression\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "from cuml.linear_model import MBSGDRegressor as cumlSGD\n", + "from sklearn.linear_model import SGDRegressor as skSGD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**20\n", + "n_features = 399\n", + "\n", + "learning_rate = 'adaptive'\n", + "penalty = 'elasticnet'\n", + "loss = 'squared_loss'\n", + "max_iter = 500" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X,y = make_regression(n_samples=n_samples, n_features=n_features, random_state=0)\n", + "\n", + "X = pd.DataFrame(X)\n", + "y = pd.Series(y)\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_cudf = gd.DataFrame.from_pandas(X_train)\n", + "X_cudf_test = gd.DataFrame.from_pandas(X_test)\n", + "\n", + "y_cudf = gd.Series(y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model\n", + "\n", + "### Fit " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sgd_sk = skSGD(learning_rate=learning_rate, \n", + " eta0=0.07,\n", + " max_iter=max_iter,\n", + " tol=0.001,\n", + " fit_intercept=True,\n", + " penalty=penalty,\n", + " loss=loss)\n", + "\n", + "sgd_sk.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "y_sk = sgd_sk.predict(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "error_sk = mean_squared_error(y_test,y_sk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sgd_cuml = cumlSGD(learning_rate=learning_rate, \n", + " eta0=0.07, \n", + " epochs=max_iter,\n", + " batch_size=512,\n", + " tol=0.001, \n", + " penalty=penalty, \n", + " loss=loss)\n", + "\n", + "sgd_cuml.fit(X_cudf, y_cudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "y_cuml = sgd_cuml.predict(X_cudf_test).to_array().ravel()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "error_cuml = mean_squared_error(y_test,y_cuml)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"SKL MSE(y): %s\" % error_sk)\n", + "print(\"CUML MSE(y): %s\" % error_cuml)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/svm_demo.ipynb b/the_archive/archived_rapids_demos/cuml/svm_demo.ipynb new file mode 100644 index 00000000..99314e7f --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/svm_demo.ipynb @@ -0,0 +1,360 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Support Vector Machine\n", + "Support vector machines are supervised machine learning methods that can be used for classification and regression. \n", + "\n", + "The SVC classifier and SVR regressor can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames/Series as the input.\n", + "\n", + "For information on converting your dataset to cuDF documentation: https://docs.rapids.ai/api/cudf/stable/\n", + "\n", + "For more information about cuML's Support Vector Classifier: https://docs.rapids.ai/api/cuml/stable/\n", + "\n", + "## 1. Preparation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import cuml.svm \n", + "import sklearn.svm\n", + "\n", + "from sklearn.datasets import make_gaussian_quantiles\n", + "from sklearn.datasets import make_friedman1\n", + "from sklearn.model_selection import train_test_split\n", + "from cuml.metrics.regression import r2_score" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Support vector classification\n", + "Currently cuML supports binary classification (C-Support Vector Classification).\n", + "\n", + "### Generate data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 20000\n", + "n_features = 200\n", + "\n", + "X, y = make_gaussian_quantiles(n_samples=n_samples, n_features=n_features, n_classes=2)\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Define parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "C = 1\n", + "tol = 1e-3\n", + "kernel = 'rbf'\n", + "gamma = 'scale'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cumlSVC = cuml.svm.SVC(kernel=kernel, C=C, tol=tol, gamma=gamma)\n", + "cumlSVC.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sklSVC = sklearn.svm.SVC(kernel=kernel, C=C, tol=tol, gamma=gamma)\n", + "sklSVC.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cuml_pred = cumlSVC.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_pred = sklSVC.predict(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare Accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_accuracy = np.sum(cuml_pred.to_array()==y_test) / y_test.shape[0] * 100\n", + "skl_accuracy = np.sum(skl_pred==y_test) / y_test.shape[0] * 100\n", + "print(\"Accuracy: cumlSVC {}%, sklSVC {}%\".format(cuml_accuracy, skl_accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Notes\n", + "- The time measurements will be inaccurate for the first run. You can re-run the cells to get a better estimate of the execution time.\n", + "\n", + "- Currently the output of the prediction is a cuDF Series object. You can use the `to_array()` method to create a numpy array.\n", + "\n", + "- The training algorithm uses a cache in GPU memory to accelerate training. You can specify the size (in MiB) using the cache_size argument. This is more relevant for training with larger input size.\n", + "\n", + "- Similar to other cuML algorithms, cuML SVC is optimized both for single and double precision input data. If your problem allows it, then using single precision input can improve the execution time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cumlSVC = cuml.svm.SVC(kernel=kernel, C=C, tol=tol, gamma='scale', cache_size=2000)\n", + "cumlSVC.fit(X_train.astype(np.float32), y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Support vector regression\n", + "\n", + "cuML supports epsilon Support Vector Regression, where the epsilon parameter defines the radius of the epsilon-tube around the target values. If a prediction falls within this tube, then no penalty is associated.\n", + "\n", + "### Generate data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 20000\n", + "n_features = 20\n", + "\n", + "X, y = make_friedman1(n_samples=n_samples, n_features=n_features, noise=0.0, random_state=137)\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "C = 1\n", + "tol = 1e-3\n", + "kernel = 'rbf'\n", + "gamma = 'scale'\n", + "epsilon = 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### cuML model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cumlSVR = cuml.svm.SVR(kernel=kernel, C=C, tol=tol, gamma=gamma, epsilon=epsilon)\n", + "cumlSVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scikit-learn model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "sklSVR = sklearn.svm.SVR(kernel=kernel, C=C, tol=tol, gamma=gamma, epsilon=epsilon)\n", + "sklSVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cuml_pred = cumlSVR.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "skl_pred = sklSVR.predict(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_score = r2_score(y_test, cuml_pred) \n", + "skl_score = r2_score(y_test, skl_pred)\n", + "print(\"R2 score: cumlSVR {}, sklSVR {}\".format(cuml_score, skl_score))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Notes\n", + "The same notes apply as for SVC: you can improve the training time if you increase the cache size, or change to lower precision.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "cumlSVR = cuml.svm.SVR(kernel=kernel, C=C, tol=tol, gamma='scale', cache_size=1024)\n", + "cumlSVR.fit(X_train.astype(np.float32), y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cumlSVR.score(X_test.astype(np.float32), y_test.astype(np.float32))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/the_archive/archived_rapids_demos/cuml/tsne_demo.ipynb b/the_archive/archived_rapids_demos/cuml/tsne_demo.ipynb new file mode 100644 index 00000000..927f8682 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/tsne_demo.ipynb @@ -0,0 +1,194 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# TSNE Demo\n", + "\n", + "[TSNE](https://lvdmaaten.github.io/tsne/) (T-Distributed Stochastic Neighborhood Embedding) is a fantastic dimensionality reduction algorithm used to visualize large complex datasets including medical scans, neural network weights, gene expressions and much more.\n", + "\n", + "cuML's TSNE algorithm supports both the faster Barnes Hut $ n logn $ algorithm and also the slower Exact $ n^2 $ .\n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays as well as cuDF DataFrames as the input.\n", + "\n", + "For information about cuDF, refer to the [cuDF documentation](https://docs.rapids.ai/api/cudf/stable).\n", + "\n", + "For information on cuML's TSNE implementation: https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.TSNE." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import gzip\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import os\n", + "from cuml.manifold import TSNE\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fashion MNIST\n", + "\n", + "We are going to work with the fashion mnist data set.\n", + "\n", + "This is a dataset consisting of 70,000 28x28 grayscale images of clothing. It should already be in the data/fashion folder, but let's first check!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists('data/fashion'):\n", + " print(\"error, data is missing!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Helper Functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# https://github.com/zalandoresearch/fashion-mnist/blob/master/utils/mnist_reader.py\n", + "def load_mnist_train(path):\n", + " \"\"\"Load MNIST data from path\"\"\"\n", + " labels_path = os.path.join(path, 'train-labels-idx1-ubyte.gz')\n", + " images_path = os.path.join(path, 'train-images-idx3-ubyte.gz')\n", + "\n", + " with gzip.open(labels_path, 'rb') as lbpath:\n", + " labels = np.frombuffer(lbpath.read(), dtype=np.uint8,\n", + " offset=8)\n", + "\n", + " with gzip.open(images_path, 'rb') as imgpath:\n", + " images = np.frombuffer(imgpath.read(), dtype=np.uint8,\n", + " offset=16).reshape(len(labels), 784)\n", + " return images, labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load The Data\n", + "Let's load up the fashion MNIST data!\n", + "\n", + "We can also visualize one fashion image (a handbag) which is of size 28 by 28" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "images, labels = load_mnist_train(\"data/fashion\")\n", + "\n", + "plt.figure(figsize=(5,5))\n", + "plt.imshow(images[100].reshape((28, 28)), cmap = 'gray')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reduce Dimensionality with TSNE\n", + "\n", + "Now, let's reduce the data from 28*28 dimensions to 2." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tsne = TSNE(n_components = 2, method = 'barnes_hut', random_state=23)\n", + "%time embedding = tsne.fit_transform(images)\n", + "\n", + "print(embedding[:10], embedding.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Visualize Embedding\n", + "\n", + "Let's visualize TSNE's embedding!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "classes = [\n", + " 'T-shirt/top',\n", + " 'Trouser',\n", + " 'Pullover',\n", + " 'Dress',\n", + " 'Coat',\n", + " 'Sandal',\n", + " 'Shirt',\n", + " 'Sneaker',\n", + " 'Bag',\n", + " 'Ankle boot'\n", + "]\n", + "\n", + "fig, ax = plt.subplots(1, figsize = (14, 10))\n", + "plt.scatter(embedding[:,1], embedding[:,0], s = 0.3, c = labels, cmap = 'Spectral')\n", + "plt.setp(ax, xticks = [], yticks = [])\n", + "cbar = plt.colorbar(boundaries = np.arange(11)-0.5)\n", + "cbar.set_ticks(np.arange(10))\n", + "cbar.set_ticklabels(classes)\n", + "plt.title('Fashion MNIST Embedded via TSNE');" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/tsvd_demo.ipynb b/the_archive/archived_rapids_demos/cuml/tsvd_demo.ipynb new file mode 100644 index 00000000..c6bde714 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/tsvd_demo.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Truncated Singular Value Decomposition (TSVD) \n", + "The TSVD algorithm is a linear dimensionality reduction algorithm that works really well for datasets in which samples correlated in large groups. Unlike PCA, TSVD does not center the data before computation. \n", + "\n", + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "For information on converting your dataset to cuDF format, refer to the documentation: https://rapidsai.github.io/projects/cudf/en/0.11.0/\n", + "\n", + "For information on cuML's TSVD implementation: https://rapidsai.github.io/projects/cuml/en/0.11.0/api.html#truncated-svd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from cuml.datasets import make_blobs\n", + "\n", + "from sklearn.decomposition import TruncatedSVD as skTSVD\n", + "from cuml.decomposition import TruncatedSVD as cumlTSVD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**15\n", + "n_features = 128\n", + "\n", + "n_components = 2\n", + "random_state = 42" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device_data, _ = make_blobs(\n", + " n_samples=n_samples, n_features=n_features, centers=1, random_state=7)\n", + "\n", + "device_data = gd.DataFrame.from_gpu_matrix(device_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "host_data = device_data.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "tsvd_sk = skTSVD(n_components=n_components,\n", + " algorithm=\"arpack\", \n", + " n_iter=5000,\n", + " tol=0.00001,\n", + " random_state=random_state)\n", + "\n", + "result_sk = tsvd_sk.fit_transform(host_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "tsvd_cuml = cumlTSVD(n_components=n_components,\n", + " algorithm=\"full\", \n", + " n_iter=50000,\n", + " tol=0.00001,\n", + " random_state=random_state)\n", + "\n", + "result_cuml = tsvd_cuml.fit_transform(device_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "### Singular Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(tsvd_sk.singular_values_, \n", + " tsvd_cuml.singular_values_.to_array(), \n", + " atol=0.01)\n", + "print('compare tsvd: cuml vs sklearn singular_values_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Components" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(tsvd_sk.components_, \n", + " np.asarray(tsvd_cuml.components_.as_gpu_matrix()), \n", + " atol=1e-2)\n", + "print('compare tsvd: cuml vs sklearn components_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transform" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# compare the reduced matrix\n", + "passed = np.allclose(result_sk, np.asarray(result_cuml.as_gpu_matrix()), atol=0.2)\n", + "# larger error margin due to different algorithms: arpack vs full\n", + "print('compare tsvd: cuml vs sklearn transformed results %s'%('equal'if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/tsvd_mnmg_demo.ipynb b/the_archive/archived_rapids_demos/cuml/tsvd_mnmg_demo.ipynb new file mode 100644 index 00000000..ceb895b4 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/tsvd_mnmg_demo.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Truncated Singular Value Decomposition (TSVD) Multi-Node Multi-GPU (MNMG) Demo\n", + "\n", + "The TSVD algorithm is a linear dimensionality reduction algorithm that works really well for datasets in which samples correlated in large groups. Unlike PCA, TSVD does not center the data before computation. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike the single-GPU implementation, The MNMG TSVD API currently requires a Dask cuDF Dataframe as input. `transform()` also returns a Dask cuDF Dataframe. The Dask cuDF Dataframe API is very similar to the Dask DataFrame API, but underlying Dataframes are cuDF, rather than Pandas.\n", + "\n", + "For information on converting your dataset to Dask cuDF format: https://rapidsai.github.io/projects/cudf/en/0.11.0/dask-cudf.html#multi-gpu-with-dask-cudf\n", + "\n", + "For more information about cuML's TSVD implementation: https://rapidsai.github.io/projects/cuml/en/0.11.0/api.html#cuml.dask.decomposition.TruncatedSVD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from cuml.dask.common import to_dask_df\n", + "from cuml.dask.datasets import make_blobs\n", + "\n", + "from dask.distributed import Client, wait\n", + "from dask_cuda import LocalCUDACluster\n", + "\n", + "from dask_ml.decomposition import TruncatedSVD as skTSVD\n", + "from cuml.dask.decomposition import TruncatedSVD as cumlTSVD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Dask Cluster\n", + "\n", + "We can use the `LocalCUDACluster` to start a Dask cluster on a single machine with one worker mapped to each GPU. This is called one-process-per-GPU (OPG). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cluster = LocalCUDACluster(threads_per_worker=1)\n", + "client = Client(cluster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 2**15\n", + "n_features = 128\n", + "\n", + "n_components = 4\n", + "random_state = 42" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data\n", + "\n", + "### GPU" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "X_dcudf, _ = make_blobs(n_samples, \n", + " n_features, \n", + " centers=2, \n", + " cluster_std=1.0,\n", + " random_state=random_state)\n", + "\n", + "wait(X_dcudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Host" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X_ddf = to_dask_df(X_dcudf).to_dask_array(lengths=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "tsvd_sk = skTSVD(n_components=n_components,\n", + " algorithm=\"tsqr\", \n", + " random_state=random_state)\n", + "\n", + "result_sk = tsvd_sk.fit_transform(X_ddf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## cuML Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "tsvd_cuml = cumlTSVD(n_components=n_components,\n", + " algorithm=\"full\", \n", + " n_iter=5000,\n", + " tol=0.00001,\n", + " random_state=random_state)\n", + "\n", + "result_cuml = tsvd_cuml.fit_transform(X_dcudf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Results\n", + "\n", + "### Singular Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "passed = np.allclose(tsvd_sk.singular_values_, \n", + " tsvd_cuml.singular_values_.to_array(), \n", + " atol=1e-1)\n", + "print('compare tsvd: cuml vs sklearn singular_values_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Components" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sk_components = np.abs(tsvd_sk.components_)\n", + "cuml_components = np.abs(np.asarray(tsvd_cuml.components_.as_gpu_matrix()))\n", + "\n", + "passed = np.allclose(sk_components, cuml_components, atol=1e-1)\n", + "print('compare tsvd: cuml vs sklearn components_ {}'.format('equal' if passed else 'NOT equal'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transform" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# compare the reduced matrix\n", + "passed = np.allclose(result_sk.compute(), np.asarray(result_cuml.compute().as_gpu_matrix()), atol=1)\n", + "# larger error margin due to different algorithms: arpack vs full\n", + "print('compare tsvd: cuml vs sklearn transformed results %s'%('equal'if passed else 'NOT equal'))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/umap_demo.ipynb b/the_archive/archived_rapids_demos/cuml/umap_demo.ipynb new file mode 100644 index 00000000..28780b79 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/umap_demo.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Uniform Manifold Approximation and Projection (UMAP)\n", + "\n", + "UMAP is a dimensionality reduction algorithm which performs non-linear dimension reduction. It can also be used for visualization. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model can take array-like objects, either in host as NumPy arrays or in device (as Numba or cuda_array_interface-compliant), as well as cuDF DataFrames as the input. \n", + "\n", + "In order to convert your dataset to cudf format please read the cudf documentation on https://docs.rapids.ai/api/cudf/stable.\n", + "\n", + "For additional information on the UMAP model please refer to the documentation on https://rapidsai.github.io/projects/cuml/en/stable/api.html#cuml.UMAP" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "\n", + "import pandas as pd\n", + "import cudf as gd\n", + "\n", + "from sklearn import datasets\n", + "\n", + "from sklearn.metrics import adjusted_rand_score\n", + "from sklearn.cluster import KMeans\n", + "\n", + "from sklearn.manifold.t_sne import trustworthiness\n", + "\n", + "from cuml.manifold.umap import UMAP as cumlUMAP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n_samples = 500\n", + "n_features = 10\n", + "n_centers = 5\n", + "\n", + "n_neighbors = 10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data, labels = datasets.make_blobs(n_samples=n_samples, \n", + " n_features=n_features, \n", + " centers=n_centers)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fit Embeddings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_umap = cumlUMAP()\n", + "embedding = cuml_umap.fit_transform(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Neighborhoods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the score of the results obtained using cuml's algorithm and sklearn k-means. A score of 1.0 means the labels in our embedding match the original labels (thus preserving local neighborhood structure well)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "adjusted_rand_score(labels, KMeans(n_centers).fit_predict(embedding))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Iris Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iris = datasets.load_iris()\n", + "data = iris.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fit Embeddings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%time\n", + "cuml_umap = cumlUMAP(n_neighbors=n_neighbors, \n", + " min_dist=0.01)\n", + "\n", + "embedding = cuml_umap.fit_transform(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Trustworthiness\n", + "\n", + "Trustworthiness is a measure of how well an embedding preserves local neighborhood structure. It uses the nearest neighbors of the input vectors to rank the neighbors of the output vectors. Large divergences in neighborhoods between input and output vectors lower the score. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "trustworthiness(iris.data, embedding, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Split Train / Test Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a selection variable which will have 75% training and 25% testing values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "iris_selection = np.random.choice(\n", + " [True, False], 150, replace=True, p=[0.75, 0.25])\n", + "\n", + "data = iris.data[iris_selection]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cuml_umap = cumlUMAP(n_neighbors=n_neighbors, min_dist=0.01, verbose=False)\n", + "cuml_umap.fit(data)\n", + "\n", + "# create a new iris dataset by inverting the values of the selection variable (ie. 75% False and 25% True values) \n", + "new_data = iris.data[~iris_selection]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predict Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "embedding = cuml_umap.transform(new_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluate Trustworthiness\n", + "\n", + "Evaluating the trustworthiness on predictions from unseen data gives an indication of UMAP's ability to map the unseen data onto the manifold constructed from the training data. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "trustworthiness(new_data, embedding, 10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/umap_demo_graphed.ipynb b/the_archive/archived_rapids_demos/cuml/umap_demo_graphed.ipynb new file mode 100644 index 00000000..849f2115 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/umap_demo_graphed.ipynb @@ -0,0 +1,330 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# UMAP Demo with Graphs\n", + "\n", + "[UMAP](https://umap-learn.readthedocs.io/en/latest/) is a powerful dimensionality reduction tool which NVIDIA recently ported to GPUs with a python interface. In this notebook we will demostrate basic usage, plotting, and timing of the unsupervised CUDA (GPU) version of UMAP. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports and Set Up" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# libraries for scoring/clustering\n", + "from sklearn.manifold.t_sne import trustworthiness\n", + "\n", + "# GPU UMAP\n", + "import cudf\n", + "from cuml.manifold.umap import UMAP as cumlUMAP\n", + "\n", + "# plotting\n", + "import seaborn as sns\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "sns.set(style='white', rc={'figure.figsize':(25, 12.5)})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# hide warnings\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\", category=DeprecationWarning) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sanity Checks\n", + "\n", + "We are going to work with the [fashion mnist](https://github.com/zalandoresearch/fashion-mnist) data set. This is a dataset consisting of 70,000 28x28 grayscale images of clothing. It should already be in the `data/fashion` folder, but let's do a sanity check!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists('data/fashion'):\n", + " print(\"error, data is missing!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's make sure we have our RAPIDS compliant GPU. It must be Pascal or higher! You can also use this to define which GPU RAPIDS should use (advanced feature not covered here)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Helper Functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# https://github.com/zalandoresearch/fashion-mnist/blob/master/utils/mnist_reader.py\n", + "def load_mnist(path, kind='train'):\n", + " import os\n", + " import gzip\n", + " import numpy as np\n", + "\n", + " \"\"\"Load MNIST data from `path`\"\"\"\n", + " labels_path = os.path.join(path,\n", + " '%s-labels-idx1-ubyte.gz'\n", + " % kind)\n", + " images_path = os.path.join(path,\n", + " '%s-images-idx3-ubyte.gz'\n", + " % kind)\n", + "\n", + " with gzip.open(labels_path, 'rb') as lbpath:\n", + " labels = np.frombuffer(lbpath.read(), dtype=np.uint8,\n", + " offset=8)\n", + "\n", + " with gzip.open(images_path, 'rb') as imgpath:\n", + " images = np.frombuffer(imgpath.read(), dtype=np.uint8,\n", + " offset=16).reshape(len(labels), 784)\n", + "\n", + " return images, labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "train, train_labels = load_mnist('data/fashion', kind='train')\n", + "test, test_labels = load_mnist('data/fashion', kind='t10k')\n", + "data = np.array(np.vstack([train, test]), dtype=np.float64) / 255.0\n", + "target = np.array(np.hstack([train_labels, test_labels]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are 60000 training images and 10000 test images" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f\"Train shape: {train.shape} and Test Shape: {test.shape}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "train[0].shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned previously, each row in the train matrix is an image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# display a Nike? sneaker\n", + "pixels = train[0].reshape((28, 28))\n", + "plt.imshow(pixels, cmap='gray')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is cost with moving data between host memory and device memory (GPU memory) and we will include that core when comparing speeds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "gdf = cudf.DataFrame()\n", + "for i in range(data.shape[1]):\n", + " gdf['fea%d'%i] = data[:,i]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`gdf` is a GPU backed dataframe -- all the data is stored in the device memory of the GPU. With the data converted, we can apply the `cumlUMAP` the same inputs as we do for the standard UMAP. Additionally, it should be noted that within cuml, [FAISS] https://github.com/facebookresearch/faiss) is used for extremely fast kNN and it's limited to single precision. `cumlUMAP` will automatically downcast to `float32` when needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%timeit\n", + "g_embedding = cumlUMAP(n_neighbors=5, init=\"spectral\").fit_transform(gdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualization\n", + "\n", + "OK, now let's plot the output of the embeddings so that we can see the seperation of the neighborhoods. Let's start by creating the classes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "classes = [\n", + " 'T-shirt/top',\n", + " 'Trouser',\n", + " 'Pullover',\n", + " 'Dress',\n", + " 'Coat',\n", + " 'Sandal',\n", + " 'Shirt',\n", + " 'Sneaker',\n", + " 'Bag',\n", + " 'Ankle boot']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Needs to be redone because of timeit function sometimes loses our g_embedding variable\n", + "g_embedding = cumlUMAP(n_neighbors=5, init=\"spectral\").fit_transform(gdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just as the original author of UMAP, Leland McInnes, states in the [UMAP docs](https://umap-learn.readthedocs.io/en/latest/supervised.html), we can plot the results and show the separation between the various classes defined above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g_embedding_numpy = g_embedding.to_pandas().values #it is necessary to convert to numpy array to do the visual mapping\n", + "\n", + "fig, ax = plt.subplots(1, figsize=(14, 10))\n", + "plt.scatter(g_embedding_numpy[:,1], g_embedding_numpy[:,0], s=0.3, c=target, cmap='Spectral', alpha=1.0)\n", + "plt.setp(ax, xticks=[], yticks=[])\n", + "cbar = plt.colorbar(boundaries=np.arange(11)-0.5)\n", + "cbar.set_ticks(np.arange(10))\n", + "cbar.set_ticklabels(classes)\n", + "plt.title('Fashion MNIST Embedded via cumlUMAP');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Additionally, we can also quanititaviely compare the perfomance of `cumlUMAP` (GPU UMAP) to the reference/original implementation (CPU UMAP) using the [trustworthiness score](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L395). From the docstring:\n", + "\n", + "> Trustworthiness expresses to what extent the local structure is retained. The trustworthiness is within [0, 1].\n", + "\n", + "\n", + "Like `t-SNE`, UMAP tries to capture both global and local structure and thus, we can apply the `trustworthiness` of the `g_embedding` data against the original input. With a higher score we are demonstrating that the algorithm does a better and better job of local structure retention. As [Corey Nolet](https://github.com/cjnolet) notes:\n", + "> Algorithms like UMAP aim to preserve local neighborhood structure and so measuring this property (trustworthiness) measures the algorithm's performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Scoring ~97% shows the GPU implementation is comparable to the original CPU implementation and the training time was ~9.5X faster" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuml/umap_supervised_demo.ipynb b/the_archive/archived_rapids_demos/cuml/umap_supervised_demo.ipynb new file mode 100644 index 00000000..141131fc --- /dev/null +++ b/the_archive/archived_rapids_demos/cuml/umap_supervised_demo.ipynb @@ -0,0 +1,377 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# UMAP Supervised Demo\n", + "\n", + "[UMAP](https://umap-learn.readthedocs.io/en/latest/) is a powerful dimensionality reduction tool, which NVIDIA recently ported to GPUs with a Python interface that matches UMAP-learn. In this notebook we will demostrate basic usage, plotting, and timing comparisons between supervised and unsupervised implementations of the CUDA (GPU) version of UMAP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports and Set Up" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# libraries for scoring/clustering\n", + "from sklearn.manifold.t_sne import trustworthiness\n", + "\n", + "# GPU UMAP\n", + "import cudf\n", + "from cuml.manifold.umap import UMAP as cumlUMAP\n", + "\n", + "# plotting\n", + "import seaborn as sns\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "sns.set(style='white', rc={'figure.figsize':(25, 12.5)})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# hide warnings\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\", category=DeprecationWarning) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sanity Checks\n", + "\n", + "We are going to work with the [fashion mnist](https://github.com/zalandoresearch/fashion-mnist) data set. This is a dataset consisting of 70,000 28x28 grayscale images of clothing. It should already be in the `data/fashion` folder, but let's do a sanity check!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists('data/fashion'):\n", + " print(\"error, data is missing!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's make sure we have our RAPIDS compliant GPU. It must be Pascal or higher! You can also use this to define which GPU RAPIDS should use (advanced feature not covered here)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Helper Functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# https://github.com/zalandoresearch/fashion-mnist/blob/master/utils/mnist_reader.py\n", + "def load_mnist(path, kind='train'):\n", + " import os\n", + " import gzip\n", + " import numpy as np\n", + "\n", + " \"\"\"Load MNIST data from `path`\"\"\"\n", + " labels_path = os.path.join(path,\n", + " '%s-labels-idx1-ubyte.gz'\n", + " % kind)\n", + " images_path = os.path.join(path,\n", + " '%s-images-idx3-ubyte.gz'\n", + " % kind)\n", + "\n", + " with gzip.open(labels_path, 'rb') as lbpath:\n", + " labels = np.frombuffer(lbpath.read(), dtype=np.uint8,\n", + " offset=8)\n", + "\n", + " with gzip.open(images_path, 'rb') as imgpath:\n", + " images = np.frombuffer(imgpath.read(), dtype=np.uint8,\n", + " offset=16).reshape(len(labels), 784)\n", + "\n", + " return images, labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "train, train_labels = load_mnist('data/fashion', kind='train')\n", + "test, test_labels = load_mnist('data/fashion', kind='t10k')\n", + "data = (np.array(np.vstack([train, test]), dtype=np.float64) [:60000]/ 255.0).astype(np.float32)\n", + "target = np.array(np.hstack([train_labels, test_labels]))[:60000].astype(np.float32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are 60000 training images and 10000 test images" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f\"Train shape: {train.shape} and Test Shape: {test.shape}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "train[0].shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned previously, each row in the train matrix is an image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# display a Nike? sneaker\n", + "pixels = train[0].reshape((28, 28))\n", + "plt.imshow(pixels, cmap='gray')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "record_data = (('fea%d'%i, data[:,i]) for i in range(data.shape[1]))\n", + "gdf = cudf.DataFrame()\n", + "for i in range(data.shape[1]):\n", + " gdf['fea%d'%i] = data[:,i]\n", + "\n", + "target_gdf = cudf.DataFrame()\n", + "target_gdf['fea0'] = target" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is cost with moving data between host memory and device memory (GPU memory) and we will include that cost when comparing speeds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`gdf` is a GPU backed dataframe -- all the data is stored in the device memory of the GPU. With the data converted, we can apply the `cumlUMAP` the same inputs as we do for the standard UMAP.\n", + "\n", + "For datasets that provide a set of labels, we can pass those labels into the `fit()` and `fit_transform()` functions to have UMAP use them for better cluster separation. Supervised training can even be used with an incomplete set of labels by setting the unknown labels to -1\". It is important that the labels array be the same size as the number of samples being used to train." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "g_embedding_supervised = cumlUMAP(verbose = False, n_neighbors=5, init=\"spectral\", target_metric = \"categorical\").fit_transform(gdf, target_gdf)\n", + "print(\"Took %f sec.\" % (time.time() - start))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "g_embedding = cumlUMAP(n_neighbors=5, init=\"spectral\").fit_transform(gdf)\n", + "print(\"Took %f sec.\" % (time.time() - start))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualization\n", + "\n", + "OK, now let's plot the output of the embeddings so that we can see the seperation of the neighborhoods. Let's start by creating the classes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "classes = [\n", + " 'T-shirt/top',\n", + " 'Trouser',\n", + " 'Pullover',\n", + " 'Dress',\n", + " 'Coat',\n", + " 'Sandal',\n", + " 'Shirt',\n", + " 'Sneaker',\n", + " 'Bag',\n", + " 'Ankle boot']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just as the original author of UMAP, Leland McInnes, states in the [UMAP docs](https://umap-learn.readthedocs.io/en/latest/supervised.html), we can plot the results and show the separation between the various classes defined above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g_embedding_supervised_numpy = g_embedding_supervised.to_pandas().values #it is necessary to convert to numpy array to do the visual mapping\n", + "\n", + "fig, ax = plt.subplots(1, figsize=(14, 10))\n", + "plt.scatter(g_embedding_supervised_numpy[:,1], g_embedding_supervised_numpy[:,0], s=0.3, c=target, cmap='Spectral', alpha=1.0)\n", + "plt.setp(ax, xticks=[], yticks=[])\n", + "cbar = plt.colorbar(boundaries=np.arange(11)-0.5)\n", + "cbar.set_ticks(np.arange(10))\n", + "cbar.set_ticklabels(classes)\n", + "plt.title('Supervised Fashion MNIST Embedded via cumlUMAP');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison of Implementations\n", + "\n", + "And side-by-side we can see the effects of supervised training. Notice how providing the labels enables the resulting model to better separation of sneakers, ankle books, and sandals while also providing a much more distinct separation of shirts, t-shirts, pullovers, and coats. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g_embedding_numpy = g_embedding.to_pandas().values #it is necessary to convert to numpy array to do the visual mapping\n", + "\n", + "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(20, 10))\n", + "ax[0].scatter(g_embedding_numpy[:,1], g_embedding_numpy[:,0], s=0.3, c=target, cmap='Spectral', alpha=1.0)\n", + "im = ax[1].scatter(g_embedding_supervised_numpy[:,1], g_embedding_supervised_numpy[:,0], s=0.3, c=target, cmap='Spectral', alpha=1.0)\n", + "ax[0].set_title('Unsupervised Fashion MNIST Embedded via cumlUMAP ');\n", + "ax[1].set_title('Supervised Fashion MNIST Embedded via UMAP');\n", + "\n", + "fig.subplots_adjust(right=0.8)\n", + "cax,kw = mpl.colorbar.make_axes([a for a in ax.flat])\n", + "cbar = plt.colorbar(im, cax=cax, **kw)\n", + "cbar.set_ticks(np.arange(10))\n", + "cbar.set_ticklabels(classes)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Additionally, we can also quanititaviely compare the perfomance of `cumlUMAP` (GPU UMAP) to the reference/original implementation (CPU UMAP) using the [trustworthiness score](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L395). From the docstring:\n", + "\n", + "> Trustworthiness expresses to what extent the local structure is retained. The trustworthiness is within [0, 1].\n", + "\n", + "\n", + "Like `t-SNE`, UMAP tries to capture both global and local structure and thus, we can apply the `trustworthiness` of the `embedding/g_embedding` data against the original input. With a higher score we are demonstrating that the algorithm does a better and better job of local structure retention. As [Corey Nolet](https://github.com/cjnolet) notes:\n", + "> Algorithms like UMAP aim to preserve local neighborhood structure and so measuring this property (trustworthiness) measures the algorithm's performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Scoring ~97% shows the GPU implementation is comparable to the original CPU implementation and the training time was ~9.5X faster" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/the_archive/archived_rapids_demos/cuspatial/README.md b/the_archive/archived_rapids_demos/cuspatial/README.md new file mode 100644 index 00000000..6625c653 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/README.md @@ -0,0 +1,6 @@ +# Demo files + +`cuspatial` demos typically depend on third party libraries and datasets. You +can see the performance difference between GPU spatial code and our competitors +by running these demos. + diff --git a/the_archive/archived_rapids_demos/cuspatial/data/README.md b/the_archive/archived_rapids_demos/cuspatial/data/README.md new file mode 100644 index 00000000..2509917b --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/data/README.md @@ -0,0 +1,75 @@ +# Data pre-processing for C++/Python test code +## Data Sources + +The schema data derived from a traffic surveillance camera dataset named +schema_HWY_20_AND_LOCUST-filtered.json can be +[downloaded here](https://drive.google.com/file/d/1GKTB5SV2RK7lEOIWz8tWab5MGWDtMWWW/view?usp=sharing). + +Regions of Interest (ROIs) covered by cameras in ESRI shapefile format (named +its_4326_roi.*) can be +[downloaded here](https://nvidia-my.sharepoint.com/:u:/p/jiantingz/ESvNHXtWgSxDtf2xXTcVN1IByp5HKoUWLhuPTr_bS2ecSw?e=gf4VUu). + +The camera parameter file (for 27 ROIs) can be +[downloaded here](https://nvidia-my.sharepoint.com/:x:/p/jiantingz/EZPkLpJPrUtOmwmBPSlNNxwBgeh8UAYlEyrRuT5QLkvj7Q?e=thLUQS) + +For application background [see here](https://www.nvidia.com/en-us/deep-learning-ai/industries/ai-cities/) + +## Instructions +Download these three data files to {cudf_home}/data and compile/run two data +preprocessing C++ programs in the folder to prepare the data files for the +C++/Python test code. In addition to its_4326_roi.* and its_camera_2.csv, +four derived SoA data files are needed for the tests: vehicle identification +(`.objectid`), timestamp (`.time`), lon/lat location +(`.location`) and polygon (`.ply`). The instructions to compile and run +`json2soa.cpp` and `poly2soa.cpp` are provided at the beginning of the two +programs. + +### json2soa +To compile, download cJSON.c and cJSON.h from the +[cJson website](https://github.com/DaveGamble/cJSON) and put them in the +current directory. + +``` +g++ json2soa.cpp cJSON.c -o json2soa -O3 +``` + +To run: + +``` +./json2soa schema_HWY_20_AND_LOCUST-filtered.json locust -1 +``` + +The three parameters for the program are: input json file name +(schema_HWY_20_AND_LOCUST-filtered.json, must follow the specific schema), +the output root file name and the number of records to be processed. A total of +five files with `.time`, `.objectid`, `.bbox`, `.location`, `.coordinate` +extensions will be generated and three will be used: `.time`, `.objectid` and +`.location`. The last parameter is for the desired number of locations to be +processed; -1 indicates all records but the value can be a smaller number for +easy inspection. + +### poly2soa +To compile, install a recent version of [GDAL](https://gdal.org/download.html) +under `/usr/local`. + +``` +g++ -I /usr/local/include -L /usr/local/lib poly2soa.cpp -lgdal -o poly2soa +``` + +To run: + +``` + ./poly2soa its.cat itsroi.ply +``` + +The first parameter is the catalog file of all Shapefiles from which to extract +polygons. Currently, the provided `its.cat` has only one line which is the path +(relative or full) of the provided ROI polygon file (its_4326_roi.shp). If you +have multiple ROI shapefiles, you can list them in `its.cat` file, one `.shp` +file name per line. + +## Additional Notes +The design supports multiple polygons from multiple shapefiles and polygons in +each file is considered to be a group. However, the group information is not +exposed in the current implementation but this can be changed in the future if +needed. diff --git a/the_archive/archived_rapids_demos/cuspatial/data/its.cat b/the_archive/archived_rapids_demos/cuspatial/data/its.cat new file mode 100644 index 00000000..5332a4f0 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/data/its.cat @@ -0,0 +1 @@ +its_4326_roi.shp \ No newline at end of file diff --git a/the_archive/archived_rapids_demos/cuspatial/data/json2soa.cpp b/the_archive/archived_rapids_demos/cuspatial/data/json2soa.cpp new file mode 100644 index 00000000..ac0a0c1d --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/data/json2soa.cpp @@ -0,0 +1,230 @@ +// g++ json2soa.cpp cJSON.c -o json2soa -O3 +//./json2soa schema_HWY_20_AND_LOCUST-filtered.json locust -1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cJSON.h" + +using namespace std; +#define MAXLINE 4096 +#define NUM_FIELDS 5 + +typedef unsigned int uint; +typedef unsigned short ushort; + +typedef struct Time +{ + uint y : 6; + uint m : 4; + uint d : 5; + uint hh : 5; + uint mm : 6; + uint ss : 6; + uint wd: 3; + uint yd: 9; + uint mili: 10; + uint pid:10; +}Time; + +ostream& operator<<(ostream& os, const Time & t) +{ + os << t.y<<","< +void append_map(map& m, const T& key) +{ + typename map::iterator it=m.find(key); + if(it==m.end()) + m[key]=1; + else + it->second++; +} + +template +int output_map(const map& m) +{ + int cnt=0; + typename map::const_iterator it = m.begin(); + for(; it != m.end(); ++it) + { + std::cout<<"("<< it->first<<")==>"<< it->second<<"\n"; + cnt+=it->second; + } + return cnt; +} + +int main(int argc, char *argv[]) +{ + printf("sizeof(Time)=%ld\n",sizeof(Time)); + //std::map t_map; + //std::map p_map; + std::map oid_map; + + char line[MAXLINE]; + + struct timeval t0,t1; + gettimeofday(&t0, NULL); + + if (argc!=4) + { + printf("USAGE: %s in_fn out_root run_num(-1 for all)\n", argv[0]); + exit(1); + } + const char * in_name=argv[1]; + const char * out_root=argv[2]; + enum FILEDS {time_id=0, objid_id,bbox_id,location_id,coordinate_id}; + const char * out_ext[NUM_FIELDS]={".time",".objectid",".bbox",".location",".coordinate"}; + + FILE *in_fp=fopen(in_name,"r"); + if(in_fp==NULL) + { + printf("can not open data file %s for input\n",in_name); + return -1; + } + + FILE *out_fp[NUM_FIELDS]; + for(int i=0;ivaluestring; + struct tm it; + strptime(t_str, "%Y-%m-%dT%H:%M:%S", &it); + char *p=strstr(t_str,"."); + p++; + char st[4]; + strncpy(st,p,3); + st[3]='\n'; + int in_mili=atoi(st); + //printf("s=%s t=%s:%3d %d\n",t_str,asctime(&it),in_mili,it.tm_year); + + Time ot; + ot.y = it.tm_year - 100;//shifting starting year from 1900 to 2000, max 64 years allowd + ot.m =it.tm_mon; + ot.d =it.tm_mday; + ot.hh=it.tm_hour; + ot.mm=it.tm_min; + ot.ss=it.tm_sec; + ot.wd=it.tm_wday; + ot.yd=it.tm_yday; + ot.mili=in_mili; + //append_map(t_map,ot); + + cJSON* place= cJSON_GetObjectItem(root,"place"); + string place_str=cJSON_GetObjectItem(place,"id")->valuestring; + //cout<valuestring; + //cout<valuedouble; + double toplefty=cJSON_GetObjectItem(bbox,"toplefty")->valuedouble; + double bottomrightx=cJSON_GetObjectItem(bbox,"bottomrightx")->valuedouble; + double bottomrighty=cJSON_GetObjectItem(bbox,"bottomrighty")->valuedouble; + //printf("%15.10f %15.10f %15.10f %15.10f\n",topleftx, toplefty, bottomrightx,bottomrighty); + fwrite(&topleftx,sizeof(double),1,out_fp[bbox_id]); + fwrite(&toplefty,sizeof(double),1,out_fp[bbox_id]); + fwrite(&bottomrightx,sizeof(double),1,out_fp[bbox_id]); + fwrite(&bottomrighty,sizeof(double),1,out_fp[bbox_id]); + + double lat=cJSON_GetObjectItem(location,"lat")->valuedouble; + double lon=cJSON_GetObjectItem(location,"lon")->valuedouble; + double alt=cJSON_GetObjectItem(location,"alt")->valuedouble; + //printf("%15.10f %15.10f %15.10f\n",lat, lon, alt); + fwrite(&lat,sizeof(double),1,out_fp[location_id]); + fwrite(&lon,sizeof(double),1,out_fp[location_id]); + fwrite(&alt,sizeof(double),1,out_fp[location_id]); + + double x=cJSON_GetObjectItem(coordinate,"x")->valuedouble; + double y=cJSON_GetObjectItem(coordinate,"y")->valuedouble; + double z=cJSON_GetObjectItem(coordinate,"z")->valuedouble; + //printf("%15.10f %15.10f %15.10f\n",x, y, z); + fwrite(&x,sizeof(double),1,out_fp[coordinate_id]); + fwrite(&y,sizeof(double),1,out_fp[coordinate_id]); + fwrite(&z,sizeof(double),1,out_fp[coordinate_id]); + + cJSON_Delete(root); + pos++; + if(pos==run_num) + break; + + } + fclose(in_fp); + for(int i=0;i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gdal.h" +#include "gdal_priv.h" +#include "cpl_conv.h" +#include "ogr_api.h" +#include "ogr_srs_api.h" +#include "cpl_string.h" +#include "ogrsf_frmts.h" +#include "gdal_alg.h" +#include "ogr_geometry.h" + +using namespace std; + +void GDALCollectRingsFromGeometry( + OGRGeometry *poShape, + std::vector &aPointX, std::vector &aPointY, + std::vector &aPartSize ) + +{ + if( poShape == NULL ) + return; + + OGRwkbGeometryType eFlatType = wkbFlatten(poShape->getGeometryType()); + int i; + + if ( eFlatType == wkbPoint ) + { + OGRPoint *poPoint = (OGRPoint *) poShape; + int nNewCount = aPointX.size() + 1; + + aPointX.reserve( nNewCount ); + aPointY.reserve( nNewCount ); + aPointX.push_back( poPoint->getX()); + aPointY.push_back( poPoint->getY()); + aPartSize.push_back( 1 ); + } + else if ( eFlatType == wkbLineString ) + { + OGRLineString *poLine = (OGRLineString *) poShape; + int nCount = poLine->getNumPoints(); + int nNewCount = aPointX.size() + nCount; + + aPointX.reserve( nNewCount ); + aPointY.reserve( nNewCount ); + for ( i = nCount - 1; i >= 0; i-- ) + { + aPointX.push_back( poLine->getX(i)); + aPointY.push_back( poLine->getY(i)); + } + aPartSize.push_back( nCount ); + } + else if ( EQUAL(poShape->getGeometryName(),"LINEARRING") ) + { + OGRLinearRing *poRing = (OGRLinearRing *) poShape; + int nCount = poRing->getNumPoints(); + int nNewCount = aPointX.size() + nCount; + + aPointX.reserve( nNewCount ); + aPointY.reserve( nNewCount ); + for ( i = nCount - 1; i >= 0; i-- ) + { + aPointX.push_back( poRing->getX(i)); + aPointY.push_back( poRing->getY(i)); + } + aPartSize.push_back( nCount ); + } + else if( eFlatType == wkbPolygon ) + { + OGRPolygon *poPolygon = (OGRPolygon *) poShape; + + GDALCollectRingsFromGeometry( poPolygon->getExteriorRing(), + aPointX, aPointY, aPartSize ); + + for( i = 0; i < poPolygon->getNumInteriorRings(); i++ ) + GDALCollectRingsFromGeometry( poPolygon->getInteriorRing(i), + aPointX, aPointY, aPartSize ); + } + + else if( eFlatType == wkbMultiPoint + || eFlatType == wkbMultiLineString + || eFlatType == wkbMultiPolygon + || eFlatType == wkbGeometryCollection ) + { + OGRGeometryCollection *poGC = (OGRGeometryCollection *) poShape; + + for( i = 0; i < poGC->getNumGeometries(); i++ ) + GDALCollectRingsFromGeometry( poGC->getGeometryRef(i), + aPointX, aPointY, aPartSize ); + } + else + { + CPLDebug( "GDAL", "Rasterizer ignoring non-polygonal geometry." ); + } +} + +int addData(const OGRLayerH layer,vector& g_len_v,vector&f_len_v,vector&r_len_v,vector&xx_v, vector&yy_v) +{ + int num_feature=0; + OGR_L_ResetReading( layer ); + OGRFeatureH hFeat; + int this_rings=0,this_points=0; + while( (hFeat = OGR_L_GetNextFeature( layer )) != NULL ) + { + OGRGeometry *poShape=(OGRGeometry *)OGR_F_GetGeometryRef( hFeat ); + if(poShape==NULL) + { + cout<<"error:............shape is NULL"<getGeometryType()); + if( eFlatType == wkbPolygon ) + { + OGRPolygon *poPolygon = (OGRPolygon *) poShape; + this_rings+=(poPolygon->getNumInteriorRings()+1); + } + else + { + } + std::vector aPointX; + std::vector aPointY; + std::vector aPartSize; + GDALCollectRingsFromGeometry( poShape, aPointX, aPointY, aPartSize ); + if(aPartSize.size()==0) + { + printf("warning: aPartSize.size()==0\n"); + //num_feature++; + } + xx_v.insert(xx_v.end(), aPointX.begin(),aPointX.end()); + yy_v.insert(yy_v.end(), aPointY.begin(),aPointY.end()); + r_len_v.insert(r_len_v.end(),aPartSize.begin(),aPartSize.end()); + f_len_v.push_back(aPartSize.size()); + OGR_F_Destroy( hFeat ); + num_feature++; + } + g_len_v.push_back(num_feature); + return num_feature; +} + +void process_coll(char *catfn,vector& g_len_v,vector&f_len_v,vector&r_len_v,vector&xx_v, vector&yy_v) +{ + FILE *fp; + if((fp=fopen(catfn,"r"))==NULL) + { + printf("can not open catalog file\n"); + exit(-1); + } + int this_seq=0; + //while(!feof(fp)) + for(int i=0;i<1;i++) + { + char fn[100]; + fscanf(fp,"%s",fn); + GDALDatasetH hDS = GDALOpenEx( fn, GDAL_OF_VECTOR, NULL, NULL, NULL ); + if(hDS==NULL) + { + printf("hDS is NULL, skipping 1......\n"); + //skiplist.push_back(fn); + continue; + } + + OGRLayerH hLayer = GDALDatasetGetLayer( hDS,0 ); + if( hLayer == NULL ) + { + printf( "Unable to find layer 0, skipping 2......\n"); + //skiplist.push_back(fn); + continue; + } + printf("%d %s \n",this_seq,fn); + int num0=addData(hLayer,g_len_v,f_len_v,r_len_v,xx_v,yy_v); + if(num0==0) + { + printf("zero features, skipping 3......\n"); + //skiplist.push_back(fn); + } + this_seq++; + } +} + +int main(int argc,char** argv) +{ + if(argc!=3) + { + printf("EXE cat_fn out_fn \n"); + exit(-1); + } + vector g_len_v,f_len_v,r_len_v; + vector xx_v, yy_v; + + GDALAllRegister(); + char *inc=argv[1]; + timeval start, end; + gettimeofday(&start, NULL); + printf("catalog=%s output=%s\n",argv[1],argv[2]); + process_coll(inc,g_len_v,f_len_v,r_len_v,xx_v, yy_v); + printf("skip list.............\n"); + gettimeofday(&end, NULL); + long diff = end.tv_sec*1000000+end.tv_usec - start.tv_sec * 1000000-start.tv_usec; + printf("CPU Processing time.......%10.2f\n",diff/(float)1000); + printf("%lu %lu %lu %lu\n",g_len_v.size(),f_len_v.size(),r_len_v.size(),xx_v.size()); + + int gc=g_len_v.size(); + int fc=0,rc=0,vc=0; + printf("#of groups(datasets)=%d\n",gc); + for(int g=0;g=2): +# scipy_res=sys.argv[1] +# if(len(sys.argv)>=3): +# cuspatial_res=sys.argv[2] + +if len(sys.argv) >= 2: + data_set = sys.argv[1] + +# reading poing xy coordinate data (relative to a camera origin) +pnt_x, pnt_y = cuspatial.read_points_xy_km(data_dir + data_set + ".coor") +# reading numbers of points in trajectories +cnt = cuspatial.read_uint(data_dir + data_set + ".objcnt") +# reading object(vehicle) id +id = cuspatial.read_uint(data_dir + data_set + ".objectid") + +num_traj = cnt.data.size +dist0 = cuspatial.directed_hausdorff_distance(pnt_x, pnt_y, cnt) +cuspatial_dist0 = dist0.data.to_array().reshape((num_traj, num_traj)) + +start = time.time() +dist = cuspatial.directed_hausdorff_distance(pnt_x, pnt_y, cnt) +print( + "dis.size={} num_traj*num_traj={}".format( + dist.data.size, num_traj * num_traj + ) +) +end = time.time() +print(end - start) +print( + "python Directed Hausdorff distance GPU end-to-end time in ms " + "(end-to-end)={}".format((end - start) * 1000) +) + +start = time.time() +cuspatial_dist = dist.data.to_array().reshape((num_traj, num_traj)) +print("num_traj={}".format(num_traj)) +print("cuspatial_dist[0[1]={}".format(cuspatial_dist[0][1])) + +# with open(cuspatial_res, 'wb') as f: +# pickle.dump(cuspatial_dist, f) + +mis_match = 0 +for i in range(num_traj): + for j in range(num_traj): + if abs(cuspatial_dist0[i][j] - cuspatial_dist[i][j]) > 0.00001: + mis_match = mis_match + 1 +print("mis_match between two rounds ={}".format(mis_match)) + + +x = pnt_x.data.to_array() +y = pnt_y.data.to_array() +n = cnt.data.to_array() +end = time.time() +print("data conversion time={}".format((end - start) * 1000)) + +start = time.time() +trajs = [] +c = 0 +for i in range(num_traj): + traj = np.zeros((n[i], 2), dtype=np.float64) + for j in range(n[i]): + traj[j][0] = x[c + j] + traj[j][1] = y[c + j] + trajs.append(traj.reshape(-1, 2)) + c = c + n[i] +# print('c={}'.format(c)) +end = time.time() +print("CPU traj prep time={}".format((end - start) * 1000)) +# print("trajs[0]") +# print(trajs[0]) + +mis_match = 0 +d = np.zeros((num_traj, num_traj), dtype=np.float64) +for i in range(num_traj): + if i % 100 == 99: + print("i={}".format(i)) + for j in range(num_traj): + dij = directed_hausdorff(trajs[i], trajs[j]) + d[i][j] = dij[0] + if abs(d[i][j] - cuspatial_dist[i][j]) > 0.00001: + print("{} {} {} {}".format(i, j, d[i][j], cuspatial_dist[i][j])) + mis_match = mis_match + 1 +print("mis_match={}".format(mis_match)) +end = time.time() +print( + "python Directed Hausdorff distance cpu end-to-end time in ms " + "(end-to-end)={}".format((end - start) * 1000) +) + +# for val in d[0]: +# print('{}'.format(val)) +# print + +# with open(scipy_res, 'wb') as f: +# pickle.dump(d, f) diff --git a/the_archive/archived_rapids_demos/cuspatial/haversine_distance_test_nyctaxi.py b/the_archive/archived_rapids_demos/cuspatial/haversine_distance_test_nyctaxi.py new file mode 100644 index 00000000..366546c7 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/haversine_distance_test_nyctaxi.py @@ -0,0 +1,31 @@ +import time + +from cudf import Series, read_csv + +import cuspatial + +start = time.time() +# data dowloaded from +# https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2009-01.csv +df = read_csv("data/yellow_tripdata_2009-01.csv") +end = time.time() +print("data ingesting time (from SSD) in ms={}".format((end - start) * 1000)) +df.head().to_pandas().columns + +start = time.time() +x1 = Series(df["Start_Lon"]) +y1 = Series(df["Start_Lat"]) +x2 = Series(df["End_Lon"]) +y2 = Series(df["End_Lat"]) +end = time.time() +print( + "data frame to column conversion time in ms={}".format( + (end - start) * 1000 + ) +) + +start = time.time() +h_dist = cuspatial.haversine_distance(x1, y1, x2, y2) +end = time.time() +print("python computing distance time in ms={}".format((end - start) * 1000)) +# h_dist.data.to_array() diff --git a/the_archive/archived_rapids_demos/cuspatial/pip_test_gdal_locust.py b/the_archive/archived_rapids_demos/cuspatial/pip_test_gdal_locust.py new file mode 100644 index 00000000..be740c27 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/pip_test_gdal_locust.py @@ -0,0 +1,43 @@ +""" +pip demo directly using gdal/ogr for python; not for performance comparisons. +To run the demo, first install python-gdal by `conda install -c conda-forge +gdal` under cudf_dev environment +""" + +import numpy as np +from osgeo import ogr + +data_dir = "/home/jianting/cuspatial/data/" +shapefile = data_dir + "its_4326_roi.shp" +driver = ogr.GetDriverByName("ESRI Shapefile") +spatialReference = ogr.osr.SpatialReference() +spatialReference.SetWellKnownGeogCS("WGS84") +pt = ogr.Geometry(ogr.wkbPoint) +pt.AssignSpatialReference(spatialReference) +pnt_x = np.array( + [-90.666418409895840, -90.665136925928721, -90.671840534675397], + dtype=np.float64, +) +pnt_y = np.array( + [42.492199401857071, 42.492104092138952, 42.490649501411141], + dtype=np.float64, +) + +for i in range(3): + pt.SetPoint(0, pnt_x[i], pnt_y[i]) + res = "" + + """ + features can not be saved for later reuse + known issue: https://trac.osgeo.org/gdal/wiki/PythonGotchas + """ + + dataSource = driver.Open(shapefile, 0) + layer = dataSource.GetLayer() + for f in layer: + pip = pt.Within(f.geometry()) + if pip: + res += "1" + else: + res += "0" + print(res) diff --git a/the_archive/archived_rapids_demos/cuspatial/pip_test_shapely_locust.py b/the_archive/archived_rapids_demos/cuspatial/pip_test_shapely_locust.py new file mode 100644 index 00000000..d46efa5e --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/pip_test_shapely_locust.py @@ -0,0 +1,39 @@ +""" +PIP demo directly using shapely, more efficient than using python gdal/ogr +directly polygons are created only once and stored for reuse + +To run the demo, first install python gdal and pyshp by `conda install -c +conda-forge gdal pyshp` under cudf_dev environment +""" + +import numpy as np +import shapefile +from shapely.geometry import Point, Polygon + +data_dir = "/home/jianting/cuspatial/data/" + +plyreader = shapefile.Reader(data_dir + "its_4326_roi.shp") +polygon = plyreader.shapes() +plys = [] +for shape in polygon: + plys.append(Polygon(shape.points)) + +pnt_x = np.array( + [-90.666418409895840, -90.665136925928721, -90.671840534675397], + dtype=np.float64, +) +pnt_y = np.array( + [42.492199401857071, 42.492104092138952, 42.490649501411141], + dtype=np.float64, +) + +for i in range(3): + pt = Point(pnt_x[i], pnt_y[i]) + res = "" + for j in range(len(plys)): + pip = plys[len(plys) - 1 - j].contains(pt) + if pip: + res += "1" + else: + res += "0" + print(res) diff --git a/the_archive/archived_rapids_demos/cuspatial/pip_verify_shapely_locust.py b/the_archive/archived_rapids_demos/cuspatial/pip_verify_shapely_locust.py new file mode 100644 index 00000000..86a108e8 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/pip_verify_shapely_locust.py @@ -0,0 +1,54 @@ +""" +verify the correctness of GPU-based implementation by comparing with shapely +python package GPU C++ kernel time 0.966ms, GPU C++ libcuspatial end-to-end +time 1.104ms, GPU python cuspaital end-to-end time 1.270ms shapely python +end-to-end time 127659.4, 100,519X speedup (127659.4/1.27) +""" + +import time + +import shapefile +from shapely.geometry import Point, Polygon + +import cuspatial + +data_dir = "/home/jianting/cuspatial/data/" +plyreader = shapefile.Reader(data_dir + "its_4326_roi.shp") +polygon = plyreader.shapes() +plys = [] +for shape in polygon: + plys.append(Polygon(shape.points)) + +pnt_lon, pnt_lat = cuspatial.read_points_lonlat(data_dir + "locust.location") +fpos, rpos, plyx, plyy = cuspatial.read_polygon(data_dir + "itsroi.ply") + +start = time.time() +bm = cuspatial.point_in_polygon(pnt_lon, pnt_lat, fpos, rpos, plyx, plyy) +end = time.time() +print("Python GPU Time in ms (end-to-end)={}".format((end - start) * 1000)) + +bma = bm.data.to_array() +pntx = pnt_lon.data.to_array() +pnty = pnt_lat.data.to_array() + +start = time.time() +mis_match = 0 +for i in range(pnt_lon.data.size): + pt = Point(pntx[i], pnty[i]) + res = 0 + for j in range(len(plys)): + pip = plys[len(plys) - 1 - j].contains(pt) + if pip: + res |= 0x01 << (len(plys) - 1 - j) + if res != bma[i]: + mis_match = mis_match + 1 + +end = time.time() +print(end - start) +print( + "python(shapely) CPU Time in ms (end-to-end)={}".format( + (end - start) * 1000 + ) +) + +print("CPU and GPU results mismatch={}".format(mis_match)) diff --git a/the_archive/archived_rapids_demos/cuspatial/stq_test_soa_locust.py b/the_archive/archived_rapids_demos/cuspatial/stq_test_soa_locust.py new file mode 100644 index 00000000..543f0b74 --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/stq_test_soa_locust.py @@ -0,0 +1,16 @@ +""" +GPU-based spatial window query demo using 1.3 million points read from file +and (x1,x2,y1,y2)=[-180,180,-90,90] as the query window num should be the same +as x.data.size, both are 1338671 +""" + +import cuspatial + +data_dir = "./data/" +data = cuspatial.read_points_lonlat(data_dir + "locust.location") + +points_inside = cuspatial.window_points( + -180, -90, 180, 90, data["lon"], data["lat"] +) +print(points_inside.shape[0]) +assert points_inside.shape[0] == data.shape[0] diff --git a/the_archive/archived_rapids_demos/cuspatial/traj_demo_derive_subset_locus.py b/the_archive/archived_rapids_demos/cuspatial/traj_demo_derive_subset_locus.py new file mode 100644 index 00000000..b4de6cdd --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/traj_demo_derive_subset_locus.py @@ -0,0 +1,27 @@ +""" +demo of chaining three APIs: derive_trajectories+subset_trajectory(by ID) ++hausdorff_distance also serves as an example to integrate cudf and cuspatial +""" + +import cuspatial + +data_dir = "./data/" +lonlats = cuspatial.read_points_lonlat(data_dir + "locust.location") +ids = cuspatial.read_uint(data_dir + "locust.objectid") +ts = cuspatial.read_its_timestamps(data_dir + "locust.time") + +num_traj, trajectories = cuspatial.derive( + lonlats["lon"], lonlats["lat"], ids, ts +) +df = trajectories.query("length>=256") +query_ids = df["trajectory_id"] +query_cnts = df["length"] +new_trajs = cuspatial.subset_trajectory_id( + query_ids, lonlats["lon"], lonlats["lat"], ids, ts +) +new_lon = new_trajs["x"] +new_lat = new_trajs["y"] +num_traj = df.count()[0] +dist = cuspatial.directed_hausdorff_distance(new_lon, new_lat, query_cnts) +cuspatial_dist0 = dist.data.to_array().reshape((num_traj, num_traj)) +print(cuspatial_dist0) diff --git a/the_archive/archived_rapids_demos/cuspatial/traj_test_soa_locust.py b/the_archive/archived_rapids_demos/cuspatial/traj_test_soa_locust.py new file mode 100644 index 00000000..2fd9aa2d --- /dev/null +++ b/the_archive/archived_rapids_demos/cuspatial/traj_test_soa_locust.py @@ -0,0 +1,71 @@ +""" +GPU-based coordinate transformation demo: (log/lat)==>(x/y), relative to a +camera origin + +Note: camera configuration is read from a CSV file using Panda +""" + +import numpy as np +import pandas as pd + +import cuspatial + + +def get_ts_struct(ts): + y = ts & 0x3F + ts = ts >> 6 + m = ts & 0xF + ts = ts >> 4 + d = ts & 0x1F + ts = ts >> 5 + hh = ts & 0x1F + ts = ts >> 5 + mm = ts & 0x3F + ts = ts >> 6 + ss = ts & 0x3F + ts = ts >> 6 + wd = ts & 0x8 + ts = ts >> 3 + yd = ts & 0x1FF + ts = ts >> 9 + ms = ts & 0x3FF + ts = ts >> 10 + pid = ts & 0x3FF + + return y, m, d, hh, mm, ss, wd, yd, ms, pid + + +data_dir = "./data/" +df = pd.read_csv(data_dir + "its_camera_2.csv") +this_cam = df.loc[df["cameraIdString"] == "HWY_20_AND_LOCUST"] +cam_lon = np.double(this_cam.iloc[0]["originLon"]) +cam_lat = np.double(this_cam.iloc[0]["originLat"]) + +lonlats = cuspatial.read_points_lonlat(data_dir + "locust.location") +ids = cuspatial.read_uint(data_dir + "locust.objectid") +ts = cuspatial.read_its_timestamps(data_dir + "locust.time") + +# examine binary representatons +ts_0 = ts.data.to_array()[0] +out1 = format(ts_0, "016x") +print(out1) +out2 = format(ts_0, "064b") +print(out2) + +y, m, d, hh, mm, ss, wd, yd, ms, pid = get_ts_struct(ts_0) + +xys = cuspatial.lonlat_to_cartesian( + cam_lon, cam_lat, lonlats["lon"], lonlats["lat"] +) +num_traj, trajectories = cuspatial.derive(xys["x"], xys["y"], ids, ts) +# = num_traj, tid, len, pos = +y, m, d, hh, mm, ss, wd, yd, ms, pid = get_ts_struct(ts_0) +distspeed = cuspatial.distance_and_speed( + xys["x"], xys["y"], ts, trajectories["length"], trajectories["position"] +) +print(distspeed) + +boxes = cuspatial.spatial_bounds( + xys["x"], xys["y"], trajectories["length"], trajectories["position"] +) +print(boxes.head()) diff --git a/conference_notebooks/ASONAM_2019/Cyber.ipynb b/the_archive/archived_rapids_event_notebooks/ASONAM_2019/Cyber.ipynb similarity index 100% rename from conference_notebooks/ASONAM_2019/Cyber.ipynb rename to the_archive/archived_rapids_event_notebooks/ASONAM_2019/Cyber.ipynb diff --git a/conference_notebooks/ASONAM_2019/Spotify_Playlist.ipynb b/the_archive/archived_rapids_event_notebooks/ASONAM_2019/Spotify_Playlist.ipynb similarity index 100% rename from conference_notebooks/ASONAM_2019/Spotify_Playlist.ipynb rename to the_archive/archived_rapids_event_notebooks/ASONAM_2019/Spotify_Playlist.ipynb diff --git a/conference_notebooks/ASONAM_2019/Weighted_Link_Prediction.ipynb b/the_archive/archived_rapids_event_notebooks/ASONAM_2019/Weighted_Link_Prediction.ipynb similarity index 100% rename from conference_notebooks/ASONAM_2019/Weighted_Link_Prediction.ipynb rename to the_archive/archived_rapids_event_notebooks/ASONAM_2019/Weighted_Link_Prediction.ipynb diff --git a/conference_notebooks/GTC_SJ_2019/GTC_tutorial_instructor.ipynb b/the_archive/archived_rapids_event_notebooks/GTC_SJ_2019/GTC_tutorial_instructor.ipynb similarity index 100% rename from conference_notebooks/GTC_SJ_2019/GTC_tutorial_instructor.ipynb rename to the_archive/archived_rapids_event_notebooks/GTC_SJ_2019/GTC_tutorial_instructor.ipynb diff --git a/conference_notebooks/GTC_SJ_2019/GTC_tutorial_student.ipynb b/the_archive/archived_rapids_event_notebooks/GTC_SJ_2019/GTC_tutorial_student.ipynb similarity index 100% rename from conference_notebooks/GTC_SJ_2019/GTC_tutorial_student.ipynb rename to the_archive/archived_rapids_event_notebooks/GTC_SJ_2019/GTC_tutorial_student.ipynb diff --git a/conference_notebooks/KDD_2019/README.md b/the_archive/archived_rapids_event_notebooks/KDD_2019/README.md similarity index 100% rename from conference_notebooks/KDD_2019/README.md rename to the_archive/archived_rapids_event_notebooks/KDD_2019/README.md diff --git a/conference_notebooks/KDD_2019/cyber/Cybersecurity_KDD.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/Cybersecurity_KDD.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/cyber/Cybersecurity_KDD.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/Cybersecurity_KDD.ipynb diff --git a/conference_notebooks/KDD_2019/cyber/README.md b/the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/README.md similarity index 100% rename from conference_notebooks/KDD_2019/cyber/README.md rename to the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/README.md diff --git a/conference_notebooks/KDD_2019/cyber/images/viz_1.jpg b/the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/images/viz_1.jpg similarity index 100% rename from conference_notebooks/KDD_2019/cyber/images/viz_1.jpg rename to the_archive/archived_rapids_event_notebooks/KDD_2019/cyber/images/viz_1.jpg diff --git a/conference_notebooks/KDD_2019/graph_pattern_mining/MiningFrequentPatternsFromGraphs.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/MiningFrequentPatternsFromGraphs.ipynb old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2019/graph_pattern_mining/MiningFrequentPatternsFromGraphs.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/MiningFrequentPatternsFromGraphs.ipynb diff --git a/conference_notebooks/KDD_2019/graph_pattern_mining/images/BiPartiteGraph_Example.png b/the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/images/BiPartiteGraph_Example.png old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2019/graph_pattern_mining/images/BiPartiteGraph_Example.png rename to the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/images/BiPartiteGraph_Example.png diff --git a/conference_notebooks/KDD_2019/graph_pattern_mining/images/Windows_SomethingWentWrong.png b/the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/images/Windows_SomethingWentWrong.png old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2019/graph_pattern_mining/images/Windows_SomethingWentWrong.png rename to the_archive/archived_rapids_event_notebooks/KDD_2019/graph_pattern_mining/images/Windows_SomethingWentWrong.png diff --git a/conference_notebooks/KDD_2019/img/microsoft_logo.png b/the_archive/archived_rapids_event_notebooks/KDD_2019/img/microsoft_logo.png similarity index 100% rename from conference_notebooks/KDD_2019/img/microsoft_logo.png rename to the_archive/archived_rapids_event_notebooks/KDD_2019/img/microsoft_logo.png diff --git a/conference_notebooks/KDD_2019/img/nvidia_logo.jpg b/the_archive/archived_rapids_event_notebooks/KDD_2019/img/nvidia_logo.jpg similarity index 100% rename from conference_notebooks/KDD_2019/img/nvidia_logo.jpg rename to the_archive/archived_rapids_event_notebooks/KDD_2019/img/nvidia_logo.jpg diff --git a/conference_notebooks/KDD_2019/img/plasticc_overview.png b/the_archive/archived_rapids_event_notebooks/KDD_2019/img/plasticc_overview.png similarity index 100% rename from conference_notebooks/KDD_2019/img/plasticc_overview.png rename to the_archive/archived_rapids_event_notebooks/KDD_2019/img/plasticc_overview.png diff --git a/conference_notebooks/KDD_2020/img/rapids_logo.png b/the_archive/archived_rapids_event_notebooks/KDD_2019/img/rapids_logo.png similarity index 100% rename from conference_notebooks/KDD_2020/img/rapids_logo.png rename to the_archive/archived_rapids_event_notebooks/KDD_2019/img/rapids_logo.png diff --git a/conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Exercise_Answers.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/Introduction.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Introduction.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Introduction.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Introduction.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/Part_1-1_RNN_Feature_Engineering.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_1-1_RNN_Feature_Engineering.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Part_1-1_RNN_Feature_Engineering.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_1-1_RNN_Feature_Engineering.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/Part_1-2_RNN_Extract_Bottleneck.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_1-2_RNN_Extract_Bottleneck.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Part_1-2_RNN_Extract_Bottleneck.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_1-2_RNN_Extract_Bottleneck.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/Part_2-1_Feature_Engineering.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_2-1_Feature_Engineering.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Part_2-1_Feature_Engineering.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_2-1_Feature_Engineering.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/Part_2-2_Train_XGBoost_&_MLP.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_2-2_Train_XGBoost_&_MLP.ipynb similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/Part_2-2_Train_XGBoost_&_MLP.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/Part_2-2_Train_XGBoost_&_MLP.ipynb diff --git a/conference_notebooks/KDD_2019/plasticc/__pycache__/rnn.cpython-37.pyc b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/__pycache__/rnn.cpython-37.pyc similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/__pycache__/rnn.cpython-37.pyc rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/__pycache__/rnn.cpython-37.pyc diff --git a/conference_notebooks/KDD_2019/plasticc/__pycache__/utils.cpython-37.pyc b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/__pycache__/utils.cpython-37.pyc similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/__pycache__/utils.cpython-37.pyc rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/__pycache__/utils.cpython-37.pyc diff --git a/conference_notebooks/KDD_2019/plasticc/cudf_agg.py b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/cudf_agg.py similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/cudf_agg.py rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/cudf_agg.py diff --git a/conference_notebooks/KDD_2019/plasticc/rnn.py b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/rnn.py similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/rnn.py rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/rnn.py diff --git a/conference_notebooks/KDD_2019/plasticc/utils.py b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/utils.py similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/utils.py rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/utils.py diff --git a/conference_notebooks/KDD_2019/plasticc/weight/rnn.npy b/the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/weight/rnn.npy similarity index 100% rename from conference_notebooks/KDD_2019/plasticc/weight/rnn.npy rename to the_archive/archived_rapids_event_notebooks/KDD_2019/plasticc/weight/rnn.npy diff --git a/conference_notebooks/KDD_2020/Presenters.md b/the_archive/archived_rapids_event_notebooks/KDD_2020/Presenters.md similarity index 100% rename from conference_notebooks/KDD_2020/Presenters.md rename to the_archive/archived_rapids_event_notebooks/KDD_2020/Presenters.md diff --git a/conference_notebooks/KDD_2020/README.md b/the_archive/archived_rapids_event_notebooks/KDD_2020/README.md old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/README.md rename to the_archive/archived_rapids_event_notebooks/KDD_2020/README.md diff --git a/conference_notebooks/KDD_2020/img/cybert_workflow.png b/the_archive/archived_rapids_event_notebooks/KDD_2020/img/cybert_workflow.png similarity index 100% rename from conference_notebooks/KDD_2020/img/cybert_workflow.png rename to the_archive/archived_rapids_event_notebooks/KDD_2020/img/cybert_workflow.png diff --git a/conference_notebooks/KDD_2020/img/microsoft_logo.png b/the_archive/archived_rapids_event_notebooks/KDD_2020/img/microsoft_logo.png similarity index 100% rename from conference_notebooks/KDD_2020/img/microsoft_logo.png rename to the_archive/archived_rapids_event_notebooks/KDD_2020/img/microsoft_logo.png diff --git a/conference_notebooks/KDD_2020/img/njit_logo.png b/the_archive/archived_rapids_event_notebooks/KDD_2020/img/njit_logo.png similarity index 100% rename from conference_notebooks/KDD_2020/img/njit_logo.png rename to the_archive/archived_rapids_event_notebooks/KDD_2020/img/njit_logo.png diff --git a/conference_notebooks/KDD_2020/img/nvidia_logo.jpg b/the_archive/archived_rapids_event_notebooks/KDD_2020/img/nvidia_logo.jpg similarity index 100% rename from conference_notebooks/KDD_2020/img/nvidia_logo.jpg rename to the_archive/archived_rapids_event_notebooks/KDD_2020/img/nvidia_logo.jpg diff --git a/conference_notebooks/SCIPY_2019/cugraph/img/rapids_logo.png b/the_archive/archived_rapids_event_notebooks/KDD_2020/img/rapids_logo.png similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/img/rapids_logo.png rename to the_archive/archived_rapids_event_notebooks/KDD_2020/img/rapids_logo.png diff --git a/conference_notebooks/KDD_2020/kdd_initial_setup.sh b/the_archive/archived_rapids_event_notebooks/KDD_2020/kdd_initial_setup.sh old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/kdd_initial_setup.sh rename to the_archive/archived_rapids_event_notebooks/KDD_2020/kdd_initial_setup.sh diff --git a/conference_notebooks/KDD_2020/notebooks/Lungs/__pycache__/rapids_scanpy_funcs.cpython-37.pyc b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/__pycache__/rapids_scanpy_funcs.cpython-37.pyc similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Lungs/__pycache__/rapids_scanpy_funcs.cpython-37.pyc rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/__pycache__/rapids_scanpy_funcs.cpython-37.pyc diff --git a/conference_notebooks/KDD_2020/notebooks/Lungs/hlca_lung_gpu_analysis.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/hlca_lung_gpu_analysis.ipynb similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Lungs/hlca_lung_gpu_analysis.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/hlca_lung_gpu_analysis.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/Lungs/rapids_scanpy_funcs.py b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/rapids_scanpy_funcs.py similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Lungs/rapids_scanpy_funcs.py rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Lungs/rapids_scanpy_funcs.py diff --git a/conference_notebooks/KDD_2020/notebooks/Taxi/NYCTax.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/NYCTax.ipynb similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Taxi/NYCTax.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/NYCTax.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/Taxi/img/ny_yellow_cab.jpg b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/img/ny_yellow_cab.jpg similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/Taxi/img/ny_yellow_cab.jpg rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/img/ny_yellow_cab.jpg diff --git a/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/nyctaxi_data.py b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/nyctaxi_data.py new file mode 100644 index 00000000..925d8467 --- /dev/null +++ b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/Taxi/nyctaxi_data.py @@ -0,0 +1,65 @@ +import os +import sys +import urllib.request +from tqdm import tqdm +from itertools import chain + +def download_nyctaxi_data(years, path): + taxi_years = [ + "2014", + "2015", + "2016" + ] + + if not set(years) <= set(taxi_years): + print(years) + print("years list not valid, please specify a sublist of") + print(taxi_years) + raise Exception("{years} list is not valid".format(years=years)) + + data_dir = os.path.abspath(os.path.join(path, "nyctaxi")) + if not os.path.exists(data_dir): + os.makedirs(data_dir) + + filenames = [] + local_paths = [] + for year in years: + if year == "2016": + start = 1 + end = 7 + else: + start = 1 + end = 13 + if not os.path.exists(os.path.join(data_dir, year)): + os.makedirs(os.path.join(data_dir, year)) + for i in range(start, end): + filename = "yellow_tripdata_{year}-{month:02d}.csv".format(year=year, month=i) + filenames.append(filename) + local_path = os.path.join(data_dir, year, filename) + local_paths.append(local_path) + + for year in years: + for idx, filename in enumerate(filenames): + filename_elements = [filename_element.split('-') for filename_element in filename.split('_')] + filename_elements = list(chain.from_iterable(filename_elements)) + if year in filename_elements: + url = "https://storage.googleapis.com/anaconda-public-data/nyc-taxi/csv/{year}/".format(year=year) + filename + print("- Downloading " + url) + if not os.path.exists(local_paths[idx]): + with open(local_paths[idx], 'wb') as file: + with urllib.request.urlopen(url) as resp: + length = int(resp.getheader('content-length')) + blocksize = max(4096, length // 100) + with tqdm(total=length, file=sys.stdout) as pbar: + while True: + buff = resp.read(blocksize) + if not buff: + break + file.write(buff) + pbar.update(len(buff)) + else: + print("- File already exists locally") + + print("-------------------") + print("-Download complete-") + print("-------------------") diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/cyBERT_training_inference.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/cyBERT_training_inference.ipynb similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/cyBERT_training_inference.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/cyBERT_training_inference.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/models/apache_cased_example_labels.p b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_cased_example_labels.p similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/models/apache_cased_example_labels.p rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_cased_example_labels.p diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map.txt b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map.txt similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map.txt rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map.txt diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map_example.txt b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map_example.txt similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map_example.txt rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/models/apache_label_map_example.txt diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-hash.txt b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-hash.txt similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-hash.txt rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-hash.txt diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-vocab.txt b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-vocab.txt similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-vocab.txt rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/bert-base-cased-vocab.txt diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/resources/cybert_workflow.png b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/cybert_workflow.png similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/resources/cybert_workflow.png rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/resources/cybert_workflow.png diff --git a/conference_notebooks/KDD_2020/notebooks/cybert/training_data/apache_sample_1k.csv b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/training_data/apache_sample_1k.csv similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/cybert/training_data/apache_sample_1k.csv rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/cybert/training_data/apache_sample_1k.csv diff --git a/conference_notebooks/KDD_2020/notebooks/nvtabular/rossmann-store-sales-example.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/nvtabular/rossmann-store-sales-example.ipynb similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/nvtabular/rossmann-store-sales-example.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/nvtabular/rossmann-store-sales-example.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/parking/README.md b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/README.md old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/README.md rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/README.md diff --git a/conference_notebooks/KDD_2020/notebooks/parking/__patch/cuspatial_init_patched.py b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/__patch/cuspatial_init_patched.py old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/__patch/cuspatial_init_patched.py rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/__patch/cuspatial_init_patched.py diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/1_rapids_seattleParking.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/1_rapids_seattleParking.ipynb old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/1_rapids_seattleParking.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/1_rapids_seattleParking.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/2_rapids_seattleParking_graph.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/2_rapids_seattleParking_graph.ipynb old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/2_rapids_seattleParking_graph.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/2_rapids_seattleParking_graph.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/3_rapids_seattleParking_parkingNodes.ipynb b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/3_rapids_seattleParking_parkingNodes.ipynb old mode 100755 new mode 100644 similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/3_rapids_seattleParking_parkingNodes.ipynb rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/3_rapids_seattleParking_parkingNodes.ipynb diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/config/GoogleMapsAPI.cred b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/config/GoogleMapsAPI.cred similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/config/GoogleMapsAPI.cred rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/config/GoogleMapsAPI.cred diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_as_crow_flies.html b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_as_crow_flies.html similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_as_crow_flies.html rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_as_crow_flies.html diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_final.html b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_final.html similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_final.html rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_final.html diff --git a/conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_interim.html b/the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_interim.html similarity index 100% rename from conference_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_interim.html rename to the_archive/archived_rapids_event_notebooks/KDD_2020/notebooks/parking/codes/maps_rendered/map_walk_interim.html diff --git a/conference_notebooks/SCIPY_2019/Introduction.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/Introduction.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/Introduction.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/Introduction.ipynb diff --git a/conference_notebooks/SCIPY_2019/cudf/01-Intro_to_cuDF.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/01-Intro_to_cuDF.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cudf/01-Intro_to_cuDF.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/01-Intro_to_cuDF.ipynb diff --git a/conference_notebooks/SCIPY_2019/cudf/02-Intro_to_cuDF_UDFs.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/02-Intro_to_cuDF_UDFs.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cudf/02-Intro_to_cuDF_UDFs.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/02-Intro_to_cuDF_UDFs.ipynb diff --git a/conference_notebooks/SCIPY_2019/cudf/example_output/foo.csv b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/example_output/foo.csv similarity index 100% rename from conference_notebooks/SCIPY_2019/cudf/example_output/foo.csv rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cudf/example_output/foo.csv diff --git a/conference_notebooks/SCIPY_2019/cugraph/01-Intro_to_cuGraph.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/01-Intro_to_cuGraph.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/01-Intro_to_cuGraph.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/01-Intro_to_cuGraph.ipynb diff --git a/conference_notebooks/SCIPY_2019/cugraph/02-Louvain.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/02-Louvain.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/02-Louvain.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/02-Louvain.ipynb diff --git a/conference_notebooks/SCIPY_2019/cugraph/03-Pagerank.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/03-Pagerank.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/03-Pagerank.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/03-Pagerank.ipynb diff --git a/conference_notebooks/SCIPY_2019/cugraph/img/GraphAnalyticsFigure.jpg b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/GraphAnalyticsFigure.jpg similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/img/GraphAnalyticsFigure.jpg rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/GraphAnalyticsFigure.jpg diff --git a/conference_notebooks/SCIPY_2019/cugraph/img/comms.jpeg b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/comms.jpeg similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/img/comms.jpeg rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/comms.jpeg diff --git a/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/rapids_logo.png b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/rapids_logo.png new file mode 100644 index 00000000..40504083 Binary files /dev/null and b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/rapids_logo.png differ diff --git a/conference_notebooks/SCIPY_2019/cugraph/img/zachary_black_lines.png b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/zachary_black_lines.png similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/img/zachary_black_lines.png rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/zachary_black_lines.png diff --git a/conference_notebooks/SCIPY_2019/cugraph/img/zachary_graph_pagerank.png b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/zachary_graph_pagerank.png similarity index 100% rename from conference_notebooks/SCIPY_2019/cugraph/img/zachary_graph_pagerank.png rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cugraph/img/zachary_graph_pagerank.png diff --git a/conference_notebooks/SCIPY_2019/cuml/01-Introduction-LinearRegression-Hyperparam.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/01-Introduction-LinearRegression-Hyperparam.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cuml/01-Introduction-LinearRegression-Hyperparam.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/01-Introduction-LinearRegression-Hyperparam.ipynb diff --git a/conference_notebooks/SCIPY_2019/cuml/02-LogisticRegression.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/02-LogisticRegression.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cuml/02-LogisticRegression.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/02-LogisticRegression.ipynb diff --git a/conference_notebooks/SCIPY_2019/cuml/03-UMAP.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/03-UMAP.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/cuml/03-UMAP.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/03-UMAP.ipynb diff --git a/conference_notebooks/SCIPY_2019/cuml/img/digitstsne.png b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/img/digitstsne.png similarity index 100% rename from conference_notebooks/SCIPY_2019/cuml/img/digitstsne.png rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/img/digitstsne.png diff --git a/conference_notebooks/SCIPY_2019/cuml/img/fashiontsne.png b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/img/fashiontsne.png similarity index 100% rename from conference_notebooks/SCIPY_2019/cuml/img/fashiontsne.png rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/cuml/img/fashiontsne.png diff --git a/conference_notebooks/SCIPY_2019/index.ipynb b/the_archive/archived_rapids_event_notebooks/SCIPY_2019/index.ipynb similarity index 100% rename from conference_notebooks/SCIPY_2019/index.ipynb rename to the_archive/archived_rapids_event_notebooks/SCIPY_2019/index.ipynb diff --git a/competition_notebooks.md b/the_archive/competition_notebooks.md similarity index 100% rename from competition_notebooks.md rename to the_archive/competition_notebooks.md diff --git a/utils/sql_check.py b/utils/sql_check.py index 4d6ddbe5..f3f74c76 100644 --- a/utils/sql_check.py +++ b/utils/sql_check.py @@ -18,35 +18,38 @@ def bsql_start(): """ # is BlazingSQL installed? try: - from blazingsql import BlazingContext + import blazingsql # yes, indicate success return "You've got BlazingSQL set up perfectly! Let's get started with SQL in RAPIDS AI!" # BlazingSQL not found except ModuleNotFoundError: # do we want to install BlazingSQL? - print("Unable to locate BlazingSQL. We'll install it now") - # Install JRE first - os.system("apt-get update") - os.system("apt-get -y install default-jre") - # tag BlazingSQL conda install script - b = "conda install -c blazingsql/label/cuda10.0 -c blazingsql" - b += ' -c rapidsai -c nvidia -c conda-forge -c defaults ' - b += "blazingsql python=3.7 cudatoolkit=10.0" # CUDA 10, Python 3.7 (BlazingSQL also supports CUDA 9.2) - # tag python version - py = sys.version.split('.') # e.g. output: ['3', '6', '7 | packaged by cond... - if py[0] == '3': # make sure we're in 3 - py = py[1] # focus mid version (3.?) - # are we on python 3.6? - if py == '6': - # adjust to 3.6 install script - b = b.replace('python=3.7', 'python=3.6') - # lmk what's going on? - print('Installing BlazingSQL, this should take some time. This is only need to be done once') - # install BlazingSQL - os.system(b) - # indicate completion - return f"Let's get started with SQL in RAPIDS AI!" - + print('Unable to locate BlazingSQL. Please install it from https://rapids.ai/start.html#rapids-release-selector using "RAPIDS and BlazingSQL" with your current system configuration selected') +# # Install JRE first +# os.system("apt-get update") +# os.system("apt-get -y install default-jre") +# # tag BlazingSQL conda install script +# b = "conda install -c blazingsql/label/cuda10.0 -c blazingsql" +# b += ' -c rapidsai -c nvidia -c conda-forge -c defaults ' +# b += "blazingsql python=3.7 cudatoolkit=10.0" # CUDA 10, Python 3.7 (BlazingSQL also supports CUDA 9.2) +# # tag python version +# py = sys.version.split('.') # e.g. output: ['3', '6', '7 | packaged by cond... +# if py[0] == '3': # make sure we're in 3 +# py = py[1] # focus mid version (3.?) +# # are we on python 3.6? +# if py == '6': +# # adjust to 3.6 install script +# b = b.replace('python=3.7', 'python=3.6') +# # lmk what's going on? +# print('Installing BlazingSQL, this should take some time. This is only need to be done once') +# # install BlazingSQL +# os.system(b) +# # indicate completion +# return f"Let's get started with SQL in RAPIDS AI!" + return f"After you've installed RAPIDS and BlazingSQL, please try this notebook again." + except FileNotFoundError: + print('Unable to locate BlazingSQL. Please install it from https://rapids.ai/start.html#rapids-release-selector using "RAPIDS and BlazingSQL" with your current system configuration selected') + return f"After you've installed RAPIDS and BlazingSQL, please try this notebook again." if __name__=='__main__': # check environment for BlazingSQL