Full Code of r9y9/gantts for AI

master fb1e75fa9cab cached
28 files
12.3 MB
3.2M tokens
95 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,859K chars total). Download the full file to get everything.
Repository: r9y9/gantts
Branch: master
Commit: fb1e75fa9cab
Files: 28
Total size: 12.3 MB

Directory structure:
gitextract_31fi3jc2/

├── .github/
│   └── stale.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── LICENSE.md
├── README.md
├── data/
│   └── .gitignore
├── evaluation_tts.py
├── evaluation_vc.py
├── gantts/
│   ├── __init__.py
│   ├── models.py
│   ├── multistream.py
│   └── seqloss.py
├── generated/
│   └── .gitignore
├── hparams.py
├── notebooks/
│   ├── Test RNN VC.ipynb
│   ├── Test TTS.ipynb
│   └── Test VC.ipynb
├── prepare_features_tts.py
├── prepare_features_vc.py
├── release.sh
├── setup.py
├── tests/
│   └── test_gantts.py
├── tox.ini
├── train.py
├── train_gan.sh
├── tts_demo.sh
└── vc_demo.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 60

# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7

# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []

# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
  - roadmap
  - bug
  - design

# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true

# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true

# Label to use when marking as stale
staleLabel: wontfix

# Comment to post when marking as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.

# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30

# Limit to only `issues` or `pulls`
only: issues


================================================
FILE: .gitignore
================================================
checkpoints*
log
gantts/version.py

# Created by https://www.gitignore.io

### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/


### IPythonNotebook ###
# Temporary data
.ipynb_checkpoints/


### SublimeText ###
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache

# workspace files are user-specific
*.sublime-workspace

# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project

# sftp configuration file
sftp-config.json


### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Org-mode
.org-id-locations
*_archive

# flymake-mode
*_flymake.*

# eshell files
/eshell/history
/eshell/lastdir

# elpa packages
/elpa/

# reftex files
*.rel

# AUCTeX auto folder
/auto/

# cask packages
.cask/


### Vim ###
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~


### C++ ###
# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app


### OSX ###
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear on external disk
.Spotlight-V100
.Trashes

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk


### Linux ###
*~

# KDE directory preferences
.directory

# Linux trash folder which might appear on any partition or disk
.Trash-*


================================================
FILE: .gitmodules
================================================
[submodule "nnmnkwii_gallery"]
	path = nnmnkwii_gallery
	url = https://github.com/r9y9/nnmnkwii_gallery


================================================
FILE: .travis.yml
================================================
language: python

python:
  - "2.7"
  - "3.6"

notifications:
  email: false

before_install:
  - sudo apt-get update
  - if [["$TRAVIS_PYTHON_VERSION" == "2.7"]]; then
      wget http://repo.continuum.io/miniconda/Miniconda-3.8.3-Linux-x86_64.sh -O miniconda.sh;
    else
      wget http://repo.continuum.io/miniconda/Miniconda3-3.8.3-Linux-x86_64.sh -O miniconda.sh;
    fi
  - bash miniconda.sh -b -p $HOME/miniconda
  - export PATH="$HOME/miniconda/bin:$PATH"
  - hash -r
  - conda config --set always_yes yes --set changeps1 no
  - conda update -q conda
  # Useful for debugging any issues with conda
  - conda config --add channels pypi
  - conda info -a
  - deps='pip numpy scipy cython nose'
  - conda create -q -n test-environment "python=$TRAVIS_PYTHON_VERSION" $deps
  - source activate test-environment
  - conda install pytorch -c soumith
  - pip install codecov flake8

install:
  - pip install -e ".[test]"

script:
  - nosetests -v -w tests/


================================================
FILE: LICENSE.md
================================================
The tacotron_pytorch package is licensed under the MIT "Expat" License:

> Copyright (c) 2017: Ryuichi Yamamoto.
>
> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> "Software"), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:
>
> The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
# GAN TTS

[![Build Status](https://travis-ci.org/r9y9/gantts.svg?branch=master)](https://travis-ci.org/r9y9/gantts)
[![PyPI](https://img.shields.io/pypi/v/gantts.svg)](https://pypi.python.org/pypi/gantts)
[![DOI](https://zenodo.org/badge/105146494.svg)](https://zenodo.org/badge/latestdoi/105146494)

PyTorch implementation of Generative adversarial Networks (GAN) based text-to-speech (TTS) and voice conversion (VC).

1. [Saito, Yuki, Shinnosuke Takamichi, and Hiroshi Saruwatari. "Statistical Parametric Speech Synthesis Incorporating Generative Adversarial Networks." IEEE/ACM Transactions on Audio, Speech, and Language Processing (2017).](http://ieeexplore.ieee.org/abstract/document/8063435/)
2. [Shan Yang, Lei Xie, Xiao Chen, Xiaoyan Lou, Xuan Zhu, Dongyan Huang, Haizhou Li, "
Statistical Parametric Speech Synthesis Using Generative Adversarial Networks Under A Multi-task Learning Framework", 	arXiv:1707.01670, Jul 2017.](https://arxiv.org/abs/1707.01670)

## Generated audio samples

Audio samples are available in the Jupyter notebooks at the link below:

- [Voice conversion (en, MLP)](http://nbviewer.jupyter.org/github/r9y9/gantts/blob/master/notebooks/Test%20VC.ipynb)
- [Voice conversion (en, RNN)](http://nbviewer.jupyter.org/github/r9y9/gantts/blob/master/notebooks/Test%20RNN%20VC.ipynb)
- [Text-to-speech synthesis (en, MLP)](http://nbviewer.jupyter.org/github/r9y9/gantts/blob/master/notebooks/Test%20TTS.ipynb)
- [Text-to-speech synthesis (ja, MLP)](http://nbviewer.jupyter.org/gist/r9y9/185a56417cee27d9f785b8caf1c9f5ec)


## Notes on hyper parameters

- `adversarial_streams`, which represents streams (mgc, lf0, vuv, bap) to be used to compute adversarial loss, is a very speech quality sensitive parameter. Computing adversarial loss on mgc features (except for first few dimensions) seems to be working good.
- If `mask_nth_mgc_for_adv_loss` > 0, first `mask_nth_mgc_for_adv_loss` dimension for mgc will be ignored for computing adversarial loss. As described in [saito2017asja](http://sython.org/papers/ASJ/saito2017asja.pdf), I confirmed that using 0-th (and 1-th) mgc for computing adversarial loss affects speech quality. From my experience, `mask_nth_mgc_for_adv_loss` = 1 for mgc order 25, `mask_nth_mgc_for_adv_loss` = 2 for mgc order 59 are working to me.
- F0 extracted by WORLD will be spline interpolated. Set `f0_interpolation_kind` to "slinear" if you want frist-order spline interpolation, which is same as Merlin's default.
- Set `use_harvest` to True if you want to use Harvest F0 estimation algorithm. If False, Dio and StoneMask are used to estimate/refine F0.
- If you see `cuda runtime error (2) : out of memory`, try smaller batch size. https://github.com/r9y9/gantts/issues/3

### Notes on [2]

Though I haven't got improvements over Saito's approach [1] yet, but the GAN-based models described in [2] should be achieved by the following configurations:

- Set `generator_add_noise` to True. This will enable generator to use Gaussian noise as input. Linguistic features are concatenated with the noise vector.
- Set `discriminator_linguistic_condition` to True. The discriminator uses linguistic features as condition.

## Requirements

- [PyTorch](http://pytorch.org/) >= v0.2.0
- [TensorFlow](https://www.tensorflow.org/) (just for `tf.contrib.training.HParams`)
- [nnmnkwii](https://github.com/r9y9/nnmnkwii)
- [PyWorld](https://github.com/JeremyCCHsu/Python-Wrapper-for-World-Vocoder)
- https://github.com/taolei87/sru (if you want to try SRU-based models)
- Python

## Installation

Please install PyTorch, TensorFlow and SRU (if needed) first. Once you have those, then

```
git clone --recursive https://github.com/r9y9/gantts && cd gantts
pip install -e ".[train]"
```

should install all other dependencies.

## Repository structure

- **gantts/**: Network definitions, utilities for working on sequence-loss optimization.
- **prepare_features_vc.py**: Acoustic feature extraction script for voice conversion.
- **prepare_features_tts.py**: Linguistic/duration/acoustic feature extraction script for TTS.
- **train.py**: GAN-based training script. This is written to be generic so that can be used for training voice conversion models as well as text-to-speech models (duration/acoustic).
- **train_gan.sh**: Adversarial training wrapper script for `train.py`.
- **hparams.py**: Hyper parameters for VC and TTS experiments.
- **evaluation_vc.py**: Evaluation script for VC.
- **evaluation_tts.py**: Evaluation script for TTS.

Feature extraction scripts are written for CMU ARCTIC dataset, but can be easily adapted for other datasets.

## Run demos

### Voice conversion (en)

`vc_demo.sh` is a `clb` to `clt` voice conversion demo script. Before running the script, please download wav files for `clb` and `slt` from [CMU ARCTIC](http://festvox.org/cmu_arctic/) and check that you have all data in a directory as follows:

```
> tree ~/data/cmu_arctic/ -d -L 1
/home/ryuichi/data/cmu_arctic/
├── cmu_us_awb_arctic
├── cmu_us_bdl_arctic
├── cmu_us_clb_arctic
├── cmu_us_jmk_arctic
├── cmu_us_ksp_arctic
├── cmu_us_rms_arctic
└── cmu_us_slt_arctic
```

Once you have downloaded datasets, then:

```
./vc_demo.sh ${experimental_id} ${your_cmu_arctic_data_root}
```

e.g.,

```
 ./vc_demo.sh vc_gan_test ~/data/cmu_arctic/
```

Model checkpoints will be saved at `./checkpoints/${experimental_id}` and audio samples
are saved at `./generated/${experimental_id}`.

### Text-to-speech synthesis (en)

`tts_demo.sh` is a self-contained TTS demo script. The usage is:

```
./tts_demo.sh ${experimental_id}
```

This will download `slt_arctic_full_data` used in Merlin's demo, perform feature extraction, train models and synthesize audio samples for eval/test set. `${experimenta_id}` can be arbitrary string, for example,

```
./tts_demo.sh tts_test
```


Model checkpoints will be saved at `./checkpoints/${experimental_id}` and audio samples
are saved at `./generated/${experimental_id}`.

## Hyper paramters

See ``hparams.py``.

## Monitoring training progress

```
tensorboard --logdir=log
```

## References

- [Yuki Saito, Shinnosuke Takamichi, Hiroshi Saruwatari, "Statistical Parametric Speech Synthesis Incorporating Generative Adversarial Networks", arXiv:1709.08041 [cs.SD], Sep. 2017](https://arxiv.org/abs/1709.08041)
- [Yuki Saito, Shinnosuke Takamichi, and Hiroshi Saruwatari, "Training algorithm to deceive anti-spoofing verification for DNN-based text-to-speech synthesis," IPSJ SIG Technical Report, 2017-SLP-115, no. 1, pp. 1-6, Feb., 2017. (in Japanese)](http://sython.org/papers/SIG-SLP/saito201702slp.pdf)
- [Yuki Saito, Shinnosuke Takamichi, and Hiroshi Saruwatari, "Voice conversion using input-to-output highway networks," IEICE Transactions on Information and Systems, Vol.E100-D, No.8, pp.1925--1928, Aug. 2017](https://www.jstage.jst.go.jp/article/transinf/E100.D/8/E100.D_2017EDL8034/_article)
- https://www.slideshare.net/ShinnosukeTakamichi/dnnantispoofing
- https://www.slideshare.net/YukiSaito8/Saito2017icassp

## Notice

The repository doesn't try to reproduce same results reported in their papers because 1) data is not publically available and 2). hyper parameters are highly depends on data. Instead, I tried same ideas on different data with different hyper parameters.


================================================
FILE: data/.gitignore
================================================
*
!.gitignore


================================================
FILE: evaluation_tts.py
================================================
# coding: utf-8
"""Evaluation script for GAN-based text-to-speech synthesis.

usage: evaluation_vc.py [options] <acoustic_checkpoint> <duration_checkpoint> \
    <data_dir> <labels_dir> <outputs_dir>

options:
    --fs=<fs>                   Sampling frequency [default: 16000].
    --disable-duraton-gen       Disable duration generation.
    --post-filter               Apply Merlin's post filter to spectral features.
    -h, --help                  Show this help message and exit.
"""
from docopt import docopt
import numpy as np

import torch
from torch import nn
from torch.autograd import Variable

from scipy.io import wavfile
import pyworld
import pysptk

import sys
import os
from os.path import splitext, join, abspath, basename, exists

from nnmnkwii import preprocessing as P
from nnmnkwii import paramgen
from nnmnkwii.datasets import FileSourceDataset, FileDataSource
from nnmnkwii.io import hts
from nnmnkwii.frontend import merlin as fe
from nnmnkwii.postfilters import merlin_post_filter

import gantts
from gantts.multistream import multi_stream_mlpg, get_static_features
from gantts.multistream import get_static_stream_sizes, select_streams
from gantts.seqloss import MaskedMSELoss, sequence_mask

from hparams import tts_acoustic as hp_acoustic
from hparams import tts_duration as hp_duration

from train import NPYDataSource


use_cuda = torch.cuda.is_available()

binary_dict, continuous_dict = hts.load_question_set(hp_acoustic.question_path)


def gen_parameters(y_predicted, Y_mean, Y_std, mge_training=True):
    mgc_dim, lf0_dim, vuv_dim, bap_dim = hp_acoustic.stream_sizes

    mgc_start_idx = 0
    lf0_start_idx = mgc_dim
    vuv_start_idx = lf0_start_idx + lf0_dim
    bap_start_idx = vuv_start_idx + vuv_dim

    windows = hp_acoustic.windows

    ty = "acoustic"

    # MGE training
    if mge_training:
        # Split acoustic features
        mgc = y_predicted[:, :lf0_start_idx]
        lf0 = y_predicted[:, lf0_start_idx:vuv_start_idx]
        vuv = y_predicted[:, vuv_start_idx]
        bap = y_predicted[:, bap_start_idx:]

        # Perform MLPG on normalized features
        mgc = paramgen.mlpg(mgc, np.ones(mgc.shape[-1]), windows)
        lf0 = paramgen.mlpg(lf0, np.ones(lf0.shape[-1]), windows)
        bap = paramgen.mlpg(bap, np.ones(bap.shape[-1]), windows)

        # When we use MGE training, denormalization should be done after MLPG.
        mgc = P.inv_scale(mgc, Y_mean[ty][:mgc_dim // len(windows)],
                          Y_std[ty][:mgc_dim // len(windows)])
        lf0 = P.inv_scale(lf0, Y_mean[ty][lf0_start_idx:lf0_start_idx + lf0_dim // len(windows)],
                          Y_std[ty][lf0_start_idx:lf0_start_idx + lf0_dim // len(windows)])
        bap = P.inv_scale(bap, Y_mean[ty][bap_start_idx:bap_start_idx + bap_dim // len(windows)],
                          Y_std[ty][bap_start_idx:bap_start_idx + bap_dim // len(windows)])
        vuv = P.inv_scale(vuv, Y_mean[ty][vuv_start_idx], Y_std[ty][vuv_start_idx])
    else:
        # Denormalization first
        y_predicted = P.inv_scale(y_predicted, Y_mean, Y_std)

        # Split acoustic features
        mgc = y_predicted[:, :lf0_start_idx]
        lf0 = y_predicted[:, lf0_start_idx:vuv_start_idx]
        vuv = y_predicted[:, vuv_start_idx]
        bap = y_predicted[:, bap_start_idx:]

        # Perform MLPG
        Y_var = Y_std[ty] * Y_std[ty]
        mgc = paramgen.mlpg(mgc, Y_var[:lf0_start_idx], windows)
        lf0 = paramgen.mlpg(lf0, Y_var[lf0_start_idx:vuv_start_idx], windows)
        bap = paramgen.mlpg(bap, Y_var[bap_start_idx:], windows)

    return mgc, lf0, vuv, bap


def gen_waveform(y_predicted, Y_mean, Y_std, post_filter=False, coef=1.4,
                 fs=16000, mge_training=True):
    alpha = pysptk.util.mcepalpha(fs)
    fftlen = fftlen = pyworld.get_cheaptrick_fft_size(fs)
    frame_period = hp_acoustic.frame_period

    # Generate parameters and split streams
    mgc, lf0, vuv, bap = gen_parameters(y_predicted, Y_mean, Y_std, mge_training)

    if post_filter:
        mgc = merlin_post_filter(mgc, alpha, coef=coef)

    spectrogram = pysptk.mc2sp(mgc, fftlen=fftlen, alpha=alpha)
    aperiodicity = pyworld.decode_aperiodicity(bap.astype(np.float64), fs, fftlen)
    f0 = lf0.copy()
    f0[vuv < 0.5] = 0
    f0[np.nonzero(f0)] = np.exp(f0[np.nonzero(f0)])

    generated_waveform = pyworld.synthesize(f0.flatten().astype(np.float64),
                                            spectrogram.astype(np.float64),
                                            aperiodicity.astype(np.float64),
                                            fs, frame_period)
    # Convert range to int16
    generated_waveform = generated_waveform / \
        np.max(np.abs(generated_waveform)) * 32767

    # return features as well to compare natural/genearted later
    return generated_waveform, mgc, lf0, vuv, bap


def _generator_input(hp, x, seed=None):
    if seed is not None:
        torch.manual_seed(seed)
    if hp.generator_add_noise:
        z = torch.rand(x.size(0), x.size(1), hp.generator_noise_dim)
        z = Variable(z)
        return torch.cat((x, z), -1)
    return x


def gen_duration(label_path, duration_model, X_min, X_max, Y_mean, Y_std):
    # Linguistic features for duration
    hts_labels = hts.load(label_path)
    duration_linguistic_features = fe.linguistic_features(
        hts_labels,
        binary_dict, continuous_dict,
        add_frame_features=hp_duration.add_frame_features,
        subphone_features=hp_duration.subphone_features).astype(np.float32)

    # Apply normali--post-filterzation
    ty = "duration"
    duration_linguistic_features = P.minmax_scale(
        duration_linguistic_features,
        X_min[ty], X_max[ty], feature_range=(0.01, 0.99))

    # Apply models
    duration_model.eval()

    #  Apply model
    x = Variable(torch.from_numpy(duration_linguistic_features)).float()
    xl = len(x)
    x = x.view(1, -1, x.size(-1))
    x = _generator_input(hp_duration, x)
    x = x.cuda() if use_cuda else x
    duration_predicted = duration_model(x, [xl]).data.cpu().numpy()
    duration_predicted = duration_predicted.reshape(-1, duration_predicted.shape[-1])

    # Apply denormalization
    duration_predicted = P.inv_scale(duration_predicted, Y_mean[ty], Y_std[ty])
    duration_predicted = np.round(duration_predicted)

    # Set minimum state duration to 1
    #  print(duration_predicted)
    duration_predicted[duration_predicted <= 0] = 1
    hts_labels.set_durations(duration_predicted)

    return hts_labels


def tts_from_label(models, label_path, X_min, X_max, Y_mean, Y_std,
                   post_filter=False,
                   apply_duration_model=True, coef=1.4, fs=16000,
                   mge_training=True):
    duration_model, acoustic_model = models["duration"], models["acoustic"]

    if use_cuda:
        duration_model = duration_model.cuda()
        acoustic_model = acoustic_model.cuda()

    # Predict durations
    if apply_duration_model:
        duration_modified_hts_labels = gen_duration(
            label_path, duration_model, X_min, X_max, Y_mean, Y_std)
    else:
        duration_modified_hts_labels = hts.load(label_path)

    # Linguistic features
    linguistic_features = fe.linguistic_features(
        duration_modified_hts_labels,
        binary_dict, continuous_dict,
        add_frame_features=hp_acoustic.add_frame_features,
        subphone_features=hp_acoustic.subphone_features)
    # Trim silences
    indices = duration_modified_hts_labels.silence_frame_indices()
    linguistic_features = np.delete(linguistic_features, indices, axis=0)

    # Apply normalization
    ty = "acoustic"
    linguistic_features = P.minmax_scale(
        linguistic_features, X_min[ty], X_max[ty], feature_range=(0.01, 0.99))

    # Predict acoustic features
    acoustic_model.eval()
    x = Variable(torch.from_numpy(linguistic_features)).float()
    xl = len(x)
    x = x.view(1, -1, x.size(-1))
    x = _generator_input(hp_duration, x)
    x = x.cuda() if use_cuda else x
    acoustic_predicted = acoustic_model(x, [xl]).data.cpu().numpy()
    acoustic_predicted = acoustic_predicted.reshape(-1, acoustic_predicted.shape[-1])

    return gen_waveform(acoustic_predicted, Y_mean, Y_std, post_filter,
                        coef=coef, fs=fs, mge_training=mge_training)


def load_checkpoint(model, optimizer, checkpoint_path):
    print("Load checkpoint from: {}".format(checkpoint_path))
    checkpoint = torch.load(checkpoint_path)
    model.load_state_dict(checkpoint["state_dict"])
    if optimizer is not None:
        optimizer.load_state_dict(checkpoint["optimizer"])


def get_lab_files(data_dir, label_dir, test=False):
    if test:
        files = NPYDataSource(join(data_dir, "X_acoustic"), test=True).collect_files()
    else:
        files = NPYDataSource(join(data_dir, "X_acoustic"), train=False).collect_files()

    lab_files = list(map(
        lambda f: join(label_dir, splitext(basename(f))[0] + ".lab"), files))
    return lab_files


def get_wav_files(data_dir, wav_dir, test=False):
    if test:
        files = NPYDataSource(join(data_dir, "X_acoustic"), test=True).collect_files()
    else:
        files = NPYDataSource(join(data_dir, "X_acoustic"), train=False).collect_files()

    wav_files = list(map(
        lambda f: join(wav_dir, splitext(basename(f))[0] + ".wav"), files))
    return wav_files


if __name__ == "__main__":
    args = docopt(__doc__)
    print("Command line args:\n", args)
    acoustic_checkpoint = args["<acoustic_checkpoint>"]
    duration_checkpoint = args["<duration_checkpoint>"]
    data_dir = args["<data_dir>"]
    labels_dir = args["<labels_dir>"]
    outputs_dir = args["<outputs_dir>"]
    post_filter = args["--post-filter"]
    disable_duration_gen = args["--disable-duraton-gen"]
    fs = int(args["--fs"])

    # Collect stats and create models
    X_min = {}
    X_max = {}
    Y_mean = {}
    Y_var = {}
    Y_std = {}
    models = {"acoustic": {}, "duration": {}}

    for typ in ["acoustic", "duration"]:
        X_min[typ] = np.load(join(data_dir, "X_{}_data_min.npy".format(typ)))
        X_max[typ] = np.load(join(data_dir, "X_{}_data_max.npy".format(typ)))
        Y_mean[typ] = np.load(join(data_dir, "Y_{}_data_mean.npy".format(typ)))
        Y_var[typ] = np.load(join(data_dir, "Y_{}_data_var.npy".format(typ)))
        Y_std[typ] = np.sqrt(Y_var[typ])

        hp = hp_acoustic if typ == "acoustic" else hp_duration
        if hp.generator_params["in_dim"] is None:
            D = X_min[typ].shape[-1]
            if hp.generator_add_noise:
                D = D + hp.generator_noise_dim
            hp.generator_params["in_dim"] = D
        if hp.generator_params["out_dim"] is None:
            hp.generator_params["out_dim"] = Y_mean[typ].shape[-1]

        models[typ] = getattr(gantts.models, hp.generator)(**hp.generator_params)
        checkpoint_path = duration_checkpoint if hp == hp_duration \
            else acoustic_checkpoint
        load_checkpoint(models[typ], None, checkpoint_path)
    print(models)

    # Generate samples for
    # 1. Evaluation set
    # 2. Test set
    eval_dir = join(outputs_dir, "eval")
    test_dir = join(outputs_dir, "test")
    if not exists(eval_dir):
        os.makedirs(eval_dir)
    if not exists(test_dir):
        os.makedirs(test_dir)
    eval_lab_files = get_lab_files(data_dir, labels_dir, test=False)
    test_lab_files = get_lab_files(data_dir, labels_dir, test=True)
    for dst_dir, files in [(eval_dir, eval_lab_files), (test_dir, test_lab_files)]:
        for label_path in files:
            print(dst_dir, label_path)
            name = splitext(basename(label_path))[0]
            dst_path = join(dst_dir, name + ".wav")
            waveform, mgc, lf0, vuv, bap = tts_from_label(
                models, label_path, X_min, X_max, Y_mean, Y_std,
                apply_duration_model=not disable_duration_gen,
                post_filter=post_filter, fs=fs)
            wavfile.write(dst_path, fs, waveform.astype(np.int16))

    sys.exit(0)


================================================
FILE: evaluation_vc.py
================================================
# coding: utf-8
"""Evaluation script for GAN-based VC models.

usage: evaluation_vc.py [options] <checkpoint> <data_dir> <wav_dir> <outputs_dir>

options:
    -h, --help                  Show this help message and exit
    --diffvc                    Enable DIFF VC.
"""
from docopt import docopt
import numpy as np

import torch
from torch import nn
from torch.autograd import Variable

from scipy.io import wavfile
import pysptk
from pysptk.synthesis import Synthesizer, MLSADF
import pyworld

import sys
import os
from os.path import splitext, join, abspath, basename, exists

from nnmnkwii import preprocessing as P
from nnmnkwii.paramgen import unit_variance_mlpg_matrix
from nnmnkwii.datasets import FileSourceDataset, FileDataSource

import gantts
from gantts.multistream import multi_stream_mlpg, get_static_features
from gantts.multistream import get_static_stream_sizes, select_streams
from gantts.seqloss import MaskedMSELoss, sequence_mask

from hparams import vc as hp

from train import NPYDataSource


def test_vc_from_path(model, x, fs, data_mean, data_std, diffvc=True):
    model.eval()

    hop_length = int(fs * (hp.frame_period * 0.001))
    x = x.astype(np.float64)
    f0, timeaxis = pyworld.dio(x, fs, frame_period=hp.frame_period)
    f0 = pyworld.stonemask(x, f0, timeaxis, fs)
    spectrogram = pyworld.cheaptrick(x, f0, timeaxis, fs)
    aperiodicity = pyworld.d4c(x, f0, timeaxis, fs)
    alpha = pysptk.util.mcepalpha(fs)
    mc = pysptk.sp2mc(spectrogram, order=hp.order, alpha=alpha)
    c0, mc = mc[:, 0], mc[:, 1:]
    static_dim = mc.shape[-1]
    mc = P.modspec_smoothing(mc, fs / hop_length, cutoff=50)
    mc = P.delta_features(mc, hp.windows).astype(np.float32)

    T = mc.shape[0]

    inputs = mc[:, :static_dim].copy()

    # Normalization
    mc_scaled = P.scale(mc, data_mean, data_std)

    mc_scaled = Variable(torch.from_numpy(mc_scaled))
    lengths = [len(mc_scaled)]

    # Add batch axis
    mc_scaled = mc_scaled.view(1, -1, mc_scaled.size(-1))

    # For MLPG
    R = unit_variance_mlpg_matrix(hp.windows, T)
    R = torch.from_numpy(R)

    # Apply model
    if model.include_parameter_generation():
        # Case: models include parameter generation in itself
        # Mulistream features cannot be used in this case
        y_hat, y_hat_static = model(mc_scaled, R, lengths=lengths)
    else:
        # Case: generic models (can be sequence model)
        assert hp.has_dynamic_features is not None
        y_hat = model(mc_scaled, lengths=lengths)
        y_hat_static = multi_stream_mlpg(
            y_hat, R, hp.stream_sizes, hp.has_dynamic_features)

    mc_static_pred = y_hat_static.data.cpu().numpy().reshape(-1, static_dim)

    # Denormalize
    mc_static_pred = P.inv_scale(
        mc_static_pred, data_mean[:static_dim], data_std[:static_dim])

    outputs = mc_static_pred.copy()

    if diffvc:
        mc_static_pred = mc_static_pred - mc[:, :static_dim]

    mc = np.hstack((c0[:, None], mc_static_pred))
    if diffvc:
        mc[:, 0] = 0  # remove power coefficients
        engine = Synthesizer(MLSADF(order=hp.order, alpha=alpha),
                             hopsize=hop_length)
        b = pysptk.mc2b(mc.astype(np.float64), alpha=alpha)
        waveform = engine.synthesis(x, b)
    else:
        fftlen = pyworld.get_cheaptrick_fft_size(fs)
        spectrogram = pysptk.mc2sp(
            mc.astype(np.float64), alpha=alpha, fftlen=fftlen)
        waveform = pyworld.synthesize(
            f0, spectrogram, aperiodicity, fs, hp.frame_period)

    return waveform, inputs, outputs


def load_checkpoint(model, optimizer, checkpoint_path):
    print("Load checkpoint from: {}".format(checkpoint_path))
    checkpoint = torch.load(checkpoint_path)
    model.load_state_dict(checkpoint["state_dict"])
    if optimizer is not None:
        optimizer.load_state_dict(checkpoint["optimizer"])


def get_wav_files(data_dir, wav_dir, test=False):
    if test:
        files = NPYDataSource(join(data_dir, "X"), test=True).collect_files()
    else:
        files = NPYDataSource(join(data_dir, "X"), train=False).collect_files()

    wav_files = list(map(
        lambda f: join(wav_dir, splitext(basename(f))[0] + ".wav"), files))
    return wav_files


if __name__ == "__main__":
    args = docopt(__doc__)
    print("Command line args:\n", args)
    checkpoint_path = args["<checkpoint>"]
    data_dir = args["<data_dir>"]
    wav_dir = args["<wav_dir>"]
    outputs_dir = args["<outputs_dir>"]
    diffvc = args["--diffvc"]

    # Collect stats
    data_mean = np.load(join(data_dir, "data_mean.npy"))
    data_var = np.load(join(data_dir, "data_var.npy"))
    data_std = np.sqrt(data_var)

    if hp.generator_params["in_dim"] is None:
        hp.generator_params["in_dim"] = data_mean.shape[-1]
    if hp.generator_params["out_dim"] is None:
        hp.generator_params["out_dim"] = data_mean.shape[-1]

    # Model
    model = getattr(gantts.models, hp.generator)(**hp.generator_params)
    load_checkpoint(model, None, checkpoint_path)
    print(model)

    # Generate samples for
    # 1. Evaluation set
    # 2. Test set
    eval_dir = join(outputs_dir, "eval")
    test_dir = join(outputs_dir, "test")
    if not exists(eval_dir):
        os.makedirs(eval_dir)
    if not exists(test_dir):
        os.makedirs(test_dir)
    eval_files = get_wav_files(data_dir, wav_dir, test=False)
    test_files = get_wav_files(data_dir, wav_dir, test=True)
    for dst_dir, files in [(eval_dir, eval_files), (test_dir, test_files)]:
        for path in files:
            print(dst_dir, path)
            name = splitext(basename(path))[0]
            dst_path = join(dst_dir, name + ".wav")
            fs, x = wavfile.read(path)
            waveform, _, _ = test_vc_from_path(
                model, x, fs, data_mean, data_std, diffvc=diffvc)
            wavfile.write(dst_path, fs, waveform.astype(np.int16))

    sys.exit(0)


================================================
FILE: gantts/__init__.py
================================================
# coding: utf-8
from __future__ import with_statement, print_function, absolute_import

from .version import __version__

from gantts import models


================================================
FILE: gantts/models.py
================================================
# coding: utf-8
import torch
from torch import nn
from torch.autograd import Variable

import numpy as np

from nnmnkwii.autograd import unit_variance_mlpg


class AbstractModel(object):
    """Interface for VC and TTS models
    """

    def include_parameter_generation(self):
        """Whether model includes parameter generation or not.
        """
        return False


class In2OutHighwayNet(AbstractModel, nn.Module):
    """Input-to-Output Highway Networks for voice conversion.

    Trying to replicate the model described in the following paper:
    https://www.jstage.jst.go.jp/article/transinf/E100.D/8/E100.D_2017EDL8034/

    .. note::
        Since model architecture itself includes parameter generation, we cannot
        simply use the model for multi-stream features (e.g., in TTS, acoustic
        features often consist multiple features; mgc, f0, vuv and bap.)
    """

    def __init__(self, in_dim=118, out_dim=118, static_dim=118 // 2,
                 num_hidden=3, hidden_dim=512, dropout=0.5):
        super(In2OutHighwayNet, self).__init__()
        self.static_dim = static_dim
        self.relu = nn.LeakyReLU(inplace=True)
        self.sigmoid = nn.Sigmoid()
        # Transform gate (can be deep?)
        self.T = nn.Linear(static_dim, static_dim)

        # Hidden layers
        in_sizes = [in_dim] + [hidden_dim] * (num_hidden - 1)
        out_sizes = [hidden_dim] * num_hidden
        self.H = nn.ModuleList(
            [nn.Linear(in_size, out_size) for (in_size, out_size)
             in zip(in_sizes, out_sizes)])
        self.last_linear = nn.Linear(hidden_dim, out_dim)
        self.dropout = nn.Dropout(dropout)

    def include_parameter_generation(self):
        return True

    def forward(self, x, R, lengths=None):
        # Add batch axis
        x = x.unsqueeze(0) if x.dim() == 2 else x
        x_static = x[:, :, :self.static_dim]

        # T(x)
        Tx = self.sigmoid(self.T(x_static))

        # G(x)
        for layer in self.H:
            x = self.dropout(self.relu(layer(x)))
        x = self.last_linear(x)
        Gx = unit_variance_mlpg(R, x)

        # y^ = x + T(x) * G(x)
        return x, x_static + Tx * Gx


class In2OutRNNHighwayNet(AbstractModel, nn.Module):
    def __init__(self, in_dim=118, out_dim=118, static_dim=118 // 2,
                 num_hidden=3, hidden_dim=512, bidirectional=False, dropout=0.5):
        super(In2OutRNNHighwayNet, self).__init__()
        self.static_dim = static_dim
        self.num_direction = 2 if bidirectional else 1
        self.relu = nn.LeakyReLU(inplace=True)
        self.sigmoid = nn.Sigmoid()
        # Transform gate (can be deep?)
        self.T = nn.Linear(static_dim, static_dim)

        # Recurrent hidden layers
        self.lstm = nn.LSTM(in_dim, hidden_dim, num_hidden, batch_first=True,
                            bidirectional=bidirectional, dropout=dropout)
        self.hidden2out = nn.Linear(hidden_dim * self.num_direction, out_dim)
        self.dropout = nn.Dropout(dropout)

    def include_parameter_generation(self):
        return True

    def forward(self, x, R, lengths=None):
        # Add batch axis
        x = x.unsqueeze(0) if x.dim() == 2 else x
        x_static = x[:, :, :self.static_dim]

        # T(x)
        Tx = self.sigmoid(self.T(x_static))

        # Pack padded sequence for CuDNN
        if isinstance(lengths, Variable):
            lengths = lengths.data.cpu().long().numpy()
        if lengths is not None:
            inputs = nn.utils.rnn.pack_padded_sequence(
                x, lengths, batch_first=True)
        else:
            inputs = x

        # G(x)
        output, _ = self.lstm(inputs)
        if lengths is not None:
            output, _ = nn.utils.rnn.pad_packed_sequence(output, batch_first=True)
        output = self.hidden2out(output)

        Gx = unit_variance_mlpg(R, output)

        # y^ = x + T(x) * G(x)
        return x, x_static + Tx * Gx


class MLP(AbstractModel, nn.Module):
    def __init__(self, in_dim=118, out_dim=1, num_hidden=2, hidden_dim=256,
                 dropout=0.5, last_sigmoid=True, bidirectional=None):
        # bidirectional is dummy
        super(MLP, self).__init__()
        in_sizes = [in_dim] + [hidden_dim] * (num_hidden - 1)
        out_sizes = [hidden_dim] * num_hidden
        self.layers = nn.ModuleList(
            [nn.Linear(in_size, out_size) for (in_size, out_size)
             in zip(in_sizes, out_sizes)])
        self.last_linear = nn.Linear(hidden_dim, out_dim)
        self.relu = nn.LeakyReLU(inplace=True)
        self.sigmoid = nn.Sigmoid()
        self.dropout = nn.Dropout(dropout)
        self.last_sigmoid = last_sigmoid

    def forward(self, x, lengths=None):
        for layer in self.layers:
            x = self.dropout(self.relu(layer(x)))
        x = self.last_linear(x)
        return self.sigmoid(x) if self.last_sigmoid else x


# needs https://github.com/taolei87/sru
class SRURNN(AbstractModel, nn.Module):
    def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
                 bidirectional=False, dropout=0, last_sigmoid=False,
                 use_relu=0, rnn_dropout=0.0):
        super(SRURNN, self).__init__()
        from cuda_functional import SRU
        self.num_direction = 2 if bidirectional else 1
        self.gru = SRU(in_dim, hidden_dim, num_hidden,
                       bidirectional=bidirectional, dropout=dropout,
                       use_relu=use_relu, rnn_dropout=rnn_dropout)
        self.hidden2out = nn.Linear(hidden_dim * self.num_direction, out_dim)
        self.sigmoid = nn.Sigmoid()
        self.last_sigmoid = last_sigmoid

    def forward(self, sequence, lengths):
        # Batch first -> Time first
        sequence = sequence.transpose(0, 1)
        output, _ = self.gru(sequence)
        # Time first -> Batch first
        output = output.transpose(0, 1)
        output = self.hidden2out(output)

        return self.sigmoid(output) if self.last_sigmoid else output


class GRURNN(AbstractModel, nn.Module):
    def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
                 bidirectional=False, dropout=0, last_sigmoid=False):
        super(GRURNN, self).__init__()
        self.num_direction = 2 if bidirectional else 1
        self.gru = nn.LSTM(in_dim, hidden_dim, num_hidden, batch_first=True,
                           bidirectional=bidirectional, dropout=dropout)
        self.hidden2out = nn.Linear(hidden_dim * self.num_direction, out_dim)
        self.sigmoid = nn.Sigmoid()
        self.last_sigmoid = last_sigmoid

    def forward(self, sequence, lengths):
        if isinstance(lengths, Variable):
            lengths = lengths.data.cpu().long().numpy()
        sequence = nn.utils.rnn.pack_padded_sequence(
            sequence, lengths, batch_first=True)
        output, _ = self.gru(sequence)
        output, _ = nn.utils.rnn.pad_packed_sequence(output, batch_first=True)
        output = self.hidden2out(output)

        return self.sigmoid(output) if self.last_sigmoid else output


class LSTMRNN(AbstractModel, nn.Module):
    def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
                 bidirectional=False, dropout=0, last_sigmoid=False):
        super(LSTMRNN, self).__init__()
        self.num_direction = 2 if bidirectional else 1
        self.lstm = nn.LSTM(in_dim, hidden_dim, num_hidden, batch_first=True,
                            bidirectional=bidirectional, dropout=dropout)
        self.hidden2out = nn.Linear(hidden_dim * self.num_direction, out_dim)
        self.sigmoid = nn.Sigmoid()
        self.last_sigmoid = last_sigmoid

    def forward(self, sequence, lengths):
        if isinstance(lengths, Variable):
            lengths = lengths.data.cpu().long().numpy()
        sequence = nn.utils.rnn.pack_padded_sequence(
            sequence, lengths, batch_first=True)
        output, _ = self.lstm(sequence)
        output, _ = nn.utils.rnn.pad_packed_sequence(output, batch_first=True)
        output = self.hidden2out(output)

        return self.sigmoid(output) if self.last_sigmoid else output


================================================
FILE: gantts/multistream.py
================================================
# coding: utf-8

# Utils for multi-stream features

import torch
from torch import nn
from torch.autograd import Variable

import numpy as np

from nnmnkwii.autograd import unit_variance_mlpg
from nnmnkwii import preprocessing as P


def recompute_delta_features(Y, Y_data_mean, Y_data_std,
                             windows,
                             stream_sizes=[180, 3, 1, 3],
                             has_dynamic_features=[True, True, False, True]):
    start_indices = np.hstack(([0], np.cumsum(stream_sizes)[:-1]))
    end_indices = np.cumsum(stream_sizes)
    static_stream_sizes = get_static_stream_sizes(
        stream_sizes, has_dynamic_features, len(windows))

    for start_idx, end_idx, static_size, has_dynamic in zip(
            start_indices, end_indices, static_stream_sizes, has_dynamic_features):
        if has_dynamic:
            y_static = Y[:, start_idx:start_idx + static_size]
            Y[:, start_idx:end_idx] = P.delta_features(y_static, windows)

    return Y


def select_streams(inputs, stream_sizes=[60, 1, 1, 1],
                   streams=[True, True, True, True]):
    ret = []
    start_indices = np.hstack(([0], np.cumsum(stream_sizes)[:-1]))
    for start_idx, size, enabled in zip(
            start_indices, stream_sizes, streams):
        if not enabled:
            continue
        ret.append(inputs[:, :, start_idx:start_idx + size])

    return torch.cat(ret, dim=-1)


def get_static_stream_sizes(stream_sizes, has_dynamic_features, num_windows):
    """Get static dimention for each feature stream.
    """
    static_stream_sizes = np.array(stream_sizes)
    static_stream_sizes[has_dynamic_features] = \
        static_stream_sizes[has_dynamic_features] / num_windows

    return static_stream_sizes


def get_static_features(inputs, num_windows, stream_sizes=[180, 3, 1, 3],
                        has_dynamic_features=[True, True, False, True],
                        streams=[True, True, True, True]):
    """Get static features from static+dynamic features.
    """
    _, _, D = inputs.size()
    if stream_sizes is None or (len(stream_sizes) == 1 and has_dynamic_features[0]):
        return inputs[:, :, :D // num_windows]
    if len(stream_sizes) == 1 and not has_dynamic_features[0]:
        return inputs

    # Multi stream case
    ret = []
    start_indices = np.hstack(([0], np.cumsum(stream_sizes)[:-1]))
    for start_idx, size, v, enabled in zip(
            start_indices, stream_sizes, has_dynamic_features, streams):
        if not enabled:
            continue
        if v:
            static_features = inputs[:, :, start_idx:start_idx + size // num_windows]
        else:
            static_features = inputs[:, :, start_idx:start_idx + size]
        ret.append(static_features)
    return torch.cat(ret, dim=-1)


def multi_stream_mlpg(inputs, R,
                      stream_sizes=[180, 3, 1, 3],
                      has_dynamic_features=[True, True, False, True],
                      streams=[True, True, True, True]):
    """Split streams and do apply MLPG if stream has dynamic features.
    """
    if R is None:
        num_windows = 1
    else:
        num_windows = R.size(1) / R.size(0)
    B, T, D = inputs.size()
    if D != sum(stream_sizes):
        raise RuntimeError("You probably have specified wrong dimention params.")

    # Straem indices for static+delta features
    # [0,   180, 183, 184]
    start_indices = np.hstack(([0], np.cumsum(stream_sizes)[:-1]))
    # [180, 183, 184, 187]
    end_indices = np.cumsum(stream_sizes)

    # Stream sizes for static features
    # [60, 1, 1, 1]
    static_stream_sizes = get_static_stream_sizes(
        stream_sizes, has_dynamic_features, num_windows)

    # [0,  60, 61, 62]
    static_stream_start_indices = np.hstack(
        ([0], np.cumsum(static_stream_sizes)[:-1]))
    # [60, 61, 62, 63]
    static_stream_end_indices = np.cumsum(static_stream_sizes)

    ret = []
    for in_start_idx, in_end_idx, out_start_idx, out_end_idx, v, enabled in zip(
            start_indices, end_indices, static_stream_start_indices,
            static_stream_end_indices, has_dynamic_features, streams):
        if not enabled:
            continue
        x = inputs[:, :, in_start_idx:in_end_idx]
        y = unit_variance_mlpg(R, x) if v else x
        ret.append(y)

    return torch.cat(ret, dim=-1)


================================================
FILE: gantts/seqloss.py
================================================
# coding: utf-8
import torch
from torch import nn
from torch.autograd import Variable

import numpy as np


def sequence_mask(sequence_length, max_len=None):
    if max_len is None:
        max_len = sequence_length.data.max()
    batch_size = sequence_length.size(0)
    seq_range = torch.arange(0, max_len).long()
    seq_range_expand = seq_range.unsqueeze(0).expand(batch_size, max_len)
    seq_range_expand = Variable(seq_range_expand)
    if sequence_length.is_cuda:
        seq_range_expand = seq_range_expand.cuda()
    seq_length_expand = sequence_length.unsqueeze(1) \
        .expand_as(seq_range_expand)
    return (seq_range_expand < seq_length_expand).float()


# Adapted from:
# https://github.com/facebookresearch/loop/blob/master/model.py


class MaskedMSELoss(nn.Module):
    def __init__(self):
        super(MaskedMSELoss, self).__init__()
        self.criterion = nn.MSELoss(reduction="sum")

    def forward(self, input, target, lengths=None, mask=None, max_len=None):
        if lengths is None and mask is None:
            raise RuntimeError("Should provide either lengths or mask")

        # (B, T, 1)
        if mask is None:
            mask = sequence_mask(lengths, max_len).unsqueeze(-1)

        # (B, T, D)
        mask_ = mask.expand_as(input)
        loss = self.criterion(input * mask_, target * mask_)
        return loss / mask.sum()


================================================
FILE: generated/.gitignore
================================================
*
!.gitignore


================================================
FILE: hparams.py
================================================
# coding: utf-8

import tensorflow as tf
import numpy as np

from os.path import join, dirname


def hparams_debug_string(params):
    values = params.values()
    hp = ['  %s: %s' % (name, values[name]) for name in sorted(values)]
    return 'Hyperparameters:\n' + '\n'.join(hp)


# Hyper parameters for voice conversion
vc = tf.contrib.training.HParams(
    name="vc",

    # Acoustic features
    order=59,
    frame_period=5,
    windows=[
        (0, 0, np.array([1.0])),
        (1, 1, np.array([-0.5, 0.0, 0.5])),
        (1, 1, np.array([1.0, -2.0, 1.0])),
    ],
    stream_sizes=[59 * 3],
    has_dynamic_features=[True],

    adversarial_streams=[True],
    # In vc, 0-th coefficients are masked in feature extraction stage.
    mask_nth_mgc_for_adv_loss=0,

    # Generator
    # For RNN VC, use In2OutRNNHighwayNet
    generator_add_noise=False,
    generator_noise_dim=200,
    generator="In2OutHighwayNet",
    generator_params={
        "in_dim": None,
        "out_dim": None,
        "num_hidden": 3,
        "hidden_dim": 512,
        # "bidirectional": True,
        "static_dim": 59,
        "dropout": 0.5,
    },
    optimizer_g="Adagrad",
    optimizer_g_params={
        "lr": 0.01,
        "weight_decay": 0,
    },

    # Discriminator
    discriminator_linguistic_condition=False,
    discriminator="MLP",
    discriminator_params={
        "in_dim": 59,
        "out_dim": 1,
        "num_hidden": 2,
        "hidden_dim": 256,
        "dropout": 0.5,
        "last_sigmoid": True,
    },
    optimizer_d="Adagrad",
    optimizer_d_params={
        "lr": 0.01,
        "weight_decay": 0,
    },

    # This should be overrided
    nepoch=200,

    # LR schedule
    lr_decay_schedule=False,
    lr_decay_epoch=10,

    # Datasets and data loader
    batch_size=20,
    num_workers=1,
    pin_memory=True,
    cache_size=1200,
)


# Hyper paramters for TTS duration model
tts_duration = tf.contrib.training.HParams(
    name="duration",

    # Linguistic features
    use_phone_alignment=False,
    subphone_features=None,
    add_frame_features=False,
    question_path=join(dirname(__file__), "nnmnkwii_gallery", "data",
                       "questions-radio_dnn_416.hed"),

    # Duration features
    windows=[
        (0, 0, np.array([1.0])),
    ],
    stream_sizes=[5],
    has_dynamic_features=[False],

    recompute_delta_features=False,

    # Streams used for computing adversarial loss
    adversarial_streams=[True],
    mask_nth_mgc_for_adv_loss=0,

    # Generator
    generator="SRURNN",
    generator_add_noise=False,
    generator_noise_dim=200,
    generator_params={
        "in_dim": None,  # None wil be set automatically
        "out_dim": None,
        "num_hidden": 6,
        "hidden_dim": 512,
        "bidirectional": True,
        "dropout": 0.0,
        "use_relu": 1,
        "rnn_dropout": 0.2,
        "last_sigmoid": False,
    },
    optimizer_g="Adam",
    optimizer_g_params={
        "lr": 0.001,
        "betas": (0.5, 0.9),
        "weight_decay": 0,
    },


    # Discriminator
    discriminator_linguistic_condition=True,
    discriminator="MLP",
    discriminator_params={
        "in_dim": None,  # None wil be set automatically
        "out_dim": 1,
        "num_hidden": 3,
        "hidden_dim": 256,
        # "bidirectional": True,
        "dropout": 0.0,
        "last_sigmoid": True,
    },
    optimizer_d="Adam",
    optimizer_d_params={
        "lr": 0.001,
        "betas": (0.5, 0.9),
        "weight_decay": 0,
    },

    # This should be overrided
    nepoch=200,

    # LR schedule
    lr_decay_schedule=False,
    lr_decay_epoch=25,

    # Datasets and data loader
    batch_size=32,
    num_workers=1,
    pin_memory=True,
    cache_size=1200,
)

# Hyper paramters for TTS acoustic model
tts_acoustic = tf.contrib.training.HParams(
    name="acoustic",

    # Linguistic
    use_phone_alignment=False,
    subphone_features="full",
    add_frame_features=True,
    question_path=join(dirname(__file__), "nnmnkwii_gallery", "data",
                       "questions-radio_dnn_416.hed"),

    # Acoustic features
    order=59,
    frame_period=5,
    f0_floor=71.0,
    f0_ceil=700,
    use_harvest=True,  # If False, use dio and stonemask
    windows=[
        (0, 0, np.array([1.0])),
        (1, 1, np.array([-0.5, 0.0, 0.5])),
        (1, 1, np.array([1.0, -2.0, 1.0])),
    ],
    f0_interpolation_kind="quadratic",
    mod_spec_smoothing=True,
    mod_spec_smoothing_cutoff=50,  # Hz

    recompute_delta_features=False,

    # Stream info
    # (mgc, lf0, vuv, bap)
    stream_sizes=[180, 3, 1, 3],
    has_dynamic_features=[True, True, False, True],

    # Streams used for computing adversarial loss
    # NOTE: you should probably change discriminator's `in_dim`
    # if you change the adv_streams
    adversarial_streams=[True, False, False, False],
    # Don't set the value > 0 unless you are sure what you are doing
    # mask 0 to n-th mgc for adversarial loss
    # e.g, for n=2, 0-th and 1-th mgc coefficients will be masked
    mask_nth_mgc_for_adv_loss=2,

    # Generator
    generator_add_noise=False,
    generator_noise_dim=200,
    generator="SRURNN",
    generator_params={
        "in_dim": None,  # None wil be set automatically
        "out_dim": None,
        "num_hidden": 6,
        "hidden_dim": 512,
        "bidirectional": True,
        "dropout": 0.2,
        "use_relu": 1,
        "rnn_dropout": 0.2,
        "last_sigmoid": False,
    },
    optimizer_g="Adagrad",
    optimizer_g_params={
        "lr": 0.01,
        "weight_decay": 1e-7,
    },

    # Discriminator
    discriminator_linguistic_condition=True,
    discriminator="MLP",
    discriminator_params={
        "in_dim": None,  # None wil be set automatically
        "out_dim": 1,
        "num_hidden": 3,
        "hidden_dim": 256,
        "dropout": 0.5,
        "last_sigmoid": True,
    },
    optimizer_d="Adagrad",
    optimizer_d_params={
        "lr": 0.01,
        "weight_decay": 1e-7,
    },

    # This should be overrided
    nepoch=200,

    # LR schedule
    lr_decay_schedule=False,
    lr_decay_epoch=25,

    # Datasets and data loader
    batch_size=20,
    num_workers=1,
    pin_memory=True,
    cache_size=1200,
)


================================================
FILE: notebooks/Test RNN VC.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The effects of adversarial training in voice conversion\n",
    "\n",
    "Minimum generation error (MGE) training vs Adversarial training. Generated audio samples are available at the middle of the notebook.\n",
    "\n",
    "Code: https://github.com/r9y9/gantts\n",
    "\n",
    "### Refereneces\n",
    "\n",
    "- [Yuki Saito, Shinnosuke Takamichi, Hiroshi Saruwatari, \"Statistical Parametric Speech Synthesis Incorporating Generative Adversarial Networks\", arXiv:1709.08041 [cs.SD], Sep. 2017](https://arxiv.org/abs/1709.08041)\n",
    "- [Yuki Saito, Shinnosuke Takamichi, and Hiroshi Saruwatari, \"Training algorithm to deceive anti-spoofing verification for DNN-based text-to-speech synthesis,\" IPSJ SIG Technical Report, 2017-SLP-115, no. 1, pp. 1-6, Feb., 2017. (in Japanese)](http://sython.org/papers/SIG-SLP/saito201702slp.pdf)\n",
    "- [Yuki Saito, Shinnosuke Takamichi, and Hiroshi Saruwatari, \"Voice conversion using input-to-output highway networks,\" IEICE Transactions on Information and Systems, Vol.E100-D, No.8, pp.1925--1928, Aug. 2017](https://www.jstage.jst.go.jp/article/transinf/E100.D/8/E100.D_2017EDL8034/_article)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "rcParams[\"figure.figsize\"] = (16,5)\n",
    "\n",
    "import sys\n",
    "sys.path.insert(0, \"..\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "\n",
    "from scipy.io import wavfile\n",
    "import pysptk\n",
    "from pysptk.synthesis import Synthesizer, MLSADF\n",
    "import pyworld\n",
    "from os.path import join, basename\n",
    "\n",
    "from nnmnkwii import preprocessing as P\n",
    "from nnmnkwii.paramgen import unit_variance_mlpg_matrix\n",
    "\n",
    "import gantts\n",
    "from hparams import vc as hp\n",
    "\n",
    "import librosa\n",
    "import librosa.display\n",
    "import IPython\n",
    "from IPython.display import Audio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data_dir = \"../data/cmu_arctic_vc/\"\n",
    "clb_wav_dir = \"/home/ryuichi/data/cmu_arctic/cmu_us_clb_arctic/wav/\"\n",
    "slt_wav_dir = \"/home/ryuichi/data/cmu_arctic/cmu_us_slt_arctic/wav/\"\n",
    "\n",
    "data_mean = np.load(join(data_dir, \"data_mean.npy\"))\n",
    "data_var = np.load(join(data_dir, \"data_var.npy\"))\n",
    "data_std = np.sqrt(data_var)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "if hp.generator_params[\"in_dim\"] is None:\n",
    "    hp.generator_params[\"in_dim\"] = data_mean.shape[-1]\n",
    "if hp.generator_params[\"out_dim\"] is None:\n",
    "    hp.generator_params[\"out_dim\"] = data_mean.shape[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fs = 16000\n",
    "hop_length = int(fs * (hp.frame_period * 0.001))\n",
    "fftlen = pyworld.get_cheaptrick_fft_size(fs)\n",
    "static_dim = hp.order\n",
    "checkpoints_dir = \"../checkpoints/vc_test_in2out_bilstm_again/\"\n",
    "epoch = 200"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Baseline: In2out highway networks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In2OutRNNHighwayNet (\n",
      "  (relu): LeakyReLU (0.01, inplace)\n",
      "  (sigmoid): Sigmoid ()\n",
      "  (T): Linear (59 -> 59)\n",
      "  (lstm): LSTM(177, 512, num_layers=3, batch_first=True, dropout=0.5, bidirectional=True)\n",
      "  (hidden2out): Linear (1024 -> 177)\n",
      "  (dropout): Dropout (p = 0.5)\n",
      ")\n",
      "Load checkpoint from: ../checkpoints/vc_test_in2out_bilstm_again/baseline/checkpoint_epoch200_Generator.pth\n"
     ]
    }
   ],
   "source": [
    "model_in2out = getattr(gantts.models, hp.generator)(**hp.generator_params)\n",
    "print(model_in2out)\n",
    "\n",
    "checkpoint_path = join(checkpoints_dir, \"baseline/checkpoint_epoch{}_Generator.pth\".format(epoch))\n",
    "print(\"Load checkpoint from: {}\".format(checkpoint_path))\n",
    "checkpoint = torch.load(checkpoint_path)\n",
    "model_in2out.load_state_dict(checkpoint[\"state_dict\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### GAN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In2OutRNNHighwayNet (\n",
      "  (relu): LeakyReLU (0.01, inplace)\n",
      "  (sigmoid): Sigmoid ()\n",
      "  (T): Linear (59 -> 59)\n",
      "  (lstm): LSTM(177, 512, num_layers=3, batch_first=True, dropout=0.5, bidirectional=True)\n",
      "  (hidden2out): Linear (1024 -> 177)\n",
      "  (dropout): Dropout (p = 0.5)\n",
      ")\n",
      "Load checkpoint from: ../checkpoints/vc_test_in2out_bilstm_again/gan/checkpoint_epoch200_Generator.pth\n"
     ]
    }
   ],
   "source": [
    "model_gan = getattr(gantts.models, hp.generator)(**hp.generator_params)\n",
    "print(model_gan)\n",
    "\n",
    "checkpoint_path = join(checkpoints_dir, \"gan/checkpoint_epoch{}_Generator.pth\".format(epoch))\n",
    "print(\"Load checkpoint from: {}\".format(checkpoint_path))\n",
    "checkpoint = torch.load(checkpoint_path)\n",
    "model_gan.load_state_dict(checkpoint[\"state_dict\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compare generated audio samples\n",
    "\n",
    "Baseline vs GAN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "arctic_a0496.wav : source, target, baseline, GAN\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,UklGRsRKAQBXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YaBKAQAAAAAA/f/9/wQA/P8AAPz/BAD8/wAA/P///wAABgD9/wQA/f8BAAAA///8/wAAAAAEAPr//P8BAPr/AwD8/wAA/f8BAAQAAwADAAYABgD//wQAAwD///z/BgD8/wMAAAAGAAMA/P/9/wAAAwD6/wAA/P/9/wEAAAD6/wAA+v/6//z///8BAAAAAQD9/wAA/f8AAAYA+v8AAAYABAD8//r//f8EAAAAAwAEAP//BgADAAQABgAAAAAA//8AAAYA/P8EAAMAAAD9//z/+v8AAP///P8AAAEAAQADAAAABgAGAAEAAwAGAAAA/f/9/wQA+v/9/wYA//8AAAQABgAGAPz/AAD9/wMAAAADAPz/AAAGAAQABgD//////f//////AAAAAAQAAQAAAAQABAABAAAAAAD6/wEABgD///3/AAD9/wYAAAABAAQABAD9/wEAAwD8/wMA///8/wEAAQAAAP3/BgAGAAAAAQAGAAMAAwD6/wYA//8DAAEAAAAAAAMA/f8AAP3/AwAAAAEA/P/6/wYABAD9/wAAAwD8/wAA+v8AAP//BgAAAP///f8EAP//AwADAP////8BAAYA//8AAAAA+v8DAAAA//8BAP3/BgD6/wQA/f////r/AQD9/wAA///9/wEA///9//r/BAAEAAQA/P8EAAAA+v8AAP3/AAD6//3/+v8AAPz//f/9//z/+v/9/wQAAQADAP3//f8DAPr/+v8AAAYA/P/6/////P8GAP//AQD9//z/AAD6/wEAAQD//wQA/f8EAPr/+v/8/wYA/P8AAAAA/f8AAAQA/f8AAPz/AAAEAAQAAQAAAP//AAD9/wMABAAAAAEA/f/9/wAAAAD6//z///8BAAQABAD8/wYAAQAAAAEABgABAAMAAwD9//z//////wMABAAEAPz/AwAGAPz/AwADAAAA+v8AAP//AAAAAAAAAAABAAEAAwD//wQA+v8AAP//AAD6//z/AwAAAP//+v8AAAQA/f8AAP///P8AAP3/AAADAP//BgABAAEAAAAAAAYA+v8AAAEAAQAAAAEAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAAAAAAEAAAAAAPz/AQABAAAAAAAGAAQABgAGAAAA+v8BAAEA/f8GAAMABgD8/wAABgABAAAA//8AAPz//P////r/BAD9////BAD8/wMA/P8BAP3/BAAAAP3/AAAAAAAABgD//wQABAD6/wMA/f8BAAEA/P8GAP3/AwD6//3/AwD6/wAA/f8AAAAAAAAAAPr//P/6/wQABAADAP/////6/wEABgAGAAEAAQAEAP////8GAAAABgD//wAAAwD8//z/+v///wMAAAADAAAAAQD//wEAAAAGAP3/BAD9/wMAAwD6/wQAAwADAAAAAwD//wYA/P/8////+v/8/////P/8/wEABAAAAAYA//8GAAYA+v/8/wYABAAAAAQA/P/8/wQAAwABAP//AAAAAP3//////wAA//////////8AAP////////3////9//3////9//3//f/9//3//f/9//3//f/9//3//f/9//3///////3//f/9//3//f///////f/9//3//f/9/////f/9//3//f/9//3//f/8//z//P/9//z//P/8//r//P/6//r/+v/6//r/+f/5//r/+f/5//f/+f/5//b/9//2//b/9v/2//b/9v/2//T/9P/2//P/8//z//P/8//z//P/8//z//P/8//z//P/8f/x/+7/8f/w/+7/7v/u/+7/7v/s/+v/6//r/+z/6//p/+n/6f/p/+n/6f/p/+j/5v/p/+n/6f/p/+X/5f/l/+X/5f/i/+P/4//i/+D/4P/j/+P/4//i/+L/4//i/9//4P/j/+D/4v/g/+P/4v/i/+L/4P/l/+P/4//l/+X/5f/m/+b/5f/m/+X/6P/o/+b/5v/o/+n/6f/p/+n/6P/m/+j/6P/r/+v/6f/p/+z/7v/w//H/8P/w//H/8f/x//P/9P/0//T/9P/3//f/9//3//n/+f/5//r/+f/6//3//f///wAAAAABAAMAAAADAAMAAwAEAAMABAABAAAAAQAAAAAABAAGAAYACgAKAAoACgAKAAkACgAMAAkACQADAAAAAAD9//3///8AAAAABAAAAAQAAQAEAAEABwAAAAAAAwDp/+7/4//8//r/9P/p//H/+v/3/wAA+v8AAAEAEgAKAP3/8//z//3//f/9//f//f8AAAEAAQAEAAkADwASAA8ADwAJAA8ADwAQABcAGAAUAA0ACQAKABQAFwAaABoAGAAdABgAEgAQABgAIAAjACMAGwAYABIADwAPAA8AEgAVAA8ADAAPAA0ADwAQABcAGwAYABoAGAASAA0ACgANAA0ACgAJAAcABAAAAAAABgANAA8ADwAMAAcAAAD9/wAAAAAEAAQABgADAAMAAAAAAAEACgANAA0ADQAMAA0ADAAMAA8AEgAVABcAFQASABAAEAAUABsAIQAjACEAIQAjACMAIwAjACwALgAsACsAJAAhACQAHgAjACkALAAvACwANAAsACgAKwAsADEAKwAuAC4AMgAxADUAPQA0AC4AKAAmACEAIwArACsALAAmACQAKQApACMAKQAxAC4AIwAhABcADAAQAA0AFwAgAB0AIAAhABgAFwAbABsAIQAgABgAFAAPAAoADAAPAAkADwAYAA8ABwAMAAwADwASABIAEAASAA0ABAAKAA0ABwAJAAoAAAABAA8ADwAQABoAGAAaABcADAAJAA0AFQAVABoAGgAVAA8ADAAHAAwAFAAdACAAGgAaABQAEAASAA8AFQAbABsAFAANAAcABgAGAAoAEgAUAA0ACgAMAAcABAAKABQAFAASAAwABgAEAAAAAQABAAQABAAAAAAA+v8BAAAAAQAHAAYACgAMAA0ABgAAAAAABgAEAAAAAAD//////f8AAAAAAwAEAAMAAwAAAAMAAwADAAYAAwAAAAAABAADAP3/AAAAAPz/AwAAAAAAAwD9//3/AAD9/wAAAAADAPr/+v/9/wAA/f/3//3//f/8//z//P8AAPn//f8AAP3//f/9/wAAAAD8//z//f8AAAMA/f/9/wAA/f8AAAMAAAADAAMAAAADAAcACQAEAAkABwAHAAoACgAKAAcACgAHAAcACgAHAAQABwAHAAcABwAHAAwADAAEAAoACgAHAAoABwAKAAQABAAKAAQAAwAKAAcACgAKAAcADwAKAA0ADwAPAA8ADQAKAA0ADwAKAAcADQANAA0ADQANAA0ACgAKAA0ABAAEAAcABwAHAAQAAwADAAAAAAAEAAAA/f/9/wAA/f8AAPr/+v/6//r/+v/z//P/8//s//D/7P/s/+n/8P/z/+b/7P/p/+z/7P/m/+z/6f/m/+z/8P/p/+n/5v/m//D/8P/p/+z/7P/p//D/8P/w/+n/8//w/+v/8//z//f/9P/0//T/9//3//f/+v/6//3/9//3//r//f/2//b/9v/6//r/+v/9//3/+v/6//3/+v/6//b//f/2//n/AAD5//3/+f/5//3//f/2//3/AAD5/wAA/f8AAAAAAwD9//3//f8AAAAAAAAEAP//////////AAD9/wAAAAD9/wAAAAD/////AAAAAAAA/////////f/w//P/+f/w//b/9v/s//b/8//z//P/8//2//b/9v/z//b/9P/5//n/+f/5///////5////AAD5////9P/9/wAA//8AAAAABAAEAP//AAADAAYAAwAGAAoACgADAAAACgAGAAMABgAKAA8ADwAPAA8ABgAKAA8AFQAPAAoAFQAPAA8ACgAKABUAFQAMABIADwAMABgAFQASAA8ADAAMAAYAEgAPAA8AEgAPABgAEgASABIADAASABIADwAGAA8ADwAPAAwADAASABIADwAMABIADAAXAA8ADwAXABoAEgAPABoADwAeAA8AGgAMABoAJgDw/w8A8/8eACMADAAmAP//GgD//xgAGAAEABgABwAeAAcADAD//wQAGAAAAA8ADAAUAAAA9/8EAAwAGAAMAAcABAAAAAcABwAHAAQABAAHAA8AFAAHABAABAAEABQADQAQABAABwAEAA0AEAAHABAAEAANAA0ADQAHAAQADQAHAAcABwAHAAAAAAAEAAAABwAHAAcABAAAAAQAAAAAAPz/BAAEAAQA//8AAAAA/P8AAAAABgD8/wYAAQD8//P//P/2//z////2/////P/2//z//P///////P/z//z/9v/8////9v8AAPb/9v/8//b//P////z//P/8//P//P/8//z/8//z//z/8//u//P/8//p//b/8//i/+7/7v/i/+n/9v/p/+n/8//p/+n/7v/p//P/6f/m//P/5v/u//z/7v/u//b/9v/p//b/8//z//z/9v/8//b//P/2//z//P////z/9v/8//z/AAD2//z////8//z//P8AAP//AAD/////AAAAAAMAAAD//wAAAAD///////8AAAAA+v/8/wAABAAAAAQABAAAAAAABwAAAAQABwAAAAcADQAHAAcADQAHAAQAEAAQAA0AFQANAAQABwANABUAEAAHABUAEAAVABAADQANABAAFQD//xAABAAuAEMAFQAVAAAAAAD//xAAFQAHABAABAAQAAcABwAAAAQADQANAB0ABwAAAP///P8AAAQAFQAHAAAA9v/2/wAABAAHAAAABAAEAAQABwAAAP////8EAA0ABwAAAPb//P///wAABAAAAAAA8//2/wAAAAAEAAAAAAAEAPz//P/8//z////2//P/9v////z/8//z//z//////wAAAAAEAAAAAAAAAP3/DQAEAAcABAAAAAAABwANAAQADQAHAAcABwAAAA0ABwANAA0AFQANAA0AFQAHABAABwANABAABwAHAAcADQAHAA0AEAANAAAADQANAAcADQAQABUABwANAAcABwAEAAQABwAEAA0ABAAEAAAABwAAAAQADQAAAAAA//8AAAQAAAAAAAEABAD//wAABAAEAP//AAAAAAEABAAAAAAABAAAAAAAAwAEAAQAAAAAAPz/BwAEAAAABwAAAAAA/f8AAAQABAAEAAQABwAHAAcAAAAEAA0ADQANAAQABwAHAAQABAAAAAQAAAAAAAMABwAHAA0ABAAHAAcAAAAHAAQABAAHAAcABwAQAA0ABAAEAAQABwAEAAcABwAEAAcABwAHAAcABwAHAA0ABAAEAAAABAAHAAAABAAAAAAABAAEAAAAAAAEAAAAAAAEAAAAAAAGAPr/AQAAAAYABAAAAAcABAAAAAAA////////AAAAAAYA///2/////////wAA//8AAPP////2/+7//P/z//b/8//z//P/8//z//P/9v/z//b/9v/2//P/8//z//b/8//p/+7/6f/u/+n/8//z/+b/7v/p/+b/4v/m/+n/5v/u/93/4v/m/+b/6f/m/+n/5v/m/+b/5v/p/+7/6f/p/+7/6f/2//z/8//z/+n/8//z/+7/8//u//P/8//u/+7/8//2//b/9v/z//P/9v/2//P/9v/2//b/8//2//b/8//8////8//2//b/9v/2//b//P/2//b/9v/8//z/8//2//b/7v/z//P//P/z//P/8//z//b/9v/8/+7/7v/2//z/8//8//b/8//8//P/9v/8//z/9v/8/+7/9v/8//P/8//z//P/8//2//z//P//////8//8//z////8//b/AAD8/wAA///8/wAA//8AAPz//P//////AAAAAP////8AAP////8AAP//AAD/////AAD8/wAA/////wAAAAAEAAQABAAAAAAA/f/8//z//f/9//r/AQAAAAEAAwAAAP3/BgD8//r/AwADAPz/AAAEAAAABAAAAAAABAAEAAQAAAAEAP//AAAEAPz/AAAAAPz/AAAAAP///P///wQAAAAAAAcABwAHAAQABwAEAAcABwAHAAcABAAEAA0ADQAAAAcADQAHAAQABAAHAAcAAAAEAAAA//8EAAAAAAD//wQABAAAAAAA+v8AAPr/AwAAAPz/AAAAAAEA/////wAAAAAAAP/////8//z/9v/8/////P8AAAAA///8//////8AAAAA//8AAAAA/P/8/wAA///8////AAAAAP//AAD///z///8AAAQAAAAAAP////8AAAAABAAEAAAA//8AAAAABAD6/wQA/f8EAAAABAAHAAcADQAEAAcABAAHAAcABAANAAQADQAHAAAABwAHAA0ABwAQABAADQANABAAEAANABAAEAAVABUAFQAVAB0AGAAhAB0AGAAhAB0AHQAYABgAHQAhAB0AIQAhAB0AIQAdAB0AHQAdAB0AFQAYACEAHQAdAB0AHQAdABgAFQAdAB0AGAAVABUAFQAQAA0ABAANABAADQANAA0AEAANAAcADQAHAAcABwANAAcAEAAAAAcABwD8/w0ABAANAAcA//8EAP///P/////////8//b//P/2//z//P/8///////2//b//P/8/wAAAAD6/wAA/P///wAA///8//z////8//z//////////P/2//z//P/2//z/9v/////////2/+7/8//2//P/8//8//b/8//2//z//P/2//b///8AAPz//P8AAP///P/2///////8/////P/8//b//P/8//z//P/2//z/8/////z/9v/z//P/9v/u//z/8//z//P/7v/2/+7/7v/p/+n/7v/z/+n/5v/p/+n/5v/i/+b/6f/m/+L/5v/i/93/2P/d/+b/4v/i/9j/2P/i/93/2P/Y/93/1f/Y/9j/2P/d/8z/0f/Y/9X/0f/V/93/1f/Y/9X/1f/d/93/3f/V/9j/2P/V/9X/0f/V/93/3f/i/+L/8//u/+L/6f/i/+7///8QAA0A4QEXDbcZsBCm9ubu1gnyIAIQRPSy9doHXgaS9gP5EAmYCtf9oPmMATwFOgJWBLAJdAY7/oj+dgVuBQn+JPsQAEcCIP3E+Pz5Av2H/UH9Pv0w/GT7OP0KAVoB0v0r/Kz+LAGF/0j8JPuf++z77/vW+1f7Bf0dAusCl/vp9Qr6UwJ2A2f/RP6Z/1P/yPwk/RMBywLoAP7+wv6I/ub9Vv/hAe8Br/8i/tD+AAAVAOL/ggA8AToAy/6d/l3/fP8D/2T/OP8F/iD9yf35/nr+s/0i/qz+/P0U/rH+O/6I/nP/u//Q/i7+uv4o/1r/Mf/1/iP/cP9r/2f/I/+B/1AADQDV/1AAxgBdADIAsAAFATgB1wBKAoMHNgwyCiMFpgU1C/gOtA63D0USaRFWDacLaw0UDsQNWg2pDMsKkgh3CBoKLgw1C8wILAhpB/EFSgRYA4MCxgCd/uf7IvlO+Cz4Efee9eHx++7f7zbxPfC17avso+zY69rqxepw6rvpTenJ6EPo1uYS5yrpa+rC6fToR+s87g3wT/FV8/328Pkv+038l/5SAXUEgwdkCXMKZQuNDXQQBhIXEpkS6hRCF+YXbhgCGgobLBy9HIgb/BrOGmUavhjGFeATBBNaEmcPWQryBpgFVgR8AfX+rvzh+Mr17/EL7xjvh+0b6iPlhuES4O7b7tbZ0h/Ps8qMxYjFRMrUzJPOj9Vz4MPn9+o98P/1ePce98r5nf7f/lf7a/pA/Kz+wwBzBRsNwBLEFloctyOWKtQu5DL6Nys6LTkaOH83wDY/NRozOzASLC0o1SVoJY0lAyQ9IaseLByDGIoVcBXqFJ8Q7gipAOn6DPeY8rzs8ebA4O3YAdG7ymLHQcPrvLK3KLM8r+WpW6cusVvCxM1bzZTKqs8/2M3eKOXo66bsIejO4+riyOfw7XX0sfkg+nD6w/8cC+kW4xyCH9sjGCl9LSQxeTRpNwk40TYiNaQyvzCFMRczCDInMBEwyjKeNkM3ATdBOKE4dTezNPoxny/VKoklUyFTHPkW4RHiDQ4KEASv/df4lPT98CDvgOx758viaeHs4fHdZdj81VnT3c/BydHEhsKqvFi4YrcDtuW0HrTatRi6G8ap2k/md+QB4sfm6PDf+Rf/IP+s+fX0zvS198L5JPs1/w8C1gLeBEoJ4xDbGBgfuSIVJLMlzCc6KggtoS7eLcYreynJJqolsicnKgArBCkAJgUn4yp8Lrgv0y3rK0Eqkih0J8skuyCgHKMXLBIMDPkFsQK0/477Xved89jwWu5b7GHpguaP5BfiZN802/bW1tI0zVbIhMM8vlO75beVsm2xLLJctCjBa9T13y3cgdXe3rnvSPce95/20van81zvBvH/9Xz4tPns+/v8iv18AksMQRbeGhAdOiFZJAknsCrwLVoxqzL0L88s2iq4KmQtpy/lLkkszCn0KastRTH7M0w1HzNQMC4uES5aLxct9ScFIqIb4xWTEAAMeQdtANP5EPZQ8t/v8u5x7SDs8uk+5t3iL+C83m/dKdht0OLIzsEUvS24LLKKrNuo86kAqxeutruEzA7UZNXm28Dnue998Wvz0va89i70QPO48+XyyPE09Yn7uv5O/wgDvAtZFO4Zdh+wJW4poipzLlc0NTYYNMwxGDJgMlcvEiwrK9wrqy1BL0swhTEtMuM0oThFOHc1ajM3M2kyji2RJ/8iTx74GF0TWA6ZCHcBQPw7+c725fLM7k3u0u2y6+zopuUT4wfeldgv1gTT1MxaxWC/a7pLtkKzhbAZrZOqGasKq3S1JcuA1PHTVtbQ3qbqu/BL9JX3gvZa89bxNfPt9KLzHPR3+YP8GP0nAWEKnRQyGuQdfiRvKugrAi/4NM83BDcQNDQzlTOlMHMubC8sMfox5TG+Mp0zfDOINSA5LjpNOOs0UTPPMvgvjSyOKEkiqRqLE30OAAo5BH397/bB8nHxKPEg7+fqk+i85yjlb+I236bbf9bZzQLId8UVwsS8/rQur/OsGas5qYqnaaZWrljCU9Jl04XPptYy5gTwafTn9qr1CfKE8E3z6fW09jj4C/tq/Pj7BAAyCjwU1hgUHG4iOygAK88umDU1OdA4WThYNzo0fDGOMmM0IzMuMLMvmTE0M3k0GzarOME5FTnKN2Y1/zMeMjovHSvvI2kd5hfEEvMNuQeJAfj7BPeA80Xxxe8270DuL+vg5sjij99j3k3dQ9hC0PvI7cOuvuO4uLWhtA+xU6r0pV6mn6WiqSi8H8/i0kzMcs+V4GXt6PBx8pHzbfKJ707vN/IC85nzP/lr/R/8N/x5AokPLhrwHK8e2yPaKkMu6y+TNAU6/jrpN/k1aDTDMyI1azaBNkM02zKmM/w0fzeROvc7IDuTOUo4izelNf0yHTAlK7AkQx0sF+US7g3kBywBsPv29xX1iPOC8gTwpuxa6QTmpuJy39bcNdnv0qTJIMHFvXS847rytSSuzKtmrQyvh631pqGoFruLzDTNrspz0XPbOuNX6Bvu1vFW75fvBPKj773vIPWC+wr/pP2v/9MH4w75FWkdgyGYJGcoryx1Mpg1LDZcOeo6oTgDNnc15DdLOaE4izn0OXo3lzdaO1891jyNOzo7vzo2Nx8zcDFvL1Ar5iXUHmkYNhP4DmEMrgbf/nL5tvXT9MX0I/B666bqN+jD4nzbVNju2UzWdM1vw/K63bccuKy2xq+ppQihLqXWp5Ki3qNrtd7ITc8yzvTOTtSB4Dzuu/Xl8pjrBurB7WPxEfIf8yb3t/om/HD/JwYBDUgVwB6rIzUlqCgnL7818zjJOQo7HTvjOVI5bje0NmE37jZKOCs6UjodOUE6ED5eP8Y+WT68PTY7WDc8NaAyYC3EJ4ciGR1XFy4RmAz6CHwDp/3Q+JT0bfLK8P7s9Oh65I7hO+EI3LHVtdPNzwjLLsVgv3W9C7jqsLisUKoMqh6oT6WRoU6idbN+xu/JW8d0zSraft8H4+XtgPPX7xDtrO/68Mnv/PR9/Xj/3/vx/PEFow58FPwatyD7I5knWy0GM7Y1JjicPD8+5jubOWo6HjzAO3g7Yjz9PC88XTyLPq4/Hz+CPqw+ND3mOUw3WTWcMkotHyguJFMfVxrNFEgPqAliA2H+RfrA9Zzxz+3J6rPpguaH4oPfa9nk1dXUh87xx63CGrymt26yb67qq9KlcaN4pOShGp8Spw65rcKowunFQc8f2I7eLujZ7Obp3+rm7hfxyvCl8FH1/fsU/gP/8ALzB5oOdxbjHEIhviTzKLgvPzUQN7A58jqGPOw+hD1qPX88Bzt3PIY8pDyUPMU9dUCGQDU/WT4CP/Q+8TyROq03vzM9L+MqjSbwIcAcihcAEYIJiANQ/rT5cfbB8xzvv+n15svkPuPH373aodgL1V7PTcoxxN69B7qZt2ezUKzJpUejhqHFng+bUKFRtMi+F77bvfLFRtSC3MHjreuS6kHn++nC76TyofAs8xz7+Ptn+iv/SwXcCqARBhnDHTUfzCJhK7EyljTBN+s7vjx9Pds+UEDtP7c9yT7VP4M8JTtNPVI/uEAYQAU/+z0NPC88pDwKOjw1fDG/LmMqQSV0IBQcChcrEV4LFwTQ/Mn4VPf19JfvNuqc5ofjQ+HX3sPbgtec0fXMs8i3w6K/NbrLtL+wxazAqeWk15/rm4OcyapSuo28pLlKvRDJldJj2S7jreai5H/mu+p27f3twfGK+GL6BvoP/dABnwZmDNYTzxgQGrkdUCSFKoAvsjMlNyM4rzjJO/Q+Jz+hPgdAXj+ZPP08+z37Peg+oj+5QWRAmzsEPBY8VTo+OTw1jTGNLBkn7SVzIpIcmRgqEwEN+gaMAS7+A/rA9ezxlexq587jK+IP4ObbJthj1FjQucybyS/HTcMtvSK55LZxs9WwO61MqFOlQamWtSG9PbyxvefC18mc0T3ZlN9s4UzhROR45wvqfO6Y8iH2jvgD+zX/eQKWBqAMthG8FHwXZhvLH7AkZSniLCcvEjHMM9U27TjXOZk6RTsxO187CDzROyA7ljuLPG48dzotOCU3DjXWMpkxzy6YK+wn1CTxIpsfghwMGjsWKBIQDgkKfAbkAgAAS/1H+dH1oPJs7zrtHuvj6HjlreFD3iPbQ9ha1EXR187YytnG5MLsvZq5F7cOuWS9gL79vQG+YL8Lwp3FisvVz6XPnc/K0X7VpNjR29XgpeRF5yHrIO8y8t/0XPmN/4gD6AVCCRcNIhE9Fd4ZVh7cIKgjkSfeKmktqy96Mvg0gTZzOIw60TvTPDs+7T+nQGFAS0DEP8Y+9j0wPTs8IjrbN0k2SzQlMpYvmSykKaIloyHbHX0ZtRUGEvcN1gnqBEsAnfyK+E70XO/+6Xjl6+C03I/YxtNEz+DKaMbRwaq8o7cLswmvKq1ArUytfqwkq6CqPazPry2zk7SktN21B7pcvzXEnciczNjRv9hH353ksOgJ7Z3zmfpDAAQFJQkUDgkUIBrOH10kWCgtLWky7jaFOok91kBBRJ9HlEqjTPZNpU/6UUZTLVN8UmRRs1DkT+pNTEsMSCVFDEMdQGI8GjhnM1ovqiofJYIflRl8FNkPqQr4BIH/vfmI9Vbxeutu5mvgZ9st12zSFM7QyOHDir9Iu9+2N7KqrSepS6UmpGClHqb8pYKl0qUqqPKrH7ACsxi0g7Y2u7bAZMasyy/RQ9dv3drj7enY7vfzSPrOAF4G9grPDy0VfhrsH3QlVypnLn8yJTdkO7A+skHIRKhHGUqOTH1Oek+vUC9S4FJ4Uk9R7U/NTlRNHks3SM1Ex0ErPyY8WTi3MycvLivTJtYhWhyuFqARFw2ECIQDEf7a+Fz06+8V68XlaOBw2wvX3tJuzp/Jn8QJwNy71beGs5+uYKlwpRClNqd8qJWnRKZEphOpT66ysmW0nbQJt5m8ucJzyE3Nz9HB15PeQuW76rbuzPNa+ugApwbtClEPbBSSGW4fzyQyKXEtqjE9Nhk6Vj3GQNRDmUZgSeVLrk2bTsdPi1FvUkpSdVEGUIpO70xFS9dIbUVYQpQ/izzNOHA0SDAKLHQnkSINHXUXMRKNDU8JSgTl/t/5AfVR8JjrpOak4WDcW9em0gnOfsn8xL/AeLwIuEazY67IqQCm8qSRplOnEab7pIqlqKg0rfuwELOzsyC2rLuewc7Gisu00BzX7d045Lbpcu6z82L6AAFPBq4KPA+dFEsapB/XJOApJi5bMgQ39TpgPqFBu0S8Ry5KcUx5TnJPTFC+UchSaFPQUt1QJ09UTZ5L2Em7RhhDqj9YPCk5JzWpMIgs+icQI+EdCBhkEnwNFAmiBGf/uvmx9Cfwoevg5qjhWNyJ1wHTqc4/ylrFysC4vJ+4P7Rcr3aqGabbo8ikM6brpSSlPaVbp4irvq98smyzGLXLuam/J8UnyvnO7tT22xDjOOns7cjyA/mZ/3YFVgq+DrYTNBnRHjIkKymcLfMxeDZ3OhA+VEFeRItHREq0TM1OSVC+URhT61MnVIVTNFLOUAhPykw6SkpHQUQWQbc9BToSNsAxWy3eKJ8jIx6ZGEcTWA5KCS0ENf9A+nP1w/DD68rm4OHK3P3XDNMUzqnJZsX9wHi86bccszyueKmKpf2jmqRDpb+kH6S3pFunhasrr1OxbrIOtVK61b/5xCvKgM/81SLd2uOq6UDuuPOj+uAASQb+CmoPiRT/GZsfESWaKcgtRzLaNvI6Rj5uQYhERUcISrFMW05ETzRQjlHtUoBTB1NpUUdPhE0lTFNKPkdgQ7c/hjwmOVk1LDGILMwn/yICHn8YpxJuDfIIbwSW/1r6I/Uv8JTrQeeH4j/d89cM03nO9MlvxfLAjbz/t2ez0K4MqkSmXKVVpl6meaUKpaOlUaiSrNSvR7Fmst21d7uiwI/Fmsrdz3/Wut0i5GHp8O378/b61wAHBowKQw/ZFFwa2x/LJPsoji1mMto2ojrzPXNBv0S0R5RKzkxSTrpPWFHDUi1Tv1LnUeJQrE/lTbtLAkmsRatCmj/8Owk44jPQL3ArUCYdIbEbVRZ3EW0MXwdCAin9r/gI9CDva+qS5dHgzNuQ1qLR4MyAyJPEVcCxuxK3srK3rqyqcKd3pqWmYab0peul2KaEqUCtkbDHspi0JbgLveLBL8eUzCHSZdjX3hjl4uo38Hj2G/2DAmUHMwxMEaUWsRvVIKolDiq3LpUznDcDO4s+C0JERSZIuUrFTFdO9U+oUaRSzFJ/UqNRlVAnTy9N50rsR9hE00F+Pr86cDY2MgQuQCk1JN4eJhmwE30OowmaBCP/OPpr9YTw7Osa5yviH90M2GXTrM7OyTPFosAvvPa3mrNIr/mqp6fYpgenaaaCpTqlRKYtqZesLq8DsROzX7fAvIXBa8ZYyzvRNNi83rrkKOq574b2Nf2xAoYHJQy/EW0XcBwgIWglCirtLowzbjedOh0+7EFQRQFIA0rMS6RNM0+zUI5RcVEoUXxQaU8HTjJM90k+R/1DuEAjPSk5XjU9McAs+ifPIpAdLRivEpkNpgiLA4v+ZPmG9OfvO+v15oDiq93g2EbUyc9ky1vHVcMpv/y61rbYssiub6s6qjWqt6n9qJCoI6lEq4uuULHgstS0Z7gUvcDBnsaby/zQfdcb3hbkpekl72v17PuJAZoGeQuNEPwVChvLH2okxShpLdUxojX7OEk8vz/sQsZFFUgZSthLVE3aTs5P3E+XT+5O1E1uTHpKSEi4RdFC7T93PIA4hTR3MFEstielInwdIhjiEvMNFwlCBFb/TvqV9QPxmuxg6OPjCd9c2kzWOdLszY/JPMVOwbm9V7qGtkmyt64hrQ2t0awIrF6rfKsBrRGw3bKPtFy2h7nnvXbCIccBzNbQntZI3XnjG+lv7lj0qvpAAK0FzwqdD68UnhlnHuEiDyd7K8YvczPVNjM6mj2xQEtDvUXIR3RJJ0ufTGJNUU03Tf1MEEylSu1Ix0Y8RLZB8T6WO6Q3tzPmL6wrGScsIhkd5heVEncNWQg4A1D+qPn89Ezwvut4507jDd/f2szWvNK6zvrKacelw+6/jbxyuVO2W7N+sc2wWrAWsBawH7ALsWezKrZDuBO6uLyPwNvEbskmzqPSyNf23Tzk8uku74H0mfqMANcFAgvDD4AUbxkcHmkiQiZSKpouNjIrNUo4Wjs1PtZA+0K7RCdGnEfXSEZJB0m3SHtItEdVRmhELULyP4Q93DqoN90zIDBrLEoo3iMmH2AamBV9EJELzQbqAVL9yfhH9MXvZet455PjiN+t297XJ9S90JXNd8omxwLENMG6vlq84Lnpt862U7ZTtn62rLZMt9u4RLurvbO/KcIixZ3Itswe0azVUNpq3w/ljerR7zT1nvr8/ysFKwoVD5cT9xdaHIkghCRKKPkrYC9pMjw1Jji3Oso81D6TQPpBGEMORIBEfURSROxDEEOZQfI/DD7aO4I56zblM4Mw9yxlKbglkiFJHdsYIxRnD7cKFgZsAd38b/gU9Kzvh+vD5xHkjeAS3bjZotaC08LQJs5+yyHJ1saFxGnCWcBqvkq9u7yZvMy8EL20vbq+csC5wubE88ZDyTfMu89R0yXXRduX31rkculm7hjz6Pfg/O8BAAe8CxgQKxRHGFAcByCjIxInNSoILasvKjJsNIE2WTgrOpY7izxbPeI9Mj4JPqM95DzFO2Y6qzjRNqI0KjKfL90s1CmUJgYjhx8KHEcYURQHEN0LxgeEA3P/U/tZ94Xzue8t7LroTuUw4mTf9NyB2u/Xm9Wd08rRINCWzi3N68u7yrPJCcmzyIfIq8gyycbJD8s3zGfNnc/V0e3TRdYY2eDb794r4hjlT+hF7I3wcvRr+EX86f8GBCwIAAyQD6cSwRUfGV8cDR9bIcgjKSZ1KH0qHixkLaQu+C8gMbsx6zEhMioy6zFTMXcwNS/PLVEsmiqGKEgmDSSrIS4fRhxvGVUWehOsEHwNCQrZBuEDewBf/SD6Ivc29Jzx6e4O7IjpH+dT5UPjVOF+3/vdudyq2+3au9nc2HbYPNgf2GXYP9gM2ITYedl32ijbT9wm3cHea+D14ePjo+WA52bp9evl7WLw6PI99cP3OPoP/dX/wAIuBZgHMgqUDLQOLhFgE0sV3BaGGHEaohvnHA4eHR8AIIwgACFQIUshOiH3IH8gGyCPH4QeuR03HYMb1BlHGHQWjBTMEqcQXQ5YDAAKBQg9Bo4ESgIAAC7+VPyB+sH4q/as9PTyYPFl8Pvu7O3N7ODrGevF6obq0Onp6aXp7enm6THqzup6603sgOxG7UDuQu8V8GnxTfJS87T0tvUy97z43/kU+7r8Cf5J/6QA5AHLAscD7wTjBd0GzgeLCDIJAArxCp8L9wtQDFwMmAyuDMIMmwxLDBYM2guqC3kLUgv2Cr4KKwqfCd0IUQjkByUHXgZ2BeoEWwQGBGYDuAIlAoUB8QCHAAcAWv/5/oj+av73/XH9Lf37/Pv8yPyD/Cv8MPxF/CL8M/wf/O/7H/x7/HP8svwk/TD9Uv2R/a/90v1k/oP+j/6p/gP/Tv9J/+7///8YAC4AcwC+ALAA+QAKAVcBRAEsATgBbwGuAYUBjAGqAa4BmQFsAUQBFgH5AAUB9AD9AOsAzgDjANwAmwBDADoADQDp/+n/u/+0/9X/yf+N/3j/Vv9a/5b/gf9W/0n/Xf9k/4X/pv9w/2T/gf+m/93//P/m/9H/9v8YAHMArQCTAJAAmADDAOsAGwEeATABUgFmAV4BQQFmAXQBkQGiAcQBmQGFAaoBjAGZAXQBjAFeAWYBZgEbATwB/QDoAJgAjACMAKAAoAAVAPP/8/9AAEgAIQDM/3z/eP+I/4H/Tv9J/wP/Bv8j/zH/OP8S//D+Df8r/xf/Cv8b/+j+6P4X/wr/gf+s/rb+hf/Q/hf/Pf8S/1P/Pf84/5D/gf98/6b/cP9F/zX/Z/+3/+L/qv/A/8P/0f/u/9j/BwAQAAAA3f8AAAcABwAHAPb/AAD2/y4AdgBtABUA9v8YAFAAewBLAOn/r//M/xUASwBQABgAyf/J/xgASAA3APz/lv+3/wcAJgAhAK//fP/V/wAAMgA3AMn/Z/9z/7T/JgBUAPb/u/+0/6//tP/M/+n/w/+q/8z/2P/z/93/qv+m/7f/0f/A/9j/6f/M/9H////2/7f/nv+Z/6P/0f/V/8n/yf/V//z/AADu/9H/r/+0////BAAHAOb/nv+7/8n///8NAO7/zP/M/9j/IQBdAF0AMgCe/4H/HQCCABgAVADm/6//YABZADcAYAAVAOn/HgENAO7/FgEVAAcASwDu/10AewCMABYBo/9UAOsADQCtAF0ANwBdAFAABwBgAFAAOgB2ACEAZQA3AHMAUAB2AA0AMgBLAEsAdgAHAGgA1f97AMD/oADM/2gAjf8QAPz/AADSAED/kgIb/fsZ+QyM6W4K3wJz+p8GU//SADUEmg5YDu8BoP6ZA7AEQwCgALwBSwBDACoDBwCx/pEBI/8u/mv/kwDoABAANAMXAh0AogZWBAAKFgFs+30EuwPRBLH+t/8k+2cJavxzAyIM1/jeEH0L3wdsBkMKx/6/DzUExPPVEtjuUQh8/9T6nQrP9ysKLPioHrIPqgv4GQbvZRUa/C70VxXB7agHqga76TcdwOyzBtsVyeNeFLvzUP47A3z/1gJt+aEIa//uCK8NoQoEBckL6AI5BC/6ev5pB/TtpgVz/KnyXgu78AABsRGb9PII7g0D9gURggmY9ecOrfvKBOkIGvWiAeEGLvRA/xL/PfNJA9jrUQPp+n/rSQjK9iH2HQCb9JD6Av2b+XT77/an+Ev49v9a8z77hPoS9TX/5fK69xL6pvVI95sA6e4q9b3++/ER/k70XP0c+zb29Pu780b4hPpA/HT9jf9g8Zb4cwVy9HL+yQtc7ab8HQAi7poG7/Yh9uoG4vYq8LsDTPX6AQ0DW/ZxCSLudwYo/5nzlQ3K9bn9JAa8+14B8QDL8lEKEwGM7n4RrvMU/sQBrO0bDQvxWf6aCbD2BwCc9i392gJv/B4BTQFU/E7/Mf+j+sH7DwLe/Q/9KwAq+XT9ZQDL9+f73f/0+EsFmAoL+0v5fQREAST9KgOz/cr7XwJQACr5ZgEV/MD6fges+Rv98P499dMCzgDe9kD6OANF/wT8w/qe+BsGNf18A3f+r/8XAnT2UAwy93v69wj9AET57v+bAID4dwb99ogDywJL+bMB5gZA/Gn5kgmE+iYDwPpy/iMKa/WYAHsFAPfgAE8GaP3aAoIAsf7hATD8tfccBFP/afuKAgz9wPoN/60Az/cEBZMAXf9lBXT2cvmSAr/8tfw4Ac70n/1kAmj96f+Z+nH7FgMWAaD+Bf3GANUE/v7yAVP7T/bvAYUGKv4k/V/9QADo/nf+FgMdANwBwv6+AwABCvibAs0J8wRtAEMAewUN/7b+QwW4AVoBhwCwBG4Dd/7Q+L0C+gN0/WMBE/2X/vv3nv8qBMv84wAjBX4HGP1M/vgC/ALFAtwB0wLK+Xj8DwLX/df4U//4BKP/5ffa+BQCjPyX+QwCFQWV+mv91wV7APb3e/wyCcUC+PkK+uQDy/6+90H9BwAQAPz97QV1ArT5g/5kCagHDf8FA0kGsQIj/wQA0gD+/Bv4wP92BYf97v/KCTIFn/18Ae8EcwWiAQ0AJwG6+Yn7hQQA/Dn2av7kAbv/R/uqAX8IRwINA24FNgLP+/37dAax/hH5ev50/QX+cf0WA2wEH/zT/tkGRwcXAjgB8Ac0CJgA7/3qAQX95vj4An4FMvdH9JAAFARzAHL+CAwZDIwA7wFHBEsFGwFdAwcGLv4w8xT5SQHT/HP65v/GB14Gwv4o+1MCNgJA/4YC0f8o+1/9Lv4g/cL5Rv3xA8ACcQnrADX/Nf+5/acGmf9YAjoC+/zD+uj3Gf6XBHMFTwkRBYYC8AcmBQ0Fevvw/lgRvw/u/7H5tgNIBVz9FP63BGEFu/86B3cI5f5EAYoHiBEfCzECjACr/BH+SAXJ/3728wKTDz4J1f89BnsA2gI5CUsF2PrS9osIfQQm9xrymPwCCeMFTP75AIUEtgN5B9/+z/uZA0YG0gD/9bn21vum/xsBrfUH+0UIWQqeA7r8dQKKCzULJgBk/rUFUAJA9Rj4tPQ4/d8CxgDrB8n/XwjMCBEKWAOZ/wAKzQQsAj/+Rv0U/kb9Rv3UBY795ffDBZISvwvw9BP91gK2/sT4Mvbm/Qb/PQZeCsYFnfcY+A8CMQQQ+3r7XgovA/P6cvRi/KAAev5k/u7/DgrEBqb/l/agAFYIYgN+/n7+wQRX/Rj41Pr9BQAP6AxCB2/8EPuoBKkAEPuZ+hUASQvH/lvxNf1PBjECkAVuCs39/PkWAxYDoAJKBDULPQb3+Frzy/cAATb2gwK6DwgDhPoT/TUESPyH/d79AAU7A0/5Vv8q9Pvs/vceCl8HoP66BYMH0f+G9Ff7LQT9CTIFpv82Aob0PfPs9ib87v8eAyIMdgPVAeEBdPuF/90GLAi+AD8CWANS+O3y8PcT/UAIaQxYByYFi/63BKb/+PlC9m0CDRMpAsv3Mvff/gr6+vqtBc4MsAl/Azv+Y/33Bgz+zf2aBsUEpvxW+qb8dgO4AZb4W/yqBqP/CPkw/GYIJBUQCe3+Xf8hAHLz+Pn5/sT4SPfvAZ8EwvRs9A36rQ6uDNcFP/kG+q//zvZ4/zv50Pid/LgGcv7m+Ef+DQMOCsP8KffS/e8Q4ghe95bzGvcMAqUM+hIsC6IGigLQ/gwC0AEM9On6lgtM+2nroPk7DlAWKgmf9iYFUhBfB+767vPL/Nr4//06Avz/N/xZ9/EATv2T+zX4OQndHL4JzPj1/sMDdPb179bxDfN2BSUREQU4/Xr7c/z5/iYFxPGe9UcJt/r+/C3xGvVKAln3x/o6B5oU3gTm/Q0FVfNF5fv4mQ1NAWL3pPcPDJ8Js+6Y8loQrBpCCQkINQuyCH70Pe/T9GL60AFBAU8QPA8aBT0LuRMzDKz9lPT9APIIgfn0+FcBrP7t/M4HsggEBSwG+wsBCNf4q/zeCV4KZ/qK9Cb8lP7Y9f7u0vKMAcEO2v0y+1sE5v8HAA0AYwHT+Sb3a/og/8n48fVQ/rP47/hN/JEGGgpcB9IA9P1t/tj6G/1C9mEFLgo4AXH9xPZY+Zf7tQXKBE8EqQXwDKgOr/94/NXzjfVX/RT+SgIS/+MAAgnoBfD+sATKDkEGywJ+ACf65v1G+Dj9ywWSCXj88/8ECpEGPQtW/+cEVv9fB4kBYvoeA3f1QPpk9rEMJAtSAb4FQArqClj0bPba9HvyYPGL/vcDuv5mARUALv7v9hv4A/vdAxYBwvlc+Z/9yfhj7lT3jv1Z9074oQjaDQ0DYPaCAJIC3fwb+rr5SQE2An8DbQC7CG73u/N8/zgIQQtj/eoJrgrgCq/93/Su/Ib2/fIy97wQQgxlABIIxQkRD0v9yvsTBuoBjgRNAa4GcwA2+e71Qu9n/zv+ev4pCyIMswbzBzkPtwSD/B/4IP1M/rr3J/Mt/dYOKQLkAXwDlP7I/AP5pvyX+5kBmwLRBBQE7wG6BYgD8P509sv3a/Vo82n0PvvOBVQABAAeAyYDdPtw+voBkgJQABP2AwKlEfkKxgDGAJf58u7o8Bj4WhDyAQLu4Pc5Cp4NqQDp/3v66AVS/Yb7EQXQ/pH4OP3wBwcA8QOD/hUAyPzN/XYFfAMAADL7FwT8/agEo/9UANcAGwFJC0IErgdB/Zb/oP5vBMIHsvxH/rz7rALp/+j+0PwC/V4GSQaYAh0CggDT/vf9svwJ/uX+tAQAAK//+/jo91AAIP/yAQj5MgCxB64KVwG6+VMC+f4f/GzxzPgpAjgD8ALzBJkDkPck9jb2Vv+xAhH+zQT4CYwF/wOwAM/7tPSM8ij2+QCgB34A9wZcB2QJdQcV/OD8wwAS+t72jf/B/Xn9XP6QABMB+AKoBFgDLA0tBxUAUAAI9CH2MPyv+A/4U/vcBVsEfwOF/ycBqgvrAjwBLv77/Lr5Nvmc+9f48ALeBAIJJAuCBqMCvPsC+FH1JgCxAnf+UQMn/m0CNgKp/g/9E/1SBGcE+gYi90L2j/5G+Kz0TvRQAHwGSwdkBD8M+wvT/on7xfsX+u30x/mgArIIHgFUAB0HbgUsATD8JwEx/3MArgHbBFAHzAN+B9L9nfd0+H7+bPsE97f/2ANIBegAtgMPB2wGwwAJ/v7+A/so+yb8VPwv++/7/P3rAF8C7wSMARD7GPhb+Cn9ePwE/CL+YAAf/DIAdQdmA9v+4PwqBMQIzwhYA4/+EABJA+MAdPhH+U38JQIbCGkHMwd8CPYF9wPqAQv7oPfk+fT9AAENA/oGmwVa/8sAeP8T+Bry3PIb+H39SwD6AQ0IlgaN/7/8FPty9yv6L/of/K0Abf7B/dL9xQJmAfD+//rL/CwBJPtt/hwEMgV8AVgCPgRBBhkHsQK6/q//LAK6/Cb8b/hUAP0FJAEsATIFuQxa/5H9dwEqAzj/3fXu/5IIkAq6/Az9HwYvA6n+o/tEASP/T/tH+wcATv1I96P7ggUdBUD8/v4IAnACav6x/lwCQACj+gP6F/+L/hL6a/rz/8cB5AF+AA0Du/8a/OsC3gRk//f4Nvv3AdkBevtS/ZEGsgifASj/4wVdBS7+x/ok+538+/hV+dwAZQc4CGMGWAxfDSsFe/oD+bz7vPZi9d/5qgFcAu8B8QqxCnD/UPxzAwEDl/Y/9AP63ACUASD9HQBQAvACAABW/2L8OPo8/BL/awMkATj/j/6YArgC8fwm/Gr+1/0r/Ob62P6lA7UAQQGhBfkHYwGC+074YvqD/D34BPxmAxYG3wI4AyQEcAJ+/pn60f8fBOX+xfseAXwGbwTM/zv+1QHkA3P/4wABA73+EvqD/L8BaAAz/Ir9LQe6CpEBp/1dAK8DrgEI+db7fgDXAEn/fgAsAcH9yf+qAZ8E4v+5+/wCzQaUA2AACf5k/jH+QPxv/Av70fpM+6D+w/86ADcA1wB8BlwHiQSQ/1z9kP/DACf+nvoc+eb9MQKTALz9avzm/+j+5f6O/UH9Z//J/1ACpwFHAoH/OP3X/S4AeP/g/Az+FAJ3BsAC1QG4AuEBS/0R/mAArP52ACwBUgbSBhQEQAO+BTIFWv8j//P/1QEPAjoAnf6I/nr+6Px+/sf+Mf56/nT9zf0n/qv8wfsj/ywCWgEg/wz8JP03AKn+E/04/Wj9//+UAfb/zf2l/v7+w/+0/xL8UP44ATECEANVAyYDUQNiA6oBFALp/xT+JgDkAtABIP+TAOEDtQfECKgHIwiOCdkG8gFjAUf+LvnU+nn9pACiAUkBLAZuCjgIMQSoBFcB8fz4+VD3kPcv96T3T/v//wr/gPzI/Fn+uf0u+WT2l/YU+YX4Wff0+Hz4lPnW+7T7j/mC9yn3GfkN+tb2cfbQ+YD9kwBk/5T+bAHVAcYAAAHZAQwCRwKeAw0FqgYkBjMH6gmmCtYJ6AdrCKYKdQwKCzQIHAlRDa4PQw7ECx8LZw2SDcYKjwfNBs4HoAdPBuIERwSeA1gDDQOqAaQAvgATAYIAWf6y/EP72/nX+IL3u/XT9N/0tfJV8HHtVOv+6fPnwuZP5nHmz+a26SHrx+vP7fntyO777gXuAu7r73HyFPSY9xL8QwC9AvwC+wTHBtkGUgbdBi0J3QvBDs0QpBNBFg0YnhnxGnAc6xyoHW8e5R5CHjsdJh2GHG0c3hpWGSQaHRpfFwcVwxSSEqwQNA9DDiMNYQrPCD8HZQXZAb3+TfxV+eD1QfG17XDqTOaA4pXgHd9Y3BjZ0td31tnSsc7Gy17KE8leyrvPhNhZ3/fjOer87+XyDfDK6xvqj+nZ55TmBuq18Az53f98BnUOdRMnFqMXFRivF9gWUxfBGoIfSSI9JdQpcS0RLo0saSt+K7MqtCjbKBwqmioWK3ArUCuaKtEocCZgJIMhhx3IGZkWzBL3DRIIQwPXAIX/vf4M/kb9e/wU+3j3vPFA643l2N+n2fTTG8/uyzLJ3cZyxS3DQ7/fu8+4fLdDvYPHEtHn2ufmYvLP92X1bPHP7a3m5N/W3N7cO+Hs6Pbxyf1PCfwQ1RbjGpscgxtDGNwWZhi/GYwbix+jIwsoaSsSLA8sZizYLMwspyxfLEUsxCwhLXEtdCwgK1MrOivcKYgnviQBIhUfvhqTFYMR8w0OC/AHjgRSAaT9Evo891b1efNB8ZnuMOy16BPjhN172H/TUs9sy63HH8V1wcq7kbWnsEWsFq1Iue7LLd6R7Gn7agpqD5EG+/hn7NDfFNUEzKzL1dYo5dXzpQMUE5UenyN8IvEfMxuTE0APww8QE4oXDxwBIkApJCz+KcwnbSbPJFIjzSNfJwYshS8EMks0BzTmLwAruSYXI4IfvxufGtwbuhu/GcUXABYRFLAQxAuPBzEEtP8K+jj13fCC7SHr9+jZ5wvmeeN/4WveVdms033NPsdTwR27ArWHr2Cq8qbXrS2/W9L042T0SQZ0EsYPfAMQ9jrootmtzOnFv8p41z3l2vSJBpgVTx85I+Qi7B+AGdoSfRByEVQTxBYHHMMi2CfYJ5Qm+SYgJuojBiNuJLIpsy/3MeozTjYXNtYyLS3UJ2AkhSAEHUocbxtoGkMaBhmvFxYWZBKjDhYMsQfZAZD8ZfdA8/LuFOrW50HnxeX+4lXfi9zJ2UrUH81Yx93BULsntZWuSaico76lY7WUy8Hewu/YA20V0henC6f7oO0C3iHMDcAsweDM3dul61D+VxK1H0klmyZZJNsdVxXgD+cOkxBUE4sY8iBCKA4q3ihgKPUnqiUsIjQiBSejLXUyUDXFOP46RjmyMyUt2Ce5IkUe9hvjGs4aZhuIG0EbZxm1FRQSsA4ECscDrP10+Jbzru4l6oDnqubA5ebjL+E+3qXatNUKz1vH+b80ucOysaubpXafo5wGqZfCx9ow7Dv+kBNjHjkU0f847uvenc0tvWO4r8Ol1crmafn6DbMe+ie+KT0m4x+UFt4OhA1qDz0SyBedIOUp0y04LOoqniocKCYkFiIkJeksJjNTNlU60D1KPZU4PTFaKmwl7SCUHZscghwjHfodbh3cG3IYkBO3D+MKKgTJ/cj3NfPk7/3rAulq6FToGuc/5CzgnNxj1wXPdcbqvoK4JrJmq0ymO6PbnpyefLAJzmvlEfTMA6sZUCFYDpL2aucM2oPHUrU9tXHHNtqu6Sn9PBTyJa8smyuLKKEiLBe0DkoOGBCKEloXxyBLK8EtdyqNKkIsuimYJDkjzymxMkI2TTh4PcBANT5DN3Qv1ympJDofmxySHKMcDR36HRMekhyoGCMU+BBVDNEEjv3X93nzxO4/6Ybmyubu5XnjNuFx3hrbUdYCz77HzsAJuc6xvqq2ow+d15XWmSyypM7S4472+QxMIuch5guG9k/mjNOLvequ5rPzxnTZtetiA6QaEir0L6AtMShoH+USiwz1DBcOaxLoGuoljC7PLkUsKC2NLEknwyIAJHYrsjNmNyA7M0EYQ14/lTiYMNAqfCWPHy8d9xyKHM8d+B5sHjMdshlPFaURWgsWA038dPZg8a7sVOhj54roN+d35DziTN/t2mPUEsyLxBi9N7T6qyOknJwDlyaTbZxMtzDScejw/rAVCSQgHEkG8/E233HJ/rRurbG2Rslk3OXwPgmOHjorGC+GK9klWB2BEtENJQ4kEFAWJh9KKEAuDi6iLJksOiqJJTQjoyZzLm81Fjo1PydEFEVTQBo4UDBvKn4k4h5GHCgcSR3FHhAfnx6cHbgagxZ7EaYKDQNv/FP2mPBd66vn1uac5k7lceNh4ePeh9qA1EXNhcUfvjO2Aq7SpX2fh5rPk/OYabFbzTzkjvaaCyYfihwvCIDz4eJA0Qq8UK8qtl/Ifdl/6yACQBhmJ/krQSqyJ74f4hQYEA8Q+RFMFg0dSCZQLRwtlCuyLBIsyCjmJXEoRDCjNjw6Qz5wQsFDtz9ZOLgxjSxRJzsimx8mH7UfXiD5H0Mfvh1IGgAWsREADM0EVf6A+LXy0u3V6dnns+e15svky+LQ39Pa8dPuy5HDv7u8syisJ6apoPibU5damz2w+8gC3njxWQUBF5kWOQaK9Pfj89JdwDW1Z7lixwTYFOrw/tUSKSFKKMUo2SU6H/4WcROnEi0TXxd9HgkndyyqLBIspyyGKzsoNiaaKJsvXzbkOtA/ukPQRCVC5DrkMpwsUSf/IrofCR6VHjwgdCA1H8cdahstGHUTtgztBYX/P/lV81TtEelK5y/mMeXJ49Lhtt8y3GLWGM8+x8a/F7ihr3WnIKCXmZKSlZP3p0XD6Nhw7PgCnBjrGg4KQfjy6RXYjcHMssm1jsRD00vjuvl9EPIg+Cg1KrkoxyLGGF0TFBJVEc0U4RuQJJsrnCz6LH0vZy4OKjgnJimAL/Q0VjjqPW5DM0XeQmY8yzVmMNwpkySgId8fYSBlIQshZiDRHtAbURgNEyoMugUo/9r4a/Nd7hXru+kb6VToPuY+48rfWtty1S7OL8dVwCK5+bFIqr+k+aAgmy+Y9KO/u5TQPuFT9DIKAhW+Cp76Zu7V4FnOprxIuVLEAdH73RLw2wR7FqIgPCTJJRAklhwbF2EWSBUuFrAalyH4KLgq9ClCLHEtAysUKNYo7S6uNeU40zz6QTxEwEJCPcg2yDFwLAUnqCOxITYh1iFlIVog+x6SHLcZ/BUyEGwJ8AJq/Pr1tO/u6pnpduiX5tbleuTP4cXccNa00NLJ88ETumqyjKu3pLme95gCljqiILosz+LgwfPSCZUUowne+Cnt1eBbzW27j7lhxTXS+92x78MFFxfoH5wi8yNMIqwavBRWFB0VohZaGwYjdCp8LPgqTCz6LC4pmiWKJnQsMDN1Nzk9TURnR7FFo0AnOp0z+iysJs8ixCB7H1IgMyHqICsgVh4PHL4Y8xLvCwQF5v3K9gTwieoh6PXmnuXp5CnjtOAT3vTYE9KAylvC/LpqsseoDqF0m/6V1JMXosK7c9G94yb3kQyhFA0IN/cl6jbcasg1uGe4hcRi0U7eJPGWBscWSB/JIYQiTSBsGWwUTRRXFV8X8xxIJDUq5CsAK6os8izIKLEmKylvLswzcTedPRFFskZrRExB6zvLNUEvISkZJqsjAyFfIV8iPSE8IDQeohuoGAYS4wrVBFL9qvWS72Xrv+mT6OTmXeYS5Rnh7tsq1QLNwcTKuzWz5Kw8puye7JlelfqYUKyLwg3WnemA/UMOXQ5gADXzueb+1GnCi7gavGPIMNTL4v73qgtWGdkg6SI+I5gf1RdKFMMUtRUcGS4fDyZ7K0wsmytKLesrxCdiJ54qny+sNOI4A0AcR0VHjERAQW07NjWGLbEmXSQFIuwfsyDcIJkgfyBnHnQboBczEWoKlAPU+v3yGO266BLnluW9487joeL+3cXXrNCHyZ7BZ7eVraWmIKCCmeiSz5MHpzzACdO25E76UQ23D4oCvfIL53jXtcLCtuO4+cTg0RnfAvNzCF8X4h40IpQieB4XF6cS4hKkE/wVihyTJHcqGyyVLEAuoy0yKSUmsCiDLbsx5DXxPPBFxEkVSERFEkGUOusxjCksJZQi9B+CH+YgkSLPIggh5R6MG0EVUQ1ABVz92vQE7QPo0eVH5LfiTeJh4VzeD9nV0TXKScEBt1Gt1KTTnGGVpY7zj+Sjh77W0uvloPzJEFES5AEu8irmVdRSv4az2LddxSXSm+AG9YsJqhd9HjkgKyA9HCkVfBLwEx0VShlHIbQoKC3uLCws9yxBKqkk7CL5JsAs7jEVN2s/6EglTPJJz0YwQu06CDKdKdQk8yEmHxUfbyBlIdohuyCrHkEb4hRJDWMGLv4g9TzuUunz5W3j2eAP4Crf19re1EPOU8ZDvfqyKqjTnjaXCY8ejG+aSLRIzCPgS/SQCiYUQglI98HoP9rYxT+0yrF9vZvL5dha6+MA0RINHZMfSB8qHdwWHhJmEfURJxZuHbokCCsXLWIsUC10LIQnUiMdJHIpQS8mM4s5XkRgTH9NdkpRRiVCVTokL+gmAiPEIE8fSx/HIIsjnCSRIocfjhppE1oL8gGq94zusOj35Y7j5uA54HzgIN7S1/TOJcZxvVqyiKbynEGWMpCCiwKWS7H6ygndHvDuCGYWygkV9Q3p1twPxlux7a9KvvPLlNWr5+gAnhKAGSUcmh6oHQgW1A84EXMUsRbdHH4m7C0fL0ksYC2XLcAmqiAsIuUomi4hMgw5U0XgTUNOJUyASaJE5jvHMNEoeyR/IJIe7x7UH1shBSJTIT8fzRmKEr8LCAMC+Cfumue94/bgit7d3cvdCNq10xnMTMLHtyWsqZ+TldWMS4Tgiaijbb/m1Lvq1wUSGVESMf6z7jngeclksQmps7Pkwj/OlN+k+IgN6RhXHG4dWB0RFkoOYA4dEYwU2BvjJbIu9zHNLyQvQy5fJ2EgIR9FI8Yp1C4HNi1CLUy4UIZR904ASiVCxzd2LgknRyFDH2AfLh8zIOshtiKGIUYcmBV/D7wGYPuI8OzoR+Q54Mrc4Nsl3PTZu9SlzAXD0rj4rGOgK5Voi1iEIYv/oi29sNIb6dYC/ROhD+X+XfA34mnMXrWbrIS0aMGEzGzcs/OSCVUW4xpRHRwecxn/EkQRRxM7FkEbeCNwK8guWS6HLp0uUioNJEkiNiY2K88udjSLPtRIV05yT7BO8ksERi09ETNSKuUjxh9iHeEbMRx1HmEgvh8sHPkW3hCvCBP9C/Em6Nbh6N2X2uzXtNeV1iXSb8phwO61jKosnYGPa4MBgDCRsaw8w8TZL/XtDywXJQmL+fDt3NoKv+esXa0auWfDVc9a5aT9PA/TGCYdqB7nHNsVgxEKEsASVxc5IPsoJi4gMNMwwDGVLrkmwyKEJM8nnipoL504nEN3S4xPTFFFUNVLEUSxOt8wRSjPIo8f1hyqGzsdbh/XHyodmRiXEyUMvgCl9JLq6uL+3eHZadfA1ojUgdDbyV3A+bTgqIOci46KgUKB8JTBru3DO9oi95MQ9BNPBkX6zu+P2mK+YK5asH+59cDszG3jK/wjDUwW/BzqIJ8enBjUFEoUtxQqGJgffCc4LNYtoDDbMiQvLSgWJQUnqCgEKTYtHjcoQmhJwk0aUtBTOFCPSCc/pTXkK5oj9R0YGkMYnBh+GqobGBq6FpUSnwuMAMr0furL4uDd0teA0u7Qyc6WyYXBWLi6rxWlqpadh5mC3JAEqHC6Rc2A6ZMFkw5WBfT7ifbg5izLcLcLtra7t76OxN/VXe4eAXQLARSGHCQguBxMGPAXRRmTGtMdSiO5KKArOy2nL8Evzit4KDcpFiszK1EsITIdOxNCr0bAS99PPVBbTElGDj8DNswsUiVPH20aVxd7FncWLRUGEhwOSgkeAbD2GO3u5bjgutox1QLSqc4YybrAz7dQr9SkRZiki5eIB5bbqOK3XMkg4wf7UwLh/TL7p/jR6r7T/MTQw4XEM8IuxazTueYG9f7+1gk1FW8b+hs2HE8eyx9BIDQibyWlJyYpsSs0LucteyvJKrssly0sLAgtdTLlOEI9HkGyRuJL1kxQSrtGqkEuOp4x7Sk+IwgdCBgpFS0TYBC5DAYJUgTL/N7zIOwy5ongLtqR1EvQxsvjxI28UbRMq8ehU5dAkFSVSqR1s9jAsNI/6Ij14vZM9Vr1lfBe4v7T+c4OzxPNYcsJ0avdJerl8lP7Dga6D68ULBdJG/0fmSJdJEkn/ikDK48ruyxxLUwsqioWKxAtgy3dLAovCjSNOH47vj5DQ7tGAkfVRN1BCT48OHcxESsOJa0fvhoZFq4R3AxlB14BqvoC81TrNuVr4H/bcNY+0mTORslYwoW6wLKwqrGhEZz2nwCrC7YRwGfNAd0X5wvqc+uP7djraOON2y7a/Nrl2HzW+9m34mHq1e7p80j8bwQXCbEMQhLMGIsdriBDJOUndyqpK1os9yyZLNwr3yvHLFMtFy12LsgxnzRwNk04ujrkPE09uDtDObg2hDPlLqkpPSWSIZAdrRiGE8oOkgnLAkP7JfQK7t/oGeSt38Dbz9d506DOCcmtwra7obSArtasvbHLuV/Bzcgh0uTaut9e4kzkgOQB4kzf39+f4SjiNOLv49/o8O1l8PPxI/Wg+VT8wf30AA4GHAvwDtoStBevHHsgFyN0JQ8nSihyKSQqkSrjKqwrYC3ILp8vfjBXMSoyCzLcMHQvFS6NLA4qBScOJc0jFiJxHz0ccxlZFgESmwz6Bg8Cs/1t+ZD1SPL37kDr9ebW4Uzcf9Zp0EnKjsTVwTrElcgIy/jL+82s0PXRhNHyz3HOwM2szvzQmNOe1lPaRN/15IXpY+y77s3xl/Rd9Rn23vh7/J7/RwKQBQQKvg5nEnkV0xhoHPkfAiOJJRAo0CrPLakwDjMZNSo3LTlmOq46pTpVOvE5SznTN182sTX0NDAzjDCOLVcq7SXfH6IZrxRPEAoLfgWQALz7RvYv8J3ph+Iv2+3Tx8x3xWO/Yr5OwfrB1b9gvwHBa8Hjv2S92rqPuXC6EL3rvx/DtcfszVnVw9tW4K3k2Ony7o7xE/Oc9k/7cP+YAv0FHAsAEb0VYhmLHWki3yaAKrAtGzGfNOk3+jqSPShAgEICRO1ELkUgRfJEqkT0QzBCNkDsPqM9AzvFNkwyCS7sKCYisBrwE9UN2gd8AQf7GvUY7z/ouOC12J7Qr8iZwCC6C7i5uFO4J7eSt3W4E7hCtzO2pLSfs3K0Sbd5uqi9UcLZyD3Qotbu2zvh5+Ya7FPv9vE29kz7o/8WAx0HVQzsEf4WPBsrH8UjqyjVLEgwkjP6Nns6sj2GQDJDcEUcRy5Ih0hhSO9HeEdpRlVEBkIoQI8+7jukN/AynS5lKaEiLhsOFF8NxAYrAKX5DfNe7D3lw90N1t7NncXKvS24AbeZtyq237SwtS62uLWAtfG0krP/sr603bfrumK+JsOfyfnQU9d13NLh4ef77BnwPfMY+Ev9UgHbBP8IJQ5xExAYXxzHIFclwin4LQgylDXAOCo8iD9SQoBEc0YBSNRI4EiTSENIzkdwRvlDuUHhP6M9YTryNTQxXyyNJqEfaRg/EREKXQPo/On1Ee836LTg+9gE0Y7IHcAkume4Ibglto+0MLWztTq1y7R7tM2zPrOHtDe3LbqXvbjBx8fBzsnUEdqI37TluOoR7tnx0vbf+xUA5AMSCBcNfBL+FugaNR/RI1MofCybMHk0Eji9O1I/sEJ+RYBHB0kRSn5KIEonSVRIEEfVRHBCW0A7PiA70TYLMggtEicfIMIYixGECpADZfzt9OXt7OZ633jXWs8mxyC/5bmOuJK38bRGs/uz6rR2tLmzfbN4s6uz3LRCt0u69L2Xwi3IWc6I1AzaXd8x5XDqZu5t8nL32fw4AdEEUgnTDvATMxgHHF4gdCUKKuct6zFFNlo62T0zQbBEvEe4SYxKJ0vAS2ZLWUoCSTVHEUWfQhhAbz2+Ofw0xi81KjIkMx12FeINFAddAOv4SvHQ6Tzibdoh0qTJyMHku2q5PrgAtgC0krPWs9uzeLMGswuzkrO3tNO2srn/vC/BksZEzO7RnNcf3abi5ed07OXw7vVM+wQAPgS7CKENlRI6F5kbtR8dJOwoSi1rMaU1xjmmPTdBlkS0RyBKmUs7TJdMqEzHSz9KZ0g0RuhDN0EpPpk6GzbkMAgrxiTxHWkWLg9JCNcAIvl48bvpEuJH2uDRO8liwUW8TrpbuES1W7Mcs0azZ7M+s5yymbK5s0S1L7cCunG9u8EIx1jMmdEo17zcIuIX55TriPD69Vv7ZQDRBCoJKg5xEzMYUBwvIJMkYSnWLe4xCjYROjs+OULkRQdJHktxTBpNf01uTWlM10qsSExG3EPfQGI9KTktNK8uxSh/Im8bERToDIwF6/029kDu1uWV3XbVz8zmxIW/zLxOusK2ZbSOszCzH7OcsuSx67ECs8u0m7b7uDi8VcBmxVXKLM+A1NrZ/N7348Hove398jD4ff18AgwHBQxtEVUWehqVHhAjpScGLDMwQzRWOJk8W0DxQ3VH+0nMSwFNuk3qTS9N3UveSYZHAEXyQXE+RDpeNSAwVyoAJA0dxhXBDl8HfP+y9/Xv1ueg33jXwc60xkLBF747u+K3XrUutMGzn7PlsjuyWrIGs6m0sbYiuWe8WcAKxdLJ0s7+09fY192h4k3nY+x98db2XvyUAV4GXgvoELUV/xlCHkQiwCZpK5svsjO+N8U7tz+kQyVHjUlWS5JMXk2+TS9Nu0vNSZxHAEUGQoc+IjoiNZYvZSndItAbgBRODf0FP/5G9mvuEubL3X7V2Mz6xcjBkb4nu+K3mrVqtFS0HrTdskmyBrOptHe2C7houuy9W8IBxz3L8s8R1RnaEd+H4z/ok+1A8/f4s/1oAusHdw2VEhcXPBuPH0gkvSi7LPwwNjVDOVI9AUHERPtHNkrYS9tMuk3UTfhMTEv0SMxGH0TGQKE8gzcyMpIsKSYmH/oXCBHeCRQC9fnW8bvpZeHg2BnQpsgYxP3Aab2PuaO2OrUOtZi0JbMssq+yEbSetRq3P7mZvOTAZsVjycjNzdLZ16Tc/+Cs5Q3r9fCc9k/7JgDtBbwLIhHBFb8ZOR5SI/8nFixQMII0xTj1PMZAdEScRwBKokvKTL5NCk6PTRdM8knRR0RF/UHZPdQ4gDO+LXcnnSBzGYQSMAtiA3H7PfP06rfi7tnu0NfJOMWnwey9MLpWt/e1mrXUtICzzLIXs0i047VWt2e5uLzHwPzELsmJzVbSbNcT3F/gKOWe6nfw7vWz+tH/qQXNC0wRzRUMGtseFSTIKNUsuTDrNFk5jj1mQdBEq0ftSZJLykykTcJN80xWS2hJWEe4RGlB+jzpN5cy2Cx1Jnsfhhh7EecJFALf+UXx9+hi4FPXOM9gyR/FF8EEvXK5Vrd+trC1PLT6st2ywbPttBm2wLd5ulG+g8Jbxk3K187C04TYudwV4VTmLezE8bT21vvVASwI9w2vEiAXHRxYIUsmniqyLhozlDe0O5o/P0NfRuhIpUriS/1MnU1DTeVLDEoeSAFGDEPoPvQ5zTSAL50p9SIoHEgV5Q0sBgz+nvU/7cfk5ttl09jMF8irwzq/Ybt4uNa22rWTtD6zfLLDsvizRLWsttu4F7wNwBPEBchEzO7QvdVL2rjesOM/6bvu9/Nt+Sv/GgUTC2gQTxVlGqkfxiSHKfMtPjK0Ngc7Fj/lQgFGf0iXSjZMbk32TXtNU0zOSgdJ2EbPQ+E/bTujNo0x0ytEJY4e8xcIEZIJogFk+TDxBelw4KvXFNB8yvXFU8HYvDy5CbfytXu0w7K5sY2xbrKos9e0m7ZUuQu9KMEnxVnJwM2f0qPXT9xl4bLm9etj8f323fzfAs8IYA6+EyMZXx6VI5UoJS3EMSw2iDroPtlCRUblSApLwUwHTrBOaE52TSFMbUo3SBFFIUHKPBo4ETNTLQEnnSAVGioT5gsxBCL8FPT965Pj8Nri0rbM4Mfswjy+YLqvtxG2j7T2spex97CDsX+yjrP+tGK3zbqyvs/C98ZTyz3QZNWl2sLfuuQD6rnvsvV/+0QBFAfrDL0SRxivHfUiKCg2Le4xVzbqOjg/UUONRj1JX0tKTdpOZk9HTwpODk3OSuNJ4kdLQ3s/XjppNUEvCSnXItUbvxRFDaYFpP0Z9qDtv+Sq24zTNM0jyDfDob78ugu4g7bPtOq0PLQ6tSW4PrhDuFi4wrlavOTADcXlyOTMztCl1cnZXN7A4vPn0u029Lv64ABtBxcOmhQYGiYfMiRhKfstFDJXNsc6RD9lQwhH90mrTBFPwFCoUWRRaFAMTwRNs0k9RVtAeDt8Nt8w2irpJAcfBhlfEiwLKgSA/Mzzseov4Z/Xhc+kyZvEhb9hu8i4Z7dYtge1vLNusoOxM7FLsYqxSbIrtCe3NruWv0bEk8lKz7vUa9lL3m3jbehl7Xby6Pfa/UoEHwteEToXYh11IwQply2yMRI2sTokP6tCoEW+SPpLm04GUEJQg0+KThpNYUpwRvpB4j3OORk1uC8KKmUkeB7rF4UQhAh+AJ74iPA66NzfItiy0V3MYsecwoC+KrtxuCC2EbRzsoaxULHGsZmy+LMgtsi4yrtGvzzDkMcvzATRFtZT2+LgquZT7AnyyPef/V0DFwnjDqEUehpJILMlsCqfL8Y0vjk/PvJBEUUESM5KPE2OTgBPCE+4TuVN9ksbSZdFuUHZPWg5LTRqLn0oqiJ4HL0Vhg4PB9X/lvgk8WbpvOFy2vTTds52yZbEIsCjvPS52LcDtoe0o7Nbs96zsbTEtYS3D7otvZzAk8TvyLfN9tJc2IzdsuJD6Cfu/vOL+Sv/4gSmCpMQSRamG9wgDyYWK9UvbDSvOHc88j8uQ9ZFFUi4Sc5KQEs3S8ZKeUmfRzZFHEJ+Pl462DXTMIMrDyZrIG0aIxShDdUG9v8q+UjyN+sz5HLd89Y00V3M+sfZwz/ASr3ruiu54rf5tne2WLYXt264JLpnvBi/YMIsxlrKtc5u07XYAt5L47roNe6z80f56P5nBMoJJg9sFIwZmh5sIxwooiwBMes0eDjWO8Y+M0EYQ6pEqUUZRi9GsUVoRIlCU0CdPUk6fDZmMuwtKylAJPseZxnKE/oN6wfMAbz7qvW579jp9OMQ3n/YjNMsz2zLD8jbxBXCCcCMvo69+ry4vNG8hr3xvpTApMIfxRrIycvVz0bUyNhe3VXijuer7Lzx5/YA/B4BRgZXCz0Q8RSMGfEdOyJcJkEqtC3CMHwzCjZzOGY6zjuUPAY9Qj0fPWk8+jotOeY2SzRXMfstMCozJggilB0XGWwUoQ/GCtcF1wDn++/24fEQ7VTo3uO238jbBNho1DfRtc6czPLKm8ljyLXHcceyx2rIXMmQyjvMYM7O0JjTptYA2rLdueEV5mHqme758k33o/sAAGwEzAjrDN4QfBQQGIwb4h4WIsskLyd2KWkrAi08Lhgvky/eL/QvaC92LhQtSytZKXcnRCW+Iv0fwBy8GaUWNhPGDw8M8AcGBFkAb/yv+Pj0bPGM7pDrgujf5W3j7uDJ3ivdkNv32brYAdiG1y3XE9eG11TYNdlE2pXbe92p37XhBeSQ5lLpF+wp71TySPVr+Jz7wv76ASYFAQjjCoENHxCVErIU7RbxGLAaHRyLHasepB9hIKogtyBvIBEgaB94HocdaBwRG68ZOxh7FtQUCBPyEMoOewwrCtYHhwUmA9cArP6H/HP6jvji9ir1nfMd8ojwNu8C7t7sF+x368LqMerp6bbpv+kx6pvqEuu560HsHe1j7rHvz/AM8l7ztPRs9hv4uvlP+8j8Yf4AAIUB5AJKBKYFCAdrCIUJfgqiC6kMZw0QDnoO0w4uD1kPTQ8mDwYPuQ5kDukNOA2RDN0LHwtDCkoJSQhLB2MGjAW3BKUDgwKAAYwAmf+6/ub9DP1I/In7x/oj+pf5EfmR+EH49ve696D3ePdZ92L3bveM98P3G/hf+Jb4+/iL+Sf6wPpb++/7c/wM/cn9av7w/pD/KwDDAEkB1QFYAt8CXQPHAz4ElwTbBB0FZQWYBbUF4AXXBc4FtQWYBZAFagVDBQAFygSJBD4E+gOLAzQD6wKSAiUCpwEzAbAAQwAAALv/Tv/w/pT+O/73/bz9a/0p/fv8uvyY/G/8UPwz/Cb8K/wz/E38W/xl/ID8oPzQ/Pv8OP19/bP99/04/nf+x/4b/2v/t/8AADoAewC4APEAPAF3AaoB0AH+ASUCXAJ5AoYCmwKYArgCxQKxAqMCrAKGAnkCkgJfAkoCHQLVAccBnwFaAUQBMAH0ALgAfgBIACEAAADR/57/Z/81/xL/0/6s/ov+cv5t/lX+Vf4q/if+Iv4Z/hH+/P0u/hT+Iv47/jj+UP5t/pT+vf7+/hf/A/8X/1b/fP+N/6P/2P/m/xAAWQBAAHMApACtAOgA6ADOAOMAJwFEAVIBbwFJATMBQQFeAWMBQQFBAScB/QAKAQAB3ADjANcAuACkAGUAQAAdAAAAAADm/7v/w/+W/2v/a/9k/1r/U/8r//n+2P7L/vn+7f7L/sf+lP6U/sv+8P7w/uj+0/7T/g3/F/8g/xv/IP9F/0n/Wv94/57/kP+7//z/8/8HAAAAAAD8////IQAmAEgAcwBoAGUAewCTAJMAkACYAIwAfgB+AG0AdgCbAKAAoACMAGgASABgAHYAaABLAC4AFQD2/wAABAAAAA0ABAAAAPb/4v/u/8z/2P/A/8P/2P/J/6r/Rf+N/+b/4v/J/x0Apv8EANX/EADY////fgCv/y4AVAC4AJn/+QAHAB4D0P5ACuQDdPb8NM8nT/vm/RD7ywJYA8IYswFnDR0m5fxG/ZEGsQIUAlkIAQNk+6X+kgIq/rf/KP/d/IMCbAGEA/b8ixFkE/b6DP4b/8MDagVbBJAPAAet+iP/dwbKBIP+SwA0+tkGBREwBvz/DgFQ/rT5XwLyBnMDpP2P/vT70fq+AJQB3fxc+f372v0w/VL9Lf2R+Hr55v0X/1v8RfwV/OT5PPwR/vX+wftW+sr5IvnZ/MH99vwj+jL2OPoG/3P8P/nd/D/+1/ij++gADPx3+kf+GP3LALMGggWK/UD86ABAA8MFAgSQ/2j99ABdA7gG1AXV/xr87v8nBpsFUwI5+8T41wBWBBv9ef2s/lj5KPt8AysAYflt/sX7IPp2AG8B/fsP+ID9c/8b/wP/pflY+Wj9pADY/8X7I/pi+sH9yf1L/d79I/oy+8v+Av3w+bz7Gf74+6T4pf69/sH4pP22/tn7QfhB/SwBoPwQ+9D5oP6q/+382P50+/H8MwHJ/eH9jv1jARgABf3u//n+EwGJAQr/5f5HBGv/qvpBAc0E/P0S+jIAa/8rAEsAlv8S/zP8sgOrBGL8uf0mAAMC+AJJA6v8YvoHBrIDw//v/YP+TQF7ADECkABM/jn7JAHkAjH/a/2e/00Bwv6MACsAWQDZ/Kz+tQCvA1b/ifvf/gcA0wIT/UAD0f/r/Vr/9P3GBUAAXvzQ/psCRwLpCIMHivhO+KUDCAJ2AyMF9/hx/X7+xQJqBZAA9vxgAMIHAAA6ALwBOgCzASYDzP/2/90DygTkAd/+kAD5AEADWgHwAmH+J/k6AtoIEv+Z87H+ywLm/y8DuACb+d36LgX3Aan+5v1M+xMB7wHo/mP9i/mw+wUDmwIZ+wX41f+TBVcBwvmP+YgDHgHY/vEAuvko+6r/DQVUAFD3i/nH/uL/NPqAATcAgvdO+nT9E/3Z/HcB+/wc+Vv4sADcAYj6Wv8U+Y/5FgFLBSoE5Pk1+J8B3glCBHL+oAIBA34ACwTyAQcAVwFQALn90/yGAmH+h/1z/+D8Z/9lAOX8OPg4AYYCMPzf/mr+iP/R/+b9tfz2/0MAuv7FAnH9D/h4/w4GCAKl/u7/eP8kAV0FrgFv/OoB3wLGAOEBhwAr/Mj8YwH4Ar0C6PygALQEsADLAOQCYwFz/EAAfwioB+b91/3DAIUGKwUi/k8E9wF0BqwCWf58AVn+LgWsAtb7pPjH/iMFKv7d+oABmwJH/h/8vgB1Aqz9XALKBCT7yvaIA6kFnv+V/Hz/zgB0AYkEv/x4/+sASADfAhwEufvD+lIGKQLd+sL5FAITAQ0AZQDv+5j8dgB7AO/4vATuAz/56f/C/lz96wLMA2L6Tv9AA9/7xQIvA5T+QgIyBdwADAJaBjcA/ftlABMGHwQVAA4B/AKk/az9UgRkAgoBe/wG+m4D1QaX/mP4Yvx3/tv+r/0S/7AAgfkD+zIAQwM8AcMAAAAc+zoC+gi+Bf7+RP4J/mQE8wnrAnz/Hf48ATkEcAINADj+0f/MARsB3fzt/vEDS/1U/Fn+O/73ATP8oPc2+en/jAEv+3/7p/3+/mT+1wBmAYL7FPtEAXACXQDqAY77B/s1/xf/JvwJ/OsAc/w+/X39uABTAk79JwGN/4z8+gFYB8sCRP4J/qMCAQaZAxL/gfr5ANIJmgT7/JsA0wJPBKIE2gK8AXMASgRZBXD/wf3eBHwCn/0gAvEAl/7i/yYAwf3zAoYCEPv2/wAADf8lAp8BhPpL/eQCogFE/vD5vgPFApMAowKB+V/9WQhwAsD69wEeAyv/OAPm/+j+VQNr/2f/4QEAAA3/KQKX/pj8ZP7YA68Di/mW/eb/KgM1/3z/oAJ3+Wv9GwGFBMX7z/dtAh4BOP1O/VP/AAGAAa0AA/95/ZQBzgLHAWwBsPsD+b0CUQNd+sn9Bv90/RT+UAKP/hv4OgChAxr8rPn0/d/+FAJF/3H7BPy8+/8DNwVA/E74OP7LAM8DtQKy9678bwTPAycBJgA3ANcAIwVQAqD+0gCQAHMApACF/1ACiQGHANcAMf9tAIwB4gQMAu/2o/vrAl3/CAJG/e/4Cf55AtkBo/s+/Rj9Mf93Bhv/TvqD/sMAEAPx/NP+A/98/zUEDPnv/bEFUgEsAtX/9flsASoJdgO3/6QAkP/ZAQ0II/9s+2QCqQXYAw4Buv5J/5EGYgNXBpAFcf24Ae8GiAgHBjoCiP81BJIEYARLB8v+R/7nBEkG+AJLADYCtv5YApkBvPt2BcMDYvwD//b/+QC+A3YFfP/g/PwCWwS8BHf+B/vpAzYHkAXcAID8BPxoAokKewUo+zb5Tv9jBvcGa/94/I3/UQP4BBAAYf7l/voBfAE2+xL/mAAkAS8D7PvX+cwBWgbQAdL9R/sPAuUISAAV/HH9JgVpB/P/Pf/f/hYBpQPZAZf+rP32/xMB//3L/usCZQA4/kX64PyEA+n/y/ww/fb8DP3D/34AGAA4/0T+mQFEAWr+qv+9AjAByvu6/JgCDQC6/sz/p/1w/0D/mgT5AJP77wTTAi7+o/88AVgD/P84/Y791f/mBmIDQP8sARL/zgfgCqwCEf5i/GcEtgjqAUT+S/04/pMA2P+4AJn/Y/3w/tL9ggBKBHQBafv297P9xgX3A235tPRk+T8CzQSY/Cb3T/kG/7wE6gF0+/H8MgDMAU7/r/1+AK0AKQIAAML+cwAQAGwEOwNzAAoBZAJtBwUBJPsIA1gHCwR+/oD8UwJ3BoUE1wB4/FX+kwD4AjEEBf7o/qMCMwG6/BUAuAbd/7P9pf4Z/moFMQSW/8D/G/3Q/EoC8wRq/sD6U/+wBJ8BMf5JAe7/uv6O/RL/2gKd/Ej67v/0/XP8JwHA/wz5aPgKAVAFI//w+S/7+QAYAFD8bf56/vz9FP5o/b3+lAGxAtwARP4T/b8BqwRVAxcCa/22/kADUAeuBkf7yvtsBtwFtQCYANkB/gExAgcGwQReAdEEhAPLAsYFOQYQBAgCmwCbAhwJpghvART+6gEfCfUMMgU5+0v9fgVWCBwEDP7D+lz+dQLSAKn+1/ic9nH9Bf31+cj3dPYY+BD21fOX9HL36fU88pv0wvQu9MH4Efk99Tjzwfhh/sL5h/cL+7D7NPo4/Y3/Ffyg/EEBQAPqARUAGwMwBjIFPweCCZsHbwaZCBwLugqFCfkKOA2BDWYM5gt6DvcNVwuGDkAPDAx5C1wMpQxDCoUJVwtzCi0HlAdsCzsIHQLOBZAK/wMT/Sv//wMdAlD8IPpk+SP4xPZV+df4MvKg7c/tKvA87vXrhelh5FTj8+WA57TlguEi4jPkuOWF6V7ntebR6qPso++c8QbxgvK09Br3YPtb/GT7Kf1CAoYH+gaDB/EKdgomD1IVqBOSEjsTThe/GRAYDxxmHRobwRqsGrsgPiObH0UePRxjHvkflR6bHCsWJxYFG08a+RXlD4wPZxIuD1oLIgcRBZcEOgBM/tf5yvQV9XLzXO/Q6f7nTekm5q3hEt1h2sPbLtoR1VzQrM4Z0CfPGs0cy6zLsdB50/fUONkS3bPeGOOe6vzv+fKG9if69P2sAnIHiQpvC0MPDhRuGMoaFRpgH3gj7CIIJvAohCluKRkr7S5DLrYr3SwVLhEuFizCK/krfynRKBcojScZJtYhOR6uG/8ZVxeEEhQORwmBBFgCOgBN/ED1ue8p77LtB+g74ejd+tuw2djWv8/sxyjG2cbJxKu907ZLuoW/HryctzS8S8Qoxl/IJswI0J7Za+B44jDnC+wu8lP6oABRA8sFgg5PFbYW9xw3IiskSCliLAEuEjEtNEM32jZwNgo6pDzNPVE8wjq3PbA+gD2qO6Y4czjVNjAzgzD3LIUqDyc9IaAcwhgzFr0SmgsrBU0B1/3e+LTx7Ous6IDk69741xfSls+zzfXHKsA9ujq1Y7VjtZqw1K0Aqs2pPbC4taO3d7auuXK+mcUR1WjZxdJE1QLjuPNb+GD2S/ml/jIK3hWOGs4a2RmFIOsrpzGTMmozeDYfOv08WkEzRalF+0SlRNxFNUnVS4ZK30V3QURBSkSHQyM9mzRsL+svYC8kKlUiHRqbFWAT0hCLDOoBwvnB+LL1ye9j6CbjKt/z1qLRNc8nyibEfLy2tgGy66wQqo+l5aR8p7+hsJ4BqM6x7LKFrmW0gcEDxiXLUdNx19rZ7uDt7g31PfXx/OkDtAlLEIAUgxvfH6IgTSUKLI4ytjWGN0I7Az7yQaRIW0xTSjdIf0soUZ9RLU4lTBZLL0vlS4BJMER0P/08ETr2M/gt3ihfInwdAhqnEkcJygQxBLAA6Pcw7i/pKumy5l7dy9M3ztDKqsfgwu664LJbrqCqRqUyniWeHqYoommXlJysqhmxWa85s1S9mcB4yEzWINpo2e3dm+rV8/z0p/vQAY4E+QrIEn4b1hw+GkAiJSvpLOMtYDJDOdw6xTskRAhK+kgKSb5Nw1K5UaZQk1OjUV5NzkzCTZlLY0RaP8A9UjlNMzcudShhIHIYyRXIFB4NuAIw/ZP7J/pE9Dvr5uRA4FndYdow0jXJ+sF0vJO6S7ZArdajO5yulSyYkKiMppmMHo4WrXK7XrDDrTW/ZMbWyGLY+OHd3QrbJ+sb/fT4pfTM/1YNZA4ECjwU1x8QH8cdmiNFLKstOi+hN4g6iTi2PFxIZ00JSGBJMFMmWPtSok9aVXhX4FK3TYNKt0gIRRNCmj3UM/UrHCpBKhcj4xWED5oPlw47CKz9KvVi8vD0qvDn4QzY89YR2AbS1MNguga3xrSjrqSjjJq1kBuRU6LropCO1IoioS60vLMitBi6yr2UynPb3eAQ3svdUucU9ND4BvqD/lgDVwZeCogRvRc5GUQbrR93Il8nby8PNgg34jNBOrZGGUqnSb9KN03HT3FTrVvAV0xLxk6cVjVVqktSQmNCHUDVOoo2SC4UKLkiNR9zHb4TMwx9C5UI9wFy92vzNPWz7vLkF9191+bUcs/9xy2/k7RSrteqfaS8m82RgYqbkuGhRJxzjjyVHayNvFC7CLukwo3L09oR5LrjK+JH5OHzj/4X+o/5Nf9cB2YMewyMD5kS2Bb1HYwg8SK9KAQuwTRDOR86pT9MRrhJjUuiS8ZOclJ9UwFXv1RCTAJO9FOOUVxICj+sPro+5Th4M9UqcSS5Itsf4xzlEv0JbgpCBwgCAPzV8+Tvbusm5uDhj9oL0nfKt8WVwXW4YK4Lp8Of95g6kAiJK5XxpWybQIkmk6G0W8juv4+5aMFSz9XgKusq6Xrf79618iUCl/4e96f4ywLaCPMJ7g0/EfIRjBRkHGAjWCaNLEAzyTQbNn4+XEqoTMhHEEdPTAlUZFW4U5hUq0yZRvJPgVXOTB0+CTiyPBA8UTfCMKAmySFrIFshZR+9ErQJ3webBVEDePxo82Xtj+jF5Xrh+9hR0ebKXcXevz62Ua3Vpoue5pY2jYaIqJmYqh6d4ImcmMS8ccxmxZvBAMXZzWnhRfHE7Grdrdta8KcBMf4M99P3Bf0NAzIJyg7KDiUMGRHXGvkhXCY9KjYwLjU+N5I99UaXSmtJbkhQSkdPqVTPVhpQIUctSXdQx1BISP08rzgxO7Q77jYfLnAmcSQfJYQjvRwjFEgP5gt1B/wC//179zHv7OjH5lzjyNtb0uDK9MR9vrS4WLEspx6dRJbvj3iKI5iuqzKgA4vyluW8m9CFxQe/F8Z50CHh7O1M6+TcrNrr79P+RfoI9Dj1o/v5AJsFjAq6CgkKhA8OGW4fdSPzKNcu+DK4Nqk+rEX1Rk9HB0lAS2pNjE+FULBO7U2cTKhHDEhJS8xGsj3kN+A3LTiONDAvoChnI+QhtSHFHlcV0guyCJYG+gEZ+4zyXesM6F3mwt/O1YDPnsvfxdu91LSgrH+mqZ/dlu2MB4uyny6xhp4miaGeP8rk1bnCWL2TydfVS+MC7vzo7Ndq2IzydQIp+EztH/OR/YUB0QR9CaMJdwiQD1YbLCFCI7koyS9ZM8U2iD/lRklGgERPRy9LlU2TToRNPUsLTPNM0UepRRpIFEVGPkU4lTYQNxA0zS9IKT4j1iFTIWUfiBZlC84HdAYBA3j8OfTv7NbmNuWn4+vbFtFcye7GGsMwupqwJ6kSogKbZZXBj7uYkq6SqeGRiJi0vZrU1crCwBfGqc403e/s7+wy3G7T7+cj/1T8svBR8GX39/1QBVILOQlhBaILXxmNIZEi2SXALHAxKzV4PS5FdETdQb1FsUqISwtMnEyUSltH3EgfTnlJ+j+gQJ9C1z7AOME0TzRpMH8sESuwJb8g7B1qGwoXFw2zBtcFCgHH+Rvzs+wM6DHleuFy2knR2MqmyMHENLxFsqSqg6bBoM+YOJM4mGSsRLASmECVwbj11TDPAb6Swf7Pe92i6QXpONsS1BbkK/yn/YzuROvi9lIBAAUDB1gH7wbvC2cXFCH5IYQi5SkXMW81/joBQdlC60AhQ5pJa0tHSkdKjEgVSOJLnExERVNAvkMfROI9VjiPNRM0ITJGL78qxiQYIUQggR7pFk4Negn3BuQB4/tR9SDvAuny5P3hE9xy1OXNA8nswtO747Vury+oJKDolwOSrppbsRGwFZUakx63LdeH0du9YL27ygzdz+ud6T3Zu8+f4Vv8Yf6e7yDqz/I4/m8G8wkHBr0CFQpRGHsgeyCqIhUpGC/7M0w6CEFwQqBASkITR7lKw0svSxFIUEVFR8xLn0yIRCE8jj1uQTZAdjmnMTwu0y26LkIsBiN3G8UZHxkHFQgM9wPz/5D81/hl8nnqzuXK4V7dLdmH0cnJt8UoweC5ebHsqnCll57mlqqW9KhBtVegAJBSqxDSaNQdv/W7Rsli1kLlIeuM3UPOLdkm920AF/Hl51zvGvyrBPcI+gZDAAYE6hTQID8flhw5I94t1zNTNiw7nT/qP8ZAu0QmSHZInUgwSQRGeUMRSN5MHEcIPAc7HkHrQIg6nTPtLlAtyC4cL3Qn/BwCGv4b5Rk4ER4I/AJa/2r8IvlT8dbn4+Oz4xLg59eAz17KtMZwwWG7n7MRq4KlAKETm2KdhK3nsd6eRJp6tvXPbsxwwdDDuMpL1Y/kV+ie27LRIt+79Tv5NPCz7LnxQPryAZII1QZAANQFvBTDHX8d/x2HJOMqhjAVNx07uDuUPI1AdkNrRAhHvEcDRR5DlkRcSHtIcELPPM88BT/vPSk5JjOHLgku0C/uLA4lZR/bHY0cZhi5EWUL4AWQADD9x/lj86rrR+bp5PXhj9r009/O5snRxPa+87j5sdSqIKXDn7Ce7Kr8tpWpZ5gmqnjN9dVPxKu9WMfp0U/hbuuX33nO3tSc8B3+3PI86S3sw/VEAUIJgwep/mT/Jg9/HVIe9BqzHo0lFC1+NXE5SjiDN3c8zUKYQzxDY0TBQ0VCkkIAReRFtkHvPfM9LzyiOhI7izdTMS0tuS2vLmUpfSPxH+0bHBlEFs4RCgtRAzH/dP1k+YLyE+ya52bkzODm27LW4c+sybHGxcHVunu0qq0cqa2jTKGPr7e5kKiCm6ix+8920CHCVcM1yWrOcODs64zd2Mxb1+HxDfpp8Lnrte0488n//gpLB4D8U/8KECUcJRz8Gg4enCKYK4g17DfrNBY1tDtzQcdB2EGwQrlBAUHRQuFEH0S4QBA+9TxXOw08BDzLNZMvJi7eLy0vhykVJKkfZBy6G1IZjRK3CRwEHgOQADT6lvNE7ojpO+bJ4zzfSNh/0TTNecm9xN6/EbnQsLirSqkgpSCqJbiIsGudHKlKyBLR8cL8v3jI/sqO1wPoPeBQzsPR8umj9mzvUetU7Xfwgfq5B2IIef3S/WEM8BcgGioaCB3XH/wmqDJXNvAyKzO+Oc0/vz+FPz5CC0LEP/1ByESoQi5A2D8OP1M7jjmQPHY5mTEtL7Mv5S5TKxYnOSOyHQUbSRupFukNoAf4BCACIP3L99zy/uza6I7naOOT3M/XONREz5vJRMXcwHm6YbTcr0uqRKYkrkO44q6jomeuqcSXy/3Fn8QzxWrIGNlE5pjdD9Bj1A7ny/LE8U3uW+wY70P7cwgsCN/++f7qCm0WKxvhG7obix1pJhAycjVHMjsyrTcfPfw+IEDrQDg/yT4lQvlDEEIHQPk+tz11O6o6njvPN2cxii9GL7Qt0CrWJm4iYh1MG/ka4xVdDt0IUAVYAir+GfmZ8/TtfurP6Obk197N2ZfVadHozB/IhMPuvNO24rO3r7CpjKu7tbyzFaj8rN2+AsiMxePEgcaXxrLR398w3WXTLdS04L7rLu8e8I/tj+2H95kD0gbEAfEA5AcZEekY/hv2G6ccJSPFLZwyOzIqMgA14zkPPUk/zT9xPsk+50BnQodBU0AOPy09mTxCO6Q5WTj0NFcxUi92Lo0sjig1JYMhIx30GosY+hK9DC8InwTxAKb8GPjl8qDtXeu26WHka9532o3WQtLzzf/IUsMRvmO6hrYLsVOst64+tkO0A6xEsDe+J8XrxGvG2MUKxWTQPN312qzTHtad37PnVe598W3t7+xi90cCnwRwAmsDlAejDtIXmxwHHHAcHyPrKwgw0TFeM2g0FTe4OzU//D5DPic/1T/fQOlBSUHjPuQ8xzySO585/zgPNlcxQS/MLqIs1ii4JdYhAR2LGsYYthN0DTUJSAXOAEH9T/kc9DHvuevP6JnkX+Co3JzXU9K+zjHLNsYBwRK8nLfDsmiv4LJhtn6x4K2dtP6+F8PDw4XF5cMPxs/RW9nf1cXSiddo3l/lHe3h7tjrhe5O+OL/ogH8Ak8ErgZTDvIWvhrjGi8dPiNLKYwuwDFDMl4zwDbtOjQ9YD7PPjs+PD/jQGZBuEAvP1k+lDzHOvU6RjlVNWAygzBvLhYsLCq9JnAh+h0xHJMY6RPPD74KrQVoAg3/d/qy9WDxnO3m6XHmYOMR3wjaztUT0nnOcsqFxXrAubsnt6izhLRFt7CzorAGt969479Sw8nGB8RcxLHOs9Qt0lzT89cR2srfqumJ7KPqzO6Y9Yv5Lv7wAnwDhQSqC6MSxhWSGYcdHyB7JJoqQy6zLyUymzSFNm05TDxiPXU9VD4rP4U/fkBLQDU+wjwBPJ06ujiKNtczIDEkL1Mtpyp3Jy4koiBMHRUa+RWgEaENRwniBEEBkf07+WL1KfIq7vLpBedt407eLtqi1vLRdM0OynfFCcDYu8+3ILaEt2m2LrQGtyy8Vb5mwLLDTcMmw0PJUM5xzlzQJ9Rd1hLb7eLS5hjoReyy8P7zT/mU/h0APwLoB+QMDBF0Fk8a0hxCIYMm6inPLDMwQzIYNFQ3FjpLO6Q8HT5LPmU+VT+IP5g+nT2ZPBg7YDktOIo2/zPRMcEvQi2WKuEntyT6IIMdDBoiFkkSZw4eCvYFWAKg/pD68/Y98/7uIetw5xjjk9562hrWadE0zfPIJsSOvye7mbdTtlq1jLRwtgS517kZuw6+ir8zwE3DaMbkx9XK+c7A0UfV39qg36TjV+hF7GjvCPQR+Z38AABvBMQI/gxkEiAXsBoHH3Aj+SaiKmcuDzFRM0I24jjVOvE8qT6APxRAzkABQbhAoECiP1Q+Bj1kO+w5PDhFNv8zhTHgLgEsESnVJSMiSh56GogWlRKXDkAK4wW8Aaz9uvnU9bDxj+2F6TblzOBs3OfXQ9PGzknKlMXkwD28krfSs86xsbE+swq1jbX3tc+3irrrvNe+g8BDwj/Fm8n2zcDRudVc2t/fc+X76YrtSvHK9Yj6Cv8NAxkHjQuNEHkVDBqJHrkiySaqKk0ujTF2NEM38TlmPJM+cEDpQfhCnEPfQ9xDxkNxQ59CAUHjPuA8Bzs1OQg3TzRFMWculCtkKMEkriCCHIYYlRQ6EI0L9waYAqD+o/pb9gny5e2u6Tblm+D621vXs9IYzkvJccS4v+6647VYsRGvy68msouzkrMYtC62UblFvEG+Ur/twHnEHcmjzaXRZNX32b/fluUb6rXtifHd9Xf6G/9OA1wH7wvjENUVrBo6H3UjjSd+KxwvWzJMNQk4mTr9PCc/8EBYQmBD9EMkRPlDeUPFQpxBD0BcPn88YTo5OC824jM0MVEuCCuZJzwkkSB8HF0YXhRBECoM8wdmAwP/9voA98/yiO4u6sXllOFN3bXYCtRyz+bKS8abwaq8lbfsshuwYbDlsqS0hLSYtGm2mrn2vDW/678BwVzEDMmwzcDRINUK2bje9eSi6QztmPCx9Fz5Iv5CAiwGsQqmD3YUMBm2HechDyYYKpMtuTDIM6M2OjmWO5U9YT8IQTRCvEIJQ/NChkL9QfNAXj+3PTY8ZjpZOFc2EDR/MeAu6yuLKCcloyHHHbIZzRW2EWsNTwnnBGAAN/w9+DH0FfDx667naOMd36Xa19UW0W7MnMfHwqi9Y7h1s2+w6rC8s6K1WrUwtbm2yLlGvWi/2r+twMjDb8gfzTvRmtRv2AfeP+T36Gzs1++r8zX4+/wOAfMEjgl6Dl0TKhibHOYgLCUuKZUsvC/TMrE1fTjtOtY8pD51QMNBeELiQtFCeEJCQq1BQkBlPmY8XjqyOPM2jjTAMfQuNCw8KfslOyItHk8ajBaKEkMOwQkjBcMAsvyO+Dn00e9p6yvn6uJX3pvZ7tRH0I3LwMbiwdi8zLf2su2vorCWsx+1qbTqtNa2urn6vCC/nr+IwNnDoshKzXPR2NSh2CnePOTX6EXszu+48yz47fxBAWoFAArNDr4TrRhDHZchvyWMKfosSDBEMxc20DgdO/081z6TQKFBJUJsQlhCBkLDQfNAUj+APY07iznHN/U1gDOsMPgtKyscKOwkKSEEHTQZeRVmESwNzAgkBMP/vPud90nzBu+x6k/mH+LX3UvZq9Tyz/XKKMZ4wXi8NLd8smuwL7JrtYO2s7Xrtfq3SLvDvmHAWcCqwXvFUsrtzs3S+dUZ2gbgwOXL6S7twPDC9Hf5FP7yAQ4G4ArDD50UUhmUHcAhCCbUKQItAzDnMqU1VjiuOm48IT6zP7RAQEGQQWJB/ECbQLM/HT5EPGo6iTjONvQ0ZjKNL+IsEioFJ70j6B/YGxAYTRRGEAgMigfrAqD+rfqr9mXyEe676V/lBOGT3BXYk9PozgrKPMWIwLG7o7aQspux+7OXtvW2erZMt6G567z0vyjBcMF9w7LHcczJ0HnU79eL3G/iq+dd68juh/Km9jL7iP+IA8IHlAx7ESsWmxreHhwjNCfVKuctvzB4MzU2wDjQOn88HT6UP1BAk0C0QI1AGEB0P1k+mTy6OvM4ATcZNRozdzCcLfgqMSj9JKAhBh4VGlAWrxK0DnYKLAazAU79XPl69Tbx3uyw6HrkPeAE3KPXBNN+zuPJCsU8wIy707Zss6OzlLZuuP+3u7caucq7Q7/dwW7C1sKMxfzJoM4E04TWp9mW3rPkb+nW7F3wJfQw+Mj8GwHbBP8IwA1fEvIWdxuPH2cjTCfaKs8tmDBeM+k1EjgAOps7Ej1uPhY/RD9BPwU/hz7ZPb488jrlOAs3TDVzM2sx4C7rKzIpmyaOIx8gghytGPYUchGnDXUJKwXXAKD8nvi69JDwRewp6Objl99z20PX0tI3zovJ3sRJwLm7YrcntYO2P7kgunK5rrmGu4C+xcGyw+rD48RnyP3MUdFH1ZXYKNxs4SPnKus17ufx2PXT+T/+WALtBQQKyg5QE68XFBz0H4QjSSe8KngtKzDnMi41Hjf/OIU64zsoPaY9jj19PU09tjzmO6o6pjiNNvQ0PDNCMSQvmSy+KTsnviR+IQIemBoBF2QT7Q8lDPkH5APi/7n7vvf78/Xv3evv5+zjyt/D27DXQ9O+zm/KEsaVwQi93rget764ULvKu+a6P7tQvX7AssM/xT/FZMYOyo/Os9I91lLZPN3I4lfoDuzh7lTyU/aj+v7+vQIbBi4K5w5xE8UXyxtoHwkjxib5KYgsHy/RMRM0/jXBNzU5mTrJOzY8EDz8O907Uzt7OiY5MzdMNdQzNjInMNstYSvFKFAmxSN3IPMcphk7Fr0SOQ95Cz8HDQMN/xT7JvdV83XvUetj53bjYd9T2xzXn9JGzjXK+sVowbK8H7lnuLC65byVvGG73LtKvrTBzsT6xdDFZce4y2HQGNRG13Lalt5E5MvpP+3C71LzlffS+xUA7gNHB0kLDxB8FFgYMRz5H4QjHidOKsQsJy/VMSA0zjWLNyA5WjpOO847tDtOOyU7rjqTOQY4NTZGNI4y+TDgLkIsqSksJ6Qk+SHeHmEb3RedFEgRqg3FCZAFTQFx/cL55fUM8k3ufup/5print5+2n/WeNI8zuzJusViwSi9lrryuuu87L2OvXW9rr4awfbDIMbuxsfHncrSzs3SLNZj2Qndl+Hb5mLrme6r8Yj1l/l9/UkB2wSLCMsMSBFXFRwZ6xyRIO8jGScHKpUsHy+ZMYwzPzXzNmo4cTkAOkE6MzoFOsk5DDmxNxI2XDSGMscw+y6nLDoq1CdsJd0i9B/dHJIZOBbVElEPmgvLB9gD2P/9+0v4vfQL8T/ta+lr5XXhpN3V2cbVmdF4zXbJasVTwee9pry0vRO/JL/Ivo6/dcH2w2jG5MeEyCvKxM3l0VzVhNj22wPgy+S26ZjtmPAU9Bj41vuW/04DxAZ7CsUOBBO6FkgaCR55IZAkkSdaKsQsDy9XMTQz3jRoNpQ3NDiSOOo47TiJOOw3BDeINe0zWzKUMKQunCyAKhcojSUQI2YgaR1gGigX0xOFEDQNqwnGBeQBLv6B+s72MPOX7+jrQ+iM5NHgBN012VnVYtGAzb7J3MXiwSC/sr7Nv4jAScBJwGjBeMPtxRrIaMmFyuDMo9CR1MXX09pg3ofiK+el6yDvFPKt9Yf5uf1mAcUEfAjyC/8P/RN4F9saWx6DIWAkFifMKXcslS6YMFsyTzS/Ncg2gze+NwY47DfTNxU3vzUtNGYywjAYLzstACuLKBkmxSNLIZUeohtyGEgVHhLjDn0L3wcUBH4A/vxy+fb1YvLt7mXrw+ci5Hjgwdz72C7VUdGJzdvJKMbPwgbBRcEBwtnBVsGSwdvC3sQVx83I5slsy27OVtIK1kHZl9xW4J3kP+l57fHwMfTg97z7fP8WA6cG/QmBDV4RNRXCGPIbHR8IIr4klScwKkksPC4rMPoxlTOzNJw1LzaFNps2fDYXNg414jNUMscwQS9uLYorQCnkJowkBSJoH5YciRlZFiET+Q+9DE8JqQUIAov+FPuy90v06PCC7Qbqn+Yp47HfRtyy2C7V5dGgzjrLocd2xNbCucIFw+DCacKcwtnD2MXkx3bJospIzE3PKdPV1u7ZEt3i4Evl5ulA7uHxQPX3+AL96ABvBMsHFguCDigS7xU8GSgcEB8NIvEkfyfMKcYrzy2rL5Ux7DItNDw1LDbVNuY2cTcENwM2UjRZM4oxBy9TLSUrCSnZJb0jQiFvHq4bIhjcFEgRPg6YCk8GmwLo/j77gvf+8+7wOu3h6ZDmNePQ3zvcG9l+1RfSqc5sy47IfsV4w6TCDsO6wwLEWcQixevGKckYy5DM780o0FzTC9eM2rfdKeFC5cjpTe528hP2qPmK/ZQBggXuCDYMew/dElAWiRl4HA0foyEhJI0m2yjGKo0sQC4AMI0xqDKEMxw0mzQJNRE1ojTXM7EyVzHQLyYuQiwnKvInmiUlI3cgoR2wGqcXbBQAEYENCQqFBvACXf/S+4X4SPVD8lPvTexJ6T7mPuNJ4EjdO9o51zXUadGszgTMn8nnx1HHQ8dlx63HE8jQyCfK7svAzUrP1tD70uvVONmT3PDfYOM052Xrse+u81n3+vqp/m0CHwZ1CXIMag+VEtUVzBiIGwkebyDpIlolpSeQKTMr2CxqLuYvEjHIMUcyqzIGMx8zsTLVMaUwWi8BLoQsuCp9KDom7yOjIR0fMRwcGesVtxJhD+YLRQiXBAoBp/1a+hH32vPP8PDtKutX6H7lpuLT3ybdetqw1/LUY9II0NHNvMsvymjJP8lxycHJScr6yhbMlc01z8bQStJV1OnWxNnn3DXgxuOa55DrrO+i83j3U/sK/6ACJAZ9CbYMzw/iEvkVzBh0GxwepyAQI14lfCdLKQMroiwaLj0v+C+YMA8xZzGnMX8x3zADMC0vNC73LGErdilaJycl8SJ/ILkduBqZF4AUZhEyDssKRwfUA6QAff0r+uz2xPPU8BHuVOuT6Lvl/uKQ4E7eKNz72cHXtNXf0xPSWNC+zrfNgM2dzc3NFM55zjjPhtA10tLTPtXM1gLZ1dvj3vXh7eQT6Lnrm+9v8wT3SPqb/QUBgQTwB/kK0Q21EKgTqRZWGbobCR4WIEAiMiTdJWYnoyjGKdAqtitiLNgsOy11LXEtFC10LKArhSo8KccnDCYVJPMhyx+QHRYbehjGFfASDxASDeoJvwaZA4IAcf1T+j/3RPRp8cTuOey76VbnIOUb40Phj9/Q3S3cpdo92QnY3das1a7UEtT001LUydRZ1QrW6dY02NDZc9vk3HHeaOCa4iPl/ue46mDtVfCu8xX3RfpB/SYAIwMfBhAJuAstDrUQNhOiFQQYJBr+G8MdYB/cIBkiFyP4I7ckXiXjJTYmaSZlJj0m3SVBJXEkYCMmIrcgJh98Ha4byBm9F6kVhhM7EcUOSAy3CQ8HVgSqASP/gPzk+W73NPUC893wxO7I7OvqKumu50Tm9eS646biseH84F/gtt9E3wDf9N4U31Xfj9/5357glOGu4t7jIOV65gPomemY65Ptde+O8bPz9vVV+Mf6Pv2q/xcCjgTZBiUJRgs7DSYP7xDIEnYU+RV4F6gYshmkGnQbIBxtHIIcfBxaHCwc3BtqG8Ya6hkSGSUYBxeYFfgTThKCELAOuQzUCtoIAAdLBVgDkQHJ/979H/xn+qT42fYn9ZbzWfIc8fDv8u4R7jftlewo7JTrEuue6lvqOepC6kfqZOrr6l3rAuzI7HHtQO4U7/jvC/E/8lXzfvTK9SL3pPgj+pP7Av1y/tX/OAGbAuEDFQVGBnUHrwjiCe0K3Qu2DHQNIQ7KDkAPnQ/ZD/8PHxA1EDUQChD2D50PQA/eDm4O7g0jDXUMsAvcChUKNQlRCFgHfAatBbcExwPFArMBxgD8/xL/Mf55/ab8APxg+6P6BvqB+Qj5kfgs+M/3lfdq90j3Rfc89033Xvdy97X3Bfhb+KT45vhH+aj5G/qV+gf7gvv9+3v8G/2b/R3+pf4g/6P/KwCtAA4BgAHqAUICmwLkAh4DWAN2A6UDxwPYA/cD+gMLBAsECwQGBO4DzwOeA2YDJgPwAr0CeQJCAg8C1QGZAWYBMwH9AMsAmABlACsAAADd/6b/iP9r/z3/I/8S//D+2/7l/tv+2/7l/uX+6P4D/wb/Cv8j/yj/Pf9a/3D/fP+e/8P/4v8HACsAQwBlAH4AmwDDANcA8QATATABOAFXAWwBZgF8AYABdwGMAYABhQGAAW8BhQF0AXQBbAFXAUEBLAEkAQUB6ADDAKkAkACCAHYAWQA6ABgAAADz/93/wP+v/57/gf94/2T/U/9F/zX/IP8b/xv/Df8G/wr/Df8K/yD/G/8g/yv/Mf84/0X/Tv9d/2v/gf+Z/6b/t//M/+7/9v8AABAAIQBAAEMASwBdAH4AggB7AJMAoACkAKkArQCtALUAsACpAKkAqQCbAJMAjACCAH4AdgBlAFAASwBAADcAKwAdAA0AAAD2/+n/3f/M/8P/tP+v/6P/lv+N/4H/hf9z/3j/eP94/3j/cP9z/3j/gf98/3z/hf+I/43/jf+e/57/qv+0/6//wP/D/8P/yf/V/9j/2P/p//P/9v/8/wAAAAAHAAAAAAANAAQADQANAA0ABAANAA0AAAAAAP//BwAAAP/////2/+7/8//p/+b/5v/i/+L/2P/i/9X/zP/R/9X/yf/A/8P/w//J/8D/yf/R/9H/1f/Y/93/3f/p/+n/6f/8////AAAHAA0ABAAQABUAGAAmACsAKwAyADoAOgBAAEAASABDAFkAUABZADoAGABgAIcAwwC4AJMAdgBDAEAAUABlAGgAVABAACsAMgA6ACYAOgAuACYAGAAAAPP/4v/m/93/5v8AAAAA/f/8/+b/3f/J/8z/yf/A/8n/u//M/8n/2P/z/93/7v/u/+L/0f/D/9j/w//R/+b/4v/2//P///8HAAQABAD2//b//P/u////AAAEAB0AFQAhACYAIQAmAB0AHQAYABgAIQAdABgALgAuAEsAMgBQADcAQwA3ACsANwAYADoADQBZAA0AaAAHAGgABABQABAAEABgAHz/WQheCqoIHgqmCp8LrgdfB5QHIwj3CCUJhQkXCVYICwk9EOUPNgx/D1MOgwwKCywLjQ1nDuoP3g4PDeoJ6AebB64HoQhkCeMKNgx0Da0OJg+vDYYM/gr5CsYKQgzoDMoOTQ/vEDwewB5SIygoqCGPH7Ebmxy0HKQftiKaI38iJRyRFqcQ+wubB+EG+ggyCq4KUAzgCgAHcAKI/rP9jPyq/3wC4gj/D1MOrgoPB3oELwO9Ak8ERgYbBksF+AKI/+T5S/R78onxjPLa89r0wPUG9T/0ZfJb8QPxGfDZ8Rr1LPiU+QL4n/ZC9o31FfWy9R/4o/qw+8P6q/g+9nnzRvMj9cr1+vU09V7z6PJI8uDwJ/D68C7yAvMS9Vb12vRT9DjzVfOJ8arwC/F48eHxlfBA8NjuJu2f7NHq5+qN64frdOzg67Xr0eoL6kLq5unf6gHr6uzQ7hbuIu7R7OHs5e1c7aDt5e0n7h3tm+oG6tLr3+0j8Prw2PCc8ErxP/RA9bT0p/Ml9D/35vjE+OX3hvaf9lv4Z/qG+9D59Php+Qz5fPjr+PX5tPuR/UD8EvrM+Ob43/nj+6z+pv8VAI3/5v04/ff9pv9AAOMA9ADu/zcAK/9A/BT7Zfxo/QP/AAEG/2L8G/1d/5b/IQAuAKf9XP0o/yQBnv/f/ssAxgDXAMz/6ACSBBQEqQAo/7wB5AOFAUEBqAL2/2r+uAFzBc4C5fyH/IcAMQTkA84AlP6R/dv++AIfBvgCmf/0AMsCuAJKAn8DdwGI/xAEfAY8AU/7xfu4AiYIKgTU+vb3QP/HA7cEEggDAuz29vdsBqoNZQVi/Kj5wv6EA2YBn/1t/q4BvgAdAEn/Mfn8+akAOwO6/i759vza/dP+MAHQ/p7/D/2H/BgADgEAAHr7nf7oArgAkAAVAD3/RP5X/Xr+yf1s+xv63/5sBAX9YvUv9yL+GwEb//T9Wf6SBAMHw/+z+Az5/vxCBIULTgiX+2z0hvtlBfkHcAKg/DIAbQeoA7L82ftU/J/9rQBcAlT8BPfM+Bj9+QAEAFn+Yf4eAZoE0wLEAW3+evko+2v97f7L/tn7WvUu8kH9YgPQ/JD68QBeBgUBFPv7/DYCTwS+AFP/t/+I/qz53frxA+oBQPzm/TcFYgj0ANb7C/vfArEMNgfm/1z+pf4VAHcBPAUXAmf/SgJ1BDkJPgT9AN0IugrUAxL/uwgBDWQExQK4AWUAzAMtB48HXf+N+q0AugroDNL9bPbvBiwSEwav+G3+2QYNBXwGdQSf+2T2vPsZB90Gtv5I+tIAoQVj/Xr7AgSgB2QCP/4U/jz8Rv0nAcsAS/3D/Kn+tv4J/v/6QPo4A08LswbM/x/8xfsDArUHHwlIAGX3Vfl0AaYK1wBz9Rz7AAWFC1gCCPlt+WQCdA16CbUCW/jo+eAKdQk8AZb9PwK1BaQAVgg6C5AA6foAAMcG6wLE/VoBhgfDBQX+aftJ/7wBLQT5Cq8IDPzf+cEEjArXAET5pADHCJ8EDPxL/cQB7wGTAJ/9Tvq0+Y3/3gn7C/78sPGq//AMTwZQ/ij/tQKMAV4BSAXwAqP6xPP7+F8HSwXA9Tb0oQPtCiL83vOW/bQEYQWMBQcG6Pzu85AAaw2tBcv3m/R4/2QE6AKtAFr6DP0eA+gHXgYF/XP82v2CAFAH6AWNBgMCUPxk/0D/2gLu/7gBzAj9Bb4AVfhc/QQFbgWXCXwG8QDT/DD97wYkBpsCWv/L97P9NQRRA5f7MPi6/m4F6wxDBSP1U/TuAzkPhQsE/JjwAACeDbQEKvka9Xj3CwS+DpT+s+zS9kUIfQvzBEP7Efd0AYsIHwQx/2L6GfZd+h4Itghv+Kny0vs+BCIHtv7X+WL8ggCHBR3+zwNZCn4FiQRI/Br8RwLLB6AHDPcd8vb6awN9CR4BiPr2/EoCJwauBqMJsQX7/AX+1AU2B5gCzPq0+f0ALAKK/Xn4X/23BOMFLAjD/375zgAnBqIBsvfS+4UETfx98U/5zQm5B931XvPkAaMHp/up8oz8EQpPBkz14PAv910ASQuOCRn5TuU76zwFOQ8qA4bxI/WAARQEsgNkBB8E2v0T/a0FugW8+Ef+BQyJBPD0N/BKAqYPagoN+mTvSAAMEbER7giz+HDwIQAlGAgWHf778wr/qQqeCKT9c/yaBF0Fcf2F+MT46wDyCy4Pgglz/H75sQV9ELgLBf6s+YD9fANSBnkCsvwZ+VD8NwD2/+P77PtJBvkFR/k99aT45/sx/nP8bfk59tjwl+/w9yEA2/lW9UP7iv1ZAC8IDQ5uAyb3uvwGCTALnf5k+3wB3/569fPxQ/voAtUEbwGu9xn0avwYEPEa0wzK+2v6xQm8EKcGbgPoAHYAagVAA6cB8P6kAAkFCQqLEXoEMf5JC8AQpgrzBPAJJwa4AUoCGvzZ/Bf/ogFHAuP7a/jL/FcL6Q0WATL7s/2+AJADYQXu/yD0b+5F973+T/vR7CHrvP2MAEnzLu+O+Mr5ZPbH/kEB9PPJ6jL2FgYr/13wa+6b+fMCPfpA8HPwtv5sCc4CA/s+9vD5igLLDAoSrftq7U0BkxMAETD9e/c0CDsR6Aw3APT7iAixER4YHBC7+ib8thH6ImUVo/t6+0IMUBuxEUADzQRDA68DMwwkFYwK2/kQBCUTJBIyBeL/ZwmICDwBh/3i/24D+/xA+sD6D/il9Fn3w/8P/Tb2KvVS+Jj8IfsL9gr10/T78T31NfOH62Xto/HZ8fbsXO1N90j6kPUD6unp+PnD/Gr35+9s8fX0oPI//rsDA/ts78rwBQNpB3v3iO6l/hAJq/wC+KMCUAxRCt8H5wkSCM0JFxIUF1QTPQtCDeISRhAqE7YTKxHEDcUJFgyjDgYU4xD6CHEJxAjkB2gLDQ6CC3MFvgOiBtYMZw+ZCLYDSQPcBaoGagVzAGL31/dj/UT5/fBI8iD6ef3I9wDylfEg9Fj01/I3/Gj9R+/j6HfrufFC9gr4QPDZ4rnh3+Xp7gr4WfJF5aTjyO5c8gHwa/V8+A3zifHi9mf6VvrOAjALpQOE9U/5KxTsHYMRkggbBg0OAhlwF38P4w5HE/0OOA3wErAQIRPxGkQbbRHHDPQVdhpgGsEV9w0iDP4KXAznDnUM/gcjAzQDAwc0CJoJnwbjANX/LAGoA8cDaABi/Ef7W/ww/D36svWp8p3yiPOF83ntz+go6k7vq/PY7onn/ONm5Bjok+2N6pvgM99L45DmPufv5ynoCOZw7EPy5u7+7qvx0Phr/WL6j/li/NkBbQdGC7gG/P8xBEgRixp9FYILJQyBFxUfVxptFtcakx/qIHAcThk8G+kdQiGHHfcSTw6gEUAYkBiwEAoL8gYsCAgOkg16CQAHQAiiCwAMUQqiBswD+gNtANn8PvvT+Yv5I/im9pnz/fJA81vx0fFb8e7z3fDg5q7ineT+7NbsluOi2SDVeNut3ynh09+V1gTTfNtv5FvnyeO54Y3lVu+F+FX4m/jd/EADEQr9DmUQqAkPDAwa9xxHGGQSxxFmGJQbwB5GHL0VBhS2GE0lrCbxHfIZcRpDH0kixSFUHaMXkxVQFpQWCBPFDggOAg5JC4YHNwV8BosIbghdBf4BbAFvAYABx/7w+d31xfR5+BH39e8x6ETmwPBp9MLqtOCe3qTjj+Tz4lndxdKVzWXT7dpT1bPKgM0M2FPbMN1p4RLlW+eT7Zf5Cf5i+hT5iAOuD8cN9wgfCRcONBReFuQWKxQ2E0IXQx0zIOMc8hsNHyskbSZXJbwlWSS4JcAmRCWFJYwkMiTHIksh8R9AHSwczhoXF1cSZw/wDHYKfwjgBawC/v6H/GL6I/r2+rH54Pd+9MTzR/QR9JHzTu8N60vlueGh4mjg8No304nN2c0Yz87J7sHTwr7J58t5yfXKS9DV1unf9eTW5pfqFPIS/KcBAAWuBgkKiw5sEL4TdhTWE+0UHhgwGTMWgxjrGjoaOBvnHG4f1B8PIQAkbyXmJWUmVypiLKcqESsoLQQumSwBLMYpYSYDJvkkfyJ2HfcXTRQTEM0LxAb/A1MCXP1k+Y742fZc9Jv01/SB8drtv+538DjuDes358bjseHY3yLdptazz4bLw8izxLm9Sbe5uKjCGsgWxVbBZsUY1BLinecL55rny+1P+YoHDwyCBZ4DJQxLFeQYbhiLE2ERcBWrGUMa1RU4Ei0TDxeSGcUXohaSF4wb+iAvImgh4SJCKIQuJDFvLksroC2TMh01mTG5K68nZSYeJ9Ej8R3kFo0Q8A4/DIUGjf+f+0P7x/kb+AXzY+7J7ybypvEQ7e3pG+rI6dDnn+MA39PaLdl416zQrcdFwWC/br0WtsqxmLuzxCm/KruUxdjRL9ZQ37Doy+e57GT5kAPqBl8I1Q0VD0kSFRhFGYwZCheFF2wZ6xcFFsoTzRWfFWcSUBOEFBgV2RSjFzEc/ByhHeMfdiS2J94qpC5vLpsvUDBQMIYycTLoMJUsLSg9JhMjLCETHsgXKhPeDqkKoQh7Bc4AjPzQ+H/3o/ba9PTyj+9U7TnsIOrs6AzowuTX3vfZxdff1fzQzsmaw/a8WLj4s8msJbEnwL/DK7kutl/GXdaW3tDnFOqC5qXuFATjECoMMglZD4oVwhiwGhQcjhq5GIYY/hbxFG4TPRXHFpQRogvVC/kRxBYkFcwSthOuFiwcLyJ+JFgjECQNKTQu9zHlM3oyvC89L3wx6zERLt4oZSRHIW8ewRqlFgESkg2LCcYFLAKP/kj8uvlC9izzafCo7w3wq+4b6Xfk0OT24tfetNqB1Z7QKMuBxgHBQ7nPsvWrWKxUuTq/2LcYtam+bMu108HeOOn+567pivgdB/4M8w2DEYUV/BVoGgAhXyFzHToafRn+GDoXYBUBFEwRpw0WDPcLywx3DfAONBKYEZgRhReHHQEiDSQ1JVgooiyXMmI29TVqMycxyjIiNTAzIS3fJkojbSFZH7wZ4hIyDjkKWAfDA6r/VPwj+Hf1GPOI8BDxL/Bl66TmwOVl5hvj7d0m2EXSjc8tzS/GeruAs7evP6rxqJS268Fft6Sqabbqz3faftrV4C/m7uoD+XMKmBAHC1YNvxnoH/kf8iACIwEibx4tHukdYBqlFv8UShMUDnMKUguYDKoL5wkCC04NfRAdFSIYmBozHWIizSjTK1QuSTFpNVk5DjjBNNQzCTU1NMEv7SkXI10f+B4HHHwU5gvTB3cG7wSUAU76evTI8lnyxPGB7w7s0ui8547nUuQX4NbciNl21ebPP8rjxE6/W7i0saCstqZUrQHCScVUsqmqcsDg2xDj1uFb4pPjZfBfB2kWiBH5B/EPQx/QJaolVCQNIn0e4x/1IosfQRk9FXYUZhE/DMkLkQy4CyUJfgfDCjUOYRH/FL8W4BivHAkjFSlRLL8u6zCzNGE3eDbCNYw1VzSxMJwswilBJQ8h5xzpFiIRDAyqCHYFdgD/+qr1yPIA8mLwmO2q6TvmX+VC5RPjXN5v2arWLdTdz1zJxcF0vMi4N7SXrEWnPLRfxrO/Aa0ur+/IWd3w3yLfnd0o4oj16gqnEEkIRwcUEw0fgCWRJSMi8iCSIWAj7yN0IA8cbhjtFuUSxQ5IDxUP9QzaCBsIogvnDuQRDxLMEvUWHRweIt0lOyhYK6kuKTSqNsk05TNVNVM2vjK6LtYr4SetJEQgJBrFE9sOigvSBmYBZPvx9W/z4PAW7qXrOuj341ThpOGl30zbPNiz1JfQH80AygLEJLzztzW1F65/qI+0PsepwFCsk687yRrb/dwM3VTcA99W8eoGAQ2YBSMD8w7SHEIjJSMpIdUgJSGOIykmDSR4Hn4amhnVFlQTOxNXEpoOBwtSC90Nbw+IERcSMRJPFSQamx/PIiYkqCYgK2Yw8zGeMXA0GTfUM7ouGTAEMlMt2ia9ISMdehisFTgSOQkWAcH9T/vt9wnykezV6Z3n/uQ34lbgn9yO15DWSdZi0VXKicbRxA3AH7nGsb+rca02u7vG/LpvqZqzjc/R27jWpdWU2hfiOPMqBLAEV/2GAt0SRhwzHQke/R+xIaEixiS8JSUjPCAGHmgcHBmKFcYVghUMEVgMrgwYEB0R6xDAEBERPBSaGW8ehSCxIa0kTio0Md4yFjCYMEM0RTaONGsxdi6PK6EpqCYPIQobwRVQEVENzgfxABn7N/eA86LugepW58HjU+Ds3EvZQNbP013RrczWxozDm8EevYC1qa9ArWWvJLxmxTy50Kujt+nRK93I18rVftrA5Yz3gwLkAdD+WwROEtUbQh7hHY4eCCLRI74k4yW3JNMhfR6KHI4aBhkmGYgWdxECDoQPsBPwEygSkxBtEboWtxtPH+MfEB+oIyArjzCGMBwtKy4IMnY0rzN9L5gr4ClUKZsmmSCTGjgWOBJWDcYHlAHn+/v3hfOr7vTqH+c642/fsdzl2BvU4tKc0VjMQsZbwgHBUb6aub60o65xr3G94MeCvRivdbiK0Fbb5dje1+7ZnOHX8tUB5AGT+6AArg9OGZQbKBwEHXYfpSKdJXkmISQeInkhJyBUHTgbnRtXGtsVVxK0Eg8VmxWMFC0TUBNmFv8ZyBxCHhUfOyJaJ6Aryys1KuksgzBQMMguYC3cK/kpQijZJTwgnxolGNQULg/uCNMCtv4v++D1c/CA7O/oOOSB4BDes9lk1cHSu8+0y+zH9MSMwFO8p7rHtxaySK8JuR/Far7Psi653MqG1SXVEtb72djfbe30+BX8N/wK/6MJERQ2GDwZYBrzHlgiQCRYJvQkcCNCIxMjZSGoHoEelhw0GTsYcBeBF+QWOxZmFo4VyBdgGi4bLx0fHhEgKyTMJ/AoCScxKI0sGi6NLAcqxSirKP8nTSXVIJscEhleFr0S9QxCBx0COP5a+rH09e9j7ArptuTe3o3bJ9qG1+jTz875yQXI0cZvw1C9KLjmtQm0wbhzw0O/D7E+tmvKudKzzSzPCNfX2izlUvNz9drzKvk1BCEODxKdFAEXJBu/IFUiQCTfJsklNSRqJBElTyM6IR0hjh6YGgwaHRzxGk4XGxcIGIMYohm+GoIcbh2vHl8h0SNLJpgmBSdDKXYpXincKWEpkScOJQkkIyITHkgalBaVEgIOvgllBQcAo/oT9jDzpe616GvlpOGf3LvZf9hO1SbOs8lEyuXIY8TqvpS7J7rdt7m7YsMgv7m2FL3Jyc3NEM7N0o7Xydm64gbv1/Kr89P3w//ECCMNPxGbFSAXfhrAHqUijCQ0I+ojoSTAI7AjqCN1I1ogpR11HkUeQB0dHGEb/BouGvIbix3kHZoeiR5QIdsjiyMRJXkmWicsJ+olQSceJ28lcSQpIYEeeBxvGfkWARKRDFgJHQWbAAz8oPcu9JbuVupX6N7jqd9s3BjZ9dUT0oDPZ80vyg/IRMWVwcO+VrxGvyXGIsVivOu8ccla0VPQINCW1NXZT+Ex6n/tpe6z85/7/AKmBQIJ5Q8lEwgWqxlWG+QdHSFnI9Yhuh8eInAjyCM5IyEfIx50IEchmB87HcwdhB7PHcUe1B85IIoh+SEAIckhkCTEJb4kYyM0I4sjjiN4I9UgvRxBG4UachjNFBwQhgzlCFAFJQLS/d/5BvYJ8szuL+uH6Nbl/+B53vbdrNqe1hLU8dPZ0g7PSs3Gyw7KEcpGyeDHA8tSzcHJecut0b/Uf9PC1dTdfOAv4dbm0ewe8ObztfeM/LgCowcuCtoLzRBPFSAXTxrHG7obXx7NIBYieyBuH0kifyKJIAogxCDnIbAfQB3LH4kgZR+hHyYf5R4XHjUf5CEzIDsdFh3lHrAfFh2CGnMZFxlyGMEVVBMuEQIO3AqyCMsFvgD+/kX8lPkg9Qru++4G7xjt2+Zg47PjPuPt4nTe0N/03JvaP9qm22nc7NdO1YXUGdrn1YzTbdrC2t/VPdbn3MngNuHZ4JfmEOhn57PsqfL69S/1m/ip/kQBxwFOCB8P1g7zDpsQDBVUGDAZvxtzHWcZ5BiSHqIgKB7uGT0cdh+lHaobjRwQHd4ZKhpAHdIcohkEGNcaBRsqGKoX4RZ9GSAXbRGvEqkRkhITELYI/gqmCggD/QACBFMCEfex9O7/1Pqt6yDsCvWd80btO+YK6SLuiedd6f7kT+hS5HLdTO116lPbRduQ6ynohtzj3uvlV+gL3Krgpevy5Orid+vE7E7l6Oii7hX1Dfob7ibyfAGX/q37LAIyCqkFbgNRD/YU6BE1CWQTeBzVFXoTvBQQHRQXOhXIHp0bpRHrEIMb+BlAE9MRDhRVFkgMbRWTFaMJ6Ay5DE0PjglvD7wE+AQfC5D/QwNDCvsEuvQBBmUAGvw7/uX8a/ht+aUDY+xA9f4Bp/jy5Ij1fv5A6/zvP/Qc7xXrDe6M7i32XO0o53rmxO7z8UPtPuxi5ijsiPAn7vLphvRY9AXuRfCw9lP0f/VT/6P7IfYj9UsHx/7H/sUC/v7SCTUEtw33BoIG+gOpBSsUMxGtDub/mQ0XDk4IYBWUDJ0K9QyQCj0LihX6BsUJJhQZB40GfgVgGAAPZ/+LA+gMBAqB/zALUgYyBcL+fgDSCf4BJgPP+wwCbAS5+//4dgByDCbtyvtBBmv9/Pls8S4KF/p28qj5dQyZ8zHoBQza/SX0/fL2+lQAx/4U7xT5i/5V86T9K/8R9/3yKv41+Bf/kf3P90763/ugB7r+DPJzAN4JWfc2ByMDXPm8/RYMfAZ17/wQvgD6BiYAA/vxD6kAogSj+wkN8gFKBFv8swbODOjwcwiYCvED2fxn+jQDOBYG9Zb/4gTDAwQF0PPjDkMFP/7p9ToL7gMdANP52ANLBc39//+K+M8KR/slDNjr4wqMCmXwqAdI/PMHsf7oBfzoVQzhDPT4SQNK8SoOywKQ+in47g35DF3m9vw5Hlz9ru6K+LwQ9hTZ5WH+ow4hDmHkH/w2Id3/U/Rh6pEbDgo29Jf5MAbyC8X0Xvz4CaMOhPDY9XoOoAdi+rD2JgjHDUz2gPNk/tQUJQfY5JX6LhGfCYXuHPbYFtT6nuWgDDQUSf9B7E0BrQDi/5oOkPUm/IkEbgi98isFhQRL9MYP0v0s+Nf3SBW4AArwZw5L+FL9PwJmDIoCPO6YBcwPR/707b0HRhAmAFD35/ulDO/91PpQBTkUmPIY6HgZfAbd/H/3OQR3AbUAKQd/7Q8NzQvI9w/q3AzbE63y+vp1ApUNZe0D+vAOrgosBqblmPW+GqMJIebY/1kWyPLM8/MJxAG+AyP4p/jEDRH52fHrEiD/wfFtAmT+XAew8aoLeP8K8FkPz/BdDuf2ZPY4Eu/xywpY9G4IkwWx6qoNXQWECCTsE/gNDhYRE/YM7V4LWQU/An/3rvfODLkThN1BAc0QUAV/7X7+uCE38invFPkmJHv6wuo++38YCQ+66GPuMAtlIT/d/Qm8EM/tD/2I//8PKQtu5sr0zCLX+LPu0gYjBcsHz/tD7ZQWpf7I6VcSIQ5P+U3uzQu6/FwMQPwL8SIWP/dUAJX6E/EPIa4Gk9ekEwsJjfCmCB4IafuI9XYKo/vCBzgDKu4m/B0cfAP/2+oGnQ8HAJXwihBaAcXchQS9IWEMf8wr/wkeFwLi6tv5aBBzA8f57+esEMoT8uQo7N4jBgnS4cLvSRdQESX0leywBKobivTq7OP7OSN0+9f5TPXI94sYRP5QBfvx/hHw9EzwkBiyCNf9a+l2D8MPgu1tAm/zGxJ1Fy/g8gHk9A4ULwPC+e8GQPCjCXfweg6TCqj0DfOTE5gAG+rX/RERYA5f5XQGaACH/QTwWRRKDonlnwkv92gGnvgU+wgW9vaB+RvzAgQ1CxL8cAKx738Y4e6B8Y0SyPexIU3TBf0qGrgBJvyM1XwdTxWZAeXWPAX4E2X12Qrn9BwJS/mu7lYPAR0F2RL8qgsBEnf5EOg6F4ftKB5L+IHxSQ0U/rv6lQjtFiDsKvByB5IcBPIt8WUHlxOR81bx5BZ39YULnu/5BegQZfJO/Wz0kxMmA2UHMu0f83MZBfNaBuEBvPuB/131EASG+8QRWv9X43MKlQ028ZXwmg4ZEWry1uoZDGQJuvze7CMDZBzv+Pz5gOxNCmEPfvTR/xUFrhFj45Hz4hkjD2L10N2KFxQXne5x8g0FGBNv/DDzZwSjBz/3VPwbDesMgfQP4FIVchi57P73rQCEFA/4tukYEFoLGvIV9cQL0wx5/Tzibgh2Gsf6j+hI8l82zeyi0bgcWwk0D07jtOVfIaATMeXm5LopPApt2oH6wBACFXHooeK5J/kAn+xO/bn2ORk7A2X3eOyXCX4HrfUUF9Tw0gBv/Lr56BB8/7L8wu/LCtYMTP5t7VAA2BYp8gX+vgX6BonxrfXYFmgQGOqU39Yh2BGy6xjzs/0mHUX6w9sOFr8W/Ojn70sQlxOW6b3yKxb8/dX/5O+4ALofhuxy+a78qgvhA2r8Tv3F9P8PR/v2/4j+Pwz+903uhQsJDSMFTecX/6EYpwHl7OT0jhrR/73ylxPS+5X3o/G4Fa4PF/EKBi7v4A/xAFT3bgqe9eISCe0bAZYc9esmAHkCHf42DHUMCOam+sUey/dE+QwCJQlvBgr1fwMuAHr1dhTqCvrwtPuM9xMQfBIQ4WT/ix/E7iD/V/u+DkH9E+PtJbD2BwaG8Vn3nhLa74YcZesT8bALSwVgBF7nJg+CAEj6gAGF7kkSOPrd8GUKBQPo9zD4U/GnHET+9+PTDjfn6RjUA/flOwNBBhX8o/ZRCpz7hvuEA436VfP/GQny3PK+E/32lv27A/0AifaY9zYckfj+6WkTtPQAB1QAX/1L/Z8GkgRI8IP+RhBXEIDeXQPODEAFrfL3+PIgtPlE6y/7gRJyEZ/shekUHPoXBuD8720ajQus9PPnjRyvFxvg1vG+DlEY+Puu5/4BXR9x9s/t+QWcEQH1cAIg/S39ZhvJ3toCYhQv+5n60P4xAs0JDPnA8PwVewVy7vz5KgxsAdIAzvb9BeIIbfn/+l4BXRMc9DfyEQ+fC4jzyPdKDmH5sf4iERX1gfo9+N0SDQ676tr9E/2vF273VPd7D+350PhUAHUYXO0A/FwHWvDgE/D+kP987tzyxBtEEUX1leBr/6YUWA4k7NH67wv+94X/sggJBVzvA/bgCnUYUvNK8TIAG/8CDnr79wbR7KP7BhTFBDnxQP9kE1PqG/+lDH0VBuWW7h0Wtw+g/CHhFBLTB3v6lPmZA30LOP2H67cE/w3L/lv7ePbnCQz8qAODAnr7Y/PiCOYXlvNH6ncGyQtH/hn2kgg2Aqz0FQq57/8NhwBW8agJ1APvAUL22/kkAYwW2QF28o/trxmOGhPZHPuKFwYNQ+2l+bAO1PqM/Bv/7g3MA0btGfuUDBYIiAOu7BX3tRW4Bv73Cu4zB8ETHPku774DTwn8+bMBOP6W/Q0IDfUg/+oJu/rT/Pv8lQhYAyfrHQCNEnP8svX+/tQIn/ZQ/okKPv3e+NH/qAQ8Cvz9DeveEFX+4AWq/9/vHA5t/lr/PgTX/cnzQhLRBBjzuAC1AqEIfP/5BXP1OPqFCfcI9vXY+qgYNu9O710DJQzuDazlRvhJElEKffHS67QSPwcM/FX+2vQSDbT/vf7X+KP74hQc9Oz7GvzDAy4RPfMb+J8BogtYB2Dtlv8IGBP4vOdtBwYUYgiN6ofy8RqG++XybQJJ//gOFfdc9PsErgcqBHvpa/1fFzECxu1p9mYIBwAbA7L8f/cwC+355Pmz+nYDZRCV8un1sAD+B/oG4Ov08nYa7gjE7CX0ZQDqDxP9vP0Z/mj91f/w9+gHCwSB+S7+5gZw9Q8CXgaf9s0G1wBCAjz8/v77/AYEZQcK+KkFvP1n/6b8/gHoBZb4egSW/cz48wRvBGUAC/vFAgAKRfGD/v8PMP1v/FD+fAMfBCj/PPyz+CMIZgh49/v8cfvVBLkHOfZZ9zMBrQ5Z/s3xIQAWBiMD5v3W+3sAuAGuAdMHwfi5/W4DIAJ1DEf5S/k0AwYJLAHz+qgDEABUAET+uwNAAKQAVv+kABYGQABQBdf5JPt5C5gFaP2/Ae38tPv6AyQEm/2r9nQGVgoo9jf8ggYJ/rr+NQTjBdj+PPzS+8UEsgNc/c0EH/iR/WYDDPwsAmQCVvrk+Q3/xgD9+2gAGf5I+i0Ex/pE+T3/QAC9/l/9LgDS/QX4RAHLBRz7lP4U/sMA5f7D/PEAMP2+A/T7p/1+Bf78+vo9/4wKo//a+BT+kQaYAHv6dgAOASoJ4fgr/A0DiQZx/cL5bgp5/agCG/h8A2QJ3vgTAY79bgju/1r6wv4ABV8IR/lr/+gC5AEdAo/+WwQeA/b60v0XAoIGXvzjAIUG7/1cAmP9xgcx/tYCLgo1/f0AgfqOBJb/2P87A+7/pAC0+2f/s/1HBJn/cf2XBIj/0f/2/P78sQKW/0kDjPxb+I4EFQAv+hf6JAG9AqD83frm+h4DZgGq98f6dQLH/vP2fv57ANr9dP3w+YX/A/+GAsP8g/wABXv6Hf6HACUCSQFF/H8D5fxi/PgEEwHzBDYC4f1JAw0FbQJO/3IHUwfuAzABHwTECLECCQXzBAoLcgf9AGYIbQdzCHwDwwNRCicGJwGoA9cFU//J/eX+eQKJAWP4KvWJ9jH5hfgT8zDxIO9V7jLtk+jW7Bvqf+ub6mHpP+gm4zzuC+wE7b3vAfCP8nnzvfQp96P/nf4dAtgD3QZKCQ8Hiww4EpATDxAmFBcXTBYEGCoaFBwWHVseWx6LHxgfHyChIhMjXyGaHoMdtx6lHVIawhhMGKUWIhFkDhsNqA4tCagDBQPY+tz3afZT9k3uCOZE5CDe5NpM1s3Sws8/ylvHmsgBzHHMmsMPxrvRgdUJ09zOU9pF4LPem+B+43rrF+ym7FDyAfUn9Sb3b/yqAcUCzgKiBh8Liw7AEAEUSxpvHpoeziHIKCUt7C18MZo4fjo4Ong9jz68Pa4/Z0LfQBI9zjtfOzQ46zSxMsMuUCvhJ2kisBrBEyURVRGSDQ0D8/o0+vD5QfFc6OLlpOEI2pbU59CbxnG9s7rWtryuz6Y/r7m7WrfOrJytJLz/w0PC8cfi0mTVotQ/2gbgQ+HL5J7vkPUi873ypPcV/Fr/+gNQB7sIywoRD3IRCBP+GIIfEyO5JiwqHiztLoU0ajqhPDQ90D9CQrxCcUPCRQtHh0MUQPlA+T7dODY1KTQbMeYqFSavIoYcERY/EV4LFgYLBLf/ZPYl76Xr1uaB4ATccNb2zbjGcMGxu5myq6wvqHehy6bWs5S2W6zXqlC70MWZxerKhNbR28Pb2N855Sjl2+ZK8Xz4QvY/9Hn4DP1E/rgAqAQzB9YJbg05D7UQPRVWG5EgFiVhKS8snS5ZM6E3djkWPIg/DUFHQA9AIUGsQMZAdUJXQCg7iTjWNwM1SzCTLYgscSgXIxgffhrNFe8QigveBGv98Pmm9pPtaeZa5G/fwddx0h7OlMeev3m6nrXRrFeljKH3p+e4br1ns7KyF8F6zLTL5dHK4XLkPeAe5i/rcebF5QnyZPuw9gLzPfiZ+nr5nfyRAe4DFga3CuUNIQ5VEagYWR+MJAkpWizULqMx5jTTNzM6aTwpPsE+Qj1TO547oTyqPKM70jmxN7M0wDFPL8wsjytsKi8niyJiHQIZJBX/D6gJhgKr/Hf5hfN76aTjT+HH2krSRc0hyQHBQ7hltKKwdafeoLyp1bzGv2CzprdSyhvP18ma1HHmlOTU3cfmNOw04p7gAfAC+DfwCu659uj3vfLu9Uf+0AE6AiIH6Q0aD2cPeRUdH/IlSijoKzgxzzKcMt81GToHO0U78z2kPic69DcSO/08yTsmOXo3STY0M7YwRi94LScs0CryJ9Qi3RwCGXkVdg87CHYAcPps9uvvGud44Avc1daIz1/II8OevLu197CgquWiMKShtKPBLrvcti7E1840zDjPuN7Y5BHf9eF56N3iddzC5F3wku8C7HTxrfUU8kXxRfcY/bT/QgSRDIIQRhC2EwUbVSJiJycscDGVM3MzJDSMNWE3ZTlLO9M8EDxgOaQ34ja0Nvc2uzbLNfsz7jEAMOMtQiwdK6EpTCe3I7ceIxmGE9oNxgfXAOT5sfRA8CLpaeF43ILXFtHmyjzFir/euOmyZq2BpxWqnLgCwwPAfb4jyNXP9s3H0aXfjOT93yLif+Ya4srcB+Mu7W3toetg8fj0T/Hn7xL1Gfv0/awCPQuJD/YPuRNXGtsfyCNqKcEvrzG2MMAxNzPBMswzdTeFOUU4Mzf6Nrg0YDK2Mt0zczPzMRIxFjBgLSQqKykEKWEmHCORICUcZRWMD7oKZASY/J/26fMg75Dm/d9U3AjXzc81yvXFEcBhuUi0q66uq/K1aMTrxP3Az8ee0IXPvs5Q2gfjj9/c34HluuNv3Rnf0Of06nvpZu6G9MHyde998fP2lfqR/UgFuQytDkYQcBUrG9EeFiLzKMgu+C0jLvIwATFXL20wADVMN1A1qDRyNREz+y+nL9wwhjDcLqQuZy4GLFQpfyc9Jh0kDyGoHgAbTxVeD7cJ3QMY/Qz3xPM38BvqCuRv31nandNgzeLIssPWvcG4SrPpslS9tMaixcLFE82Q0Y3PYNLF3EngeN0v4ETk7OEp3hzhF+dj6CfpKe9N80/xwu9x8sH2CPlq/OQDJgrHDIwPDhR1GNAbWiAgJmUpfSp/LB8u0y2GLcMu9TC+Mm8zBjOxMqMx8S6oLY4tIS3pLLIslSzeKtgnXCa6JDQiPCAcHjwbARd+Ea4MsQeZATP8mPcc9D3w1uom5i/h7doU1dDPs8qMxYzAAbzcuSm/8cf5yd/JJs6l0WLRhtLV2XrfCt5g3v3hZ+Ib4Czg9+P65jHodOxB8WnxFfDx8CX0DPcD+SL+xQT3CN0LHw8IE14WShk0HlsjbyW9JkgpuCpBKgoqGyw3LpUuky/CMAgwHy5mLJQraCoEKaEppyrPKdgn1SUYJOshPx+cHRccHBllFYMRYg1FCIoCBf4X+hn2dvL+7gTrnuV63/vZs9RSz5DKA8YOw7/F38u1zh/PztAw0n/RPtIV2Dfdk9xU3D/ftOB63+PeKeGH4zbloulJ7jHvb+4G72DxaPPC9E74wf1kAgcGOQlpDHYPGxJtFUEZPRwQH24iHyUlJkgmDyeSKLcp1SpRLDYt9yxmLIMrtynYJ7EmxiYFJ20msyWQJMMizSDvHmIdlBtSGSUXtxReEcQNHgr5BU0B3fyU+Xj2y/K77hvqD+WI31Daj9VL0H7LhcrZzXPR+9Jy0yLTf9HR0DDU19iz2bXYl9oY3jzfRt5j3tDfn+Eb5cjpeOzA7GDtqO+08SHyQPPv9tb7MgCIA90GXgpnDTIQBBOFFcwX1xpWHhghlCLII3wlvSZuJ6En+ifIKGUp4Cm+KcEofyc9JhYlHSR4I2wjcCN8IgshrR++HV4b8RjcFikVWBNpEdsONQsIB9YC7f4y+2735vNa8Ojrz+Z/4WTccdc3093RjNP51fbWytWT0/LRldJZ1cPWsdW51brYMtyV3Vnde92s3kPhD+Xz50Tpierv7Kjv7vAw8ZjypvWH+eX8pv/4AqIGHgobDXMPVRG5E+0WLhqWHEIeKyAsIs0jjCTXJBYlCCaUJrkm8iUHJZwkviQHJZUj8CH0Hw4gxR4OIOEdohl0G10YqhcdFvcSxBHDDy0O5gsLCTwF5AHS/eT58fUA8pHuzuoy5ljhT9xR2HPWYNfV2XnZJdc61SrVcNYi2DzYHNfk1y/bzd7c38ffReDB4XrkVucF6fvpz+ul7vXw5/E88p3zRvZk+dL77/0wAQQFmQhvC4ENYQ/LEb8UXxc0Gbga4xwVH4wgICEPISUhfiF+IeEg1x/zHlIeth38HPIbMxvrGn4aYhmnF+sVwxQXFN0SSBHMD3UONA2/C/0JOAjdBvkF+wR8A8QBAABt/oP8F/qC9/z09PIc8a7ukOtq6N/kBOHL3aHdceFq5FTjw+C/32jgPOJX46Th/d/94Uzm0uhc6KPn/uez6Y7sb+777g3w6PIt9s/31/cP+Mf5XvxV/ij/uAAQBKAHYQoiDEUNhg5lECwSBBNgE4AUohZgGAkZ5BiQGLEYvhgBGKkWihUMFQIV9hRZFEMTMRI/EVcQXg/4DjwPYQ/sDuUNywywC3sKBgmPB1IGjAUyBZcEmQNoAkEBQABJ/zj+Rv2d/Ej8IvzB+xn7XfrQ+Qj5+/e89p71pfSu88/y8/FK8TDxo/HZ8WDxu/Aq8JvvKe/I7h/uqe2T7YftRu0M7f7sBO1c7TzuZO+78ADyIvMc9PX05fXn9s/3uPjo+Vf73fxQ/pb/qQCiAbECsgOOBGEFVwZtB5IImgllCiwL4wuxDA0O1A9eEWcSbhPUFJEWJRihGDsYCBhgGKgYkxglGHwXeBdaF84WYBX0E54SqRE9ECUOFgyrCQkI0QRJA+L/ufsM+XLz5O+r7NrqruyM7v3tXuwD6knpA+o16ernnuUG5XfmvOf253vnGudN57znq+ea58DnCunJ6iDsOu1v7mLwXPK487T0EPZv+Jf7iP4TAZ4DJwbHCNQKMwxFDZMOSxDhER4TTRSTFeEW2hf6F6MXQhcbFw8X9RbhFv4WNBc9F+EWOBYAFlAWrhbpFpwWSBXFE9ES8hGCEJcO6Az5CoIJQAgbBh8ERwKQAN/+yPx7+lX4Pvb089bxVu/h7ELq5+an43XhMOLf5NLmSufn5ivnOuj86ILoTefs5gfoD+p/61vsLu0i7n7vJ/A08C/wx/Au8ojzEvXs9jH5ifuA/cf+qv8kAQEDzQSCBkkIfgrWDM0OBxCsEDMRxBEkEhsSARI9ErcSNhNdExATeBLLEfwQ8Q/zDjUOzA2SDUUN1gwuDGgLYQryCGUH1wVWBAED1QGwAI3/cv5x/Wr8Mvvb+Y74avec9hz2x/Wy9dj1Mvac9hH3Xveu9yz4vPhc+fz5s/pg+yv80Pxr/df9Kv5q/pT+2/75/qb/MgDHAagDbATFBBUFkQbrB8cIKgmaCRMLoAzdDY4ODg+/D40QTBE/EbUQYBB9EIoQ7Q8jD0oOaw1IDJAKWQgHBpADqQBj/bT52PXB8Wrt6Oja4w/g/+Ae5l3p3uf35aPnser36tro9+VL5RDoTurf6g3rTeze7jTwxe9r7oLtZu4U71zvde/n8VP0jvYr+jT6QPw4/gAAcAIBAw4GAgklDAAPZhF9E0EVexZ3FrYWexbHFuQW7RZfF4oXoxc0FyIWBxUjFBQTARLeEPYPWQ/sDl0OWg37C4wKFwk6ByYFDQMsAaP/Gf6H/CT73/mK+Cb3nvVH9CLzLvKj8WPxffHW8XHyOPP788r0lfVG9u/2lfdB+BT52/mj+ob7UPz7/H396/1y/qr/SQExAjoC3wK3BGgGAwePB5UI5wm/C8cMdw3eDikQmBEsEnAS+hKLEyYUCRSGE+ISmRIUEvIQrg8CDqkMLAtYCQ8HKgR8AX7+B/uM97vz5++t6zTnXuKA3cPb194C473jq+Iu5LznFunA5xnmKOWG5hvo++fv6MXqve2J77Tv5+8E8KrwmPA38N/vJvJh9Jz2cvmc+8v+0gANA94EmgZfCJ0K6AwVDz0ShBSxFkwYiRllGnEa1BlFGb4YchhRGI0XJRelFvkVQRUrFN0SoBFLEOwOhA0/DDULCQq7CH4HMwaiBPACCgGQ/1z+3fy5++76PfqP+bj4LPjI91T3P/ca90X3Bfjv+Cv6Oftz/NL9I/9lADwBFwKgAoQDZATFBBoFFQWtBQ4G8QXoBbEF3AWQBSMFzQRkBB8EYgPAAvcBAAEQAI/+E/02+xz5HvfC9J3y+O+H7Ybs1uzf7SfuUu497/zvI/CB79DuSe7a7antbe357dXuwu+Y8BPx1vFc8rLy+fIb88Tz1/Q+9vv3Cvpb/Iv+oAC1Au8E4QaqCLcKwgzGD7kTMRfqGXgcoR+qIhgkrSRJJYAl0CWRJYwkfiQVJEIjCCLBH3YdbRqZFjgSIQ7zCVoGvQJt/vP6Qvac8ZHsnObS4Y7et9013kPedN7t34vhkeJ74k/hQOCX37PeV96w3p3fpOEm48fkd+Zq5zfoT+hL6L3oe+m46t7sj++18mD2uvk4/bAAbgNGBq8IHwv6DaIQbhNeFvgYrhv1HWAf+iBYIaghvSE6IQAhMyCtHxUfiR7kHS8dJRxeG1YbRBt7G28bJBpDGHcW3BSkE9IQAg5YDBEKpgh8BtgDowJUAEz+pvxr+ir5bveN9Vz0SfNU8iTxbO/L7eHsh+sb6vTomufb5lrlS+M74QDf0N6D37rfTuBb4drjcebD5yLpnuoO7HbtKu4x70HxGPMK9TL3S/m5+4793/4HANcAkQFKAhYDYARGBqAH6QipCpEMgg5/Dx8QfhE7Ey0VUBbcFl0YNRp+G8Qb0BtKHJscZBydGx4bTBvjGvgZRRnCGHUYKBdtFQEUaxJ9EPcNTwvHCG8GhANdAJH9nvqu9yX0cPA67arp6+UJ4kbex9ot1x3V8NUM2AXZxNnr2+PeFeF64R/iNeNv5BLmwubv6D7szO5x8U3ziPWC91L47/gM+b35zPrf+2P94v8bA2EFtQdlClYNExBtETsThRWLGCgcjh42Ia0khCfUKSArwiuVLEIsoCsDK8IpcilYKHUmkSWzI7ghZR/6G8wY7RSCEBkMtQd/A93/PPxO+BX1QfEd7QLp3uP83snZCtQnz5vL3MrOy3rMvM090CnTS9Vm1uDWqNeH2EHZctr93EngS+Px5kLqz+168NbxcvMR9BL1PvZl96j5TfxW/6MC/QVCCWEM4w4iEZATsBVUGN4aOx10ILcjvSZqKQosai5jL5MvgC8YL5AuMi2DK30qhynIKIQnnSVIJEki3x92HTIaOhdNFPIQwA2dCooHLQSQAHv8a/iK9HfwwOys6LPkQ+Fy3cnZI9ZF0hjP1suHyBDHvsfbyQjMAM4S0T7Vh9ib2qTcm9784ALjVeTs5unp8+wn8JXykPU4+Pz5vPvT/Pz9Vv+1AKwCCQWuB2UKdA2iELATgxbgGKobVh5vIM8i6SQnJ4QpSCvHLKstQy6dLhouPi35K2gqESnYJykm+yMSIkQgZx4DHPgYWRagE5MQSQ0yCYwFOgJq/tT6IvfJ8+Dwce376WXmjeKk3jbawtWl0dHN28ksxsHEF8ZjyBHKCMwbz/bSDdbP18HZ4Ntc3rvge+LA5arpOu3P8Lvz2fbH+bz7XP2L/rv/bwFDAy4FrgdqCh4NNRAEE6wVaRiOGuscJh9CIeojLiagKFwrYC0PL2kwEjFnMRIx6y/qLsEtTCzNKsgo1ibxJG4i1B8IHdAZnBY7E2EPogu1B38D9v8w/Kf4pvVx8onvXuzJ6E7ldeFZ3VXZ+9Tr0ErNm8k5xqLDPMMKxQHHwMj6ytnNRdEb1ArW2dcM2vTc3N/l4n/mfuqr7m3y8fXM+IL75v3A/4UB2gL7BFAHtAlYDOMOqRFnFEIX1BkPHCMePCB/IvQkRSeHKegrNC5LMPoxBjOEM6YzGjOkMmIxdzD0LkIsJyqVJ0QlSSL4HrEbKhjUFM0QwgySCDEEVACD/AP5u/VQ8kfvDuwC6a/l+OFr3nrauNbn0grPjcs3yPTEhsLiwTTDK8WbxgnIa8qjzYHQsNJ51ODWbdrd3RXh3OT06GXtxPFi9bP45/v1/tABHwQTBqYITwv/DcYQ2hI6FfcXghoBHf8evyDsIkklxCc6KkUsWS5mMEcyvzPbNFk1bzV+NRk1kzQ8M1cxDy98LM8p0yZnIwAgmxzsGGUVOBGhDZUIhAMmAM/7gPiU9PXwgO4y68DnFuRz4CbdYNly1RPSHs7YyrXHYMSFwam/A8B4wb7C+8MKxvPICMxqzobQWdO71mTa1N1l4RXm9+pW74jzRfcc+9P+DALeBGUHMgo7DSkQyBJSFdoXQxqbHLceoiCUIqQk2iYhKWYrqy3VL9oxrzMDNfk1uzYVNy03ATdwNo81+zPrMYUvxyypKXAmhyJ9HicbvxaeEkoOlwlzBcsAuvz/+Cf1wfGZ7mLrduj+5Ezh191H2uDWWdPyzwbNaMplx0bEWsF9v7O/pcCVwdbCk8RUx7jKVs1Vz8DRA9VL2TfdpuDy5NDpHO8R9NP3bPt4/1UDuAZgCd0LHw+VErUVQxgkGo0cSx86Ia8i2yNoJcQnHCosLAQu3i8LMgI0SDX1NXA2uDbdNuY2/jXNNGIzWjFLL3csKymRJeshjh46GvwVoBGvDUoJxQSTAGr8Gfl69Ib0j/IO7DjpjOSe4FHdH9lA1rzSxs6oy5rIDMQuwOy7fbhqucm6wLwnwB/DuMa+yWnMos850vfU4dnf3+3kPepT7zb07/ga/L3+mQEtBAMH9grBDsQRCRSuFn0ZhRp7GxYd6h4gIWcjrCayKVEsSy+4MaYz4zRTNg44tTnyOrg7dzwEPPI66jg/NdoxtC3XKZsmhCJLH5kbqhf6Eg0O2ggeA2f/Nvvt96r1f/JO78Pr8+fe453f0dvZ12vUXdGSzSLK5MW7wai9AbnPtLGxLLLdtX+5Lb2OwpfGwMgqzGTQHdXa2YjfGudt7SHyAPcv+6f92P+YAm8GkwoxDckQERRIFWYWuhavF+kYQxqhHSUhdSOUJVsoVyr1KxougzAcNLs2izlWPVQ+Kz9JP5M+Pz4WPLo6AjlCNsAxoi/6LIMmYiIQHRcZURSwDgcLKwWN/8H7P/eC8vHwbe1r6X/mR+EH3sTZ7dMB0ejMO8eowqi9+7jisxeuJqogp+engq9+tAO2DLvavwrFA8l/zCPWXN7f5PTt0vKI9cT44/teAW4FVggXDlESEBODExQTShMVFakVYhnWHKocgh9+IXkhEyMCJc8pYy8LMhs2uDlVOl08fj6zP2dCAkQIRRlGsEJxPkI7aDYmM30vSCsQKGIiUxzcFhMQkgmwBF0A2fxn+sT2ZfLP7Ubo2uO/33zb6NiB1cLQgcsKxWq+xbjbs3uvEat5pf6h8qRLrFyvb65ss8a6B78mxN3M89af3OXi1uw38m/z0vas/ssFKgmpDB0RRxO9EoMTOhVEFj0XLRkjHXMd3hoPHDIfWCH6ItMm/CvXLiAxYDQ7NxA5KjzPQTNFyUXORUlGkEYfRMxBMUCQPBI44jP7LtYoxyL/HSoazRTMDWIIqAIk/fX5afbL8kvv5+rS5njipNzl2JnWddLizVLIPsIlvee2uLAgrC+mbqE8pFStubErr1ewubZ8vKHCGcwK1jzdauJS6d/v3fAg9ML+1gfmC3wNExDEEeMQ5RI9F1YZQRk1GpEbOhqBF2AYvh1LIRIihySlJ9YoLCrcLj007DdFO5M+aUFuQc5AZUOsRedFuETdQR89VDcjMzYwLCy5JtYhdRxXFRQOigfkAr3+afv3+Hnz2ewv6R7m0uHg3Zva/dfS03DNW8iAw/S9Pbq7tVCvg6iVogelrK99s7euo64wtYa7+cAvymPUD9mr3XHmkOu17enzMf7GB6YKkAqVDX0QqhJeFi4a4Rt+GoAZuBqsGqsZChx7IPAhzSCMIDEjziaTKR8u5DKFNIg1NDjjOx8/c0FERFVGUkS0QO0/QT8zPF84aDTvL0Ap+iLvHqIZwRPKDh8JzAHR+uj3o/aB8VHr3ufJ46Hda9kV2AHWRdF1ywTHzsGYuy24Y7VBsMWpv6RZqXK0LrSaroOxL7cRvnjGIs9y1YTWQ9x75ybtOe+t9a//vAZ3CJcJRw5mEXYU1xpXHAIaoRi/Gdcd/x1aHE8eqR+pHwcgwCEcJbknByphLmYwsC+yMxU5VDxxPg4/N0FbQpdAYUA6QHU9Wjr6NpMyZC1FJ3gjqR8iGIgRlgt6BNj+U/sD+RjzAetq56rk39+72wLZtNWj0FjLg8eyww6+nbkst2ay9KorpgusLLd3tSSuiLA9t9K9ncWgzg7UudJ410fkYutd7ir0rvwjAyQEAwc+DiwSTxXuGUQbjBnrF0Qb+iARIBMeYB+oHuIevyDAI3AmAybdJ/wrMi2rLfMxlDcnOnI68ztLPug+8T6GQGhAwjwpOac2CjTJLzor6SdVIpga5RQ9EEAKqAMn/un6fvZ87sboPuYg4yneBdnG1WbRucwfylfGZsAqu6+38bTLr4Spq6ljs0i5O7K9rDuy4rwzxebKftC20fXRzNtV6Zfv3fCE9eb9JQKoBLULJBKJFC4WXRhgGu4ZLhslIXMifR4WHZ8e0CAZIqsjoiUcJb4k8icnLGou2y9iMzo2UzbkNyo8Jz++Pl896Tx2PoQ98zieNhAyRCv8Jpojkx8gGn0V5Q9OCFMCs/0j+hz0yuvD52Hktt8l3G/YUtQYz9DKGsi3wya+k7kWtpux9au1qtiy17l4s26txrGTuqXDOMqPzqDOCs892R/ns+xv7njxUvhF/y8D6grBDs0Q2xOIFrcZtxnSGssfCCIjHT0cvh9fIVgicCMNJB8jvSMCKFEsXyyqLAMw7DKFNBU3CjqKOw08sjyZPNA6FjpSOng4kjNeLksrSijzI5UekBgXEhYLHwbZATf8X/gs8+7q+uRn4rvgbNz51RbRWMwayFPGMMOkvWq3fLKTr+us266ct9u4Na9ErQm3JsKXx3fKsc4Cz3fRFN/s6zzun+zI8RX8GwEABc4MXhFXEMQRMxjYG/QamxzhIBsgqhuUHRcjSiNtIWki3iO9IyQlJCqTLbYrsSuGMNcz+DQ7NwM7nDw6OUo4kDwJPX46PDhXNAww4ixRLDoqsSH4GfIWtxJhDD0GdwEC/Qv2Bu8o7JnpMeMm3UTaYtbu0KbNNsuJxiLAU7wwujC1S6/FrNqxJ7p6tris265Suo7E+sdPyXDLtMu/1FrlQOt56FrpYvIp/VgCMAZqCnIMvg5zFHgZ5RkYGhAdcR8OHqocDiBsI+wiziFAIosjUiXiKN8r+CoSKpwtcTKiNFk1mzadOHc6eDuGPIE7SznbOUs5mDUPMaAtASzMJ40htBz5FtoQ+wttB3wBL/tk9gvx0ut459DiMN4P2dDUstH9zIfIzsR6wFa8C7jGtE2wFKzDssq76rQWq8GvHr0HxlfGZccKykjM2dcV5pPoWuXz58nz5f6ZAR8EUQgHC00PeRUGGdYY1hhkHH8gtx7FHNwg2yMQIwUiMSO8Jd8mZSnPLPwrSCu4L580DzYoNmY3pTqGPCg78zv1PLE6fTkJOPg0ODE7LYMrdCepHx4bgRegEbULzgWCAGT7yvWV8TDsOeVI4lXfgNn71MLQF826ybjELMH2vPm2vLPor42strItuh6yXajhsEa/ysIhwgHH78mQygjX5uU25l7i8+cB9Ub9I/8GBDUJBAqyDQAWGBoQGPcXCB1rIPUdsh3UIqMjXyH/IkIm3ybAJm8qTS73LKosOzKSNvk19TXeOQg8oTyOPfM9RTv0OVg8EjszNcwumy8cL+IoHSGIG5kW9g/SC+QH0AG3+tP3U/Su7ibmCOFv3yjb1dZ40tfOm8lXxlXDIL/dtzSyjbCOrtOxvrgbtbCpAKy4ulXF+sLHwOPGcMuT06/gkuVq4nnjpe6O+zj/LgCXBDUJYg3YEc4WUhlpGK8Z6R34HgkevyDzI6Ei5iCOIwIoriluKWErfS0OLrIxlTZDNy82DjihPNQ+Yj0MPqE+IDsWOig75TjDM68ufyyyKYQjxR4KGwEUVQxyB90D8P5H+Yjzs+ya52TlQeLP3N3WbNKWzwTMocdFwzC+K7k9tdOxDa1YrGO1cLexq8+oarT8v0HDPsKfxHbHhM0Z3Evlw+IS4G3o0/c4/vz9OgKfBlIJrg+RFoUXLRWWF9cdSx94HFseJSNSI18iVCTJJqgosCqrLWMvfy7oMI43ETpROHY5nDzXPtpA6UECP+E6ATypPg08NjUPL24tTCxMJ5shUBtRFPYPkg0FCLr+yfg899DzwOxz5Xjiw+Dz2+7WZ9IfzX7JAsjQwxK8YbaTtGSxuKvpraa3j7RwpweqS7pBw5zAv8C7xtnI7c8v4Bnm6d+V4DXu//qr/Bn+qwTzBwAKOhBmFqMXyRXaF1EdqB3hGxYgACQeIlAhDiXiKNwpRCv/Lh0w+y+sNNI5lDouOus7ST+jQJdAYEJkQKc7aTw5PYs5OjQKL5UsHimVIxsgPhpJEmINYAmwBHf+m/jX9BjvgOmf5sDiGN7J2RHVAdGEzHPIIsXrvye6V7UPsXWsfqpAsqq3iqyypLev4b7swjbApMI9xgPLW9kF5Mfhct+c5kT0vPuD/JgAQwXfB1UMSRL8FVcVwRVlGngc2xoqHaUicCPhIGkizCcgKzQsfy6xMJ4x7zS/OpU9WDwjPfxAN0N2Q35Dq0IDQCE+VD4WPKc23THILnsrpyXsH0Ic6RZADyUJKwWTAGz7LfbO7wbqieeN5aXfodht1d7Sq82ryK/DNL5UuTW1CrA7qKOnUrNvtYqnhqObr5K8a8HtwMjBucI8yvrbM+Rd38PdteZI9XT7TPvR/1sEHQdQDMQRARTwEvsUxhpMG38Y2BseIiUjoCHpIusm3ioELooxtjLrMWI2Rj4uQO89Xj9ZQxhFv0ThRL9E2kDIPQ4/nDwXNgExDi4IK24krx7qG5MV1Q0tCRUFpv+t+hP2I/Dr6pHnv+SJ4LDZ4dTN0vvNlciiw6W+j7lRspmtpKpwpwitQrPcq4Sk6KruunnEesA9wVLIwMwV2JvjCuQ34j7n9/On+5/7HQBLBY8HMAuaDpwRUBNnFIEXMBnrF0EZQx/DIt0hdyLtJacqlS5aMRw0ojV/Ny09uUEEQadAnENJRn5FqUNaRBdC7Dx6PDY7/DSiL0UsKykuJMwdeBmbFQAP1Ag3BQQAZ/q190bzU+xb5xjlGONN3aLW2dJLzjLJQ8STvT23HbFvqyingKQsrEu0/agdoPWtML7BwnbCRMVoydHN+dqr5+7lyOLV6Rr1Jvzl/HP/WQUlB9oHXAzqD08QOBFAFH4WHRVQFuEdASK/IHMi/CY6K3kv5TNHN+A3QzmaP9BExkMeQ7hFKEcnRk1ERERSQi88JzplOV4z2y2WKo0nfyKUG1QYmBXTDvIIAAXV/0z79PiB9ILtlujf5fvict0c18jS/czZxh7CjLtLtJyt86eGo3OkZa+DsV2jwqFsswjCRMVtxCzGqMvc1Q7i+uYb5TLmXe4P+Jz7l/vl/i0EvAZfB5oJuAvoDJgQ4xMNEwQTARhPHn4hxyLdJW8qcy4XM8o3ADpwO1o/1EPyREpEeUWGR+5GG0R9QrlBST8YOz43cDQAMGkr8yjUJOUetRrdFxEUXw0PBx8E4v9/+9D4PPLH6x/pBuVw4Cjb6tTdz2PItsCPu921pK/np4CfxpvypJCyqq2woB2l7reexiHJ48kozeHP4Nis5V7sJerD57vwqPlk+Qf7CgGrBAIEngMDB3MKMww1EGcUfRN9E+IZ8yEZJ20oACsWMK8zlTj2PQdAzkAJQydGWkYRRUlGCUhwRVpBZkE7Pjk4WThRN2Ixgyt8J+smKyRjHh4bLBexEVoN+ggQBNj+0fp0+HTxE+ib5Xrkod3C1d3PG8qAw8S8c7eUsGinQqJ6nuyctqjzsaSoYKPEsDvCS8lhyqnQ7tTw1bHfjOlk6ubpUO2Z8872EPaB+X4A2gKfAcQBvASjCeQMPRC/FN4VJRgYH4UlRCr7LYoxlDXiOD48GEBKQhhDdkUvRoRDFUPYRKVEw0FnPx0+XDkRNY81gjTbL5YqoCYKJaoi4h7+G40X3hCwCz8HxwER/jL7hvQy60vlMePm3obXJ9HfyyvFcb3wtjaxx6vHpm2gc5otoJexz7SGp8+oTLxaygLNydDH1vbWhdm45Tfteejn5mXwYPY18/3y8PlDAKAAvgDMA1YFcwiKEMwXhhiBF88dVSdpK/stgDNxNyk5GTx7PyZBd0HlQ0pHH0SpPgtAk0PAQpM+qjuxOmk3IDTGNJ0zby6wKi0oLCX6IPMckRulFoENAAeiAdL97Pst9lzta+Xw36TcAtl/0z7MXMQ2vRO48rJRrdOotqHsma+dS68LuMWsFah3t0rIxM0E0cHXcdfR1gvhnemC6I3lsuue9Gnxu+7Z9lL9iP9mATgDXQW1BxAO1ReMGwobbh+UJuQrBy/wMt045DoHOxU+qj8AQDlC1UQnRFo/eD11QBZBHT7dO9A6TzlXNpIz5zIPMb4tUCt/JxkizB1+GyIYyRDPCGgCTv3X+Xf1s+435xzh79wE2N3RmMxDx8rAILrzs9StDajpo7Kf76DdrX21PbCPr+O43MU8znXSj9jc2KPXqd+y5ivnH+fR6mXw/fBR8CP1kPqv/ZkBSgSHBYQIaw0IFnUcNx0DIQgmDipjLw4zXzbIONI5KjwfPZk8nT02QHNBaz/8Owo7LT1FPcs64znJOUI2lTH6MRAyNC6PK9YoPCRbHowZIBdREqkKNAOQ/OD3/vNV7sDnIuL43AHY59KEzEzH9MJ0vEq1Lq+3qRekk55moT2xh7kUsciu5bm7xmDOf9Pr2UvZKNc/33rkMeML5jnsXfBO77XtEfKr+M39zgJbBIsDeQeVDTQUBRtKHskhMybIKK8spzE/NZI4nToROlo68jrAO7U+bz8yPiY8HTlxOb86STp2OT45zzfuMS0vRTF3MOMtJCpBJSQgghp1F4kUMg4DB7v/s/gU9Ovv6+qQ5nDg+9l21eHP1crjxrTBg7sytPGtk6rXpe+gYKkRu2S9ubOxtK3CDs/u0dnXP98d2j/Y/+BF5d/kTOa67bPzJ+507Av2PPwK/8wDaAYAB8cI8A7MGNMdgR5gI5ootymSLMgxjDV1N603KTkZOio3czhfPVI9ljsmOdU2sTdxN6E3SjiBNik02y+OLU0u8iyUK3UoLyJwHOYXnRSNEJAKqAOg/Kb2U/HE7C/pR+Se3sHZ3NPzzQDKqsWtwOO6gLMQro6p1qPPqDW6LsCstte0EsHozLnQN9ah3fXaSNgX4KXk1uEW5Jjth/JE7vbsovO8+J/7uAH5BXMFpwbLDLIUkxgkG+ch8CaEJy4p2y2jMTAzpTU5OG43JzXdNi464zlSOeY5UTjfNZQ1ATd8NiYzyDHXM2kyJCwHKhkrQCm8JSAhoBz5FqwQKg74CcMAVfkh9p3zzewj5dni3N/+2ArUrNClyn7E3MDdvH21fK0yqsGqdbE4vNG8/7cBvP3Fas3W0CXXjtxH2uTaReDB4X/hFeZr7qrwce0g75f0kfhN/EkBIwXcBagHzA3BE7EWABtTISclcCZnKHcs4y/AMU80yzWDNXs12jZqOPE3sTfiOCY4+TXjNMY0KTRbMn8x/zEAMFgraimTKQknMSMbIIIcChfrEAkN1AhvAWT7jviK9NftKeg55bzhNtxg1/TTEc9GyZTFm8FIu6e18LERsEu0ML6nwVu9nb73xsPMtc6N1LvbAdv02VzeLOAb4Jvj3+oq8MjuBu/785z2R/k//rUC9gUAB/gJ8Q/aEqkVnRt/ID4jsCQ4J+oqTCwRLoox1jLnMqYzhTS+NKI0fjXONXk0czOrMtUxdDEIMLktFiyKKtYooyaOI5EgpR06GncWQhL6DaMJvAQ6APb8oPl39WDxve156qrmruIK4CXc7tYa01rPLMsvx1/DFsCpv+rDWMdrxmvGIcmxyzDNMdA61RfXPdYJ2Ifaptvl3QHikObf6HXqOO4Q8ZjyhPWB+Wv9KwBkAs4FHwmFC/MOLRPkFtQZkhyhH9ohdSMVJkgprCtYLeouRDAKMdUxnDIRM3wzczPWMqMxcjDeL+0uly2VLCsrFSnTJuMkFyNeIFQd2xq0F/QTbBDwDLcJOQbLAtH/7PuM95Hzye/x67PnE+Oe3tXZ7tSX0BnMvseFxH3DeMOcwsXBdcEvwTnBl8IZxTnG9cWnxnjIu8o4zT3QxtML18raKt/D4rvl/Ogd7cjx7vWX+Uv94wDeBCoJTg2LEYoVgBl2HQMhQCRfJ7MqJi5OMSA0kjZvOCI6yTsoPT8+6D48Pys/wT4DPvE82jvHOjI5ITeoNP8xYy9FLPMoTSUzIR4d4BhnFMwPSQv6Br0CR/6B+XL0de+76pLlTuAX27nVgdBLyxfGCsFMvBq57rect9O2d7WEtGW0aLV3t1m5GLr8umm95MBtxALIFsx20ETVh9pZ32jjUucL7H3xifYh+3j/2AN3CPUMpRFtFvEaYB/II9QnUCuhLjIy7TVGOR48pD6sQEJCnEO4RIZF1kXnRdZFM0XPQ+BB5j8DPuY7nznONjQzWi+jKxQoLiS1HwUbQRZMEX4M1gcFA0f+m/kG9SfwDevm5Zvgc9tw1kzRNMwex+vB5bxKuDC1WbRRtKizjbLrsSyys7Mutv+3xbgYuh69GsHjxJrI2MyN0dXWeNx64a/l3Onm7nX0evnh/TYC2QaaCx8QkBQjGZkd6yE6Jg4qWy2gMD00xzexOkU9oj9/QSZDXkQRRYpFoEWURRFF+UOJQuNAGz/1PIw65DfmNMQxWS59KmkmRCITHsUZDBUcEEYLqgZHAq/99/gx9FPvxeom5gjhntti1l3Rd8yDx3HCZL25uM21JLUwtXa0T7OmsgKzwrQet8i4mrnjuvC9AcLHxYfJq81n0rnXBN0F4ljmYepc79P0rPn3/RcCuAZlC64PPBTPGBAdWCGNJVEpnCzVL14z5jbXOWI8sD6sQDBCZUNjRNxE5kTIRFpEYEP6QUJAbj5pPA46lDfGNHQxvi0OKmUmXyIjHrwZBxUYEEYL3QZtAs39LvmG9MnvAes75kzh9tvD1t3R8swCyPrC7L2Euce2JbYgtj21BLRPs7CznrX6t3a5GLp3u5q+lMJ+xlXKUM6w0uzXXt084mXmieqG78L0i/ne/QMCggYkC5oPHBSZGM4cFCEwJd4oJyyFLyMzmzaLOfc7Jj4LQJxB5ULUQydEOEQnRI9DZ0LjQG8/8z3zO6k52jaMM20wQi2QKYUlJSHaHKgYDhQ5D1EKkAVJASD9lvin84zuwukY5Q/g19p61TbQWMt1xmjBhby5uB638LZhtie1HrTWswq1Z7ciubK5fbr6vNjArMRfyETMS9Al1b3a6d8z5BPo4exl8kX3p/vD/+EDfAgjDaURABYMGjkenCKYJu0pEC2sMEM0WDcuOn88Sz4UQLlB+EKMQ5hD10PBQ+JCh0HyP2U+vjy6Ojk4AzWjMaQuiiulJ1gj8x7GGpQW0xEBDSYIZgM1/xT7T/Yc8TDspuf74uDdsth2027Ok8msxKy/Frt1uPO3jbdQtiS1h7QCtee2AbnguTC65Ls9v9vChsZyynHO3tLz11ndF+IV5o3qve+l9BT5X/2nARYGfgoAD5wT0hf2G0QgSCS2J+oqcy4EMjM1Jji/Ot08pD5bQORB0UImQ1lDSEOrQpRBR0D0PjQ9LDsYOVM2NzM2MAgtYSlhJUchMx3PGA4USA+ECvYFmQFB/av4xPPh7kvqnuWJ4GfbUdZU0WnMYsdlwrS9WroiubS4jbdEtoC1dLXKtta45bkwuma7RL7zwYjFO8kGzRLRL9aq21/gb+Sc6JPtz/J/97T70f8LBIQIDw13Eb0V1BkCHiMivCXzKEks3i8rMyg23TgxOy098T6BQJBBF0KJQtFCbEJzQTZA6D6EPc47pDkBN/Ez6zAOLpEqcCZVIkUeMhq4Fd4QDwxcB/wC8P6E+qr1x/D662rne+I33UjYP9MezibJLsRjv8K7E7pnuT6407bjtY21j7Z4uJq5/rn8umC92MB+xELI+Mvdz83UMdoN32Djmude7InxVvbM+vD+IwOuBxkMghDZFOwYFh0lIcYkLSiGKxwvkzKMNUE4rjq+PKw+QkBiQRBCcELWQqNCuUGBQBY/tz1dPHs6yjeCNGIxdi5IK68nYCPlHrgagxb1ESMNQAilA3P/OfuX9pXxyOxP6MHj997a2aLUrs/tykLGdcEYvY26jLmTuGK3S7aetTa2/7d7uf65irpwvLO/RcPRxnLKP87v0lzYe9344SHmyeoe8CP1qPne/foBggYfC38P0xPmF+0bJCAJJF8nniomLpUxwTR/N/E5GTwQPvU/VEElQppCBEMMQ4ZCzEGxQC8/dT2GOzo5ijadM20wtizlKCQlCyG4HAgYMhNkDpoJGgWpAPT7Kfd78sHtEek45EffUNpT1YHQqMu7xgHCpL2WuhW5/7fKtpa1qbS+tBm2z7e5uCu5gLpKvenAsMSHyFHMcNCb1SjbNeCt5DjpXe6d84r4Kf13AcYFUQrwDoMTyBe/G8YfxSNVJ8kqUS6vMc00pDdSOrY8pD5kQORBuUJLQ+VDBUSEQ5VCf0E6QKw+yjx+OrE3jjSFMTcuWipIJhYizx1OGWwUiQ+xCgoGogEY/Tj4WvOi7jHqpuXJ4ODbE9dn0tbNS8mzxB3AL7zPuX24LLfQtcu0Q7TCtGG2zLeGuFS5TLuHvjPC0MWbyZ3NENJ11wHd5OFx5l3r6PBP9i/71f81BKoIWg35EW0WcRpSHn8iUya+KTItjzDUM902hTnrO+89vz9zQcBChEP5Q0FEMESPQ5JCaUHhPxU+EDyOOZU2jDNhMLss2yjGJHsg/hsxF0USZw2VCPoDgf/A+v/1YPHv7JboBeRH36DaEtai0S3Ns8hZxAPAU7z0uX24I7f7tTC1urQftaO2ArjFuNy57LvQvjvCB8bvyfvNmtLz10jdN+Ir5z7sq/H29tb7kAAaBZoJTw7wEkkXYRtlH2cjEidvKuwtLDEtNCE3zjkzPDs+6j+DQbNCeUMYREpEG0SkQ8VCoUEYQDU+GTypOes2tzNIMKosxSjPJJ0g/hs0F0ISXw27CO4DNf+E+pj14PBe7MjnPuOs3iDa19Vp0R/NCcnjxPLAPr1Oup+4Z7c7tlq1k7R+tLO1YrewuKG5A7ugvRrB5sTzyNTM59AK1qPb8+D85fTqQPDR9RT7AACfBBQJ2g2qEkYXiBtxH1IjQSfQKisudzGFNGY3CjpiPFk+C0CqQe9CwUNKRIBEb0QFRBVD3UFXQII+gzwnOlQ3HDS/MDsthCmJJTYhjRzFF+sSEA4+CUoEZ/+m+u71NvGm7CbopONV3yzb/dbZ0sHO6spMx7LDM8D2vIW6+Ljit/W2R7bdtTa2o7cuuVq6oLucvWbAyMOHx2jLUs/X0xvZdN6O44fosu0s86f4xP2bAj8H6gvGEH0V7hnxHc4hzSWMKeksHTAOM7E1TTi6OsI8aD7HPwRBC0LFQiFDDEOrQvpB50CMP9k9vTuCORk3OjT8MKAtHCphJnMiIx6SGc0UDxB5C7MG5AEw/Y74HPSs70TrEufh4sneAdsw11HTrs9dzEbJNsYww1nA+L1ivG27p7rquZq5urmWuii8q732vpzAF8MoxovJNM0N0QvVm9m43sHjh+hZ7X/y3PcP/eEBiQYfC6YPQBS2GL0cdyA1JM8nLitULiAxyDNONo04ojpJPIA9oT67P3lAtECnQDpAgD+LPko9tDukOVs3DjVxMm8vNCzbKF4loyG2HXgZ5RRGENULbQfTAiL+j/kv9e7w1uzv6PXkEOFy3fvZrdZ5023Qjs3VylbIF8bqw7jBKsBOv82+gL5yvqm+S7+iwGXCHcTcxQLIu8rvzWbRGdXg2OzcceEq5uvqm+8/9Aj5//24AjYHqgv2Dx8UMxgPHMEfPiOKJr4pjSwcL3cxpjOxNXU3yDjjOeQ6ljv3Oxk89zt1O8c68TmmOPM2ADXnMqUwKy5TK0ooFiXAIVseuBrcFsQSkw5hCg4GvAGH/Uv5KvU58Xnt5ulp5gfj3N/F3OHZOdei1D7S8s/2zT7MosouyfHH68ZLxiXGJcZrxh7H7Mf/yLPKpcx5znDQ9tLf1dfYCNyM3zHj5OYE60vvY/Ne93r71f8GBAEI6gu/D1QT2BZcGq8djCAlI80lRShSKjgsFS6bL8sw3THbMocz1DP/MwI0pjPWMgQyFzGzL/gtLCw1KvIniSUXI3Qggx1+GpIXbBQWEcANcwoDB3MDAACm/ET50fWp8qzvruzQ6Svnv+Q34vDfAt423GHa1Ni5157Wj9Xe1FXUy9N5027Tj9Pc03LUMdUS1krXv9hL2gjc4N3k3xfiWuTH5l3pDuzM7qbxvfTI98f66/0OAQsE8gbwCeQMiQ8XEpAU4RYCGfQa8ByoHgogWyGvIrcjhCQsJbMlFSYlJhUm9yWnJQ4lVCSOI3ciJSHBH0IekhzKGvQYARfxFN0SwBCODmEMLgrWB4wFJgPSAKX+avwr+vv37vXm8wnyXfDI7i7tpeth6hvp4efx5gjmQuWZ5BHkveN+43HjeeOk4+zjVeTY5IblR+YO5+/n1+jt6RXrVuy67RjvlfAd8rPzYvUa99r4lfpi/D/+EADhAbsDkwVTBxQJywptDPcNZw/GEAoSQBNKFDIVCBalFjEXtBcBGB4YJRgZGN0XfBf5Fl4WrBXiFP0T+hLhEbUQag8NDq4MLAurCRsIbAb4BG4D3AFZANj+Y/34+6P6Vfkb+PP22PXf9PfzPfN78sjxSvGy8FXwHvDk77nvl++e77Tv9e8v8Hrw5fBP8dnxZfIC86fzXPQg9eD1q/aC91/4S/lF+jb7K/wg/Rn+Cv/8/9wAvAGgAm4DMQTzBLEFVwbyBooHAQiECPcIWAmoCdsJJgpNCrcKpgomCjwKhApqCsoJiwmaCWAJxAhWCC8I0wc/B6oGVwbtBUsFqwQ1BK8DBQNwAtUBYwHGACYAwP89/73+RP7a/Wv9DP2u/Fv8Cfy5+3/7PvsU++76zPq7+qr6pvqV+qb6w/rR+vP6C/s2+2T7k/vB++z7IvxU/If8v/z7/CT9Y/2n/d79Ef4//n7+uv7w/hL/Pf9w/5n/t//M////GAAyAFQAcwCHAJMArQDDANIA4ADgAOgA6wDxAPQA+QD5AP0ABQH5APQA9ADrAPEA4wDgANwA1wDOAMMAwwC+ALgAsACwAK0ApACkAJgAmACMAIwAggB7AIIAewCCAIwAfgB2AHYAaABoAGAAYABgAFkAWQBDADoASwBLADcALgAyAC4AGAANAAcABAAEAO7/5v/i//P/0f/A/8n/wP/R/7T/SwAAACv/Xf/R////U/8o/4X/zP+B/xL/U/+m/57/Nf8x/2T/lv9a/0D/cP+j/4j/Z/+B/6//zP+N/6//tP///8D/8//J/x0AAAANACsAHQCMAAQAzgANAF4BzP/EAWf/qAdUGDwFqveUAfYPrw3F+8QLbiQ1Dmn0vP3SF+oZnwEJ/rYIlw56BEMDAAWXDmwL0vvAAvf4pQNdA9r95fz8AjIJVPLM+LUCbAlH+X/3UQ30+EL2owmH/Nj6RP41BHcR4e6690cOEAPi/1X5RhCG+3kCJQcQ+64bwQk5Hnf+AwfrIff9PRXAAtwBigs0FEELp/seDfoSYACC+0kI8QVV/u71YPvx/PQA7vOI+oUBDQBA88XvKQIx/rn9N/IeAXn42vS9/jD4FQC89hL1XPmD/vX0HfJ49tj10P536+jtgf+I6TDuivh19Jf0AesN81/4XPTl8Nbxo/vH9f73oPkh+37+pvUr/FP/ZgE/+SL8YQUb/zMBPPcVAGUFPPwWAeX+kwD2/PT4qgEDAkb9i/ku/m4DAPdB+BYBiP7t/g/9DfqQ/GAAX/2M/JsAaACQ97z7sAQNACT7tPv5/tD8uft0/dj+kPqB+gz9APxL+bL3i/lq/An8lPmE9Rn0Evy192L3Q/tM+//4MvLd+lz9LvkG+pn6DP7L/Hr51/hA/0sAv/zY//b/NwC9/ncBrwPHAQAFZAS8BoIGmgSbB0kIewrMCI0L1g6fCZYGAAweEkEQ+Qr4CbUQhg4PDIQPng1KDkELTwltDF4LwA1PCTYHcgzlCNMCPAHwB78G2AO/Ad/+GP3B+7z7//qH/U74/PRg8Xnv3PLv8fTtb+6V7KXpDel35BPo3ufC5ibmWuSO41vhTOHz4hnmwOWj5WTlGeb15iDqn+zA8K31rfWL+Rn+QQENA2gG6Ay3EhgVOxaQGLUaFx5hILIi4yTwJksmNCNUJNUlHCWBIy4kVCRtId0cQxrYG3gc4RvIF5sV7BMPEP0OZA74DscMTQoIBy4FfAYjBVYEBQO/AQX+Xfpj+F31+PS58eztpur15sXle+Jx3nDbudei1LXTBtKdz7TLFcfVxefGcMt3z7PPyc5R0QvXzto83ybmSuxR8ML0jfqq/1sEHwl9DuwTFRj0GjEcmh4WIgkjryKSI00lbCVZJF0kUCSUIp0gdCBwIZchiSDfH78gUCEdIR0hWyFfIiEk4CQrJB0kKySEIgMhQiEPIRweTxrMF/gTQw+wC5kItQUmAx0AW/tx9jzyru6168/oMOeM5NjfXduG197UTdLQz53O1s1ky5fHXMTrwXrARr9+wEXGS8tby7/KTc/Q1CXX+dqz49HshvGe9ab62P91BFIJiw6/FGob1x0xHnEf6SIDJMciQCSbJtomSCQIInAhriDBH24fNR8WIL4fQx9ZH0EgZSEpIVEiJiRLJqAmgyZBJy8n6CZ+JmglnyPWIVkf0BunF5MTfQ60CRsG6wKW/2n7vvfE89/vDuzo6NnlEuIn3xzcgNkQ1z3UO9HZzXDLEco3yAfGKcTuwZG+Gbv4uKW79MIFyJPJgctC0NXUnNdi3fzlXO248576swFYB74KKg63Ei0YAh78IfgjlCWNJiAmyyTqIxgkZyMWIsUhUyFDHz0cZRo1Gpga1xphG1ccix0YH5kgGSLGJIgnTyj7KPgqJS1bLVwrQSqkKdgnoiUGIwogVxyjF7QSaw1fCJkD2/5b+8T43fUU8vDtl+pn51XkDuIv4BPe2Nsu2hXY4dSt0T3P9cyBy17KZ8itxd3BnL2wuB63nL31xTLJrMnkzO/Sc9bX2O/epOYb7j72OP6SBC0JywyyDzITBhneHvwhPiNvJfwm7CQ7Iiwhzh9PHnwdTB2WHPsZbRdgFbAT0xPIFD0VbRYXGVobChzzHB0fgyHWI9omniqyLAstyC3zLWAt6CtDKQknRCV9I4wgsRsoF+sSYg3rB2IDXf8Z+0j3J/Xo8rTveOzh6bPnD+XZ4ubg0N4i3RLb6NjA1gXUGdEEzsfKTcgKxrnCB7+Pu0i52rpywJTFgMhwy8LP/tQK2fvdr+Vs7ADyS/l3AYgItw1yEfsU1hi9HOMfCCJ9I8EkFiU5I0ch1x/WHN4ZRxg9FyIWIxRrEqkRohD/D2AQTBHMEhUVtBf7GXgcPx9+IcgjLibeKFgrmSw7LX0thi1kLWkrCyjjJNoh0R78GgEXJRMhDjIJFQW+AE38Vfgn9bLyRfAi7uzrXelW56zleeNr4GjeRd2Q22jZotZ/02TQw8zvyETFScHevWu6trZHtqy67r9Bw07GC8up0CDV7tn24OHnxu389Eb97wRSC30Q3BQJGQQdRCBmIqMj4yRvJRAkfyJQIbweohsGGQcXAhWvEh0RRhBRD4YOdQ7sDhgQMRKmFPIWDBpDHakfBSKpJK8n8SlLKxwtPS+bMJQwDy8XLb8qzydAJDkgtBwSGdQU0hDwDO4IWwQo/wP7svdT9Gnx9+7B7R3tw+uq6Sjn3OQ04oPfBN0g2qjXftVc0yrR9s08ysDGvsJyvoy51LQMtHG4K75HwnjGpcyM0ybYrdsZ4SPnRews87n7bASxDMgSFRiiG7Me0CBmIBQh5CJIJNYj8SK9Id4eUBtCF4wUdBIHEIYOqg0bDR4Ndw2NDYYOmxCSEoAUNBc+Gosd0CADJKonaCoBLJctJC90L3kvHy+jLSQs1CnAJoEjNR+1GlkWrhHpDQQKoQWzAVn+KPuq95v0ufFs76Dtoetb6uzoDuee5WjjleDd3XfaJdcS1B7Rbs42y5TH/8NEwAG8X7efs5qzO7iCvUXBOcaOzRHVoNqI33PlEuvR7571gP3UBR4NoBOVGfgeAiN2JCEkhCO2IkshaB9FHrYdZBxPGmkYfhZ9E8MPwgzGCr4JggnwCacLWA5VESsU4RbFGXUc1B42IeUjmCbwKEQriy2bL3Qx+jHLMNcuSSwrKTklvyDdHDwZXBXTET4OQwozBjoCR/5W+qv2a/PA8KLuQ+1F7Kbq7OiV59nlsOOO4ffe89vc2OTVItO7zybM2cgZxfLA87ywuBG0nLIAtpO6H765woXKLtP72Are3OSN6t7uNvQ2++QCEQrjEL0X7B3kIuYliib3JU0lgSNvIHUefB3cGwcavhivF6kVThJWD+QMUQqvCFEI7giuCo0N2hAmFJkXwRpzHf0faSLLJKgmiygAKzItsC8IMkcyGzGFL5ctVyphJbcgjRwlGGwUdxFdDgcLoAcUBBUAn/tU93LzHvD07fPsuet+6jHqj+mu5xLlGuL33nDb3tfQ1LLRYM5wy4TIJ8VOwUO90rgMtDOxd7KjtoC6Wb5MxfTOCNfn3GPjZOrw7zn00/kkAQ0IRw4PFQocASI9JnUo+yigKA8n0SNEIJkdUBu+GG0WfRWyFIoSSxDKDhINwwryCHwIFwlWCqkMJBAjFFEYWhwAICgjDCZFKKEpfSqxK8gtsC+PMNwwvzDvL9stJyrJJdkgZht0FiQSgg5lC18IywWeA+MAkf3o+TL2vfKs7ybtVOsD6uzoQ+ij52Xmy+SR4nffuNtP15/S4s1jyVLFOcFkvVK6Grdjs1ux/7LCtuW5YL2dw/jLqdOM2hfipekS8D724PyUA/MJ7Q/eFXcb0CAnJY0nqyguKVsozSViIlMfOhyQGI4VehOgEZAPxw2LDF4LWQp6CeIIAgkjCi4MsA65EYIVfRmLHdohGSY8KTorCC2pLvsvDzFaMcIw3i/0LoMtdyqDJpEiBh5fGSAVABHwDDUJbAYLBAUB1/3m+gX4IPVU8tfvk+3k69Hq1ena6JXn2eXG43rhxN7t2nfWLdLZzZPJrcX6wRq+QbqjtlKzPbFUstW1h7m5vVnETc161Y7cauRe7NzyY/h6/gAFkArPD5MVOBt3IK0klScyKbop+yhtJtQiXR+uG6MXMBThESQQUw40Db0MKgyFCwoL2QrUCloL5AwAD7ERMhUmGVQdOiERJQApJyznLXYuii9JMZkxPzDPLvAtdyyHKVgmHCPFHhga6xX1ERAO/QmJBrYDMAGU/pf71/iX9k70cfH77ibtoevL6Sbo9eZf5U7jFeHJ3u7bj9jq1ATRysxWyL/DAr+iugG3/7JIrzWvRrPVt3q7U8HQyvnTm9rS4T3qE/HU9Qv7mQGjB84MfBKGGFsefSMBJ+Uo5Sm+KUwnRSOTHwcchRddExERkw+7DWYMPww6DI0L/goHCw4LTwtLDCUOyRAwFDMYaBy7ICwlCSlaLA8vcjBCMVsyxTKSMZYvJi6NLGopySV8Ip8eJBrvFRsSCA7eCYUGngPLAG3+5/sq+aP2l/SH8j3wXe4Y7aHrC+q96GPnfuU64xDhXN6x2qbWktI3znbJpMRvwH+8ubjGtMSwkq44sEO0JbjIvMnE384T11zeBees74T1RfpzAL8GeQsKELAVZhtvIHYkpSdqKf4pGCkdJkAiiR4yGksVixFRDzgNKQuhCjoLbwtJC9ULsQweDbINEQ8IEYMTrhZLGlYeAiPpJ9Yrui49MewyfDNvM44yUzCOLSUrvSh0JfMh8x6RG8UXRBTSEOgM6QipBagCgf+y/ED6w/ee9Qj0e/LU8HnvjO4u7Xrr1enI5yPlb+LT37HcyNjY1OfQocxbyPvDqb8qu+e27LIAr/Osmq6vslG3/7yIxcLP5dhU4Q/qSPKb+KT96AJZCPUMbREzFi4bUiB2JGYnQCn0KfMoySWbIUwddRh9E28PvQzLCmwJYAlICkkLQgxFDVgOXg9SEHsR/xJcFVEYnRtxH80jcSjALCcwnDICNGA06jNuMusvoixZKVgmMSPxH/McHRo6F1YUexFgDgILywfBBKIBuv4A/G35N/d/9Rn0z/Kf8ZjwbO/G7eTroun65i7kO+EC3lDafNbN0r7OL8q6xZLBdb0ruVK1tLEQrtqs46/ltH+5aL/ZyL7T5NxL5Yzu5/bt/AwClAeuDMAQqRTGGBYdXyGTJFgmVSfEJ0ImdyJWHnoatRW8EEUNFgsQCcYHOAiCCaYK8guvDXYPHRHRErcUthZKGWQcmB8oIycnPyvcLsQxJDTcNVc2KzXPMggwmSxgKPgjCiCCHPQYwRVAE/IQhg4MDLcJXwewBKIBg/5/+7z4Mvbm8x3y7vD47xzvQO4/7bnrqukS5+bjQODu2z7XddLIzTXJ18S2wPO8UbnVtcOyuq9irfWtBLIst1O8jMMhzvHY7OHF6k70W/zQAaoG2gs9EJwT/haTGm8e0yEdJEEl0CWJJR8j+x7bGtUW/hFRDTkKTgi4Bk8GZQc5CRMLGw1vD5gRrRP5FRkYBxqWHIsflCLJJSspjSyrLy0yczNWM3UyLDG3LgwrTCfqI3cg/BwQGpIX9hSBEk8QJQ7dC44JHQeSBCAC4v9j/dT67/hN95j1+/Ok8mDxve/57QLsj+my5ofjCuAl3PjXndMCz2HKIMYEwtK94Lk+tq+yyK6iqwisPbCatRm7/cJGzsHZQ+NF7NH1p/2gAr8GUgteD0USIBWDGGQc6B9MIrAjZSQDJIMhNx2oGDAUIw85CtkGDQULBBQEmwUbCNwKmQ0pEKcSAhUxFyYZGhu2HZQgbCOgJkEqoC1ZMM8ybDSiNMwz5THULggrQSdjIzUfkRvsGIwWKxRXEugQOQ9nDd0LCQq1B2EFBQOCAP/9rfuP+UX3YvX080PyTPA47vXrNeke5sviM98v2xDX79LfzsfK3cbswqm+orrftgKzCa/1q7urS6/XtNW6ccJgzX3Z1+PZ7OD17/04A/IG4wqODkgR2xPYFmAawx10IOchSSLrIfkfAxw0F6oSHA56CdwFHwR2A90DkAU7CDULWA5yEQEUTBahGNIaqhzzHsUhnCRfJ30qky34LwsyVjMXM38xYy/ELAQpyyQLIaEdhRr6F/wVIxSNEmERBxBnDtwMLAsGCccG0QTOAksABf5I/Ij6kfiX9qj0UPLJ7ybtFOq55m3j/d8o3EjYY9Qx0MbLl8eaw2i/d7scuBi12rFvrnCsF654s+25csAQyY3UCuBy6Rryo/p3AeAFSgm5DM8PWhKMFAEXKhpAHRAfZR8dHygeRBuuFiwSMg4OCjMGzwMBA1gDxQQ2By4KgQ3rEOMTXhbbGF4bZh1DH6ghhCQnJ4QpyyujLbouBy/ILhoulSwSKlEnByXUIisgcx0rGy0ZChf7FCUTYRGpDxwOsQxsC00K7ghCB5sF9wPEAfn+DPwn+ST2BfMS8Drtder755Ll4eL53/jcsNkS1kXSP870yaLFgcGGvc+5hra5s9iwYK74rki0jLsmwo/JH9TY3zjp7vDh+P//fQRlB6kKHA4WEbYTDhbMGOobBh4THhkdDxyyGVcVnxDwDJoJVwYtBK8DdQQnBogIQQtnDsQRjBSRFrkYWhuoHYIf0yHGJJUn+Sn5K2AtAS6oLVEssCouKQknAyRQIdsfjh6SHMYafRk2GHQWrxQUE1gRug9DDusMCAxXCx4KVgiaBrwEzAEd/pn6Xvf385Dwy+2y68Lp8+cZ5uzjguGw3izb/daf0hjOY8nbxOTAcb3xuXq2KLMCsDCuTbBTtm69k8SJzQLZVeST7Z71E/3fAncGFwnvC/0OzhEmFHsWcxlwHPEdfB0XHBgaoha2EdwM+gjDBSMD0AElAtgDWgYLCQAMbw+9EiAVGxdiGfYbSh5/IDkjJSbiKDor9yy0LWAt/CtuKVwmtyOjIY8fsh2vHFMc4Rs4GzIanBiIFm8UURJGELAOqg3+DJgMkQxQDCwLQgm4BkkDEv+V+jb28/Fd7vrrNurB6HDn8+Xa4+bgat2b2WTV7tDyzHnJU8ZNw13Ak73muni40LUls8Oyzrb0vRHFi8y41l7iTewc9JP7KQIsBiYI1gkFDIYO3hCqErIUqhdLGsEaiRkiGNsVsRHWDBAJVwYcBOsCQwMVBQUIRgslDvwQFxSiFhkYfRmUG8wdvh8IIukkqifcKVwr8iuYK1cq1CdlJKAhLyDbHhYdNhyCHKMcIBxqG1waZhgAFs8TnBHtD+wO9w35DJsMmAx5CyUJWgb4Aqn+6PmN9Y7xMO7666Pqe+l+6JHnu+X24gPgsdxy2L7TuM80zP/IS8bDwxfBar7ou964ErXdsie1O7tDwsbJdtM/30vqE/OI+h4BsQW5B8wIfgobDe0PSRK8FA0YMxt1HIwblRnHFmQS/gxRCDwFZgOKAvwC+AQsCKoLjg7oEDYTQRWiFq8XZxnqG7MefiGTJMwnVyqsK7YrsyrIKBkmwyLXH0IeZh2nHD0cqhw3HfccyxsHGt0XUhXMEp8QQw/bDuwO7A7zDuwO6Q10CwUIBgSN/6b6A/ZQ8nnvau3x69/q3OmH6HHmduPt3y3cPNhG1LHQ+834y/zJvsdExaTCvb9rvKi4B7VDtKO4nMBoyaPSYt3B6Fnyj/ln/6EDtQV3BlgHcQnwDO8QMBQHF+oZyxtJG5MY/xS8ELgLDAcxBDgDpQMaBRQHsAmgDA4PbBBYEVoSaROMFG0WgBkvHfcgaiRiJ4wpaCrGKbknESVRIoIfAR1WG/ka4RsjHdMd5B18HT0cDBpfF8MUnhIAEUEQhRBmEZIS8BIPEloQrw3wCSsFLgCC+173GfTI8V3wde+W7jftYusK6Srmt+L83tHbG9my1lrUMNI60BTOOssQx1HCoL0uucK0ULFJsl65osNNzd3WF+L77J70i/nE/SQBAQNHBIIGoQpPEJsV5Bj5GqAcbRwjGUAUoQ8kC58GVQNoAmsDVgVTB8cILgrNC64MmAzhDH0O2hCcE3gXbRxtIXwlOyiaKdQpBCnkJu8jUyFxH8cdjRx8HH8dbx5bHmkdChxLGjYYDhYmFBQTtxLREkMTHBTqFLIUIRO4EOINkwrSBggDqv+6/Cf6tfdr9Unz/fAR7uLqLujF5T7jyeCw3sXcBttV2TbXu9T10cbO7cqSxhnCdb34uA61trIytFO70MX1z33Zp+NG7SD0zPjL/AQANgJPBFgH0guREdwW/xkuG3sbHRpQFn4RMQ1YCeAF1APDAxoFDAfPCJcJtAkECkgKZQokC18NmxBKFNYY9R2LIuMlpSevJ6gmMCVKI/IgDR/6HSodbRwUHFAccBwdHAobNBlTFwAWDxU8FA4UbxTqFBgVJBUkFU0UlRIcEEINdgraB1YFeQKj/8j8l/lM9gXz+O/27Bvq1ucZ5svkjuMF4i/gEN6V27LYm9WV0p3Pi8whyV3FOcE7vZO5PrbxtJy4icE0zCfW09+Z6bnxJvcc+8f+5AFCBIIGkglDDtsTJRjeGQIaBhkrFsQROA2aCbgGbwRrAxQE8QX5Bx8JHwnPCNoIHAneCeoLZw+LE9oXVxzHIF0kWCaUJnwl4iMmInQgBx8cHpkd/BwUHA4b1BlpGEkXuhZeFu8V1RU4FssWThegF3wXrhZ5FREUaxLJEF4Puw2qC2wJDAccBHYAh/yO+MX0jvH77tbsIevt6bDoEuc55VfjMuGW3ubbS9nA1iLUN9EAzmHKTsZ8wWe8iLd4s/Ky1rj7w7/P69m64zrtRPRo+Lz7Xf+GAg0F6Ac6DF8SnBhTHMUcSRt/GPATlw45CooHqQU5BPcDEQXhBiYIEgjvBvkF1wVsBi8I0gvVEAAWyhohH9QihSWGJr8lDSRiIjYhUiCkH1kf0R5/HYwbXxkPF+UUixNdEyMUSxW2Fg0YBhliGeQYoxf8FVEU0RKREacQKRBnD9UNWgvwB88DIP9I+uD1SPK57yLuHe1T7JTrZOpU6I3lh+Jy33XcFNpU2MDW1dR10mPPcMunxgrBTLsItjey9rLQurLHuNS632/pYPET9mP4nvqz/SQBxQTlCBcOshTbGrkdvRymGToVdg/zCZoGkwWHBbUFRgYUB98HEgjVBrwEXQOEA/sEEghRDaQTYhnMHdkgviKaI3AjSSLmIB8gCiD0H98fvh+zHiUcpBhoFZIShRDMD+sQfRODFvEYLhpoGtQZXRgIFvQT1RJ0Ek4SThJrEs4R6g9mDK4HdQJ0/ff4IPWP8jnxVfAu79ftZ+x56tbnv+Tg4YzfyN1b3BrbwdnS1+bU+dAmzJvGfsCWul61tLFUsj26ysd61XPgUulV8Bn0jfW69+z7JAFvBp8L+BDLFuob4R3hG/AXHhN8DVYIzgUWBikHuQe1BzMHTwYmBW4DjAHOACAC3gTdCJcOKRW4GjkeGyDqICwhLCEYIRghkiFuIpkiySFhIDkevhpQFlcSzA+oDqAOew9pEYwUkhfsGK0YHhhfF/wVnRREFAIVvRXbFRgVhhM4EbcN9wilAxv/f/tO+MP1TvRN87TxS++R7CDq++cS5i7kpuKX4XzgxN5g3M3Zx9a80tbNyMjIw6G+YblhtFCx77M0vqrMydn843Dsh/Ig9Rn2CPmU/t4Eewo8DwEUBhmbHJscbxkyFWwQAguWBjcFaAaxB7UHvAZDBaEDAwJgAIX/jABiAwMHfQs4EVMX7RtfHmgfACB0IM0gOiEBIigj1iM0I0shsx5+G3UXVBM9ENYOIw/NEGQTXhaDGA4ZLRiZFi0VPBTpEyYUBxUiFqIW/BU8FGkRdA2vCLsDiP9Q/Ar6QfiG9r30mPLO75Hsqule557lJ+Tz4uzh2eCD36TdONv41xvUuM8xy6fGEMJuvau4y7SxtKC7b8hR1s/h7uq58Q31x/VQ97n77wFmCPcNqhLOFhAa6xqtGM0UnxAlDN8HmwU9BgEI3QhfCLgGfQRYArAA0f+HAHYDmAfdC28QjhUQGrQcxx1FHqseIR/GH9wgBSLhIrki3CDhHWUathYNE1cQQA+MD/gQIRNSFdgWeBcHF4oV2xMqE5MTdhSbFcsWLBciFtsTohDcDN0IJgWuAaD+avyq+tD4hvbp8xPx1+206nnoRefP5qrmXeY95WPj4uC/3QzaGtZj0rHO4MoEx8fCub3itzmzJrRGvajLydk55YDuxfS09lv2H/h0/XUE+QpaEOoU1hhMG9saqhegE4QP3AqzBiMFnwa2CEcJRQgwBp4DDgEr/73+oAC3BIsJDQ60EnwXDhvFHEkdsh1WHjUfdCDwIVsjFSQ+I28gjRyDGJoUVRG3DzoQ/hEXFDMW3RduGMUXOxZiFCETIRM8FJ8V9RbrF4EXLRWUEaoNvgkHBtYCQwAd/jP8K/qQ93L0NvER7g3rpOhe5wvnAueq5p7lp+PR4Grd0NlM1jfTR9AazYfJScVQwE66ZbRisnG49cVp1UHiC+w98372+vWm9UT5fgCVCF4PbBRDGNIa1xq9F1QTcw/dC0AI6AV3BtoITQqfCVgHTwRaASj/UP7D/8cDWAl1Do0STBamGXsbvxvqG+schB4rILghHCP7I3gjxyBkHK8XvhONEDsO0Q1eD8sR4BNIFTMWXhaiFVkUWBNdE6YUZha0F1EYGRh3FjYTFQ9eC18IxgWQA4ABpv9x/ab6Mved84Tw6O2Y6/vpYeld6VXpYOjn5qLkreFD3uTa7NcU1XjSMM9Fy5vGcMEzu/m0WrKSt9vE4dS34tbs1fPK9sf1U/T99mH+qAe/D4oVQRnxGvsZFhYrESMNYQr+B14G5gZCCcMKzQnhBkMDBwDB/S39IP/PAxEKqQ96EzsWYBiAGZUZ4hmZG0oe2SChIrcj2yOcIo8fDhttFsgSVxDnDuMOWhCnEpAUfRXSFb0VKRVWFOMTbBT0FaoXnBh1GEIX/xSpEbINOQrkBzAGUgQUAo3/oPw2+Xf18/EY7/7sh+uN6gPq2Olr6SHo6+Up4yzgIt022p/XRNV90izPU8vuxkfCcb25uBm2v7lvxdjUH+Kq623yBvbK9Y/01vbm/XIHNRAFFuwYyBl6GLIUxg9pDDALVgpSCWQJrgpSC94Jogb4AiEA6P5W/4kB6AW4C9UQyhM1FVUWNBfMF/QYUBuBHlAh+iIxIxYiFiAqHWcZqRUUE+QRkRGpEWQSqBO/FBgVnRTgE3ETkBMcFP8URBaKF9IXsRahFDQSkA/LDDwKBQg5BioElAGL/i/76PeU9IbxKe+97RDtgOzd6/Tqmemm5w/lPOKl32/dYtsY2WbWPNOiz7jLO8c7wkq9NLnVt5m8msjF16rkOu1x8rH0HPTM81n3Z/+CCXgS4hdsGYYYIhZFEhwO2gvECwgMvAufC+oLTwviCFAF1QG3/5b/RAFgBKoImQ1+ETIThhMJFDUVzhb0GAccYB/OIaoi8CEKIKUdChtRGM0VORTKE8UTsBPWE8gUohVLFVkUxRPWE0oU0BR5FSsWjBYWFm8UGxIYEGAOSwzeCa4HrQViA2UAKf31+ez2CPRP8S7v8O157SbtPuzW6h/p+uY/5H/hP99y3abbW9mI1lTTos/6yqrFqcCSvKm59LkowdLOP92z5yfu4fHL8uHxBfPr+KgCTg0yFZAYCBiOFTgSLQ46Cz0LBg0CDpIN0wzdC74JdAYFA5sAIQCUATkEdQdPC1EP6BGBEp4SpBOOFfMX4xo8HikhkSIsIkQgth1vG4QZmRfvFS0VJBXIFNMT3RKKEsQSBBNHE9sTshSFFdUVghUHFYwU0xN8EtoQhA8qDksM0gkzB4kEnwGd/nH7nvhb9nL0bfJR8Gvu/uzK65LqgOlc6Nbm0+Rz4hvg/t3Y21LZXdYe05HPjcspx/TCGL/Ku1y7X8HZzdjbhuYd7RPxpPJU8jDzOPhsAd0L1hMsF34WCRT4EIgNHwtlC54NQA/eDloNnwtgCWwGdgO4AfoBBgSuBjIJ4wvTDgARnBG/EeISSxVDGCcb+h0nIBQhdyB4HhccXBpOGUwYGxczFugVzRVlFbcURBReFHMUShQcFF4UDxVIFdAUARQyE3QSdxE1ENMOWg2FC90IywXTAhAAaP2Z+tf3d/WA86bxye817hDtE+zF6g3pcOcE5nfkoeKv4KfeJdzx2ETVc9HIzS/Km8YSw8G/Rr3svY7EftAa3Vjm7OsU73PwHPGn8yf6xwOEDQkU0hUJFBYRZA5mDNoLhA0PEC4R9g9WDZAK6Ad2BdgDdgOOBMcGHAnZCmEMSg72D9oQvxGoE5wWxRltHIQe6B8nIEgfkB2xG3oa8hlKGQgYuha9FbcUnBP/EioT0xNvFJ0UfBRKFEQUPBTKEyoTtBJCEmkRExCLDgENBwt3CK0F2gJgABH+nPsI+XT2MfQE8vDvWu5U7Zrsretk6uPoKOcg5QLj/+D03tbcftrS197UttFLzlrKIMY7wjW/gL7gwlbNS9qZ5HXqOu1r7vLu1PBs9rv/Jgo0EmUV4xNlEIENCAzvC7sN3hD/EmQSWQ+fC24ILAb4BOoE8QUBCDIKbwvmC6AMCA6ED/IQ+hIAFmcZLBz6HdQe1B4xHi8dIBx+G4gbdxt6GvQY5hdXF5kWohUkFU8VeRU6FbIUMBS+E1ATpxK2EfwQsBBvEKEPOw6GDIwKDQhIBb0CcwBH/vj7Vfl+9uHzzfH4713uKe1b7I3rPepg6F3mXeRI4kngRt4o3Aja0tdc1VvS384SyynHkcMKwY/AUsTNzUTaiOTc6bLrbOx/7SrwHPZd/7AJnBGAFGsSSg6iC28LBg26D+US7RTsEyQQigsbCJEGnwZtB3cIvgkCC5YLVwtSC4YMtA4IEW4TGRbxGGob3RxiHUkdGR0QHfwcvRx8HAcc0hqkGIwWohWwFQ4WRBZBFskVwxR9E0kSpRGuERsSFBJVEVIQZw9kDgkNdAvFCQ0IEwb3A9wBqv9o/d36/vcN9aDyEPEK8DbvXe4/7Zjrd+lj543l/OPL4o7hwt8/3UTaCNep02HQcM3MyjfI5MU6xGjE88iA0njdOeWn6BTqkOvG7bzxb/g4AfMJug/yEGQONQt+CkIM+A7HEREUkBRFEhQODgrTB7EH3QgeCqEKvgrcCrcKQAp2ClAMLg/+EVEUSRYQGJIZtRpaG6obLBz8HG4dDR0PHN4aXxl4FxYWERbyFpkXVxc7FowU+hLyEYgRdxGuEegRWBHMD+INgwzjC14LhAocCSUH3gR5AgcAr/2C+5T5cvft9JXy1PCX74DuUO3162Tq0uhq5y/m3+SO4w7iKOCu3fDahNhA1vHTkNH0zhnMNckVx3HHVMxp1eveBuVN5+/n/OiY63PwvvdDAPkHwgyBDUkLLQm0CcsMmxC2E3kVJBV8EsUOogsOClkK0gv5DNwM0gvLCh4KwQkJCpoLLQ7aEAgTgBSCFYMWvRfsGNkZqRqmG4IclhzHG4UaDhm0FxQXQhfIFxUY4hfhFu0UoxIFEXkQhRC1EIUQoQ/3DQ8MiQpkCbYILwhpB/kFvgNSARf/Av0H+zH5Xvd/9avzHfLA8HDvTe4y7frrl+pS6UPoF+fF5V3kuuLZ4Ljen9zC2tzY+tby1MHStNAfz3HO6s/Q1Cjcw+JM5nvnbehw6iLuu/OE+v0A/QXMCBcJ8AfTB1EKXQ7sEekTCRSKEhMQ1Q2GDD8MAQ1PDs0OoQ2WCx4KxQkyCkkL9QzKDkEQUBEUEpUSShPDFKIWKhj+GH0ZxRmiGRcZWBh8F8QW6RYIGPQYxhh8F3AVJRNEEXQQihCnED0QAA/WDDkKEggiBxkHDweFBjcFBQNoACf+mPyc+7P6uvlV+Dn29/Nc8pHxJPHP8EXwQu+97RPsxerL6ffoIejx5tzkb+KV4FXfQ97k3D3bVdmG1wHW4dQI1c/XZ92K43PnXOg36E3pbOxB8fP2jPwwAVsExgWpBYIFKQfjCi4PFBLREuERKRDBDhcOFA6XDnMPBxCJD90N6gvqChwLMwx0DW4OCQ9qD+0PaBDrEMcRQBPlFA4WexaDFoMWmRaiFm0W7xWwFVUWeBcBGFMXohWwE/4R0hBSEAIQXg8XDj8M0glHB7EFUAVzBTcFCwQgAv//Kv7o/DP8k/vD+qz5OPhT9or0hfM98zDzz/L28ZjwIO/s7TftgOxp60LqROku6MrmReXG4zfi3eDH35bee92c3ODbtNvs3Mffs+Px5nnoFunm6d3rHO988/b3vPuP/nYAzAHaAqIElAckCxcOkA+dD/0OYA5nDh8P3A9SEG8QJBA5DwIOIw0GDZkNYA79DiMP8A7FDgYPqQ9oEDsRChLIEjYTQxMlEyETQxNuE5cTbhNKE9MTmhSyFOMTThJ5EBUPSg7lDScN2gsrCmsIqgYVBRwE2AO+AzsDAwIuAFn+8fxI/An8evtz+jH5uvdC9iD1lPS99Pz03/QZ9M/yVvFd8N/vse+G78TurO1T7Pzqs+nP6EPorufx5uvly+Sn4/bineLZ4gXkBOYx6KLpU+rO6uTr7O3U8Bz0L/eg+Yb7Tv3+/tIA+AKmBXMIkAraC1gMewy2DGcNbg40D2oPQw/nDlMOxw2NDbcNHA6GDs0O2w6oDosO3g57DxwQjRDvEDgRTBFEEUQROBEWEfwQxhBgEBwQQRCFEIUQAhDFDjsN3QsOC9QKiQrKCZIIDAeHBUcEhAM0A/gCeQJ8AQ0AZP77/Ej8IvzZ+yH7G/rJ+Hj3nPZg9mz2VvYc9nr1lPSi8wrz4PLB8ozy9vEk8T3waO+r7iruxu0u7cjsW+yh66Pq2OmM6YzpyOlC6h7rNOwp7bXt/e2M7snvzfEx9Fv2Avhc+dj6g/xZ/kAAPwJHBBYGigd8CAYJggk8CikLCAyRDLkMxwzkDB4Naw3EDSUOlw4OD2cPhA92D3MPnQ/qDx8QHxDxD6YPYQ80D/0OuQ5YDvMNgQ1FDVoNZw0jDXUMkQuMCqMJFAm+CGIIsQe8BqEFhQSlAxADywJYAokBfgBr/2H+lv0P/Zj8DPxD+3D6oPnv+F/4/vfP96r3Xvfs9nT2//Wq9ZD1cPU99fD0m/RE9NXza/M48wrzyPJ/8iHyzfF98TnxBvHo8MrwnPB68ITw2PB48TLyqfLt8jXz0PPf9C32ePeO+I/5lfrF+/b8Cf49/5MA8gE0AyQE4gSQBWMGjwe2CMoJjAocC6cLNgzWDGcN7g1kDtYOJg9WD2oPag97D4QPkA+ED00PBg+tDlMO/w2ZDTENuQw/DM0LTwvjCl4KqwnyCDsIrgcZB58GDgY3BWAEngPwAlACswEAAUsAjf/L/gz+aP3I/Cv8n/v/+mf60/lE+cn4X/j+97r3f/cv9+/2o/Zx9lP2PvYo9hD28fXY9cr1qvWV9ZX1iPWI9Y31iPV39Xf1hPWQ9a31u/W29cr16fUT9kz2n/b99mL3yPcp+Jv4HPnK+ZX6YPsf/Nn8iv1M/jX/FQAAAeEBvQKZA2cEQwUOBtIGlAdOCP8IkgkeCpMK/gplC8QLDwxLDG0MhgylDJsMlAx7DGYMPwwIDNILigswC88KYQr9CbQJRwnMCE4IwgctB6cGMAaxBSsFlwT3A04DywI6AqIBCgFtAN3/QP+2/gn+a/3Z/FT8vPs2+7v6K/rC+VX57/iW+E74+/fD94f3RfcV9+/25/bS9sH2tPa59sH2wfbZ9vP2Efc390j3YveV98j37fc1+Hn4pPja+BT5ZPms+e35OPp7+tH6MvuG++z7UPy6/DX9s/1E/sv+Vv/m/3YAGwG4AVgC/AKoA1IE+wSpBTMGzQZ1BwUImQgUCX0J5wlACpgK4AocC0ELVwteC14LWgtGCxwL2QqdCk0K6gmLCQYJhAgFCGkH0gYzBowF3gQ5BIQDvQIIAjwBggDR/xv/Wf6W/ej8SPyn+wP7cPrX+VX50PhV+O33h/cv9972nPZP9iH2//XY9cD1svWy9bb10fXu9RP2U/aG9s72L/eH9/D3VfjJ+Dv5qPkn+qr6Ofu8+0D80Pxo/QX+l/4j/6//NwC4AEkB1QE/AqgCFgOLA/cDVgS8BA0FagW1BQoGSQZ3BrMG4QYUBzYHUwdlB2UHbQd1B3UHZQdYBzMHGQcAB80GmgZoBiQG4AWmBVkFCQWwBFIE+gOeA0AD1gJ8AhQCvAFXAfEAmwAyAOb/hf8o/9D+d/4d/tf9lv1G/RP90PyV/GX8M/wa/Pj71vu0+637l/uG+477dPt6+4L7jvuX+637vPvF+/T7APww/FT8gPyd/Lr86PwY/VL9ff2z/dr9Cf5E/nr+oP7T/g3/K/9r/57/zP///yEAQwBoAJMAvgDoAOsAGwEzAUkBZgF3AYwBpwG/AcwB3AHcAdwB3AHkAeoB/gEMAvoB9wHkAdAB2QHqAfIBzAHMAaIBxwFsAU4DkxAHGvYPywC0+8cDJAuwCW8E3/5y/gMCagU8BfQAXP7A/5sCaAKU/tn7vP3rAn0EKwDu+nH7SwBtAlQAyf0n/sP/VAC7/yP/7/19/QP/OgDD/6/9GP0i/rr+ev6l/tD+O/5M/tj+V/3t/Ez+ZP/1/t/+tQAVAFz+6/3i/13/Wf4J/lb/3AHA/9D+ewDV//7+swFOA+7/s/r8/7wGWAL3/e3+CAPvAdv+uAKLA2sDIAKR/VIB/QVAAzD9qvou/hUF+gH0+zH/Sf93/gL9GP3hAQUBiv3o/Nr9FgFzAHn9TQGF/7H+NQRX+xv6bgXkA7P9w/rR//kFRP6X+00BDALg+qP7JgWuB4X/nfMo/8wDzQRjAfb23QNqBbgB2Po4+s4HLwgD++X3bgV3Bt8Ch/n8+XkHkAPb+VP68gi2A6b1uftuAxAEhvu6+TAB1QTJ/Qj0I/9KCQX+ZPbK+/wCEARL/bz21QFPBov5XfokAekDOP0I+bwGcgzLArz4cf0tDvAJzPjJ+BYGdQmV/Ir4VADkB0MFkPxx/fwCJgOE+oH5+AQJCEP79fQTASQG7fy6+TEE7wa//CT7DgEGBDj/ZPtlAEADDQAw/bP9Bv/H/hT+4v8TAcn9n/0r/9n7ff1k/8v+fP+O/bH+2/49/xv/V/2s/un/4wCW/xP9Hf7xAED//v7J/f0AbwRb/K78BQGW/1n+8QAEAHj8R/7SAOMAc/yM/AAApAANAGr+g/5t/gcA8QBj/cj8Ev/J/1kAiP4b/d38QPz1/tj/i/7v/Sb8dPup/iYA/v5z/BL8Yf6g/pb/s/2W/bz9/P0XAusARv0E/PX+tQDDAJ7/w/yx/kkBIQDh/f/9Ev8mAAMC5AEx///9Lv7gAE4DHgHl/i7+ewBHAjMBQwC1ABUA8//MAdMCnwEU/lD+zgIfBF0AFP5a/w4BEwFsAcwBzP9Q/qD+QgJuA10AKf2A/dkB2gJzAK/93v3XAJEB7v92AOn/nf7+/rUA9wFLALT/Bf7Y/kQBzgDr/d79SQEuABT+0P7GADX/dP2q/0ICqgE//of9EADZAdj/FP60/2YBMgAS/w0AVADd/+b/ewBeAUkBfgDz////AAAdALgB5AH0ALUA4AB0AdIAAACMAD8C5AIsAloB9v9r/3sA1QFTAggCYwEnAZQBlAEwARMBqgExAuEB4QEPAmYBAAEnAWMBmQGJAVoB6wBgAK0AhQGFATwBFQBd/zoAkACMAHYAHQDJ/3z/ZP/A/3P/Wf6D/nj///+3/53+uf2W/ZT+9v9QAIH/ev7r/aT9Wf41/yv/8P71/vX+0/7b/t/+Ev+m/6kAPAFdAGv/kP9AAHYArQAAAcMAQADp/9X/7v9tAFcBjAE8AQABywCgALAAEwEzAZEB6gGnAQABSwBgADgBHQJcAgwCfAE4AVIBPAFEAWwBUgEwAUkBVwHgAAQA4v9dALgA8QCkAOb/a/9n/4j/yf+e/9j+Wf4n/uv94f0i/kz+DP6n/X39V/1B/Vf9cf1x/Uv9V/2H/cn9Gf4R/sT9uf0F/pf+2/6P/kf+Iv69/tX/AADR/6//3f/LAIkBGwFdAF0AMwExApICigJCAvIBWAIBA8UCKQJQAhsD6QPkA0kDwAKDAvgC1AMUBAsE+gN2Ay8DVQMjA8sCuAK4AnwCFwLkAaoBHgHLAOAAzgCCACEAt/9d/xv/5f7C/rr+j/44/uH9kf2f/az9kf2b/Rj9e/xz/E38GvwV/O/7BPwV/AT8VPxl/FT8pvwP/cT95v1x/Xn9r/3v/Yj+9f49/13/Rf+B/+L/QADjAGwB3AEXAgMCLAJfAo8CDQOIA+kD7gOeA4gDpQMLBHoEZARbBGAEJAQGBLsDqAPdA/EDTwRSBO4DiwMFA/gCQwNuA5kDQwOKAu8BSQEAAcsAYAD8/3z/Mf/5/oP+Bf6b/Uv9Qf1x/Wj9oPyj+yH7w/qz+hT7PvsH+8P6iPqE+oT6lfrY+mT7M/yr/Iz8MPwM/Ej8c/yY/Pb8D/0P/Uv9iv2O/aT9av6I/20A6ADgAL4A9AAnATMBxAFtArUCtQKPAmQCUAKsAjQDlAPMA90DkAOIA+QDAgRSBLcElwQxBBwEFAQLBBwEHAQcBAsE1ANAA6gCZAI6Av4BAwLHAf0AIQCI/1r/ZP94/3D/A/9Z/sH9Uv1X/Yf9Rv0F/cP8Zfzj+0/71PqN+sP6Oftp+xz7lfpA+lP6nvr/+kz7Q/sv+3r77/sJ/Of7M/yu/Bv9Bf7T/tj+iP6s/lP///+4ACQBAAHjAMYAqQC+ACcBrgEgAqMCHgMvA/gCLwOoAx8EmgQNBS4FqwSJBKgEhQSOBJ8EhQRsBGcEFwS2A68DlANVA4sD7gO7A04D3wJKAtABpwGJAR4BtQA3AJn/Sf8g/9j+qf6D/iL+uf0p/ZD8QPwm/Cb8Evzn+4L76frA+v/6Nvt0+7z7sPut++f7BPwr/DD8Rfyu/BP9Rv1G/Vz9cf2n/Tj+2/5n/57/jf9k/7T/IQBAAK0AMAFmAXcBxAHqAbgB4QFtAggDTgNDAzQDOAOQA+kDJARsBGAEKgQQBPoDxwNOA/gC/AL8AggDBQOoAjoC4QH6ATYCSgIpAtUBzAGqASwBdgDA/3j/hf+e/6b/c//+/oj+UP5V/ln+Iv4U/i7+J/4Z/vf9zf2R/YD9rP3E/d79uf2O/Yr9ff1o/Wj9pP33/S7+TP5t/n7+j/7H/tj+3/7Y/v7+Tv9O/1b/ZP+e/wAANwCCAL4AywDDAL4A+QAwAVIBiQGRAW8BdAF8AZEBkQF8AbwB2QHQAdwBpwGZAbMBmQGqAccB+gHvAZkBkQF0AU0BbAGAAWYBJwH5AL4AYAAhAPz/wP/m/wcABAD8/9X/qv94/2f/Pf8G/9/+rP6X/oj+XP5Q/nL+pf7Y/rH+Yf44/i7+Mf5q/rH+uv6s/rb+0/7f/gb/Nf8x/zH/Sf9A/1b/fP+I/7T//P8yAEAAOgA6ACsA///i//b/9v/i/9H/yf/m/w0AMgCHAMMA6AAFAfkA+QDSAKkAkwBLAB0AOgAhAOn/w/+e/6b/wP/d/wAAQABoAGgAXQBgADIA2P/A/5n/eP+B/3j/K//w/sv+j/6L/sv+5f71/jH/U/9O/zj/KP8N//D+Df81/zH/Nf8g/zH/Vv9a/3j/fP+B/6r/5v8rAFkAXQBDAEAALgA6AFAAUABlAGUAggCtAIIAdgCHAGgAbQCCAHsAYABAAC4AQwBDAEMAaAB2AJMAoABlADoAGAAEABAAEAD//+n/6f8QABUA///8/wAAGAAmAA0A7v+m/4X/hf98/4X/Z/9a/07/Sf9O/zH/U/+F/6P/4v8AAPz/0f+W/3P/Rf9F/1P/Tv9T/1P/Wv9z/6r/zP/8/0gAaAB+AJAAfgBLACYA/P/d/+n/AAAHAPb///8EACEAXQB7AIwAjACCAHYAaABDAA0A8//m/+b/3f/d//P//P8NAC4AJgAYAAAA5v/J/57/c/9F/0X/ZP98/6P/qv+m/6b/o/+e/6P/nv+q/7f/yf/J/57/gf9W/0n/Xf9w/43/kP+e/5n/pv+0/6P/pv+3/9j/5v/Y/8n/u/+q/5n/nv+e/7v/w//M/+L/5v/m/+L/7v///wcAGAAmABgAAADz/+b/4v/m//z/AAAYADcALgAyADoANwBLAFQASwBQAGUAewBoAFkAWQBUAGUAjACHAIwAoACTAIcAggBdAEAASwBdAHYAggB2AGAAVABIAB0AAAD//wAADQAuAEAAMgAuAEAAWQBoAHMAWQBAACYAEAAEAP//AADz/9j/3f/m/9X/0f/Y/+n/BAAhAEMAUABLAC4ABwDz/+L/4v/i/+b/4v/M/7v/o/+m/8z/6f8AABgAHQAQAAAA//8HABgAJgArABgAHQAYAAQABwAVAB0AJgA6AEMAOgArABAAAAD8//z/DQANAPz/7v/m/+b/AAAQABUAGAAYACYAFQAEAAAA/P/u/+L/6f/m//P/7v/Y/7T/jf9r/13/a/9n/2f/gf+W/5n/nv+W/4j/iP+F/3z/fP9w/3j/iP+N/43/jf+e/7f/w/+3/6r/o/+m/7f/0f/i/+b/7v/d/9j/1f/D/7v/w//V/+b/6f/i/+b/1f/D/6//nv+q/7f/zP/m//P//P8AAAAA///8/+7/8/////z/AAAEAPz/AAAEAA0AHQAmAC4ALgArADcAQwA3ADcAQABDADoANwBAAEMAUABdAGUAcwB2AIwA4wC4AHYAhwANAAAAMgBQAIIAdgCQAL4A+QBEAVoBdwGJAYABqgGzAdUB7wHVARcCPwJYAm0CUAI6AiUCDwL3AbwBnwF3AVcBVwEwAQoB6ADSAMYAmwCHAFkAJgANAOn/w/+W/1P/K/8D/9v+y/6g/n7+UP4Z/vz90v2v/Z/9lv2W/ZH9pP28/c393v38/RH+Iv44/kT+R/5Z/nL+iP6s/tP+8P4b/0D/Xf+F/6P/u//D/9H/5v/u/wAABAAmAEAASABtAHMAggCMAIwAoACbAJsAmACCAHYAbQBoAGUAYABoAGUAbQBzAGUAZQBdAFAAUABLAEAAMgAuACsAIQAYABUAEAAHAAAA//////b/8//u/+7/7v/p/+7/9v/8/wAAAAD//wAAAAD9/wcAEAAdACYAKwArACsAMgAyADoAOgA3ADcANwA3ADcAMgAyADcASABQAFAAVABLAEAAQwA6AEAAQwBQAFkAWQBZAFAAYABZAFAAUABIADoANwAyACEAIQAhACEAKwA3AEMASwBLAEgAQwBAAC4AIQAdABAADQAAAAAA///8//z///8HAAAAAAAEAP//9v/z//P/7v/p/+7//P/2////AAAAAAQAFQAhAC4ALgAmAB0AIQAmAB0AHQAmAC4AOgBIAEgAQwBLAFQAWQBZAFQASwBQAEsAOgA3ADcAMgArACsAJgAyAEAAMgA3ADoAMgA3AC4AKwAdAA0ABAAAAAAAAAAEAAQABAAEAAcADQAHAAQABAANAAQABwANAAQABAAEAAcABAANABUAFQAVABAAHQAdACEAIQAVAB0AHQAYAB0AFQAYAA0AEAAuAC4AMgA3ADcAOgBDAEMASABLAEsAUABgAGUAbQBzAHMAbQBoAGgAXQBZAFQASwBLAEsAVABgAGAAYABoAGgAbQBoAGUAYABgAGAAXQBgAFQASwBQAEsAQwBDAEMAOgBAAEsAQABAADIALgAyACsALgA3AEAAQABAAEMAQwA6ADIAMgAuAC4ALgAuACsAJgAhABUAFQAVAA0ADQAQABUAHQAyADIAOgBDADcANwAuACYAGAAVABUAFQAhACYALgAuACsAJgAdABUADQAAAPz////2//P/8//u//P//P/8//P/9v/2//b/5v/Y/9H/1f/d/9X/3f/i/+L/4v/d/93/2P/V/9X/0f/Y/93/2P/V/9X/5v/m//P/8//z/wAAAAANABAAHQAdACEAJgAhACYAJgAmACEAJgAmACEAJgArADIANwBDAEsASwBUAFAAQwA6ADIAJgAdAB0AHQAhACYAKwAyADIALgAmABUABwD8/+n/4v/V/9X/2P/V/9j/4v/i/+b/6f/i/9j/2P/J/8P/yf/D/8z/0f/R/9X/2P/V/93/1f/Y/9H/wP/Y/9X/4v/p/9j/4v/i/93/3f/i/+n/7v/2/+7/5v/m/+b/5v/m/+n/9v///wAABAD///b/7v/m/+L/4v/V/9X/2P/V/9j/2P/i/+L/5v/p/9X/zP/J/8D/t/+0/7v/tP+0/7v/t/+3/6//t/+3/7T/u/+3/8D/w//M/9H/0f/V/8z/w//D/8P/w//M/9j/4v/m//b//P8AAAQAAAAEAP/////2//b/7v/p//P/9v/8/wAAAAD//w0ABAAEAAAA//////b/8//z/+7/7v/2////BAAHAAQABAAEAAQAEAANABAAGAAVABUAEAAHAAQAEAAQABgAIQArAC4AQABIAEAAQwA3ADcALgAmAC4AJgAhABgAGAAdAB0AIQAdABgAGAAYABgAHQAhACEAHQAhACEAHQAYABAABwAEAAQA//8AAP//AAAAAPz/AAAEAAQABAAAAAAA+v////z/9v/2//b/9v///wAAAAAEAA0ABAAAAP/////2/+7/5v/i/+L/5v/z//P//P8AAP//AAD///z/9v/z//P/9v/8////BAAAAAAA//8EAAAA6f/8//z/8////wAABAAVABgAFQAYABAABwAAAPz/9v8AAAcAAAAQACEAKwAhACEAIQAYABAABAD//wAABAAAAAcABwANAA0ABwAAAAAA/P/8//b/7v/2//b/9v/u//P/8//z//z/9v///////P/2////AAD//wAAAAAEAAcABwAHABgAHQAdACsAMgAyADcANwAuACsAKwAyADIAOgA6ADoAQABDADoAKwAdAB0AFQAEAAAAAAAHABAAHQAmACEAJgAVAAAA8//i/9H/zP/D/8P/zP/R/9j/5v/p/+b/1f/V/8P/r/+q/5n/kP+W/57/o/+v/7v/t/+3/7v/wP/A/8D/wP/J/8n/yf/J/9j/6f/u/+7/9v///wAAAAAHABgAJgAyAEMASABIAEgASABIAEgAQwBLAFQAZQBtAHMAcwB2AHMAbQBtAGgAZQBZAFkAXQBQAEsASwBAADoAOgAmACEAGAANABAADQAAAAQAAAD2/+7/5v/V/8P/t/+0/6P/mf+Z/57/mf+Q/5D/jf+N/43/jf+I/5D/iP+I/4X/hf98/3j/hf+F/5D/jf+I/5n/iP+W/5n/hf+Q/43/jf+Z/5n/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DQD2/wMAFwADAAoAIwBCAEIAOAA3ADwANwA1ADcAOgAyACQAKwAkADEAPQA3ACQAHgArACgAKAAuACsAHgAPAAwADwAJAAMA/f/2/+7/6P/6/+7/7v/x/+j/4v/a/9H/0f/R/8j/xP/L/8H/wP/L/8D/wf/J/8T/0f/a/9//3f/g/+D/4//w//T/AAAMABQAFAAQABcAHQAkACsAKwAvADUAPAA/AEsATgBJAEsAPQA9AD0AQAA3ACwAKwAjACYAHgAeAB4AGwASAAoABAAAAAAA+v/w/+j/5f/f/9L/1f/V/8z/wf+9/7r/t//D/8T/vv+4/7f/t/+t/6z/rf+w/6//qf+y/7X/sv+3/7X/tf+6/7r/vf/B/8v/z//S/9X/2v/i/+b/5v/p/+v/8P/x//H//P/8//H/+f/z//P//P/5/wAAAAADAPz/BgAEAAYAAwAAAAAA/P/9//z//P/8//n//P/5//b//P/9//T/+f/2//T//P/3//n/9//3//n//P/5//f/+f/8//z/AAAAAAMABwAEAAQABwAJAAkACQASAA0ADQAPAA8AFQAVABUAFwAdABoAGgAjACAAIwAoACYAKwAvACsAKAAoACQAIQAaABoAFwAUABQADwAQABAADwAQAA0ADQAKAAkADQAJAAYABAAAAAAA/f/8//z/+v/8//b/9v/3//r/+v/6//r/9v/2//n/9v/0//T/9v/2//b/9P/0//T/9v/0//n/9P/0//n/+f/6//n/+v/6//3//f/9/wAA/////wAAAAABAP//AAABAAAAAAABAAYACQAGAAYADAAJAAkADAAJAAkADAAMAAwADwAPABIAEgASABcAGgAbABcAFwAeAB4AGwAeACAAIAAhACEAIQAdABsAHgAhACEAHgAdAB0AHQAdAB0AGwAXABUAEgAMAAkABgAEAAYABAABAAEAAAAAAP/////2//r/+f/0//n/9P/2/+z/7P/u/+X/7P/s/+n/6P/o/+n/6P/p/+n/6f/p/+n/6P/p/+n/6f/u/+7/7P/w//D/8P/z//H/9v/3//b/+v/6////AAAAAAMAAwADAAcACQAHAAkACgAJAAkADAAKAA8AEgAVABQAFAAYABgAGAAVABcAFwAVABUAFwAYABcAFwAXABoAGAAaABgAFQAVABUAGAAXABAADwAPAA8ADQAPAA8ADAAMAAkABAAEAAQAAwABAAAAAAD//////f/8//z/9//3//b/8//z//D/6//s/+7/6f/p/+v/6f/p/+j/6P/o/+j/6P/m/+b/4//l/+X/5f/m/+b/6P/p/+n/6f/p/+v/6//s/+z/7v/u//H/8//x//b/9v/2//n/+v/8//z//f/9/wAAAAD8//z/+v8DAAMABAAGAAYABwAKAAcACQAJAAcACQAKAAkACQAJAAkADAAMAA0ADQANAA8ADQANAAwACgAKAAcABgAGAAcABwAJAAcABgAJAAoACgAJAAcACQAHAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAMAAQAEAAEAAAABAAAAAAAAAP//AAD//wAA///9////AAD//wAAAAABAP///f////3//f/9//3//P/5//n/+v/8//n/+v/5//n/9//2//f/9v/2//b/9v/z//P/9P/z//T/8//z//P/8//z//P/8//2//b/9v/3//f/+f/6//r/+f/6//r//P/9//3//P/8//z//f//////AAAAAAMAAQABAAMAAwABAAQAAwAEAAQABAAEAAMABAADAAMABAAEAAQAAwAEAAMAAQAEAAQABAADAAMAAQAAAAAABgD9/wAAAQD9/wEA/f/6/wEABgAEAAYA+v8DAAAAAwD9/wEABAD8//z/AQADAAEAAwAAAAEAAwABAAMAAwAEAAQABAAEAAQABgAEAAQABgAEAAQABAAEAAQABAAGAAQABgAGAAYABAAGAAcABgAGAAYABgAEAAYABgAEAAYABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAADAAQAAwADAAMAAwADAAMAAwAAAAEAAQAAAAAAAAABAAEAAwABAAEAAQABAAEAAQABAAEAAwABAAMAAwADAAEAAAABAAEAAAADAAAAAAABAAEAAwADAAMAAwAEAAQAAwADAAEAAwAEAAQABAAEAAQABAAEAAQABAAEAAMABAADAAMABAAEAAQAAwADAAMAAwABAAEAAAABAAEAAAAAAPr/AQD6/wYA+v8EAPr//P8AAP//AAAAAP/////9//3//f/9/////f/9//3//f/9//3//f/9//3//f/9//z//f/9//3//f/9//3//f/9//3////9//////////////////////8AAAAABgD8/wAAAwD9/wAAAQD//wEA//8BAAEAAQABAAAAAQAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAAAAAAYA/f8BAAMAAAAGAP//AQABAAAAAAAEAAAAAwADAAEAAAD8////AAABAAEAAQABAAEAAAAAAAAABgABAP///f8AAPr/AQAEAAAABAAEAAAAAAD9//3//f8GAAAA/P8AAPr/BAAGAPz/BAAAAPr/+v8BAP////8AAAAAAwABAAEA//8AAAAAAAAAAAEA/f/8////BAAAAAQA///6////+v8AAP//AAD9//r/AAAAAAQAAQD9/wYAAQD//wQABgD//wMA/////wYA//8BAPz//P8EAAEA/f/6/wYAAAAEAPr//f8AAAAABgD8/wAAAAD/////AAD//wYABgD6/wMAAAD8/wQA//8GAAEABAD6/////f8EAAEA+v/6/wAAAAAGAP//AQAAAAAABgD8//3/AwD///z/AwABAAAAAAABAAAAAAAGAAYAAQAGAAQAAwD8/wYA/f8BAAAABgAAAAEABAADAP//AQADAAEA/P8GAPr///8EAP3//f///wQA//8DAPr/AAAEAAMAAwADAAAABgD8/wYA///9/wQAAwADAPz////8/wMAAwADAP3/AwABAAEAAQAAAAAABgABAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAABAD6//3/+v///wAA/f/9//3/BAAEAAEAAAAAAAAAAwD//wYABgAAAPz/+v8DAPz/AwAAAPz//f/9////AQAAAAQA+v////3/AQD//wAA+v8GAAEAAAD9/wMAAwAEAAQA/P////3/BgABAAMA/P/9//r/BAABAAQAAAD9//z/+v/6//////8DAP3/AAAEAPr/BgAEAAAABgAAAPr/AwD8//z/+v8AAAEAAQAAAAAA//8DAAYA/f8AAAQAAAD6/wYABgD//wAA/P8AAAYABgAEAAAA+v/9//r/AwABAAAAAAAEAPz/+v8BAAAAAQAGAAYABAAAAP3/BAD6//3//f/9/wEABgADAPr/AQAAAAAAAAAAAAYABAAAAAAA/f8AAAAAAQD8/wMAAAAEAAAAAwAAAAAAAwD9//z/AQADAAEAAQAGAAAAAQD9//z//P/6/wEAAQAGAAYAAwD//wMA/f/8//3///8GAAAA+v8GAAYAAwD8/wAA//8AAAEABgD9/wQA\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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AAAGAAYAFQAVAB0AFQA0ADQAHQAkACQALAA8AEsASwBLAFoAQwBLAFoAagBqAGIAagBaAGIAeQBqAHkAiAB5AJAAgQCYAJgAkACnAJgAmACnAKAAoADGAK8ArwDGALcAvgC3AM4AxgC+AM4AzgDOAM4A1QDVANUA5QDdAOwABAHlANUA5QD0APQA5QDlAOUAzgDlAPQA/ADdAOwA9ADdAOwA1QD0AOUAzgDsAN0A5QDlANUA1QDdANUA3QDsAOwA7AC+AMYAxgDGAN0A3QDlAOwA3QDVAN0AvgDdAN0AtwDGAMYAxgDGANUAvgCnAKcAvgC+ALcArwCnAK8AmACvAK8AoACIAJAAmACBAIgAeQCBAIEAkACYAIEAiAB5AIEAeQB5AIgAeQCIAHEAagBqAGoAcQBqAHEAWgBiAHEAUwBxAHkAYgBiAGoAcQBqAGIAcQBiAFMAWgBxAHkAagBxAHEAYgBqAGoAcQB5AHkAcQBiAGIAagBqAHkAgQBqAGoAeQB5AHEAcQBxAHEAWgBxAHEAWgBqAGoAagBaAGIAYgBaAFoASwBDAFoAUwBDAEsASwBLADQAQwBLADwAQwAsACQASwAsABUAHQAGABUADQAAAAYAAAAVAA0A+v/z//P/+v/r//P/3P/j//r/4//z/9T/zP/j/9T/xP/E/9T/vf+t/7X/vf+9/63/pv+1/73/rf+t/63/pv+H/57/tf+e/57/nv+e/57/lv+W/5b/lv+H/5b/j/+H/5b/nv+e/5b/j/9//6b/lv9//4//h/+W/4//pv+e/5b/rf+m/7X/rf+1/57/pv+1/63/tf+m/6b/lv+m/73/zP/M/73/vf/c/8z/xP/U/7X/1P+9/8z/1P+1/73/vf/U/8T/xP/E/8T/zP/M/+P/zP+9/73/4//U/8T/3P/E/73/xP/E/63/xP+t/6b/tf+t/8T/tf+9/7X/pv+W/6b/vf+e/57/nv+e/5b/lv+W/5b/h/+H/4//h/+H/4//f/+H/4f/eP+W/5b/h/9//3D/f/+P/4f/eP+W/4//h/+H/3//h/94/4f/h/+H/57/nv+t/63/j/+P/57/lv+t/7X/pv+t/73/vf+9/73/vf/E/8z/1P/M/9T/6//j/9T/6//6/+v/8//z/wAAAAAAAAAAAAAAAAYABgAAABUADQAGAA0AFQAdACQAJAAsADQALAAkADwAQwA0AFMAUwBLAEsAUwBTAFMAagBqAGoAagB5AHEAgQCQAGoAWgBxAHkAeQB5AHEAgQCIAJAAiACBAIEAoACIAJAAmACIAJgAiACQAJAAiACnAJgAkACYAIgAgQCIAKcArwCYAIgAoAC3AJgAkACYAJgAmACnAJgAmAC3AKcArwCnAK8ApwCgAKAArwC3AJgAoACgAK8AtwDGAMYAoACnAL4AvgCvALcAvgCvAKcArwCnAKcArwCvAK8ArwCvALcAmACvALcApwCvAK8AtwCvALcAkAC3ANUAvgCgAJAArwCvAK8ArwCvALcAoACvAL4AtwDGAL4AvgC3AL4AzgC+AM4AzgC+ANUA5QDVAM4A3QDVANUAvgDGAN0A1QDdAM4A1QDVAM4A3QDVAM4A1QDdANUAxgDOAN0A3QDdAM4AtwDOAMYAtwDGAMYAxgC+ALcAzgC+AK8AtwDGAK8ApwCgALcArwCgALcAkACgAKcAoACgAJAAiABqAIgAgQBiAHEAkACIAIEAgQB5AHkAYgBqAFMAWgBxAEsAQwBDAFoAYgBLAFoAWgA8ADwAUwBDADQAQwBDAEMAPAA8AEsASwBDADwAPABTAFMANABDADwALAAVACQANAA8AEsANAAsADwAQwA0ADQAQwA8ADQAPAA0ACQAJAA8ADwANAA0ADwASwBDACwAPAA0ADQAPAAkADQALAAsACQANAA8ACQANAAsACwAHQAkADQAHQA0ACQALAAdACQAJAAVAB0ADQANAA0AFQAVABUAFQANAAAA+v/6/wAAAAAAAAYAAAD6/9z/4//r/9z/1P/j//P/zP/M/8z/zP/c/63/tf/E/73/zP+m/6b/nv+W/7X/nv+t/57/j/+t/5b/h/+H/4f/cP9w/4f/f/94/2D/aP9w/2j/aP9o/1n/Uf9o/2D/cP9Z/1n/YP9C/1H/YP9g/0n/Uf9Z/2D/Wf9w/2j/Sf9o/2j/cP9g/2j/aP9g/2j/cP9g/1H/cP9//4f/eP94/2j/cP94/3j/cP9w/4f/cP+H/4f/f/9//3//f/94/4//h/+H/4f/h/+P/4f/f/+P/4f/lv+P/4//nv9//5b/j/+H/57/lv+W/4f/j/+t/57/nv/E/7X/tf+m/6b/pv+t/7X/vf+9/5b/tf+1/57/tf+9/7X/rf+e/63/xP+1/7X/vf+t/6b/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
Download .txt
gitextract_31fi3jc2/

├── .github/
│   └── stale.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── LICENSE.md
├── README.md
├── data/
│   └── .gitignore
├── evaluation_tts.py
├── evaluation_vc.py
├── gantts/
│   ├── __init__.py
│   ├── models.py
│   ├── multistream.py
│   └── seqloss.py
├── generated/
│   └── .gitignore
├── hparams.py
├── notebooks/
│   ├── Test RNN VC.ipynb
│   ├── Test TTS.ipynb
│   └── Test VC.ipynb
├── prepare_features_tts.py
├── prepare_features_vc.py
├── release.sh
├── setup.py
├── tests/
│   └── test_gantts.py
├── tox.ini
├── train.py
├── train_gan.sh
├── tts_demo.sh
└── vc_demo.sh
Download .txt
SYMBOL INDEX (95 symbols across 11 files)

FILE: evaluation_tts.py
  function gen_parameters (line 51) | def gen_parameters(y_predicted, Y_mean, Y_std, mge_training=True):
  function gen_waveform (line 103) | def gen_waveform(y_predicted, Y_mean, Y_std, post_filter=False, coef=1.4,
  function _generator_input (line 133) | def _generator_input(hp, x, seed=None):
  function gen_duration (line 143) | def gen_duration(label_path, duration_model, X_min, X_max, Y_mean, Y_std):
  function tts_from_label (line 182) | def tts_from_label(models, label_path, X_min, X_max, Y_mean, Y_std,
  function load_checkpoint (line 228) | def load_checkpoint(model, optimizer, checkpoint_path):
  function get_lab_files (line 236) | def get_lab_files(data_dir, label_dir, test=False):
  function get_wav_files (line 247) | def get_wav_files(data_dir, wav_dir, test=False):

FILE: evaluation_vc.py
  function test_vc_from_path (line 40) | def test_vc_from_path(model, x, fs, data_mean, data_std, diffvc=True):
  function load_checkpoint (line 113) | def load_checkpoint(model, optimizer, checkpoint_path):
  function get_wav_files (line 121) | def get_wav_files(data_dir, wav_dir, test=False):

FILE: gantts/models.py
  class AbstractModel (line 11) | class AbstractModel(object):
    method include_parameter_generation (line 15) | def include_parameter_generation(self):
  class In2OutHighwayNet (line 21) | class In2OutHighwayNet(AbstractModel, nn.Module):
    method __init__ (line 33) | def __init__(self, in_dim=118, out_dim=118, static_dim=118 // 2,
    method include_parameter_generation (line 51) | def include_parameter_generation(self):
    method forward (line 54) | def forward(self, x, R, lengths=None):
  class In2OutRNNHighwayNet (line 72) | class In2OutRNNHighwayNet(AbstractModel, nn.Module):
    method __init__ (line 73) | def __init__(self, in_dim=118, out_dim=118, static_dim=118 // 2,
    method include_parameter_generation (line 89) | def include_parameter_generation(self):
    method forward (line 92) | def forward(self, x, R, lengths=None):
  class MLP (line 121) | class MLP(AbstractModel, nn.Module):
    method __init__ (line 122) | def __init__(self, in_dim=118, out_dim=1, num_hidden=2, hidden_dim=256,
    method forward (line 137) | def forward(self, x, lengths=None):
  class SRURNN (line 145) | class SRURNN(AbstractModel, nn.Module):
    method __init__ (line 146) | def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
    method forward (line 159) | def forward(self, sequence, lengths):
  class GRURNN (line 170) | class GRURNN(AbstractModel, nn.Module):
    method __init__ (line 171) | def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
    method forward (line 181) | def forward(self, sequence, lengths):
  class LSTMRNN (line 193) | class LSTMRNN(AbstractModel, nn.Module):
    method __init__ (line 194) | def __init__(self, in_dim=118, out_dim=118, num_hidden=2, hidden_dim=256,
    method forward (line 204) | def forward(self, sequence, lengths):

FILE: gantts/multistream.py
  function recompute_delta_features (line 15) | def recompute_delta_features(Y, Y_data_mean, Y_data_std,
  function select_streams (line 33) | def select_streams(inputs, stream_sizes=[60, 1, 1, 1],
  function get_static_stream_sizes (line 46) | def get_static_stream_sizes(stream_sizes, has_dynamic_features, num_wind...
  function get_static_features (line 56) | def get_static_features(inputs, num_windows, stream_sizes=[180, 3, 1, 3],
  function multi_stream_mlpg (line 82) | def multi_stream_mlpg(inputs, R,

FILE: gantts/seqloss.py
  function sequence_mask (line 9) | def sequence_mask(sequence_length, max_len=None):
  class MaskedMSELoss (line 27) | class MaskedMSELoss(nn.Module):
    method __init__ (line 28) | def __init__(self):
    method forward (line 32) | def forward(self, input, target, lengths=None, mask=None, max_len=None):

FILE: hparams.py
  function hparams_debug_string (line 9) | def hparams_debug_string(params):

FILE: prepare_features_tts.py
  class LinguisticSource (line 36) | class LinguisticSource(FileDataSource):
    method __init__ (line 37) | def __init__(self, data_root, max_files=None, add_frame_features=False,
    method collect_files (line 46) | def collect_files(self):
    method collect_features (line 55) | def collect_features(self, path):
  class DurationSource (line 70) | class DurationSource(FileDataSource):
    method __init__ (line 71) | def __init__(self, data_root, max_files=None):
    method collect_files (line 75) | def collect_files(self):
    method collect_features (line 84) | def collect_features(self, path):
  class AcousticSource (line 92) | class AcousticSource(FileDataSource):
    method __init__ (line 93) | def __init__(self, data_root, max_files=None):
    method collect_files (line 98) | def collect_files(self):
    method collect_features (line 108) | def collect_features(self, wav_path, label_path):

FILE: prepare_features_vc.py
  class MGCSource (line 37) | class MGCSource(cmu_arctic.WavFileDataSource):
    method __init__ (line 38) | def __init__(self, data_root, speakers, max_files=None):
    method collect_features (line 43) | def collect_features(self, wav_path):

FILE: setup.py
  class build_py (line 24) | class build_py(setuptools.command.build_py.build_py):
    method run (line 26) | def run(self):
    method create_version_file (line 31) | def create_version_file():
  class develop (line 39) | class develop(setuptools.command.develop.develop):
    method run (line 41) | def run(self):

FILE: tests/test_gantts.py
  function test_model (line 17) | def test_model():
  function test_select_streams (line 60) | def test_select_streams():
  function test_get_static_stream_sizes (line 90) | def test_get_static_stream_sizes():
  function test_get_static_features (line 100) | def test_get_static_features():
  function test_multi_stream_mlpg (line 132) | def test_multi_stream_mlpg():

FILE: train.py
  class NPYDataSource (line 71) | class NPYDataSource(FileDataSource):
    method __init__ (line 72) | def __init__(self, dirname, train=True, max_files=None, test=False):
    method collect_files (line 78) | def collect_files(self):
    method collect_features (line 92) | def collect_features(self, path):
  class VCDataset (line 96) | class VCDataset(object):
    method __init__ (line 97) | def __init__(self, X, Y, data_mean, data_std):
    method __getitem__ (line 103) | def __getitem__(self, idx):
    method __len__ (line 108) | def __len__(self):
  class TTSDataset (line 112) | class TTSDataset(object):
    method __init__ (line 113) | def __init__(self, X, Y, X_data_min, X_data_max, Y_data_mean, Y_data_s...
    method __getitem__ (line 121) | def __getitem__(self, idx):
    method __len__ (line 135) | def __len__(self):
  function _pad_2d (line 139) | def _pad_2d(x, max_len):
  function collate_fn (line 145) | def collate_fn(batch):
  function save_checkpoint (line 162) | def save_checkpoint(model, optimizer, epoch, checkpoint_dir, name):
  function get_vc_data_loaders (line 174) | def get_vc_data_loaders(X, Y, data_mean, data_var):
  function get_tts_data_loaders (line 202) | def get_tts_data_loaders(X, Y, X_data_min, X_data_max, Y_data_mean, Y_da...
  function get_selected_static_stream (line 232) | def get_selected_static_stream(y_hat_static):
  function update_discriminator (line 245) | def update_discriminator(model_d, optimizer_d, x, y_static, y_hat_static...
  function update_generator (line 282) | def update_generator(model_g, model_d, optimizer_g,
  function exp_lr_scheduler (line 323) | def exp_lr_scheduler(optimizer, epoch, nepoch, init_lr=0.0001, lr_decay_...
  function apply_generator (line 336) | def apply_generator(model_g, x, R, lengths):
  function inv_scale (line 358) | def inv_scale(mgc, lf0, vuv, bap, Y_mean, Y_std, binalize_vuv=True):
  function split_streams (line 383) | def split_streams(y_static, Y_data_mean, Y_data_std):
  function compute_distortions (line 399) | def compute_distortions(y_static, y_hat_static, Y_data_mean, Y_data_std,...
  function train_loop (line 435) | def train_loop(models, optimizers, dataset_loaders,
  function load_checkpoint (line 651) | def load_checkpoint(model, optimizer, checkpoint_path):
Copy disabled (too large) Download .json
Condensed preview — 28 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,915K chars).
[
  {
    "path": ".github/stale.yml",
    "chars": 1217,
    "preview": "# Number of days of inactivity before an Issue or Pull Request becomes stale\ndaysUntilStale: 60\n\n# Number of days of ina"
  },
  {
    "path": ".gitignore",
    "chars": 2304,
    "preview": "checkpoints*\nlog\ngantts/version.py\n\n# Created by https://www.gitignore.io\n\n### Python ###\n# Byte-compiled / optimized / "
  },
  {
    "path": ".gitmodules",
    "chars": 104,
    "preview": "[submodule \"nnmnkwii_gallery\"]\n\tpath = nnmnkwii_gallery\n\turl = https://github.com/r9y9/nnmnkwii_gallery\n"
  },
  {
    "path": ".travis.yml",
    "chars": 958,
    "preview": "language: python\n\npython:\n  - \"2.7\"\n  - \"3.6\"\n\nnotifications:\n  email: false\n\nbefore_install:\n  - sudo apt-get update\n  "
  },
  {
    "path": "LICENSE.md",
    "chars": 1172,
    "preview": "The tacotron_pytorch package is licensed under the MIT \"Expat\" License:\n\n> Copyright (c) 2017: Ryuichi Yamamoto.\n>\n> Per"
  },
  {
    "path": "README.md",
    "chars": 7270,
    "preview": "# GAN TTS\n\n[![Build Status](https://travis-ci.org/r9y9/gantts.svg?branch=master)](https://travis-ci.org/r9y9/gantts)\n[!["
  },
  {
    "path": "data/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "evaluation_tts.py",
    "chars": 12038,
    "preview": "# coding: utf-8\n\"\"\"Evaluation script for GAN-based text-to-speech synthesis.\n\nusage: evaluation_vc.py [options] <acousti"
  },
  {
    "path": "evaluation_vc.py",
    "chars": 5902,
    "preview": "# coding: utf-8\n\"\"\"Evaluation script for GAN-based VC models.\n\nusage: evaluation_vc.py [options] <checkpoint> <data_dir>"
  },
  {
    "path": "gantts/__init__.py",
    "chars": 148,
    "preview": "# coding: utf-8\nfrom __future__ import with_statement, print_function, absolute_import\n\nfrom .version import __version__"
  },
  {
    "path": "gantts/models.py",
    "chars": 8120,
    "preview": "# coding: utf-8\nimport torch\nfrom torch import nn\nfrom torch.autograd import Variable\n\nimport numpy as np\n\nfrom nnmnkwii"
  },
  {
    "path": "gantts/multistream.py",
    "chars": 4354,
    "preview": "# coding: utf-8\n\n# Utils for multi-stream features\n\nimport torch\nfrom torch import nn\nfrom torch.autograd import Variabl"
  },
  {
    "path": "gantts/seqloss.py",
    "chars": 1371,
    "preview": "# coding: utf-8\nimport torch\nfrom torch import nn\nfrom torch.autograd import Variable\n\nimport numpy as np\n\n\ndef sequence"
  },
  {
    "path": "generated/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "hparams.py",
    "chars": 6230,
    "preview": "# coding: utf-8\n\nimport tensorflow as tf\nimport numpy as np\n\nfrom os.path import join, dirname\n\n\ndef hparams_debug_strin"
  },
  {
    "path": "notebooks/Test RNN VC.ipynb",
    "chars": 3981819,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The effects of adversarial train"
  },
  {
    "path": "notebooks/Test TTS.ipynb",
    "chars": 4807635,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The effects of adversarial train"
  },
  {
    "path": "notebooks/Test VC.ipynb",
    "chars": 3950453,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The effects of adversarial train"
  },
  {
    "path": "prepare_features_tts.py",
    "chars": 9564,
    "preview": "\"\"\"Prepare acoustic/duration features for DNN-training for text-to-speech.\n\nusage:\n    prepare_features_tts.py [options]"
  },
  {
    "path": "prepare_features_vc.py",
    "chars": 4323,
    "preview": "\"\"\"Prepare acoustic features for one-to-one voice conversion.\n\nusage:\n    prepare_features_vc.py [options] <DATA_ROOT> <"
  },
  {
    "path": "release.sh",
    "chars": 584,
    "preview": "#!/bin/bash\n\n# Script for Pypi release\n# 0. Make sure you are on git tag\n# 1. Run the script\n# 2. Upload sdist\n\nset -e\n\n"
  },
  {
    "path": "setup.py",
    "chars": 1828,
    "preview": "#!/usr/bin/env python\n\nfrom setuptools import setup, find_packages\nimport setuptools.command.develop\nimport setuptools.c"
  },
  {
    "path": "tests/test_gantts.py",
    "chars": 5440,
    "preview": "# coding: utf-8\nimport sys\nimport numpy as np\nfrom torch.autograd import Variable\nimport torch\nfrom torch import nn\nfrom"
  },
  {
    "path": "tox.ini",
    "chars": 110,
    "preview": "[flake8]\nmax-line-length = 120\nignore = E305,E402,E721,F401,F403,F405,F821,F841,F999\nexclude = docs/,examples\n"
  },
  {
    "path": "train.py",
    "chars": 34365,
    "preview": "# coding: utf-8\n\"\"\"Trainining script for GAN-based TTS and VC models.\n\nusage: train.py [options] <inputs_dir> <outputs_d"
  },
  {
    "path": "train_gan.sh",
    "chars": 4063,
    "preview": "#!/bin/bash\n\nset -e\n\n# I like to use docopt...\nhparams_name=$1\ninputs_dir=$2\noutputs_dir=$3\ndst_root=$4\ngenerator_warmup"
  },
  {
    "path": "tts_demo.sh",
    "chars": 2042,
    "preview": "#!/bin/bash\n\n# GAN-based TTS demo\n\nset -e\n\nexperiment_id=$1\n\n# Flags\nrun_feature_extraction=1\nrun_duration_training=1\nru"
  },
  {
    "path": "vc_demo.sh",
    "chars": 1334,
    "preview": "#!/bin/bash\n\n# GAN-based voice cnoversion demo\n\nset -e\n\nexperiment_id=$1\ncmu_arctic_dir=$2\ndata_dir=./data/cmu_arctic_vc"
  }
]

About this extraction

This page contains the full source code of the r9y9/gantts GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 28 files (12.3 MB), approximately 3.2M tokens, and a symbol index with 95 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!