summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.flake81
-rw-r--r--.pre-commit-config.yaml4
-rw-r--r--.pytype/imports/default.pyi2
-rw-r--r--.vim/coc-settings.json6
-rw-r--r--noxfile.py13
-rw-r--r--poetry.lock1119
-rw-r--r--src/notebooks/00-testing-stuff-out.ipynb1361
-rw-r--r--src/notebooks/07-try-gtn.ipynb49
-rw-r--r--src/notebooks/Untitled.ipynb385
-rw-r--r--src/notebooks/intersection.pdfbin0 -> 10154 bytes
-rw-r--r--src/tasks/build_transitions.py6
-rw-r--r--src/tasks/make_wordpieces.py2
-rw-r--r--src/text_recognizer/datasets/iam_preprocessor.py2
-rw-r--r--src/text_recognizer/datasets/transforms.py119
-rw-r--r--src/text_recognizer/networks/__init__.py3
-rw-r--r--src/text_recognizer/networks/cnn_transformer.py4
-rw-r--r--src/text_recognizer/networks/transducer/__init__.py1
-rw-r--r--src/text_recognizer/networks/transducer/tds_conv.py15
-rw-r--r--src/text_recognizer/networks/transducer/test.py60
-rw-r--r--src/text_recognizer/networks/transducer/transducer.py410
20 files changed, 1819 insertions, 1743 deletions
diff --git a/.flake8 b/.flake8
index eff48a6..b00f63b 100644
--- a/.flake8
+++ b/.flake8
@@ -7,3 +7,4 @@ application-import-names = text_recognizer,tests
import-order-style = google
docstring-convention = google
per-file-ignores = tests/*:S101,tests/*:S106,src/text_recognizer/datasets/*:S110,src/training/callbacks/*:B006,src/tasks/build_transitions.py:C901
+exclude = src/text_recognizer/networks/transducer/*
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ea3565b..8fed8e5 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -9,11 +9,11 @@ repos:
hooks:
- id: black
name: black
- entry: poetry run black
+ entry: black
language: system
types: [python]
- id: flake8
name: flake8
- entry: poetry run flake8
+ entry: flake8
language: system
types: [python]
diff --git a/.pytype/imports/default.pyi b/.pytype/imports/default.pyi
index 7bb11b4..024e962 100644
--- a/.pytype/imports/default.pyi
+++ b/.pytype/imports/default.pyi
@@ -1,3 +1,3 @@
-
from typing import Any
+
def __getattr__(name) -> Any: ...
diff --git a/.vim/coc-settings.json b/.vim/coc-settings.json
new file mode 100644
index 0000000..ce08b20
--- /dev/null
+++ b/.vim/coc-settings.json
@@ -0,0 +1,6 @@
+{
+ "python.linting.pylintEnabled": false,
+ "python.linting.flake8Enabled": true,
+ "python.linting.enabled": true,
+ "python.formatting.provider": "black"
+}
diff --git a/noxfile.py b/noxfile.py
index d1a8d1b..60c3923 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -33,6 +33,7 @@ def install_with_constraints(session: Session, *args: str, **kwargs: Any) -> Non
"export",
"--dev",
"--format=requirements.txt",
+ "--without-hashes",
f"--output={requirements.name}",
external=True,
)
@@ -47,7 +48,7 @@ def black(session: Session) -> None:
session.run("black", *args)
-@nox.session(python=["3.8", "3.7"])
+@nox.session(python=["3.8"])
def lint(session: Session) -> None:
"""Lint using flake8."""
args = session.posargs or locations
@@ -82,7 +83,7 @@ def safety(session: Session) -> None:
session.run("safety", "check", f"--file={requirements.name}", "--full-report")
-@nox.session(python=["3.8", "3.7"])
+@nox.session(python=["3.8"])
def mypy(session: Session) -> None:
"""Type-check using mypy."""
args = session.posargs or locations
@@ -90,7 +91,7 @@ def mypy(session: Session) -> None:
session.run("mypy", *args)
-@nox.session(python="3.7")
+@nox.session(python="3.8")
def pytype(session: Session) -> None:
"""Type-check using pytype."""
args = session.posargs or ["--disable=import-error", *locations]
@@ -98,7 +99,7 @@ def pytype(session: Session) -> None:
session.run("pytype", *args)
-@nox.session(python=["3.8", "3.7"])
+@nox.session(python=["3.8"])
def tests(session: Session) -> None:
"""Run the test suite."""
args = session.posargs or ["--cov", "-m", "not e2e"]
@@ -109,7 +110,7 @@ def tests(session: Session) -> None:
session.run("pytest", *args)
-@nox.session(python=["3.8", "3.7"])
+@nox.session(python=["3.8"])
def typeguard(session: Session) -> None:
"""Runtime type checking using Typeguard."""
args = session.posargs or ["-m", "not e2e"]
@@ -118,7 +119,7 @@ def typeguard(session: Session) -> None:
session.run("pytest", f"--typeguard-packages={package}", *args)
-@nox.session(python=["3.8", "3.7"])
+@nox.session(python=["3.8"])
def xdoctest(session: Session) -> None:
"""Run examples with xdoctest."""
args = session.posargs or ["all"]
diff --git a/poetry.lock b/poetry.lock
index 7f715d8..72da168 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,117 +1,115 @@
[[package]]
-category = "main"
-description = "A configurable sidebar-enabled Sphinx theme"
name = "alabaster"
+version = "0.7.12"
+description = "A configurable sidebar-enabled Sphinx theme"
+category = "main"
optional = false
python-versions = "*"
-version = "0.7.12"
[[package]]
-category = "dev"
-description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
name = "appdirs"
+version = "1.4.4"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
optional = false
python-versions = "*"
-version = "1.4.4"
[[package]]
-category = "main"
-description = "Disable App Nap on OS X 10.9"
-marker = "sys_platform == \"darwin\" or platform_system == \"Darwin\" or python_version >= \"3.3\" and sys_platform == \"darwin\""
name = "appnope"
+version = "0.1.0"
+description = "Disable App Nap on OS X 10.9"
+category = "main"
optional = false
python-versions = "*"
-version = "0.1.0"
[[package]]
-category = "main"
-description = "The secure Argon2 password hashing algorithm."
name = "argon2-cffi"
+version = "20.1.0"
+description = "The secure Argon2 password hashing algorithm."
+category = "main"
optional = false
python-versions = "*"
-version = "20.1.0"
[package.dependencies]
cffi = ">=1.0.0"
six = "*"
[package.extras]
-dev = ["coverage (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"]
docs = ["sphinx"]
-tests = ["coverage (>=5.0.2)", "hypothesis", "pytest"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"]
[[package]]
-category = "main"
-description = "Async generators and context managers for Python 3.5+"
name = "async-generator"
+version = "1.10"
+description = "Async generators and context managers for Python 3.5+"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.10"
[[package]]
-category = "main"
-description = "Atomic file writes."
-marker = "sys_platform == \"win32\""
name = "atomicwrites"
+version = "1.4.0"
+description = "Atomic file writes."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.4.0"
[[package]]
-category = "main"
-description = "Classes Without Boilerplate"
name = "attrs"
+version = "20.3.0"
+description = "Classes Without Boilerplate"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "20.3.0"
[package.extras]
-dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
docs = ["furo", "sphinx", "zope.interface"]
-tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
-tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
[[package]]
-category = "main"
-description = "Internationalization utilities"
name = "babel"
+version = "2.9.0"
+description = "Internationalization utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.9.0"
[package.dependencies]
pytz = ">=2015.7"
[[package]]
-category = "main"
-description = "Specifications for callback functions passed in to an API"
name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+category = "main"
optional = false
python-versions = "*"
-version = "0.2.0"
[[package]]
-category = "dev"
-description = "Security oriented static analyser for python code."
name = "bandit"
+version = "1.6.2"
+description = "Security oriented static analyser for python code."
+category = "dev"
optional = false
python-versions = "*"
-version = "1.6.2"
[package.dependencies]
+colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
GitPython = ">=1.0.1"
PyYAML = ">=3.13"
-colorama = ">=0.3.9"
six = ">=1.10.0"
stevedore = ">=1.20.0"
[[package]]
-category = "dev"
-description = "The uncompromising code formatter."
name = "black"
+version = "19.10b0"
+description = "The uncompromising code formatter."
+category = "dev"
optional = false
python-versions = ">=3.6"
-version = "19.10b0"
[package.dependencies]
appdirs = "*"
@@ -126,12 +124,12 @@ typed-ast = ">=1.4.0"
d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
[[package]]
-category = "main"
-description = "An easy safelist-based HTML-sanitizing tool."
name = "bleach"
+version = "3.2.1"
+description = "An easy safelist-based HTML-sanitizing tool."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "3.2.1"
[package.dependencies]
packaging = "*"
@@ -139,146 +137,143 @@ six = ">=1.9.0"
webencodings = "*"
[[package]]
-category = "dev"
-description = "A thin, practical wrapper around terminal coloring, styling, and positioning"
name = "blessings"
+version = "1.7"
+description = "A thin, practical wrapper around terminal coloring, styling, and positioning"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.7"
[package.dependencies]
six = "*"
[[package]]
-category = "main"
-description = "When they're not builtins, they're boltons."
name = "boltons"
+version = "20.2.1"
+description = "When they're not builtins, they're boltons."
+category = "main"
optional = false
python-versions = "*"
-version = "20.2.1"
[[package]]
-category = "main"
-description = "Python package for providing Mozilla's CA Bundle."
name = "certifi"
+version = "2020.11.8"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = "*"
-version = "2020.11.8"
[[package]]
-category = "main"
-description = "Foreign Function Interface for Python calling C code."
name = "cffi"
+version = "1.14.3"
+description = "Foreign Function Interface for Python calling C code."
+category = "main"
optional = false
python-versions = "*"
-version = "1.14.3"
[package.dependencies]
pycparser = "*"
[[package]]
-category = "main"
-description = "Universal encoding detector for Python 2 and 3"
name = "chardet"
+version = "3.0.4"
+description = "Universal encoding detector for Python 2 and 3"
+category = "main"
optional = false
python-versions = "*"
-version = "3.0.4"
[[package]]
-category = "main"
-description = "Composable command line interface toolkit"
name = "click"
+version = "7.1.2"
+description = "Composable command line interface toolkit"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "7.1.2"
[[package]]
-category = "main"
-description = "Cross-platform colored terminal text."
-marker = "sys_platform == \"win32\" or platform_system == \"Windows\" or python_version >= \"3.3\" and sys_platform == \"win32\""
name = "colorama"
+version = "0.4.4"
+description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.4.4"
[[package]]
-category = "main"
-description = "Updated configparser from Python 3.8 for Python 2.6+."
name = "configparser"
+version = "5.0.1"
+description = "Updated configparser from Python 3.8 for Python 2.6+."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "5.0.1"
[package.extras]
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "pytest-black (>=0.3.7)", "pytest-mypy"]
+testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "pytest-black (>=0.3.7)", "pytest-mypy"]
[[package]]
-category = "dev"
-description = "Code coverage measurement for Python"
name = "coverage"
+version = "5.3"
+description = "Code coverage measurement for Python"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
-version = "5.3"
[package.dependencies]
-[package.dependencies.toml]
-optional = true
-version = "*"
+toml = {version = "*", optional = true, markers = "extra == \"toml\""}
[package.extras]
toml = ["toml"]
[[package]]
-category = "main"
-description = "Composable style cycles"
name = "cycler"
+version = "0.10.0"
+description = "Composable style cycles"
+category = "main"
optional = false
python-versions = "*"
-version = "0.10.0"
[package.dependencies]
six = "*"
[[package]]
-category = "main"
-description = "A utility for ensuring Google-style docstrings stay up to date with the source code."
name = "darglint"
+version = "1.5.6"
+description = "A utility for ensuring Google-style docstrings stay up to date with the source code."
+category = "main"
optional = false
python-versions = ">=3.6,<4.0"
-version = "1.5.6"
[[package]]
-category = "main"
-description = "A backport of the dataclasses module for Python 3.6"
name = "dataclasses"
+version = "0.6"
+description = "A backport of the dataclasses module for Python 3.6"
+category = "main"
optional = false
python-versions = "*"
-version = "0.6"
[[package]]
-category = "main"
-description = "Decorators for Humans"
name = "decorator"
+version = "4.4.2"
+description = "Decorators for Humans"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
-version = "4.4.2"
[[package]]
-category = "main"
-description = "XML bomb protection for Python stdlib modules"
name = "defusedxml"
+version = "0.6.0"
+description = "XML bomb protection for Python stdlib modules"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.6.0"
[[package]]
-category = "main"
-description = "Deserialize to objects while staying DRY"
name = "desert"
+version = "2020.11.18"
+description = "Deserialize to objects while staying DRY"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "2020.11.18"
[package.dependencies]
attrs = "*"
@@ -290,31 +285,31 @@ dev = ["coverage", "cuvner", "marshmallow-enum", "marshmallow-union", "pytest",
test = ["coverage", "cuvner", "marshmallow-enum", "marshmallow-union", "pytest", "pytest-cov", "pytest-sphinx", "pytest-travis-fold", "tox", "importlib-metadata"]
[[package]]
-category = "main"
-description = "Python bindings for the docker credentials store API"
name = "docker-pycreds"
+version = "0.4.0"
+description = "Python bindings for the docker credentials store API"
+category = "main"
optional = false
python-versions = "*"
-version = "0.4.0"
[package.dependencies]
six = ">=1.4.0"
[[package]]
-category = "main"
-description = "Docutils -- Python Documentation Utilities"
name = "docutils"
+version = "0.16"
+description = "Docutils -- Python Documentation Utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.16"
[[package]]
-category = "dev"
-description = "A parser for Python dependency files"
name = "dparse"
+version = "0.5.1"
+description = "A parser for Python dependency files"
+category = "dev"
optional = false
python-versions = ">=3.5"
-version = "0.5.1"
[package.dependencies]
packaging = "*"
@@ -325,28 +320,28 @@ toml = "*"
pipenv = ["pipenv"]
[[package]]
-category = "main"
-description = "A new flavour of deep learning operations"
name = "einops"
+version = "0.3.0"
+description = "A new flavour of deep learning operations"
+category = "main"
optional = false
python-versions = "*"
-version = "0.3.0"
[[package]]
-category = "main"
-description = "Discover and load entry points from installed packages."
name = "entrypoints"
+version = "0.3"
+description = "Discover and load entry points from installed packages."
+category = "main"
optional = false
python-versions = ">=2.7"
-version = "0.3"
[[package]]
-category = "main"
-description = "the modular source code checker: pep8 pyflakes and co"
name = "flake8"
+version = "3.8.4"
+description = "the modular source code checker: pep8 pyflakes and co"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
-version = "3.8.4"
[package.dependencies]
mccabe = ">=0.6.0,<0.7.0"
@@ -354,23 +349,23 @@ pycodestyle = ">=2.6.0a1,<2.7.0"
pyflakes = ">=2.2.0,<2.3.0"
[[package]]
-category = "main"
-description = "Flake8 Type Annotation Checks"
name = "flake8-annotations"
+version = "2.4.1"
+description = "Flake8 Type Annotation Checks"
+category = "main"
optional = false
python-versions = ">=3.6.1,<4.0.0"
-version = "2.4.1"
[package.dependencies]
flake8 = ">=3.7,<3.9"
[[package]]
-category = "dev"
-description = "Automated security testing with bandit and flake8."
name = "flake8-bandit"
+version = "2.1.2"
+description = "Automated security testing with bandit and flake8."
+category = "dev"
optional = false
python-versions = "*"
-version = "2.1.2"
[package.dependencies]
bandit = "*"
@@ -379,101 +374,100 @@ flake8-polyfill = "*"
pycodestyle = "*"
[[package]]
-category = "dev"
-description = "flake8 plugin to call black as a code style validator"
name = "flake8-black"
+version = "0.2.1"
+description = "flake8 plugin to call black as a code style validator"
+category = "dev"
optional = false
python-versions = "*"
-version = "0.2.1"
[package.dependencies]
black = "*"
flake8 = ">=3.0.0"
[[package]]
-category = "dev"
-description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle."
name = "flake8-bugbear"
+version = "20.1.4"
+description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle."
+category = "dev"
optional = false
python-versions = ">=3.6"
-version = "20.1.4"
[package.dependencies]
attrs = ">=19.2.0"
flake8 = ">=3.0.0"
[[package]]
-category = "main"
-description = "Extension for flake8 which uses pydocstyle to check docstrings"
name = "flake8-docstrings"
+version = "1.5.0"
+description = "Extension for flake8 which uses pydocstyle to check docstrings"
+category = "main"
optional = false
python-versions = "*"
-version = "1.5.0"
[package.dependencies]
flake8 = ">=3"
pydocstyle = ">=2.1"
[[package]]
-category = "dev"
-description = "Flake8 and pylama plugin that checks the ordering of import statements."
name = "flake8-import-order"
+version = "0.18.1"
+description = "Flake8 and pylama plugin that checks the ordering of import statements."
+category = "dev"
optional = false
python-versions = "*"
-version = "0.18.1"
[package.dependencies]
pycodestyle = "*"
-setuptools = "*"
[[package]]
-category = "dev"
-description = "Polyfill package for Flake8 plugins"
name = "flake8-polyfill"
+version = "1.0.2"
+description = "Polyfill package for Flake8 plugins"
+category = "dev"
optional = false
python-versions = "*"
-version = "1.0.2"
[package.dependencies]
flake8 = "*"
[[package]]
-category = "main"
-description = "Clean single-source support for Python 3 and 2"
name = "future"
+version = "0.18.2"
+description = "Clean single-source support for Python 3 and 2"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "0.18.2"
[[package]]
-category = "main"
-description = "Git Object Database"
name = "gitdb"
+version = "4.0.5"
+description = "Git Object Database"
+category = "main"
optional = false
python-versions = ">=3.4"
-version = "4.0.5"
[package.dependencies]
smmap = ">=3.0.1,<4"
[[package]]
-category = "main"
-description = "Python Git Library"
name = "gitpython"
+version = "3.1.11"
+description = "Python Git Library"
+category = "main"
optional = false
python-versions = ">=3.4"
-version = "3.1.11"
[package.dependencies]
gitdb = ">=4.0.1,<5"
[[package]]
-category = "dev"
-description = "An utility to monitor NVIDIA GPU status and usage"
name = "gpustat"
+version = "0.6.0"
+description = "An utility to monitor NVIDIA GPU status and usage"
+category = "dev"
optional = false
python-versions = "*"
-version = "0.6.0"
[package.dependencies]
blessings = ">=1.6"
@@ -485,12 +479,12 @@ six = ">=1.7"
test = ["mock (>=2.0.0)", "pytest (<5.0)"]
[[package]]
-category = "dev"
-description = "Simple Python interface for Graphviz"
name = "graphviz"
+version = "0.16"
+description = "Simple Python interface for Graphviz"
+category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*"
-version = "0.16"
[package.extras]
dev = ["tox (>=3)", "flake8", "pep8-naming", "wheel", "twine"]
@@ -498,51 +492,51 @@ docs = ["sphinx (>=1.8)", "sphinx-rtd-theme"]
test = ["mock (>=3)", "pytest (>=4)", "pytest-mock (>=2)", "pytest-cov"]
[[package]]
-category = "main"
-description = "Automatic differentiation with WFSTs"
name = "gtn"
+version = "0.0.0"
+description = "Automatic differentiation with WFSTs"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "0.0.0"
[[package]]
-category = "main"
-description = "Read and write HDF5 files from Python"
name = "h5py"
+version = "2.10.0"
+description = "Read and write HDF5 files from Python"
+category = "main"
optional = false
python-versions = "*"
-version = "2.10.0"
[package.dependencies]
numpy = ">=1.7"
six = "*"
[[package]]
-category = "main"
-description = "Internationalized Domain Names in Applications (IDNA)"
name = "idna"
+version = "2.10"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.10"
[[package]]
-category = "main"
-description = "Getting image size from png/jpeg/jpeg2000/gif file"
name = "imagesize"
+version = "1.2.0"
+description = "Getting image size from png/jpeg/jpeg2000/gif file"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.2.0"
[[package]]
-category = "main"
-description = "IPython Kernel for Jupyter"
name = "ipykernel"
+version = "5.3.4"
+description = "IPython Kernel for Jupyter"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "5.3.4"
[package.dependencies]
-appnope = "*"
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
ipython = ">=5.0.0"
jupyter-client = "*"
tornado = ">=4.2"
@@ -552,24 +546,23 @@ traitlets = ">=4.1.0"
test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose"]
[[package]]
-category = "main"
-description = "IPython: Productive Interactive Computing"
name = "ipython"
+version = "7.19.0"
+description = "IPython: Productive Interactive Computing"
+category = "main"
optional = false
python-versions = ">=3.7"
-version = "7.19.0"
[package.dependencies]
-appnope = "*"
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
backcall = "*"
-colorama = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
jedi = ">=0.10"
-pexpect = ">4.3"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
pickleshare = "*"
prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
pygments = "*"
-setuptools = ">=18.5"
traitlets = ">=4.2"
[package.extras]
@@ -584,56 +577,53 @@ qtconsole = ["qtconsole"]
test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"]
[[package]]
-category = "main"
-description = "Vestigial utilities from IPython"
name = "ipython-genutils"
+version = "0.2.0"
+description = "Vestigial utilities from IPython"
+category = "main"
optional = false
python-versions = "*"
-version = "0.2.0"
[[package]]
-category = "dev"
-description = "IPython HTML widgets for Jupyter"
name = "ipywidgets"
+version = "7.5.1"
+description = "IPython HTML widgets for Jupyter"
+category = "dev"
optional = false
python-versions = "*"
-version = "7.5.1"
[package.dependencies]
ipykernel = ">=4.5.1"
+ipython = {version = ">=4.0.0", markers = "python_version >= \"3.3\""}
nbformat = ">=4.2.0"
traitlets = ">=4.3.1"
widgetsnbextension = ">=3.5.0,<3.6.0"
-[package.dependencies.ipython]
-python = ">=3.3"
-version = ">=4.0.0"
-
[package.extras]
test = ["pytest (>=3.6.0)", "pytest-cov", "mock"]
[[package]]
-category = "main"
-description = "An autocompletion tool for Python that can be used for text editors."
name = "jedi"
+version = "0.17.2"
+description = "An autocompletion tool for Python that can be used for text editors."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.17.2"
[package.dependencies]
parso = ">=0.7.0,<0.8.0"
[package.extras]
-qa = ["flake8 (3.7.9)"]
+qa = ["flake8 (==3.7.9)"]
testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"]
[[package]]
-category = "main"
-description = "A very fast and expressive template engine."
name = "jinja2"
+version = "2.11.2"
+description = "A very fast and expressive template engine."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "2.11.2"
[package.dependencies]
MarkupSafe = ">=0.23"
@@ -642,25 +632,24 @@ MarkupSafe = ">=0.23"
i18n = ["Babel (>=0.8)"]
[[package]]
-category = "main"
-description = "Lightweight pipelining: using Python functions as pipeline jobs."
name = "joblib"
+version = "0.17.0"
+description = "Lightweight pipelining: using Python functions as pipeline jobs."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "0.17.0"
[[package]]
-category = "main"
-description = "An implementation of JSON Schema validation for Python"
name = "jsonschema"
+version = "3.2.0"
+description = "An implementation of JSON Schema validation for Python"
+category = "main"
optional = false
python-versions = "*"
-version = "3.2.0"
[package.dependencies]
attrs = ">=17.4.0"
pyrsistent = ">=0.14.0"
-setuptools = "*"
six = ">=1.11.0"
[package.extras]
@@ -668,12 +657,12 @@ format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors
format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"]
[[package]]
-category = "dev"
-description = "Jupyter metapackage. Install all the Jupyter components in one go."
name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+category = "dev"
optional = false
python-versions = "*"
-version = "1.0.0"
[package.dependencies]
ipykernel = "*"
@@ -684,12 +673,12 @@ notebook = "*"
qtconsole = "*"
[[package]]
-category = "main"
-description = "Jupyter protocol implementation and client libraries"
name = "jupyter-client"
+version = "6.1.7"
+description = "Jupyter protocol implementation and client libraries"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "6.1.7"
[package.dependencies]
jupyter-core = ">=4.6.0"
@@ -702,12 +691,12 @@ traitlets = "*"
test = ["ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"]
[[package]]
-category = "dev"
-description = "Jupyter terminal console"
name = "jupyter-console"
+version = "6.2.0"
+description = "Jupyter terminal console"
+category = "dev"
optional = false
python-versions = ">=3.6"
-version = "6.2.0"
[package.dependencies]
ipykernel = "*"
@@ -720,35 +709,35 @@ pygments = "*"
test = ["pexpect"]
[[package]]
-category = "main"
-description = "Jupyter core package. A base package on which Jupyter projects rely."
name = "jupyter-core"
+version = "4.7.0"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "4.7.0"
[package.dependencies]
-pywin32 = ">=1.0"
+pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\""}
traitlets = "*"
[[package]]
-category = "main"
-description = "Pygments theme using JupyterLab CSS variables"
name = "jupyterlab-pygments"
+version = "0.1.2"
+description = "Pygments theme using JupyterLab CSS variables"
+category = "main"
optional = false
python-versions = "*"
-version = "0.1.2"
[package.dependencies]
pygments = ">=2.4.1,<3"
[[package]]
-category = "main"
-description = "Select and install a Jupyter notebook theme"
name = "jupyterthemes"
+version = "0.20.0"
+description = "Select and install a Jupyter notebook theme"
+category = "main"
optional = false
python-versions = "*"
-version = "0.20.0"
[package.dependencies]
ipython = ">=5.4.1"
@@ -758,69 +747,69 @@ matplotlib = ">=1.4.3"
notebook = ">=5.6.0"
[[package]]
-category = "main"
-description = "A fast implementation of the Cassowary constraint solver"
name = "kiwisolver"
+version = "1.3.1"
+description = "A fast implementation of the Cassowary constraint solver"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "1.3.1"
[[package]]
-category = "main"
-description = "Python LESS compiler"
name = "lesscpy"
+version = "0.14.0"
+description = "Python LESS compiler"
+category = "main"
optional = false
python-versions = "*"
-version = "0.14.0"
[package.dependencies]
ply = "*"
six = "*"
[[package]]
-category = "main"
-description = "Python logging made (stupidly) simple"
name = "loguru"
+version = "0.5.3"
+description = "Python logging made (stupidly) simple"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "0.5.3"
[package.dependencies]
-colorama = ">=0.3.4"
-win32-setctime = ">=1.0.0"
+colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""}
+win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
[package.extras]
dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"]
[[package]]
-category = "main"
-description = "Safely add untrusted strings to HTML/XML markup."
name = "markupsafe"
+version = "1.1.1"
+description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
-version = "1.1.1"
[[package]]
-category = "main"
-description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
name = "marshmallow"
+version = "3.9.1"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "3.9.1"
[package.extras]
-dev = ["pytest", "pytz", "simplejson", "mypy (0.790)", "flake8 (3.8.4)", "flake8-bugbear (20.1.4)", "pre-commit (>=2.4,<3.0)", "tox"]
-docs = ["sphinx (3.3.0)", "sphinx-issues (1.2.0)", "alabaster (0.7.12)", "sphinx-version-warning (1.1.2)", "autodocsumm (0.2.1)"]
-lint = ["mypy (0.790)", "flake8 (3.8.4)", "flake8-bugbear (20.1.4)", "pre-commit (>=2.4,<3.0)"]
+dev = ["pytest", "pytz", "simplejson", "mypy (==0.790)", "flake8 (==3.8.4)", "flake8-bugbear (==20.1.4)", "pre-commit (>=2.4,<3.0)", "tox"]
+docs = ["sphinx (==3.3.0)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.1)"]
+lint = ["mypy (==0.790)", "flake8 (==3.8.4)", "flake8-bugbear (==20.1.4)", "pre-commit (>=2.4,<3.0)"]
tests = ["pytest", "pytz", "simplejson"]
[[package]]
-category = "main"
-description = "Python plotting package"
name = "matplotlib"
+version = "3.3.3"
+description = "Python plotting package"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "3.3.3"
[package.dependencies]
cycler = ">=0.10"
@@ -831,36 +820,36 @@ pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6"
python-dateutil = ">=2.1"
[[package]]
-category = "main"
-description = "McCabe checker, plugin for flake8"
name = "mccabe"
+version = "0.6.1"
+description = "McCabe checker, plugin for flake8"
+category = "main"
optional = false
python-versions = "*"
-version = "0.6.1"
[[package]]
-category = "main"
-description = "The fastest markdown parser in pure Python"
name = "mistune"
+version = "0.8.4"
+description = "The fastest markdown parser in pure Python"
+category = "main"
optional = false
python-versions = "*"
-version = "0.8.4"
[[package]]
-category = "main"
-description = "More routines for operating on iterables, beyond itertools"
name = "more-itertools"
+version = "8.6.0"
+description = "More routines for operating on iterables, beyond itertools"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "8.6.0"
[[package]]
-category = "dev"
-description = "Optional static typing for Python"
name = "mypy"
+version = "0.770"
+description = "Optional static typing for Python"
+category = "dev"
optional = false
python-versions = ">=3.5"
-version = "0.770"
[package.dependencies]
mypy-extensions = ">=0.4.3,<0.5.0"
@@ -871,20 +860,20 @@ typing-extensions = ">=3.7.4"
dmypy = ["psutil (>=4.0)"]
[[package]]
-category = "main"
-description = "Experimental type system extensions for programs checked with the mypy typechecker."
name = "mypy-extensions"
+version = "0.4.3"
+description = "Experimental type system extensions for programs checked with the mypy typechecker."
+category = "main"
optional = false
python-versions = "*"
-version = "0.4.3"
[[package]]
-category = "main"
-description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
name = "nbclient"
+version = "0.5.1"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "0.5.1"
[package.dependencies]
async-generator = "*"
@@ -899,12 +888,12 @@ sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"]
test = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"]
[[package]]
-category = "main"
-description = "Converting Jupyter Notebooks"
name = "nbconvert"
+version = "6.0.7"
+description = "Converting Jupyter Notebooks"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "6.0.7"
[package.dependencies]
bleach = "*"
@@ -922,19 +911,19 @@ testpath = "*"
traitlets = ">=4.2"
[package.extras]
-all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"]
+all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"]
docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"]
serve = ["tornado (>=4.0)"]
-test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)"]
-webpdf = ["pyppeteer (0.2.2)"]
+test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)"]
+webpdf = ["pyppeteer (==0.2.2)"]
[[package]]
-category = "main"
-description = "The Jupyter Notebook format"
name = "nbformat"
+version = "5.0.8"
+description = "The Jupyter Notebook format"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "5.0.8"
[package.dependencies]
ipython-genutils = "*"
@@ -947,20 +936,20 @@ fast = ["fastjsonschema"]
test = ["fastjsonschema", "testpath", "pytest", "pytest-cov"]
[[package]]
-category = "main"
-description = "Patch asyncio to allow nested event loops"
name = "nest-asyncio"
+version = "1.4.3"
+description = "Patch asyncio to allow nested event loops"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.4.3"
[[package]]
-category = "main"
-description = "Natural Language Toolkit"
name = "nltk"
+version = "3.5"
+description = "Natural Language Toolkit"
+category = "main"
optional = false
python-versions = "*"
-version = "3.5"
[package.dependencies]
click = "*"
@@ -977,15 +966,14 @@ tgrep = ["pyparsing"]
twitter = ["twython"]
[[package]]
-category = "main"
-description = "A web-based notebook environment for interactive computing"
name = "notebook"
+version = "6.1.5"
+description = "A web-based notebook environment for interactive computing"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "6.1.5"
[package.dependencies]
-Send2Trash = "*"
argon2-cffi = "*"
ipykernel = "*"
ipython-genutils = "*"
@@ -996,6 +984,7 @@ nbconvert = "*"
nbformat = "*"
prometheus-client = "*"
pyzmq = ">=17"
+Send2Trash = "*"
terminado = ">=0.8.3"
tornado = ">=5.0"
traitlets = ">=4.2.1"
@@ -1005,161 +994,160 @@ docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt"]
test = ["nose", "coverage", "requests", "nose-warnings-filters", "nbval", "nose-exclude", "selenium", "pytest", "pytest-cov", "requests-unixsocket"]
[[package]]
-category = "main"
-description = "NumPy is the fundamental package for array computing with Python."
name = "numpy"
+version = "1.19.4"
+description = "NumPy is the fundamental package for array computing with Python."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "1.19.4"
[[package]]
-category = "dev"
-description = "Python Bindings for the NVIDIA Management Library"
name = "nvidia-ml-py3"
+version = "7.352.0"
+description = "Python Bindings for the NVIDIA Management Library"
+category = "dev"
optional = false
python-versions = "*"
-version = "7.352.0"
[[package]]
-category = "main"
-description = "A flexible configuration library"
name = "omegaconf"
+version = "2.0.5"
+description = "A flexible configuration library"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "2.0.5"
[package.dependencies]
PyYAML = ">=5.1"
typing-extensions = "*"
[[package]]
-category = "main"
-description = "Wrapper package for OpenCV python bindings."
name = "opencv-python"
+version = "4.4.0.46"
+description = "Wrapper package for OpenCV python bindings."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "4.4.0.46"
[[package]]
-category = "main"
-description = "Core utilities for Python packages"
name = "packaging"
+version = "20.4"
+description = "Core utilities for Python packages"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "20.4"
[package.dependencies]
pyparsing = ">=2.0.2"
six = "*"
[[package]]
-category = "main"
-description = "Utilities for writing pandoc filters in python"
name = "pandocfilters"
+version = "1.4.3"
+description = "Utilities for writing pandoc filters in python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.4.3"
[[package]]
-category = "main"
-description = "A Python Parser"
name = "parso"
+version = "0.7.1"
+description = "A Python Parser"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "0.7.1"
[package.extras]
testing = ["docopt", "pytest (>=3.0.7)"]
[[package]]
-category = "dev"
-description = "Utility library for gitignore style pattern matching of file paths."
name = "pathspec"
+version = "0.8.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.8.1"
[[package]]
-category = "main"
-description = "File system general utilities"
name = "pathtools"
+version = "0.1.2"
+description = "File system general utilities"
+category = "main"
optional = false
python-versions = "*"
-version = "0.1.2"
[[package]]
-category = "dev"
-description = "Python Build Reasonableness"
name = "pbr"
+version = "5.5.1"
+description = "Python Build Reasonableness"
+category = "dev"
optional = false
python-versions = ">=2.6"
-version = "5.5.1"
[[package]]
-category = "main"
-description = "Pexpect allows easy control of interactive console applications."
-marker = "python_version >= \"3.3\" and sys_platform != \"win32\" or sys_platform != \"win32\""
name = "pexpect"
+version = "4.8.0"
+description = "Pexpect allows easy control of interactive console applications."
+category = "main"
optional = false
python-versions = "*"
-version = "4.8.0"
[package.dependencies]
ptyprocess = ">=0.5"
[[package]]
-category = "main"
-description = "Tiny 'shelve'-like database with concurrency support"
name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+category = "main"
optional = false
python-versions = "*"
-version = "0.7.5"
[[package]]
-category = "main"
-description = "Python Imaging Library (Fork)"
name = "pillow"
+version = "8.0.1"
+description = "Python Imaging Library (Fork)"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "8.0.1"
[[package]]
-category = "main"
-description = "plugin and hook calling mechanisms for python"
name = "pluggy"
+version = "0.13.1"
+description = "plugin and hook calling mechanisms for python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "0.13.1"
[package.extras]
dev = ["pre-commit", "tox"]
[[package]]
-category = "main"
-description = "Python Lex & Yacc"
name = "ply"
+version = "3.11"
+description = "Python Lex & Yacc"
+category = "main"
optional = false
python-versions = "*"
-version = "3.11"
[[package]]
-category = "main"
-description = "Python client for the Prometheus monitoring system."
name = "prometheus-client"
+version = "0.9.0"
+description = "Python client for the Prometheus monitoring system."
+category = "main"
optional = false
python-versions = "*"
-version = "0.9.0"
[package.extras]
twisted = ["twisted"]
[[package]]
-category = "main"
-description = "Promises/A+ implementation for Python"
name = "promise"
+version = "2.3"
+description = "Promises/A+ implementation for Python"
+category = "main"
optional = false
python-versions = "*"
-version = "2.3"
[package.dependencies]
six = "*"
@@ -1168,126 +1156,125 @@ six = "*"
test = ["pytest (>=2.7.3)", "pytest-cov", "coveralls", "futures", "pytest-benchmark", "mock"]
[[package]]
-category = "main"
-description = "Library for building powerful interactive command lines in Python"
name = "prompt-toolkit"
+version = "3.0.8"
+description = "Library for building powerful interactive command lines in Python"
+category = "main"
optional = false
python-versions = ">=3.6.1"
-version = "3.0.8"
[package.dependencies]
wcwidth = "*"
[[package]]
-category = "main"
-description = "Protocol Buffers"
name = "protobuf"
+version = "3.14.0"
+description = "Protocol Buffers"
+category = "main"
optional = false
python-versions = "*"
-version = "3.14.0"
[package.dependencies]
six = ">=1.9"
[[package]]
-category = "main"
-description = "Cross-platform lib for process and system monitoring in Python."
name = "psutil"
+version = "5.7.3"
+description = "Cross-platform lib for process and system monitoring in Python."
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "5.7.3"
[package.extras]
test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"]
[[package]]
-category = "main"
-description = "Run a subprocess in a pseudo terminal"
-marker = "python_version >= \"3.3\" and sys_platform != \"win32\" or sys_platform != \"win32\" or os_name != \"nt\" or python_version >= \"3.3\" and sys_platform != \"win32\" and (python_version >= \"3.3\" and sys_platform != \"win32\" or sys_platform != \"win32\")"
name = "ptyprocess"
+version = "0.6.0"
+description = "Run a subprocess in a pseudo terminal"
+category = "main"
optional = false
python-versions = "*"
-version = "0.6.0"
[[package]]
-category = "main"
-description = "library with cross-python path, ini-parsing, io, code, log facilities"
name = "py"
+version = "1.9.0"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.9.0"
[[package]]
-category = "main"
-description = "Python style guide checker"
name = "pycodestyle"
+version = "2.6.0"
+description = "Python style guide checker"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.6.0"
[[package]]
-category = "main"
-description = "C parser in Python"
name = "pycparser"
+version = "2.20"
+description = "C parser in Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.20"
[[package]]
-category = "main"
-description = "Python docstring style checker"
name = "pydocstyle"
+version = "5.1.1"
+description = "Python docstring style checker"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "5.1.1"
[package.dependencies]
snowballstemmer = "*"
[[package]]
-category = "main"
-description = "passive checker of Python programs"
name = "pyflakes"
+version = "2.2.0"
+description = "passive checker of Python programs"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.2.0"
[[package]]
-category = "main"
-description = "Pygments is a syntax highlighting package written in Python."
name = "pygments"
+version = "2.7.2"
+description = "Pygments is a syntax highlighting package written in Python."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "2.7.2"
[[package]]
-category = "main"
-description = "Python parsing module"
name = "pyparsing"
+version = "2.4.7"
+description = "Python parsing module"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "2.4.7"
[[package]]
-category = "main"
-description = "Persistent/Functional/Immutable data structures"
name = "pyrsistent"
+version = "0.17.3"
+description = "Persistent/Functional/Immutable data structures"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "0.17.3"
[[package]]
-category = "main"
-description = "pytest: simple powerful testing with Python"
name = "pytest"
+version = "5.4.3"
+description = "pytest: simple powerful testing with Python"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "5.4.3"
[package.dependencies]
-atomicwrites = ">=1.0"
+atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=17.4.0"
-colorama = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
more-itertools = ">=4.0.0"
packaging = "*"
pluggy = ">=0.12,<1.0"
@@ -1295,31 +1282,31 @@ py = ">=1.5.0"
wcwidth = "*"
[package.extras]
-checkqa-mypy = ["mypy (v0.761)"]
+checkqa-mypy = ["mypy (==v0.761)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
-category = "dev"
-description = "Pytest plugin for measuring coverage."
name = "pytest-cov"
+version = "2.10.1"
+description = "Pytest plugin for measuring coverage."
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "2.10.1"
[package.dependencies]
coverage = ">=4.4"
pytest = ">=4.6"
[package.extras]
-testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "pytest-xdist", "virtualenv"]
+testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist", "virtualenv"]
[[package]]
-category = "dev"
-description = "Thin-wrapper around the mock package for easier use with pytest"
name = "pytest-mock"
+version = "3.3.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+category = "dev"
optional = false
python-versions = ">=3.5"
-version = "3.3.1"
[package.dependencies]
pytest = ">=5.0"
@@ -1328,34 +1315,31 @@ pytest = ">=5.0"
dev = ["pre-commit", "tox", "pytest-asyncio"]
[[package]]
-category = "main"
-description = "Extensions to the standard Python datetime module"
name = "python-dateutil"
+version = "2.8.1"
+description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-version = "2.8.1"
[package.dependencies]
six = ">=1.5"
[[package]]
-category = "main"
-description = "Python extension for computing string edit distances and similarities."
name = "python-levenshtein"
+version = "0.12.0"
+description = "Python extension for computing string edit distances and similarities."
+category = "main"
optional = false
python-versions = "*"
-version = "0.12.0"
-
-[package.dependencies]
-setuptools = "*"
[[package]]
-category = "main"
-description = "The easiest way to use deep metric learning in your application. Modular, flexible, and extensible. Written in PyTorch."
name = "pytorch-metric-learning"
+version = "0.9.94"
+description = "The easiest way to use deep metric learning in your application. Modular, flexible, and extensible. Written in PyTorch."
+category = "main"
optional = false
python-versions = ">=3.0"
-version = "0.9.94"
[package.dependencies]
numpy = "*"
@@ -1370,58 +1354,56 @@ with-hooks = ["record-keeper (>=0.9.29)", "faiss-gpu (>=1.6.3)", "tensorboard"]
with-hooks-cpu = ["record-keeper (>=0.9.29)", "faiss-cpu (>=1.6.3)", "tensorboard"]
[[package]]
-category = "main"
-description = "World timezone definitions, modern and historical"
name = "pytz"
+version = "2020.4"
+description = "World timezone definitions, modern and historical"
+category = "main"
optional = false
python-versions = "*"
-version = "2020.4"
[[package]]
-category = "main"
-description = "Python for Window Extensions"
-marker = "sys_platform == \"win32\""
name = "pywin32"
+version = "300"
+description = "Python for Window Extensions"
+category = "main"
optional = false
python-versions = "*"
-version = "300"
[[package]]
-category = "main"
-description = "Python bindings for the winpty library"
-marker = "os_name == \"nt\""
name = "pywinpty"
+version = "0.5.7"
+description = "Python bindings for the winpty library"
+category = "main"
optional = false
python-versions = "*"
-version = "0.5.7"
[[package]]
-category = "main"
-description = "YAML parser and emitter for Python"
name = "pyyaml"
+version = "5.3.1"
+description = "YAML parser and emitter for Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "5.3.1"
[[package]]
-category = "main"
-description = "Python bindings for 0MQ"
name = "pyzmq"
+version = "20.0.0"
+description = "Python bindings for 0MQ"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "20.0.0"
[package.dependencies]
-cffi = "*"
-py = "*"
+cffi = {version = "*", markers = "implementation_name === \"pypy\""}
+py = {version = "*", markers = "implementation_name === \"pypy\""}
[[package]]
-category = "dev"
-description = "Jupyter Qt console"
name = "qtconsole"
+version = "4.7.7"
+description = "Jupyter Qt console"
+category = "dev"
optional = false
python-versions = "*"
-version = "4.7.7"
[package.dependencies]
ipykernel = ">=4.1"
@@ -1438,50 +1420,50 @@ doc = ["Sphinx (>=1.3)"]
test = ["pytest", "mock"]
[[package]]
-category = "dev"
-description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5, PyQt4 and PySide) and additional custom QWidgets."
name = "qtpy"
+version = "1.9.0"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5, PyQt4 and PySide) and additional custom QWidgets."
+category = "dev"
optional = false
python-versions = "*"
-version = "1.9.0"
[[package]]
-category = "dev"
-description = "Python client for Redis key-value store"
name = "redis"
+version = "3.5.3"
+description = "Python client for Redis key-value store"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "3.5.3"
[package.extras]
hiredis = ["hiredis (>=0.1.3)"]
[[package]]
-category = "dev"
-description = "Redis locking mechanism"
name = "redlock-py"
+version = "1.0.8"
+description = "Redis locking mechanism"
+category = "dev"
optional = false
python-versions = "*"
-version = "1.0.8"
[package.dependencies]
redis = "*"
[[package]]
-category = "main"
-description = "Alternative regular expression module, to replace re."
name = "regex"
+version = "2020.11.13"
+description = "Alternative regular expression module, to replace re."
+category = "main"
optional = false
python-versions = "*"
-version = "2020.11.13"
[[package]]
-category = "main"
-description = "Python HTTP for Humans."
name = "requests"
+version = "2.25.0"
+description = "Python HTTP for Humans."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "2.25.0"
[package.dependencies]
certifi = ">=2017.4.17"
@@ -1491,30 +1473,29 @@ urllib3 = ">=1.21.1,<1.27"
[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
-socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"]
+socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
[[package]]
-category = "dev"
-description = "Checks installed dependencies for known vulnerabilities."
name = "safety"
+version = "1.9.0"
+description = "Checks installed dependencies for known vulnerabilities."
+category = "dev"
optional = false
python-versions = ">=3.5"
-version = "1.9.0"
[package.dependencies]
Click = ">=6.0"
dparse = ">=0.5.1"
packaging = "*"
requests = "*"
-setuptools = "*"
[[package]]
-category = "main"
-description = "A set of python modules for machine learning and data mining"
name = "scikit-learn"
+version = "0.23.2"
+description = "A set of python modules for machine learning and data mining"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "0.23.2"
[package.dependencies]
joblib = ">=0.11"
@@ -1526,39 +1507,39 @@ threadpoolctl = ">=2.0.0"
alldeps = ["numpy (>=1.13.3)", "scipy (>=0.19.1)"]
[[package]]
-category = "main"
-description = "SciPy: Scientific Library for Python"
name = "scipy"
+version = "1.5.4"
+description = "SciPy: Scientific Library for Python"
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "1.5.4"
[package.dependencies]
numpy = ">=1.14.5"
[[package]]
-category = "main"
-description = "Send file to trash natively under Mac OS X, Windows and Linux."
name = "send2trash"
+version = "1.5.0"
+description = "Send file to trash natively under Mac OS X, Windows and Linux."
+category = "main"
optional = false
python-versions = "*"
-version = "1.5.0"
[[package]]
-category = "main"
-description = "SentencePiece python wrapper"
name = "sentencepiece"
+version = "0.1.95"
+description = "SentencePiece python wrapper"
+category = "main"
optional = false
python-versions = "*"
-version = "0.1.95"
[[package]]
-category = "main"
-description = "Python client for Sentry (https://sentry.io)"
name = "sentry-sdk"
+version = "0.19.4"
+description = "Python client for Sentry (https://sentry.io)"
+category = "main"
optional = false
python-versions = "*"
-version = "0.19.4"
[package.dependencies]
certifi = "*"
@@ -1581,56 +1562,55 @@ sqlalchemy = ["sqlalchemy (>=1.2)"]
tornado = ["tornado (>=5)"]
[[package]]
-category = "main"
-description = "A generator library for concise, unambiguous and URL-safe UUIDs."
name = "shortuuid"
+version = "1.0.1"
+description = "A generator library for concise, unambiguous and URL-safe UUIDs."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.1"
[[package]]
-category = "main"
-description = "Python 2 and 3 compatibility utilities"
name = "six"
+version = "1.15.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "1.15.0"
[[package]]
-category = "main"
-description = "A pure Python implementation of a sliding window memory map manager"
name = "smmap"
+version = "3.0.4"
+description = "A pure Python implementation of a sliding window memory map manager"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "3.0.4"
[[package]]
-category = "main"
-description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
name = "snowballstemmer"
+version = "2.0.0"
+description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
+category = "main"
optional = false
python-versions = "*"
-version = "2.0.0"
[[package]]
-category = "main"
-description = "Python documentation generator"
name = "sphinx"
+version = "3.3.1"
+description = "Python documentation generator"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "3.3.1"
[package.dependencies]
-Jinja2 = ">=2.3"
-Pygments = ">=2.0"
alabaster = ">=0.7,<0.8"
babel = ">=1.3"
-colorama = ">=0.3.5"
+colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
docutils = ">=0.12"
imagesize = "*"
+Jinja2 = ">=2.3"
packaging = "*"
+Pygments = ">=2.0"
requests = ">=2.5.0"
-setuptools = "*"
snowballstemmer = ">=1.1"
sphinxcontrib-applehelp = "*"
sphinxcontrib-devhelp = "*"
@@ -1645,12 +1625,12 @@ lint = ["flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.790)", "docutils-s
test = ["pytest", "pytest-cov", "html5lib", "typed-ast", "cython"]
[[package]]
-category = "main"
-description = "Type hints (PEP 484) support for the Sphinx autodoc extension"
name = "sphinx-autodoc-typehints"
+version = "1.11.1"
+description = "Type hints (PEP 484) support for the Sphinx autodoc extension"
+category = "main"
optional = false
python-versions = ">=3.5.2"
-version = "1.11.1"
[package.dependencies]
Sphinx = ">=3.0"
@@ -1660,153 +1640,153 @@ test = ["pytest (>=3.1.0)", "typing-extensions (>=3.5)", "sphobjinv (>=2.0)", "S
type_comments = ["typed-ast (>=1.4.0)"]
[[package]]
-category = "main"
-description = "Read the Docs theme for Sphinx"
name = "sphinx-rtd-theme"
+version = "0.4.3"
+description = "Read the Docs theme for Sphinx"
+category = "main"
optional = false
python-versions = "*"
-version = "0.4.3"
[package.dependencies]
sphinx = "*"
[[package]]
-category = "main"
-description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
name = "sphinxcontrib-applehelp"
+version = "1.0.2"
+description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.2"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "main"
-description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
name = "sphinxcontrib-devhelp"
+version = "1.0.2"
+description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.2"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "main"
-description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
name = "sphinxcontrib-htmlhelp"
+version = "1.0.3"
+description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.3"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest", "html5lib"]
[[package]]
-category = "main"
-description = "A sphinx extension which renders display math in HTML via JavaScript"
name = "sphinxcontrib-jsmath"
+version = "1.0.1"
+description = "A sphinx extension which renders display math in HTML via JavaScript"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.1"
[package.extras]
test = ["pytest", "flake8", "mypy"]
[[package]]
-category = "main"
-description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
name = "sphinxcontrib-qthelp"
+version = "1.0.3"
+description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.3"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "main"
-description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
name = "sphinxcontrib-serializinghtml"
+version = "1.1.4"
+description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.1.4"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "dev"
-description = "Manage dynamic plugins for Python applications"
name = "stevedore"
+version = "3.2.2"
+description = "Manage dynamic plugins for Python applications"
+category = "dev"
optional = false
python-versions = ">=3.6"
-version = "3.2.2"
[package.dependencies]
pbr = ">=2.0.0,<2.1.0 || >2.1.0"
[[package]]
-category = "main"
-description = "A backport of the subprocess module from Python 3 for use on 2.x."
name = "subprocess32"
+version = "3.5.4"
+description = "A backport of the subprocess module from Python 3 for use on 2.x."
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4"
-version = "3.5.4"
[[package]]
-category = "main"
-description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
name = "terminado"
+version = "0.9.1"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+category = "main"
optional = false
python-versions = ">=3.6"
-version = "0.9.1"
[package.dependencies]
-ptyprocess = "*"
-pywinpty = ">=0.5"
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=0.5", markers = "os_name == \"nt\""}
tornado = ">=4"
[[package]]
-category = "main"
-description = "Test utilities for code working with files and commands"
name = "testpath"
+version = "0.4.4"
+description = "Test utilities for code working with files and commands"
+category = "main"
optional = false
python-versions = "*"
-version = "0.4.4"
[package.extras]
test = ["pathlib2"]
[[package]]
-category = "main"
-description = "threadpoolctl"
name = "threadpoolctl"
+version = "2.1.0"
+description = "threadpoolctl"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "2.1.0"
[[package]]
-category = "main"
-description = "Python Library for Tom's Obvious, Minimal Language"
name = "toml"
+version = "0.10.2"
+description = "Python Library for Tom's Obvious, Minimal Language"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "0.10.2"
[[package]]
-category = "main"
-description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
name = "torch"
+version = "1.7.0"
+description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
+category = "main"
optional = false
python-versions = ">=3.6.1"
-version = "1.7.0"
[package.dependencies]
dataclasses = "*"
@@ -1815,20 +1795,20 @@ numpy = "*"
typing-extensions = "*"
[[package]]
-category = "main"
-description = "Model summary in PyTorch, based off of the original torchsummary."
name = "torch-summary"
+version = "1.4.3"
+description = "Model summary in PyTorch, based off of the original torchsummary."
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.4.3"
[[package]]
-category = "main"
-description = "image and video datasets and models for torch deep learning"
name = "torchvision"
+version = "0.8.1"
+description = "image and video datasets and models for torch deep learning"
+category = "main"
optional = false
python-versions = "*"
-version = "0.8.1"
[package.dependencies]
numpy = "*"
@@ -1839,31 +1819,31 @@ torch = "1.7.0"
scipy = ["scipy"]
[[package]]
-category = "main"
-description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
name = "tornado"
+version = "6.1"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+category = "main"
optional = false
python-versions = ">= 3.5"
-version = "6.1"
[[package]]
-category = "main"
-description = "Fast, Extensible Progress Meter"
name = "tqdm"
+version = "4.53.0"
+description = "Fast, Extensible Progress Meter"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
-version = "4.53.0"
[package.extras]
dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown", "wheel"]
[[package]]
-category = "main"
-description = "Traitlets Python configuration system"
name = "traitlets"
+version = "5.0.5"
+description = "Traitlets Python configuration system"
+category = "main"
optional = false
python-versions = ">=3.7"
-version = "5.0.5"
[package.dependencies]
ipython-genutils = "*"
@@ -1872,76 +1852,76 @@ ipython-genutils = "*"
test = ["pytest"]
[[package]]
-category = "dev"
-description = "a fork of Python 2 and 3 ast modules with type comment support"
name = "typed-ast"
+version = "1.4.1"
+description = "a fork of Python 2 and 3 ast modules with type comment support"
+category = "dev"
optional = false
python-versions = "*"
-version = "1.4.1"
[[package]]
-category = "dev"
-description = "Run-time type checker for Python"
name = "typeguard"
+version = "2.10.0"
+description = "Run-time type checker for Python"
+category = "dev"
optional = false
python-versions = ">=3.5.3"
-version = "2.10.0"
[package.extras]
doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
test = ["pytest", "typing-extensions"]
[[package]]
-category = "main"
-description = "Backported and Experimental Type Hints for Python 3.5+"
name = "typing-extensions"
+version = "3.7.4.3"
+description = "Backported and Experimental Type Hints for Python 3.5+"
+category = "main"
optional = false
python-versions = "*"
-version = "3.7.4.3"
[[package]]
-category = "main"
-description = "Runtime inspection utilities for typing module."
name = "typing-inspect"
+version = "0.6.0"
+description = "Runtime inspection utilities for typing module."
+category = "main"
optional = false
python-versions = "*"
-version = "0.6.0"
[package.dependencies]
mypy-extensions = ">=0.3.0"
typing-extensions = ">=3.7.4"
[[package]]
-category = "main"
-description = "HTTP library with thread-safe connection pooling, file post, and more."
name = "urllib3"
+version = "1.26.2"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
-version = "1.26.2"
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
-socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
+socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
-category = "main"
-description = "A CLI and library for interacting with the Weights and Biases API."
name = "wandb"
+version = "0.10.12"
+description = "A CLI and library for interacting with the Weights and Biases API."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "0.10.12"
[package.dependencies]
Click = ">=7.0"
-GitPython = ">=1.0.0"
-PyYAML = "*"
configparser = ">=3.8.1"
docker-pycreds = ">=0.4.0"
+GitPython = ">=1.0.0"
promise = ">=2.0,<3"
protobuf = ">=3.12.0"
psutil = ">=5.0.0"
python-dateutil = ">=2.6.1"
+PyYAML = "*"
requests = ">=2.0.0,<3"
sentry-sdk = ">=0.4.0"
shortuuid = ">=0.5.0"
@@ -1952,16 +1932,16 @@ watchdog = ">=0.8.3"
[package.extras]
aws = ["boto3"]
gcp = ["google-cloud-storage"]
-grpc = ["grpcio (1.27.2)"]
+grpc = ["grpcio (==1.27.2)"]
kubeflow = ["kubernetes", "minio", "google-cloud-storage", "sh"]
[[package]]
-category = "main"
-description = "Filesystem events monitoring"
name = "watchdog"
+version = "0.10.4"
+description = "Filesystem events monitoring"
+category = "main"
optional = false
python-versions = "*"
-version = "0.10.4"
[package.dependencies]
pathtools = ">=0.1.1"
@@ -1970,51 +1950,50 @@ pathtools = ">=0.1.1"
watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"]
[[package]]
-category = "main"
-description = "Measures the displayed width of unicode strings in a terminal"
name = "wcwidth"
+version = "0.2.5"
+description = "Measures the displayed width of unicode strings in a terminal"
+category = "main"
optional = false
python-versions = "*"
-version = "0.2.5"
[[package]]
-category = "main"
-description = "Character encoding aliases for legacy web content"
name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+category = "main"
optional = false
python-versions = "*"
-version = "0.5.1"
[[package]]
-category = "dev"
-description = "IPython HTML widgets for Jupyter"
name = "widgetsnbextension"
+version = "3.5.1"
+description = "IPython HTML widgets for Jupyter"
+category = "dev"
optional = false
python-versions = "*"
-version = "3.5.1"
[package.dependencies]
notebook = ">=4.4.1"
[[package]]
-category = "main"
-description = "A small Python utility to set file creation time on Windows"
-marker = "sys_platform == \"win32\""
name = "win32-setctime"
+version = "1.0.3"
+description = "A small Python utility to set file creation time on Windows"
+category = "main"
optional = false
python-versions = ">=3.5"
-version = "1.0.3"
[package.extras]
dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"]
[[package]]
-category = "dev"
-description = "A rewrite of the builtin doctest module"
name = "xdoctest"
+version = "0.12.0"
+description = "A rewrite of the builtin doctest module"
+category = "dev"
optional = false
python-versions = "*"
-version = "0.12.0"
[package.dependencies]
six = "*"
@@ -2025,9 +2004,9 @@ optional = ["pygments", "colorama"]
tests = ["pytest", "pytest-cov", "codecov", "scikit-build", "cmake", "ninja", "pybind11"]
[metadata]
-content-hash = "1f194d7de179e9676ef1f8e51b83ff15c001627803008ef8225e8e14ab3acab0"
-lock-version = "1.0"
+lock-version = "1.1"
python-versions = "^3.8"
+content-hash = "1f194d7de179e9676ef1f8e51b83ff15c001627803008ef8225e8e14ab3acab0"
[metadata.files]
alabaster = [
diff --git a/src/notebooks/00-testing-stuff-out.ipynb b/src/notebooks/00-testing-stuff-out.ipynb
index 0e4b298..2d6b43c 100644
--- a/src/notebooks/00-testing-stuff-out.ipynb
+++ b/src/notebooks/00-testing-stuff-out.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -25,16 +25,71 @@
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "from text_recognizer.networks import CNN"
+ "from text_recognizer.networks import CNN, TDS2d"
]
},
{
"cell_type": "code",
- "execution_count": 63,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tds2d = TDS2d(**{\n",
+ " \"depth\" : 4,\n",
+ " \"tds_groups\" : [\n",
+ " { \"channels\" : 4, \"num_blocks\" : 3, \"stride\" : [2, 2] },\n",
+ " { \"channels\" : 32, \"num_blocks\" : 3, \"stride\" : [2, 2] },\n",
+ " { \"channels\" : 64, \"num_blocks\" : 3, \"stride\" : [2, 2] },\n",
+ " { \"channels\" : 128, \"num_blocks\" : 3, \"stride\" : [2, 1] },\n",
+ " ],\n",
+ " \"kernel_size\" : [5, 7],\n",
+ " \"dropout_rate\" : 0.1\n",
+ " }, input_dim=32, output_dim=128)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tds2d"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "summary(tds2d, (1, 28, 952), device=\"cpu\", depth=3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "t = torch.randn(2,1, 28, 952)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tds2d(t).shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -43,7 +98,7 @@
},
{
"cell_type": "code",
- "execution_count": 79,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -52,54 +107,25 @@
},
{
"cell_type": "code",
- "execution_count": 81,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Sequential(\n",
- " (0): Sequential(\n",
- " (0): Conv2d(1, 1, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (1): Sequential(\n",
- " (0): Conv2d(1, 1, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 81,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"nn.Sequential(i,i)"
]
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([2, 128, 1, 59])"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"cnn(t).shape"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -108,7 +134,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -117,7 +143,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -126,7 +152,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -135,160 +161,34 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "29.5"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"5 * 59 / 10"
]
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([2, 1, 28, 952])"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"x.shape"
]
},
{
"cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "===============================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "===============================================================================================\n",
- "├─Encoder: 1-1 [-1, 32, 5, 59] --\n",
- "| └─Sequential: 2-1 [-1, 32, 5, 59] --\n",
- "| | └─Sequential: 3-1 [-1, 32, 14, 476] 544\n",
- "| | └─Sequential: 3-2 [-1, 128, 7, 238] 65,664\n",
- "| | └─Sequential: 3-3 [-1, 128, 6, 119] 262,272\n",
- "| | └─Sequential: 3-4 [-1, 256, 5, 59] 524,544\n",
- "| | └─_ResidualBlock: 3-5 [-1, 256, 5, 59] 655,360\n",
- "| | └─_ResidualBlock: 3-6 [-1, 256, 5, 59] 655,360\n",
- "| | └─Conv2d: 3-7 [-1, 32, 5, 59] 8,224\n",
- "| └─VectorQuantizer: 2-2 [-1, 32, 5, 59] --\n",
- "├─Decoder: 1-2 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2-3 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2-4 [-1, 256, 5, 59] --\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-8 [-1, 256, 5, 59] (recursive)\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Conv2d: 3-9 [-1, 256, 5, 59] 8,448\n",
- "| | └─_ResidualBlock: 3-10 [-1, 256, 5, 59] 655,360\n",
- "| | └─_ResidualBlock: 3-11 [-1, 256, 5, 59] 655,360\n",
- "| └─Sequential: 2-5 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-12 [-1, 1, 28, 952] (recursive)\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-13 [-1, 128, 6, 118] 524,416\n",
- "| | └─Upsample: 3-14 [-1, 128, 6, 119] --\n",
- "| | └─Sequential: 3-15 [-1, 128, 7, 238] 262,272\n",
- "| | └─Upsample: 3-16 [-1, 128, 7, 238] --\n",
- "| | └─Sequential: 3-17 [-1, 32, 14, 476] 65,568\n",
- "| | └─ConvTranspose2d: 3-18 [-1, 1, 28, 952] 513\n",
- "| | └─Tanh: 3-19 [-1, 1, 28, 952] --\n",
- "===============================================================================================\n",
- "Total params: 4,343,905\n",
- "Trainable params: 4,343,905\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (G): 1.76\n",
- "===============================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 9.32\n",
- "Params size (MB): 16.57\n",
- "Estimated Total Size (MB): 26.00\n",
- "===============================================================================================\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "===============================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "===============================================================================================\n",
- "├─Encoder: 1-1 [-1, 32, 5, 59] --\n",
- "| └─Sequential: 2-1 [-1, 32, 5, 59] --\n",
- "| | └─Sequential: 3-1 [-1, 32, 14, 476] 544\n",
- "| | └─Sequential: 3-2 [-1, 128, 7, 238] 65,664\n",
- "| | └─Sequential: 3-3 [-1, 128, 6, 119] 262,272\n",
- "| | └─Sequential: 3-4 [-1, 256, 5, 59] 524,544\n",
- "| | └─_ResidualBlock: 3-5 [-1, 256, 5, 59] 655,360\n",
- "| | └─_ResidualBlock: 3-6 [-1, 256, 5, 59] 655,360\n",
- "| | └─Conv2d: 3-7 [-1, 32, 5, 59] 8,224\n",
- "| └─VectorQuantizer: 2-2 [-1, 32, 5, 59] --\n",
- "├─Decoder: 1-2 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2-3 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2-4 [-1, 256, 5, 59] --\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-8 [-1, 256, 5, 59] (recursive)\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Conv2d: 3-9 [-1, 256, 5, 59] 8,448\n",
- "| | └─_ResidualBlock: 3-10 [-1, 256, 5, 59] 655,360\n",
- "| | └─_ResidualBlock: 3-11 [-1, 256, 5, 59] 655,360\n",
- "| └─Sequential: 2-5 [-1, 1, 28, 952] --\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-12 [-1, 1, 28, 952] (recursive)\n",
- "| └─Sequential: 2 [] --\n",
- "| | └─Sequential: 3-13 [-1, 128, 6, 118] 524,416\n",
- "| | └─Upsample: 3-14 [-1, 128, 6, 119] --\n",
- "| | └─Sequential: 3-15 [-1, 128, 7, 238] 262,272\n",
- "| | └─Upsample: 3-16 [-1, 128, 7, 238] --\n",
- "| | └─Sequential: 3-17 [-1, 32, 14, 476] 65,568\n",
- "| | └─ConvTranspose2d: 3-18 [-1, 1, 28, 952] 513\n",
- "| | └─Tanh: 3-19 [-1, 1, 28, 952] --\n",
- "===============================================================================================\n",
- "Total params: 4,343,905\n",
- "Trainable params: 4,343,905\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (G): 1.76\n",
- "===============================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 9.32\n",
- "Params size (MB): 16.57\n",
- "Estimated Total Size (MB): 26.00\n",
- "==============================================================================================="
- ]
- },
- "execution_count": 26,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"summary(vqvae, (1, 28, 952), device=\"cpu\", depth=3)"
]
},
{
"cell_type": "code",
- "execution_count": 94,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -297,47 +197,25 @@
},
{
"cell_type": "code",
- "execution_count": 107,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([2, 32, 4, 59])"
- ]
- },
- "execution_count": 107,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"up(tt).shape"
]
},
{
"cell_type": "code",
- "execution_count": 104,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([2, 32, 1, 59])"
- ]
- },
- "execution_count": 104,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"tt.shape"
]
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -353,7 +231,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -362,27 +240,16 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 30, 2048])"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"e(t).shape"
]
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -391,7 +258,7 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -401,7 +268,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -410,7 +277,7 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -419,75 +286,34 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "ename": "ModuleAttributeError",
- "evalue": "'Embedding' object has no attribute 'device'",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mModuleAttributeError\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m<ipython-input-58-657f11e4a017>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0memb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
- "\u001b[0;32m~/.cache/pypoetry/virtualenvs/text-recognizer-N1c_zsdp-py3.8/lib/python3.8/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 776\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodules\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 777\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmodules\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 778\u001b[0;31m raise ModuleAttributeError(\"'{}' object has no attribute '{}'\".format(\n\u001b[0m\u001b[1;32m 779\u001b[0m type(self).__name__, name))\n\u001b[1;32m 780\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;31mModuleAttributeError\u001b[0m: 'Embedding' object has no attribute 'device'"
- ]
- }
- ],
+ "outputs": [],
"source": [
"emb.device"
]
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([[-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005],\n",
- " [-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005],\n",
- " [-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005],\n",
- " ...,\n",
- " [-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005],\n",
- " [-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005],\n",
- " [-1.0624, 0.0674, 0.9387, ..., -0.1852, -0.1303, 0.8005]])"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"ee"
]
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([16, 256])"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"ee.shape"
]
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -496,27 +322,16 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([16, 10, 256])"
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"t.shape"
]
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -525,47 +340,25 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([16, 12, 256])"
- ]
- },
- "execution_count": 57,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"t.shape"
]
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 256])"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"e.shape"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -574,7 +367,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -583,7 +376,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -603,7 +396,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -612,7 +405,7 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -621,90 +414,16 @@
},
{
"cell_type": "code",
- "execution_count": 52,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 64, 12, 474] --\n",
- "| └─Conv2d: 2-1 [-1, 64, 12, 474] 3,136\n",
- "| └─BatchNorm2d: 2-2 [-1, 64, 12, 474] 128\n",
- "| └─ReLU: 2-3 [-1, 64, 12, 474] --\n",
- "├─Sequential: 1-2 [-1, 68, 1, 30] --\n",
- "| └─ResidualLayer: 2-4 [-1, 64, 12, 474] --\n",
- "| | └─Sequential: 3-1 [-1, 64, 12, 474] 147,968\n",
- "| └─ResidualLayer: 2-5 [-1, 65, 6, 237] --\n",
- "| | └─Sequential: 3-2 [-1, 65, 6, 237] 156,325\n",
- "| └─ResidualLayer: 2-6 [-1, 66, 3, 119] --\n",
- "| | └─Sequential: 3-3 [-1, 66, 3, 119] 161,172\n",
- "| └─ResidualLayer: 2-7 [-1, 67, 2, 60] --\n",
- "| | └─Sequential: 3-4 [-1, 67, 2, 60] 166,093\n",
- "| └─ResidualLayer: 2-8 [-1, 68, 1, 30] --\n",
- "| | └─Sequential: 3-5 [-1, 68, 1, 30] 171,088\n",
- "==========================================================================================\n",
- "Total params: 805,910\n",
- "Trainable params: 805,910\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 21.05\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 5.55\n",
- "Params size (MB): 3.07\n",
- "Estimated Total Size (MB): 8.73\n",
- "==========================================================================================\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 64, 12, 474] --\n",
- "| └─Conv2d: 2-1 [-1, 64, 12, 474] 3,136\n",
- "| └─BatchNorm2d: 2-2 [-1, 64, 12, 474] 128\n",
- "| └─ReLU: 2-3 [-1, 64, 12, 474] --\n",
- "├─Sequential: 1-2 [-1, 68, 1, 30] --\n",
- "| └─ResidualLayer: 2-4 [-1, 64, 12, 474] --\n",
- "| | └─Sequential: 3-1 [-1, 64, 12, 474] 147,968\n",
- "| └─ResidualLayer: 2-5 [-1, 65, 6, 237] --\n",
- "| | └─Sequential: 3-2 [-1, 65, 6, 237] 156,325\n",
- "| └─ResidualLayer: 2-6 [-1, 66, 3, 119] --\n",
- "| | └─Sequential: 3-3 [-1, 66, 3, 119] 161,172\n",
- "| └─ResidualLayer: 2-7 [-1, 67, 2, 60] --\n",
- "| | └─Sequential: 3-4 [-1, 67, 2, 60] 166,093\n",
- "| └─ResidualLayer: 2-8 [-1, 68, 1, 30] --\n",
- "| | └─Sequential: 3-5 [-1, 68, 1, 30] 171,088\n",
- "==========================================================================================\n",
- "Total params: 805,910\n",
- "Trainable params: 805,910\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 21.05\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 5.55\n",
- "Params size (MB): 3.07\n",
- "Estimated Total Size (MB): 8.73\n",
- "=========================================================================================="
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"summary(backbone, (1, 28, 952), device=\"cpu\", depth=3)"
]
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -715,187 +434,25 @@
},
{
"cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Sequential(\n",
- " (0): SELU(inplace=True)\n",
- " (1): Sequential(\n",
- " (0): Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (2): SELU(inplace=True)\n",
- " (3): MaxPool2d(kernel_size=(2, 4), stride=2, padding=1, dilation=1, ceil_mode=False)\n",
- " )\n",
- " (2): Sequential(\n",
- " (0): Sequential(\n",
- " (0): WideBlock(\n",
- " (activation): SELU(inplace=True)\n",
- " (blocks): Sequential(\n",
- " (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (1): SELU(inplace=True)\n",
- " (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " (3): Dropout(p=0.1, inplace=False)\n",
- " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (5): SELU(inplace=True)\n",
- " (6): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (1): Sequential(\n",
- " (0): WideBlock(\n",
- " (activation): SELU(inplace=True)\n",
- " (blocks): Sequential(\n",
- " (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (1): SELU(inplace=True)\n",
- " (2): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " (3): Dropout(p=0.1, inplace=False)\n",
- " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (5): SELU(inplace=True)\n",
- " (6): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " )\n",
- " (shortcut): Sequential(\n",
- " (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (2): Sequential(\n",
- " (0): WideBlock(\n",
- " (activation): SELU(inplace=True)\n",
- " (blocks): Sequential(\n",
- " (0): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (1): SELU(inplace=True)\n",
- " (2): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " (3): Dropout(p=0.1, inplace=False)\n",
- " (4): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (5): SELU(inplace=True)\n",
- " (6): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " )\n",
- " (shortcut): Sequential(\n",
- " (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (3): Sequential(\n",
- " (0): WideBlock(\n",
- " (activation): SELU(inplace=True)\n",
- " (blocks): Sequential(\n",
- " (0): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (1): SELU(inplace=True)\n",
- " (2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " (3): Dropout(p=0.1, inplace=False)\n",
- " (4): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (5): SELU(inplace=True)\n",
- " (6): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " )\n",
- " (shortcut): Sequential(\n",
- " (0): Conv2d(256, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"backbone"
]
},
{
"cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 64, 7, 237] --\n",
- "| └─Conv2d: 2-1 [-1, 64, 12, 474] 3,136\n",
- "| └─BatchNorm2d: 2-2 [-1, 64, 12, 474] 128\n",
- "├─SELU: 1-2 [-1, 64, 12, 474] --\n",
- "├─Sequential: 1 [] --\n",
- "| └─SELU: 2-3 [-1, 64, 12, 474] --\n",
- "| └─MaxPool2d: 2-4 [-1, 64, 7, 237] --\n",
- "├─Sequential: 1-3 [-1, 256, 1, 30] --\n",
- "| └─Sequential: 2-5 [-1, 64, 7, 237] --\n",
- "| | └─WideBlock: 3-1 [-1, 64, 7, 237] 73,984\n",
- "| └─Sequential: 2-6 [-1, 128, 4, 119] --\n",
- "| | └─WideBlock: 3-2 [-1, 128, 4, 119] 229,760\n",
- "| └─Sequential: 2-7 [-1, 256, 2, 60] --\n",
- "| | └─WideBlock: 3-3 [-1, 256, 2, 60] 918,272\n",
- "| └─Sequential: 2-8 [-1, 256, 1, 30] --\n",
- "| | └─WideBlock: 3-4 [-1, 256, 1, 30] 1,246,208\n",
- "==========================================================================================\n",
- "Total params: 2,471,488\n",
- "Trainable params: 2,471,488\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 27.71\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 5.55\n",
- "Params size (MB): 9.43\n",
- "Estimated Total Size (MB): 15.08\n",
- "==========================================================================================\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 64, 7, 237] --\n",
- "| └─Conv2d: 2-1 [-1, 64, 12, 474] 3,136\n",
- "| └─BatchNorm2d: 2-2 [-1, 64, 12, 474] 128\n",
- "├─SELU: 1-2 [-1, 64, 12, 474] --\n",
- "├─Sequential: 1 [] --\n",
- "| └─SELU: 2-3 [-1, 64, 12, 474] --\n",
- "| └─MaxPool2d: 2-4 [-1, 64, 7, 237] --\n",
- "├─Sequential: 1-3 [-1, 256, 1, 30] --\n",
- "| └─Sequential: 2-5 [-1, 64, 7, 237] --\n",
- "| | └─WideBlock: 3-1 [-1, 64, 7, 237] 73,984\n",
- "| └─Sequential: 2-6 [-1, 128, 4, 119] --\n",
- "| | └─WideBlock: 3-2 [-1, 128, 4, 119] 229,760\n",
- "| └─Sequential: 2-7 [-1, 256, 2, 60] --\n",
- "| | └─WideBlock: 3-3 [-1, 256, 2, 60] 918,272\n",
- "| └─Sequential: 2-8 [-1, 256, 1, 30] --\n",
- "| | └─WideBlock: 3-4 [-1, 256, 1, 30] 1,246,208\n",
- "==========================================================================================\n",
- "Total params: 2,471,488\n",
- "Trainable params: 2,471,488\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 27.71\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 5.55\n",
- "Params size (MB): 9.43\n",
- "Estimated Total Size (MB): 15.08\n",
- "=========================================================================================="
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"summary(wr, (1, 28, 952), device=\"cpu\", depth=3)"
]
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -904,7 +461,7 @@
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -913,7 +470,7 @@
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -922,7 +479,7 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -931,7 +488,7 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -940,7 +497,7 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -949,67 +506,34 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 119, 256, 1])"
- ]
- },
- "execution_count": 43,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"d.shape"
]
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 119, 256])"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"d.squeeze(3).shape"
]
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 256, 4, 119])"
- ]
- },
- "execution_count": 26,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"b.shape"
]
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1018,47 +542,25 @@
},
{
"cell_type": "code",
- "execution_count": 70,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "96"
- ]
- },
- "execution_count": 70,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"32 + 64"
]
},
{
"cell_type": "code",
- "execution_count": 106,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "336"
- ]
- },
- "execution_count": 106,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"3 * 112"
]
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1067,7 +569,7 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1076,62 +578,29 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"metadata": {
"scrolled": true
},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([4, 196, 128])"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"col_embed[:W].unsqueeze(0).repeat(H, 1, 1).shape"
]
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([4, 196, 128])"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"col_embed[:H].unsqueeze(1).repeat(1, W, 1).shape"
]
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([1, 4, 196, 256])"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
" torch.cat(\n",
" [\n",
@@ -1144,27 +613,16 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "784"
- ]
- },
- "execution_count": 21,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"4 * 196"
]
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1173,40 +631,18 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "8"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"torch.nonzero(target == 9, as_tuple=False)[0].item()"
]
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([ 1, 1, 12, 1, 1, 1, 1, 1, 9])"
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target[:9]"
]
@@ -1220,27 +656,16 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "inf"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"np.inf"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1249,22 +674,9 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAEvCAYAAAD4uAgWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAD9/0lEQVR4nOzddXgU5xbA4d9s3D0hxIO7B3coWlrcHUqBunt7e+tOi5TiLgXaYgUKpbi7Q4gLxF13d+4fA1zaAglkN7ObfO/z5AndnZ05UJjM+eQcSZZlBEEQBEEQBEEQhIpBo3YAgiAIgiAIgiAIguGIJE8QBEEQBEEQBKECEUmeIAiCIAiCIAhCBSKSPEEQBEEQBEEQhApEJHmCIAiCIAiCIAgViEjyBEEQBEEQBEEQKhBLtQN4FJ6ennJwcLDaYQiCIAiCIAiCIKjixIkTKbIse93rPbNM8oKDgzl+/LjaYQiCIAiCIAiCIKhCkqTo+70nlmsKgiAIgiAIgiBUICLJEwRBEARBEARBqEBEkicIgiAIgiAIglCBiCRPEARBEARBEAShAhFJniAIgiAIgiAIQgUikjxBEARBEARBEIQKRCR5giAIgiAIgiAIFYhBkjxJkhZKkpQkSdL5+7wvSZL0vSRJ4ZIknZUkqeld742VJOnara+xhohHEARBEARBEAShsjLUTN5ioOcD3u8F1Lj19RQwB0CSJHfgfaAlEAa8L0mSm4FiEgRBEARBEARBqHQsDXESWZb3SpIU/IBDngCWyrIsA4clSXKVJMkX6AT8IctyGoAkSX+gJIurDBFXecqc9TayxhbJuwYaF08kGxskaxs0NtbKr21tsXR3R+PsjCRJaoerqvwiHdeTc4hIycXP1ZYGfq5YW4qVw6YqrziP1IJUsgqzKNQVUqwvplhfTJGu6M53rV4LgJ2lHbaWtsqXhe3//9vCFjdbN6wtrFX+3Qj3JMtQnAcFWVCYBRpLcA+FSn6vehCdXqZYp7/1JWNvbYGtlYXaYQlC5ZIeDdmJYO8JDp5g6yLuWw9QrNNzKiaDgmIdfm52+LnaifvWPchFReiystBlZt75svLzw7ZmTbVDeygGSfJKwQ+Iveu/4269dr/X/0WSpKdQZgEJDAw0TpSPSpZJWrgebW7JNxbJ2hpLT08svbyw9PbC4tavrXyqYB0agk1oKBYuLuUQtPEVafVcuZHN1ZvZXEvK4dqt77Hpecjy/4+zsdTQOMCVsBB3WgS70zTIDUeb8vqrWbnlFecRmRVJVGYUMVkxJOUnkZafRmpBKqn5qaQWpJKvzTfY9dxs3PCy98Lb3htve2+87JRfV3GoQohzCH5OfmgkkfAbjV4HV7bCyaXKg9HtpK4wG24l6nd41oL6A5Uvz+rqxGsCrifnsOxQNFvPJZJXpLuT2Onlvx9na6WhV31fBjfzp1WoBxqNeNAUBIOTZUi6CJc2waXNcPPc39/XWCnJnoMnOHgpX7V6Q51+oKmcP1vi0vPYczWZPVeSOXg9lZzCv9/rPR2t8XO1u5P0Bbrb07uBLx6ONipFbFy6nFyK4+Mojo2lKPbW97hYtEnJdxI6OS/vX5/zmDQR21deUSHiRyfJslzyUaU5kTKTt1mW5fr3eG8z8Jksy/tv/fcu4HWUmTxbWZY/uvX6u0C+LMtfPehazZs3l48fP26QuA1FGx+JPvYMcvw55IQLyImX0afHI+slZJ2E3toLbZX2aG1D0KWmok1OvvWVgi4j42/nsvD0xCY0FOtqodiEKN9ta9fG0sNDnd/cQ9LrZTadTeDz3y+TkFkAgJWFRIinAzV8nKjh7UgNbydCPB2IScvlaGQ6x6LSuJCQiV4GjQR1qzrTpponT3UIxbOC3mjKU05RDudTzxOeHk5UVhSRmUpil5SfdOcYCQk3Wzfcbd3xsPPAw9YDDzsP5b9tPe7MxFlprLDSWN359e3vellPoa6QAm0B+dp8CnQFFGoLydflk1ecR1pBGsl5ySTlJZGUn0RyXjKpBanoZf2dGGwtbAlxCSHUNZTqrtUJdVG++zn6YaERo42PrLgAzqyCQzMhNRxcAsGnLtg4g63zP767QF4aXPwVog8CMvg2UpK9egPANUDt343R6fQyuy8nseRQFPuupWBlIfFY3Sr4ONtiZSlhbaHBUqO569cS15Jy2HgmgewCLf5udgxs6s+gZv4EuNur/dsRBPOm10PcMbh8K7FLjwQkCGgJdR4H79rKPSs3+a6vFOV7RizkJimDVu1fVu5jFhV7ELlYp+fQ9VT2XE3mrytJXE/OBcDP1Y6OtbzoUMMLN3sr4jPyiU/PV77f9etCrR57awsmtgthUvtQXOysVP4dPRp9YSGFV69ScOEiBRcvUnjlCkWxsejS0v52nMbJCeuAACx9fLBwdcXCxQULF2c0Li63fu2KhYszVr6+WHp6qvS7uT9Jkk7Istz8nu+VU5I3F/hLluVVt/77CkqC1wnoJMvylHsddz+mmOTdU0EmJJ6BhNPK6HnMIeVhqc834P///x/6oiK0iYkURkRQFBGhfL+ufNdnZd05ziowELtGjbBr3Ai7xo2xrVULydK0blbHo9L475ZLnInNoL6fM091qEZdXyeCPBywsnjwKFpOoZZTMekci0zjWFQ6x6PTcLCx5O3edRjUzL/SL3MtLa1ey/WM65xNOcu55HOcTT5LRGYEMsq/dSdrJ0KcQwh2CSbYOZgQlxCCnYMJcA7AxqJ8E2qtXktqfiqJuYlEZEZwPeO68pV5nRu5N+4cZ29pT0OvhjTxbkJjr8Y09GqIo7VjucZqlvLS4PgCOPKT8qDj2xjaPq+MapfmQSczXkn2zq+H+BPKawEtoeUU5WGpgsnIK2Lt8ViWHY4mNi0fH2cbRrUMYlhYIF5OJf/bKCjWsf3CDX4+HseB6ynIMrSp5sHg5v70qu8rlkUJwsOQZTi9EnZ9CDk3lFm60I5Qu68yO+fkU/I59DrlHrb3K2UG0C0E2r8EDYeBZcXbPnApMYuX157hYmIW1pYaWoV60LGmFx1relHNy6HE5yhZlrmWlMOMXdfYcjYRFzsrpnQMZVybYOytTet5825ycTEFFy6Qf/4CBRcvUnDhAoXXr4NWmbXUuLhgW7s21kFBWAX4Yx0QgJV/ANYB/ma/es4Ukrw+wDNAb5QiK9/Lshx2q/DKCeB2tc2TQLPbe/Tux2ySvLvJsvKgtOMdZZlUk9HQ7QNlScF9PyKjS02lMPy68pf39GnyT59Gm5wMgGRnh139+tg1aYJD61bYNWuGxlqdm1ZsWh6fbbvMlrOJ+Djb8GqP2gxo4lemJUvhSdm8ueEcx6LSaR3qwScDGhDi6WDAqCsGnV7HuZRzHEw4yLEbx7iQeuHOEktXG1caeDaggVcDGno2pJZ7LTxsPcwiYc4pyrmT+F1IvcDppNNcy7iGXtYjIVHDrYaS9Hk3pmWVlnjZe6kdsunIjIODM5VlmcW5UL2bktwFt3/0/SppkXBhA5xdC8mXodEI6P0l2Jh/sl1QrOOz3y+z+lgMBcV6wkLcGds6mMfq+ZQ4OHU/8Rn5rD8Rx7oTccSk5VHTx5E5o5pRzcv8/7wEwejy0mDzi0qCFtgamk+Emo8pKw0ehV4PV3+HPV9A4mlw9od2LyjPYla2BgxcHVqdnrl7I/hu51Vc7Kx57/G6dK/jg531ow8sXUjI5OsdV/nzchKejjZM71yNES0DsbFUf7BK1uspvHyZ3MNHyD1ymPxjx9HfWmJp4e6Obb162Nari23dutjWrYeVX1WzeO55FEZP8iRJWoUyK+cJ3ESpmGkFIMvyj5LyJzsTpahKHjBeluXjtz47AXjr1qk+lmV5UUnXM8sk77bCbNjzORyeA9aO0PVdaDYeSrkUTZZltAkJ5J0+Tf7pM+SfPk3BpUug1SLZ2+PQqhWO7dvh0L4D1v733N5oUNkFxczafZ2FByLRSDClQzWmdAw12IiPXi+z+lgsn/5+iUKtnue71uCpDqGP/OBVUdzIvcGB+AMcSDjA4cTDZBdlIyFR16Mujbwa3UnqApwCKtSNLacoh7MpZzmTdIZTSac4m3KW3GJlKUod9zq0929Pe7/2NPBsUHmXd17fDWvHKsld/UHQ5lmo8q+xt0en08LeL5SHJY/qMHgRVGlguPOXs8TMfKYsO8HZuEyGNPdnXJsQ6lZ1Ntj59XqZPy8n8dr6sxQW6/hycCN6N/A12PkFocKJ3Au/PA05N6HLu8o9zFD3c1mG8F3KPSz2CDj5wuAlENjSMOdXQXhSDi//fIYzsRn0bejLh0/Ux93BcAP+J6LT+HL7FQ5HpOHnaseL3WsysKlfuT9bFMXEkLN/P3mHj5B35Ai6zEwArENCcGjdCvuwltg1aYylt3eFeu4pSbnM5JUns07ybku6DL+/qtzM7rGE82Hoc3PJPXKUnH17yd27j+L4eED5i+/YoT2OHTtiHxZm8KWd+64l88Lq06TmFjGgqR+v9qiFr4udQa9xW1JWAR9susDWczeo5ePEpwMb0DSw8nTb0Mt6ziaf5Y/oP9gfv5+IzAgAvO28aePXhrZV29LKtxWutq7qBlrOdHod1zKusT9+P/vi9nEm+Qw6WYerjStt/drS3q89bau2rTx/LicWw+aXwKsWDFuhVMg0lsi9sH4y5KdDj4+hxSSzq2p3IjqNKctOkl+k5bthTehetxTLvx5RQkY+01ee5FRMBhPahvBm79qVfrBKEP5GWwS7P4YDM8CjGgycD1WbGOdasgxR+2DT88qy9IHzoO4TxrmWkej0MosORPLl9ivYW1vw3yfr07dhVaNcS5ZlDoSn8uWOK5yJzWBcm2De61vXqAWmZFmm8OpVsv/YSfYff1B45QoAllV9cWjVGodWLbFv2RIrH+Pdt82BSPJMlSwry5+2v61sEB64AOo9WcZTyhRFRpG7by85e/eRd+wYclERFm5uOPXsgUvv3tg1a4ZUxipT287f4LlVpwj1cuCLQQ1p6O9apvOV1h8Xb/Leb+e5kVXAU+1Deb1n7QpbxU6WZS6kXmBb5Da2R2/nRu4NrDRWNPdpTlu/trSp2obqrtUr1YhVSTILMzmUcIh98fvYH7+ftII0LCQLWvm2ondob7oEdKmYe/n0OvjjPaWwSvVuMGiRUkjF2HKS4denIXynUgCh3w9gZx6DL2uPxfLOr+fxdbVl3pjm1PRxMvo1i7R6Ptl6icUHo2ge5MbMEU2p4mL+S8UEocxSrsH6iUodg2bjoMcnYF0O2zNyU2H1cIg9qgxWtZpmFoNV0am5vPLzGY5FpdOtjg+fDKiPt5Px7yV6vcxHWy6x8EAkjzeqyteDGxm0BZas11Nw9ixZf/xB9h87KY6JAUnCrllTnLt3x7FzZ6wCKtYKpbISSZ6pK8iEFUOU6lED5xm0oIE+P5+c/fvJ2rqVnN1/IRcUYOnjg3OvXjj36Y1t/foP/Y/ll1NxvPLzWRr4ubBkfBgu9uVbeSm7oJhPtl5m1dEYRrcK4sMn6lWYf/CyLHM57TLboraxPWo78TnxWGosaVu1LT2Ce9A5oHPFTFKMQC/ruZBygT9j/+T3yN+Jz4nHxsKGDv4d6BPSh3b+7cq90IxRFObAhslKcaewp6DHp+VbPU6vV5LLXf8Bp6owaAEEhJXf9R9SsU7Px1uURKt9DU9+GN4EV/vy3cu88UwCb6w/i721Bd8Pb0KbaqZXsU0Qys2JJbDtDbC0VQaK6vQt3+sX58OGp+DSRgibAj0/NdzyUCM4eD2FSUuOY6GR+ODxegwo56WTsizz454IPt92mXbVPflxdLMyt70qvHaNjA2/kLVlC9qkJLCywqFVK5y6d8OpSxeTrGppKkSSZw4Kc2DlEKUCZ/+50HCIwS+hz80le/dfSsK3bx8UF2MVEIBLv364DhqIlW/J+0RWHInmnV/P0yrEg3ljm6vWz06WZT77/TJz90Ywrk0w7z9e16wTvfSCdDZe38j6a+uJzIzEUrKkZdWW9AzuSeeAzrjYmHf1J7XJssyZ5DNsjdzK9qjtpBWk4WTlRLegbjxe7XGa+zQ3z78/mfGwaijcvAA9P1OqXqol7jisG6/E1P9Ho9zDyio9t4jpK09y8HoqE9uF8Gav2liqtGTy2s1snl5+gsiUXF7pUYupHauZ599BQSiLwz/CttchtBM8+SM4q7RfVa+HP95VBqxq9VGWilqbXvuTkzHpjJp/BH83O5ZMCDPaFpnSWHs8ljc3nKNeVWcWjmvx0O2udFlZZG3dSsb6DRScOweWljh27Ihzzx44duyIhXM5rEapAESSZy6KcmHlUIjaD0/OhsYjjHYpXWYm2Tt3krVlC7mHDoMk4dipE25Dh+DQrh2Sxb9HsebtjeDjrZfoUtub2SObql4OXJaVZQML9kcysV0I7/SpY1YPSbIsc/zmcX6++jM7o3dSrC+msVdjnqj+BN0Cu1WefWTlTKvXciTxCFsjt7Izeid52jxCXEIYUnMI/ar3w9naTH6wJJyCVcOVAaJBC5XKc2rLz4A1o5TBqhFrlKWjJuLqzWwmLjnGzaxCPunfgEHN/NUOiZxCLa+vP8uWs4lM7VSN13vWVjskQSg/Z9cqqxDqPK4UPzGF2bMjc+H318GvKQxfA46mU7X5UmIWQ+cews3Bmp+ntMbbWf2l3rsu3WT6ypP4utixdEJYiX1BZb2e3EOHyNzwC9k7dyIXFmJTsyYuA/rj8vjjZtMP2pSIJM+cFOUp68Mj9kC/76HpGONfMi6OjLU/k7F+PbrUVKyqVsV1yBBcBw7A0ssLWZb5buc1Zuy6Rp8Gvnw7tLFB12CXhSzL/GfTRRYfjGJKh1De6FXb5BO9tII0NoZvZN21dURnReNk7US/av0YWGMgNdxqqB1epVKgLWBH9A7WXF7D2ZSz2FrY0iukF0NrDaWeZz21w7u/63/C6pFg76EkUz4mFGtBFizqDWkRMG6z8rCkssTMfJ6YeQAZ+Gl0M5qYUNEmWZZ565fzrDoawyf9GzCiZaDaIQmC8V3doTzrBLaGketMq43B5S2wbiI4esOo9eCp/s/l68k5DJ17CCsLDT8/3Rp/N9OZZTwRncaExcexttSwZHzYPasT6zIzyVi3jvQVKylOSEDj7IxL3z64DBiIbT3zXomlNpHkmZvifGU0PHwn9P0Wmk8ol8vKRUVk//kn6WvWkHfoMFha4tS1C5uqd+DzeFsGN/Pns4ENsTCxQieyLPPebxdYdjiaaZ2q8WqPWiZ5w7iSdoUlF5bwe9TvaPVamno3ZVDNQXQP6o6tpQn9gKukLqVeYs2VNWyN3Eq+Np96HvUYWmsovUJ6mdb/n+SrML8ruAbCqA2lawhc3rJvwILuyqDVxB1KpTyV5BZqGfzjIWLS8lg/tQ21qhi/wMrD0ur0TF56nL3XUpg/pjmda3urHZIgGE/MYVj6JHjVhLGby6dI1MOKO66srJI08NRf4GL8llT3DSU9j8E/HqJYp2ftlNaEmmCvzWs3sxmz8Cg5BVrmj21Oy1BlRq4wIpL05cvI+OVX5Px87Fu0wG34MBy7dkVjUwH2xJsAkeSZo+ICWDsGrm2H3l9B2ORyvXxRVBTpa9eSuOpnbPJzSAmqRcNXnsG5a5cyV+Y0Br1e5p3fzrPySAzPdanOS4/VUjskQElADyUeYsmFJRxMOIidpR0DagxgcM3BVHNV78FXuL/somw2Xd/E2itruZ55HXdbd0bWGcnQWkPV3xuZnw7zukJhFkzeDa4B6sbzICnhsPAxpR/oxD9USUb1epkpy0+w69JNFoxtYdLJU26hliFzDxGZksvaKa2p7yf24QoV0M0LsKgXOHjB+G0mtRzyX5Iuwfxu4FkTxv+uymxjUlYBg+ceIj23iNVPtTZoD09DS8jIZ/SCIyRnFfBra2usfllLzp49SFZWOPfti/uY0djWqaN2mBWOSPLMlbYQfh4PV7ZAn6+VPlTlaN7eCL7aeIYPbSJpdngrxfHxWIeE4DFxAs79+qGxLt+KdCXR62Xe3HCONcdjebFbTZ7vpt4Si2J9MdujtrPkwhIup13G086TkXVGMrjmYPUTBaFUbu+ZXHR+Efvi92Fvac/gmoMZXXc0Pg4qzJ7ptLBiIEQdUJZBBrYq/xgeVtxxWPK40jR9/FawKd9ZtE9/v8TcPRG8/3hdxrcNKddrP4qbWQUMmH2QIp2eX6a1MaklWYJQZulRsKCHMjs2cbuyGsHUXdoMa0ZCoxFKrYRyXCWUnlvE0J8OEZeez/JJLU2+N7BcXEzkqvWEz5pLQOYNNO7uuI8YgduwoaI6phGJJM+caYtg7Whl6eb4bRDQolwueywqjWE/HaZ7HR/mjGoKOh1Z27eTumABhRcvYenlhfvYMbgOHYqFk+ksf9LrZV5bf5Z1J+JUebDLK85j3dV1LLu0jBu5Nwh1CWVcvXH0Ce2DtYVpJcVC6V1Ju8LC8wvZFrUNjaShX7V+jKs3jhCXcvz79fsbcGQO9JsJTUeX33XL6uoOWDUMQtrDiJ/Bsnz+Haw9Fstr688yqlUg/33i4VvFqOXqzWwGzjlIFWdb1k1tg4td+baoEQSjyEmCBY8pqxEmbANvM5rR2f0p7PkMen1RbhWMswuKGTn/CJdvZLN4fAuTbrMiFxWR8dtvpM79ieK4OIqDq/GDe3Ocevfm65EtzObea65Ekmfu8jNgbnuQgaf3Gr3ZcEpOIX2+34etlQWbnm2Hs+3/HzJkWSb34EHSFiwg9+AhNI6OuI8fh/vYsVg4msY6cZ1e5unlJ/jrShLrp7Ypl0bthbpC1l5Zy/xz80krSKOZTzPG1xtPe//2aCTTW94qPJrY7FiWXFjCr+G/UqQroltQN55u9DQ13Woa98Inl8LGZ6HlVOj1mXGvZQynVsBv06DBYOj/Exh5yfeh66mMXnCE1tU8WDiuBVYqtUl4VAfDUxi76CjNg9xZMiHMZApdCcIjKciExX0g9TqM2Vhug9UGo9crdRKuboMxv0JIB6NeTqvTM3rBUY5FpfHTmGZ0qW2C+665ldxt+IXUn36iOCEB2/r18Zw+DcdOnZj5Zzhf/3GVDx6vyzgzWEVhzkSSVxHEnVD2t9ToAcNWGG3JgE4vM3bhUY5GpfHLtDbUq3r/pYX5Fy6QMmcOOTt3YeHqisfkSbiNGIHGTr2+Lbdl5BXRe8Y+rC01bH6uvdH6+RXritlwbQM/nfuJpLwkwqqEMb3xdJr6qF9RUDCe1PxUVlxawerLq8kpzqFXSC+mN55OoLMRlh9FH1KWPAa3U6rQlWejc0Pa9zXs+hBaPwM9PjbaZSJTcuk/+wAeDtZsmNbWbGfCNpyM46W1ZxjQxI+vhzQSo+GCedLrlWXmkXuVlgQ1TKetykMpyFL25+UmK4VY3IKMdqkfdl3j6z+u8uWghgxubnr7rvVFRWSuX0/KT/PQJiZi26ghXtOn49C+/Z37lF4v89Sy4/x1JZlVT7WiRbC7ylFXXCLJqygOzoQdbytNj1tNNcolvvnjKt/vusbnAxswtEXpHljzz50necYMcvfvx8LLE88pT+M6ZLDqe/aORqYx7KdDPNHYj2+HNjbouYv1xWy6vom5Z+aSkJtAE+8mPNP4GcJ8wwx6HcG0ZRZmsuj8IlZcWkGxvpj+NfozpeEUqjhUMcwFMmLgp85g6wKTdxl9Ft+oZBl+fw2O/qT0xKr3pMEvkZlXTP/ZB0jPK+LX6W0J8nAw+DXK0+2HPVMqJiUID+V2s/M+30CLiWpHUzYp4TCvC7gFwoQdRmmWfiomnUE/HqJvQ19mDGti8POXhazVkrFhAymz56C9cQO7xo3xnD4dh3Zt7zkIlVVQzBMzD5BTqGXzs+3wMYG+fhWRSPIqCllWmh+H71TKkhu4/9Teq8mMXXSUAU38+Wpww4ceOc47fpzk72aQd/w4llV98Zo+HZcnnkCyVG/m4budV/lu5zW+HtyIgQZofqyX9WyN3Mrs07OJzY6lvkd9nmnyDG2qthEj7ZVYcl4y887N4+erP6NBw7Daw5jYYCLutmUYvSzKVYoUZETDpF1KuXFzpytW9uWkR8G0wwatuFms0zNu0VGORqaxYlIrwkLMf+RYlmVeW3eWn0/EsXJSS9pUN919OYLwL0mX4aeOENJR6edZEX5GXvsDVgyG+gNg4AKD/p5yCrX0+X4fWp3M1ufbm8wqBFmWyfnrL5K+/pqi8OvYNWqE53PP4tCm5OeeKzeyeXLWAepWdWbV5FZi6bkRiCSvIslLgx/bK0u2puxVRvgNICEjnz7f78PH2ZZfprXFztrikc4jyzK5Bw6SPGMGBefOYR0Sgs8br+PYsaNB4nxYOr3M8HmHOR+fyeZn25Wpv8yppFN8cfQLzqeep5ZbLaY3nk6ngE4iuRPuiM+JZ87pOWyK2ISthS1j641lXL1x2Fs95IivLCstVC5vhhFroUZ34wSshuSryh7j0E4wfLXBHpJur0Iw1ICOqcgv0tH7+30UafVsf7GD0ZaeC4JBaYtgQTfIjIOph0yzn+ej2vcN7PoPdP8Q2j5vsNO+tu4M607Esfqp1iYzSJV/7jxJX35J3tGjWAcF4fXySzh17/5Qzz2bziTw7KpTjG0dxH+eqG/EaCunByV5IqU2N/buMGghZMQqhRgMkKQX6/Q8s/IkRVo9s0Y2feQED0CSJBzbtSV47Rr8Z/4Aej2xU54mZvJTFF6/XuZYH5aFRmLGsMZYW2p4bvUpCrW6hz5HfE48r+x5hTG/jyEpL4mP233M2sfX0jmws0jwhL/xc/Tjo3Yf8Uu/X2jr15Y5Z+bQ79d+bInYwkMNqJ1YDJc2Qrf/VKwED5QZya7vK0UMTi03yCkvJmQxe3c4A5r4VagED8DO2oKvBjckITOfT7ZeUjscQSidPZ9D4hl4fEbFSvAA2r0I9frDzg/g+p8GOeXWc4msPR7HtE7VTSLBK4qLJ/7lV4gaPJjCa9fwefcdQjdvwvmxxx76uefxRlWZ1C6EJYei2XAyzkgRC/ciZvLM1f7vYOf7BmmU/t/NF1mwP5KZI5rQt2FVw8R3i1xURNrKlaTMmo0+Lw+34cPxemY6Fq6uBr1OSXZcuMFTy04wsV0I7/atW6rP5BTlMP/cfJZdXIZG0jC+/vhHm5URKq2TN0/y2dHPuJR2icZejXkj7A3qedZ78IeyEmBWS/BtBGM3VYwlTv+k18PSfpBwGqYeKFMRg2KdnidnHeBmVgF/vNgRN4eK2arkk62X+GlvBEsnhNGhpgk3kBaEmCOwqOet3nKz1I7GOIpylf15hdkw/UiZeoAmZubT87t9BHvYs25qG1WrAeuys0mZ8yPpy5aBRoP7uHF4TJ5U5urpWp2ekfOPcDo2g1+nt6WOr+k2dTc3YiavImrzHFTvDtvfUkbLHtG284ks2B/JuDbBBk/wACRrazzGjaPa9m24DhlM+sqVhPfoSdqy5cjFxQa/3v08Vq8KY1sHsWB/JLsvJz3wWJ1ex7qr6+jzSx8WnF9Aj+AebOq/iWmNp4kET3goTX2asqrPKj5s8yEx2TEM3zKcdw+8S0p+yr0/IMuw5RXQFSkj4BUxwQOlhcITtx7+fp2mJH2P6Ke9EVxIyOK/T9SvsAkewEvda1LNy4E31p8lq6D87p2C8FAKc+CXp8DFH3p+qnY0xmPtoPQszUqAPz965NPo9TIvrTlDsU7Pd8OaqJbgybJM5qZNXO/dm7RFi3Du25dq27fh/eILBmmPZWmhYeaIpjjZWvL6+rPo9OY3wWSORJJnrjQa6D8X7D3h53FKed+HlJ5bxJsbztHI34W3ehu3Mamluzu+779PyK+/YFevLjc//piIJ/uTe+iQUa97tzd716F2FSde+fkMSVkF9zzmfMp5hm8Zzn8O/Ycg5yBW9VnFJ+0/MVy1RKHSsdBY0L9Gf7b038K4euPYHLGZvr/0ZeH5hRTpiv5+8MXf4MoW6PQmeFRTJ+Dy4hakPARG74cjPz7SKcKTspmx8xq9G1ShVwNfAwdoWmytLPhqcCNuZBXwyRaxbFMwUdvfgvRo5fnEtoLP1gS0UFZSHZkLcY+2umzevggORaTy/uN1CfFUpxpwwdWrxIweQ8Krr2HlU4XgtWuo+uknWFUx7HOPl5MN7/aty9m4TJYfjjbouYV7E0meOXPwgEELlEp1jzCS9MX2y2QVaPl8UMNyq3hkW7MmAQsW4D97NrK2mJjxE4h/7TW0qanGv7aVBTNHNCGvSMeLa0+jv2skKbsom48Pf8yILSNIyU/hyw5fsqTnEup7ik3CgmE4WjvyUvOX+PWJX2nh04JvT3zLwI0DOXbjmHJAXhpsfVVZptn6GXWDLS9NRkHNnkoRg+SrD/VRnV6pPGlvY8F/+lWOf6dNAt2Y0rEaq4/F8teVB69IEIRyd+V3OLlEKUYS1EbtaMpHl3fByRc2PqdUD34I5+Mz+WrHFXrWq8IQFfrh6XJyufn5F0T2H0DhtWtU+c9/CF6zGrsGDYx2zX6NqtK+hidfbr/Cjcx7D7YLhiOSPHMX1AaaT4Rj8yDxbKk/djImnVVHY5nQNpjaVcp3tE2SJJy6dCZ040Y8p00j6/dtXO/dh/Sff0Yuw7Kt0qju7cQH/epyIDyVVcdikGWZbZHb6PdrP9ZeXcvw2sPZ+ORGeob0FEVVBKMIcg7ih64/MKfbHIr1xUzYPoH3DrxH5rY3IC9VWQJkrg3PH5YkwePfg5W9ssTrIR6SFh+M4mRMBh88Xg8vJxsjBmlaXuhWg5o+jryx/hyZ+WLZpmAicpKVYnA+DaDzW2pHU35snaHP15B0AQ7+UOqP5RfpeH71KdwdrPl0QINyfd6QZZnMLVuI6N2btMWLcR0wgNBtv+M2dAiSxaMX3isNSZL46Mn6FOv0fLj5glGvJYgkr2Lo8jbYucPWV0q1t0Wr0/P2L+ep4mzLC93U672lsbHB67lnCf31F2xr1ODGu+8RPXoMheHhRr3ukOYBtAxx58tdB5i4/Sle3fsq3vberOy9kjdbvomjddnXnwtCSdr5teOXJ35hQv0JbAz/jX4Z+9nc5EnkKsYbRTVJTj7Q9xtIOKWUJi+F6NRcvtx+mS61vXmiseH3EpsyG0tl2WZyTiH/3XxR7XAEQdlLvOl5KMiEAT+BZeUZdAGgdm+o00+pKJpauiriX+24wvXkXL4e3Lhc9xIXxcYSM2ECCS+/gqWXF8GrV+H73w+xdHMrtxiCPBx4rmsNtp67wa5LN8vtupWRQZI8SZJ6SpJ0RZKkcEmS3rjH+99KknT61tdVSZIy7npPd9d7Gw0RT6Vj5wbd/wOxR+Ds6hIPX3oomkuJWbz/eF0cTKDnkk21agQuW4rvxx9TFB5ORP8BJH37HfoC40zla/VaGtY/htb3S07dPMObYW+ysvfKkqseCoKB2Vna8WKDp1iTpcdPtuTN9GM8vfNpYrNi1Q6tfNXrDw0Gw94vlGTvAfR6mdfXn8VKo+Hj/vUr5Yx7Q39XpnWqxroTceIhSVDf2TXKXuKu74NP6apXVzi9vwQLG9j8Qomtra7dzGbxwSiGhwXSroZnuYQn63SkLVlCRL8nKDh7Dp/33iV47RrsGjUql+v/0+T2odTwduS93y6QV6RVJYbKoMxJniRJFsAsoBdQFxguSdLf/pXLsvyiLMuNZVluDPwAbLjr7fzb78my3K+s8VRajUaAfxjseBfyM+572M2sAr754yoda3rRs77pFBORJAnXgQMI/X0rLn36kDp3LhH9niD36FGDXudi6kWGbhnK6vB5BNg0Jyv8RRq59MFCY9wlCoJwX7s/oVZqDMu6zOTNsDc5k3yG/hv7M//cfIr1lWg5Xu8vwcELfnsG9PfvZ7nyaAyHI9J4u08dfF3syjFA0/JslxrUruLEmxvOkZFXVPIHBMEYCnPgj/fArxm0mqZ2NOpxqgLdP4DIvXB65X0Pk2WZDzdfxN7aglceK5+VVIXXrxM9chQ3P/0M+7AWhG7ehPuIEUZfmvkg1pYaPu7fgPiMfGbsvKZaHBWdIWbywoBwWZYjZFkuAlYDTzzg+OHAKgNcV7ibRgN9voL8NNj98X0P++/mixTp9Hz4RD2THAG3dHen6mefErh4MQAxY8Zy4+NP0Ofnl+m8xbpiZp2excgtI0kvSOeHLj+w+snZuFh78sHGCw/XqFoQDCX+BByeDc3GYRHSgRF1RvDbE7/Rzq8dM07OYNTWUYSnG3f5ssmwc1Oqbd48D6eW3fOQ+Ix8Pt16ibbVPRjaovwLFZgSa0sNXw1uRFpuER+LapuCWvZ/Czk3oefnynNIZdZ0HAS2hh1vK3sU72HnpST2XUvhxW418XA07rJWubiYlB/nEvlkf4oiI6n6xecE/PgjVr6mUYk4LMSdYS0CmL8/kosJD18hXiiZIf5F+gF3ry2Ku/Xav0iSFASEAH/e9bKtJEnHJUk6LEnSkwaIp/LybQQtJsGx+fcswrLvWjKbzyYyvVN1gjzUKdVbWg6tWhL66y+4jRpF+rJlRDz5JHknTz7SuS6nXWb4luH8eOZHeoX04tcnfqVTQCdc7K14rUctjkWl89vpBAP/DgShBLpipSKbow90//DOyz4OPnzX+Tu+6fQNiTmJDNk8hEXnF6F7wOxWhVH3SQhopVQL/kdbGFmWeWvDOfQyfDagoUkOUpW3+n4uTGwXwrqTcVxIyFQ7HKGyyYhRio00GKy0E6jsNBqlv2lRLmx/819vF2p1fLTlItW8HBjdOsiooRRcvEjkkKEkf/cdjl27ErplMy79+pncffONXrVxtbPirV/Oid55RlDewy7DgHWyLN/9tBJ0q1P7COA7SZLu2RxKkqSnbiWDx5OT7z1CIgCd712EpVCr473fLhDsYc+UjqEqBlh6Gnt7qrzzNoFLloBWpyw3+PyLUu/VK9YVM/v0bIZvHk5qQSrfd/6eT9p/gouNy51jhjQPoJG/C59svUROoVgXLpSjA98ps1Z9vgZbl3+93T2oO7888Qsd/DvwzYlvGLdtHNFZFby3kCRBz08gN1mZIbjLn5eT2HM1mVd61CLA3V6lAE3PtM7VcbWz4uMtl8SKBKF8/fE+SBro9oHakZgOr1rQ/mU49zNc2/m3txYdiCI6NY/3Hq9ntKbncnExyd//QOTgIWhTkvH74Xv8v/sWS8/y2fv3sFztrXmnbx1Ox2aw8miM2uFUOIb4WxYP3L1uxv/Wa/cyjH8s1ZRlOf7W9wjgL6DJvT4oy/JPsiw3l2W5uZeXV1ljrrjsXJVZgdgjcOb/f9Rz90QQmZLLh0/Ux9bKvPafObQMI+S333AdOoS0RYuI7D+A/DNnHviZK2lXGL5lOHPOzKFHSA9+feJXOgd2/tdxGo3EB/3qkZRdyA+7xLpwoZxkJcDer5WKbLX73PcwDzsPvu30LZ+2/5TrmdcZtHEQKy6tQC8bt9WIqvyaQcOhcGiW0lQZpSLwZ79fJsTTgTFGHgE3Ny52VjzftQYHr6eyW/TOE8pLzGG4sAHaPgcu/mpHY1ravQieNWHLi8qsHpCUVcAPu67RrY43HWsa5xm2MDKSqBEjSZk9G5e+fai2eTPO3bsb5VqG9GRjP9pW9+CL3y+TlCV65xmSIZK8Y0ANSZJCJEmyRknk/lUlU5Kk2oAbcOiu19wkSbK59WtPoC0gakKXVaPhENBS2Qydn050ai4zd4fTp6EvHYx0czE2C0cHfD/4gIAF89EXFBA1fARJX3+DXPT3ggN6Wc/i84sZtmUYKfkpzOg8g8/af/a32bt/ahLoxuBm/iw8EMn15Bxj/1YEAf76FPRaeOy/JR4qSRJ9Q/vyS79faF6lOZ8d/YzJOyYTn3O/sbQKoOt7ygzBrv8AsO5EHNeScnitRy2jjYCbs5GtggjxdOCTrZfR6irwAIBgGvR6+P11cKqqND4X/s7SRlm2mREDh2YD8MX2KxTp9Lzdx/DVR2VZJn31GiIHDKQoJga/776j6uefY+Fy/+ceU6L0zmtAoU7Ph6ItjEGV+aelLMta4BlgO3AJWCvL8gVJkj6UJOnuapnDgNXy39eT1AGOS5J0BtgNfCbLsvg/XFYaDfRWirDIf37MBxsvYKWReNcIN5fy5ti2LaEbf8Ol/5OkzptH1IiRFEVFAXAz9yZP/fEUX5/4mo7+Hfn1iV/pEtilVOd9rWdtbC0tRBEWwfiSr8Cp5cr+WbfgUn/Mx8GH2V1n80HrDzifcp6BGweyOWKz8eJUk4s/tHkWzq+nIOIQ3/xxlaaBriZVEdiUWFloeKNXbcKTclh9rJK13xDK39nVkHhaWaZpbdr7+1UT1AZq94UDMzh3LYJ1J+KY0C6EEE/D/nlpU1KImzqNGx98gH2TJoRu/A3nnj0Meo3yEOLpwPRO1dl8NpGjkWlqh1NhSOb4QNu8eXP5+PHjaodh+ra+inx0Pn0LP2JAn95MbBeidkQGlbV9B4nvvYdcXEzatAG85rCVIn0xr7d4nQE1Bjz0BuOF+yP5cPNF5o5uRo964mFSMJLVIyFiDzx/GhwebZ9EfE48b+57k1NJp+hXrR9vtXwLB6sK9rBVmAM/NOOG5Enr5Df4+em2NA92VzsqkyXLMkN/OkxEcg67X+mEk62V2iEJFdGtf5e4+MHEnaKi5oMkX0Ge3YqNtk/w3+JR7H6lo0H/XWb/+SeJ77yLPicH71dewW3USCQz/v+RX6Sj45e7CXS35+enW5tckRhTJUnSiVu1Tf7FfP82CCXSdXqLDMmJL+yWMLZVoNrhGJxzj8fwXbeSmwEOuH21nOd+07G64wIG1hz4SDeH0a2DqOnjyH83X6SguBJUMhTKX8wRuLxZWeL0iAkegJ+jHwt7LOTpRk+zOWIzQzYN4ULKBQMGagJsHMlu+yZVss/zduAlkeCVQJIk3ulTh5ScIn7cc13tcISK6sB3kHMDen4mErySeNUiOuBJeuZt4oOOzgZL8PR5eSS++x5x06Zj6eNDyPp1uI8ZbdYJHoCdtQXPda3B8eh0sb/YQMz7b4TwQL9dzuWToqHU01/B8tpWtcMxuEuplxh5/HmeezKdq4Ob0+BcDvoxL5B38tQjnc/KQsMH/eoRl57P3D0RBo5WqPRkGXa+r7RMaF32psGWGkumN57Owh4LKdIXMWrrKBadX1ShirJ8dbMp5/XBjM1bBMVl65VZGTT0d+XJxlWZvy+ShAzx5yUY2O2WCfUHQUCY2tGYvNxCLc8m9kCSJPqkLDLIOQuvXSNyyBAy1q3DY/IkQtasxqZGDYOc2xQMbRFAkIc9X26/il60VCgzkeRVUMU6Pd/tvMZl7z7IHjVg9yd/a6lgzmRZZumFpYzYOoK84jx+6jmfJ/67jOAVy0GjIXrUKJJnzULWPnxLhDbVPOnTwJc5e8JJzi40QvRCpXXld4g5BJ3eMOg+lmY+zVj3+Do6B3bmmxPf8PQfT5OSn2Kw86slIjmHFUfjOFLjJaxyEpRqm0KJXulRCxn4avsVtUMRKpqdHwASdP+P2pGYhdl/hXMu24m0euOQzq6GpEuPfC5ZlslYt47IwUPQZWQSuGA+3i+/jGRtbcCI1WdloeGl7jW5lJjFprOif3FZiSSvglp7PJaYtDxe6lEXqdMbkHRRKXds5rKKsnhh9wt8efxL2vu1Z32/9bT0bQmAXePGhPz6C859+pDyw0xixk+gOOnhp/xffqwmRVo9c8WSJ8FQdFqlUqRHdWgy2uCnd7Fx4euOX/Ne6/c4lXSKgRsHsj9+v8GvU56+3H4Fa0sN/Z4cphQw2P8tZN9UOyyT5+9mz8R2IWw4Fc/5eNEgXTCQmCNwfr1omVBKsWl5zNsXSf8mflTp8xZYO8KuDx/pXLqcXBJee53Ed97FrkljQn/ZgEObNgaO2HQ83rAqtas48c0fVykW1YLLRCR5FVBBsY4fdoXTLMiNTrW8oN4A8K4Lf32mPGyaqQupFxiyaQh74/byWovXmNF5Bq62rn87xsLREb8vv8D300/JP3eOyAEDyT1y9KGuE+rlSP8m/iw7HC16tgiGcWYVJF9WWgNYGKcghiRJDK45mNV9V+Np58nUnVP54dQP6PTmt7/0RHQ6v5+/wZQO1fByslF6f2oLYfdHaodmFqZ2qoa7gzUfbbkoqgULZafXw7Y3wMlXtEwopZl/hgPwWs9aYO+u/Lld2ar0F3wIBZcvEzVoEFlbtuD53LMEzp+PZQXvFa3RSLzaoxbRqXmsPS6qBZeFSPIqoOWHo7mRVcArj9VSCpBoNND5LUi9BufWqh3eQ5NlmTWX1zB662i0ei2Lei5idN3RDyyu4tr/SYLXrsHCyYmY8eNJmfsT8kMsV32ua3W0epnZf4nZPKGMivOV5dJ+zZTm50ZWzbUaK3qvoH/1/vx09iem7JxCan6q0a9rKLIs8+nWS3g52TCp/a2KwB7VIOwpOLkMbpxTN0Az4GxrxYvdanA4Io1dl0QBA6GMLm+ChJPKIJVomVCimNQ81p+MY0RYIL4udsqLraYq+7F3fqDszy6B0vtuNVFDhqLPyyNw8SK8pk1DsrAwbvAmokttb5oFuTFj5zXyi8xvoNJUiCSvgskt1DLnr+u0q+5J62oe/3+jdl/wbXRrNq9YvQAfUm5xLq/ve52PjnxES9+W/Pz4zzT2blyqz9rWrEnwzz/j3LMHyd9+S+zUqegyMkr12SAPBwY19Wfl0RgSM0UBA6EMjsyF7ARlNqqcSkLbWtryYdsP+bDNh5xOOs2QzUM4nXS6XK5dVjsu3uR4dDovdquJg43l/9/o+CrYuigJs1CiYWGBhHo58Mnvl8SSJ+HR6fWw5wtlqXnDoWpHYxZm7Q5Ho5F4umO1/79o7QAdX1f2ZV/d/sDP63NzSXj5ZW588B/sw8II+fUXHMIqV6EbSZJ4rUctkrILWXIoSu1wzJZI8iqYRQciSc0t4pUetf7+hiRB53cgI1ppxGwGrqZfZdjmYWyP2s7zTZ9nVtdZuNm6PdQ5LBwdqPr11/i8+w65Bw8ROWAg+WfPluqzz3Spjl4vM3u3mM0THlFeGuz/Bmo8BsHtyv3y/Wv0Z3nv5dhY2DB+23iWXlhq0sv3inV6Pv/9MtW8HBjS/B/7fuzcoPV0ZclT4hl1AjQjVhYa3upVh4jkXNadiFM7HMFcXdkKN89Dh1dBUzlmkcri7lm8Ki62f3+z6RhwD1X2Z99nGX1hZCSRQ4eStW07Xi++SMBPc7F0r5ztY1qGetCxphdz/rpOZr75TE6YEpHkVSCZecXM3RtBtzo+NA5w/fcBNbqDfwvY+5Wyv8WEbY7YzMgtI8kpzmH+Y/OZ1GASGunR/rpKkoT7yJEEr1wBQNTIUaQtX1Hiw26Auz1DWgSw+lgM8aIcufAo9n8LBVnQ9X3VQqjtXps1fdfQMaAjXx7/kpf3vExOUY5q8TzImmOxRKTk8kavOlha3OPfe9hTYOMMe78s/+DMUNc63jQKcGX2X+FiNk94eLIMez5XEpP6g9SOxizM3H0NjUZiaqdq/37Twgq6vKMUwjv387/ezt61i6jBQ9ClphG4YD6eU54y+953ZfVqj1pk5hczb69oa/UoKvffngrmp33XySnU8vJjNe99gCRB57chKw5OLCnf4EpJq9fy+dHPeXPfm9TzrMfPj/9MiyotDHJuuwYNCNmwHsc2bbj50UckvvEG+oIHF1aZ3rk6EtKdTdSCUGoZscpSzUbDoUp9VUNxsnbi207f8krzV/gz5k+GbRnGtfRrqsb0T4VaHTP/DKdFsBvd6njf+yA7V2j5NFzaBDcvlmt85kiSJJ7tXJ3YtHw2nhblyIWHdHUb3DgL7V8BC8uSj6/klFm8eEaEBeLjbHvvg+r2V7bO/PnxncF2WacjacYM4qY/g3VwMCHr1+HQunU5Rm666vu50LehLwsPRIq2Vo9AJHkVREpOIYsORNG3YVXq+Drf/8DQThDUDvZ9BUV55RZfaaQVpPHUH0+x/NJyRtYZybzH5uFp52nQa1i4uuI/Zzaezz1L5m8biR45iuKE+z/8+LnaMSwsgJ+PxxKbZlp/XoKJ2/slIEPnN9WOBFAe+MfWG8uCHgvILc5l5NaR7IrepXZYd2w4Gc+NrAKe7VLjgUWVaDVVKUcuZvNKpWsdb+r4OjPrr3B0ormwUFqyrOzhdwuGhkPUjsYszNx9DYv7zeLdptFAtw8gMwaOL0SXkUHslKdJnfMjLoMGErRiOVZVq5ZbzObg5cdqUajVM2u3GGx/WCLJqyBm775OoVbPi91qPPhASYIub0POTTi+oHyCK4WLqRcZtnkYZ5LO8HG7j3kj7A2sNEYqNa/R4DVtGv6zZ1MUHU3koMHkHr1/m4Vpnaqj0Uj88KdpzXwIJiwrAU6vVHriuQaqHc3fNPNpxpq+a6jhWoMX/nqBWadnoZfVXcqn1emZ89d1Gvq70L5GCQM79u7Kss0Lv0CyaPhdEkmSeLZLdSKSc9l6LlHtcARzcW0HJJ6G9i8bre1LRVKqWbzbqnWBkI4U/PI1kQMHkXfkCFU+/A9VP/oIjY1N+QRsRkI8lT3aK45Ei8H2hySSvAogISOf5UeiGdjUj1Avx5I/ENRGucns/xYKs40fYAk2Xd/EmN/HICOztPdS+lUzfpl5AKcunZU2Cy4uxEyYeN99elVcbBkRFsj6k/FEpeSWS2yCmTs4E2S90jjYBHnbe7Ow50KerP4kP575ked3P6/qPr3NZxOJSctTlkeXpgJp6+lgZQf7vjZ+cBVAz3pVqO7tyMw/w9GL2TyhJLf34rkGKsvNhRKVahbvLpn6TkRttkTOyyRo+TLchojZ0gd5rquywmPGLjHY/jBEklcB/PDnNWRZ5rmuJczi3a3zO5CXquwZUsnt/Xdv7X+LBp4NWN1nNfU86pVrDDahoQSvXYNju3bKPr2330Ff+O9139M6VcNSI/G9mM0TSpKXBicWQYNBylInE2VjYcOHbT7kzbA32Re3j5FbRxKVGVXucej1MrP/CqemjyPd6/iU7kMOntBiolK8IFVUvy2JRiMxvXM1rtzMZuelm2qHI5i68F0Qf0LM4pXSw8ziyTodSV9/TcLn87CrakvI43nY1a9bTpGaL18XO0a2DOSXU/HEpYvZvNISSZ6Zi03LY+1xpVyvv5t96T/o3wxq9oKD30N+htHiu5+Mggym/DGF5ZeWM6rOKH567Cc87DxK/qARWDg54T97Fp7TppG5YQPRo8dQfPPvD0LezraMbhXEr6fiuZ5smpUJBRNx5EcozoN2L6odSYkkSWJEnRHMe2we6QXpjNgygn1x+8o1hj8u3eTqzRymd1aWRZdam+fAwlrM5pXS4w2rEuRhzw9/hpt0Gw1BZbIMez4DlwBoNELtaMxCaWfxdDk5xE1/htR583EdNpTAGZ9gWRQH59aVU6TmbXL7UCRg/r5ItUMxGyLJM3Pz90WgkWBqp+oP/+HOb0FBJhyebfjAHiAiM4IRW0dwOuk0H7f7mNfDXjfa/rvSkjQavJ57Fv+ZP1AUHk7koEH/6qc3pWM1bCwt+F4sFxDupzBbSfJq9wXvOmpHU2otqrRgdd/V+Dn5MX3XdOafm18uiYAsy8zaHU6guz19Gvg+3IcdvaHZeDizGtKjjBJfRWJpoWFap2qci89kz9VktcMRTFXEbog7pgxSWVqrHY3JK+0sXlFsLNHDh5Ozbx8+772L7wcfINXpBT71la0zetHipCRVXe14sokfq4/FkJZbpHY4ZkEkeWYsLbeINcdjebKx37+bbpaGb0PlYfTIj1BYPrNTB+MPMmrLKHKLc1nQY0G57b8rLadu3QhesxqNjS3Ro8eQtXXrnfe8nGwY0yaIjWcSuHZT/b2Mggk6vkgZOGn3ktqRPLSqjlVZ2mspPYN7MuPkDN7e/zZFOuP+IN13LYWzcZlM7VTt3n3xStL2edBYwr5vDB9cBdS/iT9+rnZiNk+4N1mGvz4HZz9oMkrtaMzCzN3XsNRITHvALF7ukaNEDR5CcVIygfPn4T7i1gypJCnJdMoVpem8UKKnO4ZSUKxn8cEotUMxCyLJM2NLDkZRUKxnSsfQRz9JuxeVh9KTSw0X2H2svLSSabum4evoy6o+q2js3djo13wUNjVqELx2Dbb16hH/0sskz5p154FoSodq2FlZMFOU8hX+qbgADs2EkI7KcmgzZGdpx+cdPmd64+lsitjE5B2TSS9IN9r1Zu4Op4qzLQOa+j3aCZx9oekYpZJpRqxhg6uArC01PN0xlBPR6RyKSFU7HMHURO6B2MO3ZvFElceS3JnFaxmI931m8dLXrCVm4kQs3N0JWbvm3/3v6j6p7N3e/42SZAsPVN3bie51fVh6KIrcQq3a4Zg8keSZqbwiLUsPRdGtjg/VvZ0e/UT+zSGwjbJkU1dsuADvotVr+ejwR3x69FPa+7Vnaa+lVHU07T4wlu7uBC5ehMsTT5Dyw0wSXnkVfUEB7g7WDA8LZPPZROIz8tUOUzAlZ1YqrUnam98s3t0kSeLpRk/zZYcvuZB6gRFbRhCREWHw6xyLSuNoZBpPdQjFxtLi0U/U7gXl+4HvDBFWhTe4eQBeTjbM/FMMVAn/sOcLcPJVWr8IJbo9ize1479n8WStlhv//Ygb77+PQ5vWBK9ZjXVQ0L9PYmGp7C+OPwFR5bsf2lxN7VSNjLxiVh8TA3slEUmemfr5eBzpecU8XZZZvNvaPg+ZsXDh17Kf6x+yirKYunMqa66sYXy98XzX+TscrBwMfh1j0Fhb4/vZp3i99BJZW7YQPXYs2uRkJrQLAWDhfrH5V7hFp4X934FfM2UmrwLoGdKThT0Wkq/NZ9TWURxMOGjQ88/aHX5n0KRMXPyhyUhlNUJWgmGCq8BsrSyY0iGUg9dTORGdpnY4gqmI3AfRB5RZPKtH2P5RySRk5LPhZDzDw/49i6fLySF26jTSV6zAfcIEAubMwcLpAYPxjUeCo49Ydl5KTQPdCAtxZ/6+CIq0Yi/jg4gkzwxpdXrm7YugWZAbzYPdy37CGo+BZy04MMOgywVismIYuWUkx28e58M2H/JS85ew0JRhxF4FkiTh+dRk/L6fQeGVq0QOGYrHzRj6NvRl9dEYMvONM/spmJkLGyAjWik5Xpo+b2aioVdDVvZZSRXHKkzbOY01l9cY5Lzn4zP560oyE9uFYGdtgHtCu5eUvoQHZpT9XJXAiJaBuDtY84OYzRNu2/uFkmg0HaN2JGZh8cEoZGBS+5C/vV6cmEj0iJHkHjxIlf9+iM9rryJZlHCPs7KFVtOUojcJp4wXdAUytVM1EjML2HhGDOw9iEjyzNCWc4nEpefz9D2WCDwSjQbaPAs3zyk3GQM4lXSKkVtHklGYwbzu8+hfo79BzqsW58ceI2j5ctDpiBo+gsmWCeQW6Vh1NEbt0AS16fVKdTSv2kpbkgqmqmNVlvVaRlu/tnx05CM+P/o5Or2uTOectTscJ1tLRre+x/KlR+EWBI2GwYnFkJNkmHNWYPbWlkxsF8JfV5I5F5epdjiC2hLPQOReaD0drOzUjsbkZRcUs+pIDL3qV/lb66r8CxeIGjKU4oQEAn6ai9vgwaU/afMJYOMiZvNKqVNNL2pXceLHPdfR68VexvsxSJInSVJPSZKuSJIULknSG/d4f5wkScmSJJ2+9TXprvfGSpJ07dbXWEPEU5HJsszcPRFU83Kga21vw5244RBwrAIHvi/zqbZHbWfS9km42LiwovcKmldpboAA1WdXvx7BP6/FJjgYi/de49mcMyw6ECmWC1R2V7dB0kVlNklTMcfNHKwc+L7z94yuO5rll5bz3O7nyCt+tIa04UnZbLtwg7Gtg3G2NWDrlHYvgbYQjs033DkrsDGtg3C2teSHP0VLmErv0CywdoSm4hGsNNYciyW7UMvk9v/fLpP9526iR48BK0uCV63EsW3bhzuprTOETYJLmyBF/JssiSQpfQnDk3LYeelmyR+opMr8RCJJkgUwC+gF1AWGS5JU9x6HrpFlufGtr/m3PusOvA+0BMKA9yVJcitrTBXZvmspXEzMYkqHag/XOLgkljbQ6mllJi/xzCOdQpZlFp9fzCt7XqGeZz2W9VpGoHMZ99uYGCsfH4KWLcWxfXt671xGn0Pr2XgqTu2wBLXIstKM2zUQ6g9UOxqjstBY8FqL13i31bvsj9/P+O3jSclPeejzzP7rOraWFnf2thqMRzWo1UtJ8opFUaSSONlaMa5tCDsu3iQ8SbSEqbSyEuD8eqXYip2r2tGYPK1Oz6IDUYSFuNMowBWAtGXLiXvmGWxCQwlZswabGjUe7eQtpyrPYqKIVKn0aeBLgLsdc/ZcFy1h7sMQw85hQLgsyxGyLBcBq4EnSvnZHsAfsiynybKcDvwB9DRATBXW3L3X8XG24YkmRqhO2Wy8Mpp38IeH/qhWr+XjIx/z9YmveSzoMeY9Ng8324qZr2scHPCfNRPXoUMYfO0vCj94B11hodphCWqI2gfxx5XiRRaWakdTLobUGsIPXX4gMjOSUVtHEZFZ+sqbsWl5/HY64c6eMINrNQ3yUuGsYfYOVnRjWgdhbalh0YEotUMR1HJkrrKftdXTakdiFraev0F8Rj6T24ci63Tc+PgTbn78MY6dOxO0dAmWXl6PfnJHL2VP5Jk1kBlvuKArKEsLDU+1D+VUTAZHI0URqXsxRJLnB9xdxzTu1mv/NFCSpLOSJK2TJCngIT8rAOfiMjkQnsqEtiFlKzl+P3au0GwcnN8AGaXfa5ZXnMcLu1+4U0Hzy45fYmNRsXvsSJaWVPngA24Om0jT68c4P2IsuowMtcMSytu+r8HBGxpXrsbBHfw7sKjHIvK1+YzeOpqTN0+W6nMLD0SikfjbMieDCm4HVRrCodmi51QpeDra8GTjqqw/GUd6rnEb3wsmqDAHTiyCOo8rvdqEB5Jlmfn7Igj1dKBzkBNxzz5H+rJluI8di//3M9DY25d8kpK0fkZJug/NLPu5KoHBzQPwcLBmzp7raodiksprA8kmIFiW5YYos3VLHvYEkiQ9JUnScUmSjicnJxs8QHPw497rONlYMrylEZdAtpqqVAc8NLtUh6fkpzB++3j2xe/j7ZZv81Lzl9BIFXNf0j9JkkSbd15iTvuxaC5fIGrESIrixNLNSiPhFET8datYQeUrOV7Psx7Ley/H3dadyTsmsy1q2wOPzy4o5ufjcfRtWJUqLkb685Ik5f9HyhUI32Wca1QwE9qFUFCsZ6UoIlX5nF4JBZlKYiGU6GhkGmfjMpncyJ24CRPI2b0bn3fewefNN0quoFlabkHQYLBSRCpPzE6VxNbKgvFtg/nrSjKXErPUDsfkGOJpPB4IuOu//W+9docsy6myLN9ezzYfaFbaz951jp9kWW4uy3Jzr7JMh5up6NRcfj+XyMhWQYYtVvBPLv5Qf5DSc6qEG0xERgQjt4wkMjOS7zt/z7Daw4wXl4myttRQZ+Rg3mo9mcKkZKKGDSf/3Hm1wxLKw+E5yvLm5uPVjkQ1AU4BLOu1jHqe9Xh1z6ssubDkvnsj1h6PI6dQy4S2Bt6L90/1BihFpMRIeKnUruJMu+qeLD0UJYpIVSZ6HRyeBf4tICBM7WjMwrx9kdTUZ9H8q9cpuHwZv+9n4D5qpOEv1O4FKM5TltIKJRrdKhgHawt+FLN5/2KIJO8YUEOSpBBJkqyBYcDGuw+QJMn3rv/sB1y69evtwGOSJLndKrjy2K3XhH+Yvy8SS42GCW2DjX+xNs9CcS4cX3DfQ04nnWbMtjEU6gpZ1GMRHQMqRgPoRzGiZSARVWuydux7aKytiR4zhpw9e9QOSzCm7BvKsubGI8HWRe1oVOVq68q8x+bRPag7Xx3/is+OfvavFgs6vczig5G0CHajgb+R/7wsraHlU0oRqZsXjXutCmJiuxBuZhWy9Vyi2qEI5eXKVkiPErN4pRSRnEPk4ZN8/tcP6DPSCVy0EOfu3Y1zMe86UKOH8gymFfv9S+Jib8XIVkFsOpNATOqjVX2uqMqc5MmyrAWeQUnOLgFrZVm+IEnSh5Ik9bt12HOSJF2QJOkM8Bww7tZn04D/oiSKx4APb70m3CUlp5C1x2MZ0NQPb+dyWBZWpT5U6wpHfoLign+9vSd2D5N3TMbF2oVlvZVR/MrMxc6KYWGBLEvUYDNvMdYhwcROm07Gr7+qHZpgLMcXgl4LLaeoHYlJsLGw4auOXzG67mhWXl7JK3teoVD3/4eTnZduEpuWb/xZvNuajQdLO2WmQihRx5pehHo5sGB/pKhSV1kcmqVUBa7dV+1IzMKWxb/xxb7Z2NvZELxiOfZNmxr3gq2ehtxkZTBRKNHEdiFYaCQWHohUOxSTYpDNU7Isb5VluaYsy9VkWf741mvvybK88dav35RluZ4sy41kWe4sy/Lluz67UJbl6re+Fhkinopm6cEoinR6JncwUrGCe2n7POQmwdnVf3v5l2u/8Pzu5wl1DWVpr6UEOAXc5wSVy+1y8EsuZRO0dCn2YS1IfONNUhcsVDkyweCKC5Qkr2YPpWy/AIBG0vBai9d4tfmr7IzZydSdU8kuUkrzL9wfiZ+rHd3r+pRPMPbu0HgEnF0rmqOXgkYjMaFtCOfiMzkena52OIKxxZ2AmENKyf5KUhW4LOJ/3kCnhZ9Q4OlD6NrV2FSvbvyLhnYGz1pwZI4oIlUKPs629G1YlXUn4sguKFY7HJNROSpkmLGCYh3LDkfTrY4P1bwcy+/CIR3At5HSTkGvR5Zl5p2dx3sH3yOsShgLeyzEw86j/OIxcX6udvRt6MuqozHkWNgQMHcuTr16kvTll9z8/AtkvdjrUmGcX6+MsLYUJcfvZUy9MXzS7hNO3TzFhO0T2B8RwZHINMa2CcLSohx/5LSaBroiOHb/ZefC/w1s6o+rvRUL9omR8Arv0EywcYamo9WOxKTJskzqggVkvfs2FzxC8F64GCufchqokiRlpUjiGYg9Uj7XNHNj2wSTU6hl/QlRAO82keSZuI1nEkjPK2Z8eezFu5skQZvnIDUc3eXNfHr0U74/9T29Q3ozq+ssHKwcyjceMzC5fSi5RTpWHY1BY22N39df4zZyJGmLFpHwxhvIxWJ0yezJsjKy6lUHQjupHY3Jerza4/zQ9Qeis6J5af9k7O3TGdrciFWB78WzOtTsKZqjl5KdtQUjwgLZcfEGsWliX0uFlREDF3+DZmPBxkntaEyWrNeT9NlnJH35FYeDmrJz7JvUCPUt+YOG1GiYsuf78Jzyva6ZahzgSuMAV5YeikavF7OfIJI8kybLMksORlHLx4nWoSrMmtV9kiJnf1479jGrLq9iTN0xfNr+U6wsjFjd04zV93OhbXUPFh2IpEirR9Jo8HnnbbxeeIGsjZuInToNfW6u2mEKZRF9EG6cU0ZYJUntaExaO792fNVuDnnaHOyD5xCff638g2g9HfJSlGWbQonGtA5GI0miOXpFdrtiY5jYT3w/cnExCW+8QdqSpSQ/9iQfNh7GhM61yj8QawelOfqlTZApZqdKY3zbYCJSctl7rXK2WvsnkeSZsBPR6VxIyGJsm2AkFR4oc3QFTPWryg7yeLnWaF5t8Wql6YH3qCa3D+VmViFbziUASi89z6en4PvRf8k9eJDocePRponaQmbryBywc4OGQ9WOxCycvOZEXtTTONvYM2H7BI4klvOyo+D2UKUBHBbN0UujiostfRr6svZ4rNjXUhEVZCntker1B1exn/5e9AUFxD37HFkbN+H53HN8GNSDun6utK6m0vaUFpMBWVmRIJSoV31fvJxsWHwwSu1QTIJ4Yjdhiw5G4WxryZNNqpb7tdML0pm0YxInCpP4JCWTcSk3yj0Gc9Shhhehng4sPRT9t9ddBw3Cf+YPFF69SvSIkRQnJKgUofDI0qPh8hZoOhas7dWOxuQVanUsPxxNp9D6rOq7HF8HX6bunMr2qHLskiNJ0Go6JF+G66I5emlMbBdCTqGWNcdi1Q5FMLRTy6AwS5nhFv5Fl5VFzKRJ5OzZQ5UP3ud8l4GEJ+cyuX2oKgPtgNIcvVZvpTm6WHZeImtLDaNaBvHXlWQiknPUDkd1IskzUTcyC9h2/gZDWwRgb12+1a9u5N5g7LaxhGeE813nGTwe2gfOrIaCzHKNwxxpNBKjWwdxKiaDs3EZf3vPqUsXAhcuQJuaStTIURRGiAIHZuXYPECCsMlqR2IWNp1JJCWniAltQ/Bx8GFxz8XU96zPq3teZe2Vclw+WX/greboop1CaTT0d6VFsBuLD0ahE/taKg6dFg7/CIFtwM/I5f/NkDY5megxY8k/cxa/b77GbdgwFuyPpIqzMrutqlZTIT9dLDsvpREtA7GykP412F4ZiSTPRK04Eo1elhndKrhcrxuVGcWY38eQlJfEnG5z6BTQSWksXJwLp1eWayzmamAzf+ytLe55g7Fv1oygpUuQi4qIHjWK/AsXVIhQeGhFucoyp7r9wMVf7WhMnizLLNwfSU0fR9pWV5Y5udi4MLf7XNr5teO/h//LwvPl1F7E0hrCJsH1P0Vz9FKa2C6EuPR8/rgoVnBUGJc3QWaMmMW7h6K4OKJGjqIoOpqAOXNw7tWL68k57A9PYVSrQKzKsyrwvQS1BZ8Gyn5Ksey8RF5ONvRtWJWfxbJzkeSZokKtUqGxa21vAj3Kb1nY5bTLjN02lgJtAQt7LKRFlRbKG1WbgH8LODoPRCuAEjnbWjGgqR8bzySQllv0r/dt69QhaPkyJFsbYsaOI+/4cRWiFB7KmVXKTHbLqWpHYhaORKZxMTGL8W1D/rbMyc7SjhmdZ9AruBffnviW7058Vz7Nt5tNuNUcfbbxr1UBdK9bhQB3OxbsF6sNKowjP4FbMNTqpXYkJqXgylWih49Al5lJ0KKFOLZrC8CyQ9FYWUgMbVHOVYHv5XY7haQLELVP7WjMwrg2weQW6VhXydspiCTPBG05qyxzGtsmuNyuefLmScZvG4+1hTWLey2mrkfdvx8QNgXSrkPEn+UWkzkb0zqYIq2etcfvva/FJiSE4BUrsPT2JmaisgdAMFF6vTKCWrUJBISpHY1ZWLg/Ejd7K/o38fvXe1YWVnza/lMG1xzMgvML+OjwR+hlIw8eOXgo5cjP/Qx5ovBRSSw0EuPahHAsKv1fy84FM3TzAsQchOYTQWOhdjQmI+/UKaJHjwZJInj5MuwaNwYg91avtd4NlCIeJqHBYLD3+H91VOGBGgW40iTQlSUHoyp1OwWR5JmgJQejqOblQLvqnuVyvb1xe5nyxxQ87TxZ2nMpoS6h/z6o7hPg4K2MBgolqunjRKtQd5Ydir7vvhYrX1+Cli/Dplo1Yqc/Q+bmLeUcpVAq1/+ElKvKLJ5om1CimNQ8/rh0kxEtA7G1uvcDpYXGgndbvcuE+hNYe3Utb+57k2K9kZfVtJgE2gI4vcK416kghjT3x9HGUszmVQTH5oOlLTQZpXYkJiP30CFiJk7Cws2VoJUrsalR4857v56OJ7tQy5jWQSpG+A9WttBsnFL8Kz1K7WjMwrg2wUSl5rGnErdTEEmeiTkVk86ZuMxya5uwLXIbz//5PCEuISzuuRhfx/tsMLa0Vm4w13ZAWoTR46oIxrYOJj4jnz8vJ933GEt3dwKXLMa+cWMSXn2V9NWryzFCoVSOzAFHH6XsuFCiJYeisJCkEvcTS5LEi81e5Pmmz7M1cisv7n6RAm2B8QKrUh8CW8OxBWLZeSk42VoxqJk/W88lkpJTqHY4wqMqyIQza5QCRPbuakdjErL/3E3slKex9vMjePlyrP3/v+JAlmWWHYqmrq8zTQPdVIzyHlpMAkmjbJ0RStSrvi/eTjYsrsR9P0WSZ2KWHIzC0caSAU2NX9xhw7UNvLb3NRp5N2JBjwV42JXQB6b5BGWpx7EFRo+tIuhe1wdfF1uWHop64HEWTk4EzJ+HY4cO3PjgP6T8JG7gJiP5KoTvVJY5WVqrHY3JyynUsvZYLH0a+lLFxbZUn5nUYBLvtnqXvXF7mbpzKjlFRix73WISpEcqs7NCiUa1CqJYJ9932blgBs6sUQqntZikdiQmIXPzFuKefRabWrUIWrYUSy+vv71/LCqdyzeyGdM6SL22CffjXFVZVXVyGRSK9gAlsbbUMKpVEHuuJnO9krZTEEmeCUnKLmDLuUQGNVOWyRjTiksreP/g+7Txa8OcbnNwsnYq+UPOvlDncaXXTlGuUeOrCCwtNIxsGci+aykl3mA0trb4z/wB5z59SP7mG5K+K6eCFMKDHZ0LFtbQfLzakZiFX0/dXuYU/FCfG1JrCJ+1/4zTSaeZtGMSGQUZRomPOv3AwUs0Fi6l6t6OtA71YMXhGNFOwRzJt5poV20q2iYA6WvXkvDqq9g3aULgooVYuLr+65ilh5T+xE80/vd+YpPQaioUZsJZseqnNIaHBWJtoWFpJW2OLpI8E7LqSCzFOtno68Dnn5vPZ0c/o2tgV77v/D12lnal/3DYFGX5h+jXUirDbt1glpWiX4tkZUXVLz7HZdBAUn+cS9Jnn4lET00FWXB6FdQfBI7eakdj8mRZZvnh28ucXB/6871De/Nd5++4ln6NCTsmkJKfYvggLa2VZvZXtynN7YUSjW4dRHxGPn9duf+yc8FERe2DlCuityeQumgxN957H4f27QiY9xMWjo7/OiYpS+lPPLh5AHbWJlqgxr+FUgTsyFyx7LwUlHYKvqw7EUdWJWynIJI8E1Gk1bPiSDQda3oR6vXvm48hyLLM9ye/Z8bJGfQJ7cNXHb/C2uIhl6AFtlL6tRydJ/q1lIKnow29G1Rh/Yk4cgq1JR4vWVjg++GHuI0eTdqSpdx4/wNkcSNXx9lby5zCxDKn0jgZoyxzGtXq0Zc5dQzoyMyuM4nLjmP8tvHcyDVCn7Zm45QCOicWG/7cFVD3uj54O9mw/LBIis3O0Xlg51ap9xPLskzyDzNJ+vxznHr0IGDmTDR29x7YXnU0Fq1eZnQrEyq48k+SpBQBS7kKEbvVjsYsjL3dTuF45WunIJI8E7Htwg2SsgsZZ6S2CbIs8/mxz5l3bh6Dag7ik3afYKl5hCWhkqQ0R0+6ANEHDR9oBTSmTTDZhVp+ORVfquMljQaft97E46mnyFi7loQ33kDWlpwgCgYky3B8Ifg2UpY6CSVafjgGRxtLnmhctUznaV21NT92+5Hk/GTGbRtHXLaBfzC7BkDNXkpze60oKFISKwsNw8IC+etqMjGpeWqHI5RWVoJSibHJaLB6iNU6FYgsyyR9/gUps2bh0r8/fl9/hWR974HtYt3/B9qDPR3KOdKHVO9JsPdUfkYJJWoU4ErTQFeWHqp87RREkmcilhyMItjDno41vUo++CHp9Do+OPQBKy6tYHTd0bzX6j00Uhn+19cfBLauyn4loURNAlxp4OfC0oNRpV5+KUkS3i+9iNcLL5C1cRPxL72MXPTvxuqCkcQchqSLSsEVU9t8b4LScovYcjaRAU39cDDAfuKmPk2Z/9h8souyGbttLJGZBi7j32Ii5KXAxY2GPW8FNTwsAI0kseKomM0zGycWg6xXCqZVQrJez40PPyRt8WLcRo7E9+OPkCzvf2/aceEmSdmFptU24X4sbZR2GFd+V5J5oURjK2k7BZHkmYDz8ZmciE5ndOtgNBrDPlAW64t5c/+bbLi2gacbPc2rzV8te8Uoa3toOhoubYbM0s1OVWaSJDGmdRDXknI4FJH6UJ/1fHoKPm++QfaOHcQ++yz6AiOWmBf+7/gCsHGGBoPUjsQs/Hw8liKdnlEGXOZU37M+C3ssRKvXMm7bOK6mXzXYuQntDO7V4JioZFsavi52dK/jw8/H4ygo1qkdjlASXbGS5NXoDu4hakdT7mSdjsR33iVj1Wo8Jk3E5523kTQPftxdeigKfzc7OtUyk/3XzcaBrFNWJAgl6lXfFw8Ha1YeiVE7lHIlkjwTsPRQFHZWFgxubti2CcW6Yl7d8yq/R/7Oi81eZHrj6YYrCdxikjJKKJYLlMrjjariZm9VqgIs/+Q+dixVPvwPuXv3ETvlafS5orKpUeWmwMXfoNEwsDbxZTsmQK+XWXk0hrBgd2r6lKJK70Oo5V6LRT0XYSlZMmH7BC6kXDDMiTUaZTYv9ggknjXMOSu4Ua2CSMst4vfziWqHIpTk0ibIuQktKl/BFVmrJeH1N8jcsAHPadPwevnlEp97rtzI5khkGqNaBWFh4IF2o3EPgWpd4cQS0IntHCWxttQwpEUAuy7dJDEzX+1wyo1I8lSWmV/MpjOJPNmkKs62VgY7b6GukBf+eoFdMbt4M+xNJtQ38JINt2Co2VMZLRT7Wkpka2XBkBYB7Lh4k4SMh7/BuA0ZQtUvviDv+HFiJj+FLqdy9nwpF6eWg66o0i5zelj7wlOITs1jZKtAo5w/1CWUxb0W42jlyKQdkziddNowJ248AiztlFlboURtqnkQ6unwSANVQjk7Nh9cg6B6V7UjKVdyURHxL71M1ubNeL34Il7PPVuqge1lh6OUJKB5QDlEaUAtJkJ2glItWCjR8BaByMDqo5Wn76dI8lT266l48ot1jAgz3DKnfG0+z/35HHvj9vJe6/cYUWeEwc79N2GTlX0tlzYZ5/wVzKiWQehl+ZGXC7g83he/b74h/+xZYiZORJeVZeAIBfR6OLEIgtqCdx21ozELyw9H4+FgTc/6VYx2jQCnABb3XIyHnQdP/fEUx28cL/tJ7dygwUClHUxBZtnPV8FpNBIjWwVxMiaDCwniz8tk3bwI0QeUBEBjom0AjEBfWEjcc8+TvWMHPm++geeUp0r1ueyCYn45Gc/jDavi7vCQ1cbVVqMHOFUVK6pKKdDDng41vFh9LAatrnJULRdJnorkWw/8Df1daODvYpBz5hXn8cyuZziUcIgP23zI4JqDDXLeewrtrMzoHV9kvGtUIAHu9nSt7cOqozEUah9tX4tzj8fw/34GBRcvETNuPLqMDMMGWdlF/AnpUWIWr5TiM/LZdekmQ1oEYGNp3AfKKg5VWNRjEb4OvkzdOZXDiYfLftIWk6A4D86IxsKlMaipP7ZWGpYfrlz7WszKsflgYaNU1awk9Pn5xE2bTs5ff1Hl/fdwHzu21J/dcDKe3CKdeRRc+ScLS2g2Fq7vgjQDF6eqoEa2DORmViF/Xq4cfT8NkuRJktRTkqQrkiSFS5L0xj3ef0mSpIuSJJ2VJGmXJElBd72nkyTp9K2vSlXq7ER0OlduZjMizDDLnHKKcpi6cyrHbx7nk/af0L+GkXvjaDRKY+Ho/ZBswKIIFdioVoGk5hax48LNRz6HU5cuBMz8gcLwcKLHjkOblmbACCu5YwuV0tR1Hlc7ErOw+mgMMhjsHlYSL3svFvZYSIBzAM/seoYD8QfKdsKqTcCvmfJgLPp+lsjF3op+jary66n4StlY2OQVZCn9PesPBHt3taMpF/rcXGKnPE3uwYP4fvwRbsOHl/qzsiyz7HA0jfxdaBTgarwgjanpGJAslBUoQom61PamirMtKypJAZYyJ3mSJFkAs4BeQF1guCRJdf9x2CmguSzLDYF1wBd3vZcvy3LjW1/9yhqPOVl5JAYnG0seb1S2vlIAWUVZTPljCmeTz/JFhy/oG9rXABGWQpNRoLEUjYVLqUMNL/zd7Mpc4cmxY0f858ymKDqa6DFj0CZXrrLARpEZB1d/VyrHWtqoHY3JK9bpWX0sls61vAlwty+363rYebDgsQWEuITw7J/Psid2T9lO2GKy0lg4cq9hAqzgRrcKJr9Yxy8nRWVlk3N2DRTlQNgktSMpF7qcHGImP0XeiRNU/eILXAcOfKjPH4pIJTwph9Gtg40TYHlwrgq1eil7yUV9hBJZWmgYFhbA3muVo++nIWbywoBwWZYjZFkuAlYDT9x9gCzLu2VZvv2neRgwbBlJM5SeW8Tmc4k82aTsfaUyCzOZvGMyF9Mu8nWnr+kR3MNAUZaCozfU7gtnVkJx5alY9Kg0GonhYYEcikglIrlsxVMc27YlYO5cihMSiR4zluKbjz47KKCUopZlpTS1UKIdF26SnF3IKCMVXHkQN1s35j82n5puNe8UmHpk9for+/OOzTdcgBVYA38XGvm7sOxwdKn7fgrlQJaVv8O3Z6crOF12NrETJ5F/9ix+X3+Ny+MPP7C94kgMLnZW9G3oa4QIy1GLiZCXKuojlNLQFgFIwKpjFX82zxBJnh9wd6mauFuv3c9E4Pe7/ttWkqTjkiQdliTpSQPEYxbWn4yjSKtnRMuyPSClFaQxcftEwtPDmdF5Bl0CuxgowofQfDzkpytl54USDW7uj6VGYvWxsld4cmgZRuC8n9AmJRE9egzFCaIx6iPRFSulqKt3U/aZCiVafjgaP1c7OtZUp6+Ui40L8x6bR12Purzy1ytsj9r+aCeyslX2L13eIhoLl9KoVkGEJ+VwOEIsFTcZ0Qch+bKyz7SC02VlETNxEvkXL+L/3bc493z4ge2UnEJ2XLjBwKb+2FqZeYGakE7gFgLHRKXg0vB1saNrHR/WHoulSFuxC7CUa+EVSZJGAc2BL+96OUiW5ebACOA7SZKq3eezT91KBo8nm/nSNFlW+ko1DXSljq/zI58nNT+VidsnEpUVxQ9dfqCDfwcDRvkQgjsojYVFAZZS8XaypVsdH9adiHvkAix3s2/WjMAF89GlpxM9egxFcWIZ1UO7shVyboiCK6UUnpTDoYhURrQMVLWvlJO1E3O7zaWhV0Ne2/saWyK2PNqJmo9X+n6eWGLYACuoxxtVxcXOiuVHRDsFk3FiEdi4QL0BakdiVLqMDGLGT6Dg0iX8Z8zAqVu3RzrP+hNxFOtkRrQ0s7YJ96LRKPewmIOQdEntaMzCyJZKfYTtF26oHYpRGSLJiwfu/lfif+u1v5EkqRvwNtBPluU7C4dlWY6/9T0C+Atocq+LyLL8kyzLzWVZbu7l5WWAsNVzOCKNiORcRrZ89GpOKfkpTNw+kbjsOGZ2nUkbvzYGjPAhaTTKErfYw+IGU0ojWgaSllvEtvOGucHYNW5M4MKFyh6FMWMoioszyHkrjeMLwdkfapbjUmcztuJINFYWEkNbqP+A5GjtyJxuc2jm04w3973JpuuPsGTJPRSqdYFTy0Rj4VKwtbJgcDN/tp+/QVJWgdrhCHlpykqaRsPAuvz2x5Y3bXo60RMmUHj1Kv4/fI9Tl86PdB69XmbV0RjCgt2p7u1k4ChV0ngUWFiLdgqldLs+wooKPlBliCTvGFBDkqQQSZKsgWHA36pkSpLUBJiLkuAl3fW6myRJNrd+7Qm0BS4aICaTtuJINC52VvR5xHXgtxO8hNwEZnWdRSvfVgaO8BE0HnnrBiNm80qjXXVPAt3ty1yA5W52DeoTuHAButxcoseMoSi28jT8LJPU6xDxlzJQUYn6Sj2q/CId60/E0bO+L56OplGgxt7KnlldZ9HStyVv73+b38IfYel48/GQFQ/hOw0fYAU0slUQWr3MGgMsOxfK6Mwq0BUp5fQrKG1aGjHjxlMUfh3/2bNw6tTpkc91OCKVqNQ8hleEWbzbHDyg7pNKO5iiXLWjMXkajcSIloEcjkgjPKls9RFMWZmTPFmWtcAzwHbgErBWluULkiR9KEnS7WqZXwKOwM//aJVQBzguSdIZYDfwmSzLFTrJS8kpZPuFGwxo6vdI68CT85IZv208ibmJzOo6izDfMCNE+QgcPKBOv1s3mIpfsaisNBqJYWEBHIk07A3Grl49ghYtRM7NU5ZuxlT8jcVldnyhUiG2aeXpK1UWm84kkFWgZVQZ9xMbmp2lHT90+YFWvq1498C7/HLtl4c7Qc2e4OgjKgWXUoinA22re7D6WCx6vSjAohpZVv7O+oeBTz21ozEKbWoqMWPHURQVhf+c2Ti2b1+m8604qhRc6VXfzAuu/FPzCVCYBefXqx2JWRjcLAArC8mgg+2mxiB78mRZ3irLck1ZlqvJsvzxrdfek2V5461fd5Nl2eefrRJkWT4oy3IDWZYb3fpe4XeN/nxcWQc+8hEekG7m3mTC9gkk5SUxp9scWlRpYYQIy6D5eCjMhAsP+XBVSQ1uFoClRmLVUcPeYGzr1iVwyWLkggIl0YuKMuj5K5TifDi9Amr3AacqakdjFlYciaaGtyNhIabXh8vW0pbvu3xP66qtef/g+2y4tqH0H7awUlrCXNsOmWJfa2kMaxFIfEY++8JT1A6l8oo5pLQAqaBVgbUpKUSPHUtRbCwBc3/EsW3bMp2vQhVc+afAVuBdVxRgKSUvJxt61KvCuhOxFBSXvT6CKSrXwiuV3Z114CEPvw78Ru6NOwnej91/pJmPCZZIDmoLnjVFU85Sun2DWX8yzuA3GNvatZVEr6iI6DFjKYyMNOj5K4wLvyqVYZtPVDsSs3AhIZMzcZmMaBmIJKlXcOVBbid6bfza8P7B91l3dV3pP9x0jFKA5dRy4wVYgTxWzwd3B2tWVeCRcJN3YvGtgiv91Y7E4LTJyUSPHUdxfAIBP83FoVXZt6asq0gFV/5JkpTZvMTTEH9S7WjMwsiWQWQVaNl8NlHtUIxCJHnlaH94CjFpeQ89i3c7wUstSGVu97k08b5nbRr1SRI0Gw9xx+DGObWjMQsjWgaSkVdssAIsd7OtVUtJ9LRaYsaMpTBCJHr/cmKRUhk2RKXKtGZm9dFYbCw19G/yoC456rOxsGFG5xm082vHfw79h5+v/ly6D7oFKwVYTi4FfcUc2TUkG0sLBjXzZ+elmyRliwIs5S4vTRmoajikwhVcuZPgJSYS+NNcHMLKvjVFr5dZXdEKrvxTwyFgZQ/HxWxeabQKdSfUy6HCFmARSV45WnkkBncHa3rWL/2ysMScRMZvG096QTpzu8+lsXdj4wVoCI2GgYWNKMBSSq1DPQjyMGwBlrvZ1qxJ0JLFyHo90WPHUHj9ulGuY5aSLkHsEWWZk4nOSpmSvCItv56Kp3cDX1ztrdUOp0S3E70O/h348NCHrL2ytnQfbDYOsuIgvAwN1iuRYS0C0Opl1p0QFX3L3ZnVoCtUtkpUIMVJSUqCd+MGgT/Nxb6FYbamHLpVcKWs/YlNmq0LNBgM59ZDfoba0Zg8SZIY2TKIUzEZXEzIUjscgxNJXjm5mVXAH5duMriZPzaWpVsHnpiTyITtE8gozOCn7j/RyKuRkaM0AHt3ZdnI2bVQWHErFhmKRiMxPCyQo1FpXLuZbZRr2NSoQdCSxSBD9NhxFEZEGOU6ZufEEtBYQeMRakdiFracTSS7UMvwMPN5QLK2sObbTt/S0b8j/z38X1ZfXl3yh2r1BgdvUYCllEK9HGkV6s7qo6IAS7m6U3ClRYUquFKclETMuPH/T/CaNzfYuVcejcHV3uqhBtrNUrNxoM2Hc6VcwVDJDWzqh42lpkLO5okkr5ysPRaLTi+X+gHp9hLN2wleA68GRo7QgJqPh6JsUeGplAY181cqPBm4AMvdbKpXVxI9UPboVfZEr7gAzq5WCq44eKodjVlYdTSGal4OtAh2UzuUh2JtYc03nb6hU0AnPj7yMWsur3nwByysoMlIuLoNshLKJ0gzNzwskJi0PA5eT1U7lMoj5jCkXKlQBVeKk5KIuXsGz4AJXoUuuPJPVZtAlQZwcokyGCA8kKu9NX0bVuW30wnkFlasPqkiySsHulsFV9pV9yTY06HE42/k3mD8tvHmmeABBLQErzqiAEspeTreKsBywvAFWO5mU63a/xO9sZU80bu0SSm4UoEekIzpyo1sTsZkMDzMdAuuPIi1hTXfdPyGTv6d+OjIRyUv3Ww6BmQdnFpRPgGauR71quBqb8WqY6IAS7k5sRhsnCtMwZU7Cd7NmwTO+8mgCR78v+DK8LAKWHDlnyQJmo5VaiMknFI7GrMwPCyAnEItWypYARaR5JWDvVeTScgsKNU6cLOewbtNkpTZvIRT4gZTSiNaBpJVYPwbjE21agQtXnRr6WYlTvROLAbXIAjpqHYkZmHV0RisLTQMaOqvdiiPzMrCiq87fX1n6eYDEz33UAjtJAqwlJKtlQUDm/qz48INUnIK1Q6n4stLU1oVNRwC1iUPHJu64qQkYsaMRXs7wWtm2OrhlaLgyj81HAKWdspsnlCiZkFuVPd2rHADVSLJKwerjsbg4WBNtzo+DzzudoKXXpBuvgnebQ2HKjcYUYClVFqHehDq6WDUJZu32VSvriR6evlWolfJqm6mhEP0fmW2RiNugSUpKNbxy6l4etSvgruD6RdceZDbSzdLleg1GweZMXB9d7nFZ86GhwVQrJNZLwqwGN/ZNUrBlQqwEuFOgpeURIAREjyoJAVX/snWBeoPgHPrRH2EUpAkiWEtAjgVk8HlGxWnAIt4wjGypKwCdl1OYlAzf6wt7//HfXeCN7f7XPNO8ADsXJUbzPn14gZTCpKkFGA5EZ3OlRvGKcBytzt79PQyMZUt0Tu5BCQLpfG1UKLfzyeSmV/M8BYVY5nT7USvg38H/nv4v/dvr1CrD9h7imXnpVTd24kWwW6sOhqDLPYBGc/tgit+zZV9V2ZMm5ysLNE0YoIHlajgyj81HQtFOaI+QikNaOqPtYWG1Udj1Q7FYESSZ2Q/n4hDp5cZ+oAHpH8meA29GpZjhEYkbjAPZWAz5Qazqhxm8+D/iZ6s11eeRE9bBKdXQq1e4FTJfuA/olVHYgn2sKdVqIfaoRjM7aqbt9sr3DPRs7RWCrBc+R2yDd/HsiIaHhZIVGoehyJEARajiT0CyZfNfhZPm5KitEkw0hLN2ypVwZV/CggDr9piyWYpuTtY06N+FTacNG59hPIkkjwj0utl1hyLpWWIO6Fejvc85mbuTSZun1jxEjwQN5iHpMYN5vbSzTuJXmQFT/SubIG8FGUAQihReFIOR6PSGNoiEI3G/AquPMjtRK+9X3s+PPQh666u+/dBTcfeKsCyvPwDNEO9G/jibGtZoUbCTc6JxWDtpKyUMVN3ErzbVTSNlOBBJSu48k+3C7DEn4Ab59WOxiwMbxFAVoGW389XjAIsIskzokMRqcSk5d23bUJSXhITd0wktSCVH7v/WLESPBA3mEegxg3GpkaNuxK9cRRFRZXbtcvdiSXg7A/Vu6odiVlYfTQGS43EoGbmW3DlQawtrPm287e082vHfw79h/VX/7HqwKMahHRQBqr0enWCNCO2VhYMaOrPtvM3SMstUjuciic/3ewLrmhTU4keN47ihAQCfpxj8Cqad7tTcCWkEhVc+adGw8DCRgy2l1KrUA+CPOxZVUEGqkSSZ0SrjsbgYnfvdeDJeclM3D6R5Lxkfuz2o3k0On8UjYaBhbVSpU4okVo3GJsaNQhctBC5uJjoseMoiqlYFaYASIuEiN3QdDRoKtmynUdQqNWx/mQc3ev64OVko3Y4RmNjYcN3nb+jrV9b/nPoP/xy7Ze/H9BsHGTEKH93hBINDwukSKdnw0lRgMXgzqwBbYHZLtXUpqURM24cxXHxBPz4Iw5hYUa93uFbBVcq5SzebfbuULef8nenKE/taEyeRiMxtEUARyPTuJ5s/vUkRJJnJGm5Rey4cJP+Tfz+tQ48JT+FiTsmcjPvJj92/5HG3o3VCbI82LtDnX5K4+nifLWjMXl332AiyvkGY1uzJoGLFyMXFiqJXmzFGMm649QykDSi4Eopbb9wk/S84vuuRKhIbCxsmNF5Bq2rtub9g+/zW/hv/3+zdl+w91CWyQklqlXFiaaBrqwUBVgM607BlWbga36rfpQEbzxFsXEE/DgHh5bGTfAAVh+LxdnWkl71fY1+LZPWdCwUZsLF30o+VmBQM38sNRJrjpn/M5BI8oxkw8k4inT6fz0gpeSnMHH7RG7k3mBOtzk08W6iUoTlqOkYKMiEixvVjsQsDGrqj4VKNxjbWjUJXLwIOS+P6LFjKYqLL/cYjEJXrDS2rt4dXCrm0kNDW300Bn83O9pV91Q7lHJxO9Fr6duSdw+8y6brm5Q3LG2g8Qi4shWyb6obpJkYHhZIRHIux6LS1Q6l4og7BsmXlJ+nZkabnk7M+AkURUcTMGc2Dq1aGf2a6blFbDt/gwGVseDKPwW3A/dqYslmKXk72dK1jjfrT8RRpDXvZfoiyTMCWZZZfSyWJoGu1Kry/3XgqfmpTN4xmcTcRGZ1nUUzH+NtNjYpwe3BLUTcYErJ29mWrrW9WafSDca2dm0CFy9Cn5tHzJgxFMdXgETv6nbIuQHNRMGV0ohMyeXg9VSGtQiocAVXHsTW0pbvu3xPWJUw3jnwDlsitihvNB0Hei2cWalqfOaib8OqONlallul4Erh5BKwcoD6A9WO5KHcSfCiopQEr3XrcrnuhlPxFOn0D6xsXmlIkvKzL+YQJF9ROxqzMCwskNTcIv64aN4DeyLJM4IT0emEJ+UwvMX/Z/HSCtKYtGMScdlxzOo6ixZVWqgYYTnTaJTRx+gDSiNqoUTDb91gdl1S5wZjW6cOgQsXoMvJIXrMWIoTElSJw2BOLgHHKlCjh9qRmIXVx2Kw0EgMbl75HpDsLO34oesPNPNpxlv73+L3yN/BszoEtVX2FosliCWys7agfxM/tpxLJCNPFGAps4IsOL8BGgwEG/MpIKLLyCBm4kSKIiLwnzULhzZtyuW6siyz5lgMjQJcqePrXC7XNHmNRoDGStRHKKUONbzwc7Vj9THzHqgSSZ4RrDoai6ONJX0aKuvA0wvSmbRjErHZsczsOrNyJXi3NR6pNKAWs3ml0qGmF74utqxScU24Xb16BC5YgC4rSyl3nWimJYUzYiF8p7IXz8JS7WhMXpFWz/oTcXSp7Y2Ps63a4ajCztKOmV1m0sS7CW/ue5NtUduUgaq0CIjar3Z4ZmFYi0CKtHp+OVUBVgKo7fw6KM5TZpTNhC4ri5iJkyi6Fo7/zB9wbNe23K59MiaDqzdzGC5m8f7P0Qtq91b6xGoL1Y7G5CmDnP7su5ZCbJr5FqwRSZ6BZeYXs+VcAo83qoqDjSUZBRlM3jGZmKwYfujyAy19W6odojqcfJQG1KdXKg2phQe6PYuy71qyqjcYuwb1CVwwH116+p3GtWbn1HKQ9UpVTaFEOy/dJCWnqHJXpAPsreyZ3XU2jbwa8cbeN9jh6Ag2LmKgqpTqVnWmob8Lq4/GigIsZXVyKXjXA7+makdSKrrsbGImTqLg6lX8vp+BY4cO5Xr91UdjcLC24PFGVcv1uiav6VjIT4NLm9SOxCwMaR6ARsKsC7CIJM/ANp6Op6BYz/CwADILM3nqj6eIzIzk+87f07pq+axFN1lNxyqNqK9sVTsSszCkuVIg5Ofj6t5g7Bo2VBK91FRixoyl+GaSqvE8FP2tRtbVuoBbsNrRmIXVx2LxdbGlY01vtUNRnb2VPbO7zaahV0NeP/Auu2p1VApI5aWpHZpZGNYikCs3szkdm6F2KOYr8SwknFL2VEmmvz9Wl5ND7KTJFFy+jP+M73Dq3Llcr59dUMzms4l3BtqFu4R2BtdAMVBVSlVd7ehY04u1x2PR6syzAItI8gxIlmVWHY2lrq8zQV4ST/3xFOEZ4XzX+Tva+JXPWnSTVr2r0oharAkvFX83e9rX8GLt8Th0enVHwu0aNSJg3jy0yclKn6MkM0n0wndBVpwywCCUKDYtj33XkhncPACLSlRw5UEcrByY3XU29Tzr8UrOOf600cDZtWqHZRYeb+SLnZUFqytIY2FVnFyqNLNuMFjtSEqky8kldvJT5F+4gN83X+PUpUu5x7DxTAL5xTqGVYLWLw/tdn2EyL3K0nOhRMPCAknKLuTPy2byzPMPIskzoHPxmVxMzGJAM3em7pzK1fSrfNvpW9r7t1c7NNOgsVD2RV3/E9Kj1Y7GLAxvEcCNrAL2XFX/BmPftAkB836i+OZNYsZPQJuSonZIJTu5BOw9oVZvtSMxC7dnjW/PIgsKR2tH5nSbQx2Purzs7cWeMwtEAZZScLK14vFGvmw6m0BOoVbtcMxPUZ4yoFD3CaXnrAnT5+YSO2UK+WfP4vf11zh3765KHKuPxlK7ihON/F1Uub7JazxKqY9wQszmlUaX2t54Odmw2kyXbBokyZMkqackSVckSQqXJOmNe7xvI0nSmlvvH5EkKfiu99689foVSZLMuvTdqqOx2FoXsTPjYy6lXuKbjt/QMaCj2mGZltuNqE8tVzcOM9G1jg+ejtasMpGRcPtmzQic+yPFCQnEjB+PNjVV7ZDuL/sGXPkdGg8HS2u1ozF5Or3M2uNxtK/hhb+bvdrhmBwnayd+7P4jtex8eNEmn31nFqkdklkY2iKQvCIdm86YeYVeNVz8TWlibeKtX/R5ecROeZr806fx++pLnHs8pkoc5+MzORefybAWAUhmsLRVFc6+ULOHUh9BV6x2NCbPykLD4Gb+/HUlicTMfLXDeWhlTvIkSbIAZgG9gLrAcEmS6v7jsIlAuizL1YFvgc9vfbYuMAyoB/QEZt86n9nJLdSy8cx1vGos40raJb7q+BWdA8t3LbpZcA1Qlm2eWg46MbJbEmtLDQOb+vPn5SSSsgrUDgcA+xYtCJgzh6LYOGVGL91EGx6fXgmyTizVLKU9V5O4kVUgKtI9gLO1M3N7L6F6sY4XznzHgfgDaodk8poGulLTx9FsR8JVdXKp0sQ6qPwqUz4sfX4+sVOnkXfyJFU//xznXr1Ui2XNsVhsLDX0byJWIjxQ07GQmwRXt6kdiVkY2iIAvQxrj8WpHcpDM8RMXhgQLstyhCzLRcBq4Il/HPMEcHtueB3QVVKGWZ4AVsuyXCjLciQQfut8ZueX0xHoqywgSx/B5x0+p2tQV7VDMl1Nx0J2glLWXijR0BYB6PQyP58wnRuMQ6uWBMyZTVF0tGkmenq98oAU1BY8a6gdjVlYfTQWT0drutbxUTsUk+bi5MdPnu0JKSrm+d3PcSjhkNohmTRJkhjWIpAzsRlcSsxSOxzzkXwVYg4qe6hMdFZKX1BA7LRp5B09StXPPsWlbx/VYskv0vHr6Xh6N/DFxd5KtTjMQvVu4OQrlmyWUpCHAy93r0nb6h5qh/LQDJHk+QF3D9HF3XrtnsfIsqwFMgGPUn7W5BVoC/j+wptY2kXzWftPeSxYnaUKZqNWL3DwFgVYSinUy5GWIe6sORaLXuUCLHdzaN0a/1mzKIqIIGbiRHSZmWqH9H/R+yE9UnlAEkqUlFXArstJDGzqj7Wl2KpdEtfmk5mXeINAS2ee+/M5jiQeUTskk9a/iR/WFhpWHzXvxsLl6uQS0FhC4xFqR3JP+sJC4qY/Q97hI/h++gku/fqpGs/Wc4lkF2gZKlYilMzCUtk6E74TMk1n8NiUPdu1Bs2DTXtf7L2YzU9zSZKekiTpuCRJx5OTk9UO5280WOJrH8wTfq/QK1S9pQpmw8JK+cF1dZuyb0oo0fCwQGLS8jgUYVp74BzbtcV/5g8UXQsnZsJEdFkmMlJ/YgnYuigFC4QS/XxCqeAqHpBKyb85bh61mJ+lx9/Jn2d2PcOxG8fUjspkuTlY07N+FX45FU9BsU7tcEyftgjOrFIGRB1Nr5WJvqiIuGefJffAAXw/+gjXJ59UOyRWH4shxNOBliHm9yCuiia3+saK+ggVmiGSvHjg7icD/1uv3fMYSZIsARcgtZSfBUCW5Z9kWW4uy3JzLy8vA4RtONaWlvw27Gs+6i5mDUqt6Rhlv5S4wZRKz/pVcLa1NMl9LY4dOuD3w/cUXL1KzKTJ6LKz1Q0oLw0ubYSGQ8HKTt1YzIBeL7P2eCwtQ9wJ9XJUOxzzIEnQbCzuCaeZ1/hlqjpWZfqu6Zy4eULtyEzWsBYBZBVo+f18otqhmL4rWyAvFZqOUzuSf9EXFRH/7HPk7t1Hlf9+iOvAAWqHRHhSNsei0hkqCq6UnlsQhHaCk8uUfrJChWSIJO8YUEOSpBBJkqxRCqls/McxG4Hb1Q8GAX/Ksizfen3YreqbIUAN4KgBYhJMnUc1CG6vLNnUm2eTyfJka2XBgKb+bD9/g7TcIrXD+RenTp3wn/EdBZcuETtpMrqcHPWCObsGdEViqWYpHY5IJTo1j2FhYhbvoTQcChbWeF74jQU9FuBj78O0ndM4lXRK7chMUqtQD4I87EXPvNI4uRRcAqCaaRVvk4uKiH/hRXL27KHKBx/gNtg0evetORaLpUZiYFNRcOWhNBur9JG9vlvtSAQjKXOSd2uP3TPAduASsFaW5QuSJH0oSdLtRdoLAA9JksKBl4A3bn32ArAWuAhsA6bLsiyGFCqLpmMhIxoi96gdiVkYFhZAkU7PhpOmuYbeqUsX/L75mvwLF4id/BS6nNzyD0KWlaWaVZtClQblf30ztPpYLM62lvSq76t2KObF3h3q9IOza/C0dGBBjwV42XsxdedUziSfUTs6k6PRSAxpHsCRyDQiklUcBDJ16dHKQ3eTUUpvWRMhFxcT//LL5Pz5Jz7vvoPbsKFqhwRAoVbH+pPxdK/rg5eTjdrhmJdafZQ+sicXqx2Jyfsz5k/SCtLUDuOhGWRPnizLW2VZrinLcjVZlj++9dp7sixvvPXrAlmWB8uyXF2W5TBZliPu+uzHtz5XS5bl3w0Rj2Am6jwOdm7KBnOhRLWrONM4wJXVx2KRTbQRs3P37vh9/TX5Z88SO2UK+txyTvTijkHyJZPvK2Uq0nOL2Hb+BgOa+mNrZToPlGaj2VgoyISLG/G292bBYwtwt3Xn6T+e5lzyObWjMzmDm/ljoZFYY4LLzk3GqWXK99s9ZU2ArNUS/8qrZP+xE5+33sJ95Ei1Q7rjj4s3ScstEvuJH4WltdJH9srvkJOkdjQma0vEFl7860Vmn56tdigPzWwKrwgVkJUtNBwGlzZDbora0ZiF4WEBhCflcCLaxFoW3MW5x2P4ffUl+adPE/v0VPR5eeV38ZNLwMoB6g8sv2uasQ2n4inS6cUD0qMKagduIXcGqnwcfFjYYyGuNq5M+WMKF1IuqBygafF2tqVrbW/Wn4yjSCuW6f+LTgunVigl7l1MY+mhrNUS/+qrZG/fjvfrr+M+ZrTaIf3NmmOx+Lna0b6GadVqMBtNxoBeC6dXqB2JSfo98nfe2v8WzXya8XLzl9UO56GJJE9QV7OxoC9WKokJJerbsCoO1hasNPFS5M69elH188/JO3GC2KnT0OfnG/+iBVlwfgPUHwA2Tsa/npmTZZk1x2JoFOBKHV9ntcMxTxqNsvcz+gCkhANQxaEKC3ssxNnGmcl/TOZi6kWVgzQtw8ICSMkpYtelm2qHYnrCdyo9ZE1kJYKs1ZLw+htk/74N71dfxWP8OLVD+puY1Dz2XUthSPMALDSi4Moj8aoJgW2UfaAmukJILdujtvPmvjdp4t2EmV1mYmdpfoXcRJInqMu7DgS0VPZRiRtMiRxsLOnX2I+t5xLJzC9WO5wHcunbh6qffUre0aPETZ+OvqDAuBc8vx6K86DZOONep4I4GZPB1Zs5DBOzeGXTeARIFn9bdu7r6MuCHgtwtHLkqT+e4kraFRUDNC0da3pTxdmWVWLJ5r+dXKL0kK3ZU+1IkHU6Et58i6wtW/B6+SU8Jk5QO6R/WXM8Bo0EQ1qYxqyn2Wo2FtIiIGq/2pGYjD+i/+D1va/TyKsRs7vOxt7KXu2QHolI8gT1NR0Lqdcg5pDakZiF4WEBFBTr+e30PbuNmBSXfv3w/fQTcg8dJm76M+gLC413sZNLwLsu+DUz3jUqkDXHYrC3tuDxRlXVDsW8OVVR+pmdXqn0N7vFz9GPBT0WYGdpx6Qdk0Sid4uFRmJIc3/2XUsmLr0cl3KbuqwEuLodmoxUesmqSNbpSHzrbbI2bcLrhRfwnDxZ1XjupVinZ+3xODrX8sbXxfxmWExKnX5g4yLqI9yyK3oXr+15jQaeDZjdzXwTPBBJnmAK6j0JNs5wYrHakZiFBn4u1PV1ZtVR0y3AcjfXJ5/E96OPyD14kLhnnjVOopd4FhJOKQMGok9SibILitl0JpF+jariaGOpdjjmr+lYyEuBK1v/9nKAUwALH1uItYU1k3dM5lr6NZUCNC2Dmyuzx2uPm2alYFWcWqH0jlW59Yus15P4zrtk/vYbXs8/h+fTU1SN537+vJxEcnYhw8IC1Q7F/FnbQ8MhcHGj0me2Etsds5tX9rxCXc+6zOk2BwcrB7VDKhOR5Anqs3aABoPh4m+Qb7oFRUyFJEkMbxnIpcQszsZlqh1OqbgOHIDvfz8kd98+4p57Dn2RgXv9nVwKFjbKDyqhRBvPJJBfrBMFVwyleldw9r/nQFWAcwALeyzESmPFpB2TCE8PL//4TEyAuz3ta3ix9lgsWp0owIJer9zDQjqCe6hqYch6PYnvvUfmL7/g+cwzeE6dqlosJVl9NAYfZxs61xIFVwyi2VjQFcLZtWpHopo9sXt4ac9L1PGow4/dfsTR2lHtkMpMJHmCaWg2FrQFlfoG8zCeaFwVOysLVh8z7QIsd3MdNIgqH/6H/7V31+FRXF0Ah3+zcXcjCsGdBIdCS3Gn0OJeoFBapAYVSt29hRaXFisUd3dLcAhOnISQkBBPNjvfHxP6QbFANpndzX2fJw/J7uzMWVgmc+bee07m7j3EvabHRC8vS/ncVO+q9C4THmvp0RiqejtQ199Z7VBMg8ZMGYG5uhNSrt33dKBjILPbzcZMMmP4luFcSb2iQpCGpV9DfxJu57D7YpLaoajv6g5Ii1Z1PbGs05Ew9SPSlq/AfcxoPMa+qlosjxOXms2ui0m8VN8fczNxGasX3rWgXD1lyqYRzBDSt72xe5mwawJVXKrwe5vfcbA0jeJt4n+HYBh86oBPXVGApYgcrS3oVNuHNSfiycjVqh1Okbm89BLeU6eSsXs3cePGI+sj0Tu3GnLTlClzwmOdjU/jVGwavRv4I4mprfpTbwBIGmVE5gGCnIKY3W42GknD8M3DuZp29YHblRXPV/PC3d6KxQZeKbhUhM8DWzeo2kmVw8uyTMInn5C6bBluo0bh/tprqsRRVMsKi/a8VF/MRNCrkMFw4xzEhqkdSanaF7eP8TvHU9G5In+0+QNHS9OpNi2SPMFwhA6GG2chLlztSIxC34b+ZOYVsPZkvNqhPBGXPr3x/nAKGTt3EjthYvETvWMLlClOQc31E6CJW3wkGitzDS/UExXp9MrJFyq1VfpNFTy48m15p/LMbjcbgOGbh3Mt7f5Rv7LCwkzDi/X92HH+BtfTSqHFiqFKT1SaUdftB+ZWpX54WZZJ+PhjUhcvwW3Ey3iMH2fQN38KdDLLwmJ4ppIH/q7GWxDDINXqpfSZLUMFWPbH7WfcjnEEOwczs+1MnKyc1A5Jr0SSJxiOmr3AwlYUYCmikAAXKnnas8QI74S79O2L1wfvk7F9O3FvvIGc/5TtIJIuQPQBZaqcAV+YGIrMXC2rjsfTqbYPTrbqVvAzSaFDICMRLm566CYVnCowu91sdLKO4ZuHE5kWWWrhGZo+DfzRybDsaBkuwHLiL6UZtQozEWRZJvGTT5QE7+XheEycaNAJHsDuize4npZDX7GeWP+sHJQ+s2f+gdx0taMpcQfiDvD6jtep4FzBJBM8EEmeYEisHcvUCaa4JEmiT8MATsamcS7+ttrhPDHX/v3xeu890rduI+6NN58u0QufDxoLqDtA/wGaoHWnlOm9/URFupJRsQ04lHvsjapg52Bmt51NgVzA8M3DibodVTrxGZhANzuaV3Rn6dFoCnRlcJr+nYIrgc3BvVKpHlpJ8D7l1qLFuA4fhscbbxh8ggew+EgM7vZWtK7upXYopilkMORnwum/1Y6kRB2IP8DrOwsTvDammeCBSPIEQxMypPAEs1ztSIzCC/V8sTTXGFUBlru5DhyA1+RJpG/ZQtybbz1ZopefAycXQbXOYC8qrBXFoiMxVPK0JzTQRe1QTJOZOYQMhMvb4dajE7eKLhWZ1XYW+bp8hm0eRvRt4/w/XFx9GwYQn5bDnktlsABL5B64da3UC67Iskzip59xa9EiXIcNw/PNN40iwUu8ncOO8zfoFeqHhSi4UjL86oNnDZOeUXUw/iCv73idIMcgZraZibO1s9ohlRjxv0QwLH71lYbWZWhOeHG42FnSoaY3K4/HkZ1XoHY4T8V18GA8J71D+ubNT5bo3Wm5oWJFOmNyNj6NkzGp9GsUYBQXdEarXuGo8vE/H7tpJZdKzGo3i/yCfIZuHlomE7021b1ws7Nk8eGy994Jnwc2LlCtS6kdUpZlEj/7nFt//YXrkCF4vmUcCR7A32ExFOhk+oipmiVHkqD+ULh+EuKOqR2N3h26fojXdrxGoGMgM9uadoIHIskTDI0kKdMF4o8rDa6Fx+rTIID0HC0bTl9XO5Sn5jZkyJMneuHzCguutCjx+EzBnYIrPer5qh2KaXMOgIqt4fhCKHh85dvKLpWZ2XZmmU30LM019Krvx/bzN0i8naN2OKUn8yZErIM6fcHCulQOKcsyiZ9/wa0//1Rurr3zttEkeDqdzJKjMTQNdiPI3bgbVBu82i8V1keYq3YkenX4+mFe2/4aAY4BzGo7Cxdr05/RIpI8wfDUfklpbC1G84qkcQVXyrvbGX0p8idK9G6cLyy4Mhg04jT2OFl5hQVXavngbGupdjimL3QIpF+HS1uKtHkV1yplOtHr0yCAAp3M32ExaodSek4sAl1+qRVckWWZxC++4NbChbgOHoTnpHeMJsED2Hf5JrG3sukj1hOXPGsnpT7C6RWQY3zr/R/kyPUjjN0+Fj8HvzKT4IFI8gRDZOsK1bspDa7zstSOxuBJkkTvBv6ERd3iUqJxF6wpcqJ37E7Blf6lG6CRWnfyOhm5Wvo2EhdIpaJyO7D3fqIbVf9N9MpSMZby7nY0DXZj8ZEYdGWhAIssK58N/8bgWbUUDidz48svubVgIS6DBuI5aZJRJXgAS45G42JrQbsaouBKqQgdajIFWA5fP8yr21/9N8FztXZVO6RSI5I8wTCFDoHc23D2H7UjMQo9Q/ww10gsOWr8d8Ifm+jlZyt3wUXBlSJbdCSaSp721BcFV0qHmQXU66+M5KUVvT1AFdcq/67RG7Z5WJlK9Po2DCAuNZu9l2+qHUrJi9oPyZeV3rAl7M4IXsr8BbgMGojX5MlGl+Alpeey5WwiPUP8sDI3UzucssE3FLxqKVM2ZeO98XLo+qF/E7zZ7WbjZuOmdkilSiR5gmEKbAruVSBsjtqRGAUPByva1vDin2Ox5OQbZwGWuz0y0Tu3BnJSlTuNwmOdi7/NiZhU+jYUBVdKVcggkHVFKsByt8oulctkote2hheuZaUAS/h8sHKC6t1L9DD/FllZsBDXwYONMsEDWHEsFq1OFlM1S5MkQf0hkHAa4o2zAMvB+IOM3T6WAMcAZrebXaZG8O4QSZ5gmO5UeIoLV6o8CY/Vt2EAt7Ly2XQmQe1Q9OKhiV74XKXgSnlRcKUoFh+JxtJcwwshouBKqXIJguBWcGwh6J7sxktZTPSszM3oFerHtohEbphyAZasFKUycO2XwNK2xA7zb5uEP/9Uqmga2Rq8O2RZZsmRaBoGuVLR017tcMqWWoUFWMKMrwDLgbgD/1bRLGtTNO8mkjzBcNXpA+bWRnmCUUOzYHeC3Gz567DpXBDek+hNfAM57jREH1Sm8xrhBUtpUwquxImCK2oJHQK3Y5W+eU/onkRv0zAi0yL1Hp6h6dPAH61O5u/wok9xNTqnlkJBbolO1VQanX+itEkYNsyoqmj+18GryUQmZ9GnoWibUOqsHaFmTzizAnLS1I6myPbH7ee1Ha8R5BhUphM8EEmeYMhsXJQTzOm/Ide4C4qUBo1Gol+jAI5G3uJCgun8fbkNGYLXu5NJ37qV2HGvI8ui4EpRrTt1nfRcLX3FNCd1VOkIdp5P3Vi4sktlZrebjVbWMmzzMK6mXdVvfAamgoc9jSu4suRotGkWYJFl5bPgGwretUrmEDodCR9/zK1Fi3F7ebhR9cF7kL8OR+NkY0HHWj5qh1I21R8K+VlKITwjsC9uH6/veJ3yTuXLVBXNhxFJnmDY6g+DvAyjOcGorVeoP5ZmGhaZ0GgegOugQXhNfpuMMwnEnqiEzsJR7ZCMwqLD0VT0tKdBUNn+RacaMwuo2w8uboLb8U+1i0oulZjddjYFcgHDNg3jSuoVPQdpWPo2DCAmJZv9V0ywAEvMYUg6X2JtE2SdjoSPPiZ18RLcRozA4403jDrBu5Gew+YzCfQK9cPaQhRcUUW5EPCurdycMPACLPvi9jFuxzgqOFdgVttZJt/ovCiKleRJkuQqSdJWSZIuFf5535WEJEl1JUk6KEnSWUmSTkmS1Puu5+ZJknRNkqQThV91ixOPYILu3PEMM+4KT6XF1c6SjrW8+edYHJm5j2/EbExc69rgHZpKxoVUYl97DV1urtohGTRRcMVAhAwCueCJC7DcraJLRea2m4skSQzbPIxLty7pMUDD0q6GNy62Fkbf9/OBjs4GK0eo1Uvvu5Z1OhKmfkTq0qW4jRyJx8QJRv///u8wpeBKf9H6RT136iMknlFqJBioPbF7eH3H6wQ7BzOzzUyR4BUq7kjeJGC7LMuVgO2FP/9XFjBIluUaQHvgR0mSnO96/i1ZlusWfp0oZjyCqZEkZTQv8TTEhqkdjVEY0DiQ9Fwta08+3ciBwQqbi0sjH7w/mkrm7j3EjhWJ3qMsOVpYcKWeKLiiKrdgqPCsUlHxCQuw3K2CcwXmtJuDmWTG8M3DuZByQX8xGhBrCzN6hvix5WwiSekm9P878yacWwV1+oKlnV53LRcUcP2DD0hdtgy3V0bhMWG80Sd4BTqZRYejaVbRjQoeouCKqmr2Ags7g62PsCN6B+N2jqOSSyVmthUJ3t2Km+R1A+50e50PdP/vBrIsX5Rl+VLh9/HADUA0txKKrtaLYGmvVFUUHis00IUqXg78ZUqlyG9EQMwhCB2CS+/e+Hz6CZn79hE7egy6HBOuxPeUsvMKWHksjo41vXGxEwVXVFd/uFKA5eLmYu2mvFN55rafi4WZBcO3DOd8ynk9BWhY+jQMKCzAYvx9P/91fCEU5Ck3LfVILijg+rvvkrbiH9xffRWPceOMPsED2HXhBnGp2QxoFKh2KIJ14ejzmRWQnap2NPfYGrWVN3a9QTXXasxsOxMnKye1QzIoxU3yvGRZvl74fQLg9aiNJUlqCFgCdy8q+KxwGucPkiRZFTMewRRZOSjlps+sgOxbakdj8CRJon/jAE7HpXEqNlXtcPQjfB6YWf5bcMW5Vy98PvuMzIMHiRk9Gl12trrxGZi1p+JJz9XST1wgGYYqHcHBB47OKvauAh0DmdduHjbmNgzfPJxzyef0EKBhqeipFGBZdDiaAlMowKLTKaMggc3Bs6reditrtcS//Q5pq9fgMe51PF4baxIJHsCfh6LwdLCidfVHXlYKpaX+UNBmK4XwDMSma5t4a/db1HCvwR9t/sDRUqzV/6/HJnmSJG2TJOnMA7663b2dLMsy8NCzsSRJPsBCYKgsy7rChycDVYEGgCvwziNeP1KSpDBJksKSkpIe/84E0xI6FLQ5cHKJ2pEYhe71fLGxMOPPQyZQgCU/G04uhmpdwM7t34edX+iBzxefk3XoMDGjXkGXmalikIZl0eFogj3sRMEVQ2FmrrRTuLIdUopfIdPf0Z+57eZib2HPy1te5szNM8WP0cAMbBxE7K1sdl24oXYoxXdlO6RGQQP9jeLJ+fnEvfEmt9evx/PNN3AfPVpv+1ZbTEoWuy4m0aeBPxZmoj6gQShXD3zqGkx9hHVX1/HO3neo41GHP9r8gYOlg9ohGaTH/u+RZbm1LMs1H/C1GkgsTN7uJHEPPBtLkuQIrAfek2X50F37vi4rcoG5QMNHxDFDluX6sizX9/AQsz3LHJ/a4FsfwuYYxAnG0DlaW9C9XjnWnIwnLTtf7XCK5+wqpUdP6ND7nnLu3p1yX39NVng40SNGUpCRUfrxGZgzcWmciEmlf6NAk7mrbxJCBoNkppzD9MDPwY857efgaOnIiC0jOHHjhF72ayja1vDC08GKhaZwo+roLKWVRtUuetmdnJdH7IQJpG/ejOekd3B7+WW97NdQLD4SjYQybVcwIKFD4MZZiD2qahirL6/m3b3vUt+rPtNbT8fOQr9rXE1JcW+RrAHu1AIeDKz+7waSJFkCK4EFsiwv/89zdxJECWU9n+ndjhT0p/4wuHkRovarHYlR6NcwkJx8HSuPGXlj4bA54FYRgpo/8GmnLp3x/e47sk+dInrYcArSjKdpa0lYcDASGwszeob6qR2KcDdHH6jWWamyma+f6cW+9r7Maz8PV2tXRm4dydEEdS++9MnCTEPfhgHsvphEVLIRj9KnRitrMUMGgXnx18fqcnOJfe11MrZtx+v993EbMqT4MRqQPK2OZWExPF/Ni3LONmqHI9ytVi+lPoKKBVhWXFzBB/s/oLFPY359/ldsLWxVi8UYFDfJ+xJoI0nSJaB14c9IklRfkqQ7iw9eAloAQx7QKuEvSZJOA6cBd+DTYsYjmLIaPcDaSW93wk1dLT8n6vg58dfhaGRjHf2MPwGxR6DBy0ql1YdwbN8Ov59/IjcigqihQ9HeKptrN1Oz8lh9Ip7u9XxxsrFQOxzhv+oPV9YVn12lt11623kzr/08fOx8GLNtDAfjD+pt32rr2zAAjSSxyJiLSIXPU85doUOKvStdTg6xr44lY/duvKdOxXVA/2Lv09BsOpvAzYw80TbBEFk5KIXwzv6jSn2EpeeXMvXgVJr6NuWX53/BxlzcBHicYiV5siwny7L8vCzLlQqndaYUPh4my/LLhd//KcuyxV1tEv5tlSDLcitZlmsVTv8cIMuymGslPJylLdTpB+fWQIZYl1kU/RsHculGBkcjjTTpOToTLGyVsuOP4dCqFX7TfiPvylWiBw9Be9MEmyk/xvLwWHK1OgY2FgVXDFL5FuBWCcJm63W3HrYezGk3B39Hf8ZuH8ue2D163b9avJ2saVvdi6VhMeTkP337CdVo8+DYAqjUDpz9i7UrXVYWMaNHk7l/Pz6ffYpLn96Pf5ER+vNQFAGutrSoJJblGKQGw5X6CMf/KtXDLji7gE8Pf0pLv5b8/NzPWJmJOo1FIVa0Csal/lDQ5cOJ0j3BGKsutcvhYG1unAVYslLg9HKlsqqNc5FeYv/MM/j/Pp286GiiBg0mP9EEijYUkU4ns/BQFPUDXaheTlQZM0iSpFwkxR5VRqn1yM3GjTlt5xDsHMy4nePYHr1dr/tXy8DGgaRm5bP+1PXHb2xoItZAZpIyE6EYCjIyiB4xkqzDR/D54nOce/bUU4CG5WJiOkeupdCvUQAajVhPbJC8a0FAE+UGrE73+O31YMapGXwT9g1tAtvww7M/YGkm2gIVlUjyBOPiUUUpQx0+t9ROMMbMxlJpLLzxzHVuZhhZY+ETfyl3DBuMeKKX2TVpQsDMGWgTEogaNJD860Z4cfgU9lxKIio5i4FNxCieQavTF8xt9D6aB+Bs7cysdrOo7lqdN3a9waZrm/R+jNLWJNiNCh52xlmAJWwOuARBcKun3kVBairRQ4eRffIkvt9/h3P37noLz9AsOhyNpZmGF8V6YsPWcATcioTL20r0MLIs8/Oxn/nl+C90rtCZr1t8jYWZWIbwJESSJxif+kOVE8zVnWpHYhT6Nwogv0BmebgRFWDR6ZSKdAFNwLvmE7/ctkED/GfPoiA5hagBA8mLMaGmyg/x56Eo3O0t6VDTR+1QhEexcVYKGJxeXiKNhR0tHZnRdgZ1POrwzt53WHtlrd6PUZokSWJg40BOxKRyOtaIiirdiFCKhIUOBc3TXWppk5OJGjyE3PPn8fv5Zxzbt9dzkIYjK0/LivBYOtbyxs1eTMUzaFW7gL2XMppXQmRZ5puwb5h5eiY9K/Xks+afYa4xL7HjmSqR5AnGp1oXsHUXBViKqJKXA43KK42FdcbSWPjyNiWRb/hko3h3s61Xj4C5c9FlZBDVfwC5V67oLz4DE5OSxfbzN+jTIABLc3FaN3gNXob8rBLr+2lnYcf01tNp4NWA9/a9x/KLyx//IgP2Qoif8fX9PDobzCyh3oCnenl+4g2iBg4iLyoKv9+n49DqOT0HaFjWnIgnPVdLf7Ge2PCZWyo3Ly5thWT9/17VyTo+PfQpC88tpH+1/nzY5EM0kvi99jTE35pgfMytlF+cFzZAqumP0OhD/8aBRKdksfeykRQjOTpTuVNYzL5SNrVqErBgAbJOR9SAgeREROgpQMPy12Glr1Q/UZHOOJSrC76hypTNEqp8a2thy6/P/0pz3+Z8dPAj5p+dXyLHKQ1ONkrfz9Un40jLMoK+n7kZSgJfowfYuT/xy/Pj4ogaOBBtQgIBM2dg36xZCQRpOGRZ5s/DUVTxcqB+oIva4QhFEToENPrr+3lHga6AD/Z/wLKLyxhWcxjvNHhH9HstBpHkCcbpzkL2o7MevZ0AQLsaXrjZWRrHnfCUa8odwtAheukrZV2lMoELFyBZWxM1eAjZJ04Ue5+GJCe/gGVhMbSpLvpKGZUGLyt9PyP3ltghrM2t+em5n2gT2IZvw75l+onpRttOZUBjpe/ncmPo+3n6b8hLV1pmPKG8yEgiBwykIDWVgLlzsG3QoAQCNCwnY9M4E3ebAY0DxAW9sXD0UWZVHV8IeVl62WW+Lp9Jeyex5soaxtQdw/iQ8eLzUEwiyROMk7M/VO0Mx+brrbGwKbMyN6NvwwC2RSQSk6KfE3KJCZsNkkYvfaXusCpfnqA/F2Lm4kzUsOFkHjqst32rbcPp66Rk5jGoSZDaoQhPokYPsHFRpvWVIAszC75u8TVdg7sy7eQ0vgv7zigTvRrlnAgJcObPQ1GGPe1clpVzmFdN8G/4RC/NvXyZyIEDkXNyCJw/D5s6dUooSMPy16EobC3N6F7PV+1QhCfRcCTkpCk3NYoptyCXiTsnsilyExNDJzK6zmiR4OmBSPIE49VolNKQUw8nmLJgQONANJLEgoORaofycHlZcGyhcofQsZxed23h60vgwoVY+pYjZtQoMnbv1uv+1bLgYBQVPOxoGuymdijCk7Cwgbr94fw6SE8o0UOZa8z5pNkn9KnSh/nn5vPJoU/QycZXnXhgk0Cu3czkwJVktUN5uNijkHAa6g9TWmYUUfbpM0QNGAhA4MIFWFerVlIRGpTUrDzWnoqnW11fHKxF5USjEtBEuZlxZGaxpp1n5mcyZtsYdsXu4r1G7zG05lA9Blm2iSRPMF6BzZQTzOE/SmxdiynxdrKmQ01vlhyNITNXq3Y4D3ZmBeSkFqvgyqNYeHoSsGABVsHBxIx9jdubNpfIcUrL6dg0TsSkMrBxoLjraYzqDwOdVmmYXcI0koZ3G73L8JrD+fvi37y77120OgM9DzxEh5o+uNpZsvBQpNqhPNzR2WBpr/T3LKLMI0eIHjIEjZ0dQX/9hVXFiiUYoGFZfCSGnHwdg0TrF+MjScq088TTEPN0s2PSctMYuWUk4YnhfN78c/pU7aPnIMs2keQJxkuSlNG8xDMQdUDtaIzC0GblSc/R8s/xOLVDuZ8sKwVXPKopCXwJMXdxIWD+PGxq1SJu4kRSV64qsWOVtIWHIrG1NKOn6CtlnNyClR5qYXOhoOQTLkmSGB86ntfrvc76q+t5Y9cb5BXklfhx9cXawoyX6vuz9Vwi19MMcJp+RhKcXQl1+oCVQ5Fekr5rFzEjRmLu7U3gor+wDCg7xZO0BToWHoykabAb1Xwc1Q5HeBq1XwIrJzgy44lfejP7JkM3DyUiJYLvn/2eLsHFK7Qm3E8keYJxq/Wisq7l8O9qR2IUQgKcqe3nxLz91wxvXU5sGFw/CQ1ffqJpTk/DzMGBgFkzsWvciOuTJ5OyoORHUvQtNSuP1Sfi6V7PF0cxzcl4NXgZ0uPhwvpSO+SI2iOY1HASO2J2MHb7WLLyDXyd7l36NwpABhYfjlY7lPuFzYGCXGg4qkibp61bT+zY17CqWJHAPxdi4eVVwgEals1nE4lPy2Fos/JqhyI8LUs7pdr5udVPNO08LiOOQRsHEZsey7TW02gV0KoEgyy7RJInGDcLGwgZrKxrEe0UHkuSJIY2C+JKUiZ7LxlYO4WjM8HSAWr3LpXDaWxt8fv9dxzatCHx8y9I+vlnw0t8H+HvsFhytToGir5Sxq1ye3AOgEPTS/Ww/av15+OmH3M44TAjto4gLdc4Go37u9ryXBVPFh2JIU9rQOsKtblKteeKbcCj8mM3v7VkKfFvvaX085w/D3OXstc6YM7+awS42tKqqqfaoQjF0WC4Mu08vGhtWq6mXWXwxsGk5qYyo80MGvs0LuEAyy6R5AnGT7RTeCIda/ngbm/FvAORaofyf3emOdXtV+RpTvqgsbTE94fvcer5AjenTSfxk0+RdQZ04fgQOp3SV6pBkIuY5mTsNGbQ6BWIPghxx0r10D0q9eC7lt8RkRzBkE1DuJF1o1SP/7QGNgnkZkYuG05fVzuU/zvzD2TegMajH7tp8qxZJEydin2LFvjPnIGZvX0pBGhYTsWmEh51i8FNgzDTiPXERs0tGCq2LhzJfnQfy4jkCIZuGkq+Lp+57eZS17Nu6cRYRokkTzB+zv5QtZNop1BEVuZm9G8UwI7zN7h2M1PtcBTH5kNB3v8T9lIkmZvj8+mnuA4bxq1Fi4h/+x3kfMNuuLznUhJRyVkMFG0TTEO9gcoodimP5gG0DmzNtNbTiM+IZ9DGQUTfNsBpkP/RspIHwR52zNp31TBG32UZDk0D9yrKGsuHbiZz44cfufHtdzh27Ijfr7+gsbYuxUANx9z9kdhbmfNSfbGe2CQ0GAEZCcqsqocISwhj+ObhWJpZMr/9fKq4VinFAMsmkeQJpqHRK6KdwhPo3zgACzOJ+YYwmlegVQpPlG9ZpGlOJUGSJDzfehOPiRO5vW4dsWNfQ5dtuDcM5u6PxMPBivY1vNUORdAHa0dlXcvZf+B2fKkfvrFPY2a3m01mfiaDNg7iQsqFUo/hSWg0EsOal+dM3G2OXEtROxyl8FfCKWUU7yHrieWCAhI+nEryH3/g3Ls35b75GsmibK6lvXE7h3Wn4ukV6ifaJpiKSm3AOVBpp/AAO6J3MGrrKNxs3FjQfgFBTkGlG18ZJZI8wTSIdgpPxNPBms61y7E8PJb0HJVHrS5uhNuxJdY2oagkScJ95Ai8p04lY88eol8eQcHt26rG9CAXE9PZfTGJwU0CsTQXp3CT0WgU6ApUm3Ze070m89vPx1xjztBNQzmWWLpTR5/UC/X8cLa1YPa+a2qHoozi2bg8dD2xLjeXuPETSF22DLeRI/Ge+iGSmVkpB2k4/jwUhVYnM6RpkNqhCPqiMVNm4kTth8Sz9zy18tJKJuyaQGWXyizosAAfex+Vgix7xBWCYBokCRqOFO0UnsCQpkFk5GpZHh6rbiAHflUKT1TuoG4chVz69Mb3u2/JPnWKqEGD0d40rAI1s/dew9pCQ/9GouCKSXEtr0w7D5sDeepUu6zgXIGFHRbiZuPGqK2j2BO7R5U4isLG0owBjQLZGpFIpJrTzlOuwfn1EDoULG3ve7ogI4OYESNJ37oVr3cn4zlxQpnuaZmTX8Bfh6N5vqonQe52aocj6FO9AWBufU87hTln5jDlwBQaeTdidrvZuFiXvQJDahJJnmA6RDuFJ1LH35mQAGfmH4hEp1Np9DPmKMQcgsavgpm5OjE8gGPHjvhPm0ZeVBSR/fqTF20Y65SS0nNZeTyOXqF+uNhZqh2OoG+NxyjTzk8tVS0EH3sf5neYT3mn8ozbMY71V0uvtcOTGtQkEHONpG4RqSMz/z+K8R/amzeJGjSIrGPHKPfNN7gOGqRCgIZl7cl4kjPzRNsEU2TrqvTNO7kEXcYNvgv7jh/Cf6B9UHt+e/43bC3uvwkilCyR5Ammw9JWtFN4QkOalScyOYtdF1WqqnfwF7B2Uu4AGhj7Z5oTOHcOutu3iezbj+wzZx//ohK28FAU+Todw8QFkmkKbAo+dZQCLCpOO3e1dmVOuznU86rHpL2TmH+2aKXRS5unozVd6pRjWVgMadkqTDvPuQ3HFkD17uDke89TeTExyg2ia5H4T5+GU5fOpR+fgZFlmbn7I6ni5UDTYDe1wxFKQpOx5Gtz+GDTCOadnUffqn35qsVXWJiJtZdqEEmeYFoaDFf+DJutbhxGokNNb7wcrZi7P7L0D55yDSLWKtOcrAyzhLhN3boELlqExsqK6EGDyNi/X7VYcvIL+PNQFM9X9aKCh2H+fQnFJEnKaN7NC3B5u6qh2FvaM731dNoGtuXbsG/55ug36GTDay8yvHl5svIKWHJEhdH2E4sgL135N7tLTkQEkX37oUtLI3DeXOyfeab0YzNAh6+lcO76bYY0CyrTU1ZNWbZLABMqVGdN5lVerTWKyQ0no5FEqqEW8TcvmBbnAGVdS/g80U6hCCzMNAxsHMjeSze5fCO9dA9+aDpIZkrBCQNmVaE8gYsXY+HvT8yoV0hbu1aVOP45FkdKZh4jnhGjeCatxgtg760U81CZlZkV37T8hn5V+7Hg3AIm7Z1EXkGe2mHdo0Y5J5pUcGP+gUjyC0oxCdUVKEsD/BqCX+i/D2ceOULUwEFIFhYELvoLmzp1Si8mAzd3/zVcbC3oUc/38RsLRic1J5WRW0ayR87k/ZspvKKzFcm8ykSSJ5ieO+0UTi1TOxKj0LdhAJbmmtJd15J9C47/CbV6gWO50jvuU7Lw8iTwz4XYhoQQ/9bbJM+ZW6rH1+lkZu27Si1fJxqWdy3VYwulzNwSGr4MV7bDjfNqR4NG0jCp4STGh4xn47WNjNk2hoy8DLXDusfw5uWJT8th45mE0jvoxc1w6xo0+f8o3u2NG4kZ/jLmXl4ELfoLq+Dg0ovHwMWkZLH1XCJ9GwZgbVF2K4uaqtj0WAZuHMi55HN82/IbejtUVoqq6QrUDq1MK1aSJ0mSqyRJWyVJulT45wPL5kiSVCBJ0onCrzV3PV5ekqTDkiRdliRpqSRJopKAUHyBzcC7Fhz8FXSGN73I0LjZW9GtTjlWhMeV3rqWsLmQnwlNxpbO8fTAzMEB/1kzcWjfnhtff03il18hl9Lna+eFG1xNyuTlZ8qLO6NlQegwpUrd4dJvjv4gkiQxvNZwPmv+GeGJ4QzZNISkrCS1w/pXq6qelHe3Y/beUmyOfmgaOPpB1S7Iskzy3HnETZiIde3aBP31JxY+okz83eYfiESSJAY2EVWBTc3Z5LMM2DCAlJwUZrSdQdugdtD0NUi5Ahc2qh1emVbckbxJwHZZlisB2wt/fpBsWZbrFn51vevxr4AfZFmuCNwChhczHkFQ1rU0Gw83L8KFDWpHYxSGNAsiO7+ARYdLYV2LNk/pZ1jhOfCuWfLH0yONpSW+332LS//+pMybR/zb7yDnlfz0tVl7r+HjZE3HWuLCsUywc1N6rp1cApnJakfzr67BXfnl+V+ITo9m4MaBXEszgB51FDZHbxbEydg0wqNulfwBE05D5F5oNBIZicQvvuDGV1/h0K4dAXNmY+bsXPIxGJHMXC1Lw2LoUNMbHycbtcMR9Ghf3D6GbhqKpZklCzssJNSrcOpyta7K8pkDv6gbYBlX3CSvG3Cn7NZ8oHtRXygpt6NbAcuf5vWC8EjVu4NzIOz7QTRHL4Ia5ZxoXtGdOfuvkZNfwtMrziyHjARoajyjeHeTzMzwev89PCZO5Pa6dUSPGElBWlqJHe9MXBoHryYztFkQFmZihn2Z0Xg0aHMgfI7akdyjuW9z5rabS7Y2m0EbB3Hixgm1QwKgZ6gfTjal1Bz90O9gYYuuem/iJkzk1oKFuA4ejO8P36Oxsir54xuZFcdiSc/RMqy5WE9sSlZeWsnY7WMJdAzkz45/UsG5wv+fNDNXWiPFHIKYI+oFWcYV94rBS5bl64XfJwBeD9nOWpKkMEmSDkmS1L3wMTcgVZZlbeHPsYBYjSvoh5m5Ml0gLgyi1KuIaEzGPBtMUnouK46VYHN0WVbm6XtWh+DnS+44JUySJNxHjqDc11+RdeyYUio9Nq5EjjV73zXsLM3o3SCgRPYvGCjPahDcCo7MUka/DUgN9xos7LAQB0sHhm8ezubIzWqHhK2lOf0aBbD5bAIxKSXYTD4jCU4vQ1upF9FjJipNzidPwmvyJCSNuAnzX9oCHXP2XSvsyyoaYZsCWZaZfnI6Uw5MoaF3Q+a2m4unref9G9YboLRIEqN5qnnsGUmSpG2SJJ15wFe3u7eTlYnwDxsyCZRluT7QD/hRkqQnXo0sSdLIwkQxLCnJcNYCCAas3gCwdYd9P6odiVFoEuxGHT8n/th9FW1JVam7sgNunFXW4pnA2jKnrl0JmDULbVISkX36kH36jF73fz0tm7Un4+ndIAAnG9FnqMxp/Koy6n12pdqR3CfAMYA/O/5JdbfqvLn7TeacmVN66+EeYnCTIDSSVLItYcJmk5dWQNTMCHLOnsX3hx9wHTy45I5n5DacSSAyOYvRLUURGlOg1Wn56OBHTDsxja7BXfmt9W/YWz6kpY+VPdQfrrRKSrlauoEKQBGSPFmWW8uyXPMBX6uBREmSfAAK/3xgR2VZluMK/7wK7ALqAcmAsyRJ5oWb+QEPvRUuy/IMWZbry7Jc38PD4wneolBmWdhA41fg8lZI0O/FtymSJInRz1YkOiWr5KrUHfhFKQ9fq1fJ7F8Fdo0aErRY6aUXNWgQ6Tt26G3f8w9EoZNlhjYL0ts+BSMS3ArcK8Oh3wxy2rmrtSuz2s2iXVA7fgj/gU8OfYJWp338C0uIt5M1nWv7sCwshts5JVBEKjeD7PV/ELnTF+3tDALmzsGxfTv9H8dEyLLMtJ2XqehpT9vqD5voJRiLjLwMxm4fy4pLKxhZeySfNvsUC81jbj42GgVmFnBQ/ZYwZVFx5xasAe7cwhoMrP7vBpIkuUiSZFX4vTvQDDhXOPK3E+j1qNcLQrE0eBks7WH/j2pHYhTaVvci2MOOabuu6P+ufMIZuLoTGo0Ec9Nat2IVHEzQksVYBQcT++pYUhb+Wex9ZuZqWXQ4ig41ffB3tdVDlILR0Wigyatw/aQyCm6ArMys+LrF1wyrOYy/L/7N2B1jyczPVC2e4c0rkJGrZdnRGL3v+/aM94naYInGwZmgxYuwDQ19/IvKsB3nb3A+IZ0xzwaj0Rj/zI2yLD4jnoEbB3L4+mE+bPIhr9V7rWiVnh28ofZLSsukrJSSD1S4R3GTvC+BNpIkXQJaF/6MJEn1JUmaVbhNNSBMkqSTKEndl7Isnyt87h1goiRJl1HW6M0uZjyCcC8bFwgdAmf+gVtRakdj8DQaiVdaBhNx/Ta7L+p5WvTB38DCDkKH6ne/BsLcw4PABfOxb9WKxM8+I/GLL5ELnr6Izd9hMdzO0TJcND8v2+r0BUdf2POt2pE8lEbSMCF0Ah82+ZBD8YcYvHEwCZml2LPuLrX8lF6Sc/ZdI0+rn2nnsixz8/fpxP22GWsvG4KWr8SqQoXHv7AMk2WZX3dexs/Fhi51DL8XqvBwp5JO0Xd9XxIzE5neZjq9Kj/hTJwmY0GbDUdnPX5bQa+KleTJspwsy/LzsixXKpzWmVL4eJgsyy8Xfn9AluVasizXKfxz9l2vvyrLckNZlivKsvyiLMu5xXs7gvAATV4FSaP0zRMeq1tdX3ycrJm264r+dnr7Opz+u3CdpOk289bY2uL380+4DBxIyvz5xI4bhy7ryYtAFOhk5uyPJDTQRRQrKOvMraDZOIg+AJGGXUSqV+Ve/Pb8b8RmxNJ/fX/Op6jTzH3Ms8HEp+Xwjx6KSMl5eVx//32SfvwZx4AsAqZ9i7m7ux6iNG2HrqZwPDqVUS0qiKrARmxz5GaGbR6GjbkNf3b8k8Y+jZ98J57VoFJbpXVSfo7+gxQeSvzPE0yfYzml59SxhZB5U+1oDJ6luYYRz1TgyLUUwqP0NL3iyB8gFyhl4U2cZGaG93vv4vXuZDJ27CSy/wDyr19//Avvsv70daJTsnhZlBwXAEIGgZ0H7PlG7Ugeq5lvM+a3n48kSQzeOJhdMbtKPYaWlT2o7efEb7suk1+MIlIFqalEvzyCtBX/4B4iUe7FSmiqGG9V4NI0bddl3O2teLG+v9qhCE9BlmVmnZ7Fm7vfpJprNRZ1WnRvi4Qn1fQ1yLoJp5boL0jhsSS1q2E9jfr168thYWH3PJafn09sbCw5OWXvLoG1tTV+fn5YWIjqew+VdAF+awQt3oJW76kdjcHLytPS7MsdhAa6MGtwg+LtLOc2/FgTKjwLLy3QS3zGImP3buImvoFkY4P/b79iU6fOY1+j08m0+3EPkgSbxrUQa1kExf6fYOsUeHk7+NVXO5rHSsxM5PWdrxORHMH40PEMrTG0aGt49GTbuUReXhDGty/WoVeo3xO/Pi8ykphRr5AfH4/PiI44pUyHfsugsii08jinYlPp+ut+JnWoyiuiqqbRyS/I56ODH7H6ymo6lO/AJ80+wcqsmOvoZRlmtIS8LHj1iLLeWNALSZLCCzsY3Mf8QQ8ao9jYWBwcHAgKCirVXyRqk2WZ5ORkYmNjKV9e3PV/KI8qULUTHJmhTH2yekjJXwFQek4NaVqeH7Zd5EJCOlW8HZ5+Z0f+gJw0aDZeb/EZC/uWLQlaspiY0WOIGjgIn88+w6lL50e+ZsOZ61y6kcEvfeuJBE/4v/rDYN8Pytq8foZ/N9zLzot57efxwf4P+CH8B66kXmFKkynFv1gsouereVLdx5FpOy/To54vZk/wfynz8BFiX38dSaMhYM5sbA+9At61lClnwmNN23kFR2tz+jcSvT2NTWpOKhN3T+RowlFG1xnN6Dqj9XNNLUnQ9HVYMRwublSux4QSZzKpdE5ODm5ubmUqwQOl7L2bm1uZHMF8Ys3GQ04qHJuvdiRGYXDTQGwtzfh9dzHW5uXcVpqfV24PviH6C86IWFWqRNDfy7CpXZv4t97ixo8/IusePIVMp5P5efslKnra07GWTylHKhg0KwdoPEa5QLp+Su1oisTG3IZvWnzDq3VfZc2VNQzfPJyb2aUzZV6SJF5rVZGrNzNZdyq+yK+7tWwZ0S+/jLmbG0HLlmJrEwPJl+GZN0yit2dJu5SYzqazCQxpGoSDtZhdZEwu3rpIn/V9OHHjBJ83/5wxdcfo95q6endwKQ+7vzLIljCmyGSSPKDMJXh3lNX3/cT8G0Bgc6XKozZP7WgMnrOtJf0aBrDmZDwxKU9ePARQFlrnpMKzk/Qam7Exd3EhYM5snHr1JPn3P4gbN/6BBVk2nU3gYmIGr7Wq+EQjD0IZ0XAkWDnC3u/UjqTIJEnilTqv8F3L77iQcoG+6/sSkRxRKsduV8Obyl72/LrjMjrdoy8q5fx8Ej7+mIQpH2LXsCFBSxZj6ecHe78Ht0pQrWupxGzspu++go2FGUOaiZlFxmR79HYGbBhAXkEe89rPo0twF/0fxMwcWr6ttIS5sEH/+xfuY1JJniGZOnUq336rlLyeMmUK27ZtK9b+CgoKqFevHp07P3qql/AYzcfD7Til0qPwWMOfKY9Ggpl7rz75i3PSlIqmlTtAuXr6D87ISJaW+HzyCV6TJ5G+fTuRA+4tyHJnFC/Yw47OtUXJceEBbJyh4Qg4t1pZZ2xE2ga1ZX6H+ciyzOBNg9kWVbzfiUWh0UiMbVWJSzcy2HT24S0dtCkpRA8dxq1Fi3EdNgz/P37HzNERLm6GxNPwzETQmJV4vMYuJiWL1Sfi6dcoAFc7S7XDEYpAJ+uYfnI643eOp6JzRZZ0XkJtj9old8BaL4FrMOz8Ah4yo0XQH5HklYKPP/6Y1q1bF2sfP/30E9WqVdNTRGVYxdbgVVMpYiBOMI/l42TDC/X8WHo0hpsZT9jhRIzi3UeSJFwHD8b/9+nkR0VzrdeLZB09CsCWcwmcT0jntVaVxCie8HCNx4CFjTLCZGSqu1VncafFVHKuxIRdE5h+cjo6uWTPw51q+VDBw45fdlzmQYXmciIiuNarF9mnTlHu66/wevstJHNzZTrZ3m/BOQBqvViiMZqKGXuuopFgxDOih6AxyMrP4s3dbzLtxDS6VOjC3PZz8bT1LNmDmplDy3eUmyfn15XssQSR5OnTZ599RuXKlWnevDkXLvz/LuuQIUNYvnw5AEFBQUyePJm6detSv359jh07Rrt27QgODub3339/4H5jY2NZv349L7/8cqm8D5MmScravJsXIGKN2tEYhZEtK5BXoGPu/mtFf9GdUbwqHaFc3RKLzVjZt2hB0LKlmDk6EjV0GMnzF/DTtktUcLcTjYOFR7NzV4qwnP4bUp5ihF1lHrYezGk/h84VOjPtxDTG7xxPel56iR3PTCPx6rMVibh+m20RN+557vbGjUT27QcFOgL/+gunrndNyby2B2KPKoW6zMTasse5kZ7D0rAYeoX64e1krXY4wmPEZcQxcONAtkdv5836b/JZ889KrSgStXopU6B3idG8kmYy1TXv9tHas5yLv63XfVYv58iHXWo89Pnw8HCWLFnCiRMn0Gq1hISEEBoa+sBtAwICOHHiBBMmTGDIkCHs37+fnJwcatasySuvvHLf9uPHj+frr78mPb3kfhGWKTVfUPpN7fwMqnZW7iwJDxXsYU+Hmt4sOBjFyBbBONkU4YLncGFFzZbvlHyARsoqOJigZUuJf2cSN774go7+ofh98pEYxRMer+lrcGQm7PsRuv6sdjRPzMrMis+bf04Ntxp8G/Yt/db348fnfiTYuWTK7XerW46ftl/i5+2XaF3NE3Q6kn76meQZM7CpVw+/n3/C3MPj3hft/RbsvaHugBKJydTM3ncNbYGOUS1EywRDdzThKG/segOtrGXa89No5tusdAPQmCkzfFYMh4jVUKNH6R6/DBEjeXqyd+9eevToga2tLY6OjnTt+vBF2neeq1WrFo0aNcLBwQEPDw+srKxITU29Z9t169bh6en50IRReAoaM2j1Pty8KBpzFtGrz1UkPUfLjD1FqLSZnVo4itdJjOI9hpmDA76//Mymhl1pFXOMOl+9RX5cnNphCYbOwVtpkH5iEaTGqB3NU5EkiQHVBzCz7Uxu592m3/p+bI3aWiLHMjfT8OpzwZyOS2P3savEjnmV5BkzcH6xFwHz592f4MUcUUbymr4GFmJU6nHSsvL561A0nWqXI8jdTu1whIeQZZn5Z+czYssInK2dWdRxUekneHfU6AHuVWDXl6ArUCeGMsAkhzAeNeJmCKyslCFxjUbz7/d3ftZqtfdsu3//ftasWcOGDRvIycnh9u3bDBgwgD///LNUYzY51bpAuRDlBFPrRTAvpWkKRqpGOSe61inHnH2RDG4ShKfjIy587oziPStG8Ypi+4Wb/FSuBdXebEj5P77iWs9e+P74A3aNG6sdmmDImo2D8Llw4Gfo+I3a0Ty1Bt4NWNp5KW/seoOJuyYyrOYwXq/3OmZ6LnTSo54fK5ftxGL0EDKyU/Ga8gEuffs+uDr1nm/BxhXqD9VrDKZq9v5rZORqGfOsGMUzVBl5GUw5MIWtUVtpHdCaT5p9gr2liv2C74zmLR8KZ1cqUzgFvRMjeXrSokULVq1aRXZ2Nunp6axdu1Yv+/3iiy+IjY0lMjKSJUuW0KpVK5Hg6YMkwfNTIC0GwuaoHY1ReKNtZfILdPy849LDN8pOVVpUVO0MPnVKLTZjJcsyP22/SKCbLa2H9qD838swc3cjethwkufMfWChCEEAwNkf6vSF8PmQnqh2NMXibefN3PZz6VW5F3POzGH0ttGk5qTq9RhZq/7hg43focvLJ+3zX3Dt1+/BCd71k3Bps1LgxlKMSj3OjfQcZu29SqfaPlTzcVQ7HOEBLt+6TN/1fdkRvYM367/J989+r26Cd0f17uBZXembJ0bzSoRI8vQkJCSE3r17U6dOHTp06ECDBg3UDkl4nArPQtAzyl3b3Ay1ozF4gW529G0YwJIjMUTezHzwRod/h1yxFq+odpy/wZm427z6XEXMzTRYBgURtGQpDq1bc+Prr4kbN54CsRZXeJjmE0CXr4zmGTlLM0s+bPIhU5tMJSwxjN7renM2+Wyx96vLySH+vfe4/v4H2NUP5eOuk/g+/hEzN7Z+CDYuSqsK4bF+2naJPK2Ot9pWUTsU4QE2XN1Avw39SM9LZ2bbmQyuMdhweitrNMpo3s2LcGaF2tGYJMkY7xTXr19fDgsLu+exiIiIMt1ioKy//6cWcxRmt4bn3oeWb6kdjcG7kZ5Dy6930bq6F7/0/U/vu+xU+LE2lH8G+vylSnzGRJZluv22n1tZeex441kszDT3PJcyZy43vv8ei3Ll8P3xB2xqGPY0dEElq8YolTbHhoFLoNrR6MXppNNM2DWBlJwU3mrwFn2q9HmqC9O86Ghix40nNyICt9Gv4DF2LPMORfPR2nMsGdmYxhXc7n3B5e3w5wvQ7gtoMkZP78Z0XU3KoM0Pe+jfKICPu9VUOxzhLvkF+Xwb9i2Lzi8ixDOEb1p+U/LtEZ6GTgd/PAP52fDqEVEI7ylIkhQuy3L9Bz0nRvKEss2/gVIg5MDPkJWidjQGz9PBmuHNy7P2ZDxn4tLuffLQdDGK9wR2XUjiVGwaY5+reE+CB0pRCrfhwwhcuBA5P5+oPn1JWbRITN8U7vfceyBpYMcnakeiN7U8avF3l79p7NOYzw9/zhu733jiNgvpO3ZwrWcv8uPj8ft9Op7jxiGZmdG3YQCeDlZ8ten8vf+fdAWwdQo4B0KD4Xp+R6bpm80XsDbX8PrzldQORbhLQmYCQzcPZdH5RQysPpBZ7WYZZoIHhaN5kyHlinKzStArkeQJQqv3ITcd9v2gdiRGYWTLCjjbWvDN5v/3giQ7VUnyqnYGn9qqxWYsdDqZH7ddxM/FhhdC/B66nW1IPcqv/AfbJo1J/PgT4t94g4IMMbVYuIuTLzQZq1wgxYWrHY3euFi78OvzvzIhdAI7onfw0tqXijR9U87P58a33xI75lUs/f0pv2I5Ds8+++/z1hZmvNm2CsejU1l36vr/X3hqKSSegdYfikJcRXAs+hYbzyQwokUF3O3F35eh2B2zmxfXvsjFWxf5puU3vN3gbSw0Bt7nsWon8K6trM0r0D5+e6HIRJInCF7VofZLcGQG3L7++O3LOEdrC8Y8G8zui0kcvJKsPHhomjKK9+wkdYMzEqtPxnEyNo3xrSvfN4r3X+YuLvj//jseEydye/MWInv2IiciopQiFYxC8/Fg5wFbPgATGu3VSBqG1RzG3PZzydflM3DDQBafX/zQEe28mBgi+w8gedZsnHv3JnDxIiz97r+J0jPUj2o+jny58Tw5+QXKVLEdnyoVl2u8UNJvy+jJssyXG87jbm/FiGcqqB2OAOQV5PHVka8Yu2Ms3nbeLOu8jPZB7dUOq2gkCZ57F25dE22t9EwkeYIAynQBnRb2fK12JEZhUJMgfJyslSlPabFw4Beo3g28a6kdmsHLytPy1cYL1PZz4oV6vkV6jaTR4D5yBIHz56HLziaydx9uLVkqpm8KCisH5RwWtR8ubFA7Gr2r51nvsdM309at51r3HuRdu4bvjz/g89FUNFYPHmEy00i836kacanZzN0fqcxCuB0HbT9VLjiFR9px/gZHIlMY17oSdlZiDZXaom5HMWDDAP6M+JP+1frzV8e/CHIKUjusJ1O5PZSrp4zmafPUjsZkiCRPEABcy0PoEDi2AFKuqh2NwbO2MGN860qciEnl+vJ3lPUsbT5WOyyj8PvuqyTczmFK5+poNE92QWlbv74yfbNBAxKmTiXu9dfR3rpVQpEKRiVkMLhXVtaVFeSrHY3e3Zm+OTF04r/TN08mnUSXmUn8u+8R/+abWFWuTIVVK3Fs//gRjGYV3WldzZNFO4+h2/s9VOkIQSo1hjYiBTqZrzadp7y7HX0a+KsdTpm39spaXlr7EvGZ8fz83M9MajgJSzNLtcN6cpKkLJ1JjYbD09WOxmSIJE8Q7mjxFmgsYOcXakdiFHqG+NHVJZpyMevQNXkNXILUDsngxaVm88fuK3SpU476Qa5PtQ9zNzf8Z87A8+23Sd+1m2vdupN54ICeIxWMjpk5tPkEki9D+Dy1oykRGknD0JpDmdt+LjpZx5R5AznepQ1pK1fiNvoVAhcuwMK3aKPjAJM7VmO4bjlyXha0nlpygZuQFcdiuZiYwVvtqjx2qrlQcrLys3hv33u8u+9dqrpWZXmX5TwX8JzaYRVPxdbKiN7uryE9Qe1oTIL4H1pCpk6dyrfffgvAlClT2LZt21PvKygoiFq1alG3bl3q139glVRBHxy8odEopYBBYvH7M5k6c0nmE6sFxMuurLR/Se1wjMKXG88DMKlD1WLtR9JocBs2lPJLl6Cxtyd62HASv/oaXZ6Y5lKmVW6n9P7c9QXkpD1+eyNV16Muc9Nf5LP5BeTcvsXCVyqSO/QFJPMnmzoYrElkoNlWlhY8y0VduRKK1nTk5Bfww9aL1PF3pkNNb7XDKbPO3DxD73W9WXtlLa/UeYXZ7WbjbWci/x7tPoeCPKVfpVBsIskrBR9//DGtW7cu1j527tzJiRMn+G9/QEHPmo0DK0fYLqYePtbxP3FKPccix5f5bmesUsBAeKjwqBTWnoxnVIsK+Drb6GWf1tWrU37Fclz69SVl7lwiX+pN7uXLetm3YIQkSVlXlpVsstWC8xMTiRkxkrSvvsPpmZZkzPqYXR436bW2FysvrXyydarbP0ZjYcVMs958tl4UM3qcufsjuZ6Ww+QOVQ2noXYZkq/LZ9qJaQzYMIAsbRaz283m1bqvYq4xoXWRbsHQ9DWlAEv0YbWjMXrFSvIkSXKVJGmrJEmXCv90ecA2z0mSdOKurxxJkroXPjdPkqRrdz1XtzjxqO2zzz6jcuXKNG/enAsX/l9efsiQISxfvhxQRuUmT57876jcsWPHaNeuHcHBwfz+++9qhS7cYesKz0yAi5vgwia1ozFc2alKIhzQhKbdRhKflsPCg1FqR2WwdDqZj9aew9vRmleeDdbrvjU2NnhPmYLf9Glob9zgWs9eoqdeWVauLtTuAwenQWqM2tHojSzLpK1Zw9UuXckKD8drygf4TfuNdnVfZEXXFdRwr8GUA1OYuGsiqTmpj99hzFE4twqp2Tj6P9+A3ReT2HXhRom/D2OVmpXHtF2XaVXV8/4m8kKJu5p6lQEbBjD95HQ6lO/Aym4raeDdQO2wSsYzb4BDOdjwprLeX3hqxU3/JwHbZVn+UpKkSYU/39MJWZblnUBdUJJC4DKw5a5N3pJleXkx47jXxkmQcFqvu8S7FnT48qFPh4eHs2TJEk6cOIFWqyUkJITQ0NAHbhsQEMCJEyeYMGECQ4YMYf/+/eTk5FCzZk1eeeWV+7aXJIm2bdsiSRKjRo1i5MiRentbwgM0fhVOLoENb0H5Z8DSTu2IDM/ur5XRgg7/0NTHgxaVPfh5+yW61i2Hl6O12tEZnH+Ox3EqNo0fetfB1rJk7ro6PPccNqtXEf/ueyR+/AkZO3fh88nHWHibyDQeoehavQ/nVikN0l+YoXY0xaZNSSHhw6mkb92KTb16lPvyCywDA/993sfeh5ltZjL/3Hx+Of4LJ9ec5NNmn9LUt+mDdyjLsPUDsPeCJmMZZGbLn4ei+HxDBM0rumMu1prd57edl8nI1fJ2+ypqh1Km6GQdiyIW8eOxH7Ext+G7lt/RNqit2mGVLEs7aPsJrBgOx+ZD/WFqR2S0insm6wbML/x+PtD9Mdv3AjbKspxVzOManL1799KjRw9sbW1xdHSka9euD932znO1atWiUaNGODg44OHhgZWVFampqfdtv2/fPo4dO8bGjRv57bff2LNnT0m9DQHA3BI6/wBp0Uo5X+FeSRfgyB8QMgh86gDwUdca5Bbo+GitWMv4X5m5Wr7edJ46/s50q1P0ohBPw9zDA/8Zf+D1/vtkhYVxtXMXUpcvF6N6ZY2zPzQeozT4jj+udjTFkr59O1e7dCVj1y4833yDwD8X3pPg3WGmMWNYzWEs6rgIB0sHRm0bxdQDU+9rtQDA+fUQfVBpO2Flj6W5hkkdqnExMYOlYaYz+qkvkTczmX8gip4hflT1dlQ7nDLjesZ1RmwZwVdHv6KxT2NWdltp+gneHTV7QmBz2P4JZKWoHY3RKu4tZS9Zlu90j04AvB6zfR/g+/889pkkSVOA7cAkWZZzixnTI0fcDIFVYe8ejUbz7/d3ftZqtfdt71tYLczT05MePXpw5MgRWrRoUTrBllWBTaHeADj4G9TuDV411I7IMMgybJoMFnbw/JR/Hy7vbse45yvxzeYLbD2XSJvqjzsVlB3Td13hRnouvw8MfeKWCU9DkiRcB/THvsUzXH//A66//wG3N25SRvXKieISZUbzCUpLmC0fwOC1Rtf/reD2bRI/+5y01auxqlaNcnPmYF2l8mNfV82tGks7L2XayWnMPzufvXF7+bDJh7TwK/ydqc2FbR+CexWoN/Df17Wr4UXD8q58v+UiXeuUw8HaoqTemlGRZZlJ/5zCylzDm23FKF5pkGWZ1VdW89WRr9DJOj5q+hE9KvYoW+sgJQk6fAV/PAM7P4dO36odkVF67EieJEnbJEk684CvbndvJyu3ih96u1iSJB+gFrD5rocnA1WBBoAr/5nq+Z/Xj5QkKUySpLCkpKTHhV3qWrRowapVq8jOziY9PZ21a9fqZb+ZmZmkp6f/+/2WLVuoWbOmXvYtPEabT8DaCdaOB51O7WgMw8VNcGU7PDsJ7NzveWrEMxWo4uXAlNVnyMi9/2ZFWRSTksWMvVfpXrccIQH3LVkuUZYBAQTMm4vXlA/IOn6cq126cmvpMjGqV1ZYOyr/TyP3QsQataN5Iuk7dnK1azfS1q3Dfcxoyi9dUqQE7w5rc2smhk7kr45/4WjpyKvbX+Xdve+SlpumTDVPvgztP1faThSSJIkPOlUnOTOPabuulMTbMkpLjsZw6GoK73aqhreTmIpf0mLSYxi1dRQf7P+Ayi6VWdF1BS9UeqFsJXh3eNeEBi9D2Gz9L8EqIx6b5Mmy3FqW5ZoP+FoNJBYmb3eSuEetWn4JWCnL8r9dWmVZvi4rcoG5QMNHxDFDluX6sizX9/DwKOr7KzUhISH07t2bOnXq0KFDBxo00M+C2MTERJo3b06dOnVo2LAhnTp1on0RGr0KemDrqlSqiz2izAsv67S5yiieexVoOOK+py3NNXz+Qi0Sbufw3ZYLD9hB2fPlxvNoJHi7ffFaJjwtSaPBtV8/KqxZjXWtWiR8+CExw4eTFxunSjxCKQsdokypXv8GZCarHc1j5d+4Qez4CcSOGYOZgwNBixfh8frrSJZP19y5pntNlnZeyqjao9h4bSPd/unE9mPToW5/pSfXf9Tyc+KFEF9m77tG5M3M4r4do5eQlsPn6yNoXMFVND4vYVqdlnln5vHC6hc4dfMU7zV6j7nt5+Ln4Kd2aOp6djJYO8OGt5WZRMITkYpzV1eSpG+A5LsKr7jKsvz2Q7Y9BEwuLMRy5zEfWZavS8otih+AHFmWJz3uuPXr15f/20ogIiKCatWqPfV7MXZl/f2XGFmG+V0g4RSMDQN7T7UjUs++H2DbVBjwD1R8/qGbfbDqDH8ejmLlmGbU9XcutfAMzeGryfSecYjxrSsxvnXRRyFKiizLpC77mxtfKetMPcaPw6VfvyfuLSYYmcSz8EdLqN4Ves1RO5oHknU6Uv9ezo1vv0XOzcV9zBjchg196uTuQc7fOM0H6wdwXqOjnf9zTG7yIW4291eJTLydQ5vvd1PZy4Glo5pgVgpTrA2RLMuMXBjOnotJbB7fgiB3UYCspEQkR/DhgQ+JSIngWb9nea/xe6bT904fwubCuvHQczbU6qV2NAZHkqRwWZYf2ES7uIVXvgTaSJJ0CWhd+DOSJNWXJGnWXQEEAf7A7v+8/i9Jkk4DpwF34NNixiMI+iVJ0Ol7yMuCze+pHY160hNgz7dQpeMjEzyAt9pXwdPBisn/nCa/oGxOc83K0zLpn9P4OtswqoV+WyY8LUmScOn9EhXWrsGmfiiJn3/BtRdfIvvECbVDE0qSVw1o+Q6cWQHnDG/aZu7Vq0QNGkTChx9iXa0a5Vevwv2VUXpN8ACqntvAoqhIXvNrx/a4vXRZ1YWl55dS8J8S7V6O1nzUrQZhUbeYtfeqXmMwJhtOJ7D1XCIT21QWCV4JydZm83349/Rd35cbWTf4tuW3/NzqZ5Hg/dedIm9bPoDcDLWjMSrFSvJkWU6WZfl5WZYrFU7rTCl8PEyW5Zfv2i5SlmVfWZZ1/3l9K1mWaxVO/xwgy7L41xMMj0dlpYjB6WVwZefjtzc1sgxrx0FBvjJ99TEcrS34qGtNIq7fZva+a6UQoOH5bH0EkcmZfPNibWwszdQO5x4Wvr74//EHvj/9REFKCpF9+3F9yocUPKCyr2Aimo9XLpLWTYDMm2pHA4AuL4+k337jWrfu5F66jM9nnxIwfx5W5cvr/2CJZ2HPN1jUepGRz3/Liq4rqO5anU8Pf0r/Df05e/PeqsDd6/rSroYX3225yMXEB1TnNHG3MvP4cM0Zavk6Mbx5Cfx7CByIP0DPNT2Ze2Yu3Sp2Y3X31bQLalc21949jsYMOnwD6fGwVxRgeRKiGYwgFMUzb4BrBWVtS36O2tGUrqOzlIIrbT4Ct6KNSrWv6U3b6l78uO0i0ckm1zHlkXacT+Svw9G83Lw8TYPdH/8CFUiShGO7tlRYvx7XQYNIXbGCKx07kbpylSjMYorMLKD7dMhJUxoMqyxjzx6udevOzV9+xaFNG4LXr8O5Z8+SucAt0MKqMWDjDB2+BqCCUwVmtp3JV898RWJWIn3X9+XTQ58qhVlQ/n981qMWDtbmTFx2oszNSPh0fQSpWfl81bO26BmoZ7HpsYzfOZ5RW0chITG77Ww+avoRTlZOaodm2AIaQd0BsP8niD6kdjRGQ/zvFYSisLBWpm2mXIF9/+0CYsJuRMCW95UiBY1eeaKXftStBuYaDe+tOl1mEofkjFzeXn6aqt4OvNnO8MuNm9nb4TV5EuVXLMcyIIDrkycTPXAQuZcuqR2aoG9eNeDZd+DsSji7SpUQ8iIjiXllNDEjR4FOh/+MP/D9/jvM3UvwZsiBn+H6Cej4rVJMq5AkSXSs0JE13dfQv1p//r74N11XdWX15dXIsoy7vRWf9ajFmbjb/LrjcsnFZ2D2XExixbFYXmkZTPVyoieevmRrs/ntxG90X92dA/EHGBcyjpXdVtLQ56H1BoX/av8FOAfAipch+5ba0RgFkeQJQlEFPwe1XlQKkNwsAxfB+TnKydTSXhkFeMK77D5ONrzVrgp7L91k9Yn4EgrScCj9pE5zOzufH/vUxcrcsKZpPop11aoELvoL748/IufSJa72eIGETz5Fe0v8IjUpzSaAT93CapulN22zICOTG99+y5UuXck6cgTPt96kwto12Jd0v9ekC7DrC6jeDWp0f+AmDpYOvNPwHZZ2Xoq/gz/v73+fIZuGcDb5LO1revNCPV9+3XmZU7GpJRurAcjM1TL5n9NU8LBjbKuKaodjEmRZZkvkFrqt6sbvJ3+nVUAr1nRfw8u1XsbSTL/rTk2etSP0nAPp15UlJGXk5nFxiCRPEJ5Eu8/Bwgb+GWH60za3fwSJZ6D7tKeuKjqgcSB1/Z35eN05bmXm6TlAw7IsLIat5xJ5q10Vqnob3x1wSaPB5aWXCN64AedePbm1eDFX2rYjefYcdHmm/W9XZpiZKzdscm8riV4Jk3U6Uleu4kqH9iTPmo1Tp05U2LQRt+HD9V5Y5T66Alj9qnKTquPj1/FUda3Kgg4L+KjpR1xLu0afdX2YvHcyo553xcPeionLTpKTX/DY/Rizb7dcID4tm6971sbawnhuUhmqy7cuM2LLCN7Y/QYOlg7MbTeXr1t8LQqrFIdfKLR6H86thmML1I7G4Ikkr4RMnTqVb79VfrFMmTKFbdu2PfW+UlNT6dWrF1WrVqVatWocPHhQX2EKT8reU7lIij8Om95RO5qSc2kbHJoGDUZA5XZPvRszjcSXPWtxOzufN/8+iU5nmnfeopIz+WjtOZpUcDP6QgXmrq74TJ1KhdWrsKlXlxvffMPVjp24vWlzmZl2a9K8qivVNs+tUqZulpCsY8eJ7NuX65MnY+FTjqClSyj35RdYeJZSG5pD0yH2qLIOr4g3qTSShhcqvcD6F9YzvOZwtkRuof+mF2jW8AiXb9406f6f4VG3mHcgkoGNA6kf5Pr4FwgPdSPrBh8d/Ihea3sRkRLBe43eY2nnpdT3fmCVe+FJNR0HFZ6Fje8oo/XCQ4kkrxR8/PHHtG59f+PVoho3bhzt27fn/PnznDx5UvTDU1vVTtB8IoTPg2ML1Y5G/zJvwqrR4FEN2n5S7N1V9XZkSpfqbD9/gx+3m940V22BjglLT2CmkfjupTpoTKSvllWlSgTMmIH/rFlobGyIGz+eqP4DyD51Su3QhOJqNh7K1VNG8zKS9LrrnAsXiHllNFH9+pEfH4/PF18QtGQxNnXq6PU4j5R8BXZ8orR8eYq+Wg6WDowPHc+6HutoE9iGLXGLcKv6PfPOLOLAlRslELC60gpvwvk4WvN2+6pqh2O0bufd5sfwH+n0TydWXV7FS1VeYl2PdfSp2gdzjehHqjcaDfT4AyxtYfkw059VVQwiydOjzz77jMqVK9O8eXMuXPj/3YUhQ4awfPlyAIKCgpg8eTJ169alfv36HDt2jHbt2hEcHMzvv/9+3z7T0tLYs2cPw4cPB8DS0hJnZ+dSeT/CI7R6X7mTtP4NZVTPVMiyMsUpJw16zlKmpurBwMaBvBjqx8/bL7H5bIJe9mkoft99hWPRqXzavSblnPXz92VI7Js3o/yqlXh//BF50dFEvtSb2AkTyL1yRe3QhKf177TNdFg/US9rW/JiYoh7622ude9BVng4HhMmUHHzZpx7dEfSlOKlRl6mcuFnZqUUyypGxU4fex++eOYLlnRaQg33Slh7r2b0rn5svLLVZEa1tQU6xi46RuytLH7sUw97K5GMPKkcbQ5zz8ylw4oOzD4z+991d+82ehcXaxe1wzNNDt7KOSzxDGydonY0Bssk/zd/deQrzqec1+s+q7pW5Z2GD5+eFx4ezpIlSzhx4gRarZaQkBBCQ0MfuG1AQAAnTpxgwoQJDBkyhP3795OTk0PNmjV55ZV7Kxheu3YNDw8Phg4dysmTJwkNDeWnn37Czk40J1WVxgx6zoY/WsLSQTBq9z2V24zWnXYJ7b8E75p6260kSXzSvSYXb2QwcekJVr3ajEpeDnrbv1pOxaby47ZLdKlTjm51fdUOp8RIZma4vPQSjh07kTx7FinzF5C+aTOOnTvjPmZ0yfQ2E0qWZzV47j3Y9qFSTOqZiU+1G21SEjenT+fWsr+RzMxwe3k4bsOHY6bGzUidDlaOgusnoe9icPTRy25ruNdgfoe5zAxfx0/HfuDtfROZe64aY+qOoaVfS6PubfbZhgj2XrrJVz1r0bC8CfwOK0VanZa1V9by24nfSMxKpJlvM8aHjKeqqxgNLRWV20Gj0XB4ulIYr0oHtSMyOGIkT0/27t1Ljx49sLW1xdHRka5duz502zvP1apVi0aNGuHg4ICHhwdWVlak/qchsVar5dixY4wePZrjx49jZ2fHl19+WZJvRSgqO3fovQAyEpQqlDojX5R/p11C8PPQcJTed29tYcbvA0KwsTRj5MJw0rLz9X6M0pSVp2X80hN4OFjxaTf9JcSGzMzeDs9x46i4bStuw4eRvm0bVzt1Jv6dSeRFRakdnvCkmo1TKgZv/whOL3+il2pv3eLG9z9wuW07bi1dhnOvngRv2YLnG2+ok+CB8j4i1ioFsvR8wSdJEiPrd6G/389kx/ci/vYtXtvxGn3W92F3zG6jHNlbfCSaufsjGd68PL0bBKgdjtHI1+Wz9spaXljzAlMOTMHT1pM57ebwe+vfRYJX2tp8BN61lF6Yt6+rHY3BMcmRvEeNuBkCKysrADQazb/f3/lZq9Xes62fnx9+fn40atQIgF69eokkz5D4hkLHb5Ryvru+hFbvqR3R08nLvLddQglNr/JxsmFa/1D6zTzEhKUnmDWovlGuYcvT6njlz2NE3sxk4fBGONlaqB1SqTJ3dcXzzTdxHTKE5FmzubV4MWnr1uHUvRvuo0dj6eendohCUUgSdPsN0uKUdbiOvhDY5JEvyb9+neS5c0n9ezlydjaOHTvi8fprWAYFlU7MD3NsAez/EeoPg8ajS+ww77SvQXRyLptO12NI22QO31rG2B1jqe5WnTF1xtDCr4VRjOwduprMB6vO0KKyB5M7iMSkKHILcll9eTVzzswhLiOOyi6V+eHZH3g+4Hmj+Dc3SeZWSluFGS2VqueDViszrQRAjOTpTYsWLVi1ahXZ2dmkp6ezdu1avezX29sbf3//f9f4bd++nerVq+tl34KehAyGegNgz9dwYaPa0Ty5/BxY3BdunFMSPAevEj1cw/KufNilOjvO3+CHbRdL9FgloUAnM3HZCfZcTOLzHrVoVrEEGzkbOHN3d7wmvUPw1i249O/H7bXruNK+A/HvTCLngqh6ZhTMraDPX+AcCEv6ws0HN/7OvXqN+HffU0bu/lqEY9u2VFi3Ft/vv1M/wbu2B9ZNgOBWSjXNErzgNtNI/NinLg2C3Fm03Zt3a8/l46Yfk5abxtgdY+m7vi/bo7ZTYMAzO2JSshj9ZzgBbrb80rce5mbiUvBRsvKzmH92Ph1WdOCTQ5/gZu3GL61+YXmX5bQObC0SPLV5VIYOX0HkXmX6uRGOqpcUkxzJU0NISAi9e/emTp06eHp60qBBA73t+5dffqF///7k5eVRoUIF5s6dq7d9C3ogSUofpoTT8M8oGLkT3ILVjqpotHnw92C4tltJ8Cq3LZXDDmgcyOm4NH7ZcZka5RxpX1M/a2dKmizLTFl9hnWnrjOpQ1X6NBRTnAAsPD3xfvdd3IYPJ3nWbFJXrCBt9WrsmjbFdehQ7Jo3ExdChszWFfr/DbNaw1+94OVtynR0IPvsWZJnzCR9yxYkS0tcXnoJt2FDsfA1kDWoNy/B0oHgVhFenAdmJT+qbm1hxqxBDej1+wHG/HmSv0c/z9oenVl3ZR1/nPqD8bvG42fvx4DqA+hRsQe2FrYlHlNRpefkM3z+UXQyzB7cACebsjUL4Umk5aax+Pxi/or4i9TcVBp6N+TzZz6nkXcjcT4zNPUGQvwJOPALmNsY76wqPZOMcR55/fr15bCwsHsei4iIKNOtBcr6+zcIt6KUKQMO5WD4FrCyVzuiR9MVKFXozq2CTt9Bg5dL9fA5+QX0nnGIS4nprHq1GZWNoBDLt5sv8OvOy4xqWYHJHcT/t4cpSEvj1tJl3Fq4EG1SElaVKuE6dCiOnTuhKekm2MLTizkK8zsje9YkI+ANbi1bTuaBg2js7XHp1w/XwYMwd3NTO8r/y0qBma2UKqEjtoNLUKkePi41m57TDiAj88+YZvg626DVadkRvYOF5xZyIukEDhYO9Krci37V+qneBLtAJzNyQRi7LiYxf2hDmlcqu7MQHuVCygUWn1/M+qvrySnIoYVfC0bUGkFdz7pqhyY8ik4Ha1+H4wuVolIt31Y7olIhSVK4LMsPbMIokjwTUdbfv8G4vA3+elHpQdXvb7AzoAuiu+l0sGYsnPgL2nwCzV5XJYyEtBw6/7IPeyszlo5qgpejtSpxFMWsvVf5dH0EfRr488ULtcSd3CKQ8/JIW7+BlLlzyb14ETMPd1z798e5Z0/MPTzUDk/4D+3Nm6RO+4RbqzaizTLD3Nsbl379cOnbBzMHA7sJo82FBd0hLhyGrAP/hqqEcT7hNi9OP4iXkzXLX2mCs+3/b2KcTDrJwnML2Rq1FQmJtoFtGVRjEDXd1SnU9OXG8/y++wofd6vBoCZBqsRgqPJ1+eyI3sGiiEUcu3EMKzMrOlXoRL+q/ajiWkXt8ISi0ulg9Rg4uRhaT4XmE9SOqMSJJK8MKOvv36CcXw9/DwWXQBi4EpwMrAiFLMOGt+DoTGg5CZ6brGo44VEpDJp9BCcbC+YNa2iQI3rLw2N58++TdKjpza/9QjAzwmIxapJlmcz9B0iZO5fM/fvBzAz7557F5cUXsWveHMlMLJRXiyzLZB8/zq1Fi7m9eTPk52NbzQ8Xt1M49ByO1OFztUO8nywrhWJOLlZa2TxFw3N9OnDlJkPmHKWOvxMLhzfC2uLez3NcRhyLIhbxz6V/yMjPoJprNXpU6kHH8h1xsnIqlRjnH4jkwzVn6d8ogE+71xQ3qQrdzL7J8ovL+fvC39zIvoGvvS99qvShR6UepfZvI+iZrgD+GQlnliuVdpu8qnZEJUokeWVAWX//Bidyn1LMxMpBSfQ8DOROoCwrC5P3/wRNX1NG8Qzgl/2ZuDSGzjtKbn4BMwbVp3EFwxkB3XI2gdF/HaNJBTdmD6mPlblISIoj9+o1UlcsJ23lKgpSUjD39sb5hR44vdATSz8DWedVBmiTk7m9YSOpK1aQe/48Gnt7nHr0wKVvH6Xv4Z0bQW0/hSZjDeI8ASgjeOsnwvE/4dl34VnDqKa99mQ8ry0+Tvsa3vzW/8E3gjLyMlhzZQ0rL6/kfMp5LDWWtA5sTY9KPWjo3RCNpP8CKNoCHZ+uj2DegUhaV/Nk+oBQLMp4oZW8gjz2xO5h7ZW17Inbg1anpWm5pvSr2o/mvs0xE9UZjV+BFpYPhYg1Ss2EhiPUjqjEiCSvDCjr798gXT8Ff/YEnRb6Lwe/ULUjgt3fwM5PlTLjnb43nAs3lIpvQ+YeISYlm+9eqkOXOuXUDomDV5IZPPcI1XwcWfRyI+ysRK0qfZHz8kjfuYvU5cvJ3LcPALumTXHq0QOH555FY2enboAmSJeVRfr2HaStXUPm/gNQUIBV1aq49OmDU5fO9/6dF2hh+RCl71zd/sq6XQsb1WIHlD5YSwdAXBi0eBuee9egzmGz913jk3Xn6FTbh6961sb+EeeLc8nn+OfSP2y4uoH0/HR87X3pXrE73YK74WOvn0JUt3PyGbvoOHsuJjG8eXne7VitzM5CkGWZk0knWXtlLZsiN3E77zZu1m50rNCRFyu/SHmn8mqHKOhbQT4sGwwX1kPnH6H+ULUjKhEiySsDyvr7N1gpV2FhD8hIgt4LoeLz6sSh08G+72DHp1CnL3SbVmK98IojNSuPkQvCORKZwnsdq/HyM+VVmVYkyzILDkbx+YYIAlxtWTaqCS52omBIScmPiyP1n5Wk/vMP2uvXkayssG/xDA7t2mP/7LOY2YuE72nJWi2ZBw+StnYt6du2I2dlYe7jg1Pnzjh26Yx15coPf7GuAHZ/Dbu/VBoOv7QQXFW6GI45oiR4uRnQ43eo3lWdOB7j991X+HrTeQLd7Pi1Xz1qlHv0lL8cbQ7bo7ez8tJKDiccBqC2R23aBLShdWBr/Byebrp/dHIWw+cf5drNTD7pXpO+ZbQScPTtaNZfXc/aq2uJSY/B2syaVgGt6BLchcY+jTHXiBt3Jk2bq1TfvbQZuv4KIQPVjkjvRJJXBpT192/Q0hPgz16QdF65OCnt9SMpV2H1WIjaDzV7Qo8ZYGa4v9hy8gt4Y9lJ1p++zpCmQXzQuXqp3n2+cTuHt5afYvfFJJ6r4sE3L9bB3d6q1I5flskFBWQfO8btTZtJ37IFbVISkpUVds80x7F9B5HwFVFBRiaZB/aTsWs3Gbt2UZCSgsbREcd27XDq2gWb0FCkJ7nJc3Gz0mgYCV6YWWqtVv4VPh/WvwFOvtBnMXgZdq/Yw1eTeX3JcW5l5fNB5+oMaBRQpJtVMekxbLq2ia1RW4lIiQCgmms12ga1pXVAa4Kcgop0/KORKYxaGE6BTmb6gBCaBpedKpoFugJO3zzNrphd7IrZxZW0K0hINPRuSOfgzrQJbIOdhTiHlCn5OUoP0Cs7lCriz38I1o5qR6U3IslTwdSpU7G3t+fNN99kypQptGjRgtatWz/xfi5cuEDv3r3//fnq1at8/PHHjB8//p7tDO39C/+Rnaqs0Ys+CO0+g0avQEnP+9fplDU126aCxhzaf6FMuzKg6U0Po9PJfL4hgln7rtGuhhc/9al3XzGDkrDpTAKT/zlFdn4B73Uq+sWZoH+yTvf/hG/zZiXhs7TEtmFD7Jo1w65pU6wqVxL/PoXyYmLI2LmLjF27yDx6FPLz0Tg6Yt+8OQ4d2mPfsmXx2lekXFPuiCeegZbvKF8lPRtAmwebJ8PRWUqj856zlZ5+RiA5I5eJy06y+2ISnWr78MULtXC0LnpPupj0GLZHbWdr9FZOJZ0CoKJzRZ7zf47GPo2p41kHK7P7bz6tCI9l8j+n8XOxYfaQBpR3N/2EJis/i4PxB9kVu4s9sXtIyUnBXDIn1CuUlv4taRPYRvX2FYLK8rNh+8dwaDo4llOWq1Rpr3ZUeiGSPBXcneTpS0FBAb6+vhw+fJjAwMB7njO09y88QH42LB+uzA/3rA7PT4HK7Usm6Uq5Vjh6tw8qtoYuPyt3wY3M7H3X+HT9Oap4OTChTWXaVvcqkYv6zFwtH689x9KwGGr6OvJj73pU9DTwPodliKzTkX38OLc3byZz337yrl4FwNzDA7umTZSkr0mTMtWWQZucTNaxY2SHhZOxbx95V64AYFmhAvbPPov9sy2xrVcPyUKPza7zspQRtZOLoGIbeGFGySVdGUmwbBBEH4Bm45S770ZWEEOnk/ljz1W+3XIBPxcbfu0bQi2/J6/YmJCZwPbo7WyN2sqJGycokAuwMrMixDOExuUa09inMUEOlfh5+xV+332FpsFuTO8fipOtaTY6z9HmcPrmacITwwlPDOdY4jHydHk4WDjQ3K85z/k/RzPfZjhams5ojaAnsWGw5jW4cU6Z2dT+K7A37t8bIskrJZ999hnz58/H09MTf39/QkNDefPNNxkyZAidO3emV69eBAUF0bdvXzZu3Ii5uTkzZsxg8uTJXL58mbfeeotXXnnlofvfsmULH330Efv377/vOUN4/0IR6HRwbiXs+AxSroB/I+XiJaiZ/vYfNhu2Fl4QtfsM6g00itG7h9l2LpFP1p8jKjmLaj6OvN6qIu1qeKPR0xTOY9G3mLD0BNEpWYx5Nphxz1fG0tzw1isK/5d//TqZBw6SuX8/mQcPUnDrFgBWlSphU7cu1rVqYlO7NlYVKyKZG+7U5KKSZZn8qCiywo+RdSyc7PBj5EVGAiBZWmITGoLDc89h37Illv+5AVgCwUD4XNjwNjj6KOevqp3BQk89LtMT4dh8ODJTaXLe7VfVWyQUV1hkCq8tPk5yRh6TO1ZlYONAzJ+ywmVmfibhieEcjD/IoeuHuJx6WXmiwJb8zArU8ajD+Geeo5ZHDewtTeNGVUZeBieSTvyb1J25eYZ8XT4SEpVdKtPAuwHP+T9HPa96WGhMM7EV9EibB/t/hD3fgKWd0mahTl+jvU4qsSRPkqQXgalANaChLMthD9muPfATYAbMkmX5y8LHywNLADcgHBgoy3Le4477uCQv4fPPyY04/5Tv6sGsqlXF+913H/p8eHg4Q4YM4fDhw2i1WkJCQnjllVcemOS98847jB49mgkTJrB9+3b2799PTk4ONWvWJDEx8aHHGDZsGCEhIYwdO/a+50SSZ2QK8pUS4Lu/gvTryl3x56eAT+2n2582F6IPKSetyL3K1Kauvxhej76npC3QseZkPL/uuMzVm5lU8XLgtecr0rGmz1Mle9l5Bey9lMTms4msOhGHt6M1P/SuS8PyxjEVTPg/WacjJyKCzAMHyDp8hOzTp9GlpQEgWVtjXb06NrVqYl2rNtbVq2Hp54dUnGmLJUyXm0velSvkXrpE7qVL5Fy6RM7ZcxTcvAmAxskJ25AQbENDsAkJxbpmjeJNw3xasWHKOr2Uq2DtDHX6KDeUvJ+i0bcsQ9QBZVpmxBqlInFwK2j90dOfEw3Mrcw83vz7JNvP38Dd3pLOtcvRtW456vk7P9XshCtJGczae41/Tp6jwOoS/uXikK0vkZz7/2uIIMcgarjXoIZbDaq7Vaeqa1WDXo8myzLxmfFcTLnIxVv//4pOj0Yn6zCXzKnuVp1Qr1BCvUKp61lX9LITnl7SBVjzOsQcggrPQYevwL2y0SV7j0ryinuL8wzwAvDHIw5uBvwGtAFigaOSJK2RZfkc8BXwgyzLSyRJ+h0YDkwvZkyq2Lt3Lz169MDW1haArl0fXvnrznO1atUiIyMDBwcHHBwcsLKyIjU1FWdn5/tek5eXx5o1a/jiiy9KJH6hlJlZKOV86/SBIzNg7/fwxzPK9IG6/cClPDj5g/lDLt5kWSnkcmWH8hW5H7TZYOmgTM0MGWR0J6pHMTfT8EKIH93q+rLuVDw/b7/E2EXHqeR5ideer0TLyh44Wps/8mLpZkYuOyJusOVcIvsuJ5GTr8PB2pw+Dfx5p0PVJ1ovIxgOSaPBpkYNbGrUgBEjlFGvmBiyT50m5/Rpsk+f5tbSZcjzFygv0GiwKFcOy6AgLAMDla/yyvfmXl5orEq2yI4sy+gyMtAmJJCfkIg2MYH8+OvkXr5M7qVL5EVFKSPyABYWWFWogF3TJtiGhGIbGoJlcPCTFU0pKX71YWw4XNsNxxdC2Bw4/DuUC1Eq2NXs9fjiBrnpcHIJHJ0NSRFg7aSsV64/DNyCS+d9lBIXO0tmDa7P1nOJrD4Rz+Ij0cw7EEmAqy3d6pajW91yVPR0eOQ+ZFnm8LUUZu65yvbzN7A019AzpBrDm3f6d3p5Sk4K55LPcfbmWc4mn+VowlHWX13/7z7cbdwJcAjA38Effwd/AhwDlJ8d/UtlemN+QT6JWYlcz7xOQmYC1zOvE58Rz5XUK1xKvURmfua/2/o7+FPJuRIdyncgxCuE2u61sbWwLfEYhTLCowoM3ajMfto2FX5rCI5+ysyqwGYQ1BxcKxj1tVSxkjxZliOAx92FaghclmX5auG2S4BukiRFAK2AfoXbzUcZFSx2kveoETdDYFV4EaHRaP79/s7PWq32ga/ZuHEjISEheHl5lUqMQimxsFHWm4QMhgO/wKFpcGaF8pykAYdy4BIILkHgHAh27hAXriR26deV7dwrQ+hg5U5UUHOwMo0pOg9ippHoVteXzrXLsf70dX7ZfonXFx8HwNJcg4e9FR4O///ydLDCTJLYfTGJ8OhbyDL4OtvQp0EAbap70bC8a5lvDGxqJEnCMiAAy4AAnDp3ApQ2AndGxvIiI8mLjCIvKoq048fRZWbe83qNrS1mbm6Yubpg7uKKmasr5q4umLm4IFlYgrkZkrk5krkFkoU5kpkZmJuDDLrsLHRZWchZWeiystFlZf37VZCSrCR1CQnosrL+GzSWAQFYVa6EY4f2WFWujFWlSlgGBOh3TZ2+aTQQ/JzylZUCp5bBsQWwbgJseldpGWNurYzMyQVKSwZdgfKzTqucy/IywKeOUt68Zk+wNN2LeEmSaFvDm7Y1vEnPyWfz2URWn4jjt52X+WXHZar7ONI02I1crY7MXC2ZeVoycwvIyNWSmaslLTufG+m5uNpZMu75SgxsEnhf5V9Xa1ea+zanuW/zfx9LykriXPI5Lt66SEx6DNHp0RyMP8jq7NX3vNbG3AZnK+d7vpysnHCxdsHJygkLjQVmkhkaSYOZpvBPyQwzyQwZmaz8LDLzM8nIz7jv+5ScFK5nXudm9k1k7p1B5mLlQgXnCnSp0IXKrpWp7FKZis4VDXrUUTARGo3SKL1qJ4hYp9QxuLIDTi1Vnrf3hsCmSuIX3EpJ+oxIaSxW8AVi7vo5FmiEMkUzVZZl7V2PP7QyhCRJI4GRAAEBhtfvpUWLFgwZMoTJkyej1WpZu3Yto0aN0tv+Fy9eTN++ffW2P8HA2DjD8x9A07GQeA5So+BWJNyKUr6/O6mzcYEKzyonnArPgbO/ioGrw0wj0bVOOTrX8mH3xSSuJGWQlJ6rfGXkEpOSxbGoWyRnKrO/a5RzZNzzlWhT3YvqPo6iImMZI5mbY12tGtb/mdIuyzIFyclK4hcVhTYpCW1KCgUptyhISSE/MZGciAgKUlKQ8/Of/Li2tmhsbdHY2GDu6opVpUrYP9Mccy9vLLy9MPf2xtzTCwtPD4OeQloktq7Q+BVoNArij8GxhcooH5KyPlhjDpJZ4fdmyvfVuymjdr6hRn23/Gk4WFvQK9SPXqF+JKXnsu5UPKtOxLPwUBS2lmbYWZljZ2mOnZUZDtbmeDtaY2dlTmigCy+E+D5RtWEPWw9a2rakpX/Lex7P1mYTmx5LdHo0MbdjSMpOIjU39d+vuIw4UnNTuZ13+4nfn5WZFXYWdtia22JvaY+zlTPNfZvjY+eDt5033nbe+Nj54GXnhY25zRPvXxD0yrEcNBqpfMky3LykJHyR+5X2U2f/UW7It/lY7UifyGOTPEmStgEPqj37nizLqx/weImQZXkGMAOUNXmlddyiCgkJoXfv3tSpUwdPT08aNGigt31nZmaydetW/vjjobNiBVNh41JYhOUBhVjycyDzBjj6Gl2VuZKi0Ug8V9WT56p6PvD5/AId2fkFYiqm8ECSJGHu7o65uzu29R+4pAFQkkE5Kws5Px9Zqy38KgDt/39Gkv5N6DS2tkjW1oYxrbK0SZKStPmGqh2J0fBwsGJos/IMbVa6jeZtzG2o5FKJSi6VHrmdVqclPS+dfF0+OllHgVyATlf4Z+HPAHYWdkpiZ2ErCqAIxkuSwKOy8lV/mJL0pVwFM+O7EaeX6pqSJO0C3nxQ4RVJkpoAU2VZblf48+TCp74EkgBvWZa1/93uUQy1uqaayvr7FwRBEARBEISy5FGFV0rjNuNRoJIkSeUlSbIE+gBrZCW73AncqY08GCi1kUFBEARBEARBEARTVKwkT5KkHpIkxQJNgPWSJG0ufLycJEkbAArX3I0FNgMRwDJZls8W7uIdYKIkSZdR1ujNLk48giAIgiAIgiAIZV1xq2uuBFY+4PF4oONdP28ANjxgu6so1TcFQRAEQRAEQRAEPTCpVeH6WF9ojMrq+xYEQRAEQRAE4X4mk+RZW1uTnJxc5hIeWZZJTk7G2tpa7VAEQRAEQRAEQTAApdEnr1T4+fkRGxtLUlKS2qGUOmtra/z8/NQOQxAEQRAEQRAEA2AySZ6FhQXly5dujxlBEARBEARBEARDYzLTNQVBEARBEARBEASR5AmCIAiCIAiCIJgUkeQJgiAIgiAIgiCYEMkYq1FKkpQERKkdxwO4AzfVDkIweeJzJpQ08RkTSoP4nAmlQXzOhJKm5mcsUJZljwc9YZRJnqGSJClMluX6aschmDbxORNKmviMCaVBfM6E0iA+Z0JJM9TPmJiuKQiCIAiCIAiCYEJEkicIgiAIgiAIgmBCRJKnXzPUDkAoE8TnTChp4jMmlAbxORNKg/icCSXNID9jYk2eIAiCIAiCIAiCCREjeYIgCIIgCIIgCCZEJHl6IElSe0mSLkiSdFmSpElqxyOYBkmS/CVJ2ilJ0jlJks5KkjSu8HFXSZK2SpJ0qfBPF7VjFYybJElmkiQdlyRpXeHP5SVJOlx4TlsqSZKl2jEKxk2SJGdJkpZLknRekqQISZKaiHOZoG+SJE0o/H15RpKkxZIkWYvzmVBckiTNkSTphiRJZ+567IHnL0nxc+Hn7ZQkSSFqxS2SvGKSJMkM+A3oAFQH+kqSVF3dqAQToQXekGW5OtAYeLXwszUJ2C7LciVge+HPglAc44CIu37+CvhBluWKwC1guCpRCabkJ2CTLMtVgToonzdxLhP0RpIkX+B1oL4syzUBM6AP4nwmFN88oP1/HnvY+asDUKnwayQwvZRivI9I8oqvIXBZluWrsiznAUuAbirHJJgAWZavy7J8rPD7dJSLIl+Uz9f8ws3mA91VCVAwCZIk+QGdgFmFP0tAK2B54SbiMyYUiyRJTkALYDaALMt5siynIs5lgv6ZAzaSJJkDtsB1xPlMKCZZlvcAKf95+GHnr27AAllxCHCWJMmnVAL9D5HkFZ8vEHPXz7GFjwmC3kiSFATUAw4DXrIsXy98KgHwUisuwST8CLwN6Ap/dgNSZVnWFv4szmlCcZUHkoC5hdOCZ0mSZIc4lwl6JMtyHPAtEI2S3KUB4YjzmVAyHnb+Mpi8QCR5gmDgJEmyB1YA42VZvn33c7JSHleUyBWeiiRJnYEbsiyHqx2LYNLMgRBguizL9YBM/jM1U5zLhOIqXBPVDeWmQjnAjvun2AmC3hnq+UskecUXB/jf9bNf4WOCUGySJFmgJHh/ybL8T+HDiXeG/gv/vKFWfILRawZ0lSQpEmWqeSuUtVPOhdOdQJzThOKLBWJlWT5c+PNylKRPnMsEfWoNXJNlOUmW5XzgH5RznDifCSXhYecvg8kLRJJXfEeBSoXVmyxRFvmuUTkmwQQUro2aDUTIsvz9XU+tAQYXfj8YWF3asQmmQZblybIs+8myHIRy7tohy3J/YCfQq3Az8RkTikWW5QQgRpKkKoUPPQ+cQ5zLBP2KBhpLkmRb+PvzzudMnM+EkvCw89caYFBhlc3GQNpd0zpLlWiGrgeSJHVEWddiBsyRZfkzdSMSTIEkSc2BvcBp/r9e6l2UdXnLgAAgCnhJluX/LggWhCciSdKzwJuyLHeWJKkCysieK3AcGCDLcq6K4QlGTpKkuijFfSyBq8BQlBvN4lwm6I0kSR8BvVGqUx8HXkZZDyXOZ8JTkyRpMfAs4A4kAh8Cq3jA+avwBsOvKFOFs4ChsiyHqRC2SPIEQRAEQRAEQRBMiZiuKQiCIAiCIAiCYEJEkicIgiAIgiAIgmBCRJInCIIgCIIgCIJgQkSSJwiCIAiCIAiCYEJEkicIgiAIgiAIgmBCRJInCIIgCIIgCIJgQkSSJwiCIAiCIAiCYEJEkicIgiAIgiAIgmBC/gdb24j97yACmwAAAABJRU5ErkJggg==\n",
- "text/plain": [
- "<Figure size 1080x360 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"plt.figure(figsize=(15, 5))\n",
"pe = PositionalEncoding(20, 0)\n",
@@ -1276,7 +688,7 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1285,7 +697,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1294,110 +706,25 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "27.0"
- ]
- },
- "execution_count": 58,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"216 / 8"
]
},
{
"cell_type": "code",
- "execution_count": 59,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 80] --\n",
- "| └─Conv2d: 2-1 [-1, 24, 28, 952] 216\n",
- "| └─BatchNorm2d: 2-2 [-1, 24, 28, 952] 48\n",
- "| └─ReLU: 2-3 [-1, 24, 28, 952] --\n",
- "| └─_DenseBlock: 2-4 [-1, 96, 28, 952] --\n",
- "| └─_Transition: 2-5 [-1, 48, 14, 476] --\n",
- "| | └─Sequential: 3-1 [-1, 48, 14, 476] 4,800\n",
- "| └─_DenseBlock: 2-6 [-1, 192, 14, 476] --\n",
- "| └─_Transition: 2-7 [-1, 96, 7, 238] --\n",
- "| | └─Sequential: 3-2 [-1, 96, 7, 238] 18,816\n",
- "| └─_DenseBlock: 2-8 [-1, 216, 7, 238] --\n",
- "| └─ReLU: 2-9 [-1, 216, 7, 238] --\n",
- "| └─AdaptiveAvgPool2d: 2-10 [-1, 216, 1, 1] --\n",
- "| └─Rearrange: 2-11 [-1, 216] --\n",
- "| └─Linear: 2-12 [-1, 80] 17,360\n",
- "==========================================================================================\n",
- "Total params: 41,240\n",
- "Trainable params: 41,240\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 252.43\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 53.69\n",
- "Params size (MB): 0.16\n",
- "Estimated Total Size (MB): 53.95\n",
- "==========================================================================================\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 80] --\n",
- "| └─Conv2d: 2-1 [-1, 24, 28, 952] 216\n",
- "| └─BatchNorm2d: 2-2 [-1, 24, 28, 952] 48\n",
- "| └─ReLU: 2-3 [-1, 24, 28, 952] --\n",
- "| └─_DenseBlock: 2-4 [-1, 96, 28, 952] --\n",
- "| └─_Transition: 2-5 [-1, 48, 14, 476] --\n",
- "| | └─Sequential: 3-1 [-1, 48, 14, 476] 4,800\n",
- "| └─_DenseBlock: 2-6 [-1, 192, 14, 476] --\n",
- "| └─_Transition: 2-7 [-1, 96, 7, 238] --\n",
- "| | └─Sequential: 3-2 [-1, 96, 7, 238] 18,816\n",
- "| └─_DenseBlock: 2-8 [-1, 216, 7, 238] --\n",
- "| └─ReLU: 2-9 [-1, 216, 7, 238] --\n",
- "| └─AdaptiveAvgPool2d: 2-10 [-1, 216, 1, 1] --\n",
- "| └─Rearrange: 2-11 [-1, 216] --\n",
- "| └─Linear: 2-12 [-1, 80] 17,360\n",
- "==========================================================================================\n",
- "Total params: 41,240\n",
- "Trainable params: 41,240\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 252.43\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 53.69\n",
- "Params size (MB): 0.16\n",
- "Estimated Total Size (MB): 53.95\n",
- "=========================================================================================="
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"summary(dnet, (1, 28, 952), device=\"cpu\", depth=3)"
]
},
{
"cell_type": "code",
- "execution_count": 84,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1408,27 +735,16 @@
},
{
"cell_type": "code",
- "execution_count": 85,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Sequential()"
- ]
- },
- "execution_count": 85,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"backbone"
]
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1437,7 +753,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1455,74 +771,16 @@
},
{
"cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 512, 2, 60] --\n",
- "| └─Conv2d: 2-1 [-1, 32, 28, 952] 288\n",
- "| └─Sequential: 2-2 [-1, 32, 28, 952] 18,560\n",
- "| └─Sequential: 2-3 [-1, 64, 14, 476] 57,536\n",
- "| └─Sequential: 2-4 [-1, 128, 7, 238] 229,760\n",
- "| └─Sequential: 2-5 [-1, 256, 4, 119] 918,272\n",
- "| └─Sequential: 2-6 [-1, 512, 2, 60] 3,671,552\n",
- "==========================================================================================\n",
- "Total params: 4,895,968\n",
- "Trainable params: 4,895,968\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 22.36\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 6.51\n",
- "Params size (MB): 18.68\n",
- "Estimated Total Size (MB): 25.29\n",
- "==========================================================================================\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "==========================================================================================\n",
- "Layer (type:depth-idx) Output Shape Param #\n",
- "==========================================================================================\n",
- "├─Sequential: 1-1 [-1, 512, 2, 60] --\n",
- "| └─Conv2d: 2-1 [-1, 32, 28, 952] 288\n",
- "| └─Sequential: 2-2 [-1, 32, 28, 952] 18,560\n",
- "| └─Sequential: 2-3 [-1, 64, 14, 476] 57,536\n",
- "| └─Sequential: 2-4 [-1, 128, 7, 238] 229,760\n",
- "| └─Sequential: 2-5 [-1, 256, 4, 119] 918,272\n",
- "| └─Sequential: 2-6 [-1, 512, 2, 60] 3,671,552\n",
- "==========================================================================================\n",
- "Total params: 4,895,968\n",
- "Trainable params: 4,895,968\n",
- "Non-trainable params: 0\n",
- "Total mult-adds (M): 22.36\n",
- "==========================================================================================\n",
- "Input size (MB): 0.10\n",
- "Forward/backward pass size (MB): 6.51\n",
- "Params size (MB): 18.68\n",
- "Estimated Total Size (MB): 25.29\n",
- "=========================================================================================="
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"summary(w, (1, 28, 952), device=\"cpu\", depth=2)"
]
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1531,7 +789,7 @@
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1541,7 +799,7 @@
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1551,71 +809,34 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([100, 1, 256])"
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"h.flatten(2).permute(2, 0, 1).shape"
]
},
{
"cell_type": "code",
- "execution_count": 91,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([100, 1, 256])"
- ]
- },
- "execution_count": 91,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"h.flatten(2).permute(2, 0, 1).shape"
]
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([[0., -inf, -inf, -inf, -inf],\n",
- " [0., 0., -inf, -inf, -inf],\n",
- " [0., 0., 0., -inf, -inf],\n",
- " [0., 0., 0., 0., -inf],\n",
- " [0., 0., 0., 0., 0.]])"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"mask\n"
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1625,7 +846,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1634,71 +855,34 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([ True, True, True, True, True, True, False, False, False, False,\n",
- " True, True, True, True, True, True, False, False, False, False,\n",
- " True, True, True, True, True, True, False, False, False, False])"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"mask"
]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([ 1, 21, 2, 45, 31, 81, 0, 0, 0, 0, 2, 1, 1, 1, 1, 81, 0, 0,\n",
- " 0, 0, 1, 1, 1, 1, 1, 81, 0, 0, 0, 0])"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"pred * mask"
]
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([ 1, 1, 1, 1, 1, 81, 0, 0, 0, 0, 1, 1, 1, 1, 1, 81, 0, 0,\n",
- " 0, 0, 1, 1, 1, 1, 1, 81, 0, 0, 0, 0])"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target * mask"
]
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1707,7 +891,7 @@
},
{
"cell_type": "code",
- "execution_count": 61,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1716,7 +900,7 @@
},
{
"cell_type": "code",
- "execution_count": 76,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1725,27 +909,16 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "30"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.shape[0]"
]
},
{
"cell_type": "code",
- "execution_count": 84,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1754,27 +927,16 @@
},
{
"cell_type": "code",
- "execution_count": 85,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([10, 20, 30])"
- ]
- },
- "execution_count": 85,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"t2"
]
},
{
"cell_type": "code",
- "execution_count": 89,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1784,160 +946,72 @@
},
{
"cell_type": "code",
- "execution_count": 90,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([ 1, 1, 1, 1, 1, 81, 79, 79, 79, 79, 2, 1, 1, 1, 1, 81, 79, 79,\n",
- " 79, 79, 1, 1, 1, 1, 1, 81, 79, 79, 79, 79])"
- ]
- },
- "execution_count": 90,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"pred"
]
},
{
"cell_type": "code",
- "execution_count": 88,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "ename": "SyntaxError",
- "evalue": "invalid syntax (<ipython-input-88-b8a4aef86401>, line 1)",
- "output_type": "error",
- "traceback": [
- "\u001b[0;36m File \u001b[0;32m\"<ipython-input-88-b8a4aef86401>\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m [pred[start+1:stop] = 79 for start, stop in zip(t1, t2)]\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"[pred[start+1:stop] = 79 for start, stop in zip(t1, t2)]"
]
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": null,
"metadata": {
"scrolled": true
},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor([[ 6],\n",
- " [ 7],\n",
- " [ 8],\n",
- " [ 9],\n",
- " [16],\n",
- " [17],\n",
- " [18],\n",
- " [19],\n",
- " [26],\n",
- " [27],\n",
- " [28],\n",
- " [29]])"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"pad_indcies"
]
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "ename": "TypeError",
- "evalue": "only integer tensors of a single element can be converted to an index",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m<ipython-input-71-39b5cc3b1445>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpred\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpad_indcies\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mpad_indcies\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m79\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
- "\u001b[0;31mTypeError\u001b[0m: only integer tensors of a single element can be converted to an index"
- ]
- }
- ],
+ "outputs": [],
"source": [
"pred[pad_indcies:pad_indcies] = 79"
]
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([20])"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"pred.shape"
]
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "torch.Size([20])"
- ]
- },
- "execution_count": 51,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.shape"
]
},
{
"cell_type": "code",
- "execution_count": 91,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.0"
- ]
- },
- "execution_count": 91,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"accuracy(pred, target)"
]
},
{
"cell_type": "code",
- "execution_count": 92,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1946,20 +1020,9 @@
},
{
"cell_type": "code",
- "execution_count": 93,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tensor(0.9667)"
- ]
- },
- "execution_count": 93,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"acc"
]
diff --git a/src/notebooks/07-try-gtn.ipynb b/src/notebooks/07-try-gtn.ipynb
index d366dec..4ef444b 100644
--- a/src/notebooks/07-try-gtn.ipynb
+++ b/src/notebooks/07-try-gtn.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
@@ -125,6 +125,53 @@
},
{
"cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1.0, 0.0, 0.5, 0.5]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import gtn\n",
+ "\n",
+ "# Make some graphs:\n",
+ "g1 = gtn.Graph()\n",
+ "g1.add_node(True) # Add a start node\n",
+ "g1.add_node() # Add an internal node\n",
+ "g1.add_node(False, True) # Add an accepting node\n",
+ "\n",
+ "# Add arcs with (src node, dst node, label):\n",
+ "g1.add_arc(0, 1, 1)\n",
+ "g1.add_arc(0, 1, 2)\n",
+ "g1.add_arc(1, 2, 1)\n",
+ "g1.add_arc(1, 2, 0)\n",
+ "\n",
+ "g2 = gtn.Graph()\n",
+ "g2.add_node(True, True)\n",
+ "g2.add_arc(0, 0, 1)\n",
+ "g2.add_arc(0, 0, 0)\n",
+ "\n",
+ "# Compute a function of the graphs:\n",
+ "intersection = gtn.intersect(g1, g2)\n",
+ "score = gtn.forward_score(intersection)\n",
+ "\n",
+ "# Visualize the intersected graph:\n",
+ "gtn.draw(intersection, \"intersection.pdf\")\n",
+ "\n",
+ "# Backprop:\n",
+ "gtn.backward(score)\n",
+ "\n",
+ "# Print gradients of arc weights \n",
+ "print(g1.grad().weights_to_list()) # [1.0, 0.0, 1.0, 0.0]"
+ ]
+ },
+ {
+ "cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
diff --git a/src/notebooks/Untitled.ipynb b/src/notebooks/Untitled.ipynb
new file mode 100644
index 0000000..841a37d
--- /dev/null
+++ b/src/notebooks/Untitled.ipynb
@@ -0,0 +1,385 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "\n",
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "from PIL import Image\n",
+ "import torch\n",
+ "from torch import nn\n",
+ "\n",
+ "from importlib.util import find_spec\n",
+ "if find_spec(\"text_recognizer\") is None:\n",
+ " import sys\n",
+ " sys.path.append('..')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from text_recognizer.datasets import IamLinesDataset"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "transform = [{\"type\": \"ToPILImage\", \"args\": None}, \n",
+ " #{\"type\": \"RandomResizeCrop\", \"args\": None}, \n",
+ " {\"type\": \"RandomRotation\", \"args\": {\"degrees\": 0.8, \"fill\": 0}}, \n",
+ " {\"type\": \"ColorJitter\", \"args\": {\"brightness\": 0.5, \"contrast\": 0.5, \"saturation\": 0.5, \"hue\": 0.5}}, \n",
+ " {\"type\": \"ToTensor\", \"args\": None}, \n",
+ " {\"type\": \"Normalize\", \"args\": {\"mean\": [0.912], \"std\": 0.168}},\n",
+ " #{\"type\": \"RandomAffine\", \"args\": {\"degrees\": [-0.25, 0.25], \"scale\": [0.98, 1.0]}}\n",
+ " ]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "target_transforms = [\n",
+ " {\"type\": \"ToLower\", \"args\": None},\n",
+ " {\"type\": \"ToCharcters\", \"args\": {\"pad_token\": \"_\", \"eos_token\": \"</s>\"}},\n",
+ " {\"type\": \"ToWordPieces\", \"args\": {\n",
+ " \"num_features\": 64, \n",
+ " \"tokens\": \"iamdb_1kwp_tokens_1000.txt\", \n",
+ " \"lexicon\": \"iamdb_1kwp_lex_1000.txt\",\n",
+ " \"use_words\": False,\n",
+ " \"prepend_wordsep\": False,\n",
+ " }\n",
+ " }\n",
+ " \n",
+ "]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from text_recognizer.datasets.transforms import ToText"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "2021-02-24 21:43:47.687 | DEBUG | text_recognizer.datasets.transforms:__init__:201 - Using data dir: /home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/data/raw/iam/iamdb\n"
+ ]
+ }
+ ],
+ "source": [
+ "to_text = ToText(\n",
+ " num_features= 64, \n",
+ " tokens=\"iamdb_1kwp_tokens_1000.txt\", \n",
+ " lexicon=\"iamdb_1kwp_lex_1000.txt\",\n",
+ " use_words=False,\n",
+ " prepend_wordsep= False,)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "2021-02-24 21:42:02.700 | DEBUG | text_recognizer.datasets.transforms:__init__:201 - Using data dir: /home/akternurra/Documents/projects/quest-for-general-artifical-intelligence/projects/text-recognizer/data/raw/iam/iamdb\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "IAM Lines Dataset\n",
+ "Number classes: 54\n",
+ "Mapping: {0: '0', 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: 'a', 11: 'b', 12: 'c', 13: 'd', 14: 'e', 15: 'f', 16: 'g', 17: 'h', 18: 'i', 19: 'j', 20: 'k', 21: 'l', 22: 'm', 23: 'n', 24: 'o', 25: 'p', 26: 'q', 27: 'r', 28: 's', 29: 't', 30: 'u', 31: 'v', 32: 'w', 33: 'x', 34: 'y', 35: 'z', 36: ' ', 37: '!', 38: '\"', 39: '#', 40: '&', 41: \"'\", 42: '(', 43: ')', 44: '*', 45: '+', 46: ',', 47: '-', 48: '.', 49: '/', 50: ':', 51: ';', 52: '?', 53: '_'}\n",
+ "Data: (1861, 28, 952)\n",
+ "Targets: (1861, 97)\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "dataset = IamLinesDataset(train=False, pad_token=\"_\", transform=transform, target_transform=target_transforms, lower=True)\n",
+ "dataset.load_or_generate_data()\n",
+ "print(dataset)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "but▁since▁starting▁salaries▁would▁depend▁on▁grade▁a\n",
+ "or▁b▁in▁the▁finals▁next▁may,▁and▁since▁mating\n",
+ "prospects▁would▁depend▁upon▁salaries,▁scholarship▁for\n",
+ "these▁fine▁young▁people▁was▁closely▁geared▁to\n",
+ "economic▁and▁biological▁ends▁which,▁essentially,\n",
+ "were▁really▁means.▁so,▁seeing▁them▁revolve▁in\n",
+ "circles,▁harry▁had▁the▁feeling▁that▁moke▁(or▁what\n",
+ "moke▁consciously▁or▁unconsciously▁symbolised,▁any-\n",
+ "way▁in▁harry's▁mind)▁had▁these▁splendid▁young\n",
+ "people▁by▁the▁short▁hairs,▁and▁was▁diverting▁them▁...\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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3Llz8lt/dduqURqq6omklhEr5aleGpWUlMS8efOor6+noKAAPz8/bDYbGzZs4J577mHMmDHs27ePGTNm4OHhQWRkJLfddhsrVqxgzJgx/PWvf+W1116jtbWVuLg4urq6uPHGG/nud7+L0Wjk1ltvpaOjg5qaGjo7O+UyJScnM27cOI4fP05vby+33347KSkp5OXlMWHCBN5//30OHTrE5MmTiY6OpqOjgwsXLhASEkJ6ejoHDhygsrKS9PR0li9fzrvvvstzzz3H448/zqlTp8jOzqalpUV+w6401pSeEu6MVqPRyOzZs3n++edpa2vjhRdeYNeuXbS3t3PLLbfw/PPPM3bsWN5++20KCgpISUmhpKSEL774Qu5vX19fpkyZwj333EN3dzdLlixBp9Oxe/du3nvvPQ4dOoTNZpPHhq+vL9/73vdYtmwZcXFx9Pb28vbbb7Np0yY2b97MqFGjGD16NGazGZPJxB133MGPfvQjzGYzXV1dNDU18cUXX/Dxxx9jMplkLyGdTkdnZ6ds0GsZrx4eHqSnp/PjH/+YzMxMPvvsM4KCgli+fLncJjqdjieeeILdu3fL7etufKo9K7S2aFYGHA8JCWHGjBkA/OY3v+H8+fP09PTIxqIrXPWjp6cnAQEBhIaGYjQaeemll5g0aRI9PT20tLQQGRnJXXfdxcsvv9yvLh4eHgQHB3PDDTewd+/eIec3FAbzRtHKQ2qjefPm8bOf/YygoCAOHz7MM888Q2NjIy+//DKjR4/md7/7HcePH5eNUp3uqreal5eXbCRKAoG7/L29vXnqqacwm81s376dvXv30tfXh9FoJCIigmXLlpGQkEBrayunT59m79691xTvRImvry8RERGUl5drioKDodPpGDNmDD/84Q9JS0vD29ub/Px83nzzTb744ot+3iJwfQQnd23p6enJ4sWLueeee5g7dy49PT10dnYyb948Ro0axebNmzl//ry8c58WymeYXq8nISGBlStXEhUVxbPPPsvBgwfp6+sbEJBX7S3mCkk08PHxIS0tjZdeeolDhw6xefNmGhsb5bw9PDyIjY3llltuQa/Xs3fvXioqKuR+Ut7z0hh0l7dURle7p0nXSjvWhYWFsWvXLl588UX6+vowmUz9djyUrpc+S7+nSi85pWDjrn20RFN120rtLR2XPHFnzZpFR0cHn332mZyv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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAAAyCAYAAADm+Sb2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABEx0lEQVR4nO2deXRV5bn/P2fMyck8knlOCIEECFOYjYCAFBFUHGgVa5dWva3X6q+2antb29t1b2vXvbXXoe1tr3Vo6wSKoKAgkwFJGDIQMpGQhCRkIPNwkpOT5PcHa+/u7Oxzck5Ay+/+3s9aLjl7eKf9np3zfN/neV7d2NgYAoFAIBAIBAKBQCAQCASC6wv9P7oBAoFAIBAIBAKBQCAQCASCiQjRRiAQCAQCgUAgEAgEAoHgOkSINgKBQCAQCAQCgUAgEAgE1yFCtBEIBAKBQCAQCAQCgUAguA4Roo1AIBAIBAKBQCAQCAQCwXWI0ZOLdTqd2GpKIBAIBIL/peh0OgDEzpICgUAgEAgEXzmXx8bGwtQHPRJtBAKBQCC4WgwGgywOXCt0Oh16/RXn0ZGREc3z4L4YodPp0Ol0jI2NMTY2JpftCXq9Xr5fXaYS9WepLvV9yuul/irL1+v1E/ouXTcyMiL/WzlOo6Oj4641GAw4HA4GBwc97q9AIBAIBAKB4Kqo0zooRBuBQPC/EoPBIBu37uLp9Vp8WZ4K6rap61GLAZ62Q0tgkOq81n1RixDXCmXbXdXrasy0hBKtMXBX1NHr9bIwIpUnXas8rmyz8ryyDepnpO6rsh3K40ajUbMPBoNBs93Cy0YgEAgEAoHg+kGINgLBVTCV1ffJmEw40DIePS3L0+OeoFXGtSjXnfqUIoPa6Ha3LE+ud8W17K+6P8rynQkQzo45Qz1WX6Zo82XhaTvd6Z+zcXVWlqtjys+u5qaz9qgFG63rtJ6b+j6tvrhzrUAgEAgEAoHgq0eINv+PMFUD0Gg0YrFYGBwcxOFwjDv3ZRrSXzbXS9sNBsM1L3My4cBd0cZZOZ4e9xR1OddSCHFVnxae1nk9zCkt3GmX1jh4Irr8bzLUtUQ8Ca1+Kj1Y1GKH0qNG6TWjLkvp5eKqPneENWVblJ+ldjrrr9bnsbGxce9+vV4/zkNIeb0QbAQCgUAgEAiuP4Ro8/8IRqPnj0qv1xMREUFCQgKVlZW0tbUBX50x/WXhLDTA0/vVht21ZqrlTnbPZOfdCRHRat+1GgO1QXgty3ZWn5qreaZT9Sz5Kj1SrmY8tcKmzGYzcCUcZ2RkxG3j3d3vkrtjYzAYNPPRaOGqzMlEGmUZzsRLSSQxGo0YDAbsdrumcCOJINJ1Dodj0j4ox3d0dHScx56zcC31fUqPGnXZ6jYqGR0dnXDOZDKh0+kYHh4el/NGIBAIBAKBQPCPx9PdoyaIB1MxzJzlBtA6p77nag1WNdeb6/+1FlI2bdpEbGwsb775pizaSFyNcfWP5FqHnXwZqFfqrzeu92d8NUw29q4MWuX9U633q8CZtwgwIbGs8lqlMS6NjcFgYMuWLRiNRs6cOUNFRcU4w97dfrnyIHE3bCs4OJiuri6Gh4cnXCvlZZGS50p/N1w9SzXKvzNqYUIr/MxqtZKUlERmZiY7d+5kcHBwnMeL1AeDwcCsWbOIjIykpKSE5uZmOfGv2ltH3S91H5TXSoKOM3FVynMD45+7ND7OvPKUx6XcT8p7PRlTgUAgEAgEAsGXy1Uvp3maM8LZtZOt7GqtJk4Wo+9OO6a6ou5OOyQMBgNms9nt1UtPy3d2jdFoZNGiRZw8eZLLly87rV+n0xEcHEx8fLxb7ZuszZ4itX+qRq9OpyMiIoIbbrhBsw9aZX/Z4tRk34vVq1cTGho6TgR1NwTG3fG6lmFDU8VV2MY/iqkYpJ56P/0j+6l+fyiPBQcHc/fdd/Pkk09y0003YTAY8Pf3Z+XKlYSEhGCxWLBYLB59N5zNdVfzVClkwJV31cqVK/nGN75BeHj4uGtNJhPr1q3j6aefZtmyZQQHBwOTP0e1uKH0AHPn+fj6+rJp0ybuv/9+wsLCJuy+JHnh+Pn5sWnTJr75zW9y+fJlenp6xnkrqb2Q1OKQVmiUOnGx9G/1O1wSdJTt0ipX3W7pHim8UxLC9Hq90+TEAoFAIBAIBIJ/DNfkl9nVhoC4a7BP1ZNHfc7Z6q+7eHKfl5cXq1at4vHHH2f69OlXHfri7n1Go5HU1FSMRiNnz56ls7NT01gxGAwsXbqUb37zm3z961+fco4WtYHmylibzJjz9LmEhoaycOFCtmzZQkREhMtytMIhPBnzwMBA4uPjSUpKmrTdWuUaDAbi4+N58MEHCQ4OHrdiP9nYuYsnouVU6vP29p5ye65WKFOHh8CVMY2IiCAqKgpvb29NA3Yq5WsddyccR+uzFpOFr3mK2itDaZTrdDoCAwO54447WL58OWlpaUyfPh29Xs+KFSsoKChg7969VFRUYLPZ3G6HOhROSyhxhnSfxWJh3rx55Obmsm/fPjo7O+Xn5+Pjw6pVq4iPj+e9996jsLCQ7u5ut8L6nD1HZd3K40oRyGQysW3bNhYvXsylS5d47733ZCFmdHRUfpf6+PiQkZHBPffcw5tvvkllZSU2m00WP5QijfK5KNusFFJctVfpASO1QTqm/OxqrKU5IoVySe2RvM+kPgoEAoFAIBAIrh+u2XKaJ4afK8PoWt1zNR4qnlznyjDR6XTMmjWLZcuWkZmZSWBgoMeGuTuGtZYI4e3tTW5uLseOHaO1tXVcuIGS5ORk2Xg7d+6c2/kkJCbrhzvPwNUYqkUedX16vZ7MzEzmzJlDT0+PZj8lo8Tf35877riDxMRELBbLpEalVjmJiYnMmDEDPz8/t++T2qzX6wkMDOTmm2+moqKC7u7uCcmh3WmD5LllMpmc1uWuwTxZXVoox9gdcexqRShX7YuNjWXz5s089thjbN++nczMzAlCwlSYyv2eii3uCkCe1KU0upVGvJ+fH7fccgvp6ekEBwfT19dHZWUlISEhLF++nKKiIpqamhgYGHDbE2UytIQcNVarleTkZFauXEl+fj51dXUMDQ0xNjaGwWAgNDSU1atXU1hYSG1tLd3d3QwPD49royceaurrtY7r9XpycnKYP38+bW1tHDlyhJaWFvl6aW6bTCYSEhK4+eab5bCy/v5+zWeg1VZJNNESkKR61OFsWh6CrhYhtL6HkleN9J/0+WoXMwQCgUAgEAgEXw7X3Af6ao14d+vwBGll8avG29ubuXPnEhUVRXd3t5zsczIm80Zxdr2EyWQiNDSU7Oxs8vLyZENMTVBQEGvWrCEwMJDy8nLy8/Ov2sNjMkPKnfAAT4iMjCQ7O5vo6GhOnz4tG1fKOvR6PX5+fixfvpwNGzYQHh4+6XzQGnsfHx8SEhIIDQ2lp6fHo3bqdDqCgoJYvHgx69ev5/PPP6e7u3vCTjRaxpu6HX5+fkRFRREaGjrpvc76NhWkMh0Ox5RFkasVU6TnajabmTVrFps3b+auu+5i4cKFhIeHXxfhV/DVhEe5G2ZqsVhYsGABmZmZhISE0NbWRnFxMefPnyc9PR273c7Fixfl98SXJbKp8fX1JTU1lfnz59Pf38+JEyfo7++XvxNWq5XY2Fi8vb0pLS3FZrNN8CSZrK3uetUp30tBQUGsWrWKnp4eTp48SVlZ2ThRQxJT4uLimDt3LmFhYezdu5e+vr5x46fOMaP1Xtdqv9Y71JVnkadzTemZ81U9a4FAIBAIBALB1PnSAtc9+TGoZch7Wpezcs1mM5GRkQQFBWneo7Vy6ax9np6LiYkhJiaGrq4uCgoKxnmxTMXLw13PBWn12sfHh6qqqgneHJLRMW/ePG666Sa6u7s5deoUly5dcmkIahkaUx0bT+eG1medTseCBQvIyMjAbrdz4sQJmpqaJpRttVpJT09n69atREVFYbfbnXoUORtbvV5PcnIy4eHh2Gw26uvr3e6HtCqfkpLCtm3bCA8Pp7y8XPZYcWcuKOuJiIggNTWV6OhozTZ4Gh7lrD6lYTdZOV+28af0PvD29iY5OZmtW7fyyCOPkJaWRklJCbt376awsPCaiELuPhP190J57mreaZ62V+u4Xq8fN1YAQ0ND5Ofnc/jwYex2O3PnzmX37t10d3ePy8PizDNFLSg4816ZrM1ms5nk5GQWLVpEUlISO3fupKOjY1y9gYGBJCUlcfToUfr6+sZ5rEj1uJp3WmOj9VnZJ7PZzOzZs0lNTWXv3r3k5+ePE72lsKfAwEDmz5/PrFmzOHnyJEVFRU4FWPU23dJ3S+sdJLVHnejY3bFVo5VU2J1xEQgEAoFAIBBcP1wT95OpGEmTGfNT+RGpboderyc+Pp4HHniAI0eOsHfv3gk7oij/74mxK92nlTBSqnvNmjU0NDTQ3NxMe3s7ly9f9rhP6nLdMYimTZvGjTfeyN69e7HZbJr3BAQE8MMf/pA9e/Zw5MgRLl26NG5svqof8VMJKZHu8fX15ZZbbmFoaIi9e/fS1NQ0oQ8mk4m0tDTuu+8+2tvbaWpqor6+flzeDmdhBUpMJhO33XYbFy5coLCwcEIIhLJ9ynKlciIjI1mwYAEzZ87kgQceoK6uzmm/1OOvnqMxMTE4HA46OjrGtVXZDmdlafXZ3TmmVY8zlPW68hKYbK6pz3t5eZGRkcH3vvc9pk2bht1u5ze/+Q379++nsbFxgiHsjig7lX5M1k7pmKd1eNIuZ6jDd5544gkSEhLo7OzkpZdeoqioCJ1OR0pKCn19fZw4cYLh4eFx4Tdac1r578m8uFz1aWxsjMjISNasWYPFYuGNN96gqalp3DV6vR5fX198fX3505/+5Fa/tepx9d2W2ijlk9Hr9QQFBfGtb32Ld955h1OnTtHV1YVOdyUkUQpHtFqtrF69mrS0NKqrq/nrX//qtC7puLRDk/L9oPzboRT51GPoTJSTjqvFLPVYuXqfSEi5bqRrhfeNQCAQCAQCwfXDVYs21/LHnSdu7pPdq9friY2NZdGiRURFRZGXlzdhW9XJ6rwaIiMjmTNnDn/5y184e/YsZrOZrq4ut+69GsHE39+f+Ph4oqKieP755zW9MPz8/HjssceorKzknXfeobGxUVPMcmasKg27qbbVmSHiSjBQn8vNzcVsNnPo0CGOHDmi2Z60tDQyMjK4ePEiSUlJvPjii3R3d8vnteaNVhvWrl2L0WikqqqK2traCX1wtiI+NjaG2Wxm3bp15Obm8tprr3Hq1CnNa9XHtPqs010J36iurqa5uXnCucnKdXXcWTmu7vVUyPCkHeq56O3tzcaNG3nwwQeJi4ujvb2dBx54gLKyMjl05mo9E9y5Vy3MuYurd861FErHxq7kT8rKyuLee+9l06ZNvPPOO/zHf/wH9fX1DA8Pk5ycTFxcHG+++SYjIyPjtkF3Jt646pOzz8547LHHqKmpYdeuXVRVVU04HxgYiN1uZ//+/djtdvm4Mw8UT1C/uyTBIjQ0lPvvv5/9+/dz+PBhBgcHCQoKIiAgQBZdS0tLSUlJYe7cuRw7doxdu3YxNDQ0Lgm0WsjXEmHU7TcajYyNjclisJTLRi3aKL2LDAbDOPFYLQwpPX2k88okysq2SuOgrEMgEAgEAoFAcH1wVaLNl/nDTu1x46lxFBwcTE5ODsuXL6esrIyBgQGn13pqME222gxw5513UlFRQXNzMwMDA9jtdqdtcFaW8se91g99rXtSUlLIyMjg7Nmz48QJuGIYxMbGcuutt3LjjTdy//3309zcPEHMmqqxrX5mk6H29nA1nupzvr6+3HvvvXzxxRecOXOG/v7+CfeEhoYya9YsZs+eTUdHB++++y51dXXjwsWcja/y3z4+PmzZsoVXX32Vs2fPTvDmmGxurlmzhjlz5nDx4kVeffVVt7ecdjYnjEYjdrudoaEhp/doCUpXKwq4EhtcPb+p1K8uy9vbm/vvv5/bb7+dtLQ0zp07x49+9CNKSkrkxLVfFq68kpzh7vd1qihFFnW9BoOBG264gbvuuoucnBxefPFFfve739He3s7w8DBhYWEAFBQUMDAwMMHj41rNF2eEhoZy7NgxKisrZQFUTXd3txwSpfYI8RRnnpFKT5vY2FhuuukmNm3axN69e3nuuecYHBzEZrPR3t5OTU0Nn3zyCcnJydx444288cYbHD9+fNw7Vi2CqN8nSsFJElLUfXMmmisFGOUOUtJ5rbFR757mbpJ5Z949AoFAIBAIBIJ/DFMWbdwxQDw1HJ15Lrhr7Ej3m0wm1q1bR3JyMqdOnSIvL8/pLj3uuPO7W6+E1WplyZIl/OEPf6ClpYXBwUH5x7YrN3ZXuHONlJw1LS2N119/Xf6RbjAYiIqKIiUlhezsbHJzc9m1axeNjY1Od1tyVq+rUBf1PZN5zkxWjrP7jEYjGzduZGRkhIKCAmpraycYLAaDgZtvvplly5YxOjrK0aNHOXny5KS7NanbazKZ2LhxIy0tLdTX18vJRidrt9T30NBQ1q5di81m4+OPP5ZDmpwJIJMxOjpKR0cHdrsdvV7vMjfPtcCdvk61Lnefu9Fo5JZbbuHWW28lJiaG/Px8XnrpJUpLS6+5YKPsr1owdidMSl2OhLvfBa12aN2v5TUo7U52xx138LWvfQ2Hw8ELL7zAwYMHZcFGurevr4/Ozk6PhFJnbfMEk8nE9u3b+fTTT7lw4QIOh2NC33Q6HSMjI/Lcdsfbx5UArCW6KY8lJiaydu1aNmzYQElJCW1tbZSVlVFfX09vby82m42hoSFiY2O57bbb+OijjygqKqKrq2vcWKi9WNQCjRLpb4F0vfQ8ldeqhSbpmFSPcptw6bhUhpa4pSx7MvFLiDYCgUAgEAgE1w/XdEslLy8vpk2bhsPhoLW1dUrbR4NnK31a7vkZGRlkZGQwMDBAQUEBNTU1wJUfrWazmZGREXkHHHX9ngoI6nYbjUamT5/OyMgItbW19PX1yVuqKuuYzLNGWa6zutXn4+PjCQsLo6+vj/Pnz6PT6fDy8mL27NmEhIQQFBSEj48Per2eTz75ZJynhruGmJeXF6GhoXR1dWnu5qLE3dAKTwQMKe/EmjVrOH78OOfPn5/gZaPT6Zg5cyY33HAD/v7+HDt2jJKSEjo7Oz1qj5RwdNWqVezevZv29naPtujW6/Xk5uYSEBBAfn4+Z8+edeododVnZ94aFRUVDA0NERwcjJeXl5wUWassvV4v/yfNw6kYZK68TTwNoXFWpjOBcPr06dx+++1MmzaN06dPs2PHDnmnoa8ijMOd8XJ1jbR7nWRYS+9FT8KrnI2V9K40m81kZmayYsUKNmzYQF9fH4cPH2b//v00NDTIAoLJZGJoaAibzYbNZhtXlidCk7soRQyDwcDSpUuJj4+np6dH9jxUzlWz2YzD4RgX9uPJ2Cg/TyaUSW2LiYkhMDCQ0tJS9u/fT2dnJ21tbbS3t2O32zEajURERHDTTTfR1tZGfn4+7e3tExI3S/1UC36TLV54Kga66pOz8E5n4p+EUuhxVYdAIBAIBAKB4KtnyqKNllgya9Ys5s+fz8jICIWFhZSUlMj5CJytWrsq38/PDz8/P/R6PQ6Hg8HBQXmXk5CQELy9veVjkjFttVpZvnw5Y2NjlJeXU11dzfDwMFFRUYSHh2O1Wunr66OlpYXm5uYphV+5wsvLi6VLl1JWViavbn8ZYRJqY8BqtZKdnY3FYqG8vJz+/n4iIyNJSEggPT2dvr4+jEYjIyMjnD59mnPnznnkwWQymQgJCSElJYWZM2dSUlJCRUUF7e3tHvXpakMwvLy8mD59OnFxcfz2t7+lvb19gteBn58fGzZsICIigsrKSioqKtDr9SQkJHD58uVx2wq7wtvbm+nTpxMYGEhBQQF9fX0TrnHlieTr68u6detobGykuLjYZSJqaYyjoqKw2Wx0dHTIc1ptaNXX1+Pn50dycjLR0dFcvHhxQv1msxl/f39CQkIIDAzEarXS3d1NU1MTly9f1gwR0+qDMwICAoiOjqa/v5/Ozk56eno0hYWrDbXx8vLilltuITs7m6KiInbu3Mm+ffvo7e2dUnmT4Wk7J7s+JCSEuLg4AgICGB4e5vLlyzQ2NmrOpcnKVRveer0ek8lEQEAAiYmJrF+/nttvvx2Hw8GuXbvYs2cPjY2N6HRX8iC1t7djNBoZGhrCbre7FKnd9Yh0F5PJRFhYGDfddBNVVVWMjIzg6+vLyMgIg4OD6HRXQlqHhobGebNda9TzUWpXT08Pn376KYWFheh0Ovn7YTKZCA4OJjs7m6SkJF5//XWamppwOByaHi0mkwmLxYLBYGB4eFgWFtXCjFI0coXW31l1f5QikSTOankfKfvvanyuhVgnEAgEAoFAILh2eCzaODPGvL29eeihh8jJycFisVBYWMjTTz9NdXU1MHGl2GAwYDQaGR0dlb1epLIMBgMBAQFkZmaSmpqK2Wymr6+PtrY2ioqKuHz5MitWrCA5OZmamhpOnDgh52ZJSkpi6dKlvPfeexw6dAibzUZAQABr165lyZIlBAYG0tzczIEDB3j//fcnrMpOJUxK+YPZz8+P3NxcXn75ZTknw7Vgsh/SqamprFy5ks7OTi5cuEBMTAwLFy5kxYoVvPvuu1RXV7Ny5UoSEhL47W9/i06nIzAwUBbDnHmQGAwGrFYrkZGRLFu2jDvuuINZs2bx7rvv8uabb8qijXr1H9z3oHHleaS8R6/XExAQwJo1azh79iw1NTXySriXl5fsRTVv3jxuv/12Dh8+TGFhIQEBAdx9993Y7XY+//xzysrK6OnpceoJJq1Yh4aGsn79eg4cOCCvrLvbP71ez4wZM0hISGDnzp0UFxfLY6zX67FYLAwNDcllenl5ERUVxaZNm6ivr+fgwYPjwlek74wUGmG1WklISGD69Ol89NFHwJXvoNlsxmg0EhYWRlZWFgsWLJA9sJqamtizZw/79u2jra1Ns++uUBq62dnZ3H777TQ2NnL48GGOHz8+5bnuzNPAYDAQHx/Po48+yoULF3jttdf47LPPrqlg46moJHnTAZreekqMRiO5ubls3LiRyMhIBgYGOH36NLt376aoqMhtT0Sj0YjFYsHb2xuDwUB3dzfDw8N4eXkRERFBVlYWGzduJCMjg6CgIH75y1/y0UcfcfHiRYxGIwEBAcyfP5/PPvsMh8Mxod2S0W80GuVQHWmeSbsmSd6JyrAed5DmY0BAAMuWLSM6Oprf/va3BAUFkZSUhM1mo66uDoPBQHp6OidOnPDYQxNc53KCv4cGKb1JpHAyX19furq6KC4uHrdFtk6nw2q1MnPmTFatWsXHH3/MiRMnMBgMBAUFYbfb6e/vlxMRG41Gpk2bRkREBN7e3vT29lJWViaHx6o9SNWftbxylKFWUj+kZ6P1t0oZUubMY1UrmbN6XER4lEAgEAgEAsH1g8eijbNkh4sWLWLBggW888472O12cnJy+M53vsP/+T//Z1zeFMlgjYuLIyMjg4aGBsrLy+XVVZPJRFJSEg8++CAZGRkUFhbS3NxMREQEOTk5bN++nV/84hf88Ic/JD09nfb2dj755BN+8Ytf0NLSwgMPPEBeXh5FRUX09PQQGRnJ1q1bsVqtvPzyy9x111309vaOy0dwLdDpruxuEx0djdls5vjx4wwNDWm6wUtMJVeD1n0mk4n77ruPZcuW0dbWRkREBAEBAeTl5fH973+fvr4+eRet1tZW6urqSEtL4zvf+Q6NjY3s2LFD0/NGr9cTHh7O+vXr2b59O11dXQQFBZGfn89bb73FuXPnJrTX1Wdl27Wu1ev1GAwGud/qcB5fX19mzJjBTTfdxGOPPcbAwABWq5Xp06ezbNkyFi9ezOnTp3n88cf5y1/+Qnh4OA899BA6nY5jx45RXl7O5s2bycjIYN++feM8VNRtCQ4OJjMzk6ysLP793/993A42Wv3Qeibbt2/nwIEDnDt3ThYaJDFo69atHDhwgNraWry8vFi4cCEPPfQQR48eJS4ujtTUVMrLy+Udx/R6PXFxcbS1tTE6Osqdd95JTEwMH330ETrdlW3e169fT3p6OqmpqSQlJWG1Wnnttdd45plnMBgM3HfffaSnp9Pc3Mz+/ftdPidn5wwGA9nZ2TzyyCP09PQwd+5c7HY7BQUFE8bIUy8C9bng4GB+8pOfMDQ0xLPPPsuZM2cm9cJwJQBKgsTVEBoaKodelpeXOxWQdDodPj4+/PM//zOvvfYaeXl5+Pj4kJOTwyOPPMIzzzxDS0vLuOtBex7FxcWxfPlytmzZQlBQEM8//zyFhYUsWrSIlStXEhYWRn5+PrGxsbz88svs2LGD9vZ2AgMDmTFjBhs3bqSrq4sTJ07I7z11CI+Pjw/JyclYLBa6urqoqalBp7sSZpiQkEBjYyO1tbW0tbW5/d7U6/XMnz+f6OhoQkJCuPnmm3n22Wfp6uriZz/7Gbm5uTQ2NvLBBx8wNDTEq6++is1mcxk2547HiNITCZggxCjvjYuLo7a2lubmZjlPlHSfXq9n4cKFLFy4kMrKSnbv3o3ZbCY8PJwtW7YAV5I5Hzp0CJ1Oh7+/P48//jgjIyNYLBaGh4f58MMPOXbsGA6HA6PRKO/wpBTAlAsGyl2opGuVfVYKx85EGantzsZGqtdgMMjlSv9di925BAKBQCAQCATXlimFR0kGttlsxtvbG4DnnnuOAwcOcOTIEaqrqzl16hQ/+clPSExMpKqqSjYMMjMzWb58OSEhIYSEhJCVlcUbb7zBxx9/zOXLl5k7dy4//vGPOXjwIA8++CAdHR3yCmZWVharVq3iBz/4AbGxsTz//PPY7XZSU1N59NFHefvtt8nMzOQPf/gDvb29rF+/npUrV9Ld3c3//M//8OSTT9Lf38++ffs4c+aM075NhbGxMQICApg7dy6HDx+WBRvpR7AUonDrrbdSUFBAeXn5pElUledceQTo9XrCwsJobGykoqKCY8eOcerUKerr6+XtfBcsWICfnx+NjY08+eSTrFmzhtLSUtavX8+ZM2coKyubYBytW7eOu+66ixUrVhAeHk5rayv//d//zSuvvEJnZ+eUVsSdsXTpUjZv3kx4eDgdHR0EBgZy9uxZfve738mGelxcHEuXLuXIkSOUlJQQExPD008/TVZWFmFhYURFRXHLLbdQXFxMamoqgYGB7Ny5k7feeovOzk6io6PZt28fDzzwAMHBwXR1dcnGlSSOSN4qS5cuZcOGDeNCcdR5RNTGjdLjSvII2r59O21tbVitVlJSUli3bh3z5s0jJSWF2tpaHA4Hubm5rFy5kj179vD+++/z7LPP0tvbK88hX19fFixYwEMPPcSnn34qC5t1dXU0NTXx8MMPk52dzZ/+9Cdqamq47777OHfuHP/yL/9CXV2dXM6bb77J8PAwly5dmtIz8vX1ZeHChTz//PP86Ec/orCwkM2bN8vnent7ZYHWYDCQlJSE0WikoqLCI7FEr9eTmprKP/3TP7F582ZuuOEGiouLGRwcdCu8Q4lOpyMtLY25c+cSGhrKSy+9pJnE1xXSs87KyuLHP/4xIyMjNDc3U1JSwp/+9CdNI1cyzJubmxkcHOTy5ctUV1fL+VFmzJghCyBa9+v1eqKjo9m2bRvh4eE0Nzfz5z//mcjISF5++WWampqor6/nyJEj7Nq1i9zcXOrr6/n973+PzWZjxowZ5ObmsmTJEi5evMhLL70k90WZ98THx4fc3Fy2bdtGeXk5Bw8e5MKFC8TGxrJt2zYWLVrExYsXiYmJ4YMPPuCNN96QxTmpHPV7QBpTf39/srKyWLt2LeHh4Zw4cYKtW7cyZ84c2tvb6e7uRq/X09nZybvvvjtOsFF6z/X29o4TXtTj5O3tjclkwmazjQv70rpeyzvl0qVLcqisJJrAlVxKOTk5+Pr68uGHH5Kbm0tkZCQANpuNoKAgUlJS+OKLL7Db7dx33334+flx+vRpYmNjiYuLk//uTZs2jWXLlrF06VJaWlp4//33KSwslIVptZCmDJ/S8mKEv2/hrUbZB/VzUb63XHkaCgQCgUAgEAiuH6YUHmWxWDCZTIyNjTE0NMTcuXMJCwtj9+7dVFZW0t/fT2trK83NzSxZsoQLFy7IYUtWq5UzZ87Q0NDAvHnziIuLkw2bOXPmsH37dvbu3cvrr79Od3c38fHx5ObmkpKSQmtrKx0dHWzdupX/+q//4oMPPsDX1xeDwUBOTg73338/7733Hi0tLSxbtoxFixYxNjbGuXPneOaZZ+RV0aampgleAVLftD5LP5hdCScGg4GIiAgWL17Mf/7nfxIdHc3mzZtJSEiguLiYvLw8kpOTmT9/PtXV1fIqp1Sesx0/3CEjI4O0tDT++Mc/cujQIVpaWujv75fDcRISEsjKymLOnDm0tLRQUlLCY489xty5c/H19Z2wui0xY8YMZsyYwfDwMH/5y1/461//SnFxMV1dXZPuWqQeO2e5GOCKl9ZTTz3F+fPneffddyktLSU0NJR77rmHNWvW8NlnnzE2NsaMGTPIyMjgjTfeYPny5WzatImQkBBaW1vR6a4kFNXpdDQ3NxMdHc2LL77IwYMH6evrIy0tjW3btvH888/j6+tLREQE8fHxxMbG8umnn9Ld3S3vOOXt7U1KSgqjo6Ps3r3bpfeG1nEpWXJXVxc9PT0sXbqUZcuWkZiYSGtrK4WFhYSGhtLW1sbdd99NTEwMZ86cobCwkMcee4yZM2cyODiI3W7H39+fuXPn8vDDD/PWW29RW1vLz3/+c2pqavD19eXRRx8lPz+fn/70p7S2thITE4PdbsfX15exsTEGBwfl8S4vL5fFBE/DAE0mE8nJyTz88MP88Y9/5Pjx4/T19XHhwgUSExPZsmULs2fP5oknnsDhcHDDDTdw44030tbWRnV1NXa7fVIvCWn1f968edx9993ceuutvPbaa3KIyVRW/728vLjttttYvnw5x48fHydYmM3mceGZWkhJhKdPn87TTz/Nzp07qaysJDExkfT0dG6++Wa8vLzw9fVlz549dHR0yGU5HA527NjBo48+itlsZnBwEC8vL44dO8bp06cnJIVWeohIovTly5c5evQohYWF+Pn5cffddwPwt7/9jby8PAYGBsjMzGTOnDk89dRTDAwMkJyczLp160hPT6empoaXX34Zu91OcnIyAwMDcn6r1NRUbrvtNurr6/nNb34j75YUExPD1772NeLi4njllVfYtGkTzc3NtLW1ySKw1N7Q0FAcDoe8wxL8XTSwWq0sXLiQBQsW0NvbS2hoKCUlJbz++uts27aNM2fOcODAAQ4cOMDAwICci8XHx4evfe1rLF26lO7ubt544w2qqqrk96Q0h4xGo7wIEBoayvnz5ykoKJjgNajeXlt5TkoOLiUVlp6Hl5cXd955pyy8PP7449TX1/Pee+/R1tZGTk4OkZGRhIaGyt43koCZmJhIZWUlR44cITAwkCeeeILk5GSCg4M5d+4cJ06coKGhgeDgYPz9/WUB3Gg04nA46O3tnRCu6iz8VMszxtn32lk4p1TOVJOUCwQCgUAgEAi+XKbkaTM8PCz/wJYMib1793L+/HnZoO/v76exsZGEhATMZjMbNmzAbDZz6dIl/P392bhxI1arlb/97W+cOXOGgYEBpk2bxowZMygoKCAuLo758+cTGRlJT08PJ0+exG6388QTT9Da2srRo0e5dOkSGRkZ+Pj4MDo6SlpaGn/4wx9wOBxkZWWRlJREY2MjERERfPrpp5w5c4bGxsZxuyZJaBmU7q7qS+MQFRVFSEgIOp2ORx55hL6+PoKDg0lNTaW9vR0vLy+8vb2pqamRt7oNCQkhKSmJmJiYcTl23MVkMrF27VouXLhAaWkp9fX14zx4dDqdPBZjY2OUlpby7rvvUl5ezrJly2hsbHQa4jE6OkpjYyMnT57ktdde49y5cxMSzk42Nmq0wh3Wr19PQ0MDhw8fJj8/n87OTrq7uxkaGsJqtTJt2jRmzpzJ8uXLsVqtpKWlkZOTQ0BAADabjd7eXry9vRkYGKC/v5+qqir8/f1paWnBx8eHOXPmsGjRItlb48CBA8TGxspeNnPnzmX58uV0d3ezePFiEhMT6evrIy8vj5aWlglGnzQ2zgyl0dFRent7MZlMsmfGhQsX+Pjjj2loaGDZsmWUl5eTmZlJXFwcDocDs9nM17/+dZYuXcoXX3yBzWYjMDCQrKwsVqxYQVdXF1988QXbtm0jMDCQkJAQLl68yOHDhzl9+jQNDQ2yB8ipU6dYtmwZ9913H7/+9a/lbcYloXIq4kdUVBRz587FYDDwySef0NvbO85wTkhI4MSJE/LnrVu3cvnyZUpKSuSQsNmzZ+Pj40N+fr4sAKjnxsyZM1m6dCkzZ84EYMeOHVPeJUqn0zFv3jy53SdOnJDzlOTm5rJw4UKqq6s5evQoFy5ckO/z8vIiMTGRkJAQRkdH6e/v5+GHHyY/P58vvvgCh8PB9OnTycjI4IYbbmB0dJQPP/wQg8Egh/h5e3sTFhaGXq+nq6uLm2++Wc79c/HiRZdJrfV6PStXrpS9NkZHR1m0aBHJyckMDQ3x3HPPcfToUdra2pg3bx5ZWVl8+umnNDc3k5ycjM1mo6ioiKqqKtkba2xsjPDwcDZt2sTw8LAs7BUXF/PFF19w4cIFbDYbVquV1NRUNmzYQGFhIbfccgs9PT0cP36cc+fO4ePjQ1BQEFFRUcyaNYu0tDR6e3u5fPky7e3tsrBeW1vLihUrMJlM7N27l4MHD9LU1ERnZyerV6+mtLSUkydPUlBQIHu5SZ4gKSkpREdH093dzeHDh7FYLGRmZlJRUSF7cnl7e5OUlMRdd91FXl4era2tcj6Zc+fOORUIle9FpaipnjfStf39/Vy8eJGKigqamprkcTp//rwcPvnggw8SFhbG9OnT2b17t5zoOzExkYSEBFpaWggKCiI0NJTGxkYGBwfJyclh9uzZcrJ0Pz8/QkJCOH/+PDt37hwXuqn2xJHEfWciizuCufLfau8egUAgEAgEAsH1xZREm5GREUZGRrBarSQlJbFkyRJ++MMf0t3dLRuGIyMjDAwMEBISQkxMDEuWLGF4eJiQkBAGBgbQ6XTyamRLSwtms5nh4WF6e3uZNWsWYWFhhIaG0traSmlpKZcuXWLOnDkkJCRw8uRJwsLCmD17NjNnziQsLIyGhgaysrJobm5m2rRppKenEx8fz+XLl2lububIkSMTdhqSkmxK7VUm4NTCladASEgIUVFR6PV6brzxRnx8fPjiiy8IDw/Hx8cHHx8fGhsb8fHxYcaMGfj4+DAyMkJycjIZGRnjdrKS6nK2Mqq8xmKxsGTJEvbv38/Fixc1Q66kRJtVVVXs3buXM2fOyB4GylVeZe4hQF55l8LgfH198fHxYWxsDIvFwujoKDabjb6+Pux2uyxEKdvpyqiQ/h0eHk5PTw8NDQ10dnbKeSXOnz8v56xZtWoVOTk56HQ61q5dS1RUFIWFhVRWVhITE0NAQABHjx6lr6+PM2fOMG/ePFauXMng4CBBQUEMDQ1x7NgxLBYL4eHhLFq0iNHRUS5cuIBOp8Nut8s7faWkpNDT00NpaSnz58+Xk762tbXJOyVJ2xVrMTo6SldXF3v27CE6OppLly6Rl5dHQUEB/f39xMbG4u3tTVRUlCw8Wa1WeWcfLy8vMjMzaW9vx2w2U19fz9mzZ2ltbSU9PZ3a2lrKyso4c+YMZ8+eBa5s997b20tfXx8nT54kKCiIxYsXc+utt7Jjxw66u7snPBODwYCfnx89PT2TenmFhoaSlJREV1cXfX19xMXFER8fT2JioiwiORwOFi1axJYtWwgICOD06dMMDQ2xevVqpk2bRmxsLMnJyTQ2NtLZ2TnuuyZ5syxfvpyIiAiam5sJCwujuLh4ymF4er2e5cuXExQURFVVFWVlZYSEhJCbm0t2dracmLy6upr6+no57CwxMRF/f3/5XZaQkEB4eDhvv/02sbGxBAYGygnNAwMDmTVrFu+//z7p6ekMDAyMG8u2tjb279/Pxo0b5Wfd0tLillfd2NgY0dHReHt7y0LgJ598wt69e+nu7iY4OJjIyEh8fHw4ffo0UVFRjI6O0tHRIX/Hpe+3TqcjLCyMFStW0NfXx7lz56ipqeHQoUNy+Cr8fTel9PR0WltbGRkZoba2FpvNRnx8PLNnzyY8PJysrCwSEhJwOBycP3+ezs5OhoeHGR4eZnR0lLi4OBYuXMjFixc5fvw4R48eZWhoiKioKJYuXcpbb73FyZMn5QTy8HfRJjU1lbCwMOx2OxaLhfXr12MwGLh48aIsGvv4+JCWlkZ6ejpvvPEGkZGRGI1G+W+LM7FGjVL4UL67HA4HX3zxBb6+vjQ1NVFaWjousfzFixc5deoUw8PDOBwO+vv76erqQq/X09fXJ++I1dvby9mzZ5k1axY+Pj7Ex8ej013Zot3Hx4fY2Fi6uroYHh4mMTERHx8fTp48SVNT07ikwlp90AoFdGdOqe9R918gEAgEAoFAcH1xVTltQkNDWblyJWazmaKiIjkEwmQy4ePjg9VqZWRkhAULFhAWFkZiYiL9/f0UFhby2muvyTtxSNt39/b2kpeXR0ZGBl5eXuTn53P48GFaW1uZMWMGq1evpqysjIKCArKyshgZGcHPz4++vj4qKiqYNWuWvMV1UFAQfn5+BAUFUVlZyejoKAEBAXK4gzIJ4+DgoByOosVkrueSx0x0dDReXl6sWrWKV155hbKyMpYsWYLJZKKlpYWysjI6OzvZtGkTpaWlWCwWYmJi0Ov1fPDBB5Mm11S2RQolCQsLIzg4mLy8PM0koWNjY9TW1rJ//35qamo4evSoHA5SUVFBZGSknCRTLdqUlJSwYsUKZs+ezaZNmzh27BjDw8OysCBtnd7Y2DhpmIkrEaempobs7GxiY2Opr6/Hbrfj7e1NRUUFq1atwmKxkJqayvTp0+UwtCNHjnDw4EHOnDnDXXfdRVRUlOyVUVJSwqZNm1i8eDEAlZWV7Nq1i8bGRm688Ubuv/9+WURrbW2lqKiI48ePy/mRmpubMRqNJCYmYjab6e7uxtvbm7KyMqqrqxkcHJxgHKr7Z7PZ+NWvfkVwcLC8zfjIyAgGg4Fjx44RGBjI4OCg7I3R3NzMhx9+SH19PQsXLiQrK4uzZ8/KwqYULlFbW0t9fT3Hjx/nwoULmM1meTvi7u5uWltbcTgctLS0oNPp+Pa3v01eXh69vb2yEWgwGPD19SU6OpqgoCBOnz7tUb6YG264geDgYKZPn05XVxelpaU0NzdjsVhYt24d9957L3/+85/lnbxmz56NXq+no6ODlStX8uGHH1JbWyt75el0OpKSkti0aRMxMTHU1NRQV1dHWFiY7IXh7lxSotfryc7OZmhoiPPnzxMQEEBGRgZ33HGHnO/JYrEQGhpKbGws0dHRZGdnk5ycTHl5OcXFxfj5+bFmzRoqKysJCAggOzub4eFh6urq+OCDD9i/fz+PPvoo/f39pKen4+fnJ4dCVVdX09nZSU1NDc3NzVitVkJCQmTvBmcJX0dHRzlx4gTLly8nKioKnU5Hfn4+n332mSykAAQFBWGxWOjv70en0xEdHc2RI0fkZymJYpL3T0REBN3d3bJ4e+jQITo6OsYJSCMjI/L3OikpSf5OpaSkEBAQQEhICAEBASxfvpy6ujoOHjzIqVOnqKqqoq2tjeHhYXx8fLj99tuxWq0cOXKEgoICbDabnEw7OjqayspKmpubxyUbl8YkNDQUHx8fAgICWL9+PWvWrKGwsBCLxTLOw8tisdDe3i6/A6uqqqipqZkwT7TmjCuPSkm0+eSTT2TPFmmMpHCkrq4uPv30U/Ly8vD29pZzTwUHB2M2m6mpqaG8vJz6+nrginBut9tJSEhAr9dTXl7OsWPHqK+vp66uTh6/qKgoYmJiqK6u5vLlyxMES2nOKMUWd0NSJVyFqrqalwKBQCAQCASCfwxTEm3gSj6I1NRU7rzzTg4cOIDZbMbPz4/R0VF5553IyEg+/vhjFi9eTFFREV5eXgwMDFBQUMDY2BgLFiwgKiqKadOmMTw8TENDA2+//TbV1dWyMTc2NkZMTAw5OTnk5ORw7733UlJSQmZmpvyjvbW1lZCQEO69917+9V//lYGBAfLz87l06RLZ2dls376dzz//XN6SOyQkRDaUpe3CJ/NqUaKV68ZkMhEREUFmZiY/+clPaGhoIDs7m/j4eM6ePUtRURFdXV18//vf55577iE1NZWcnBzq6up45ZVXOH/+/DjjabK64UoYx4IFC/jss8+oqakZ5+qvFBTy8vI4fvy4bMhJfPLJJ3KIkDqHwtjYGNXV1bzwwgvMmTOH7OxsNmzYQG9vLxcvXqS8vJy6ujoaGxunHL4isW/fPrZu3cqKFStoaWnh5MmTcjLVnJwcXnzxRc6dO0dSUhJeXl7s2LGDF154gYaGBkJDQ7Hb7fT19dHe3k5NTQ0NDQ08/PDDBAYGMjw8TE9PDzabjdjYWJ577jkCAgI4fPgw77//PocPH5YTokZHRzN//nx27tzJ559/Los1PT099Pb2YrPZ5NwX7tDV1TVBdBgZGaGmpoYXX3xxXFJYqczCwkJSUlK4dOkSPT0944Q0nU7Hz372M/n5wBUPldHRUVJTU5k/fz4RERHyDlwmk0nekl1CEltzcnL4xje+QXFxMVVVVZMmxa6qquLQoUP84Ac/4MUXX+T06dO8++67HDx4kMbGRtlzSAozy8nJYdGiRdTU1PDWW29x+PBh0tLSuO2225g7dy61tbWUlJRgs9kwm8089thjpKen8+KLL1JXV0dmZiZNTU2aoYxauPKCa29vJyQkhCeffFL2CiwoKOCVV14hKCiI6dOns2TJEtavX8/OnTt58cUXaWxsZHh4mNmzZzMyMsLatWuJjo7mo48+4vDhw9TX1+NwODCZTLKQ0tTUxPLly7npppuYPXs2o6OjeHl5YbFYOHPmDGfOnKGiosJpfiQl1dXVfOc738FoNDIyMiJ7sKixWCxyWOnrr7+umZ9K+hweHs7rr79OXl4eVVVV40RqyXDv7u5m//79tLW1sXr1amJiYjCZTJSXl8shqYGBgdTW1rJr1y6qqqqw2Wxy24xGI9HR0axdu5bf/e538ntPKr+3t5ff//73NDQ0aNYPUFFRgV6vx9fXF4COjg5eeuklWayx2+20trayb98+jEYjP//5z3n22WeprKyUPbiUTPZeVc4dZX4XtQeQ+rqhoSGGh4fp7+9ndHSUZ599Fi8vL3lbdUmQMhqN/PrXvyY4OJhLly7R1tYme+odO3ZMLrezs5P09HRmzJjBokWLOHLkyIT3h/JdoRZv1GOpJd6oBRppfNR9EwgEAoFAIBBcP+g8+YGm1+vHjEYjOp2OWbNmsXnzZu69915effVVli5ditlsZmBggI6ODqqrq9m/fz9FRUXyj1dpR5MVK1YwPDxMUVERn3/+ORUVFXR1dck7f0hbnur1ekwmE1u3buWmm26ioaGBn/70p4yMjMg/+KUfm3q9nsjISIKCgqivr2d4eBhfX1+SkpJYvXo1AQEBtLa2UlFRQVlZGU1NTbLY4I5gM9mqflxcHCtWrOCuu+7CbDaj0+koLy9n3759nDp1atz2vnq9nm984xvMmjWL4uJieVcfV2jVHxgYyHe/+1327NlDcXHxpGVMBeUKuPRsYOLW71MpVxIcjEYjK1eu5Nvf/jaXLl3il7/8JQ0NDYSFhfHMM88QHh6Ol5cXNTU17N27lyNHjmC32xkdHcVisbBw4ULS0tLo6Ojgo48+kueGso0hISG88sorrFy5khdeeGGcOChx//33M23aND766CM5QakSZwafu54fnuJpudIua+Hh4QC0tLTQ1dXF4OCg3Jf4+HjWrVvHpk2beOqppygvL/do3kheOjabTd62WHkuISGBb33rW5SWlnLq1Cnq6upkMVHaUSokJIS2tjYaGhoYGhoiODiYt99+m6eeeoqysjJMJhMzZ87kxhtv5Oc///lVzbVt27Zx7733EhcXx9GjR/nVr35FdXU1FouFH//4xyxevBibzcbhw4fZt28fJSUl48JSpBBEHx8furu7J/RZQvqe+Pj4EBcXx4wZM/D396eoqIi6ujq6u7tdjrPSaJbmlPL/zhIWW63WcTssAeO2hZZQ7yYkfZ+lOab0dpHevcq5LZUtfVbuXKT8DklePQaDYdxYqd8f6nYoj0tekKmpqdxzzz2sXr2aQ4cO8c4773D+/Hl5Nzm9Xo+/vz+fffYZDzzwAOXl5dhstnHlu5o7WmFUyvebOnRosh2ZtI6Njo6OE1GVQpDSy0gaR+l56/X6caKPWqyRrouOjsbhcNDT0yO/E9V9V7bb2c5S0vOUFkuUf2MFAoFAIBAIBF8Zp8bGxuarD05JtLFarWzevJnbbruN3t5evve97xEYGIjZbGZoaIj+/n45rh/GJ9g0mUzyzlMOh0POI6LOJWM0GjEajcyYMYPt27cTHBzMv/zLv3Dx4kX5WuUPVKXQo0zcKOWt0ev1E1ZAXeHOarj6nNlsxmq1yvdKCT/VYUMzZ87k+eefZ+fOnezatcupp4+zepR99vf3Hxf68mWiNk60wsYmCyWDK9sMz58/n2eeeUYOVzMajSQlJVFWVsbLL7/Mjh07ZCNYMlqk8VQbEyaTCYPBIK9+axEUFMRTTz3F2bNn+fjjjzV3wJo3bx7e3t5UVlbS2to6oQxXos1kwoqzVW/lMXfC47TaorxfygcEE5MlR0VFsWXLFhISEvjzn/9MaWmpU2FKy6B1RzzS6/VYLBY575XaM0ky6iUDUSrX399fNsbhihFptVo1c/Go+++qfRaLBW9vbwwGwziviNHRUVnwgCtJmoeGhsZ5+CkxGAxuf8cMBgOSuD0yMuIybNAV6nZoCQruCnta1yrLVie1lepS7hYl3TM2NiZ/36R7lahFAmVbXYXmSNdLc9hgMODl5YXVamVgYIDBwcFx725vb28WLlzISy+9xObNm7lw4YI836RyPBX81EnH1e1VClvKuap+LypFHqVQIv2dku4DNP8GKoVytWAkeUXqdDoee+wx/P39KSgoYN++feP6oPU8pe+BVu42ZZ8cDocQbQQCgUAgEAi+ejRFmylt+Z2YmEhsbCx2u52ioiI5ASogG0RaBo6U90S9GqqF9IN11apVmM1mjh8/zqVLlzQFG6lsYILRpcy1MpnhNFWPCaW7vOQtpGX4wZUfz7fddhvFxcUUFRVx+fJlp4ayVhlqQ0tp1LojmLjTF60ylAaEM88krTq1DIPBwUFKS0v5xS9+ga+vL15eXvI5yRtKep7Kna2cPT8pAaorent7efnll+nr69MMoQAoKytDr9dPuqOM8rP635M9A3e8uq4GZViHsg1ms5lNmzZhMBjksJar9ZZyVr+rJM1agunY2Bjd3d0TylHvVKYce7U3ivK8ksHBwXFCnvKagYEBzbZqfQfdEWyU114LEdWVGKglEkhoPVdJIHAmEKqPa72T1HPf2fxRepNI9ynLUHsQKYUg6RrpPT88PMzAwMC4uiVBb8aMGXz3u9/lr3/9K+3t7eO2sncm2EwmkCrbrjX3pHBGpReO1nxWzyGlcCOdVwpiSjFTKfKpQ5jUXlcff/wxUVFR4/6m+vn5kZqaSlxcHBEREfj7+8vl9vT0cOzYMRoaGsYlVnY1JgKBQCAQCASCfyweizZ6vZ74+HgCAwNpbW3l5MmT18xIUSIJP11dXeTn53P69GlZEPHES8aVQefO/a6Oa/2wVxsnSvR6PSkpKSQlJfHuu+9SU1Nz1SFNzsQoVwKU0lBydo2zPkw2BpMZ0XDFcO/s7KSgoAAvLy85fGBkZITBwcFxBoi7Qpuyfi0cDgf19fUuy3MlNrgSz1zVqz4/2fg5u9ZdA94Zc+bMITg4mPLycs6ePSuP8WTeY18GrvqivMaVZ4h03JngqS7L2X3utNVdvgyj15lopTUflaE8zspR/l9rXJRjrf6svM4V7tyjFnSceeJ4e3uTkJCAzWajp6cHs9ks5/BZunQpHR0d7Nmzh/7+fs263RHCtVC3xdl7cLJ+wd+FHuW90mdpkUESrFy1U6vO+vp6ecc9CS8vL6ZPn05KSgomk4m+vj46OjpobGykt7eXzs7OcaHIFosFs9ns1i5yAoFAIBAIBIKvHo9FG5PJRHBwMN7e3nR2do7zipgKzn78SuLMqVOn6O/vp6Gh4Uv/QelOmIonqH/4e3l5ccMNN9DY2EhxcTEdHR3XpJ6r5Wr6q3Wvq7ANpbHS398/ztjSWqHWqudaeBFNJlipr3enbE/KciamuapXbZhP1j5lHfPnz6epqYny8nLNeefOePwj8OQ7eb21/atES7TRGjN1GJQ75WmV6ep5uCPaaH3Xtb4jRqORoKAg4uPjGRoaIjQ0lOjoaOLi4ggICGDHjh2cO3cOh8Mx7h3iroDnrL1axyfznFOKXFritXrs1e9J5W5f6uudCbhDQ0MTQkIlj5qGhgYGBgZoamqitbWV+vp6hoaG5HrGxq4kdg4MDCQhIYHy8nK6u7u/klBbgUAgEAgEAoH7eCzaeHt74+vri9FoxGazyTuDXCvUK65FRUWAc48Sd5jsB7zWaqk7RokndZtMJsLDw1m7di3/9m//Ju84M5nBoP6s9ePdWXu1jA53vBM8EQScXeeOJ4W6Pk+fr7tCgyeeFVrtc1WOM88iT1b0v4x2SddKq/gRERG89957VFVVyfc4K99do16rHKXXhNZ5LSHuasQW5dxxtxx35vZU3jVTvc9TtMRH9b/Vx3Q63QSPD6m96jxgWh436u+nszAidZ3ORB7181KWLx0fHR2lv7+f6upqbrzxRmJjY0lNTWVsbIyqqirefPNNOQG7qzFx1Q6t+SkJKFrtVYZHadWjDINSCjHSNWohRgqJUoo9Uv4k9ftdKf6oPXOUSAnZleOqrFOdC87Hx4fMzEy6urrknE//PwugAoFAIBAIBNcbHos2VquV2NhYhoaGqKiouOrwHmeeGP/olf/JVlU9JTQ0lI0bN3Lu3DmKi4vl1VG1kTBVAcKZV4qayVaTXdXrSXsmK2cy8cmVse8pk42XK9xph7M+TXaNO+1xZx66M/5lZWW0tbV9qclF3fHCmCpflSACU2//tWifegt4LVwJC9J55f3KnaC07lMKBlpCilrIkcp0ljPGXS8XV9cpBYqWlhbefvvtCX1R5kdS91eJKw9NLRFLLVipRSz1fZLwpXWfUihTli+N3/DwMAaDQc6jJZUjiTKSsK8sx5lgo6xf7S3jbG4MDQ1RVVVFTU3NhJ2+BAKBQCAQCATXBx7tHqXT6dqAui+vOQKBQCAQCAQCgUAgEAgE/98RPzY2FqY+6JFoIxAIBAKBQCAQCAQCgUAg+GrQT36JQCAQCAQCgUAgEAgEAoHgq0aINgKBQCAQCAQCgUAgEAgE1yFCtBEIBAKBQCAQCAQCgUAguA4Roo1AIBAIBAKBQCAQCAQCwXWIEG0EAoFAIBAIBAKBQCAQCK5DhGgjEAgEAoFAIBAIBAKBQHAdIkQbgUAgEAgEAoFAIBAIBILrECHaCAQCgUAgEAgEAoFAIBBchwjRRiAQCAQCgUAgEAgEAoHgOuT/AqLPFN7MFmX7AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<Figure size 1440x1440 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "for i in range(190, 200):\n",
+ " plt.figure(figsize=(20, 20))\n",
+ " plt.xticks([])\n",
+ " plt.yticks([])\n",
+ " data, target = dataset[i]\n",
+ "# print(target)\n",
+ " print(to_text(target))\n",
+ "# target = [x - 26 if x > 35 else x for x in target]\n",
+ "# sentence = convert_y_label_to_string(target, dataset) \n",
+ "# print(target)\n",
+ "# plt.title(sentence)\n",
+ " plt.imshow(data.squeeze(0).numpy(), cmap='gray')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "target.tolist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset.target_transform"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from text_recognizer.networks.transducer import load_transducer_loss, Transducer"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "t, i =load_transducer_loss(64, \n",
+ " 0,\n",
+ " \"iamdb_1kwp_tokens_1000.txt\", \n",
+ " \"iamdb_1kwp_lex_1000.txt\",\n",
+ " \"1kwp_prune_0_0_optblank.bin\",\n",
+ " \"optional\",\n",
+ " False,\n",
+ " False,\n",
+ " False,\n",
+ " None,\n",
+ " \"mean\"\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "t(target, target)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "target.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/src/notebooks/intersection.pdf b/src/notebooks/intersection.pdf
new file mode 100644
index 0000000..c425a9f
--- /dev/null
+++ b/src/notebooks/intersection.pdf
Binary files differ
diff --git a/src/tasks/build_transitions.py b/src/tasks/build_transitions.py
index b12c9bc..91f8c1a 100644
--- a/src/tasks/build_transitions.py
+++ b/src/tasks/build_transitions.py
@@ -9,7 +9,7 @@ Most code stolen from here:
import collections
import itertools
from pathlib import Path
-from typing import Dict, List, Optional
+from typing import Any, Dict, List, Optional
import click
import gtn
@@ -18,7 +18,7 @@ from loguru import logger
START_IDX = -1
END_IDX = -2
-WORDSEP = "_"
+WORDSEP = "▁"
def build_graph(ngrams: List, disable_backoff: bool = False) -> gtn.Graph:
@@ -27,7 +27,7 @@ def build_graph(ngrams: List, disable_backoff: bool = False) -> gtn.Graph:
ngram = len(ngrams)
state_to_node = {}
- def get_node(state: Optional[List]) -> gtn.node:
+ def get_node(state: Optional[List]) -> Any:
node = state_to_node.get(state, None)
if node is not None:
diff --git a/src/tasks/make_wordpieces.py b/src/tasks/make_wordpieces.py
index f605920..2ac0e2c 100644
--- a/src/tasks/make_wordpieces.py
+++ b/src/tasks/make_wordpieces.py
@@ -30,7 +30,7 @@ def iamdb_pieces(
user_symbols=["/"], # added so token is in the output set
)
- vocab = sorted(set(w for t in text for w in t.split("_") if w))
+ vocab = sorted(set(w for t in text for w in t.split("▁") if w))
if "move" not in vocab:
raise RuntimeError("`MOVE` not in vocab")
diff --git a/src/text_recognizer/datasets/iam_preprocessor.py b/src/text_recognizer/datasets/iam_preprocessor.py
index 5a5136c..a93eb00 100644
--- a/src/text_recognizer/datasets/iam_preprocessor.py
+++ b/src/text_recognizer/datasets/iam_preprocessor.py
@@ -59,7 +59,7 @@ class Preprocessor:
use_words: bool = False,
prepend_wordsep: bool = False,
) -> None:
- self.wordsep = "_"
+ self.wordsep = "▁"
self._use_word = use_words
self._prepend_wordsep = prepend_wordsep
diff --git a/src/text_recognizer/datasets/transforms.py b/src/text_recognizer/datasets/transforms.py
index 60987e0..b6a48f5 100644
--- a/src/text_recognizer/datasets/transforms.py
+++ b/src/text_recognizer/datasets/transforms.py
@@ -1,6 +1,10 @@
"""Transforms for PyTorch datasets."""
+from abc import abstractmethod
+from pathlib import Path
import random
+from typing import Any, Optional, Union
+from loguru import logger
import numpy as np
from PIL import Image
import torch
@@ -18,6 +22,7 @@ from torchvision.transforms import (
ToTensor,
)
+from text_recognizer.datasets.iam_preprocessor import Preprocessor
from text_recognizer.datasets.util import EmnistMapper
@@ -145,3 +150,117 @@ class ToLower:
"""Corrects index value in target tensor."""
device = target.device
return torch.stack([x - 26 if x > 35 else x for x in target]).to(device)
+
+
+class ToCharcters:
+ """Converts integers to characters."""
+
+ def __init__(
+ self, pad_token: str, eos_token: str, init_token: str = None, lower: bool = True
+ ) -> None:
+ self.init_token = init_token
+ self.pad_token = pad_token
+ self.eos_token = eos_token
+ if self.init_token is not None:
+ self.emnist_mapper = EmnistMapper(
+ init_token=self.init_token,
+ pad_token=self.pad_token,
+ eos_token=self.eos_token,
+ lower=lower,
+ )
+ else:
+ self.emnist_mapper = EmnistMapper(
+ pad_token=self.pad_token, eos_token=self.eos_token, lower=lower
+ )
+
+ def __call__(self, y: Tensor) -> str:
+ """Converts a Tensor to a str."""
+ return (
+ "".join([self.emnist_mapper(int(i)) for i in y])
+ .strip("_")
+ .replace(" ", "▁")
+ )
+
+
+class WordPieces:
+ """Abstract transform for word pieces."""
+
+ def __init__(
+ self,
+ num_features: int,
+ data_dir: Optional[Union[str, Path]] = None,
+ tokens: Optional[Union[str, Path]] = None,
+ lexicon: Optional[Union[str, Path]] = None,
+ use_words: bool = False,
+ prepend_wordsep: bool = False,
+ ) -> None:
+ if data_dir is None:
+ data_dir = (
+ Path(__file__).resolve().parents[3] / "data" / "raw" / "iam" / "iamdb"
+ )
+ logger.debug(f"Using data dir: {data_dir}")
+ if not data_dir.exists():
+ raise RuntimeError(f"Could not locate iamdb directory at {data_dir}")
+ else:
+ data_dir = Path(data_dir)
+ processed_path = (
+ Path(__file__).resolve().parents[3] / "data" / "processed" / "iam_lines"
+ )
+ tokens_path = processed_path / tokens
+ lexicon_path = processed_path / lexicon
+
+ self.preprocessor = Preprocessor(
+ data_dir,
+ num_features,
+ tokens_path,
+ lexicon_path,
+ use_words,
+ prepend_wordsep,
+ )
+
+ @abstractmethod
+ def __call__(self, *args, **kwargs) -> Any:
+ """Transforms input."""
+ ...
+
+
+class ToWordPieces(WordPieces):
+ """Transforms str to word pieces."""
+
+ def __init__(
+ self,
+ num_features: int,
+ data_dir: Optional[Union[str, Path]] = None,
+ tokens: Optional[Union[str, Path]] = None,
+ lexicon: Optional[Union[str, Path]] = None,
+ use_words: bool = False,
+ prepend_wordsep: bool = False,
+ ) -> None:
+ super().__init__(
+ num_features, data_dir, tokens, lexicon, use_words, prepend_wordsep
+ )
+
+ def __call__(self, line: str) -> Tensor:
+ """Transforms str to word pieces."""
+ return self.preprocessor.to_index(line)
+
+
+class ToText(WordPieces):
+ """Takes word pieces and converts them to text."""
+
+ def __init__(
+ self,
+ num_features: int,
+ data_dir: Optional[Union[str, Path]] = None,
+ tokens: Optional[Union[str, Path]] = None,
+ lexicon: Optional[Union[str, Path]] = None,
+ use_words: bool = False,
+ prepend_wordsep: bool = False,
+ ) -> None:
+ super().__init__(
+ num_features, data_dir, tokens, lexicon, use_words, prepend_wordsep
+ )
+
+ def __call__(self, x: Tensor) -> str:
+ """Converts tensor to text."""
+ return self.preprocessor.to_text(x.tolist())
diff --git a/src/text_recognizer/networks/__init__.py b/src/text_recognizer/networks/__init__.py
index bac5d28..1521355 100644
--- a/src/text_recognizer/networks/__init__.py
+++ b/src/text_recognizer/networks/__init__.py
@@ -8,7 +8,7 @@ from .lenet import LeNet
from .metrics import accuracy, cer, wer
from .mlp import MLP
from .residual_network import ResidualNetwork, ResidualNetworkEncoder
-from .transducer import TDS2d
+from .transducer import load_transducer_loss, TDS2d
from .transformer import Transformer
from .unet import UNet
from .util import sliding_window
@@ -28,6 +28,7 @@ __all__ = [
"greedy_decoder",
"MLP",
"LeNet",
+ "load_transducer_loss",
"ResidualNetwork",
"ResidualNetworkEncoder",
"sliding_window",
diff --git a/src/text_recognizer/networks/cnn_transformer.py b/src/text_recognizer/networks/cnn_transformer.py
index 7133c26..a2d7926 100644
--- a/src/text_recognizer/networks/cnn_transformer.py
+++ b/src/text_recognizer/networks/cnn_transformer.py
@@ -112,11 +112,11 @@ class CNNTransformer(nn.Module):
if self.max_pool is not None:
src = self.max_pool(src)
- if self.adaptive_pool is not None:
+ if self.adaptive_pool is not None and len(src.shape) == 4:
src = rearrange(src, "b c h w -> b w c h")
src = self.adaptive_pool(src)
src = src.squeeze(3)
- else:
+ elif len(src.shape) == 4:
src = rearrange(src, "b c h w -> b (h w) c")
b, t, _ = src.shape
diff --git a/src/text_recognizer/networks/transducer/__init__.py b/src/text_recognizer/networks/transducer/__init__.py
index fdd6662..8c19a01 100644
--- a/src/text_recognizer/networks/transducer/__init__.py
+++ b/src/text_recognizer/networks/transducer/__init__.py
@@ -1,2 +1,3 @@
"""Transducer modules."""
from .tds_conv import TDS2d
+from .transducer import load_transducer_loss, Transducer
diff --git a/src/text_recognizer/networks/transducer/tds_conv.py b/src/text_recognizer/networks/transducer/tds_conv.py
index 018caf2..5fb8ba9 100644
--- a/src/text_recognizer/networks/transducer/tds_conv.py
+++ b/src/text_recognizer/networks/transducer/tds_conv.py
@@ -136,8 +136,10 @@ class TDS2d(nn.Module):
self.tds = None
self.fc = None
- def _build_network(self) -> None:
+ self._build_network()
+ def _build_network(self) -> None:
+ in_channels = self.in_channels
modules = []
stride_h = np.prod([grp["stride"][0] for grp in self.tds_groups])
if self.input_dim % stride_h:
@@ -151,7 +153,7 @@ class TDS2d(nn.Module):
modules.extend(
[
nn.Conv2d(
- in_channels=self.in_channels,
+ in_channels=in_channels,
out_channels=out_channels,
kernel_size=self.kernel_size,
padding=(self.kernel_size[0] // 2, self.kernel_size[1] // 2),
@@ -173,12 +175,10 @@ class TDS2d(nn.Module):
)
)
- self.in_channels = out_channels
+ in_channels = out_channels
self.tds = nn.Sequential(*modules)
- self.fc = nn.Linear(
- self.in_channels * self.input_dim // stride_h, self.output_dim
- )
+ self.fc = nn.Linear(in_channels * self.input_dim // stride_h, self.output_dim)
def forward(self, x: Tensor) -> Tensor:
"""Forward pass.
@@ -193,6 +193,9 @@ class TDS2d(nn.Module):
Tensor: Output tensor.
"""
+ if len(x.shape) == 4:
+ x = x.squeeze(1) # Squeeze the channel dim away.
+
B, H, W = x.shape
x = rearrange(
x, "b (h1 h2) w -> b h1 h2 w", h1=self.in_channels, h2=H // self.in_channels
diff --git a/src/text_recognizer/networks/transducer/test.py b/src/text_recognizer/networks/transducer/test.py
new file mode 100644
index 0000000..cadcecc
--- /dev/null
+++ b/src/text_recognizer/networks/transducer/test.py
@@ -0,0 +1,60 @@
+import torch
+from torch import nn
+
+from text_recognizer.networks.transducer import load_transducer_loss, Transducer
+import unittest
+
+
+class TestTransducer(unittest.TestCase):
+ def test_viterbi(self):
+ T = 5
+ N = 4
+ B = 2
+
+ # fmt: off
+ emissions1 = torch.tensor((
+ 0, 4, 0, 1,
+ 0, 2, 1, 1,
+ 0, 0, 0, 2,
+ 0, 0, 0, 2,
+ 8, 0, 0, 2,
+ ),
+ dtype=torch.float,
+ ).view(T, N)
+ emissions2 = torch.tensor((
+ 0, 2, 1, 7,
+ 0, 2, 9, 1,
+ 0, 0, 0, 2,
+ 0, 0, 5, 2,
+ 1, 0, 0, 2,
+ ),
+ dtype=torch.float,
+ ).view(T, N)
+ # fmt: on
+
+ # Test without blank:
+ labels = [[1, 3, 0], [3, 2, 3, 2, 3]]
+ transducer = Transducer(
+ tokens=["a", "b", "c", "d"],
+ graphemes_to_idx={"a": 0, "b": 1, "c": 2, "d": 3},
+ blank="none",
+ )
+ emissions = torch.stack([emissions1, emissions2], dim=0)
+ predictions = transducer.viterbi(emissions)
+ self.assertEqual([p.tolist() for p in predictions], labels)
+
+ # Test with blank without repeats:
+ labels = [[1, 0], [2, 2]]
+ transducer = Transducer(
+ tokens=["a", "b", "c"],
+ graphemes_to_idx={"a": 0, "b": 1, "c": 2},
+ blank="optional",
+ allow_repeats=False,
+ )
+ emissions = torch.stack([emissions1, emissions2], dim=0)
+ predictions = transducer.viterbi(emissions)
+ self.assertEqual([p.tolist() for p in predictions], labels)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/src/text_recognizer/networks/transducer/transducer.py b/src/text_recognizer/networks/transducer/transducer.py
new file mode 100644
index 0000000..d7e3d08
--- /dev/null
+++ b/src/text_recognizer/networks/transducer/transducer.py
@@ -0,0 +1,410 @@
+"""Transducer and the transducer loss function.py
+
+Stolen from:
+ https://github.com/facebookresearch/gtn_applications/blob/master/transducer.py
+
+"""
+from pathlib import Path
+import itertools
+from typing import Dict, List, Optional, Union, Tuple
+
+from loguru import logger
+import gtn
+import torch
+from torch import nn
+from torch import Tensor
+
+from text_recognizer.datasets.iam_preprocessor import Preprocessor
+
+
+def make_scalar_graph(weight) -> gtn.Graph:
+ scalar = gtn.Graph()
+ scalar.add_node(True)
+ scalar.add_node(False, True)
+ scalar.add_arc(0, 1, 0, 0, weight)
+ return scalar
+
+
+def make_chain_graph(sequence) -> gtn.Graph:
+ graph = gtn.Graph(False)
+ graph.add_node(True)
+ for i, s in enumerate(sequence):
+ graph.add_node(False, i == (len(sequence) - 1))
+ graph.add_arc(i, i + 1, s)
+ return graph
+
+
+def make_transitions_graph(
+ ngram: int, num_tokens: int, calc_grad: bool = False
+) -> gtn.Graph:
+ transitions = gtn.Graph(calc_grad)
+ transitions.add_node(True, ngram == 1)
+
+ state_map = {(): 0}
+
+ # First build transitions which include <s>:
+ for n in range(1, ngram):
+ for state in itertools.product(range(num_tokens), repeat=n):
+ in_idx = state_map[state[:-1]]
+ out_idx = transitions.add_node(False, ngram == 1)
+ state_map[state] = out_idx
+ transitions.add_arc(in_idx, out_idx, state[-1])
+
+ for state in itertools.product(range(num_tokens), repeat=ngram):
+ state_idx = state_map[state[:-1]]
+ new_state_idx = state_map[state[1:]]
+ # p(state[-1] | state[:-1])
+ transitions.add_arc(state_idx, new_state_idx, state[-1])
+
+ if ngram > 1:
+ # Build transitions which include </s>:
+ end_idx = transitions.add_node(False, True)
+ for in_idx in range(end_idx):
+ transitions.add_arc(in_idx, end_idx, gtn.epsilon)
+
+ return transitions
+
+
+def make_lexicon_graph(word_pieces: List, graphemes_to_idx: Dict) -> gtn.Graph:
+ """Constructs a graph which transduces letters to word pieces."""
+ graph = gtn.Graph(False)
+ graph.add_node(True, True)
+ for i, wp in enumerate(word_pieces):
+ prev = 0
+ for l in wp[:-1]:
+ n = graph.add_node()
+ graph.add_arc(prev, n, graphemes_to_idx[l], gtn.epsilon)
+ prev = n
+ graph.add_arc(prev, 0, graphemes_to_idx[wp[-1]], i)
+ graph.arc_sort()
+ return graph
+
+
+def make_token_graph(
+ token_list: List, blank: str = "none", allow_repeats: bool = True
+) -> gtn.Graph:
+ """Constructs a graph with all the individual token transition models."""
+ if not allow_repeats and blank != "optional":
+ raise ValueError("Must use blank='optional' if disallowing repeats.")
+
+ ntoks = len(token_list)
+ graph = gtn.Graph(False)
+
+ # Creating nodes
+ graph.add_node(True, True)
+ for i in range(ntoks):
+ # We can consume one or more consecutive word
+ # pieces for each emission:
+ # E.g. [ab, ab, ab] transduces to [ab]
+ graph.add_node(False, blank != "forced")
+
+ if blank != "none":
+ graph.add_node()
+
+ # Creating arcs
+ if blank != "none":
+ # Blank index is assumed to be last (ntoks)
+ graph.add_arc(0, ntoks + 1, ntoks, gtn.epsilon)
+ graph.add_arc(ntoks + 1, 0, gtn.epsilon)
+
+ for i in range(ntoks):
+ graph.add_arc((ntoks + 1) if blank == "forced" else 0, i + 1, i)
+ graph.add_arc(i + 1, i + 1, i, gtn.epsilon)
+
+ if allow_repeats:
+ if blank == "forced":
+ # Allow transitions from token to blank only
+ graph.add_arc(i + 1, ntoks + 1, ntoks, gtn.epsilon)
+ else:
+ # Allow transition from token to blank and all other tokens
+ graph.add_arc(i + 1, 0, gtn.epsilon)
+
+ else:
+ # allow transitions to blank and all other tokens except the same token
+ graph.add_arc(i + 1, ntoks + 1, ntoks, gtn.epsilon)
+ for j in range(ntoks):
+ if i != j:
+ graph.add_arc(i + 1, j + 1, j, j)
+
+ return graph
+
+
+class TransducerLossFunction(torch.autograd.Function):
+ @staticmethod
+ def forward(
+ ctx,
+ inputs,
+ targets,
+ tokens,
+ lexicon,
+ transition_params=None,
+ transitions=None,
+ reduction="none",
+ ) -> Tensor:
+ B, T, C = inputs.shape
+
+ losses = [None] * B
+ emissions_graphs = [None] * B
+
+ if transitions is not None:
+ if transition_params is None:
+ raise ValueError("Specified transitions, but not transition params.")
+
+ cpu_data = transition_params.cpu().contiguous()
+ transitions.set_weights(cpu_data.data_ptr())
+ transitions.calc_grad = transition_params.requires_grad
+ transitions.zero_grad()
+
+ def process(b: int) -> None:
+ # Create emission graph:
+ emissions = gtn.linear_graph(T, C, inputs.requires_grad)
+ cpu_data = inputs[b].cpu().contiguous()
+ emissions.set_weights(cpu_data.data_ptr())
+ target = make_chain_graph(targets[b])
+ target.arc_sort(True)
+
+ # Create token tot grapheme decomposition graph
+ tokens_target = gtn.remove(gtn.project_output(gtn.compose(target, lexicon)))
+ tokens_target.arc_sort()
+
+ # Create alignment graph:
+ aligments = gtn.project_input(
+ gtn.remove(gtn.compose(tokens, tokens_target))
+ )
+ aligments.arc_sort()
+
+ # Add transitions scores:
+ if transitions is not None:
+ aligments = gtn.intersect(transitions, aligments)
+ aligments.arc_sort()
+
+ loss = gtn.forward_score(gtn.intersect(emissions, aligments))
+
+ # Normalize if needed:
+ if transitions is not None:
+ norm = gtn.forward_score(gtn.intersect(emissions, transitions))
+ loss = gtn.subtract(loss, norm)
+
+ losses[b] = gtn.negate(loss)
+
+ # Save for backward:
+ if emissions.calc_grad:
+ emissions_graphs[b] = emissions
+
+ gtn.parallel_for(process, range(B))
+
+ ctx.graphs = (losses, emissions_graphs, transitions)
+ ctx.input_shape = inputs.shape
+
+ # Optionally reduce by target length
+ if reduction == "mean":
+ scales = [(1 / len(t) if len(t) > 0 else 1.0) for t in targets]
+ else:
+ scales = [1.0] * B
+
+ ctx.scales = scales
+
+ loss = torch.tensor([l.item() * s for l, s in zip(losses, scales)])
+ return torch.mean(loss.to(inputs.device))
+
+ @staticmethod
+ def backward(ctx, grad_output) -> Tuple:
+ losses, emissions_graphs, transitions = ctx.graphs
+ scales = ctx.scales
+
+ B, T, C = ctx.input_shape
+ calc_emissions = ctx.needs_input_grad[0]
+ input_grad = torch.empty((B, T, C)) if calc_emissions else None
+
+ def process(b: int) -> None:
+ scale = make_scalar_graph(scales[b])
+ gtn.backward(losses[b], scale)
+ emissions = emissions_graphs[b]
+ if calc_emissions:
+ grad = emissions.grad().weights_to_numpy()
+ input_grad[b] = torch.tensor(grad).view(1, T, C)
+
+ gtn.parallel_for(process, range(B))
+
+ if calc_emissions:
+ input_grad = input_grad.to(grad_output.device)
+ input_grad *= grad_output / B
+
+ if ctx.needs_input_grad[4]:
+ grad = transitions.grad().weights_to_numpy()
+ transition_grad = torch.tensor(grad).to(grad_output.device)
+ transition_grad *= grad_output / B
+ else:
+ transition_grad = None
+
+ return (
+ input_grad,
+ None, # target
+ None, # tokens
+ None, # lexicon
+ transition_grad, # transition params
+ None, # transitions graph
+ None,
+ )
+
+
+TransducerLoss = TransducerLossFunction.apply
+
+
+class Transducer(nn.Module):
+ def __init__(
+ self,
+ tokens: List,
+ graphemes_to_idx: Dict,
+ ngram: int = 0,
+ transitions: str = None,
+ blank: str = "none",
+ allow_repeats: bool = True,
+ reduction: str = "none",
+ ) -> None:
+ """A generic transducer loss function.
+
+ Args:
+ tokens (List) : A list of iterable objects (e.g. strings, tuples, etc)
+ representing the output tokens of the model (e.g. letters,
+ word-pieces, words). For example ["a", "b", "ab", "ba", "aba"]
+ could be a list of sub-word tokens.
+ graphemes_to_idx (dict) : A dictionary mapping grapheme units (e.g.
+ "a", "b", ..) to their corresponding integer index.
+ ngram (int) : Order of the token-level transition model. If `ngram=0`
+ then no transition model is used.
+ blank (string) : Specifies the usage of blank token
+ 'none' - do not use blank token
+ 'optional' - allow an optional blank inbetween tokens
+ 'forced' - force a blank inbetween tokens (also referred to as garbage token)
+ allow_repeats (boolean) : If false, then we don't allow paths with
+ consecutive tokens in the alignment graph. This keeps the graph
+ unambiguous in the sense that the same input cannot transduce to
+ different outputs.
+ """
+ super().__init__()
+ if blank not in ["optional", "forced", "none"]:
+ raise ValueError(
+ "Invalid value specified for blank. Must be in ['optional', 'forced', 'none']"
+ )
+ self.tokens = make_token_graph(tokens, blank=blank, allow_repeats=allow_repeats)
+ self.lexicon = make_lexicon_graph(tokens, graphemes_to_idx)
+ self.ngram = ngram
+ if ngram > 0 and transitions is not None:
+ raise ValueError("Only one of ngram and transitions may be specified")
+
+ if ngram > 0:
+ transitions = make_transitions_graph(
+ ngram, len(tokens) + int(blank != "none"), True
+ )
+
+ if transitions is not None:
+ self.transitions = transitions
+ self.transitions.arc_sort()
+ self.transitions_params = nn.Parameter(
+ torch.zeros(self.transitions.num_arcs())
+ )
+ else:
+ self.transitions = None
+ self.transitions_params = None
+ self.reduction = reduction
+
+ def forward(self, inputs: Tensor, targets: Tensor) -> TransducerLoss:
+ TransducerLoss(
+ inputs,
+ targets,
+ self.tokens,
+ self.lexicon,
+ self.transitions_params,
+ self.transitions,
+ self.reduction,
+ )
+
+ def viterbi(self, outputs: Tensor) -> List[Tensor]:
+ B, T, C = outputs.shape
+
+ if self.transitions is not None:
+ cpu_data = self.transition_params.cpu().contiguous()
+ self.transitions.set_weights(cpu_data.data_ptr())
+ self.transitions.calc_grad = False
+
+ self.tokens.arc_sort()
+
+ paths = [None] * B
+
+ def process(b: int) -> None:
+ emissions = gtn.linear_graph(T, C, False)
+ cpu_data = outputs[b].cpu().contiguous()
+ emissions.set_weights(cpu_data.data_ptr())
+
+ if self.transitions is not None:
+ full_graph = gtn.intersect(emissions, self.transitions)
+ else:
+ full_graph = emissions
+
+ # Find the best path and remove back-off arcs:
+ path = gtn.remove(gtn.viterbi_path(full_graph))
+
+ # Left compose the viterbi path with the "aligment to token"
+ # transducer to get the outputs:
+ path = gtn.compose(path, self.tokens)
+
+ # When there are ambiguous paths (allow_repeats is true), we take
+ # the shortest:
+ path = gtn.viterbi_path(path)
+ path = gtn.remove(gtn.project_output(path))
+ paths[b] = path.labels_to_list()
+
+ gtn.parallel_for(process, range(B))
+ predictions = [torch.IntTensor(path) for path in paths]
+ return predictions
+
+
+def load_transducer_loss(
+ num_features: int,
+ ngram: int,
+ tokens: str,
+ lexicon: str,
+ transitions: str,
+ blank: str,
+ allow_repeats: bool,
+ prepend_wordsep: bool = False,
+ use_words: bool = False,
+ data_dir: Optional[Union[str, Path]] = None,
+ reduction: str = "mean",
+) -> Tuple[Transducer, int]:
+ if data_dir is None:
+ data_dir = (
+ Path(__file__).resolve().parents[4] / "data" / "raw" / "iam" / "iamdb"
+ )
+ logger.debug(f"Using data dir: {data_dir}")
+ if not data_dir.exists():
+ raise RuntimeError(f"Could not locate iamdb directory at {data_dir}")
+ else:
+ data_dir = Path(data_dir)
+ processed_path = (
+ Path(__file__).resolve().parents[4] / "data" / "processed" / "iam_lines"
+ )
+ tokens_path = processed_path / tokens
+ lexicon_path = processed_path / lexicon
+
+ if transitions is not None:
+ transitions = gtn.load(str(processed_path / transitions))
+
+ preprocessor = Preprocessor(
+ data_dir, num_features, tokens_path, lexicon_path, use_words, prepend_wordsep,
+ )
+
+ num_tokens = preprocessor.num_tokens
+
+ criterion = Transducer(
+ preprocessor.tokens,
+ preprocessor.graphemes_to_index,
+ ngram=ngram,
+ transitions=transitions,
+ blank=blank,
+ allow_repeats=allow_repeats,
+ reduction=reduction,
+ )
+
+ return criterion, num_tokens + int(blank != "none")