├── packages.txt ├── src └── gbkviz │ ├── toppage.md │ ├── __version__.py │ ├── gbkviz_demo.gif │ ├── scripts │ └── launch_gbkviz_webapp.py │ ├── util.py │ ├── genbank.py │ ├── genome_align.py │ ├── align_coord.py │ ├── draw_genbank_fig.py │ └── gbkviz_webapp.py ├── .streamlit └── config.toml ├── image ├── gbkviz_example1.png ├── gbkviz_example2.png ├── gbkviz_example3.png └── gbkviz_example4.png ├── CITATION.cff ├── Dockerfile ├── tests ├── test_draw_genbank_fig.py ├── test_gbkviz_webapp.py ├── test_genome_align.py ├── conftest.py ├── test_genbank.py ├── test_align_coord.py └── testdata │ └── genome_fasta │ ├── JX128258.1_1-66854.fa │ └── MH816966.1_1-68472.fa ├── LICENSE ├── pyproject.toml ├── .github └── workflows │ ├── publish_to_pypi_and_dockerhub.yml │ └── ci.yml ├── .gitignore └── README.md /packages.txt: -------------------------------------------------------------------------------- 1 | mummer 2 | -------------------------------------------------------------------------------- /src/gbkviz/toppage.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.streamlit/config.toml: -------------------------------------------------------------------------------- 1 | [theme] 2 | base = "dark" 3 | -------------------------------------------------------------------------------- /src/gbkviz/__version__.py: -------------------------------------------------------------------------------- 1 | __version__ = "1.2.0" 2 | -------------------------------------------------------------------------------- /image/gbkviz_example1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moshi4/GBKviz/HEAD/image/gbkviz_example1.png -------------------------------------------------------------------------------- /image/gbkviz_example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moshi4/GBKviz/HEAD/image/gbkviz_example2.png -------------------------------------------------------------------------------- /image/gbkviz_example3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moshi4/GBKviz/HEAD/image/gbkviz_example3.png -------------------------------------------------------------------------------- /image/gbkviz_example4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moshi4/GBKviz/HEAD/image/gbkviz_example4.png -------------------------------------------------------------------------------- /src/gbkviz/gbkviz_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moshi4/GBKviz/HEAD/src/gbkviz/gbkviz_demo.gif -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: If you use this software, please cite it as below. 3 | authors: 4 | - family-names: Shimoyama 5 | given-names: Yuki 6 | title: "GBKviz: Genbank Data Visualization Tool" 7 | date-released: 2022-03-03 8 | url: https://github.com/moshi4/GBKviz 9 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9-slim 2 | 3 | # Install MUMmer 4 | RUN apt-get update && \ 5 | apt-get install -y mummer 6 | 7 | # Install GBKviz & Clear dependencies cache 8 | RUN pip install -U pip && \ 9 | pip install gbkviz --no-cache-dir 10 | 11 | # Launch GBKviz on port 8501 12 | CMD ["gbkviz_webapp"] 13 | EXPOSE 8501 14 | -------------------------------------------------------------------------------- /tests/test_draw_genbank_fig.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import List 3 | 4 | from gbkviz.draw_genbank_fig import DrawGenbankFig 5 | from gbkviz.genbank import Genbank 6 | 7 | 8 | def test_draw_genbank_fig(genbank_files: List[Path], tmp_path: Path): 9 | """test draw_genbank_fig""" 10 | gbk_list = [Genbank(gf, gf.name) for gf in genbank_files] 11 | gdf = DrawGenbankFig(gbk_list) 12 | fig_png_outfile = tmp_path / "fig.png" 13 | fig_svg_outfile = tmp_path / "fig.svg" 14 | gdf.write_figure(fig_png_outfile) 15 | gdf.write_figure(fig_svg_outfile) 16 | assert fig_png_outfile.exists() and fig_svg_outfile.exists() 17 | -------------------------------------------------------------------------------- /tests/test_gbkviz_webapp.py: -------------------------------------------------------------------------------- 1 | import multiprocessing 2 | import platform 3 | import sys 4 | import time 5 | 6 | from gbkviz import gbkviz_webapp 7 | from streamlit.cli import main as stcli_main 8 | 9 | 10 | def test_gbkviz_webapp_launch(): 11 | """test gbkviz webapp launch propery""" 12 | # TODO: Test only Linux now. This test method is not applicable to MacOS. 13 | # Test MacOS as well in future. 14 | if platform.system() == "Linux": 15 | sys.argv = ["streamlit", "run", gbkviz_webapp.__file__] 16 | p = multiprocessing.Process(target=stcli_main, name="st") 17 | p.start() 18 | time.sleep(10) 19 | p.terminate() 20 | p.join() 21 | assert p.exitcode == 0 22 | -------------------------------------------------------------------------------- /tests/test_genome_align.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import List 3 | 4 | from gbkviz.genome_align import GenomeAlign 5 | 6 | 7 | def test_genome_align_run_nucleotide(genome_fasta_files: List[Path], tmp_path: Path): 8 | """Test GenomeAlign run ('nucleotide' and 'one-to-one')""" 9 | genome_align = GenomeAlign( 10 | genome_fasta_files, tmp_path, seqtype="nucleotide", maptype="one-to-one" 11 | ) 12 | align_coords = genome_align.run() 13 | assert len(align_coords) != 0 14 | 15 | 16 | def test_genome_align_run_protein(genome_fasta_files: List[Path], tmp_path: Path): 17 | """Test GenomeAlign run ('nucleotide' and 'one-to-one')""" 18 | genome_align = GenomeAlign( 19 | genome_fasta_files, tmp_path, seqtype="protein", maptype="many-to-many" 20 | ) 21 | align_coords = genome_align.run() 22 | assert len(align_coords) != 0 23 | -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import List 3 | 4 | import pytest 5 | 6 | 7 | @pytest.fixture(scope="session") 8 | def testdata_dir() -> Path: 9 | """testdata directory fixture""" 10 | return Path(__file__).parent / "testdata" 11 | 12 | 13 | @pytest.fixture(scope="session") 14 | def genbank_file(testdata_dir: Path) -> Path: 15 | """genbank files fixture""" 16 | genbank_dir = testdata_dir / "genbank" 17 | return genbank_dir / "JX128258.1.gbk" 18 | 19 | 20 | @pytest.fixture(scope="session") 21 | def genbank_files(testdata_dir: Path) -> List[Path]: 22 | """genbank files fixture""" 23 | genbank_dir = testdata_dir / "genbank" 24 | return list(genbank_dir.glob("*.gbk")) 25 | 26 | 27 | @pytest.fixture(scope="session") 28 | def genome_fasta_files(testdata_dir: Path) -> List[Path]: 29 | """genome fasta files fixture""" 30 | genome_fasta_dir = testdata_dir / "genome_fasta" 31 | return list(genome_fasta_dir.glob("*.fa")) 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 moshi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "GBKviz" 3 | version = "1.2.0" 4 | description = "Simple web application to visualize and compare genomes in Genbank files" 5 | authors = ["moshi"] 6 | license = "MIT" 7 | homepage = "https://github.com/moshi4/GBKviz/" 8 | repository = "https://github.com/moshi4/GBKviz/" 9 | readme = "README.md" 10 | keywords = [ 11 | "gbkviz", 12 | "bioinformatics", 13 | "streamlit", 14 | "genomics", 15 | "visualization", 16 | ] 17 | classifiers = [ 18 | "Intended Audience :: Science/Research", 19 | "Topic :: Scientific/Engineering :: Bio-Informatics", 20 | ] 21 | include = ["tests"] 22 | 23 | [tool.poetry-dynamic-versioning] 24 | enable = true 25 | 26 | [tool.pytest.ini_options] 27 | minversion = "6.0" 28 | addopts = "--cov=src --tb=line --cov-report=xml --cov-report=term" 29 | testpaths = ["tests"] 30 | 31 | [tool.poetry.dependencies] 32 | python = "^3.8" 33 | biopython = "^1.79" 34 | reportlab = "^3.5.68" 35 | streamlit = "1.8.1" 36 | 37 | [tool.poetry.dev-dependencies] 38 | black = "^21.10b0" 39 | flake8 = "^4.0.1" 40 | pydocstyle = "^6.1.1" 41 | pytest = "^7.1.1" 42 | pytest-cov = "^3.0.0" 43 | 44 | [tool.poetry.scripts] 45 | gbkviz_webapp = "gbkviz.scripts.launch_gbkviz_webapp:main" 46 | 47 | [build-system] 48 | requires = ["poetry-core>=1.0.0"] 49 | build-backend = "poetry.core.masonry.api" 50 | -------------------------------------------------------------------------------- /src/gbkviz/scripts/launch_gbkviz_webapp.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import subprocess as sp 4 | from pathlib import Path 5 | 6 | from gbkviz.__version__ import __version__ 7 | 8 | 9 | def main(): 10 | """GBKviz main function for entrypoint""" 11 | args = get_args() 12 | port: int = args.port 13 | 14 | run(port) 15 | 16 | 17 | def run(port: int = 8501): 18 | """Launch Streamlit GBKviz webapp 19 | 20 | Args: 21 | port (int): Port number to open web browser 22 | """ 23 | # Streamlit env setting 24 | os.environ["STREAMLIT_THEME_BASE"] = "dark" 25 | os.environ["STREAMLIT_BROWSER_GATHER_USAGE_STATS"] = "false" 26 | 27 | # Launch Streamlit app 28 | gbkviz_dir = Path(__file__).parent.parent 29 | gbkviz_webapp_src_file = gbkviz_dir / "gbkviz_webapp.py" 30 | cmd = f"streamlit run {gbkviz_webapp_src_file} --server.port {port}" 31 | sp.run(cmd.split(" ")) 32 | 33 | 34 | def get_args(): 35 | """Get arguments 36 | 37 | Returns: 38 | argparse.Namespace: Argument values 39 | """ 40 | desc = "Simple web application to visualize and compare genomes in Genbank files" 41 | parser = argparse.ArgumentParser(description=desc) 42 | 43 | default_port = 8501 44 | parser.add_argument( 45 | "-p", 46 | "--port", 47 | type=int, 48 | help=f"Port number to open web server (Default: {default_port})", 49 | default=default_port, 50 | metavar="", 51 | ) 52 | parser.add_argument( 53 | "-v", 54 | "--version", 55 | action="version", 56 | version=f"v{__version__}", 57 | help="Print version information", 58 | ) 59 | return parser.parse_args() 60 | 61 | 62 | if __name__ == "__main__": 63 | main() 64 | -------------------------------------------------------------------------------- /.github/workflows/publish_to_pypi_and_dockerhub.yml: -------------------------------------------------------------------------------- 1 | name: Publish to PyPI & DockerHub 2 | on: 3 | release: 4 | types: [released] 5 | 6 | jobs: 7 | publish_to_pypi: 8 | name: Publish to PyPI 9 | runs-on: ubuntu-latest 10 | env: 11 | PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} 12 | PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v2 16 | 17 | - name: Setup Python 3.8 18 | uses: actions/setup-python@v2 19 | with: 20 | python-version: 3.8 21 | 22 | - name: Install Dependencies 23 | run: | 24 | python -m pip install --upgrade pip 25 | pip install poetry poetry-dynamic-versioning 26 | - name: Build 27 | run: poetry build 28 | 29 | - name: Publish 30 | run: poetry publish -u $PYPI_USERNAME -p $PYPI_PASSWORD 31 | 32 | publish_to_dockerhub: 33 | name: Push Docker image to Docker Hub 34 | needs: publish_to_pypi 35 | runs-on: ubuntu-latest 36 | steps: 37 | - name: Check out the repo 38 | uses: actions/checkout@v2 39 | 40 | - name: Log in to Docker Hub 41 | uses: docker/login-action@v1 42 | with: 43 | username: ${{ secrets.DOCKER_USERNAME }} 44 | password: ${{ secrets.DOCKER_PASSWORD }} 45 | 46 | - name: Extract metadata (tags, labels) for Docker 47 | id: meta 48 | uses: docker/metadata-action@v3 49 | with: 50 | images: moshi4/gbkviz 51 | 52 | - name: Build and push Docker image 53 | uses: docker/build-push-action@v2 54 | with: 55 | context: . 56 | push: true 57 | tags: ${{ steps.meta.outputs.tags }} 58 | labels: ${{ steps.meta.outputs.labels }} 59 | -------------------------------------------------------------------------------- /tests/test_genbank.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from gbkviz.genbank import Genbank 4 | 5 | 6 | def test_full_length(genbank_file: Path): 7 | """test full length""" 8 | gbk = Genbank(genbank_file) 9 | actual_length, expected_length = gbk.full_length, 66854 10 | assert actual_length == expected_length 11 | 12 | 13 | def test_range_length(genbank_file: Path): 14 | """test range length""" 15 | gbk = Genbank(genbank_file, "test", min_range=100, max_range=10099) 16 | actual_length, expected_length = gbk.range_length, 10000 17 | assert actual_length == expected_length 18 | 19 | 20 | def test_extract_all_features(genbank_file: Path): 21 | """test extract all features""" 22 | gbk = Genbank(genbank_file) 23 | actual_feature_num, expected_feature_num = len(gbk.extract_all_features()), 94 24 | assert actual_feature_num == expected_feature_num 25 | 26 | 27 | def test_extract_range_features(genbank_file: Path): 28 | """test extract range features""" 29 | gbk = Genbank(genbank_file, "test", min_range=1, max_range=1300) 30 | actual_feature_num, expected_feature_num = len(gbk.extract_range_features()), 4 31 | assert actual_feature_num == expected_feature_num 32 | 33 | 34 | def test_write_genome_fasta_full(genbank_file: Path, tmp_path: Path): 35 | """test write genome fasta (full length)""" 36 | gbk = Genbank(genbank_file, "test") 37 | tmp_outfile = tmp_path / "tmp_genome_full.fna" 38 | gbk.write_genome_fasta(tmp_outfile) 39 | assert tmp_outfile.exists() 40 | 41 | 42 | def test_write_genome_fasta_range(genbank_file: Path, tmp_path: Path): 43 | """test write genome fasta (range length)""" 44 | gbk = Genbank(genbank_file, "test", min_range=10000, max_range=20000) 45 | tmp_outfile = tmp_path / "tmp_genome_range.fna" 46 | gbk.write_genome_fasta(tmp_outfile, range=True) 47 | assert tmp_outfile.exists() 48 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | push: 4 | branches: [main, develop] 5 | paths: ["src/**", "tests/**", ".github/workflows/**"] 6 | pull_request: 7 | branches: [main, develop] 8 | paths: ["src/**", "tests/**", ".github/workflows/**"] 9 | # schedule: 10 | # Scheduled Daily CI 11 | # - cron: "0 0 * * *" 12 | workflow_dispatch: 13 | 14 | jobs: 15 | CI_black-flake8-pytest: 16 | runs-on: ${{ matrix.os }} 17 | strategy: 18 | matrix: 19 | os: [ubuntu-latest, macos-latest] 20 | python-version: [3.7, 3.8, 3.9] 21 | steps: 22 | - name: Checkout 23 | uses: actions/checkout@v2 24 | 25 | - name: Setup Python ${{ matrix.python-version}} 26 | uses: actions/setup-python@v2 27 | with: 28 | python-version: ${{ matrix.python-version }} 29 | 30 | - name: Install MUMmer on Ubuntu 31 | run: | 32 | sudo apt update -y 33 | sudo apt install -y mummer 34 | if: ${{ matrix.os=='ubuntu-latest' }} 35 | 36 | - name: Install MUMmer on MacOS 37 | run: | 38 | brew update 39 | brew tap brewsci/bio 40 | brew install mummer 41 | if: ${{ matrix.os=='macos-latest' }} 42 | 43 | - name: Install Poetry 44 | run: | 45 | curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - 46 | echo "$HOME/.poetry/bin" >> $GITHUB_PATH 47 | 48 | - name: Install Dependencies 49 | run: poetry install -n 50 | 51 | - name: Run black format check 52 | run: poetry run black src --check --diff --verbose 53 | 54 | - name: Run flake8 lint check 55 | run: poetry run flake8 src --max-line-length=88 --ignore=E203,W503,W504 56 | 57 | - name: Run pytest 58 | run: poetry run pytest tests --tb=line --cov=src --cov-report=xml --cov-report=term 59 | -------------------------------------------------------------------------------- /tests/test_align_coord.py: -------------------------------------------------------------------------------- 1 | from gbkviz.align_coord import AlignCoord 2 | 3 | 4 | def test_is_inverted(): 5 | """test is inverted""" 6 | align_coord = AlignCoord(11, 100, 501, 600, 90, 100, 80.0, "ref", "query") 7 | assert align_coord.is_inverted is False 8 | 9 | align_coord = AlignCoord(100, 11, 501, 600, 90, 100, 80.0, "ref", "query") 10 | assert align_coord.is_inverted is True 11 | 12 | 13 | def test_add_offset(): 14 | """test add offset""" 15 | ref_start, ref_end = 10, 100 16 | query_start, query_end = 500, 600 17 | align_coord = AlignCoord( 18 | ref_start, ref_end, query_start, query_end, 90, 100, 80.0, "ref", "query" 19 | ) 20 | ref_offset, query_offset = 100, 150 21 | offset_align_coord = align_coord.add_offset(ref_offset, query_offset) 22 | assert ( 23 | offset_align_coord.ref_start == ref_start + ref_offset 24 | and offset_align_coord.ref_end == ref_end + ref_offset 25 | and offset_align_coord.query_start == query_start + query_offset 26 | and offset_align_coord.query_end == query_end + query_offset 27 | ) 28 | 29 | 30 | def test_filter(): 31 | """test filter""" 32 | align_coords = [ 33 | AlignCoord(1, 1, 1, 1, 100, 100, 80.0, "ref", "query"), 34 | AlignCoord(1, 1, 1, 1, 150, 250, 90.0, "ref", "query"), 35 | AlignCoord(1, 1, 1, 1, 300, 300, 60.0, "ref", "query"), 36 | ] 37 | # No setting 38 | assert len(AlignCoord.filter(align_coords)) == 3 39 | # Min Length setting 40 | assert len(AlignCoord.filter(align_coords, min_length=130)) == 2 41 | assert len(AlignCoord.filter(align_coords, min_length=200)) == 1 42 | assert len(AlignCoord.filter(align_coords, min_length=500)) == 0 43 | # Identity setting 44 | assert len(AlignCoord.filter(align_coords, min_identity=70)) == 2 45 | assert len(AlignCoord.filter(align_coords, min_identity=85)) == 1 46 | assert len(AlignCoord.filter(align_coords, min_identity=95)) == 0 47 | # Both setting 48 | assert len(AlignCoord.filter(align_coords, 200, 70)) == 0 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | example 2 | gbkviz_tmpwork 3 | .vscode/ 4 | 5 | # Byte-compiled / optimized / DLL files 6 | __pycache__/ 7 | *.py[cod] 8 | *$py.class 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | wheels/ 27 | pip-wheel-metadata/ 28 | share/python-wheels/ 29 | *.egg-info/ 30 | .installed.cfg 31 | *.egg 32 | MANIFEST 33 | 34 | # PyInstaller 35 | # Usually these files are written by a python script from a template 36 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 37 | *.manifest 38 | *.spec 39 | 40 | # Installer logs 41 | pip-log.txt 42 | pip-delete-this-directory.txt 43 | 44 | # Unit test / coverage reports 45 | htmlcov/ 46 | .tox/ 47 | .nox/ 48 | .coverage 49 | .coverage.* 50 | .cache 51 | nosetests.xml 52 | coverage.xml 53 | *.cover 54 | *.py,cover 55 | .hypothesis/ 56 | .pytest_cache/ 57 | 58 | # Translations 59 | *.mo 60 | *.pot 61 | 62 | # Django stuff: 63 | *.log 64 | local_settings.py 65 | db.sqlite3 66 | db.sqlite3-journal 67 | 68 | # Flask stuff: 69 | instance/ 70 | .webassets-cache 71 | 72 | # Scrapy stuff: 73 | .scrapy 74 | 75 | # Sphinx documentation 76 | docs/_build/ 77 | 78 | # PyBuilder 79 | target/ 80 | 81 | # Jupyter Notebook 82 | .ipynb_checkpoints 83 | 84 | # IPython 85 | profile_default/ 86 | ipython_config.py 87 | 88 | # pyenv 89 | .python-version 90 | 91 | # pipenv 92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 95 | # install all needed dependencies. 96 | #Pipfile.lock 97 | 98 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 99 | __pypackages__/ 100 | 101 | # Celery stuff 102 | celerybeat-schedule 103 | celerybeat.pid 104 | 105 | # SageMath parsed files 106 | *.sage.py 107 | 108 | # Environments 109 | .env 110 | .venv 111 | env/ 112 | venv/ 113 | ENV/ 114 | env.bak/ 115 | venv.bak/ 116 | 117 | # Spyder project settings 118 | .spyderproject 119 | .spyproject 120 | 121 | # Rope project settings 122 | .ropeproject 123 | 124 | # mkdocs documentation 125 | /site 126 | 127 | # mypy 128 | .mypy_cache/ 129 | .dmypy.json 130 | dmypy.json 131 | 132 | # Pyre type checker 133 | .pyre/ 134 | -------------------------------------------------------------------------------- /src/gbkviz/util.py: -------------------------------------------------------------------------------- 1 | import os 2 | import shutil 3 | import time 4 | from io import StringIO 5 | from pathlib import Path 6 | from typing import List 7 | 8 | import streamlit as st 9 | from streamlit.scriptrunner import get_script_run_ctx 10 | from streamlit.uploaded_file_manager import UploadedFile, UploadedFileRec 11 | 12 | from gbkviz.genbank import Genbank 13 | 14 | 15 | def load_files(files: List[Path]) -> List[UploadedFile]: 16 | """Load files as uploaded files 17 | 18 | Args: 19 | files (List[Path]): files 20 | 21 | Returns: 22 | List[UploadedFile]: Uploaded files 23 | """ 24 | uploaded_files: List[UploadedFile] = [] 25 | for id, file in enumerate(files, 1): 26 | filename = Path(file).name 27 | type = "application/octet-stream" 28 | with open(file, "rb") as f: 29 | filebytes = f.read() 30 | record = UploadedFileRec(id, filename, type, filebytes) 31 | uploaded_files.append(UploadedFile(record)) 32 | 33 | return uploaded_files 34 | 35 | 36 | def get_session_id() -> str: 37 | """Get session id 38 | 39 | Returns: 40 | str: Session id 41 | """ 42 | ctx = get_script_run_ctx() 43 | if ctx: 44 | return ctx.session_id 45 | else: 46 | raise ValueError("Failed to get session id.") 47 | 48 | 49 | def make_session_dir(outdir: Path) -> Path: 50 | """Make session directory 51 | 52 | Args: 53 | outdir (Path): Output directory 54 | 55 | Returns: 56 | Path: Session directory path 57 | """ 58 | session_dir = outdir / get_session_id() 59 | os.makedirs(session_dir, exist_ok=True) 60 | return session_dir 61 | 62 | 63 | def remove_olddir(target_dir: Path, ttl: int = 600) -> None: 64 | """Remove old last updated directory 65 | 66 | Args: 67 | target_dir (Path): Target directory 68 | ttl (int, optional): Time to live. Defaults to 600[s]. 69 | """ 70 | elapsed_time = time.time() - target_dir.stat().st_mtime 71 | if elapsed_time > ttl: 72 | shutil.rmtree(target_dir, ignore_errors=True) 73 | 74 | 75 | @st.cache(allow_output_mutation=True, ttl=3600) 76 | def read_upload_gbk_file(upload_gbk_file: UploadedFile) -> Genbank: 77 | """Read uploaded genbank file from Streamlit app 78 | 79 | Args: 80 | upload_gbk_file (UploadedFile): Uploaded genbank file 81 | 82 | Returns: 83 | Genbank: Genbank class object 84 | """ 85 | return Genbank( 86 | gbk_file=StringIO(upload_gbk_file.getvalue().decode("utf-8")), 87 | name=Path(upload_gbk_file.name).stem, 88 | ) 89 | -------------------------------------------------------------------------------- /src/gbkviz/genbank.py: -------------------------------------------------------------------------------- 1 | from io import StringIO 2 | from pathlib import Path 3 | from typing import List, Optional, Union 4 | 5 | from Bio import SeqIO 6 | from Bio.SeqFeature import SeqFeature 7 | from Bio.SeqRecord import SeqRecord 8 | 9 | 10 | class Genbank: 11 | """Genbank Class""" 12 | 13 | def __init__( 14 | self, 15 | gbk_file: Union[str, StringIO, Path], 16 | name: str = "", 17 | min_range: Optional[int] = None, 18 | max_range: Optional[int] = None, 19 | reverse: bool = False, 20 | ): 21 | """Genbank constructor 22 | 23 | Args: 24 | gbk_file (Union[str, StringIO, Path]): Genbank file 25 | name (str, optional): Name 26 | min_range (Optional[int], optional): Min range 27 | max_range (Optional[int], optional): Max range 28 | reverse (bool, optional): Reverse or not 29 | """ 30 | self._record: SeqRecord = list(SeqIO.parse(gbk_file, "genbank"))[0] 31 | self.name: str = name 32 | self.min_range: int = 1 if min_range is None else min_range 33 | self.max_range: int = len(self._record.seq) if max_range is None else max_range 34 | self.reverse: bool = reverse 35 | 36 | @property 37 | def full_length(self) -> int: 38 | """Whole genome sequence length""" 39 | return len(self.record.seq) 40 | 41 | @property 42 | def range_length(self) -> int: 43 | """Range genome sequence length""" 44 | return self.max_range - self.min_range + 1 45 | 46 | @property 47 | def record(self) -> SeqRecord: 48 | """Genbank record""" 49 | if self.reverse is True: 50 | return self._record.reverse_complement() 51 | else: 52 | return self._record 53 | 54 | def extract_all_features( 55 | self, 56 | feature_types: List[str] = ["CDS"], 57 | ) -> List[SeqFeature]: 58 | """Extract all features 59 | 60 | Args: 61 | feature_types (List[str]): Feature types to extract 62 | 63 | Returns: 64 | List[SeqFeature]: All features 65 | """ 66 | return [f for f in self.record.features if f.type in feature_types] 67 | 68 | def extract_range_features( 69 | self, 70 | feature_types: List[str] = ["CDS"], 71 | ) -> List[SeqFeature]: 72 | """Extract features in range 73 | 74 | Args: 75 | feature_types (List[str]): Feature types to extract 76 | 77 | Returns: 78 | List[SeqFeature]: Features in range 79 | """ 80 | range_features = [] 81 | for feature in self.extract_all_features(feature_types): 82 | start, end = feature.location.parts[0].start, feature.location.parts[-1].end 83 | if isinstance(start, int) and isinstance(end, int): 84 | if ( 85 | self.min_range <= start <= self.max_range 86 | or self.min_range <= end <= self.max_range 87 | ): 88 | range_features.append(feature) 89 | 90 | return range_features 91 | 92 | def write_genome_fasta( 93 | self, 94 | outfile: Union[str, Path], 95 | range: bool = False, 96 | ) -> None: 97 | """Write genome fasta file 98 | 99 | Args: 100 | outfile (Union[str, Path]): Output genome fasta file 101 | range (bool): Write range genome or full genome 102 | """ 103 | if range: 104 | write_seq = self.record.seq[self.min_range - 1 : self.max_range] 105 | else: 106 | write_seq = self.record.seq 107 | with open(outfile, "w") as f: 108 | f.write(f">{self.name}\n{write_seq}\n") 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GBKviz: Genbank Data Visualization WebApp 2 | 3 | [![Open in Streamlit](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://share.streamlit.io/moshi4/gbkviz/main/src/gbkviz/gbkviz_webapp.py) 4 | ![Python3](https://img.shields.io/badge/Language-Python3-steelblue) 5 | ![License](https://img.shields.io/badge/License-MIT-steelblue) 6 | [![Latest PyPI version](https://img.shields.io/pypi/v/gbkviz.svg)](https://pypi.python.org/pypi/gbkviz) 7 | [![Bioconda](https://img.shields.io/conda/vn/bioconda/gbkviz.svg?color=green)](https://anaconda.org/bioconda/gbkviz) 8 | [![CI](https://github.com/moshi4/GBKviz/actions/workflows/ci.yml/badge.svg)](https://github.com/moshi4/GBKviz/actions/workflows/ci.yml) 9 | 10 | ## Overview 11 | 12 | GBKviz is a web-based Genbank data visualization and comparison tool developed with streamlit web framework. 13 | GBKviz allows user to easily and flexibly draw CDSs in user-specified genomic region (PNG or SVG format is available). 14 | It also supports drawing genome comparison results by MUMmer. 15 | GenomeDiagram, a part of BioPython module, is used to draw the diagram. 16 | This software is developed under the strong inspiration of [EasyFig](https://mjsull.github.io/Easyfig/). 17 | 18 | ![GBKviz Demo GIF](https://raw.githubusercontent.com/moshi4/GBKviz/main/src/gbkviz/gbkviz_demo.gif) 19 | If you are interested, click [here](https://share.streamlit.io/moshi4/gbkviz/main/src/gbkviz/gbkviz_webapp.py) to try GBKviz on Streamlit Cloud. 20 | >:warning: Due to the limited resources in Streamlit Cloud, it may be unstable. 21 | > When performing comparative analysis of users' genomic data, use the stable, locally installed version. 22 | 23 | ## Installation 24 | 25 | GBKviz is implemented in Python3. MUMmer is required for genome comparison. 26 | 27 | **Install bioconda package:** 28 | 29 | conda install -c bioconda -c conda-forge gbkviz 30 | 31 | **Install PyPI package:** 32 | 33 | pip install gbkviz 34 | 35 | **Use Docker ([Docker Image](https://hub.docker.com/r/moshi4/gbkviz/tags)):** 36 | 37 | docker pull moshi4/gbkviz:latest 38 | docker run -d -p 8501:8501 moshi4/gbkviz:latest 39 | 40 | ## Dependencies 41 | 42 | - [Streamlit](https://streamlit.io/) 43 | Simple web framework for data analysis 44 | 45 | - [BioPython](https://github.com/biopython/biopython) 46 | Utility tools for computational molecular biology 47 | 48 | - [MUMmer](https://github.com/mummer4/mummer) 49 | Genome alignment tool for comparative genomics 50 | 51 | ## Command Usage 52 | 53 | Launch GBKviz in web browser (): 54 | 55 | gbkviz_webapp 56 | 57 | If you are using Docker to start, above command is already executed. 58 | 59 | ## Example 60 | 61 | Example of GBKviz genome comparison and visualization results. 62 | 63 | ![GBKviz Example Fig1](https://raw.githubusercontent.com/moshi4/GBKviz/main/image/gbkviz_example1.png) 64 | Fig.1: 4 phage whole genomes comparison result 65 | 66 | ![GBKviz Example Fig2](https://raw.githubusercontent.com/moshi4/GBKviz/main/image/gbkviz_example2.png) 67 | Fig.2: 4 E.coli partial genomes comparison result 68 | 69 | ![GBKviz Example Fig3](https://raw.githubusercontent.com/moshi4/GBKviz/main/image/gbkviz_example3.png) 70 | Fig.3: 4 E.coli whole genomes comparison result 71 | 72 | ![GBKviz Example Fig4](https://raw.githubusercontent.com/moshi4/GBKviz/main/image/gbkviz_example4.png) 73 | Fig.4: Simple CDS visualization with gene label 74 | 75 | ## Genome Comparison 76 | 77 | In GBKviz, [MUMmer](https://github.com/mummer4/mummer) is used as genome comparison tool. 78 | Following four genome comparison methods are available. 79 | 80 | - Nucleotide One-to-One Mapping 81 | - Nucleotide Many-to-Many Mapping 82 | - Protein One-to-One Mapping 83 | - Protein Many-to-Many Mapping 84 | 85 | User can download and check genome comparison results file. 86 | Genome comparison results file is in the following tsv format. 87 | 88 | | Columns | Contents | 89 | | ------------ | --------------------------------------------------- | 90 | | REF_START | Reference genome alignment start position | 91 | | REF_END | Reference genome alignment end position | 92 | | QUERY_START | Query genome alignment start position | 93 | | QUERY_END | Query genome alignment end position | 94 | | REF_LENGTH | Reference genome alignment length | 95 | | QUERY_LENGTH | Query genome alignment length | 96 | | IDENTITY | Reference and query genome alignment identity (%) | 97 | | REF_NAME | Reference genome name tag | 98 | | QUERY_NAME | Query genome name tag | 99 | -------------------------------------------------------------------------------- /src/gbkviz/genome_align.py: -------------------------------------------------------------------------------- 1 | import itertools 2 | import multiprocessing as mp 3 | import os 4 | import platform 5 | import shutil 6 | import subprocess as sp 7 | from pathlib import Path 8 | from typing import List, Tuple, Union 9 | 10 | import streamlit as st 11 | 12 | from gbkviz.align_coord import AlignCoord 13 | 14 | 15 | class GenomeAlign: 16 | """Run MUMmer Genome Alignment Class""" 17 | 18 | def __init__( 19 | self, 20 | genome_fasta_files: List[Path], 21 | outdir: Union[str, Path], 22 | seqtype: str = "nucleotide", 23 | maptype: str = "one-to-one", 24 | ): 25 | """GenomeAlign constructor 26 | 27 | Args: 28 | genome_fasta_files (List[Union[str, Path]]): Genome fasta files 29 | outdir (Union[str, Path]): Output directory 30 | seqtype (str, optional): "nucleotide" or "protein" 31 | maptype (str, optional): "one-to-one" or "many-to-many" 32 | """ 33 | self.genome_fasta_files: List[Path] = [Path(f) for f in genome_fasta_files] 34 | self.outdir = Path(outdir) 35 | self.seqtype = seqtype.lower() 36 | self.maptype = maptype.lower() 37 | 38 | @st.cache(allow_output_mutation=True, ttl=3600) 39 | def run(self) -> List[AlignCoord]: 40 | """Run MUMmer genome alignment 41 | 42 | Returns: 43 | List[AlignCoords]: Genome alignment coordinates 44 | """ 45 | # Prepare data for run MUMmer with multiprocessing 46 | mp_data_list: List[Tuple[Path, Path, int]] = [] 47 | for idx in range(0, self.genome_num - 1): 48 | fa_file1 = self.genome_fasta_files[idx] 49 | fa_file2 = self.genome_fasta_files[idx + 1] 50 | mp_data_list.append((fa_file1, fa_file2, idx)) 51 | 52 | # Run MUMmer with multiprocessing 53 | with mp.Pool(processes=self._process_num) as p: 54 | results = p.starmap(self._run_mummer, mp_data_list) 55 | 56 | return list(itertools.chain.from_iterable(results)) 57 | 58 | @property 59 | def genome_num(self) -> int: 60 | """Input genome fasta file count""" 61 | return len(self.genome_fasta_files) 62 | 63 | @property 64 | def _align_bin(self) -> str: 65 | """Get genome alignment program name ('nucmer' or 'promer')""" 66 | if self.seqtype == "nucleotide": 67 | return "nucmer" 68 | elif self.seqtype == "protein": 69 | return "promer" 70 | else: 71 | raise ValueError(f"Invalid seqtype '{self.seqtype}'") 72 | 73 | @property 74 | def _map_opt(self) -> str: 75 | """Get filter mapping option ('one-to-one' or 'many-to-many')""" 76 | if self.maptype == "one-to-one": 77 | return "-1" 78 | elif self.maptype == "many-to-many": 79 | return "-m" 80 | else: 81 | raise ValueError(f"Invalid maptype '{self.maptype}'") 82 | 83 | @property 84 | def _process_num(self) -> int: 85 | cpu_num = os.cpu_count() 86 | return 1 if cpu_num is None or cpu_num == 1 else cpu_num - 1 87 | 88 | def _run_mummer(self, fa_file1: Path, fa_file2: Path, idx: int) -> List[AlignCoord]: 89 | """Run MUMmer function for multiprocessing 90 | 91 | Args: 92 | fa_file1 (Path): Input genome fasta 1 93 | fa_file2 (Path): Input genome fasta 2 94 | idx (int): Multiprocessing index 95 | 96 | Returns: 97 | List[AlignCoord]: AlignCoord list 98 | """ 99 | # Run genome alignment using nucmer or promer 100 | prefix = self.outdir / f"out{idx}" 101 | delta_file = prefix.with_suffix(".delta") 102 | cmd = f"{self._align_bin} {fa_file1} {fa_file2} --prefix={prefix}" 103 | _ = sp.run(cmd, shell=True, capture_output=True, text=True) 104 | 105 | # Run delta-filter to map 'one-to-one' or 'many-to-many' relation 106 | filter_delta_file = self.outdir / f"filter_out{idx}.delta" 107 | cmd = f"delta-filter {self._map_opt} {delta_file} > {filter_delta_file}" 108 | _ = sp.run(cmd, shell=True, capture_output=True, text=True) 109 | 110 | # Run show-coords to extract alingment coords 111 | coords_file = self.outdir / f"coords{idx}.tsv" 112 | cmd = f"show-coords -H -T {filter_delta_file} > {coords_file}" 113 | _ = sp.run(cmd, shell=True, capture_output=True, text=True) 114 | 115 | align_coords = AlignCoord.parse(coords_file, self.seqtype) 116 | 117 | # Delete work files 118 | for work_file in (delta_file, filter_delta_file, coords_file): 119 | os.unlink(work_file) 120 | 121 | return align_coords 122 | 123 | @staticmethod 124 | def check_requirements() -> bool: 125 | """Check requirements to run MUMmer genome alignment 126 | 127 | Returns: 128 | bool: Check result 129 | """ 130 | # MacOS or Linux only 131 | if platform.system() not in ("Darwin", "Linux"): 132 | return False 133 | # Mummer binary installation check 134 | required_bins = ["nucmer", "promer", "delta-filter", "show-coords"] 135 | for required_bin in required_bins: 136 | if not shutil.which(required_bin): 137 | return False 138 | return True 139 | -------------------------------------------------------------------------------- /src/gbkviz/align_coord.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import csv 4 | from dataclasses import astuple, dataclass 5 | from pathlib import Path 6 | from typing import List, Union 7 | 8 | from Bio.Graphics.GenomeDiagram import CrossLink, Track 9 | from reportlab.lib import colors 10 | from reportlab.lib.colors import HexColor 11 | 12 | 13 | @dataclass 14 | class AlignCoord: 15 | """MUMmer Alignment Coordinates DataClass""" 16 | 17 | ref_start: int 18 | ref_end: int 19 | query_start: int 20 | query_end: int 21 | ref_length: int 22 | query_length: int 23 | identity: float 24 | ref_name: str 25 | query_name: str 26 | 27 | def get_cross_link( 28 | self, 29 | tracks: List[Track], 30 | normal_color: str = "#0000FF", # Blue 31 | inverted_color: str = "#FF0000", # Red 32 | ) -> CrossLink: 33 | """Get cross link object for genome comparison visualization 34 | 35 | Args: 36 | tracks (List[Track]): GenomeDiagram Track list 37 | normal_color (str): Normal cross link hexcolor (Default='#0000FF'[Blue]) 38 | inverted_color (str): Inverted cross link hexcolor (Default='#FF0000'[Red]) 39 | 40 | Returns: 41 | CrossLink: Cross link object 42 | """ 43 | # Get cross link start-end of reference and query 44 | ref_start = min(self.ref_start, self.ref_end) 45 | ref_end = max(self.ref_start, self.ref_end) 46 | query_start = min(self.query_start, self.query_end) 47 | query_end = max(self.query_start, self.query_end) 48 | 49 | # GenomeDiagram cannot draw cross link color correctly in condition below 50 | # To resolve this drawing error, add 1 bp length to ref_start 51 | if self.ref_length == self.query_length and self.is_inverted: 52 | ref_start += 1 53 | 54 | # Set cross link color 55 | if self.is_inverted: 56 | cross_link_color = HexColor(inverted_color) 57 | else: 58 | cross_link_color = HexColor(normal_color) 59 | 60 | # Get gradient color from alignment sequence identity[%] 61 | upper_limit = 100 62 | lower_limit = 20 if self.identity > 20 else self.identity 63 | gradient_cross_link_color = colors.linearlyInterpolatedColor( 64 | colors.white, cross_link_color, lower_limit, upper_limit, self.identity 65 | ) 66 | 67 | name2track = {track.name: track for track in tracks} 68 | return CrossLink( 69 | featureA=(name2track[self.ref_name], ref_start, ref_end), 70 | featureB=(name2track[self.query_name], query_start, query_end), 71 | color=gradient_cross_link_color, 72 | border=gradient_cross_link_color, 73 | flip=self.is_inverted, 74 | ) 75 | 76 | @property 77 | def is_inverted(self) -> bool: 78 | """Check inverted alignment coord or not""" 79 | return (self.ref_end - self.ref_start) * (self.query_end - self.query_start) < 0 80 | 81 | @property 82 | def as_tsv_format(self) -> str: 83 | """TSV format text""" 84 | return "\t".join([str(v) for v in astuple(self)]) 85 | 86 | def add_offset(self, ref_offset: int, query_offset: int) -> AlignCoord: 87 | """Add offset to start-end position 88 | 89 | Args: 90 | ref_offset (int): Offset for reference genome 91 | query_offset (int): Offset for query genome 92 | 93 | Returns: 94 | AlignCoord: AlignCoord with offset 95 | """ 96 | return AlignCoord( 97 | self.ref_start + ref_offset, 98 | self.ref_end + ref_offset, 99 | self.query_start + query_offset, 100 | self.query_end + query_offset, 101 | self.ref_length, 102 | self.query_length, 103 | self.identity, 104 | self.ref_name, 105 | self.query_name, 106 | ) 107 | 108 | @staticmethod 109 | def parse( 110 | coords_tsv_file: Union[str, Path], 111 | seqtype: str, 112 | ) -> List[AlignCoord]: 113 | """Parse MUMmer(nucmer|promer) output coords result file 114 | 115 | Args: 116 | coords_tsv_file (Union[str, Path]): MUMmer align coords file 117 | seqtype (str): Sequence type ('nucleotide' or 'protein') 118 | 119 | Returns: 120 | List[AlignCoord]: Align coords 121 | """ 122 | align_coords = [] 123 | with open(coords_tsv_file) as f: 124 | reader = csv.reader(f, delimiter="\t") 125 | for row in reader: 126 | # Check read file contents & extract required row values 127 | if seqtype == "nucleotide": 128 | if len(row) != 9: 129 | raise ValueError( 130 | f"Invalid nucmer coords file '{coords_tsv_file}'!!" 131 | ) 132 | elif seqtype == "protein": 133 | if len(row) != 13: 134 | raise ValueError( 135 | f"Invalid promer coords file '{coords_tsv_file}'!!" 136 | ) 137 | row = row[0:7] + row[11:13] 138 | else: 139 | raise ValueError(f"Invalid seqtype '{seqtype}'!!") 140 | 141 | # Convert to correct value type 142 | typed_row = [] 143 | for idx, val in enumerate(row): 144 | if 0 <= idx <= 5: 145 | typed_row.append(int(val)) 146 | elif idx == 6: 147 | typed_row.append(float(val)) 148 | else: 149 | typed_row.append(str(val)) 150 | 151 | align_coords.append(AlignCoord(*typed_row)) 152 | 153 | return align_coords 154 | 155 | @staticmethod 156 | def filter( 157 | align_coords: List[AlignCoord], 158 | min_length: int = 0, 159 | min_identity: float = 0.0, 160 | ) -> List[AlignCoord]: 161 | """Filter align coord list with Length & Identity 162 | 163 | Args: 164 | align_coords (List[AlignCoord]): AlignCoord list 165 | min_length (int, optional): Min length to filter 166 | min_identity (float, optional): Min identity to filter 167 | 168 | Returns: 169 | List[AlignCoord]: Filtered AlignCoord list 170 | """ 171 | filtered_align_coords: List[AlignCoord] = [] 172 | for ac in align_coords: 173 | rlen, qlen, ident = ac.ref_length, ac.query_length, ac.identity 174 | if (rlen >= min_length and qlen >= min_length) and ident >= min_identity: 175 | filtered_align_coords.append(AlignCoord(*astuple(ac))) 176 | return filtered_align_coords 177 | -------------------------------------------------------------------------------- /src/gbkviz/draw_genbank_fig.py: -------------------------------------------------------------------------------- 1 | from collections import defaultdict 2 | from io import StringIO 3 | from pathlib import Path 4 | from typing import Dict, List, Tuple, Union 5 | 6 | from Bio.Graphics import GenomeDiagram 7 | from Bio.Graphics.GenomeDiagram import FeatureSet 8 | from Bio.SeqFeature import FeatureLocation, SeqFeature 9 | from reportlab.lib import colors 10 | from reportlab.lib.units import cm 11 | 12 | from gbkviz.align_coord import AlignCoord 13 | from gbkviz.genbank import Genbank 14 | 15 | 16 | class DrawGenbankFig: 17 | """Draw Genbank Figure Class""" 18 | 19 | def __init__( 20 | self, 21 | gbk_list: List[Genbank], 22 | align_coords: List[AlignCoord] = [], 23 | show_label: bool = False, 24 | show_scale: bool = True, 25 | show_ticks: bool = False, 26 | label_type: str = "gene", 27 | feature_symbol: str = "BIGARROW", 28 | label_angle: int = 30, 29 | scaleticks_interval: int = 10000, 30 | label_fsize: int = 10, 31 | scaleticks_fsize: int = 8, 32 | fig_width: int = 25, 33 | fig_track_height: int = 3, 34 | fig_track_size: float = 0.5, 35 | fig_align_type: str = "Left", 36 | cross_link_color: str = "#0000FF", 37 | inverted_cross_link_color: str = "#FF0000", 38 | target_feature_types: List[str] = ["CDS"], 39 | feature2color: Dict[str, str] = { 40 | "CDS": "#FFA500", 41 | "gene": "#0FE8E4", 42 | "tRNA": "#E80F0F", 43 | "misc_feature": "#E80FC6", 44 | }, 45 | max_feature: int = 1000, 46 | ): 47 | """DrawGenbankFig constructor 48 | 49 | Args: 50 | gbk_list (List[Genbank]): Genbank class objects 51 | align_coords (List[AlignCoord], optional): AlignCoord class objects 52 | show_label (bool, optional): Show label or not 53 | show_scale (bool, optional): Show scale or not 54 | show_ticks (bool, optional): Show ticks or not 55 | label_type (str, optional): Label type 56 | feature_symbol (str, optional): Feature symbol 57 | label_angle (int, optional): Label angle 58 | scaleticks_interval (int, optional): Scaleticks interval 59 | label_fsize (int, optional): Label font size 60 | scaleticks_fsize (int, optional): Scaleticks font size 61 | fig_width (int, optional): Figure width (cm) 62 | fig_track_height (int, optional): Figure track height (cm) 63 | fig_track_size (float, optional): Figure track size 64 | fig_align_type (str, optional): 'Left' or 'Center' 65 | cross_link_color (str, optional): Cross link color 66 | inverted_cross_link_color (str, optional): Inverted cross link color 67 | target_feature_types (List[str], optional): Target feature types 68 | feature2color (Dict[str, str], optional): Feature colors dictionary 69 | max_feature (int, optional): Max feature number to be drawn 70 | """ 71 | self.gbk_list: List[Genbank] = gbk_list 72 | self.align_coords: List[AlignCoord] = align_coords 73 | self.show_label: bool = show_label 74 | self.show_scale: bool = show_scale 75 | self.show_ticks: bool = show_ticks 76 | self.label_type: str = label_type 77 | self.feature_symbol: str = feature_symbol 78 | self.label_angle: int = label_angle 79 | self.scaleticks_interval: int = scaleticks_interval 80 | self.label_fsize: int = label_fsize 81 | self.scaleticks_fsize: int = scaleticks_fsize 82 | self.fig_width: int = fig_width 83 | self.fig_track_height: int = fig_track_height 84 | self.fig_track_size: float = fig_track_size 85 | self.fig_align_type: str = fig_align_type.lower() 86 | self.cross_link_color: str = cross_link_color 87 | self.inverted_cross_link_color: str = inverted_cross_link_color 88 | self.target_feature_types: List[str] = target_feature_types 89 | self.feature2color: Dict[str, str] = feature2color 90 | self.max_feature: int = max_feature 91 | 92 | if self.fig_align_type == "center": 93 | self.align_coords = self._add_align_coords_offset() 94 | # Center alignment figure cannot display scaleticks properly 95 | self.show_ticks = False 96 | 97 | self.gd = self._setup_genome_diagram() 98 | 99 | @property 100 | def max_range_length(self) -> int: 101 | """Max range length""" 102 | return max(gbk.range_length for gbk in self.gbk_list) 103 | 104 | @property 105 | def max_range_feature(self) -> int: 106 | """Max feature count""" 107 | return max( 108 | len(gbk.extract_range_features(self.target_feature_types)) 109 | for gbk in self.gbk_list 110 | ) 111 | 112 | @property 113 | def draw_pagesize(self) -> Tuple[float, float]: 114 | """Draw width * height pagesize (cm)""" 115 | width = self.fig_width * cm 116 | height = self.fig_track_height * len(self.gbk_list) * cm 117 | return (width, height) 118 | 119 | def get_figure(self, format: str) -> Union[str, bytes]: 120 | """Get genome diagram figure 121 | 122 | Args: 123 | format (str): Figure format ('jpg'|'png'|'pdf'|'svg') 124 | 125 | Returns: 126 | Union[str, bytes]: Figure string or bytes 127 | """ 128 | format = format.lower() 129 | if format == "svg": 130 | handle = StringIO() 131 | self.gd.write(handle, format) 132 | return handle.getvalue() 133 | else: 134 | return self.gd.write_to_string(format) 135 | 136 | def write_figure(self, outfile: Union[str, Path]) -> None: 137 | """Write genome diagram figure 138 | 139 | Args: 140 | outfile (Union[str, Path]): Output file path 141 | """ 142 | outfile = Path(outfile) 143 | format = outfile.suffix.replace(".", "") 144 | self.gd.write(str(outfile), format) 145 | 146 | def _get_track_offset(self, gbk: Genbank) -> int: 147 | """Get track offset for figure alignment 148 | 149 | Args: 150 | gbk (Genbank): Genbank object 151 | 152 | Returns: 153 | int: Track offset 154 | """ 155 | if self.fig_align_type == "center": 156 | return int((self.max_range_length - gbk.range_length) / 2) 157 | else: 158 | return 0 159 | 160 | def _add_align_coords_offset(self) -> List[AlignCoord]: 161 | """Add offset to align coords for figure center alignment 162 | 163 | Returns: 164 | List[AlignCoord]: Align coords with offset 165 | """ 166 | name2offset: Dict[str, int] = defaultdict(int) 167 | for gbk in self.gbk_list: 168 | adjusted_pos = self._get_track_offset(gbk) 169 | name2offset[gbk.name] = adjusted_pos 170 | 171 | offset_align_coords = [] 172 | for ac in self.align_coords: 173 | offset_align_coords.append( 174 | ac.add_offset(name2offset[ac.ref_name], name2offset[ac.query_name]) 175 | ) 176 | return offset_align_coords 177 | 178 | def _setup_genome_diagram(self) -> GenomeDiagram.Diagram: 179 | # Create GenomeDiagram.Diagram object 180 | gd = GenomeDiagram.Diagram("Genbank Genome Diagram") 181 | 182 | for gbk in self.gbk_list: 183 | offset = self._get_track_offset(gbk) 184 | # Add track of one genbank 185 | gd_feature_set: FeatureSet = gd.new_track( 186 | track_level=0, 187 | name=gbk.name, 188 | greytrack=False, # Disable greytrack 189 | greytrack_labels=0, 190 | greytrack_fontcolor=colors.black, 191 | start=offset, 192 | end=gbk.range_length + offset, 193 | scale=self.show_scale, 194 | scale_fontsize=self.scaleticks_fsize, 195 | scale_fontangle=0, 196 | scale_format="SInt", 197 | scale_color=colors.black, 198 | scale_ticks=self.show_ticks, 199 | scale_smallticks=0.4, 200 | scale_smalltick_interval=self.scaleticks_interval, 201 | scale_smalltick_labels=True, 202 | scale_largeticks=0.4, 203 | scale_largetick_interval=9999999999, # Set large value to disable 204 | scale_largetick_labels=False, 205 | axis_labels=True, 206 | ).new_set() 207 | 208 | range_features = gbk.extract_range_features(self.target_feature_types) 209 | max_range_feature = self.max_range_feature 210 | 211 | for feature in range_features: 212 | start = feature.location.parts[0].start 213 | end = feature.location.parts[-1].end 214 | if isinstance(start, int) and isinstance(end, int): 215 | # Exclude CDS that straddle start postion 216 | if start > end: 217 | continue 218 | # Filtering feature to be drawn 219 | feature_length = end - start + 1 220 | if ( 221 | max_range_feature > self.max_feature 222 | and feature_length < self.max_range_length / 2000 223 | ): 224 | continue 225 | # Make location fixed feature 226 | start = (start - gbk.min_range + 1) + offset 227 | end = (end - gbk.min_range + 1) + offset 228 | feature = SeqFeature( 229 | location=FeatureLocation(start, end, feature.strand), 230 | type=feature.type, 231 | qualifiers=feature.qualifiers, 232 | ) 233 | 234 | # Get draw feature 'label_name', 'feature_color', 'label_angle' 235 | target_label_types = ("gene", "protein_id", "locus_tag", "product") 236 | if self.label_type in target_label_types: 237 | label_name = feature.qualifiers.get(self.label_type, [""])[0] 238 | color = self.feature2color[feature.type] 239 | else: 240 | error_msg = f"Invalid label type `{self.label_type}` detected!!" 241 | raise ValueError(error_msg) 242 | 243 | # Define label angle by strand 244 | if feature.strand == -1: 245 | label_angle = 180 - self.label_angle 246 | else: 247 | label_angle = self.label_angle 248 | 249 | # Add feature to genbank track 250 | gd_feature_set.add_feature( 251 | feature=feature, 252 | color=color, 253 | name=label_name, 254 | label=self.show_label, 255 | label_size=self.label_fsize, 256 | label_angle=label_angle, 257 | label_position="middle", # "start", "middle", "end" 258 | sigil=self.feature_symbol, # "BOX", "ARROW", "OCTO", "BIGARROW" 259 | arrowhead_length=0.5, # Default: 0.5 260 | arrowshaft_height=0.3, 261 | ) 262 | 263 | # Get cross links 264 | cross_links = [] 265 | for align_coord in self.align_coords: 266 | cross_link = align_coord.get_cross_link( 267 | tracks=gd.get_tracks(), 268 | normal_color=self.cross_link_color, 269 | inverted_color=self.inverted_cross_link_color, 270 | ) 271 | cross_links.append(cross_link) 272 | 273 | # Set figure draw settings 274 | gd.draw( 275 | format="linear", 276 | orientation="landscape", 277 | pagesize=self.draw_pagesize, 278 | fragments=1, 279 | start=0, 280 | end=self.max_range_length, 281 | tracklines=False, 282 | track_size=self.fig_track_size, 283 | cross_track_links=cross_links, 284 | ) 285 | return gd 286 | -------------------------------------------------------------------------------- /src/gbkviz/gbkviz_webapp.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import List, Optional 3 | 4 | import streamlit as st 5 | from streamlit.delta_generator import DeltaGenerator 6 | from streamlit.uploaded_file_manager import UploadedFile 7 | 8 | from gbkviz import util 9 | from gbkviz.__version__ import __version__ 10 | from gbkviz.align_coord import AlignCoord 11 | from gbkviz.draw_genbank_fig import DrawGenbankFig 12 | from gbkviz.genbank import Genbank 13 | from gbkviz.genome_align import GenomeAlign 14 | 15 | # Page basic configuration 16 | st.set_page_config( 17 | page_title="GBKviz: Genbank Data Visualization WebApp", 18 | layout="centered", 19 | initial_sidebar_state="expanded", 20 | menu_items={ 21 | "Get Help": "https://github.com/moshi4/GBKviz", 22 | "Report a Bug": "https://github.com/moshi4/GBKviz", 23 | }, 24 | ) 25 | 26 | st.header("GBKviz: Genbank Data Visualization WebApp") 27 | 28 | ########################################################### 29 | # Sidebar Parameters Widgets 30 | ########################################################### 31 | 32 | # GitHub repository hyperlink 33 | repo_hyperlink = "[GBKviz (GitHub)](https://github.com/moshi4/GBKviz/)" 34 | st.sidebar.markdown(repo_hyperlink + f" v{__version__}") 35 | 36 | # Load example files or Upload files 37 | if st.sidebar.checkbox(label="Load example genbank files", value=False): 38 | genbank_dir = Path(__file__).parent / "genbank" 39 | gbk_files = sorted(list(genbank_dir.glob("*.gbk"))) 40 | upload_files = util.load_files(gbk_files) 41 | else: 42 | with st.sidebar.expander(label="Toggle Genbank Upload Box", expanded=True): 43 | # Genbank files upload widgets 44 | upload_files: Optional[List[UploadedFile]] 45 | upload_files = st.file_uploader( 46 | label="Upload genbank files (*.gb|*.gbk|*.gbff)", 47 | type=["gb", "gbk", "gbff"], 48 | accept_multiple_files=True, 49 | help=( 50 | "Genomes are displayed on each track in the order of file upload. \n" 51 | + "Since genome comparison is performed between adjacent genomes, \n" 52 | + "the order of upload is important." 53 | ), 54 | ) 55 | 56 | if upload_files: 57 | # Visibility control checkbox widgets 58 | check_cols: List[DeltaGenerator] = st.sidebar.columns(3) 59 | show_label = check_cols[0].checkbox("Label", False) 60 | show_scale = check_cols[1].checkbox("Scale", True) 61 | show_ticks = check_cols[2].checkbox("ScaleTicks", False) 62 | 63 | # Figure appearence control widgets 64 | fig_appearence_cols: List[DeltaGenerator] = st.sidebar.columns(2) 65 | label_type = fig_appearence_cols[0].selectbox( 66 | label="Feature Label Type", 67 | options=["gene", "protein_id", "locus_tag", "product"], 68 | index=0, 69 | ) 70 | feature_symbol = fig_appearence_cols[1].selectbox( 71 | label="Feature Symbol", 72 | options=["BIGARROW", "BOX", "ARROW", "OCTO"], 73 | index=0, 74 | ) 75 | 76 | label_angle_str = fig_appearence_cols[0].selectbox( 77 | label="Label Angle", 78 | options=["0", "15", "30", "45", "60", "75", "90"], 79 | index=2, 80 | ) 81 | label_angle = int(label_angle_str) 82 | 83 | sint2int = { 84 | "1Kbp": 1000, 85 | "5Kbp": 5000, 86 | "10Kbp": 10000, 87 | "50Kbp": 50000, 88 | "100Kbp": 100000, 89 | "1Mbp": 1000000, 90 | } 91 | scaleticks_sint = fig_appearence_cols[1].selectbox( 92 | label="ScaleTicks Interval", 93 | options=list(sint2int.keys()), 94 | index=2, 95 | ) 96 | scaleticks_interval = sint2int[scaleticks_sint] 97 | 98 | label_fsize = fig_appearence_cols[0].number_input( 99 | label="Label Font Size", 100 | min_value=0, 101 | max_value=100, 102 | value=10, 103 | step=1, 104 | ) 105 | scaleticks_fsize = fig_appearence_cols[1].number_input( 106 | label="ScaleTicks Font Size", 107 | min_value=0, 108 | max_value=100, 109 | value=8, 110 | step=1, 111 | ) 112 | 113 | # Figure "Width", "TrackHeight", "TrackSizeRatio" control slider widgets 114 | fig_param_cols: List[DeltaGenerator] = st.sidebar.columns(2) 115 | fig_width = fig_param_cols[0].slider( 116 | label="Fig Width(cm)", 117 | min_value=10, 118 | max_value=100, 119 | value=25, 120 | step=5, 121 | ) 122 | fig_track_height = fig_param_cols[1].slider( 123 | label="Fig Track Height(cm)", 124 | min_value=1, 125 | max_value=10, 126 | value=3, 127 | step=1, 128 | ) 129 | fig_track_size = fig_param_cols[0].slider( 130 | label="Fig Track Size", 131 | min_value=0.1, 132 | max_value=1.0, 133 | value=0.5, 134 | step=0.1, 135 | ) 136 | fig_align_type = fig_param_cols[1].radio( 137 | label="Fig Align Type", 138 | options=["Left", "Center"], 139 | index=0, 140 | help=":warning: ScaleTicks is not displayed if 'Align Type' = 'Center'.", 141 | ) 142 | 143 | # Target feature types widget 144 | target_feature_types = st.sidebar.multiselect( 145 | label="Target Feature Types", 146 | options=["CDS", "gene", "tRNA", "misc_feature"], 147 | default=["CDS"], 148 | ) 149 | 150 | # Features colorpicker widgets 151 | color_cols: List[DeltaGenerator] = st.sidebar.columns(4) 152 | cds_color = color_cols[0].color_picker(label="CDS", value="#FFA500") 153 | gene_color = color_cols[1].color_picker(label="gene", value="#0FE8E4") 154 | trna_color = color_cols[2].color_picker(label="tRNA", value="#E80F0F") 155 | misc_color = color_cols[3].color_picker(label="misc", value="#E80FC6") 156 | feature2color = { 157 | "CDS": cds_color, 158 | "gene": gene_color, 159 | "tRNA": trna_color, 160 | "misc_feature": misc_color, 161 | } 162 | 163 | genome_comparison = None 164 | cross_link_color, inverted_cross_link_color = "", "" 165 | min_length, min_identity = 0, 0 166 | if len(upload_files) >= 2 and GenomeAlign.check_requirements(): 167 | # Genome comparison type selectbox widget 168 | genome_comparison = st.sidebar.selectbox( 169 | label="Genome Comparison Type", 170 | options=[ 171 | None, 172 | "Nucleotide One-to-One", 173 | "Nucleotide Many-to-Many", 174 | "Protein One-to-One", 175 | "Protein Many-to-Many", 176 | ], 177 | index=0, 178 | help="[MUMmer](https://github.com/mummer4/mummer) " 179 | "is used as genome comparison tool. \n" 180 | "User specified min-max genomic regions are compared.", 181 | ) 182 | 183 | # Genome comparison filter parameters 184 | min_hit_cols: List[DeltaGenerator] = st.sidebar.columns(2) 185 | min_length = min_hit_cols[0].number_input( 186 | label="Min Length (Kbp)", 187 | min_value=0.0, 188 | value=0.0, 189 | step=0.1, 190 | format="%.1f", 191 | help="Minimum length of MUMmer comparison results to be drawn.", 192 | ) 193 | min_length = int(min_length * 1000) 194 | min_identity = min_hit_cols[1].number_input( 195 | label=" Min Identity (%)", 196 | min_value=0, 197 | max_value=100, 198 | value=0, 199 | step=5, 200 | help="Minimum identity of MUMmer comparison results to be drawn.", 201 | ) 202 | min_identity = int(min_identity) 203 | 204 | # Genome comparison colorpicker widgets 205 | cross_link_color_cols: List[DeltaGenerator] = st.sidebar.columns(2) 206 | cross_link_color = cross_link_color_cols[0].color_picker( 207 | label="Cross Link (Normal)", value="#0000FF" 208 | ) 209 | inverted_cross_link_color = cross_link_color_cols[1].color_picker( 210 | label="Cross Link (Inverted)", value="#FF0000" 211 | ) 212 | 213 | ########################################################### 214 | # Main Screen Widgets 215 | ########################################################### 216 | gbk_list: List[Genbank] = [] 217 | 218 | gbk_info_placeholder: DeltaGenerator = st.empty() 219 | warning_placeholder: DeltaGenerator = st.empty() 220 | dl_btn_cols: List[DeltaGenerator] = st.columns([3, 3, 5]) 221 | dl_png_btn_placeholder: DeltaGenerator = dl_btn_cols[0].empty() 222 | dl_svg_btn_placeholder: DeltaGenerator = dl_btn_cols[1].empty() 223 | dl_align_coords_btn_placeholder: DeltaGenerator = dl_btn_cols[2].empty() 224 | fig_placeholder: DeltaGenerator = st.empty() 225 | 226 | with st.form(key="form"): 227 | 228 | st.form_submit_button(label="Update Figure") 229 | 230 | st.markdown("**Display Genome Min-Max Range & Reverse Option**") 231 | 232 | range_cols: List[DeltaGenerator] = st.columns([3, 3, 1]) 233 | 234 | for upload_gbk_file in upload_files: 235 | gbk = util.read_upload_gbk_file(upload_gbk_file) 236 | 237 | # Min-Max range input widget 238 | range_label = f"{gbk.name} (Max={gbk.full_length:,} bp)" 239 | min_range = range_cols[0].number_input( 240 | label=range_label, 241 | min_value=1, 242 | max_value=gbk.full_length, 243 | value=1, 244 | step=1000, 245 | key=gbk.name, 246 | ) 247 | min_range = int(min_range) 248 | max_range = range_cols[1].number_input( 249 | label="", 250 | min_value=1, 251 | max_value=gbk.full_length, 252 | value=gbk.full_length, 253 | step=1000, 254 | key=gbk.name, 255 | ) 256 | max_range = int(max_range) 257 | reverse = range_cols[2].selectbox( 258 | label="Reverse", 259 | options=["Yes", "No"], 260 | index=1, 261 | key=gbk.name, 262 | ) 263 | 264 | if min_range > max_range: 265 | st.error("'Max Range' must be larger than 'Min Range'") 266 | st.stop() 267 | 268 | gbk.min_range = min_range 269 | gbk.max_range = max_range 270 | gbk.reverse = True if reverse == "Yes" else False 271 | 272 | gbk_list.append(gbk) 273 | 274 | # Show uploaded genbank file information 275 | all_gbk_info = "" 276 | for cnt, gbk in enumerate(gbk_list, 1): 277 | all_gbk_info += ( 278 | f"Track{cnt:02d}: " 279 | f"{gbk.name} ({gbk.min_range:,} - {gbk.max_range:,} bp), " 280 | f"Length={gbk.range_length:,} bp, " 281 | f"CDS={len(gbk.extract_range_features()):,} \n" 282 | ) 283 | gbk_info_placeholder.markdown(all_gbk_info) 284 | 285 | # Show too many CDS warning 286 | MAX_FEATURE = 1000 287 | max_feature_count = max( 288 | [len(gbk.extract_range_features(target_feature_types)) for gbk in gbk_list] 289 | ) 290 | if max_feature_count > MAX_FEATURE: 291 | warning_msg = ( 292 | f"Because there are too many features to be drawn (more than {MAX_FEATURE})" 293 | ", \nthe number of features to be drawn is limited to only long sequence." 294 | ) 295 | warning_placeholder.warning(warning_msg) 296 | 297 | # Genome alignment 298 | align_coords: List[AlignCoord] = [] 299 | gbkviz_tmpdir = Path.home() / ".gbkviz" 300 | gbkviz_tmpdir.mkdir(exist_ok=True) 301 | if genome_comparison is not None: 302 | genome_fasta_files: List[Path] = [] 303 | gbkviz_session_tmpdir = util.make_session_dir(gbkviz_tmpdir) 304 | for gbk in gbk_list: 305 | # Make genome fasta file 306 | suffix = "_reverse.fa" if gbk.reverse else ".fa" 307 | filename = f"{gbk.name}_{gbk.min_range}-{gbk.max_range}{suffix}" 308 | genome_fasta_file = gbkviz_session_tmpdir / filename 309 | if not genome_fasta_file.exists(): 310 | gbk.write_genome_fasta(genome_fasta_file, range=True) 311 | genome_fasta_files.append(genome_fasta_file) 312 | # Run MUMmer genome alignment 313 | seqtype, maptype = genome_comparison.split(" ") 314 | genome_align = GenomeAlign( 315 | genome_fasta_files, gbkviz_session_tmpdir, seqtype, maptype 316 | ) 317 | align_coords = genome_align.run() 318 | align_coords = AlignCoord.filter(align_coords, min_length, min_identity) 319 | 320 | # Remove old genome comparison result directory 321 | for session_dir in gbkviz_tmpdir.iterdir(): 322 | util.remove_olddir(session_dir) 323 | 324 | # Create visualization and comparison figure 325 | dgf = DrawGenbankFig( 326 | gbk_list=gbk_list, 327 | align_coords=align_coords, 328 | show_label=show_label, 329 | show_scale=show_scale, 330 | show_ticks=show_ticks, 331 | label_type=label_type, 332 | feature_symbol=feature_symbol, 333 | label_angle=label_angle, 334 | scaleticks_interval=scaleticks_interval, 335 | label_fsize=int(label_fsize), 336 | scaleticks_fsize=int(scaleticks_fsize), 337 | fig_width=fig_width, 338 | fig_track_height=fig_track_height, 339 | fig_track_size=fig_track_size, 340 | fig_align_type=fig_align_type, 341 | cross_link_color=cross_link_color, 342 | inverted_cross_link_color=inverted_cross_link_color, 343 | target_feature_types=target_feature_types, 344 | feature2color=feature2color, 345 | max_feature=MAX_FEATURE, 346 | ) 347 | 348 | # Show figure 349 | png_bytes = dgf.get_figure("png") 350 | fig_placeholder.image(png_bytes, use_column_width="never") 351 | 352 | # Download figure button widget 353 | dl_png_btn_placeholder.download_button( 354 | label="Download PNG Figure", 355 | data=png_bytes, 356 | file_name="gbkviz_figure.png", 357 | ) 358 | dl_svg_btn_placeholder.download_button( 359 | label="Download SVG Figure", 360 | data=dgf.get_figure("svg"), 361 | file_name="gbkviz_figure.svg", 362 | ) 363 | 364 | # Download align coords button widget 365 | if align_coords: 366 | header = ( 367 | "REF_START\tREF_END\tQUERY_START\tQUERY_END\tREF_LENGTH\t" 368 | + "QUERY_LENGTH\tIDENTITY\tREF_NAME\tQUERY_NAME\n" 369 | ) 370 | dl_align_coords_btn_placeholder.download_button( 371 | label="Download Comparison Result", 372 | data=header + "\n".join([ac.as_tsv_format for ac in align_coords]), 373 | file_name="gbkviz_comparison.tsv", 374 | ) 375 | else: 376 | # No Uploaded files, display toppage contents 377 | demo_gif_file = Path(__file__).parent / "gbkviz_demo.gif" 378 | st.image(str(demo_gif_file.absolute())) 379 | 380 | toppage_md_file = Path(__file__).parent / "toppage.md" 381 | with open(toppage_md_file) as f: 382 | toppage_contents = f.read() 383 | st.markdown(toppage_contents) 384 | -------------------------------------------------------------------------------- /tests/testdata/genome_fasta/JX128258.1_1-66854.fa: -------------------------------------------------------------------------------- 1 | >JX128258.1 2 | GCATGACGCTGACCAGACTTTAATTCAATGGGTAAGTTTTGATAAAACTAGCGGCGGAAAGTATCGCTACTATGGCGACGAGCGATTCACCACTAAATTTTATAAGGTACTCGACCATGGCTCATGTTAAAGATGAAACGCTGTATGGCGCAGAGATCAAGAAGCGTGTGCGTGAGATGGCTGAAGGCGGAACATTGCTACCGCCGCGAGTCCGCTGCGACCACGTGATTGGCGTATCCGGCACGAAGGAGATGGGCGTGTTGGTGAAAGACATTCGCGTTGGGGATGTCATGGTCATCGACCGACAAGCGCGAGTCGTTATCCAGGTGCAACCGAACGATGATGAAGGATGTGTCCTATTGAAGCTGAAGAAACTTTCATCCAGCCCAGCAAAGGCAGTCATCAAGAAGGTCTGGCCAGAAGGATTACGCAAACTCATTCGTCGACCCGTGGAGAATGTGTGATGGAAGATTATATTAACGCCATGTATATGGCATTCTATGTCGTTCAACTTCCCAATGGCGCGGTATTTTATGGCGAGTACACCTTTGACGTTCAATATGGCGTTTCAGAGCGTACAGTGTTAACAAGGGAGTTGATTGCGGACCTTAAGGACGACATCAAGCGCGTCGCGCGGCAGCAGTTCAATTTGGATGACACAGTCATCGTTCGTATAACCGGAATAACAGAGGTGCAGTAATGACCCGTGATCAGATACTCGCCGCGCATGAGCGTGAAAAGGTCAAAGATATTTGTAAAAGGCACAAATCATTTGCCGATTCTTACGCCTTCTTAAAGTCCTGCATCAAGCAAAATGCAAGGATGGATAACACTGTATTGACATTCAACCTTTTGTCTAACGGAGCAAAGCTTGATGCAATATGCGGCTGCAGATTTGCCAGCGTGATGTTTGAAAGATGTGCTCACAAAGACTCTTTCTTCCATCAAGTCTCTCACCGGACGGGTGATACAAAGATAACAAGGACAAGGCACGAGATAGAGATTGACCTACTCCACTATGTAAAATGAATATCAAAAAGGTGAGCTAAATGCTTGCCTTTTCTTTTATCAATACTTATACTCTTTTCATCAAGACTAACAAGCAAGGTGAATTATGATTTACTTAGGCATCGACCAGGAACAAGACGAGCGGCTAGGAAGCGTGTTAAACGTAGAATTAAACACAGCTGTACACATCAAGCCTTGGCCAGAGGCGCACCCCGACGTAGTTGTACCCGTTGCACCTTGGACTCGTTACGTTGCCATTGACAATGATGGCCTTGTCCATTGTTACTCAGAAAAGCCGACATACTTCGAAAAGTATCACCAATGGCTTATGACTGGTTGGGCAAAGGTGCGATGCTGCGGCGAAGTCGGTCTGGAAGGCTGGAGCTTCAAGGCTAGTGAATCGTGTGTCGAGGTGCAATTATGAATGCCGCGCTGGGTAAGCTGTCTTTCAACAAGCGCAATGAGTTGCGCATGGTGTCTCGTTTTCAATTTTTATTAAATGCTATGTCAAGCGTTGCCATAGCAATGCTTCGCGCTGATTGCCCTGCTGAAAAGCGTGAGACTTTATTCAAGCGTCACCAACAATTACGAAATGCTGCTTATAAACTGCAGCAATATGCTATGGAGTATGCAAAATGAAGATGCAAAGATGTCCACATTGCTTGTCCACGATGCGGCTTACTGCTGAAGAATATTTACATCACGTTAACGTTTGTGAGGCTAATCCTGAAAATTCGACGCGTTACTATTATCACTATCACGCAGAAGCGGAAGATGGATCAGGCGCAACAGGAATCGTTACCACGAAAGAAATGGTGATCACCAAAAAGGCGTATGAAAGCCTGCTGGATACAATCAAGGAAGTGTCTGGCAAAGAAATAGTCTGCATTAAATCTTTATCTTTCTTGCACGAGGTGTGAAATGAGAATGAAGCGTTGTCCGTATTGCCACGATGTGATGCATCTTCCGCATGAAGAGTTCGTGCAGCACATGACTAATTGTGATAAGAATCCTAAGAGTGAAAGCCAGCTTGAAGAAAGAATGTTTCTGGTGTCATTCAAGTATTCAGCTTACGATGCACAGCCTGCTTACGGTGCACCAAGTGCTGTTTACAGACCATTGAGAAGCGACATTGACTCAATGCAGCTTGCGGCCTGGATTAACGTTAAGGAAGGCATCACTCCGCACTTTATCGCGCGCATCCAATCTCAGATTCTACAAATCAAGCGCGAATACAACCGTGACATCACTGAAGTGAAGGTGCTTTCCATTACGCCGATGAATAAGGAGTTGCCGTGAACAAGGGTCCGATGACTAAGTTGGCCGTTGCCGCGCGGAAGCTTCGACAAGCCGTTAATGGGTCGCGGCCCGTGGTGTTGACACTCGACGACGCAAAGGCGCTGGTAGAGCTACTCGACGAGCACAACCGACGAAAGAATCTGGAGAACACATTACGCTGGCGCGTCACCCCAGCCGGGCGGGAGAGCGAGAAGAAAGCTTACTTGCGACGCAAACTAATGTCAGTCGGCCTTCACGAAGAGGCGAAGAAGATTTGATTCAAAAAGGTGAGCTAAATGCTTGCCTTTTTATTTGCCTGTATTATACTTGTTTCATCAAGCAAAGGAGAATTGATTATGAGTACCGAAGCGATGAAGAAAAAGGTTTCGAATGCTTTGCAAGAAGCCGTGAACTGTGGTGCCATTAAAGAGTTCAAGGAGACTCAAGAAGGCGGTGAGCCAGTATTCTTCTTTAAGAATAAAAAGGACGGTGTTGCAGCAATCATGTTGTTAAAGAATAGTGATGACACATTTATCCTTTGCGTCGGAGGATATGACCTTATCGTTGATGATGTATTTATCAATTGTGCCGACGGTCTTAACCCTATGCTGACATTTGAGCGTCGCACCATCCGTGTTGCAACGTTTGGAGGGAAGTTATGAGTACCGAAGTCCACAACGCATCAGCCTTGGTTAGCTTTTACCGTAACAAAGGCGTGTCGCTCGTTAAAACGCCGCAAGGGATGTTGTTCTTTGGCACGCGATTCCTGAAAGCATCGGAGCGTGAAACGCTGTCCAAGTTCGACCAGAAAACATTGCACGCAGTTTGGAGAAGACAACAATGAGACTAAGCCTAGCGCAAATTCAAACATTGTACCGGATGGAAGACGGAACGCCATACATGCTGCGCGGCGACCGCAAGAAGGCTTATGAAAAGCGGCCATCACTGTTTCACGACATCAATGCGCCATCAATCCCTGTCTTATTCCGGTTGGGCCTTGTTGATTGGGCGGCGCCAGGAGAGAAAGACCCGACGCGCTATTCATCCGTGGTGATGACAAAAGCAGGTCGCGCGGCATTAAAAGAGATTAAAGAAAATATGGCTGGAGGTAAATATTATGACATCAAATCTTAAAGCCCGTTTATTATTCATCAAGCCGCATGTGCCATATAAGATTAGTAAGCGCACCTGGCTTAACATTTACAACCGCAGCGGCGACCGTTGTTTGTACAAGGCAAAGCGGCGCAAGAAGGTATATTCTTACACAACATCCATCAAATAAGACTAGGAGAAGAATAAAATGAAAATCGAACAACTCGAAGCAGTATTGGAAATGGCCGTAAAGGCAGGCGCAATCAAAAGCTATCGTCGCGAGAAGTCAGATAGCGATAAGGTGTTTTGTCGCAACTTCTATATCGTTGGCAACCTTAACGACCACTACACCATCGAGTGGTATACTAACGTGATGACCCTTAAGTCGCGCACCATGGAGCTTTGGTGTGATGACATCTGTCTTTCGAATACTCACCCAAGCTATGATGTCGCCCTGGCATTCTATCACGGAAGCCGTCAACCTGTCGCCCACATCGGTGAGAAGCATGAGCATCTTAAGGCACGACCAGAGGAATCAATGGAAGGTTGGATTGAATGGGCTGGCGGAAAGAATCCGGTGCCTGGTAAGATGGTCGAATACAGGCTGCGCAATGAAGGGGATAAAGTGCTGTCAAGACTCTCTGACCATCTGCACTGGGCCCATATAGGAGGACTAAAAGGTAGTGACATCATTGCTTATCGGGTCGTTAAGGAGGGATGATGGGTAAACGCCTTATCGCCGCTGGTTGGGCCATACCGAAGTGGGGTCATCGTGCGCATTACTTTGACGAAGGAGAAGTGCAAAGCCTTTGTGGTCGCGCAACGTATTTCGGTGATGAGCGCGTCAGCGGCGATTATATCGACTCGCTTTTAGGCAAAGGTGATTGCAAGAAGTGTCAGAATATATTAAGGGATATTCTTACGCAAAAAGGATTGCTTGAGCTTGATGAATCGGAAGAAGTAATTGAACTTAAGCTGGAAGCCAATCACCTTATTAATATGTTCAAGAACTATTACGCAACTAATATGCGCTCAAAAATGAGCGAGGAAGTAATAGAAAAGGTGTTCACCTACAATCCGCTAAGGATGAATAAAACCAAATTGAAGAAGTTTAATATAATGTTAAGGAAAGAATTTAAAAGGCTAGGGGTGAAGAATTTTATATTTTAATAGTGATTAATGTTAAGAGGGCCGATTGGCCCTTTTTGTTTGCCCGTGGGGTGTGAGTCTTTATTATCGGATAAAGCGATTGATTTGTGTAAATCTATTAGAGGATGGTGGGGAATGAGGATTGTGACGTGATTTGTGTGTCTTGAATATGTGTGCGGATTTGGAAGAATATTGTACTGTGGTGCTGTGGGATTGGAGAGGGAATCACTAGGTTTTGGGGCGTGTACCGTGGTGTGTGGGCCTGTAGGCTGCGCCGTCTCTGGGATTGCCGCCTGAAATTTAAAAGGAGATATAGTTAGCTGGCTAACCTTACGTATAGAATTTAAGCGTATAATGACGTAAGATTTGGACCTATCCGTAGTTCACTCCACACACTTCTATGGTGCGCCGCGACTGGGTTCAGTGGTACATCTTACGGATGATACGGATGATACGCGTCGCCGCTATACTTTATACAACTTTGAAAAAAACAATTAACTCCATTTTGAATTAATTTAAATTAATTTTTTTCTACATCCTCATACTTATACTAAACTTATGTTTATACGTATTATCCGTAAGATATAAGTAAAAACAAAGACTTGCGGCAATACGGATGATACGTCATGATACGCTTCAACCAGCCAGCAGCGGCTAAGTCATTGATTTGCATAACAAGCGGCGAAAGGGATGGATTTCTTTTATACGTATCAAACAGTACACCACGCACCACGGTCCGCTATTCATTCAGCACTATGATTTGTGTACTTTTACAGCCAATTTGAACATCAATCTGCACTTGAATATAATGTTCATTCATTGTATAATTCACACTATTAATTTGCACTATGGGATTTGCACTATGAGTCAAGATTATGTAGCAATGCCTGAAGACTTTGAAGACCCGCGATTTGCAGAGCATAATCAGGCATTATTCGATGAGTTCATTGACCTTGTTATTCAGGGCCATGACATGCGCGCAGCTTTTGCACTAGTATTTGGCATGGAGGTTGCGACCGATAACTACACTGGCCAGCGAATCCTCTGCACGCAACGCAATCCGTACTACAAGATGCGCTACAAAAAGCGTATGGAAGAGATGCCATTGAAGGAATTGTGGAGTGTAAAGAGTTCCATCCACAATTTAGTGAAGCTTGTGCGTGATCCAGAAGTCGCAGCATCAGCCAAGCTTAATGCCATTCGTGAACTGAATATCATCTACGGCATCACGATGATTGATGAGAATGGCAATAGTAAAATGGGCCGTTCCATGGACGATTTCTACAAGGATTTTGGAGAGGCAGCCAAAGAGGGTGAGCAATTCTCCCGCCACTAGCCAATTTGCACTATAAAACGGCCCTAGAACACATTTTCTCCACTTCTAGGGCCATCGGTAATACGACGGGGAAGGTTACAACCATAAACGCTTTAGAAAGTGTATTATTATAAGTCATCTTTTAGTCACTTTACGTAACAATTTACGACCTTCCGCCGTCCAGTCGAACGACTCCACCAGCAGATTTGCACTATAACCTAAGACGATGCGCCCTTTCTCGTTATCGACCCGCCAACAAGTCTCGAATAGCATTCGATTTGCACTATTAACTATCGCCGCAACGCGCGTTGGGTAAGCGCAATTTGCACTATGGTCGTAAAGGGATAAGGTGCGACCACTTCCGATGGACAACGTAGCGATGAGAATAAGCGTATTCATAAGCCACCAATTTGCACTATGAAAAGCGACCCCGAAGGGCCGCCATTCGATTAGATAATCTGGAATGTGTAGGACTTGTTGCCGAACTCAAAGGTCAAGCGTCCAGCTTCTTTAAGCTTCATGCGGAAGCGAATGTGCTTGCTATCCGGTAATCCCAGCGCGGCGAACGCTACGCGGACCGATTTGAACTCGCCTACACCTTCGACCATGACGCCGTTACGGGTGAGACGCTTTTGCGCCACTTCCTTGTTATCCCAACTTTTTGCAATACCTTCGCTATTCGAACGGCGATGGGAAGGACTGGCAATTTTATCCGCGCCAACCGGAGCATCATTCAGGCCGCTTTTAACGAAGGCTTCATATTCTTCGTCGGTCATCGCGTCGAGTTCTTCCTGGGTCGGCTCCGCTTTTTTAACGACCGCACGCGCTTTGTGCGTTTTTACATCGCTGGACACTTCCTCGCGCGGCTTCGCGTCTGGGATGGGCGATTCGTTGGACGGCTCATCGAGCGCGTTTAAGGACTCGATTAACGCGATGACGCGAGTCTCAGCGGTGCGACGGTCCGCAAACTTCTTAATCGGTTTTGAGCCGGAGTTAGCGTTATAGAATGCAACGAGGTCGGCGGTCTTAGTTGCGATAACGTCGCCGCTAGTAGAGAAACGATTCAAGCTAACCATAATAAACTCCTAGTTTGGGAGCGGCGTTAACGACCTATTCGCTAACTCATCCCGTCCCGATATGAGTACATTATAATATAGTGTAGAAAAAAGTAAAGCACTTTTTCGATAAAAATGCGATAAATTATTTTATCTTTTTTCTTTACTTCTTCGTACACTCGCGTATACTTGTTTATATCGAGACGGGCGATGGCCCTTCCTTCTACTAGCATCGGGAGCTTTATTATGACTACTTTAATCTCTTCCATCCTTACTTACGACGAAGACCGTTTAACCGTTCGCTCTCTTATCGCCGCCGTTAACGCGGAACTAGAATCTAGCGCCATTAAGGTCCGCGCGGTCGCCTTCATCGGCCTTTCCTTCGACGATATGAAGTACGCCGAACGTAGCGCCATCCGCTTCGCGAAGACCGACGACGAAGCCGTTACCCTTATCGAGACGGTTACGCCGCGCGGCGAAGCGTTAATTATCGTCGAGTATATCGACGTAGAAGGCGATAAATCTTATAAACATTTTATCGCAGAATGACGAAAAAGTGCTTTACTTCTTCGTACACTAAGACTATAATGTTTTATATCGAGAGGGGATGAGGTAGCGAATAGGTCGCTACCCTCCCGACTAACTAGGAGAATATTATGATTACTTTAGCCGCTATCCGTTCCGCTCGCGTCGAAACTTCCGAAAACTCTAACGTATTTGGCGAAACCTTAGAGAGCGTTTATCTCTCTAACGTAGACGCAACTATCGAGTCTATTTATGAGCCGATCAACTTTCTCGACCTTTACAAGTATCGCGACGAGGACATCGTATCCTACCGCGTAACGATTAACGGCTTCGTTTATACGATCACCGAAATCGGCGGCGAATATATAGCTGTACCGCAACTCGGCGGCGAAGTAACTTACTTTAAAATCGTAAGCCTTTAAGGAGAAGAAAGATGACTAATATGAATAACTCTCTTAACGCGCGCGCCCATCGCACCGCCGTAATCGATATGTTTCGCGAGCTTAAGGAATTATGCGATAATATGAACGCGATGTTATCCATCGGCGGCTGGGGATACGAAGAAGAAGTTAAATACGCGGTTATGCGTCGCCGTCGCGATAACGTCCTTGGACAAATTAAACGCGCCGGATTATTCCTTTAATTATAATCACCCACCGTTACTAATAGGCCGCGCTTAGTCGCGGCTTTTCTTCGTCCCTATCTCAATGCGCTTCTCCGCGAAAATTCCTTTATCCTTCCCTTCGTCGTCGCATAATCTTCGTCGAGATGCTCCTTAGTTCGCATAACGGGTATTACGTTAAATGGAGAACATCGCGTAAGTCCTTGTTTTATATAGACACCTATATCGGACCGTTAAGGCGGGTCGCGTAAGTCGTTGTTTTATAAAGGCGCAAAACTTTCCCTTCGTTCCGAACTAAAACGAGAAATATGCGGACCCTTCGCCCGAAAATAGTACGCATGCGAAATTACCGACATCTAGAATAATCCCCGCCGATATTATCCTACACGCAATCATTAGCCTTCGAATCATTATGCTTCATATTATTATGCATCGAATCATTCGCTTTCGAATTGTAACGCTGGAAACTGTAACGGCGATTGATTATTGCGTTCGTGTGGTTTTTATGGCATGGGTCTTTTGGTGCGTTTTGGTACTTGATGAAATTTGCAGTACACTAATCAAAATACGACACATTTGGTCCACTAACTTTTCAAAGAAAAAGTCCTAGACAGTACCGTACTATTTTGTGCCCACAGTAAATTTGCAGTACACTCCTGCGCGGCAGGCAAAGAAAGGGCCGCCACAGCGACCCACGATTCACGGTTAAATCAGCAACACCCACTATTCGCTCTTATGGGCATCACCAAAGCCATCCGCAATCTGGCTGATCAATGATTCAATGGACACAGTTTTACCAATTGATCGAGCGGTAATAGCAAGCATATTATCAATCAAACCATGATTGGATGCATATGGTCCAGGTTTTGAATCATCTTCAGGACAGCCAAAAAGCTGGTCGCGCAAACTTTCGAGAGAACGCTCAATATTTTCCAGCTTCTCTTCTAAATCAGATTGGCGACGTAAAACCCATGTTAAGTCTCGGTTGCCGACTTCCAACCCATCAGAATCGCAAGCTGGAACGTCAATTTTGATGCTGCCACCAAAGGCCATTCCGCTGCCTTTAGTATATGTGTTGTGAATAGAATCATTCTTATTTGACATATCATTACCTTTCATGAGGGTGATTAACAATAACTATAATAAAGCCGCATAGCGCGGCATTCAAATCGGTTTGTTAATTGTAACGATTGGATTCATCAATCGATACCAACTGTGCTGGGTCGCCGGATACGGTCGAGCCAATGATACCCATCTGCTGAAAGAACTCTGAATAAACTTCCTTCCAGTATCTACGCGCTGCTTTCTGAGCCTGCCTTTGCGCTTGAAGCTTTTACCTTGAAAGATGAAACGGTCGCTTGCCGCTCGATACTCCACCACACCTTCCAGCCATTGTAAGAACGCTACTGATTCATTCTGATTCATGTTAACCTCAATATTTTAATAAGAAAGCACCCAACCAACTTTCCTCAATCTCGCGGCCAGTAGCCACACGGTCGGTCTTTGCTATGGGTCTGGATTCGCCGCAAGGTAATCCGTCTTGCAGTTGTGTACTATTGCCAATTCTCACCATGACCTTTCCATCAGGGTCGATATAAGCGCGACAACCCATGATTTCGAGTCGTTGTAGACACTGGCGAATCGTTTTCAGCCTTTCACCGGACCGGATAGAGCGCGGTCGCGACCGCTGACCGTTCTTATTCACTGTCCGCTTAACGACCGGAATCTCATTGGTGCGTTTCGCTTTCGGTCGGTAATAGGCTTCTTCGCCAGGAGTCGCACCTGGCGTCAATTCACGCTTGAGCGCCTTTTCAATATCGATGATCATAATTATGCCGCAGCAGCGTGGATGATTACGTAAACTATGCCAAATAGCGCGGCAATACATACCGTGCCCCAGAATGCAAAGCGTCGTGACTCTTTATCCATTGTCCACCGCTCCAATATCCTTCAAGAACTTGTGCAAGTCACCTTTCTTATTAAGCTTTTGCATAGTTTTGATATCATCAAGTGATATGCCTTGATCGCTTTGTTGTTTGTCAATGCAGACAATGCCGCCTTTCTTGGCCTTGATTGTCATGCCTTTGGCTTCAATACTTTTTACGAAATCGGACAATAATTTAATTTCCATAATACACCTCACTTGTTAACGTATAATGAGTATAACTTAATAGCGCATAAAGTAAAGGCGCTTTTCAGCGCCTTGAGTGAATTATTTTGCTGCTTTCAGCGCGGCTATTTCTGCCTTTAGTTCATCTATCTGATCCATCAATGCAAGAATTGCCTCGTGATGGAGTGCTGCTGCAACGCCAGAAGTGTTTACTGACTTTACGTCATCCAGAATTGACCCATCACGCAGGGTGACTGGTGATGATTTTGTTTCTGATACGGCTTCAGGGAAGTCTTTCTCTACGTCCTGCGCGATGAATCCGTATCCGATTGAGCCATTTGTCTCCAGGACCCATGTGACCCCTTTGATGTTTCTCATCTTGGAGAGCGGATTACTGATGCGCTCAATGTTGCTTTTAATTCTTTCGTCAGATGTGCTTCGCCATTCCTGGCATCTTGCTATGCCGTCAGCACCAAATAGATAAGAGGCACTGCTGCCAATGCCATTCAAAATGTTAAGTTGCGCACGGTCCAATGCTGTTGTGCCACTTCTGACTCCGCCAAGCATCCAATTCCCGTCATACCAGTCGCCGCCAACGGAGTTTATATAGCCTCCTTCTGGCACATTCGCGTAGTTGATCATCCTGATGGCATTTCTTTCTGAAGCTGCCACCCCGACTGAATTCAACGGTTGTGCAACGACATCCTTGGGCCTTACGTATGCGTCAATGTGTAATGCGCCGTCAGGCCTTAGTGTGCCAATTTGAGTCTCTGCGCTTGGGAAGTACAAAGTCCCAGCTTGGTTGAATGACCATTCTTGCACCCCATTAGATATCACCGCACCTTGTTCAGATGTTAATCCATCAATTTTTCCGTATGCCTGCAAGAATGCTTGATACGCAACGTTCGTGCCAATCTTATATTCAGATTTTACACTACCGCCTCTGACAAGCGTTCCGGCTGCAGGTTTTACTGCGTCGCCGTTAATCACACTCCAAGAAGTATTCGCGGCAACAAATCCACCCGATGCACGAATCACCCAAACGCCAACAAAGTTGCGACCCATGATTTCGTCAGTTGCCGCTCCATAAATCGGGCTTGATCTGGATGCATCAATATTTATTGTATTGAGACGCCCCTCCACTGCCCCGCTTCCAACAGGTATGGTGTCGCCGCCGCCTTGGGGGTACAAATCGTTGTTTGTGTAAAAAGCACCTCGGACGGCTGTGCCAAAGATTTGCGCATAAGTGCCTGCCGATACACCAGCAGCTGAGCCTGTGATGTTTGGTGCAGCAGATTCAAATATTTGACCGTTCGCAGTGGAGTTGCCGCCATCACCGCGCCCGTAAAGCGCCCGTACAGAGCCTGTCTGGACACCGTTAAGGTCTGGGACACGGAATGTCGTTGTGCCGTTACCTGAAGAATATTTTGCACGTTTGAACTTATCCGCAAGCCAGTCGGCATCTGCGATGGGTGAAAGCATCTGCGCATACGCCCAAAGTTCAGGCCAGTCAGCACGGTTTAGCAATTGCCCGTCTGCAACGACTTCGTATGGCTGAATATATGATCTACTATTGCGAAGATGGAAATCGCCAACACCATAGTTCATGACACCGTTCATACTTGGGCCAACGGTGCCTGTGTTTACTAAGTTTTCAACCCAACGCTTAGTCGCGGCATCATAATCATTTACAGGGTCGCCAGCGAGCGGCGTTGATCCTTGTGGACGGATGTTTAGCCACGCCTGAGCATTATCTGCAGAGCCTGTGCCGCCCATTGAAGTTGGAACGATGCTCTGATCAGCAACAGGGCCGAATCCGAAAGCAGTCTTCATTCCTTGAATGGTGGTCTGCCCAGTTCCGCCATTTGCAATTGGAATCGTGCTTTGCGTACTATACATTTGCACCCAATCCGACCAGGATGATGAGCCAGCATTGTATAGCCTTTGGTATATGGCGTTGATCCAATAAGGCGTATATCTTTGGACGCAGCTTTCTCCTGCGACGCCAGTATTGTAAACTTCAAGAATACCAGCTTGTGAGACTGGATAGTTCAGCGCCGATGATGCACCAGCATTTGCTGATTGATGATATTGACCAAACCATGAACCAGTCAAGGCATTGAGATTTATTCCGTTAGGAATCTCTCCAAAGTTTCGGACAGTACCCGTCAAAGTTGCGGCAGTGGTTCGAATAGAAAGCATGTCGCCAGCCGCCCATGCACGCGCTGCAGTCCCTTCTTGTGCACGCTGCACGGTCAGGACGTTTCCAACAACGGCTGTTACTGTGACGATTTCGAATTGGAGGCCTGTTGCAGCGTCGACGATTGTCGCCACTACACGCTCGTTTGCGCCCAAGGTCGGAAAGCCCGACCCTGAGCGAATTGTGATTGTGGTGTCTGAAGTCGTCGTTGGTTGAGCCAGCGCGACCTCAAAGTTGTTTTTGAATATTAGCCTTGGCATTTTACGGTCCTCGTTTTGTCGACAACCGTATTATAACCTTAATTTCTTTTGAGAGGAATATGACGGTGGCTGCCATTATCTGGTTTAATAATGAGCATAAAAACGATTAGAAAGATGATGGCTGATATACTTAATTCAATCAGCGCGGCCTGAGATATGGATTGATCTTCGTGATACTGCTTTTGCATTTCTGCTTTCTTCTGAGCGCAAACTTCAGGCGATATATAATCACCTTTTGAGTTGCCATAATAAATCTCGCCATTCTCAGAAATAAGTCTGCCGCAAATATCCGTATCGGCCTTTGCGCTTGACATCATAATAACAGTGCCGATGATAGCAGCAATTGTCCAGATTAGCAGTTGTGATAAAGTATTGTTCATGATAACCTCTTTAAATTCCCTTCCCATATCGGGAAGGGCGAATGTTATTTTACGCGAAAGAATAGGCGCGTGCCACACAGCGAGTCCCAACGGCCCTCACCATCCCATATCGACCCAACACCAGCGGTGATTGGGCCAGCAGAATTGGCGGCATTGGCCCAGGCGAGACGTTTCAACTTCCAACTGCACCAACGATTCACAGTTCACCTCCAGATTGCAAAACAAGTCCCGCATAGAGGATTGCTAAAGCTAAAGGCGCACCACTTCCAGCTTCTCTATTCTCTTTGATTTGAAGAGTGTCCTTAAGGAATTGCAGCTGAACGTTGAATTCATTTTCAATTCCAAGCACTCCAGCTAATTCTTTTACAGAATCTGCATATGCCTTGTCTAGCACTTCTTTTGGTACTGTTAAAGTCAATTCATTTGCCATTTTCTTTCCACTCCACAAATGTGCTGCCACTTGTTTCTCTATTTAGCAGGTATCTGCCGCGCATTCCATGAAGGCTGAATTCAACCGTCGATGGATTAGATTTTGAAAGCCACATCGCTTGACCGTCGAATGGTCCGCCAACGCATGTGTATTTGGCTTTTGGCTCACTCCTTTTGGGCCGTTTTGCCCGCTCTTTGATTGATAGTCTCATCAGTCTTCACCTTGAGATTCAAGACAAGTAAGAACAAGCCATGTCATCGGAAGAATCAAAACCAGAGAAATAAGGGACCAGATGGACCAGCACAAGATGACAGACTTGAATGTGTGAACGTCGCCAAACGCAGCAGTGAAACAAAATCCCATCACGAAAGCAAGCGCGGTGGAGTGGTTATCAATGGCTTTGATGGCACGGTCGATGAGTTTCATATTACCTCCGGTTTTGAGTTAATATGATTATAACGCAGAGCTTCAGAAAGGCAAACTTTTTGTGAATTTATGCCGTCCATGGCAAATGATTAGTGAGAAGACACGACTAATGTGCCGCTTCCTTTCGCGAAAATCTCAACACCTGGCGGGATTGTGACCGTGCCAACCACTGCGATTCCGATCAACTTGTCATCGGCTTTTTCTTCGAAACAGATCTCTGCGCCACCGCCGCGAACTTGAATAAGTGCGCCTGATACGTTTTCAGCAACAGAAAGAACGGAAGTGTAAGATGGAGTGAGTTGAATATTTACTAGGGCCATGATTTACTCCTGATAAAAAAATGGCCAGAAAGAATCTGGCCGAAAAGATCACCCTTTATCCACTACTAAGCTGGAATCATAATTTTACTTGATATAGCTGTCGCAAGCAAACTATAATATGAATAAAATATTAACACATAATTGGAAAGTCATGTACCAGTTGAATCCTGCTTTAAGAGAAGTCTGGAAGACGAAAGCGCGATACAAAGTAATATACGGTGGTCGTGCATCTTCCAAATCGCATGATGCCGCTGGTTTTGCTATTTATTTGGCGGCAAACTTTAAATTAAAATTCCTTTGCGTTCGACAATTCCAGAACAAGATTTCTGAATCAGTATATACGCTATTAAAAGACAAAATAGAAATTTCTGATTTCAAAGATGAGTTCAACTTATTAAAGAACTCCATTGAACACAAAAGAACAAAATCTGAATTCTTATTTTACGGTATCGCACGCAATGTTGACGAAATCAAATCAACAGAAGGCGTTGATGTTCTTTGGCTTGAAGAAGCGCACGCACTTACTGAAGAGCAGTGGGACATCATTGAGCCGACAATTCGTAAGGAAGGGTCAGAAATATGGATCATATTTAACCCTGATGAAGAGGCTGATTTCGTCTACCAGAACTTTGTTATGCGACCGCCTAAAAATGCCATCGTTAAGAAGATTAACTGGCAGGACAATCCATTCTTGTCGCAAACAATGCTGGACGTTATCGCTGGCATGTATGAGCGCGACCCGAAAAAGGCAGAACACGTTTATGGCGGAGTACCGAAGACAGGCGGCGACAAGTCGGTCATCAACCGTGCATTCGTCAAGGCCGCGCTAAACCTCCACAAACACCCTACGTTGGGATGGAGCTTGTCAGGGTCTAACCGTATAGGCTTTGACGTGGCAGACGACGGCGACGACTTAAACGCCACAGCATTTGTCACGGGCAACGTATTGCGCGGCATCAAGACATGGGAAGGTCTGGAAGATGAATTGCTTAAGTCCGCAAGCGGAGTTTGGAAAGATGCATTAACATTCGGCGCATCAATTACCTATGACGCCATCGGTGTTGGTGCATTTGCTGGTTCAAAATTTGATGAGCTTAATGAGTATGCAATCCATGAAAATCCAACATTCCCAAGAATCGAATTTAATGCGTTCAACGCGCAAGGTGCTGTTGATGATCCTGATGACGTCTTCCTTGAGTTACCACACGTTGAAATACTCAATAAAGACCATTTCGCAAACATAAAAGCGCAAAAATGGACTGAGATTGCCGAACGATTCAGGAAGACATATGAGTATGCAACAGGGCAGGCCGTATACCCGACTGATGAGCTGATTTCCATCGACACAGACGGCATTCCAGAACTTGGGATTCCTGCTTGGTCTGCGGAAGAAATTGAGACATTTCTTTTTGAGATGTCAGCGCCGCGCAAAGACACGTCTGTGCTTGGTAAGTTTAAAGTTGAATCGAAAAAGGATATGGCAAAGCGTGGAGTCAAATCGCCTAACAAAGCGGACGCAGCAATCATGGCGTTGATGAAACCAATTGTTGCAGCATCCGGCTTCTTCTCTAACCTTTAACAATTAAAGCATTCCGTGCTGAAGGTCGAGTTTTCTTGCGGCAAACGACCTGGCACGGAATCGCTTACCCGCCCTTACTGCCTGTCGAATCTTCTTTTGCAAACACTTACGATCAAAATCGTTGCGGTCGACGGCTTCGAGTAAATCACGACGCAGAGCACCCAGTGTCGACTTTTCAGAGACTTCAACGCCCAGCGCCGCTGCAACGTCTTTCAAAACATCGAGTTCGGTTAAAGTTCTCATTTGATAATCCCCTTGATGTCTGATTCTGCCATAAAGATTGGAGTTCCGCCGCCAGGAACAATCGAGCGCGTGACTTTATCAAACATATCGTTTTCTTCAACTTGAATACGATAGAATTTATTTTTGGATGAAGATGGGCACAATCCCATAAATTTGCCGATTCCGCGAACGCATTCATCTTCAAAGTATACTGTTTCACCTTGGATGGAGTCGATGTCGTCTACTGGATAGACCTTGCGACCCAATAGCCACTCGTCCATAGTCGCCTGCAAGACGTTTCGCGCATCTAAAATCCACGGGTCAATAGTAGCACCTTCGTATCGCGCAGCAGTGGCCTTTGCCAGTTCTTCATATTCGCATACGTTAACGACTTCGCCGTTGTGCAAGACGACAAATACAATTGTTGTGCTCATTTCAATCTCCTTTCGTTTGGTTAACTAAAATATAACTCAAAATGATGCAAAAGCAAAATATTTTATGAACTATTTATGATCACCATACATATCATTTGCTTACAAACACATGAATATTTATAATATAGATTGATTCCCTTTCACTGTCAGGTGGCGTTAACAATGAAAATTCTTGGCATAAAACTCTGGGAGAAGACGCAACCAGAAGCCGAACCAGCGGAGATGCCGCCAGGCGACCCATTGGCACCGTTTGAACGCCTTGAAAGGCGCGGCAGCGGTCAACGCTGGGAAAAGACTGAAAGCAATCGACCTACCTTTAAGACGGTTGATGACTTCCCTTTGTATGAGCCTGATATTAATGGCGACGGTGTTGCTATCATAAAAGGTCGTTCAGTCGATTCCGCAACAGTATCCAAAAAAGTTATGGATAATGCCTTGAAGAACATCAGTTCAGAAGGGCAGGTCAACCCATACACAGTACCTATTCAACTTCAAAACTGGTATTTGTCACAGTCATTCATCGGCTATCAAGCTTGCGCAATCATCGCGCAGCACTGGCTGGTGAACAAAGCGTGTTCCATGGTAGGCCGCGATGCAGTCCGTAAAGGCTGGGAAGTCAAATCCAGTTCTGAGTCCGAATTATCAGTGCAGGCCAGCGAACGCCTAAAGCAAATTGATAAAGAATTTAATATCAAAGAGCACTTAGTTGAAGCCGAACGATTCAAAAATATTTTTGGTATCCGCGTCATCATATTTGATGTGCGTAGCGATGACCCAGAATACTACAGTAAACCTTTTAACATTGATGGTGTGACAAAGGGGTCTTATAAGGGAATCATTCAGGTTGACCCTTATTGGATGATGCCGTTTCTGACGTCTGAAAACACAGCAGACCCTGCATCACAGCACTTCTATGACCCAGAATATTGGGTAATCAGCGGACAACGTTATCATCGCAGCCACCTCATAATCTTGCGCAACGATGAGCCAGCTGATATTCTCAAGCCGACTTATATTTACGGCGGCATTCCTCTGACTCAGCAGATTTATGAACGCATCTATGCCGCTGAACGTACCGCCAACGAAGCGCCATTGCTGGCGATGTCCAAGCGTACAACGACGCTGCGGACCGACGTTGACAAGGCTATTGCCAATGAGCGGTCTTTTGCAGAACGTCTGATGATGTGGATCAAGTACCGCGACAACTATGCAGTCAAAGTGCTTGGCCAAAAAGAAGAGATGGACCAGTTTGACATCAACTTGTCAGACTTCGACAGCATCATCATGAACCAGTACCAGCTTGTGGCCGCAATCGCAAAAGTTCCGTCGACCAAACTGCTTGGGACTTCGCCAAAAGGCTTTAACGCCACTGGTGAATTCGAGATGGTCAGCTATCACGAAGAGTTGGAAACGTGCCAGCAGCATGACCTGACAAAAATTCTCGACCGCCATTACAAAATCCTTCTCAAATCAGAAGGGGTGGATGTCGATGTTAAGGTTGCATGGGAACCAGTTGGCTCACTTACTGCTACTCAACTTGCAGAAATCAATGATAAGCGAGCCAACACTGGCAAAACTCTTATTGATGCTGGCGTCATTTCTCCTGATGAAGAGCGCGACCGCATCAAAGACGACAAAAACAGCGGCTACAACCGTCTGCCGGAAGACGCAGCAGAAGAAACCCCAGGGATGTCTCCAGAGAATATGGCATTGCTTGGCAAGTCTGCTGGTGAAGTCCTGCAAGGTAAGGCCGATATTGAACAGGCGAAGGCTGATGTCGTTAAGATGGGCGGCCAGTTCTATAGCGAAACAGGTATTATGCCAGAGGGTGCCGCGCGTGGTGAGTTGGCGGAAAACCCTGACAAAGCGCCTGTCGAAATCAACATGGACGACACCGATGATGAATCAAGCCATCAGGTTGATGTCCTAACGCAGTTGAAAGAAGGGCTGGAGGGCATTGCGGATTACTACCTGAAAGAAGGTCAGGATGTGGATTTTGACCCTCAAAAAGATTCACGGTCGGTGCAACCGTCTACCCTTCCAAGCGTTAAAGGACACGTCGTCAACTTACGCCACAACGTGGGTAAAATGGACGCAGCATCATTACCTAAGATGAAGTTGCACGGAATGATTCTTGGCATTGAGAATCCGCGAAACAGCATTCGTAGAGGAAACAGCCTTGACGGTGAATGGGCCGTGAAGATGCCGCACCACTACGGATTCATCAAGGGCACCAAGGGCGCAGACGGTGATGAAGTCGACTGCTTTGTGGGTCCAAATCTGAAGTCGCCGAAAGTCTTTATCGTGAACCAAAACGATAACTACTCTGGCGAGTTTGATGAACACAAGTGTATGCTTGGATTCGATTCAGCAGAAGAAGCGAAAGAAGCTTATCAAGCATCATTTGGTAACGGTTGGAACGGATTCGACTCAATCCACGAATTAGATGTGAACTCATTCAAGGAGTGGTTGAAGGGTGATTGCTCTCAAGCATACGGAGCACTCAATAATCCTACTAATTCACCGAAGCAAGGTTGATATGGCTTTTAAAGCTTCGAAAAAACGTGAACGCCGCTCACCCGATAGAATTGGGCGCGGCAGTCCGATAATCCCATCAAACGCTATTGCGATGGCCTACCGTCGTGAGATGAAAGGTCTTTGCTATGCGATGATTGATGACTATCAGGCAGGAATTTCAGAGTGGCTTGAAAAGAAGCAGGTGCAGAAGTTCTTTGCGCAAGACTCTGCTGATTCAACATTCCAAACTCTTATGAAACGTCTGCAGCTGAAATGGGCAAAGGCGTTTGCTCGTGTTGGGTCGAAGATTGCCGCTGATTTTATCAAATCGGTTGAAAAGGGTGCTACTTCTGCTACATTCGCCAGCCTTAAGTCCGCAGGCATAGAAGCGCCAAAGGCCACATATAACAAATTCGTTGAGAACACTCTTAGAACAAGCGAGACGTTTAACACGACTCTAGTGACTAAGGTCGGCGAGGATATTCACAACAGAGTGTACGAAGCAGTCATGCTTTCGCTGACTTCGCCCGACCCAGCCCAGCAAGGCACGTCAGGCATTCAGGCGGCGTTGCGAAACGTAAAACACTTCTCTGCAAAGAGAGTCGACTTAATCGCTAAAGACCAGACAAGCAAATTGTATTGCGTTCTAAGCGATGAAAGGATGCGCCAGAATGGAGTCGAAGAATTTGAGTGGGCGCACTCAGGAGCAGGAAAGGAGCCGCGAATCTCTCATGAACACGTCGACGGAATGAGATTCAAACTTGATGACAAGCGCCTATGGGAAGTTGGCGGCGAATTGAAGTTCAAAAAGGGTGACATCGGTCCTCCTGGATGGGCAATACACTGCAAGTGCAGAAAAATACCAATCATTTGAGGTCATTATGACGATACCAATCAGCACGTTTCCTCTATCTGGACAAACGCCAGTATTGCCTGCTGTATATGCTAACGGCTTGGCGATTGTTTCAGAATTTACATCTGATAAAAACCTGATTGTTCCATTGAGTCCGCCATTGGCGTCTGGTTACAACTCAGTTGGTCAATTCTTTATGATCGGTAATGATGGCGATTCTACCAGCAAGCCGAATCTGACACTTTCAGTTCCCAAAATGAACATAACAGACGTGCAGACTGGTTTAACTGCATCTACAATCACCATCGCTTTTGGAGAAGCAGTGATTATAGGTATGGAGTCTGGAGGGTCAAAGAATGCTGTCGCCGTTAAAGTGGTAAAATCAAGCGGCAACCAATACACGTTACCAGCGGCAACGGCTTCTGTTCTCGGCGGCGTCAAGATAGGAAGTGGCATAAGTGTTGCAGGCGACGGTACAATTAGTGTTACTCAATACTCGTTACCGATTGCATCAGCATCAACCTTGGGTGGCGTAAAAGTAGGAACGACACTATCAATTGATGGTTCTGGAGTTCTCAATGCTGCTGCAAGCAATGTGCAAAACACAAGCAATAGTGTAAGCAATCCTCCGACAACTCTGGTGAATCTGGCAACATTAAACCTGCCTGCAGGGAAATGGCTTGTGACAGCAAGTCAGTTGACTGTAGCAACAGAAGGAGTTCAAGCGAATACCGGAATTACAGTAAAATTGTCAACAAGTAATTCAGATATTACGGATGATGCATTTACGATGTCGGCTGGCATTCGGGCTGCAGGTCGTTTCGGCGGCAATATTCCAACAAAGATAATTACTCTTGCCGCGCCTGGCAACGTGTATCTAAACTATCAATGCACAGACGCATTGACATCTACCGTTTACGGACAGATCACCGCAATTAAGTTGAACTAAAGAGGAAGTTATGCAAAAGATTATCCAGTCACGTTACGTTAAAGTGCGAAATATTAATTGCAACTCTTTGCTTTCTTGGAAATGGGCTGTTTACGACTCGATGCTGATTGGCGTTTTAGTTGCTGGAGTGCTTTTTAATATTCACTGAATCGCCTGGCAATGGATTGTCGCAGGATTTTACGCGTATAATGACGTATCATCCGTATCAAGTAAGTAGTTGTTTTCAAAAGAATCTTACGGATGATACGGATGATACGCGTTGCCGCGATACTTTATAGGAATTCAAATAAATTAATTTAAAATTATATATCTAATTTAATTTTATTTTTTTATAAACTCTTATATATGAAAAGTATCCGTATCATCCGTATCATCCGTAGCACACCAGTGATAGCGCGGCTTATACACCGATACGGATAAAAAATACGCCTCATCTTATCCGTATCATCCGTATCACACTAATTAAGGCGCGGCTATATCGGCTGTTATACATATTCAAACCATAATTATTGTTTGCCTAAGTTTTTTTCATTAGATATAATACACAATACTTATTTGAGGGTGGATGCGAATGCAAACGGCACGCGAAATTGACAAAAATGGATTCTTGACGATTGTGGGTTGTCCCATTTCGTCATTTGGCATTTTTGATTATTCTGCAGGTCAGGTTGGACTTGATGGTGATCCGAATCGCATCGTAAAAGTTTATCGCCCAGAGTCAGCGGTGAAAGACCCCGAAGCGATAGATTCATTCAAAAATATCCCTTTCATCGACAATCACGAAATGCTTTCTGGATTCGAAGGTGATGAGGATAACACAGCACCCGAAGAGTATGGCGTTGATGGCGTTCTAACTGGCAATGTTTATTATGACAAGCCATGGATGCGCGGCGACCTTAAAGTTTTTAGCCGTCGTCTGAAGAAGGCCATCGACTCTGGAAAGGTTGACTTGTCTTTGGGCTATGACTGTGAATTCATCATACAGTCTGGAGAGTTTGACGGGCAGCCGTATGAAGTGGTACAGACAACTCTTCGCGGCAACCACATTGCTCTCGTGGACGTTGGTCGAGTACCAGGTGCACGGGTGCTGGATGGTCGTTGCTTTGACCATCTTTGTTTGACGACTGTAACACCATCCAACGAGGATTTAGACATGCCAAAACCGTTAAAAGGTAAAGCGCGTGATAATGCTGTTGAACAGCTGAAATCACTGATCCCTGCGCTCGAACAATTTCTGAATGAAGAGAGCACCGAAGCTGCTCATCAGGACGAAGTTGAAGTGAAAGCAGAAGAGAAGGATTCAACCGAAGAACGTGAAGAAGTGATGGTTGATCCAGAAGTCAAAGCAGAAGCTGAAGAGACTCCAGAAGGTGAAGAGAAGTTTGAATTTGAAACTGAATCTCACGCTGGCGGCGAGCTTCCGCAACTGATCAGCCAAATCGAAGCACTTATTGCAAAACTGAAAGGTGGCGCGGTAGGTGATGAAGAAGAAGTTGAAGCCGAAGTCAAAGACGAAGAAGTTGAAGTCAAGGCTGAAGATGTATCACCTTGCGACAAAGCTGAAGATGTGGTTAGCGGCCTGCAAAACAGCAACGTAAAGGGGGCTTCGGTCGAAAAAGATGACAAACCGACAAAAGCGGCGAAAGCGTCGCCAGGTCCAGCAAAAGGGGAACACTCAATGGCATCTGATTCAGCAGTTGCTGCTTTCTACGCTGATTCTGCTCGTAAGAATAGCCTCTACCAGCGCCTGTCTAAAGTTGTTGGTGCCTTTGATCATGCAACTATGGACTCCAAGTCCGTAGCGAAATATGGCGCTAAAAAGTTAGGCTTGAAGTGCGTTGATGGTGCTGAGTTTGACGTGGTGGATAATTATCTGCGCGGCGTTGAACACGGTCAAAAACAGCGTGTAGTCGCAAAACAAAAGGCCGCTGCGGATTCTGCAGCAACTGACGAAGCGTTTGAAGCTTGGTTGAAAGGGGAATAAACATGACTTTCCAAACTAGTGTAGGCCGTCAATATACAACTGGCTTTCCTGGCGACATCGTTCGCGACGGCCCACAGCGTGGGAAGCCAGGCCGAATTGCCAACGCTAACGAAGGCGCAAACGTAAACGCCATCAGCCGTGTGTTCGGTTTTAAGACTGACGTATCCTTAATGGGTACTGGTCAAACCAAAACTTTGGGCGCGCAGGACTTTGAAGTTGAGCTGGGCGGCACTAACTACTACGGCATCCTCGGCAATAGCAAGCGTTACGCGCTGTATGGCAACTCTACTGGTCCTTTGGGTGCCAGCATGGTTCTGCCTCAATATAGCGAAGGCGAGTTCTATGATATGTGCACGGGCCTCGTAGTTGAAGTATTCAACCCAAGCACCAGTCCGCAGACGCTTAACTATGGCGACCTGCTTGCTTATGTACCTAAAGGCATTTCCAGCGGTAACAACCCGAACAACTTGCCTATTGGTGCAATTATCGCCTATACTGGCTCATTGCCAACTGGCATGGTTGCCATCCCAGGCGGTATTGTGATTGACCCGACGACTATTGCCCTTTCCGGCCCAAGCGTCCAGTCTTCCACTTATACCATTGTACAATTGACTCGTTAATAGGCAGGTGAATAATGACTCGCATTAGCCAAACACACTCTCGCCTCCCAGCGAGCAAGGTGCGCCCTTTTGATATGCAATCCGTGACCGACGCGGCTGTTTCCCAGCTTGCGCGTATCGGTATTGTGTTTGATTCCGCGATTGTGCGTGATCAGATTGAGCACTTAAACCGTGCAGGCGCTTTCCGCGTAGGTGACGCCGCATTTACTGCGCCGCAAACCACGCCATCAATCCCGACCCCGCTGCAGTTCCTGCAACAGTGGCTGCCTGGCTTCGTCAAAATCATGACCGCTGCCCGTAAAATTGACGAGCTGGTTGGTATTGACACCGTTGGTCAGTGGGAAGATGCAGAAATCGTTCAGGGCATCGTTGAACCAGCTGGCACCGCAGTTGAATATGGTGATTTCACCTCTATTCCTCTGGCAAGCTGGAACGTGAACTTTGAACGCCGTTCCATCGTTCGCGGTGAAATGGGCATGGCAGTCGGCATGCTGGAAGAAGGCCGCGCGTCTGCGATGCGTCTGAACTCTGCAGAGACCAAGCGCCAGCAGGCTGCTGTATCTCTGGAAATCATGCGTAACGCAATCGGCTTCTATGGTTGGTATAACGGGAACAACCGCACGTTCGGCTTCCTGAATGATCCAAACCTGCCAGCGGCAATGACTTCAAACACCACTTCCGGCTGGGCTACTGCGACCTTCCAACAGGTGACTGCAGACATCCGTTTGATGGTTCGTCAAATCCGTGTCAACTCTCAGGACCAGATTGATCCAGAGAAGGTTGATATGACTCTGGCGCTGCCGACCAACTCTATTGATTGGCTGTCAAACACCACCGACTTCGGTATTTCTGTACGTGACTGGATCACCCAGACTTATCCGAAGATGAAGATCAAATCTGCACCGGAACTCAACGGCGCACTTGGCAGTGACCCGACTTTCCTGAACGTGGCATATCTGTACGCTGATCACATCGATTCCTCAATTGATGGCTCAAGCGATGATGGTTCCGTATTCAGTCAGCTGGTCCAGACTAAGTTTATGACTCTGGGCGTTGAGAAACGCGCTAAGAGCTACGTTGAAGACTACGCAAACGCAACAGCAGGCGTTCTGCTCAAGCGTCCTTTCGCAGTCGTCCGTATGACTGGTATCTAATTGCTGTGATTACACAGTAAAACACATGGGGCGTGGTCGAAAGGCTTCGCCCCATATCAATAGACCTCAAGGGCTGTAGGGGCTTATCTGAGGCTTATATAAATAGGACTACAAAATGCCAAAATACATCGTTTCAACTATGTCTATGTCAGTCAACTACACTTTCTATACGGAAGTGAAAGAAAACCCGAATGCAAAAGCTGGTTCAGGCGCTCTTCCAAATATTCGCAAACAGATTCTGATCAAGGGCGGTGCTGGTCTTACTTCGGCAACTTCCGGCTTTGGTGAAATGGCAAAAGGCGCTGATGGTGCACCTTTGTGGACTCCTGAAGGAATCGTCACCGTTGTAAGCGATGCTGATTTTGAACATTTAAAAGATCATCACGTATTCAAGCAGCACCTTGAAAAAGGTCTGGTTAAAGTGGTTAACCACGACATCGTTGGCAATCATAAAGCTGTCGCTAAAGAAGTGCGCGGCATGTCAGATGACCCGTTCGCACCTATGACGCGTGAGACGGCTGACAAGCGCATCAAGGTTAAATTGAGCGGCGAACAAGAAGATGATTTGTTCCGCGTTTAAATAAGGTGAATGCCATGTCATTAGATTACGAAAAGTTCAGAATAAAATTTCCACAGTTTGCTGATCAGGTAAAATTCCCTGACACAACGCTTCAAGTATTCTATGACATGGCATGTGAATTTATTGAATCACAAGACAGTCCTTGTCGTGTTTTAAATGGCAGTAAATTGGAGCTGGCATTGGAATATATGACGGCTCATCTTTTATGCATAGCCACAGACCAACAGGTGTCTGTGTCTTCTGGTGACGGAGTTGAACAAGGCGGCTTCGTGACTGGTGCAACAATCGGTGACATCACCGTGAATAAGGTAGCGCCGCCTGCAAGTGATGGTTGGGAATACTGGCTTTCAAGCACTCCTTATGGCATGGCGCTTTGGGCGCTTCTGCAAGCACTGGCTGTCGGCGGCTTGTCGTTTGGCGGTCTTCCAGAGCGCGAAGGATTTCGTAAAATTGGTGGGGTATTCTGGTGAGGATTCCTGGCGTAAACTTATATCGAGTTGCGACAAAGGTCATCGGTCGCCAACCGATTCAATATTACATGTACAAGGGGCGTACTCTTGATAAAATGCGCAACTACGTTACCACTTATGAAGAGCCAATCACCCTGCTTGCTTCGGTGCAGGCTGTGCTTCGAAATCAATACGTCGAGCTTGGATTAGAGCTTCAAAAGAACTATGTCAAAATCTGGGTGGACAAAGACATCGTTGACCTTGACCGCGACGCTTCCGGCGACTATTTTGTGTTTGGTGGGAAAACGTATAAAATGGAAGACGAAACGACATGGTTTGACCAAGATGGTTGGACGTCTTGCCTTGCCGTGGAAGTAAAACAAAGCTTTCCAGTGTCTACTTGAGGTGCATATGACAGATGTCGACCTGATTGACATGCTGGCAACGCGAATTGAAGAAGGTCTGGCGGCGTATAGTCGTGCAGACCTTTCTGCTGTTCCGGTCCAGAAAAAGTATCAACCGACTCAACAGGGTATTCCGACTGGTGACCAAATTTGGTTTAACCTTTTATTCTCAGTTCCTTTTGGTTGGTCCATGAGGAAAAGTGAATTTGTCAATGATGAGTCTCAATTCGTAAACGGAAAATTCAAGGATATTGAAGATCAAATATACGCTACACGTTTTCAAATTAGCGGCTTATTTCCAGAAGTCCCTGGCAATCCAGAAAAGCCTACTGCTAATGACGTGTTGACTTATTTGGCAAGATTCATAACTCATAAAGCTAATCTGAGAGATTGGTTCAAAAAGCACCAAGCTTCAGTATATCGAATCGACATGAATAATAATGAAAAGTTTTATGATGACATGTCGCAATTTGAATCATTCCCTTCTTTTGATTTAGTAATACTTCACAGAAACGCAATTTCAATTGATACTCCTGCAGTTGCAAGAGCTGTTAATAATGACTTGGGTGACGTTCCGGTGTAATATGACAAAATCAAAAATGATAGAAAAACAGATTAAGGCACTTCAATCTATGAAGGGTCTTACTGTTGAGGCAGGATGGTTTGATTCAACAAGATACCCTTCAGAAACTGGTGGAGAAGGAATGTTGGTGTCAGAAGTCGCGCGGCTTAATGAATTTGGTCACATAGCCGTTTTGAACTTTGGGCAAGGGCCAGTCAGGGTAGAAGTTCCACCCAGACCATTCATGAGATATGCCTATGAATTATTCGTTAGTGAGCGCAGTGAAATAGAGAATAAAATTGCTAAAAAGATTTTTTCCGGTAAAATAGACGCTAGACAGGCATTAGGTCAAATTGGGCTTGCGATGGAAGCAAAGATTGTCGAATCAATTAAAAACGGACCGTGGCAACCAAACGCCAGATATACTGTACGTGTGAAGGGATTCGACAAGCCTTTGATTCACACTAGCCTCATGTGGCAATCTGTCAGCAGCCAAGTCATTAAATAAGAGGACACCGACGTGATCAGTCAATCTCGTTATATTAAAATTGTATCAGGGGTCGGAGCAGGCGCGGCTGTTGCAGTTCGCAAACTGTCGCTTCGCGTCATGACTTCTAATACAGTTCTGCCGCCAGGCATTGTAGCAGAATTTTCAACGGCTGATGCTGTTGGATCATATTTCGGTTATTCTTCCGAGGAATATAAGCGCGCAGCATTATATTTTGGATTCATCAGCAAGCAAATTAACTCGCCTGATTCAATCAGCTTCTCGCGTATTGTTTCAACTGCGATTCCAGCAATGGTAATCGGTGATACTGAGCCTAAAGTGCTTGCTACGTTTCAAGCATTCACTGGCGCTATATTAAGCATCACTTACGATGGCACAGACTACCTGACTGACGCAATTAACCTTTCAGCGGCGACAAGTCTGGCGAATGTTGCTGAACTTCTGGAGACGGCAATCAATACTAAATTTGCAGCAGAAGGTGGCACATCGGTGCCTGCACTTGCTGATGCAGAGGTGTATTGGAATGCTAATACTCAGCAGTTCACGCTGGAAGCAGCGCCGTCTACCGCTGGTGCAGGCAACCTGTCTATCAACGTCACAGGCCAACCGACCGACCCGTCTCAAGCGTTGGGTTGGACCACCACTGGCACCGTAACAGTTGCAGGCCAGGGCGTTTCAAGTCCGGTAGAAGCAATCGCAGCATCTGTGGAAATCTCCAACAACTTCGGCTCATTCCTTTTCGCTGGAGCAGACCGAACTCTGGAAGAGATTACCGCTGTGGCAGCGTGGACTCATTCGCAGAATAATATGTACATGTATTTATTCTCGACTTCTTTTGCTAATATCGGGTCATACTACACCGCTCTGAAAGGGTACTCAGGCGTTGGCATGATGATTCGCGCAACTAACCTTGCAAACGATTACATCGACCAAGCACCTGCTGAAATCCTCGCGGCAACAAACTATAATACTGTGAATGCAACTCAAAACTACATGTATTATCAGTTTGACACTCGCAACGTGACTGTTTCAACTGACTCTCGCGCAGATACTGCTGATCAAAACCGTGCCAACTACATCGGCGCTACTCAGCAGGCAGGACAAACATTGGCGTTCTTCCAGCGCGGTGTATTGATGGGCGGGTCAACTGCAGCAGTCGATATGAACACTTATGCCAACGAGATGTGGCTCAAGTCCGCTATTACATCTCAGCTGTTCAGCATGTTCTTGAATCTTGGTCGCGTCCCTGCTAACGAAGAAGGGAAAGCGACTGTACAAGCCATGATTCAGGTTGCTGTGGATAACGCAAAAGTAAACGGCACCATCTCTGTTGGCAAGGCGCTGACTGAGATTCAGAAACAATACATCACGCAAACTTCCGGTGACAACACTGCTTGGCGGCAGGTTGAAACTATCGGTTACTGGCTGACTGTAGATTTTGATACTGAAACCACTTCCGATGGGCGCACCGAATACTATGCAACATACACGCTAATCTACTCTAAAGATGATGCTGTGCGTCGCGTTGAAGGTCGTGACGTTCTTATCTAAATAATTGCCGCCGTAATTGGCGGCCATCTCTCTGAGAGGAATCTGTAATGATTAACGTTTCCGGTTTTGGCGCTTCGATTCGTTTAGTGGCATCAAACACTTTTCCAAATGGTGTAACCCTTTCTGATTTCGCAGATGATGCTGATCCGATTGACGCGCCTGATCTTCAAATCTCTGAAGCGGCAATGGGATTGAACGGTGACTTGGTAGTCTGGAACCGTGCCAACCCTCTTGAAGTAGGCGTCAACATCATCCCTACTTCTGAAAGCGATGTAAACTTAGATGTTCTGGCAGCAGCTAACCGTGTAGGCAAGCGCAAGAACTCTGCGAAAGACGTGATCACCCTTATTCTGACCTACCCTTCTGGCATGGTCATCACACTGAACAAGGGCACTTTGACGACTGGTTCAGTGATTCCTGGCATCCAGTCTCAGGGTCGTGTAAAAACACGTCAATATCGCTTTAAGTTTGAGAACGTAGTCAAAACTGGCGTGAGCAACCAAGAGATTTTATAATGTATCAAATACCACTTGACAGCGTACCTAACCAGAATATCAGCTTTAACGTTGACGGTGCTTATTGGCAGCTGCACATATTCGCCGCAATTGAGCACATGTGCGCAGATGTTTACCGCAATGGCGAATTGTTGATTCAAGGGGTGCGCTGTTTTGGTGGTGTACCAATGGTGCCTTATAAATATCTCATGATTGGGTACGGCAACTTTATTTTTGACAGCGTACCCGATTATGAGAATTTTAACTCTGGCGGCTGTAATTTATATTACATGTCAGAATCTGAGTTGGCTGAATTCCAGAAAACTGCTGAAGCGGAGTTTGCAATTTGACAACTCTAACGATTGAAGTTAATGATAACAACGACCTGTTTCTGCCTGATGGAAGAAATTTGAATATTCTGTCAGGAGAAAAGGCTATGGTACAAGTTATCAAGGCAGCGCATCAAATGCGACTTGGTGAAGACTTGTACGATGTTGAAAACGGAGTCGATTATTTGGGCACTGTTTTCAAATCGCCCGTTGATGAAGACGGTGCGAGAAAGTCGATTGCAGATGCTATTCTGAAGAAAGCAGACGTTGCCGGAATCGACTCATTGACTGTCACCATCCAAAACGGTATTCTTGGATTTACCGCTGAAGTGGTGACTATTTATGGCGAACGTATAAAGGTGAGTAATCAATAATGGCACAAGTAATTCATTTTGCTAATGGCGTCATGAAATTTGGCGAAAAATTTGAAGACGCATCGGAATTATTTAACAAGACTTCAAAGCCTGTTGCGGAGAAGAAAGAACAGGTCGAAGAGAAGACATTAGAGTCGAAAGTTGATTTTGATTCAATGAGCGTCTCTGAATTGAAGGCTTATGCAAAGGAACATGAGATTGACATCAAAGGTCTTTCTTATAAGGATGAAATTCTTGCGGCAGTTAAATCTGCATCTGCGGAGTAAACATGGTCAATATTAGTGGATTTGGCACAAGCATTAGAATTGTCGCTCTCCAATCTTTCCCTGTTGGGCTGAATATCAGTTCTTTGTCTGATGACCAGGATTCGCTAATTATTGAGGAAGTTGAATCAGTAGGCTATCAACTTACTTATGACGGCGGCATTTGTATTTATGATAAGGCCGCCGTCGTTCGCGTATCCATTGCGGTGATCCCAAACACTGAAGACGACATAAACCTAAAGCTTTTGCTTTCCGCTCGTAAAGGCGGATTCAAGTGGCTTCCTATACAGGATGTCACGTCAATGCTTATTACATATCCTGATGGCGGCAGAGTAGCATTTTCGAACGGGACCATAATCAGCGGTCCGCTTGGCGACTCCATTGAGCAATCCGGTCGCCGTAAGACAAACAGATACACATTCGTGTTTGCCAGCTACGGCGGCGCACAGAGCACATCACAAATTGCAAAAGGCGTGGTGCAGAGTATATTGGGGTCAATTTAATGGCTATCGATTTATTGTCATATAGTCTTTCCAACAGAAGCTTCACAATAAGAAGCTTCAACCTTGGGGAAGTGTCAACGCTTGGTTGGGCGATTGTTAACGTTAAAATAAGACTCCAAGCAAAGATATTCAAGAACCAAAGGGAGGATGGGAGCTATATTGTCGATGGCAGGGTCAAAATGCCTAGAATATTGACTGTGACTGTAATAGCACAGACAAAAAGCGCGTCCGAAGCAATCGCAAAGATGCTGCAAAATAGGTCCACTATATACACAATAAATTCTCGTGGGCTAATATTTGAACGTATGGTGCTGCAAAATAACAATTTCAGCCAAGATGCTGACAATATAACTTCACAACCCATACAACTGGTCTTCCATGAGATATTAACACAGCAGGATGTGTCTATTCAAACAGCGCAAGCAGCCGACTCCACTGTCATTGAGCGCGGCATCGCTTATATAAAAGAGACTACTGCCAGCGTCACTGGCGTTGCAACAAAGGTGATGAATGGCATCAAGGGGATGTTCTGATGGACTTTGTTTCGATTCTGCTTTCTGGTCAATCTCTGACCATAACGAATGAGTCGACAGGGCTTCCTGTCTGGACAAGGCTTTCTCCAGTGTCTGCAGAAATAACATCACCAGCAGAAACTACTCAATTTCCCCTTGCTGGAACGGCGATGCAGGTGGTGGAAGTATCAAGCACATCCTCAGTAAGCAATTTACAGGCGGCAAAAGTAATAATGCCAGCGCACATGGCGCTAAACGTAATTTGCAACGACCAATCGACTATTGAAAACATAATTAATACATTCGACAATGATGAAGTCACATTTTCGATAACTTCTCGAAGCATAATTGCAAGCAAAATGTCGATGTCTGATGTCGAAATAACTCAGTCAGAAGAAAACCTGAATGGAGTCTCAATTGTAATAACATTTGAACAGACGTCATTTAGTATTCAAGGAAGCTTTGACCCTAAACAGTCCGCAGATGAATCGTCAAATGGCGTGGCTATTAAAGAGCCAGTCAGTTTGACTACAACTGTGAGTTCGTTATATAATAAAATAAAATCAACAGTAGGAATATAAAATGAAGATCACCAATAAACAAACTGGTCGCAAAGTAGAAATTAAAATCAGCAAAATGACTGCGATGGAAGGTTGGAACATACAGCGCCGATTCATCGAATTTGCGATGTCAAAAGACCCTGCCTTTCGTTCAGAATACACAATGGAAGTATTAAGCTTTGCGAAGGTTGAACTTGATGTCGGGCAAGAAATTCCTCTGAGCACTGGCGCACTTATTGACAACCATCTTGGCGACTGGGAAAACTTGAAATTGGTTTTCGAAGCAGTATTGATGGAAAACGGAATCAACCCAGAGACTCACGCTGAACGTGAAGGATACTGGGAACAAGCTGGCGGCGAAATGGCTGCAGCATTTATTGGCGAATCGATGCGATTAATCGCGCCATTCCTCAGCGGCGAGACTCCAAACAAGGGGTAAACTGTGTCTGACTCATTAGAAAAATTTGTTCTTCAATATACGGTGGACTTGAAAGAGTCCATCAATCGTCTTGAGCAATTGCAAGATAAGGTTGATCAGACAAACAAAAAGGCAAAGTCCGCTGGTAAAGACTTCACCGGAGCATTCAAAGATGTGTTTGGTGAGTTGAAGCCTCTCACAGCTGAACTGGGGTCTATTGACGGAATCCTTGCGCGGCTTACTTACCGCTTTGCCGCGCTCGTTCCTGTTGTCGCAGGATTGGCTGTCGTCGTCAAATCCATTGTTGATGTTCGAAAAGAATACGAAGCGCAAAGGAAGCTGGGATTTGAAGCAGGACTTTCACCAATTGGCGTGGAGCAATTACAGCGACAATTGAATGAGAGTTCAGGCGGAGTTCTTGGTGCGCAAGGGTCAAGGGATTTAATCAGCAAGGCTTCTAATCTCGCATTCAACGCATACACCAACCCCGATGTGATGAACAAGGACAACTTGTTGCTGAACAAGATGGGGACCAGTCCTTTCAACAGTAACGGCGGCATAAAAGACACGAACCAGCTGCTTGATGAAATTGGCACAAAGCTGAGAAGTGTGAATGAGCAAACCGCTCGTGCTATTGGTGCTCTGGCAGGTTTTACCGCCGATGAAGTCCGTGCGCTTCGTGAGCGAAATCAATCAGTCAAAGAAAGCACCCGTATAAGCGACGAAGAAACCGCGAAGCTGCAAAGACAGCAGGCTGCGCTTGAAACGATACGAAACAGCATGGGGCAAATTCAAGAAGACTGGCGACGCATTGAACTGGTAATCGGTGAGAACGTGATGCCAGCATTCTCGACGCTTGTCAGTAAAACCGCCGATACAGTCGAAGGATTCCAGATGATGTTCCAAAGAATGTCTGATGGATGGTCCGAATTTGTCGACAATTTCATTGCTGACTTGAAGCACCCGTTTGATAAACAGGCGGCTGTTAACGAGCGCCACGAGCGCGCCGTTGATAGATGGATCACACAGATGGCAGACGGCGATGTGAAACGCCAGAGGAACCAGGAGCAAAACGCGGCTGAACAACGTTCTGCGCAAGCACTTTTCACTCGCGACATCAACCTGTTTTCAAGTGCCGTTTCAACCTTTGCTGGAGTCATTGATGAGCGACAAGCATGGGCTGCATGGGCTGGTGAGATAGGACGAAGCGCAGGCCAATCCGCAATGCCTGGCACGCCAGCACTAAGCACTGGTGCGACCGTAGGCAACAACTTGGGGTCAGGAAATCCGACTGCATATGACTCAATCTATGAGGAAGCCTCCAAGCGTTATGGAATCCCTGTTGCGATGATGAAGGCCGTCACAGAAGTCGAATCTGGATTCAACCCTAATGCCGTAAGCGGAGCAGGTGCGACCGGATTGATGCAAATAATGCCTTCCAACTTCAAGGGGCTTGGCATTACAGACGGTAACGACCCAAGACAAAACATTATGGGCGGCGCTCAACTTCTCAAGGAATATTTAACTGCTGCCAATGGCGATTGGAATCTTGCGCTGACTATGTATCACGGCGGATATGACCGCAGCGGATGGGGGAAGAACACCCGTGCATACCCTGGCAAGGTAATGGCCGCTCTCGAACGACAGGCAAATGGAGAATACGCCACGGGAGCGCCGCAAGGTGCACCAGTGACTCCAGTCCTTAGCGGTAGCGGAGTAGAAGCGCCGAAAGGAAGCTATGCACCAGTACAAGGCCAATCCCGCCAAACGGTGCAATACAGACAGTTGCAAGAAGCCATTGCAGGATACCTAAACGTGCCAGTTGAGCAGTTGATGCAAGGGCAAGTTAACAAAGGCGATATTGACTTTGCTCAAACTTACCTTAAACTTGGAACGCAAAGGGATTATATTAAAAACATGCAGCTGGCTTCAACTCCAGGCGTAAGACCGAACATTCAGGCCGAAGCGATGAAGAATGCTCGTCTTGCCGCATTCCAGCTTGAGGCGTTCCAGAAATACGGCGGCGACCTCTCCGCGAATAGTCGACCTGGTGGGCGTGATATTACTATGGGTCAGAAAAACGTTGTCATCAACGTCAACGGCGCTCAAGACCCACGAAGCACGGCTATTGAGACTAAGCGCGTGCTTGAACAAGATGATATCAACGACATAAACAACCTTACTGCTACACCTTTGAAGTGGTGATCATTTGAAAAAGAGAATCCTTAAAGTCACCTTATCCATGCCGGATGGCACAAGCCAAGTGCTTGACGAAGGATTGATGCTTAGATGCCGAATCAAAAAGGCAGCACTTTCCGTTCAGAATAAGGCCACGATTGAAGTTGCAGGATTAACAGGGTACTTGAGAGAGTACCTGCTTTCCAACTTCACGGCATTCAACAAACGTCTGCGTGATCAAGGCCAGCTGGCGGCGAACTACGTCAACGTGACTATTGAAGCTGGATACAGAGAAGGGAGTGTAATCAGCAGCAACTTGGTATACAAGGGACAGGTGACGACAGTTGAGATAACAGCGCCGCCGCCGAATATTGTCATCAGAATCACTTGCTACACCAACCAAATAAACAGAACTAAGTTCATCACTCAAGCTGCGCCATCCAACCCGACTTTCAAAGAGTTTGTGGAATGGTCTGCAAAACAAATGGACATCGATACTGTTATTTGTGATACGTCGATTAACAATCAGCGACTTGTGAATCCAGGAAGAACGACATATGTTGCTGCTGCGCTGCTGCTTGAGATCCAGAACTATCAACGCAACTCCATCGCGGCATACATTGATGACGATACGTTAATTGTCAAGGATAAAGACAAAATTCTAAATCCAGACCAGATTACGGTCATTGAGGAATTTGTCGGAATACCGATGTGGAACGAGTGGGGTGCAGACTTCACTTGTATGTATAACGCAGATTTGAAGCTTGCACAAGGTGTTAAATTCAAATCAGTCTTAAACCCAAGCTTGAACGACACCACATTTGTCATCATGCAACTTGAATATGATTTAGCAAGTCGTGATGATATATTTACGGTGACGGGCGGCGTTGCACCATCGGCATAAATATGAGAAAGAATAAAATAATCGACTTGTTTGGCGTGACTTATGAAATTCATCAATTCAGTGCAATAGATGCATTTGAAATGGTGGATGACATAAGCATATTGACTCCACTTGAATTATTAAGTGAATGTTATGTGATCAAATATGACGGAACTAAAGTCAGATTAAATTCTGAGAAGGCCATCAGTGAAGAAGTGAAAAGTGTGCCAAATCACTTGCCGCCCAACCTTGTATTGAAAGTTCTAATGGAAGCGGTGAAGAAGCACAATTTTGGATTCCTCAGTGATTGGAAAGGCACTAAGATTCCAAATAGATTCTTGGCTGACGTACCGACCGTAGAGCCTAATTATCTTGAGCCGATGGTTGCAAGCCTAATAAACAATGGTCTTGCTTCGTTAAAAGAATTGGAAGAATATTATTCATTGCGTGATGCATTCGCTATGTTTGATGGACTAATAGCAAAATCACTTAATGAAGCCTACTCAAACGAAGCTGCCATTAAAGAATCAAAGTCAAATCGCTAAAATATTGCTTATAGACTCCTTATAGATTATAATTTGTTGATCAGATATAAGGAGTCTATGATGGCAGAAAAGTTAACCCAACTTACAAGCCCCAACCAAACTGACAAATCAAGTATGTTTGCCGCGCTGCAGGGAATGCTGGACCGTGGCAAGTATACCACTGACGGCATGATTCCTGCACAAGTAATATCTTATGACCGCAAACAGAATTTAGCAGTCATAAAGCCTGTTATTCATTTCGTAAGTCTTGATGATAAGCCAGTGGAGCGTCAACCTTTGGTGTCAATTCCGGTACTGGCAATCGGCGGCGGCGGCTTCGTGATCAACTTCCCTTTGAAGGAAGGGGACTTGGGCTGGATATTCGCTGGCGACCGAGAGTTGTCGACATTCCTTGAAGAATTGAAGCCGACTGCGCCTACCAATGGCCGTGTAAAAACTTTCGCTGATGGACTGTTCATACCGGATGTATTCCGAAAATACACCATAAGCGGAGAGGATGCAGGGTCAATGGTAATTCAATCCCTCAGCGGCGCTGTGAGAATTGCACTAAGCGATGACTCAATAAACATAACTGCGTCTGCTGGAGTAAACGTCAAGACCCCGATAACCACTATCGATCAACAATTGATAGTAAATGGAAAGGCAACATTCAATGGTGGGATAGAAGGCAAAGAAGGAACGACGGCAACGCTTCCGACTGGCACAACGGTCGGCGGCATTGATGTATCCACTCACGGGCATATCGGTAACGGGCCTGGAAACAGAACTGGGAATATGATAGAATGAGTGCACAATATTCTTACATAGTAAGCACTGGTGTGATCACCATTGACACGGCAGATTTATTGGCTGATGTTCAAGGTGAATGGATTGAGTCTTTAGGGGTCGGGCTTGATGTTGATGCTTCGACGCCGCAAGGCACGCTAATCGCAACAGAGACATTGGCAAGAACTTCAGTGATGAAGAACAATGCCGAATTGGGAAGCCTCATCAACCCTAACTACTCATATGGAGTATACCTTGATGCAATCGCGGCGCTTCTTGGCATCGAGCGCACAAAGAATGTAAGCACAATGTTGAAAGGTGTGACTGCAGAGGGAACGCCTCTGCTGGAAATTCCTGCTGGAAGTCTTCTTACTGATTCAAATGGTACATACTGGTATGTGCTGGAAGACGTTCAAATCACTTCGACTGGCAAGACAAGTAATATGACTCTTGCGTCAAAAGATTATGGATCATTCACTGTTGCGCCTGATGAAGAGTTTACAGTGGTGCAAGGTTATGACGTCATCGGATGGTCAAGAACTTATTCAACGTCGGCAACAACGACCGTGCCAGGAACACAATACATGAGCGACGGAGCATTAAAGGCCGCTCGCGTTAAGCGTCTTTACCAGCAGGGCATTGCATCACTTGGTGCCATTCGCGCTCGCGCCATGTCGGTCGACGGTGTAGAATCTGTGATGGTCGTGGAGAACGACACAGGAGCGCCTGGAACGGTGCGCGGCATCACCTTCTCAACGCCTAACGGTGTTTGGGTGTGCGCAAGCGGAACATTTGACAAGCAAGTTTTTGCGGAGACGATATTCAAGGCGAAGATGGGCGGTCAACCTTGGGACTTTGGCGCTGCTAATCAAGGTGATCCGGTAAACTCTCCTGATGGAATCGAAGTGGTCGATGCAGAATCACAGCTGTCTTATTTCGTCAAATTCAACAATGCAGTGATATATGATTTGTATGTTGATATAACCGTTTCAAGAGGAACGGCTACCGCTGATGCTGAGTCTATCATTGCCGCTGTGCTGAATTACGGCAATGGCAATTTTAACGGTGAGCAGGGATATACAGTAGGTCAATCTCAATCTTCTTTTGAAATCGCTTCAGCAGTATCCTGTGAATATCCAGGACTTTATATCAAAGATTGCAAAATTGCAGCAGTCAAAAGCGGACAGGCAGCGCCAACTTATCCTTCCGATTATGGCAGCGAGTGGATTGCCAATCCATGGGATAAGGCCAATACTATGCGCGGCTTCATCAACGTTAAATTTGTGTGAGGAACTATGCAAAAGTTTGACACAAACCTGTTGCAAAACCTTAAGTGGATGCAGAACAACGCGCCAAACATCACATCTTTGGTTCAGAAGAAGAGTGACTGGTATGAGCGATATCAAGATCAGTTTTGGATTGACTGGTACAAGAACATATTCAACATTGATACTTGTGATGCAATGGGCATCTATATTTGGTGTGACATACTATGCATACCAAGGGATTTTGTTGACTTAAGCAACTATGAGCACAACTGGGCATTTGGACCCACACGCGACAACTTCGAAGGGCCGGACAATATCGGCGGCAACTTCTTTGGTGCTGGCGGAAAGGTTGTGAAAAACATCGAAGAAGCCCGCATCCTTCTGAAGCTTCGTTATCTGACGCTTACAAGTGATGGCCGCATAGAAAGCATCAACCGTATGCTTAAGTGGATTTTCAACCGTGGAGAAGATTGGGATTACTCTTCATCGCGCTACGCATATGTGACAGATAATACTCAAGGCGCGGTGTCTTCTTCTGAAGCAACAAACGGCTCATTCCTTCTGTACGACTGGCAGGGGTCAACTGAGATTCAGCACGATTATAAACAAGTTCTTTTGAGCCACGGCAACAACGCAGGACTTACCATAAGTGGGGTGGCAGGGACCGTTTCGCGAATGGCACACCCAGACTGGTATTCATGGGGTAATGGTTCCGGCGCTGGTATTGTCGGCGGTGATACACGACAATATGGCGGCCCTGACTATTACGGCCAACTGTGCGGTGACTACCCAGGAGAGGCCATAGAGAATTTCGCCAACGCAGTACGGGTCATCAAGACCGCTTCCAGCGGCGAGCCTGTGTATTCTTTGGCCAATAATCCAAGCGCCAAATCTATTGCTCTTCCTTCTCAGGCTGGTGTAAACGTTTGCTATAGCTTCTACATAAAAGTGCTTTCTGAAAACGTGGCTTCTGTTTCCGTAACAGAGAACAGTGATGCATCGAGTAATGGAAAACTTTTCGACCCAGTGACTGGGCAGTTCAACCTTGACTCTTCTTTGAGTTATTTCATCACAGGCAAGTTCGACGGTGTGAGAAGGGAATCAAACCGTGGTGGCATCAAGGCAATCGGCGGCGATTGGTACAGAATCTGGATTGTAGAGCAAACTGCAAACGCGACGGCTGGGGTGAAAACAAGCTTTTCAATTGAGTTGAAAGCAACTGCCGCTGGATCAACCCAGACTCGCGAATTGCCTGAAGGGTCTGATGCGCTTCTTTTTGGATACTCCATTTGTGTTTGCGACCCTGTTCAAAATCCTAATGGACCTGAGCCTTATTTCTATGGGACTCAAAATCCTCCTGCAGATGGAACGGCAATCCTGTCTGTTACGGCAGGAACGCTCAACAACATATCTTGCGCAAACGGTCCGTTGACAACAAGGGATGGCGTGGTAGGTGAATCATTCATGCAGCCTGGTTCATCGCTTGCATACTCTGGTTCAATCGACGGCTACCCGTACCCAGGAAACGCAACATTGATTGCAGAGACTGACGGCATCAGACGCTCATGGAACGTTAGCCGATTGGACGGCGTACCGCCGCCGCCGACCGCTGACTATTACATGGAATATGTCATCGGGCCTTATTTCGCCAACAACTTATCCGACAACTTTAAGACGCTAGTTGGCGACAGGAATGAAGGATTCTTGCCAGCAAATGCCGGAATACGTTGGCAGCTTTACCAAGAAGTCGCAGACTTATCTGATATTGATTTGACTGTCAGCAACATAACAGACACGCGAGTAGGATTCGAAACGGAAGGTGTCGCATGGATTAACACTGACGGCATCATCAGAGTTGGCGGCATAAACGAGTGGCCGTTGAACAACTTCAAAGGTGTTATACGACAGCTTGAATCTTTGAAAGGTGTGAACCAAGTTATCGACGGCGCACTTGTCAACGACTATTCAATCTCAAAAGCATCAAGAGATGACTTTGGTCGTGAAATCCCACGTGCCGCGATCACAAACTACTGGCGATACACACAACCCAATGACGGCACATCTTTTGGCAATATCGTCAAGGACGGAGATAACACGGTAACGGCGACGCCAATCAGCGGTGTGCCCAACCAGTTCCCATCATTCAAGCTTTCCGCTACAATAGGGACTGTGCCAGCATCCGGCTATGCACGTGCTGTACTTGCTACTAAATACACTGGCAACCTGACTGGTCCTTTGTCATTTATCGCAATAGTTAAAAACAACACGGTAAACGGTCAAAAACTTTTCGTAACCGTACCGGATGGTATGGGCGGCTATATCCCTAAATTCTACAGCATAGGCGCAGGTGATTTGCAACGTATCGAAATTGACCTTGCCGCTGAGATTGTTGCAGGAACGACTTGGGATGGTTCGACAGGTGGAATCAGCATTGGTTTGATATCAGGGAAAGACTTGCCGACCGAAGTTGGTACGACTCTTGAACTTGATATTTTAAGCTTGATGCTTGTTTCTGGTAATACGATGAATGCGCTTGCGATTTCAACAAGCGAAGACTTTGCAAAGAAAACTGCAACTTCTATATACATCAAAAACCCAGGGTCACTGGCGACTGGAGTTCAATTGATAGCTTCGAATGGGGATGTTGTAGCGACAGTAAACTTTCCAAGAAGTGCTGCTGGCGGTTATGTTTCAAGCATGAATATAACTGACTTAACTGGTGATTGGGCATCAACCCTTTTATCAAAAATTAAATACATCGTGTAGAGGAACGGCAATGCCAACACTTATTAACAGACCTTTCGCGCAAAGCGGTGATGTATCCGTGGTGCCGGATGCAAGCCCAAGCGGTTATGTGAACTTCCAGCGCGGCTACACTCCTGACTATGCGCTTGCGCTGGAGGCCGGAAACGTCGCCGCGAAAGCTGTTGAGCGCGAATCGATGAACTGGTTGCTGAATTTGATTACAGACAACCTTATGTTTATTCAAGATCATGGCGCTCAACAATATTTCTCTTCTGACTTGAAGCCGGATGGATACCCGAAAAACGCCATTGTTGTCAGCAACTCTGGAACGCCTTCAGCACCTGAGTGGCGCATCTTTCAAAGCGTGGTCGACGGCAACACAAGCGCCGTACCAGCTAACGGAGAAACGGAATCTTGGCAGGAATTAACACTGCCCAGCGAAGCGCGAAAATACATTCCTATGCCTGCTGGCGGCGATGCGCAAAACCCGTACTTCGTTCGCGGATTGATTTCAAGCTTTGTTGACTTCGATAATATTACGACTTCCACAACTATCGTCATTCAATCCGATGCCGTCGCCGCTCTTTGCTCTAACATCCCGAATGCGGTTGGCGCAACGAAGGTTGCAGGTCGACTGCAGGTCTGCGCTTGGCAGGTCAATGCGCAGACCTTTGCTTTGCAGCAATATACATCAATGAATGGCTATTTGTTTACTCGCTCTTATACTTCTGGTGCTTGGAGTGCTTGGATTCAAAATGCCACTGTTCAAGACGTGCAAATCGGAACTCCAAACCTTGCATCTGGTAAAGGCGCGCAAGATATAATCCTCACCGTTCCAGCAGGGTATTCATGGCCGCCTTCTGCGGGTAGTCGTTTGACCATCGTCAATGACGTGACTACTACCGGACCTGTCACCGTGACCATTGGTGTAAACAAAGTTGCCGTTCTTGGATTCGACGGCGGCGAGTTACCAGCTGGCGCTATCGTAGGCTTGTTGCCATTCACCATCATTTATGACGGCGCTGTTTGGCGTCTCCTTCAGGCATTTGGCGCGGCGCAAATCGGCGTTGATGCTACTGAGCCGCAACAGTTTGTTACAAAGCGCCAACTCGATGCTTTGGCTGCGAAGTTGATCACTATGGGTGACGTATTCGAAGTCGGTGAGACTCGATTCCTTACCAACGGAACCAACCCAAATACTAAACTGGGCGCTTACGGTCAGGTATGGACACGACTGCCTGATAACATGGTCATTAGAACATCTGGAACGTCGCGGAACGGTCTTGCCACTGGCGGCGCGGACTCTGTCACCCTTACCGCTGCCATGCTCCCTCTTCACAACCACAGCGTAAACATAACTACGCGTCAGAGCGGCCCATGGTCCAATACTACTGGAGATGCTGGAAATCACAACCACACAGGCGATACCAGTCAGAACGGCGCTCACTCTCATGGTATGGATGCAGCAGGAAATCATTACCATGACAGCGGTTGGGGAGAGGCGTATGCGGACCAAGCGCGTTACGGAGTTTATGACGGTACTCACAACAACCTTGGGAGTGCAAGGTCTGATTATGATAACTACAAATACAACACTTCAACTAATGGCAACCACGTCCATAATATTCAATCTTCTGGATCACACACTCATGGTTTGAATATAAATTACGCTGGCAATCACAGCCATGGCTATACCCTTCCCGCTCACACTCACGATGTGGTCGGTAATACTGGCGATGCAGGGCAGTCGGTGCCAACGGCTGTTGCGACTTTGCCGCGATACGTTGTTTTGAATGGCTGGTACAGAAGCGCATAAGGTGATTTATGATTAATGCAAACGTAATATCTAAAGGGACCGGATGCAGCATGGATGTTGCAGAGAAATGGGTGGACCCTTTCAAGCAGGCTTGTGAGCACTACGGAATCAAAAGCAAGAATGCCATCGCGGCATTCCTTGCAAATGTAGGAGTAGAGACAGGCAGCTTGAAGACATTTGTGGAAAATCTCAATTACTCCGCTCAAGGTCTTGCCAATACATGGCCTAGTCGTTACAGCGTCAACGGTCGCTCTGGAAGCGCCCCGAACTCATTGGCCCTGTCTATTGCCCGTAAACCTGTGGAAATCGCCAATAATACATATGCAAACCGCATGGGCAACGGTTCAGTAGCATCTGGCGACGGTTGGAAGTACCGTGGCCGTGGTGCCATTCAGCTGACTGGTAAGGCGAACTATGCGGAATATACGCGCCAATCAGGTTATGATGCATTGAACAATCCTGATATTCTGACTGAACCAAAATACATCGCTGACAGCGCGGCATGGTTCTTTAAGAATAGCGGCTGTATTCCTCTTGCGGATGCAGGAAATTTTGATTCAACCGTTAAGCGGATTAACGGGGCCGCGCCGAACGCAGCAAACCACGGTGAGTTGCGAAGAAAGCGTTACAAAGATGCACTAGCAGTTATGTAAGAAAAAGGCCCATATGGGCCTTTGTTTATTTTACGGCTTCAACTTGGACGGGCGGAGCGGAACTTGTATCAATGTCTGGTAAGTCGAAATAATACCCCGCCATACCAATTGCACCCACAATCGCGGCCCGTGCCACCTTGTTGCTAATTGACTCCCCAATAAGCTTTACCAACAGGGACAAGATTTGAGACGTCAAAGCCTTTTTCAGCCTTTTGTTTTCTTCCAAATCTTTCTGCATAACTACCACCCATGTCAACGCACTTCCTGTGTCTTAACATTACCTGAAGCATCTCTCAAGGGCAGTGGATAGTAGGCCATTTGGTAGTCTGATACGCCTTCAATGTGATAAAACACGATTACGTCTTTGCTGTTGATGAGCATGTTAACGACATCTGATTTATCTTCTGGAGTGAGTATTAGTGCGCCGCCTGTCCTGCTGTCTACTGCAACAGGGTATGTCTTGTCGACAAGGCCGCTGTCCAATGTATTATACCTGACAACGATTTCAGGGGCATCAACTTTTGCCATTGACATTCCGAACACAAACGACACGACTTGTCGACCGCGATCATTCATTACGCACATCTTTTCTTTGTCAAATCTTTCTTTTATTACGTCGTATTTGTTCCAGCAGAACTCAAAGGATTGCCCATTGTTGAAATATCTCGTCAAAACTTTCGCAATTCCATTCGGCGGAGTAAACATATTTTCAGCCGATGCAGTCTTGGTGAAGAATATAACTGTCAGCATGGCCATGATGATGATCAAAACAATCTTTAATTTGTTAGCTTTCATTATAATTCACCTTTTGATTATGAATATTAATAGTATAGGCTTAAGGTTTTGAAAGTAAATACGCCGAAAGTAAATAAAAGAAAAGCCGGAAATTTCCGGCTTATGTATACACTGTATATTAAATTCTATAAAACGGCGCGATAGATTATACGCAACAATTATTTATCCAGTGTGTTAAAAATACTCCATATCGGTAATATCACGGAAGCACTTATACAAGGCAGAGCGCGGCACGTCAACGATGCCAAAGTTAAAGAATTTATATGTCAGATATTTGTTGCGATAGTTCTCGCGATTCTCCCAAAGCATTTTTCTCTCTGCCATAGGCATTGAACCAGCGGAGACGCGGAAAGGAATCATTTCGCCTTTCTCATCAACATATTTTGGATTGACAACCACAAATGATCCAAGGTATCCTTTCGCAACTAAGCCTTCAGCCTCTTTCGAACGCTTAGTGCGACCCAACTCATCAATGAATGCCTCGTTGTTGTTCTCCATCATCTCAACGAAGTCTATGATCAATCCTTCTTCATCGGTCCACGGCTTGTCCTTCCACACATCACGTGACTTTGGCGTCGCGCGGCCATGCTTGTATTTGCCCGTCCAAGACTTGCCATACAAGCCTTCATAGCCAAGCTGGTCTGCTTCGATTTGCATTGCCGCGTACTGTTCCATATTTTCGATGTTTCGATATTCGAGAGCGCGAAGGAATGGGCGTCGACCATGGTTGATGAGGTGCTGATTGACTTCAGCAACTCTAGCGCGATAGTTTGCATAACGCTTTTCAAAAGGCAAATCAGGGTCGCTGAAGTCATCAAACACCCACCATGTAAAGTTAGTGATTGCATCAGTATTCATGCAGGCTGTATAGGCTTGCTGCATGACGTTCTTGTCGTTCGGATTGCCGTCAATAAGCTCTCCATCAAGGCCATGAATCAATTCACCCAAAAAGAGGAACTCTTTTTTGATTTGAATGTTGCGCAGAGCCATGCCGGACGTGCCCATTGGCAAGTTGTCATACGCCATCGCGCGTATGCCATCGACCTTGAAGGACAACCCGCAAGGCAGCGGCACATCTTCGCCGCGCTCGATAATTTGCTTACGCTGGCAACCCTTCATTGGTTTTAATGCTTTGATTTCCCCTGCCATTATTCGCGACCCTCATTCATTACTTGTTCCATTGCGTAGGCATAAGCCTGATCAGTCGATTTGATGAACGTGCCGTTGTACATCACCCCTTTACGGTCCTTGATGTCTTCATAGGCGGCTTGAGCGCAATCAGAAAGTCGAAGTCCATAATCATGCGCTACGCCGGAAAGATAATCCACAGCGGCCATGATGGTGACATCAATATCCATGCTCTGATTTTTAGCAATGGCGTCGCCAAGTCGTCCGAGCGTCTTTGCCAAGCGAAGGATAAAGGAATGAGGGTGAGCGCCTTTGTCAGCGCAACCGCCGCCGTTAATGTCTTCGATTTTTGCGCCATTTTGCGCGGCAAGAATAGTTAACACAACAAGGCAATCGCCGATGTCGTCCTTGATGGCGGCTTGTAAATCACAGATGGCCTGCTCTGTATATCCGATTTCAGGGTCAAAGAACACAAGGTCATGTAATTGATCAACGTGGTCGGTCAACTCCCCAAACTCGCTAATAAGCTTCGGGTATTGGTCTTTAAGGCCGCAACCTTTGATGATGTTACGGTCAGAAGCCCACTGGCGAATGTTTGCATAAATCTGGTTCATTTATTTTCCTTTGATGCGTTGAATTGGTCGATTTTAATTTTAGCCTGATTATAAGTATCAATCAAGCTATTAACTTTCTCTTTTAATCGGTTCGTTTCTGCGGCGAACTGAACAAGAAATCGGACATCCTCTTCTGATAGTCCACAGTTTCCTTCTGGGATAGAGAGGCGTCCAGTGGTCGCAGAGTCGGGCACACTCCTGAGTAATTCACGGGAGCAGCTGAGTTGCTCGCGCAGCTTGATATTCCCAGACTTGTAACGAGCAATAGTGTCATCAGCAACCAGTTGCGCTTCCTGGCGACCCTTCTCATATGCCGATGCCGATTCAACCTGTAAAGATGCAATTTGCTCTTCGAGTGCATTTATCTTGTCCTTACGCTCATTAAGCGATGTCAGATATTGATTATCCTTGGCCAGTGATGCGTTGGTTTGCTGAAGGTCTTCAACGTATGATCCAGCGGCGAACGCGCCAACAAGGGCCAGAATTTTCAGAAGCGGCACAATTCTTTCTATCATGATGCACCAGATAAATAAAAGGCCGCCAATCGGCAGCCTTGTTGATTTGATTGTCGATTAAAACTCTTCTGCGTCAGTCGGAGTTTCGTTGACAGGACCAGCGGCACCGCTTGCTTCTTCCTGCTTGCTGCGGTCAATGTTAACGTTGCCGCCAACTACGTCGTTGTGGAATGCTTTGGCGACTTCATACAGACCTTTGTCCTGCACCAGACCTTCCAGCTCAAACTTCAGAACTGACCAGGTGTTGCCGTCTTTGGACTGAGACGCAGTACCCATGCGAACGATGTTCATAAAGGTCGGCGGAGTTTTCAGGCCCTGCGGAGTCTGAACTTTCTTCTGCTGCAGAGCGGTCATCAGCATGCGAGACGGCTTGATCATGGAAGAAGTCAGAGACAGCATTGCGCTACCAAATTCACCAGTTTCTTCGTTTAACAGGATCACAAAGTGGTTACGTGTATCTGCGTAGTAAGGTGATTTCTTCTCGTGCACTTTGCCGTTTTCATCCGGCACAAACACCTTACCGTTGATCTCAACAGCGCGGCCTGCCGCGACTTCTGCATCAACGTGCTCTTTGGTGAATTCACCTTTAAAGCCTTTATCGTCTGACTCGCGACCGCCCCAAAGGATGAAGGTGCGTTTGAATGCGCAAGGGATGATCTGCACGCCTTTCTTGCCGTCATACAACTCACCAGTAACTGTGTTGTACAGCATACCAGCTTTTGCGCCAGGCACGTGTTTTGGATCATCTTCGTCGACCATCGGAGACATCTTTTGCAGTACAACGATAAAAGGAATGGCATAAGCGTCGGCATCGGCACCTTCAAAACCAGCGCCAAAATCGGTCATATCGACAAAATCAGCCATAGCGGACATCTGGGTGTTTTTCACTGCAACTTCGGTAGTTTCTTTCTTAGACATTTGATGTTTTCCTATAGTATCAAGTTTCGTGGCAACCTGATTTCAAGATAAAGGTTAAATTACTTTTTGCTTTTAGGCAAGGTTATTTTAGCTTCTTTATACTCAAAAACGCTAATATCTTCACTAACTGGATTACCCGCTTCCAGCTGTTCTTTTACAAATGACTTCAGTGTAGCAGAATGAACGCCTTGTTTCAACGTGGCTTCAACACCGTCTTCACGCAGCGCGGCAACAATCTCTTGCGCTTGCTCGATTTCTTCGCGACCGAACTCAGCCGTGACGCTGGACTTGATCAAGCCGCCGTAACCGTTGTTGACAAGCCAATCGAATACTTTCAATTCATTTTCTTTCTTGATTGAAGCATTGACTTTTGACTCTACCTTGATTTTGGTTTTGTCTTCAAGCTTGATTTCGGACACGCCAAGCTCATCCATAACGCCAGGAAGCAGAACAGTTTTGATTTCACTGATGCGCTGCTTTTGCATATCAGCTTCATCTTCAAGCTCTGTCAAAGCTTCTTGGCGTTCTGCCAATTCCGATACTAAGCGCGCAAGGCGCTCTTGAATGCTCTCAGGAGCGACCTGCGGCAAATCATCTTCCCAATTAATATTGCTCATATTTTACCTTCTTGCATTAGCCCTTCAACACGGGTCATTTGATAACGTTCAGGTTTCCAAGCCGCCAAAGCCTTCTCAGCGCCTTTTAAAGTTTTATATGCCTTGATGCCAGGCATAATAACGGTATTCACCCCAGCACCGTTGCCATAATCAAACTCTTTTACAACGCGGAATATGCCGTCAATTTCTTTGACCAAAAGACGTTTGAACGCGATTGCGCCAGTAGCTTCATTTTTGTAACGTTCAAGGATGCGTACCATTTTGTATTCCTCTGTTTCGTTTCGATGAAGTAATTATGACTCATCTTCCCTGACAAGTCAAATTATTTTTGATATTAATTCATCTTTTTGCCGTCGAGGATGTGATCAGCAAGCATAGACTTCATACTTAGTGAACGCTGAATTTCTTCGTCGATGGTATCAACACCAATAAAATCAACATACAATACGCTTGATTTTGTTCCGATGCGGTGATTTCGGTCTTCGGATTGCTTGCGCAACTCGTTGTCATAGTTGCAAGAATAGTAGATTGCCAAGTCAGCGGCGGTAAGCGTGATGCCGATGCCTGCCGCTGCAGCGTGGCAAACCAATACCTGTGTTCCGCCATTCGCCACTGTGTTCTTCTGGAAGTCATCAATTAAGAACTCGCGTTGCTCTTTTGACGTTTCACCGTTGTATACACCAGTGACCACGCCTTCAGACTCAAGCCAATCCTTAATCTGGTTCATCTCTTCCTTAAAGATGGCCCAAACAATGAATTTGCGCTCTGGGTCATCTTCCAACACCCCTTCCACATAGTCCTTAAATGCCGTGAATCGTGGGTTGTCTTCCATGTAGACCATCTCATCATACACCTTAACAAAGCCGGATGTCACCTGCTTCATCTTAGTGCGCGACGCGATCATCTCAAACTTGACGTTTTCTTCTTCGCCTTTGTACTCCATCAGATAGTTGTACTCATTCTTGAGTTCATCGTAAACATCGCGTTGTTTAGGCGACAACTCGAAGTCAATAAACTTGTACACCTTCTCTGGAAGGTCCGGCAAGTATTCCGCTTTTGTCGCACGAAAATAGTGCGGTTCCATCAGCCGGATAAGCTTGTCAAGGTTTTTGTACATCGGTCGGCCAAACTGGTCTTTGCGCGGCACTTGCGGAATCCCATGGCCATTGCCGCCGATTTTCTTGAGGATGGCTTGCATCTCTGGGTCGTGCGCTTCAAGTAGCACCGTGAATTCAGAGTTGAATGCACGGAATGATTTGGTGCCGAGCAAGCCTGCTTCAAGGAAGTGGTATTGCATGTAAATATCCGCAGGCGAGCGCGGCAACGGCGTGCCAGAAAGGATTCGACGGGCCTTTGCCAGCCGTCCCAATTCCACAACCTTGATGGAGCGTTTTGCTGTGTTATTCTTGATTCGCGTTGATTCGTCGATAATCATCAGGCAGCGGTATTTCTTCAAGACCGACTCGATGTGTTGATAACCGACTGGTGTGTTGACTGTGTCGATGTTGAATGAGAAAATGCGCGCAGGCACTTCGCCTTCAGGGTAGTGATCAGCAAACATCTTCTCCCAAAGCGCCTTGCCCTTTTTAGTCTTCATCTTGTCATTGCCGCGCCAGTAGTGCCCAATCCACTTGATGGAAAGGTGTTCTGGTGCTTCACGACGAATCCAGTTTGAGTGGACACCGTTTGGAGCGATGACGACCATGGCATCGAACGCGCCAGCGACGAAGTGCTTTTCAAACTCTGCCAAAGCGGTCCAAGTTTTACCAAGACCCTGTTCCATGAAATAGGCAAAGTATTTTCTGCGGCCTGCTTTATCAAGCGCCAGAAGCTGGTGGCGCATCCCTTGTGTTTTCATGACAATTCCTCTAAATACTTGATGATGTGGTGAATAGTTCCCTTCACGATTATCTCACGTTGAACGTCTGCAATATTATAACGCTTTAATTCAATCGAAGGGTGGACTAAATAAAACATCTTCTCAGAATCGACTTTAAGCAAAACAAATGATGGGTATTTCCAATCATTCCACGAAGAAAGAAAGCTGCACTGACCTTTCTCAAATGCATTTCTGAAAGGTGCAGTGGTGGCCCTTGCAGGCCACGATTCAAAGAACTTCATTTCAAGCCAAAAGCCGCGCCCTTTCCGGTTGGTGCCGATTACGTCCGGCACGCCATCACCCGTCATCGATTCGATTCGTTGAAGCTTCAATATTGATTCTGAATGTTTCTTCAAAGGAACGAAAATGTATTTTTGTTCACGGTTATTTGTTGCCATCTGGATACACCTGTTTGATCACGTCGACGATAAACATGTCAATGCCTTCAAGCTTGCGGCCTTTCATCAGGAAGAATGCACCGTTCCCAACGTTCTCTGCGATGTATTTCCCGTACTTCTGGAACTTCTCTGGGCGAATCCTGAAGCGCATTGGCGAGTCTGTCGAATCATCCTTGCACATAAGGTCGATGAACTGGGTCTCAATCTTGTTTCCAAACTTATCCTTATCCGCATAGCGGCCATCAGCTTGAAGACCCTTTTTAAGTTTGCCGTGCTTTGTATAAATGCCGCGCTCAAGACGTTTACGGATGCGTGTTGCTTCGTTTTCATCTGCCAGCACTTTCTTGGTCAACTTGCCGATTACTATTGCACGCTCGTCATCGCCGACTTCCTTCATCTGGCGTATTGAAGCACCGGAAGTAACGCCAATCAGATATGGGTCATTATACGCCCAACCGAACTTGGTGTGCATCTCTGTAAGGTCGCCGTATTTGACTTCAGCATTTGCCAATGCGTCCTTTTGTTTTTGCGTTAAGGTTCCGGCTTCACGTGCTTCGATGTACTTCATCGCCTTCACCATTCCGTACCCTTTAGCGTTCATTATGCCGCCAATTAGCTTTCCGTTAGCGATGGTCCAGTTCATTGAAGAGTGATCAGGGTCGATTGGCACATAATCCACGCCTTCCTTCGCAAGTTCACGTAATATCGCAATCGTCTGGTCTTCGTCCTTAGCAGCGCGTAAGCAAGCAGCAGCAAATTCCAACGGGTAGTGTCGTTTAAGCCACAAGGTCCAGTAGGTCACGACCGCGTATGACACGGAGTGTGACTTGTTAAAGCCCCATGACCCGAACGTCGCCATCGCCTGCCAAAGCTTTCTTGCATCCGCTTCCGGTACGCCGTTATTTATTGCGCCTGCAACGAAGTCTTCGCCAAGCTTGTTAAAGTATTCCTCACCCTTACGACCTGACATCGCCTTACGTACAGCGGATGTTTTCGCCCAGTCAAATGAACCAATCTCTTTAACCACGGCCATGATTTGCTCTTGGTAAAGAAACACGCCGTAAGTCTCTTTTAAGTACGGCTCAAGTTGCGGTACGTCGTACTCAATCGGCGCACGTCCTGCCGCGCGTTCAATGTATTTCTGGGCCATACCGGACGACAACGGGCCAGGTCGGCCAAGTGCTGTCAGGTTATCGATTTTGTTAAAGTTATCAACGTGCACAAAGTTGGTCACTGAGCGTACAGCGTCGCCTTCAAACTGGAAGATGCCTGACATCTTGTTTTCGTTAAGGATGTCAAGGACGCTTTGGTCATCAAGCTTGATTCCGTACAGCGTTTCAGCATCTATCACACCAGTATCAGAAATGATTCCGAGGGTACGAAGACCCAATGCATCAAGCTTCAAAAGGTTAAGGTATTCGCTGTCAGGCTTATCAATTTGCGCAATCCCTTCCGCCGTCACTGTACAGTAATCAGAGATTGGGTCATTACACACGATGATTCCCGCTGCGTGAACGCCAGTGTGGGAAGGGTGAATCTCAAGGTCACCCATGCATCGCGCGGCATCGGGATATTTAGCCACAAACTCTTGGCCCGTGGTCGTTGTTGCAAAGGTATCCTCCAGGCCGTGACCATAACGGGCGTCACCAGATGAGTATTCAAGCAATGCGTTTTTAATGTTGGCCGTTTCGTGATATCCAATGTTGAATTTCTTACCAACTTGAGCCATTACTGAGTTGGCCTTAAGCGTGTTGATGTTGCCAAGCTTTGCAACGTTCATTTCGCCGTATTTTTCTTTAAGGTAATCAAACACCATATAGCGTTTGGTATCCTCAAAGTCAATATCAATATCAGGAAGGTCGGCGCGGCTTACGTCGATGAATCGGGCGAACAGCAGCTTATACGGGATTGGGTCAACTTCCGTGATGCCGAGGCAATAACAAACCAGTGAACCAGCCGATGAGCCGCGAGCGGGTCCGACGAGCATTTTTGTTTTTGCAAATCGTACAAGGTCCGCTACCACCAGAAAGTATGAGTCGAAATCTTTCAGCTGAATCTGGTGAATCTCTTCGTTGAATCGGTCCTCATATTCCTGAGTCCATTCTTTGATGTGACCTGCCTTAAGGCGGTACTCCATACCCTCACGAGCAAGCTTTACCATGTCACCAGCAAGGTGGATAATCGGTGCCTTGCGCAGCTTCAGGTCAAGTCCCACGATTCCGTTTGCAATATCAACCGCATTGGCAGTTGCTTGATTCAACTCATCTTCGGTCAGGATTCCTTTAAGCTGTTTGCGCAAGTCTTCCGCGTCAACAATGCAGTGCGGCTTGACCGTGTCGCGAACTTCCCAAGCATAAGCAAAGTCAACGTGCTCAGGTGAAGGCATGTGGTTGTATCCGGTTAAAACCAGCGGCCTTCCGTTGCTGCGGTGAGCCAATACCTGGCGCTTGGCCAAAAGGAACGATGATGGGTTGACGTCTATATAATCGTAGTCCTCTGGCCGCAGCAACTCCACGGCACCGCCACAGAATTTAACGACTCCATCGAGCGCCCCGAACTCTGCACGGGTCAGTCCGCCGCGTTGTGTTGCAAGCGTGGTCGCGTTGTAAAAGGACTTCAGGTCAAGCGCCAATATCCAAGCCTTCGGTTTGAATCCATTTTTCGGGTCCGCATCAGGGTCGATGATTGGAATTTCCATGCCGAACATAGGCTTGATATCATTCTTCTGACATTCCTTTTCCCAGCGAACGTGACCCCATGTATTATTATCAACTAATGCCGCGACTTCGCAGCCCAACTCTTTGAGCCGTGCTATAATTTCAGGATGCCGTCCATATACTTCTTTGAACGTGTAACCGCTGCGAACTCTCAATTGTGGAAACATTATTTACTCCATATGTCATATACGCCAATTTGTTGGCAGACTTTGTGCAGTAATATTACGTCGTCTAATGCACGGTGCTTCTGTTCATATTTTCCGAAATATAATTCATACAGCTCTTGAAGCTTAACTCTTCGGCCAAAAATAGGCAAGGTTTGCTCGACTGTACAAATGTTTATTTCTGGAAAATTAACATCACCAAGTGTAAGACCTTCGCGCTGTAATGCATAGTCAAGAATGTTTTTATCAAACGCATGGTTGTGCGCGATAGTTGCATCCGTCTTCTTGAAGATTTCTTTTAGTTGCGGAACGAAATGGATGAAGGGTGGATTACACTCAAGGTCTTCGTTGGTTAATCCGGTAATCTTTGTGATGATTTCTTCAATCACAATTTCAGGATTAATTATGAACTCGAACGTTTCAAGAATCTCTTTGCCGTCCGTCAGCAGTCCTGCAAATTCAATAGGGCGCGGCTGCATTCCAAGCGGCGCTTTCGGGTGCACGGTTAATCCGGTTGTTTCGAAGTCATAAGGGAGAAATAACACATTGGCCTCCTACAAAAAGGCCGCCCATTAGGACGGCCACAGATTCACGATTCGTTATGCAGTGTACGGAGTACCGTCTTGATTCAAGCGCACGATAAACTTCAAATCAACGCCGATGATTTCACGCGTATCAAAGATCACATAGTTGTAACGACGCTGACCAGCAATATTTGGGTTGGTGTGAGAGTCGGTCACAACTTCCTGCGCAACCTGAATGCCTTCTTCTTTAAAGAACTTGCGCCATTCAGCAAGTTCAGCGGCAGTCACGTGCATACCAAGATGGCTAACCTGATTGTCGTGCGCATCGATGTATTCGATGTTTTCGTGAATCCAGTTGCAACCTTTTGTATAGTCAAGAATTTCAAGCTCAAGAGGCTTACCAGCGCCGCCATCGGTGCCGTTGCCAGCCTGATAGTTGAAGCGCAAGTCAGCTTCGTTGGTGCAATCGCCGCGCTGACCCTTAAAGACATCAGCTTCAAATACGCGACCAGTAGCAACAACGTGATCATGGAACCATTCTGTCAGGCCGATTTTAGCCAGGAAATTCTGTGCGCGCTGAGCACCTGGAATTGACAGGGCGATTTGTTCAATTTTAAAGTGTGGCATTTTGTTTCCTTAATTAAATATTATTGATTAATTACTGTGTTATCTTCGTCCTGTTTCTTTTCAGGAGCGGGTGTGACAACTTCAAATGTTCGTGATTTATTTCCCAAATGGAATATCAGTACCAGACATAAAACGCCATGCGCCCGTAATTAAGATATGGCGAATGAAGTCAGCAATTACTTGCGGCTCAGTCTCCAATCCATTCATCAACGCCTTTTTCTGGTATTCAGCAGCATACTCAGGAGTCCAGCCGCGAGTCGCGCAAACAGCATCTTCAATCTGTTTGGACATACCAGTGCCGCGCAACTTGTTAGGACTAATAGAAAATACCGTGATCCCGTATTTAGGCGTAAGCTCGTGAGCCATCTGCTTGCTAATCATGAGCGCAGCAGCCTTGGAAGCATTATAACACAAGCTGGACGTCATAGGAATATGCGCAGCGTTGGAAACGATATTGATCACAAAACCTTTGTTGTCGATAAGACTTTTCAGCGCGGCTTGAGTCGTGTTGACGAAAGAGAAGGCGTTGGTGTGCATAACGCGATTGAACTCTTCGTAGTTAACATCTTCAAACCAGTTGTTGGAGTTGACGCCAGCACAGTTGATCAAGCCTTCTACATCATATGGGCTTAAAATTTCTTTCATCTGTTTCGCGTCGCGGACGTCATATCCGTATGCTGAATCGATTCCAAGCACGTTATGACCGTAAGCGCCAAGGGTGTCAAAAATAGATTTACCAAGACCGGAATTGGAACCTGTTACAACAATTACTTTTTTCATTTATTTATCCTTTTTGGACTTCGTTTCGATGAGATAAATATAACTCATCGAAACGCACAAGTAAACTATTTATTGAAATTAATATTGTGGGTGTTGACGAGACGTTCACACATGGCGCTGTAAACACCATCGTCGTGTATAGAGTCTTCGTGCTTCAGGCCGCTGATTGCAAAGCGTGTAAGCTTGACAATCTTAAGCTCGAACAGATGCCACATGTGGTAGTCTTCCGGCGTTTTCAACGTTACGCCATTAGGGAAAAGCACCTGCATAACCTGGCCAACCATCACGGCATTATCGCCATAGACAGCGTTGCGCTCACGGAAGGTTGCTGCCATTGCATCAAGAATATCGGCGGCAGTTGCCGGAGATTGTTCAACTTCCACAGTCTTAGTCTCTTCTTGTCCTGTTGCGCTTGGATCAATTGCTAATTGTTGCACCACTTCACCTGCCTTGCAAAGATTAAATGTAAAAGCGATTTTATTTTGAGCAACGGAATTATAATACAATGCTTCATCTTGCATCCGCGCGAGCACGTCTTGTCGGTCGTCGAATACATTGATGATTCGATAATCGCCGTGCCGCAATGCGTGCGATAGCCATGCAGATTTCATAATAGTTGATGGACGTTTGTCGCCATAGTCTCTCATCTTGATTGTAAATTCATCAAAAGGAAAAACATTGTCCAGACGTTCAAAAGTCACTTGTCTGTATTTTTCTGGCCTTGCAGTCCAATATTCAACCGCCTCACCGCGAAGAGATGCCGACTCTACTGCTGATGCAATGCGAGGATAGAACTGATCATAACCAATACCGCTGTGATAGTCATCATAGTCTGACAACGGACCTGCCACCTTTATGCGGTCCAAGCGCCAACGGTCATCAAACAGCGTTCCGTCAAGGTCGAATACGTTTAATATTTGGTTATTTTTAATACTCATCCCTTTGACACTCCATCTTTAGCAACTGGATTGTTGGTGATTGGCGCGGCATCCCAAAACTGGATGCGCAACTCTTCTTGCTGTGCCGTGGTATCCATCCAATCACGATACCAAGGGCAATGGGCTTTGCCATGACGAGGAAACGCGCATTTACCCATACCGATGCATTGCGGCTGTAGTAAAGGATTAGCCCACGGGTGCACCTTGAGGACTTCCGCAACCATTGCGCGAAATACTTCTTGATACTCGCCTTGGGTGCGCGTGCACAAGCGGTTGGAAGCCATCTGTTGCAGCGTGCGCAAGTTGAACTTTGCCATGATATGCGTTTGCATATTAGAAGGCAACACGGCACGTGCATCTTGAATCTCTGCGCCAGCCGCGCGAAGTTCTTGGTATAGGGCGTCAATGGTCGCCATTGCATCATCCCAGGTGTTAGCCAACTTCAAACGCTGCTCGTCGATTCTCTCGCCGATAACCCTGTCAGGGTCGTCATACTCAAACGCTTTCGGACGAATCGCATCAAACGCAGAAGACTCCTGAGCGCGGCTGGTGCGTTCTTGATATGCGCCTGTGCGTGTGCGTACCATCTGATGGGTCATGTTCTTTGATACATCTGTGATATCAAAAATATAGTCCACAAAGTCAAAAGGTGACTTGATTGTATCGAGCATGTAGCGCCAATGCTCTTGCTTCTCTGATTCCGTCATCTCAGAGACAGGCTTACCAGTCATGCGCGTGTTCTTTGTTTCCAGCAAAAGGTCAAGTGCATCTTGGGTGTATCGAATTAATTCAACTTTCATTTTAATTATCCTATTAACGGTAATTCACTAGTTGCTGATCACCAGAGAAGGTGCAATGATAAACGAATTGTGCGTTATAAAGCAACTGAAAACTTTTCTTTGGTTCACTATTAGCACTCATCGATGTGAATACTTCTGCACCGGAACGGTTTTCACCGATTAAGTTGACAAAGCCGCCAGTTGTGCGAGGTTGAACGAAAGTGAAGCGTTGCATCCACGGAGTCCGGTTGGCACCTTTACCTGTGAATCCTTGAATCTGAATATTCAGACCTTCTTGCTCGTTCACACCGATGTAAGTGGTAATCTTTGCACCAGTCGTTGCTGCGGTCTTCCCGTCCATCGCTTCGCAATCGTAAACAGCGATTGAATCGGAAGTGCGGATGGCAGCTTCAGTCGCTTCCATATACATGGTGCCGAGAATAGCAGTTGCGGCAAGCGCGATTCCAGTGATTCGTTTCATTTTCGTTTCCTCTATGAGTTCTGCTTCAATGATTAAAGTATACGCCCATTGAAGCAGAAAGCAAATTATTTATTAGCAATATAAGCAAATTTTTGATAGTTATTTGCTTTGATGAGTTTTTCGACTTCAACAAGGTCATGAGCGACGTCATCAAGCAAAATGTTTCGCCAGGTAGCGAATCTACCGACACTAAAAACGTTCAAATCCATAGTCAGCTGCAGGAGTAGGGCGTGTCGCAAGTCTTTCGGAATGTCGACAATCTTGCCATATTTCTGGTCGACCTTTTCAACTTCTTCAAGAGCGATATCACTCCATGAAAGGCCAAATGCCGTCAACACTTCGTCGACTTCTGCGCGAAGCTTCATGTCACGGTAACGAGTGATGCCTCCAGCGGCTTCAACTGCAGCTTCACTTACGCTGACTAAAGGAATTGTTTCAATGATAAGCGTGTCACCAGTAATTGATGCGCGGTAAGTTCTGACGGAGTAGTCAGGGAAGTAAATTGTCTGATACAAATCACACTTACGTTTAATCTTAAAGCGGTAAACGCGAATGTTTGCTTTATCAAATGAAAAATCAAGCTTTTGATCAATTCCAGCAAGCTTCATCATGACTGGCAGCGGCGACGTGTTGATGATTGGCGTCTCGCTATAGCCGCAAAGAGTATCAACAGGAGTATTAAAGAATATGCGGTCACCCAGTTTGTCGACAAGCTGATCATAAAAGTCATCAGGCGCAATATAACGCGTTGCAGTCTTAAGCTTCATGATTGAACGGCTGCCAAACTGATTGGTGACCTTCATGGAATACATATTGGCAAGGTTAATTGGGCAATGGTCATGGTAGTAGTTGCCGCGAAAATACACAGCCTTGTCAACTGTCACGGCCTTAAAGGGGATTCCGGTAATACGGCTTACTTCTTCGCCACGGAAGCGTAGCAATGCCTTGTGCTGTTGCGCTCGTTCCCCTGCTTCGTACACAACAGAGTTCGGGAAGTGACACGCTGTGATAAGTCCTGCCAGTCCGCCGCCGATAATCATTACAGGTTGTTTCATGTTCATTTGTCCTTTGTGGGTGATATGAGAAGTATAATAGCTAAATTATTTTACAGCAACAAGTCATTTTATTTAGTACAGATGAAAAAAGACCCACAACAAGTGTGGGTCAATTACCGCTGCATAACCGTCCTAAGGTTATTCCGCTTGATCACCGTCTTCGGCATCGTCGTTGGATTCAACATCGACAAACTCGATGTGACCCATCTCTTCCAGCTTGCTCAGGTAGGAGCGAACGGAAGCGCCAAACAGTTGATCTTTAACTTTTTCGCCCAGCTCATCGATAGACTGCGCCACGCCAACTTCGCCTTCTTTGATCGCCGCCAGAACGCGTCCACGGGTGGAGTGCTCTTGCGGCTGGCTCAGGCCATTGCCAGTGTAGATGAAGTGAGTAGCTTTTGCACGACGCTGACCGTTTGCCTTTTTAGCGGCCTTACGTTCTGCGATGGCTTTGCGACGTTCTTCAGCTTCTTTCTTACGCTGTTCTTTCTGCTGTTCTGCAGCTTCTTTCGCCGCAATCTTAGCAGCTTCACGCTCTGCCTTGCGTTTCGCTTTAGCTTCTTCTTTAGCCTTCTCTTTTTCGGCCTTCGCTGCAGCACGGGCTTGATCACGCTCTGCTTTCTTAGCAGCAGCTTGCTCAGCTTTCAGACGCTTGGCTTCTTCTTTAGCCTTCGCCTTTTCGATTTCTTTTGCTGCTTTAGCGGCTTCACGCTCTGCCTTCTTAGCAGCAGCCTTTTCTGCACGCTCTTTGGCTTTCTTCGCTGCTTCTTCAGCACGTTTCTGAGCCTTCTCATCAGCAGCCTGCTTACGTTTCAGTGCAGCTTCTTCACGCTTGGCTTGTTTTTCCTGCTCACGCTTTTGGCGTTTTTCTTCGGCTTCTTTCTTTTTAGCCAGGCGTTTTTCTTCAGCCACGCGACGACGTTCTGCTGCAGCTGCTTGTTTTTCTTCTTTAGATAATACTTTGATTGCTTCGGCCATGTTCACAGTCCTTAAATAAATTAGTTTATTTTATATTCCCCGTTTGGGATAACTTAATTATGCCTTCAGTCGCCGCCAGTAGCAACTAAAAACTCTGGCGGCAATGCCACTTTAATTAAACTGATTTTCAGTTTTATTTTTCGTAAATTTACGTCAACATTAACGCGCTTTCAAATCACGGTACACAGTCAGATTCTTCTTAGCGCGGGTAATAGCCGTATACATCATCTTGGCATACGGAACGCCGCGCAAGATTTCTTCCAGCACGCACACATTGTCCCACTCGCTGCCTTGCGATTTGTGCACCGTTATGACATAGCCATAGTCCATTCCTCCAACAGCGCGTTGGGCCTCTTTGCGCACTTCCTGATCAGTAGAGAAGGAAAGAGGATTTATCTTCACCTTTATATCTTTGCCATCGGTAAGCGAGCGCAAATTGACATACATTATTTCATTAGACTCATCTTCATCCCTTTCAAAGTCCGGCACTGGCTCATAACTAATAACAATTCCTTGTTCGCCATTACAGAATCCTGGCCCGTGTTGGTTGAATGTGCAAATAACTTTCTCGCCGATTCCTGGCATTGGCGTTATACGTCCGCTCACTTGTCGCAATAATGAATTCCATTTATCTTTGGTGCTATTATAAGAGCAAATAATTTGATCATCTTCGCCCATAAATTTCTTCAGAGCGGTAACGCGCGGCGATTCAGCCAACACCTTTACATCATCATATTCACGCGGAGGAAGTCGGTTGCCCTGTCGCACGAAGAAGGAAGCGCGGATTATGTTGGACTCTTTCCCCTGCCGCATGATTTCGGTCAACAGTACGTCAACTGCATCTTCAGTAAAGTAGGCAGCGGCTTTTACCGGAGGGACTTGTCCAATGTCGCCTAATGCCAGCACAGGGATGCGGTGATCAAGAAGGCGTTCTGTGTCCCACTCACCGACCATTGAAGCTTCATCAAGGACGACAAGATGCGGCCTTTCATCAAGAGTTGACTTTCTTGCGAATATTGGTTCATTGTCATCGTTAACGCCGCGCACGTTATAGATGAACTGGTGAAGGGTCTTAGCGCCACGACACCCTTTCTGCTTCAATCGGCTGGCTGCCTTTCCGGTCGGCGCAATATAAATGGCACCGTACTCACCGACACAACGGCGCACAATCTCACGCGCAATAGAGGTTTTACCTGTTCCTGCATAGCCAGCGATGAAAAATACGCGCTTCGTTGTTTTACCGTCCTGCAATCGCTTGTACCATGCAACGGCCTTTTCGATGGCATCAATTTGTTGCGCGTTGAACTGAATCACCGGCTCATCATTAAATTCTGGAATGTTCATTATAACTCCACTACGCTTTCAAGGTCCAGATATACTGGAATAAAATGGCAATCTTCTTTTCGTTCAAACATCTCACCGTCAACTCGGCTGAAGAAAACAGTCGTGTTTGGTATCTTCCACCCTTGCTCGTCGCGCACCAGGTACGCCATGGATTCAACAGGGATGTAAAGTGATACCGGATTTGCGGCAAAGATGAATTTGATTCTGTCTGGTTGACCCAGGAATCGCATAATTGTAAGACTTGAATTCAGTCTTGTATTAAGGAAGGACTCAACGATGCCGACGTGTGTTGCACGTTCGCGTTGCTTCGTATCTTTTTCGTTCATTTCAGGCGACCTTTGTTAGTGCGGAAATATTTTCTGATAGTATAATTGCAGATATAGTATAAAGCAAAGTAAATCGAAATTGTGAAATAAATGGTAAATATTGTTGACTTTGTATCACTCAATATTATACTGCAGGTATTGATCACCGAAGGAAAGAAAGATGGCTAGTTTAAGAGAAGAAGCAAAAATAATTGAAGAGTTTTTGACGGAACTCCAAAGAGGCATTCCAGAAGATGAACGCGTCATGACCGTGTTTGCGCCTGAAGCAACGGTGCAGACCGACGAGCGCGGCAAAAAGATTAACAGCAGCTTCTGGCCTAAGCCTTGGAAGCTTGGCAAGCCGCTGATGCAACATCAGAACGGTTACGCCTGCATAAGTTCAATGCGTAAGTCTCCCAACCCCAAGACAGGCGAGATGCGATACTGGCGCACGGAATCGGCTTTCGGTCATGGCATGGCGATGATGGTCGACGACATTGGTCACGGTAAAGGGTCCAAAGGCGATTTAGATTTGGAATTCTTTTTCGAGCGCCTGAAGCCAACCGTCATTGTCGAGACTTCACCGAACAACCACCAGCTGTGGTATTTCTTTAAAGACCCGATTGACCATCTTATCCAGTTCAAAGCATTCCTTGGGTCTTTCGTAAACATGGTACTCAAGAAGGGCGGCGACAACACGATTAAAGATGTAACGCGCGTGGGCCGTGTTCCTGGGTGCATCAACAACAAGCGTGTGACTCACGACGGCCCCTATAAATATGTCGATGAGAACGGCGACCCGTTCCGCTGCCGACTTGTTCATGCAGACTATTCTTTGCGCTACACAATCGAAGAGATTTGCCAAGCCTTCGGTTTCCACGTCGTTATGCCGCAAAAGCGTGAAATTCAAATCGACGTTGACGAATACAAATATGACGCTGTTTGGTATAAGATAGCCCAGCAAATCCTTGCGCGCAATAAGATGGGCGAAGGGTCCGATGGCGATGTGGTTGAAAATATGTCAGGTAAATGTCGCATCATCTGTCCTTGGGGTGAAGAGCACACCAACGGCGACCCATACGGCGCTTATTTTCGCGGCCCAATCCCTGGCGCTGAACATGAATTCGTTTTCGGTTGCGCTCACGACTGTCACCGGAAAGGGGAAGGCAAGAAAGGATGGACCGCTTTTGTTGAAGCAGTAGTCATGCCTTATATTGAGAATCAACTTGATATGATAAATCGTCGCGCAGGTGGCATAAAATAGTTTGCTTTTATTTTTCTAGCAACTATAATCATTTTATGAACTGAAGCAGAGGTGATCTATGCAAAGCGAAGAATTGAACATCGAGCTTGAAGGTCTGTTAAATTCGTTAGAACCTAAGCACGTAGAGCTTCCCACCCTTGAAGGTGTCATGGCTCACAACCAATCGGCTGCGGCCAAACACTACTTTGAATTTGTTAAGGAATAAAAATGAACGAACCAAAAATGATGACTCCTGAAGAAGCGCAAAAACTTCGCGTGGAGAACGAGCTTAAGCTTGTCAATGAAATTCTTCCTCTGTTTAAAGGCTATGCGGTTGAAGAAGTCGTTGGCGCAATCCTTAATGTGTCGACGCACGTAGCGATGAATCTGAATGCAGAGCGTTTCAATACTTTGCTGACGATCAACAAATTTACTGTCAGTGCAACATTCACCGTTGAGCCAGTAAATTTTGAAGAAGCTGCAGCCGCAATTCAACAACAGCGAGATCAAGAGGTGTAGCATGGGCGCTTTCCGCAACGAGTTTATTTGGAACGTCACAAGCAGTCTTTCGACTTGTCCTAACTGTGCGAGCGATGTGATCAAGGTGCGGCAGCATCGCAGTGCAGAGGAAGGTGCCTGGGAGGACGGCGACCTTGTAGAGTGCCAGTGCTGCTCTCACGAAGGCGTGGTGGAGCTTTACGCAGGAGAAGGTTGTCCACCAGCAGAACGTTCAGCACGCGTTGAATGGGATGCGACAGACTCCATCGGTGATCCTCAACAGTAAATTTAGGTATAGATACATATGAAAGCCGTAAAGAAATACACATTAATCATTTCCCTTGTTATCATCCTGGGGCTATTATATGTATTGGATATGGCATATTATTTGGCAGGGGTGAGTAAATGAATATTGTAATTCTTTATGGTGAGAATATCAGCGATGACGACATCGAAGTTGCCGTTGATGTTTACGGTATCGATGAGGTGAAACGTGTTGAAGAAATTAATGGCTCAAATCTTAATGAGATTGCCAAAGAAGCTGGTTGCCCTTCGGAAGAGATTTTGGTGGTTACTAACGATGACCTGTCTTCTATGGATTGTTTGCGCCGCATCTTCACCGATTGCCAATACCTTCATTCTGTTCAGTCAGTAAACAAATTGAGAAAGGCATACGCTGACCAATTTCCTTGCTGATAGTTCACCAGTTATATTGCTTTAAACTGAGTTTTACTATATTAATATACAACGCCAGATTTCTGGCGTTTATTTACCGCACCCTGAAAGGATATATCCATGCAACAATATAACAAAGCCGTATCAGGAGGATTAAATGTCAATTGAACATGACAATCTTCCAGAGGATACAGGTGATGAATTTGGTGCAATCTTTGACGAAATTCAAGACGCTGGTGTTTCAGAAGAGATGCAAGCGGCAGAGCAGCAAGGCACCAGAGCTAAAATCAGCCTCCAGCATAAGGCTGTTGAGAAAGATGCAGAGCGCATGGAATGCTACGGTGAAGAAGACTTGGTTGAAAGAGCACGCTTGCTCGCCTCACTTCAGGTAATCAAGTTCCCTCATTATAAACCGACGAAAGATGATTTTGTTCTTCAGGCGGACCGGACGAGTGACATGAACCGTTATGCGGTTTTCGACGCGTTGTTTGATAAGGGAAGCGGCATTGTCCCATTCCCTCACAAAGATACTTTTCGTGGACGCTTAGTCGACCATCGCGGAGAAACATTCACCGACCGGACGTTGGAAGTCACAGAGATAGTTGCCGCTGTCGACGCAGCAGGCCTGTCCAACCCAAACTCACGTCAGGTCGCTCAATCCTATAAGGAATGGGCCATGCGTTATCAGCGCGACGACCTGATGGACTTCTTCTACAAGAAGCTGCCTGAATGGGACGGTACTGCGCGCATTGAAAAATACCTTATCGAGCTATTCCGACCGTTCGATACAGAGTTAAACCGACAAATCGGTGTGTATTTTTGGCTATCGCTCTATAACCGCCTGACCAATCCTGGCTGTCAAGCGCCAATCTCCATTGCGCTAATCGGCGGCCAGAACGCAGGGAAGAGTTATTTTAGTAAGCTACTTTGCGAAGCTATTATGAACGACCGCCACGCAACACCGATTCCGTTGAACTTGGCCGCGCAAAACTTCAACCCGTTCTTGCGAGCTATTACGGGTCGCTCAATTATCGCGAACGTTGGCGAGATGACAGGCTTTAAAAAGGCTGACATCGAAAACATGAAAGCATTCCTGACTAAGACGGAAGATGACCTGGACTTCAAATTTGAAGACACGCAGGTTAAACCACGCCAGTGGATTGCTATCATGGACGGCAACGAATACGCAGGCATGCAGCGTGACGATACGGGCAACCGTCGTGTTTACCCTATCTTTGTTGGCCAACTTGCTGACAAGGACGGGCAACCGAACTGGTCTAAAGACTTCCAAGCTGACCTTTCCACTTTGAAAGAAGATGTTTGGCAGCTTATGGCTGAGTGCGCTGCGTGGATGGAGAAGCACGGCGAAGCAGGTTACAACGCCTTTGTTGGTGAAACGTCTCGTATGCTTACTGAGTTCAGCAAGAATGAAATGGAACGCGCTCGCGGCGTTATCCGTGATGAGATGGTCGACAACGACCTTGTTGAAGTCGTCATTACCGCGCCTTATGACCGACATCACAGCGGACGCTGGCACATCACCAGTGGTGCAATCGCTATGGGATTCAGAGCTAAGTGCGGCAAGTCGCCTTTCTCACGCACCCTTGCGCCGCACATGTCGAAGCTTGGATTTGAGCCTGCCACCTATCGCAACCAGCGCGGCTACTTCACGCCACTGATTAAGAATGAAGCAGGGGAATACATTTCTGACTTGATGACTATCTTGGCGTATCTTATCCGCGACGAGTCTGACCCTGAAGATATTGAATTCTTGAAGAAGGTTATTGAGCGCAAACGTTCTTTAGGAAGAGATAAGGATGAATTCTGATGAATAAAGCAATCAACATCGCTAAATTCTTTCAAAATCTCGGTGAACTGAACAAAGATAGTGACGTTCACGGAGAAGAAATGAACCGGATGATTTCAACCGTGTTGCGTGGTTTTGGGTACGATAAGGACTCCATCACCTGTAAACGCACGAAGCTTGTCGATGAGACATACCTTTACTACGTTGAATTGCGCGTAGGCAAAGATTTGATGATCATCGACCCTAAATTGGAAGGGGCACATTGTTTTGGCGCTCACCCTCGTGCAAGTGAATTCAAGGGGCGCGGTCGCAACCGACTCCAGAAGCTTGATGATGCAGGCGACCTGAACATCTCAATGTTCCTCAAAGAGTTCCTTGCGCTGCCGAAGGTCGCATCTTCAACGGGTCGTGATGACCTGTGCAAGATTGGATTCAGAACTAAAGATTTGCGCAATGCGCTACGCAAGAAGGGATTTGTACCTTCTTATGATAACGTCGCCGCGCTGATGGCTTCCATGGAGGAAGCTGAAGCAATGGACAAGGTGCGCGGCTATTTCCTGAATACAGGCTACACAATGTATGAGTGGCACACCAAAGGATTGACTGTCGCCGACTTCATCTATTCATTAGAGCAGAAGTATGTACGCAATATGCAGGCCACAGGATAATTATCATCAAAATATTTGCTTTTCTGACGAGGTGATATTATGATTAATTTAGACAGGATTGAGTTAGCACTTAGTACCTTAATCAAATATTACCAGTTTGCTTTTAAGGCTAGTTTGTTTGGCTTGTTCAATCCTCATCAAGCAACAAAGGCGCGAAGCAATGCCAACCGCCTGCGCTGCACTGGTATAGTCATCCACGACCGGATATTGACAGAGGGTAGATTCAGCCATGAATACACAAGGGAGAATAACAAAGCAACGTAGGGCTTTACAAGTCCTCATCTACTACCTGACACGCCTTTATCCAACGGCGCACGAGCAGAATCCATCAACGGGTCACCTGTTTAAGCGCCGTAACCTTTCGTTGAAAACATTCGCTTTAATCCAATACGACCGCTACCTGGACGGGCGCTACTGCGGCCCGAAGGACTCACTATGATTACTACATACAAAGTATTCTTTGTCAAATGCACATCATCAATTGATGACCAGTTTACTGCTGGAAAGAATTATCCCGTGATTTCTGAGTCAAGGTTAGATATAATCTTGAACGATCATGAAATATATGAGCCGATGCCAGCAACTGCGTTTGATGTTATCGGTCACGTTCGGATTAAGACGAATGTTGAAACGATGCATGACCCGTTGTTCAAGAAGCAAATTAAGAATGCCATGCAAGACTTTTGCGCGGCAATGTTTAAATACTATAAGTGAGTTGAAGATGAGCAAGAAAACTCTTAAGGTTGGCGACCGTATCCGTTGGGTGTCAGGACAAAATATGCGCGCAGGCACCATCCTTGAGCTTGATCAGTACCTTACCGATTCGCGCGGTCGCAATCATTACCGTGTTCGAATCGATACGGTAAAAGAAGATGACAAGTCACTTGTTGGTGAAGTGGTCATCGTTACTCCACGTCAAATTAAGGCGGCTTGTGAAGTATGAATAAATTTCAGTTCAACGATAACAAGATTAGTAAAGCGGACGCAATCAAGCAGCTTCGTCGCGTACTTGAAGCCAGCGGCCATACGAAAGAGCGTGCACGCGTCTTAGCCAAAGAACATTATAAACGTTTTGTGTCAAAAACCAGAGGTTAATTATGATCATCCATCGCCCTTTAATGTTAAGTAAATCAGAAGCCGCAATTATTTTAGCGGCAGCAAGTCAATGTAACGTCCCAATTTCATTAAGGATGAAAATAAATAAATTTATCGACAACGAGTTTGCAAATGTTGAGTCATTCGATATTGTACCGCCAACCAAAAGGCATGTTGAAAGACTTGTACACCATCAATCACGTTGCGTAAGAGTTCCTATTCAAACTTATGCTGATAAAAAGCCGCGCCTTAAGCCAATTGACATATTTGACATAAAGAACGGCGATTCAATCATAAGCAAGGACGCGGAAGATGGCGCAATTCCTGTCAATGGACGAGTTATTTACGTGTCGCATGACGCTGACCAGACTTTAATTCAATGGGTAAGTTTTGATAAAACTAGCGGCGGAAAGTATCGCTACTATGGCGACGAGCGATTCACCACTAAATTTTATAAGGTACTCGACCAT 3 | -------------------------------------------------------------------------------- /tests/testdata/genome_fasta/MH816966.1_1-68472.fa: -------------------------------------------------------------------------------- 1 | >MH816966.1 2 | CTATCGTTACTCGCTTTACCCTCGAAAACGCAACCGCCGAAGTCCAGGGCGTTACGCTTACTTACGGCGAAATTCTCGCGAAATTCTCCGGCGTTCGCTTAGGCGAAGAAATTAACGACGCGACGGTAATCGAGCAACTCGCTGCTTCTCGCTTAGAGCGCGACGAAAACGGATTCTTCGAAGTCGATGCGGAATTAAATTTATGCGGTAAAACGGCGTTTATTAACGAGTTCGAACTCGCCGTTTTAGTCAATTACGATAGCAAAGCTTATGCCTTCGCCCTCGAATTAATCGAAGACGACGAAGAGTAAGAGAGGATTTTTAGAGCGTCGTGCGCGGCGCTTTAATAAAATTCTTTCGCGCCTAGCGCCCTAACAAATAGGAGTTTATTATGGTTAGCTTAAATCGCTTTTCTACTAGCGGCGACGTTATCGCAACTAAGACCGCCGACCTCGTTGCATTTTATAATGCAAATTCCGGCTCTAAGCCGATTAAGAAATTTGCGGACCGGCGGACCGCCGAGACTCGCGTAATCGCGCTAATCGAGTCCTTAAACGCGCTCGATGAGCCGTCCAACGAATCGCCCATCCCCGACGCGAAGTCGCGTGAGGAAGTGTCCAGCGATGTAAAAACGCATAAGGCGCGTGCGGTCGTTAAAAAGGCCGAGCCGACTCAGGAAGAACTCGACGCGATGACCGACGAAGAGTATGAAGCATTCGTTAAAAGCGGCCTAAACGATAGTGCAAATTGCGTAGTGCAAAATGGAACTCCTTCCCATCGCCGTTCGAATAGCGAAGGTATTGCAAAAAGTTGGGATAATAAGGAAGTGGCGCAAAAGCGTCTCACCCGTAACGGCGTCATGGTCGAGGGAGTAGGCGAGTTCAAATCGGTCCGCGTAGCGTTCGCCGCGCTGGGATTACCGGATAGCAAGCACATTCGCTTCCGCATGAAACTTAAGGAAGCTGGACGCTTGAACTTTGAGTTCGGCAACAAGTCCTACACCTTCCAGATCATCTAATCGAATGGCGGCCCTTCGGGGTCGCTTTTCATAGTGCAAATTGGTGGCTTATGAATACGCTTATTCTTATCGCTACGTTGTCCATCGGAAGCGGTCGCACCTTATCCCTTTACGACCATAGTGCAAATTGCGTTTACCCAACGCGCGTTGCGGCGATAGTTAATAGTGCAAATCGAATGCTATTCGAGACTTGTTGGCGGGTTGATAACGAGAAAGGACGCATCGTCTTAGGTTATAGTGCAAATCTGCTGGTGGAGTCGTTCGACTGGACGGCTGAAGGTCGTAAATTGTTACGTAAAGTGACTAAAAGATGACTTATAATAATACACTTTCTAACGCGTTTATGGTTGCAACCTTCCCAGTCGTATTACCGATGGCCCTAGAAGTGGAGAAAACGTGTTCTAGGGCCATTTTATAGTGCAAATTGGCTAGTGGCGGGAGAATTGCTCACCCTCTTTGGCCGCCTCTCCAAAATCCTTGTAGAAATCATCCATGGAACGGCCCATTTTACTATTGCCGTTTTCATCAATCATTGTGATGCCGTAGATGATATTCAGTTCACGAATGGCATTAAGCTTGGCTGACGCCGCGACTTCTGGATCACGCACAAGCTTCACTAAATTGTGGATGGAACTCTTTACGCTCCACAATTCTTTCAATGGCATCTCTTCCATACGCTTTTTGTAGCGCATCTTGTAGTACGGATTGCGCTGAGTGCAGAGGATTCGCTGGCCAGTGTAGTTATCGGTCGCAACCTCCATGCCAAATACTAGTGCAAAAGCTGCGCGCATGTCATGTCCCTGAATAACAAGGTCAATGAACTCATCGAATAACGCCTGATTATGCTCTGCAAATCGTGGGTCTTCAAAGTCTTCAGGCATTGCTACATAATCTTGACTCATAGTGCAAATCCCATAGTGCAAATTAATAGTGTGAATTATACAATGATTGAACATTATATTCAAGTGCAGATTGATGTTCAAATTGGCTGTAAACGTACATAAATCATAGTGCTGAATGAATATCGGACCGTGGTGCGTGGTGTACTGTTTGATACGTATAAAAGAAATCCATCCCTTTCGCCGCTTGTTATGCAAATCAATGACTTAGCCGCAGCTGGCTGGTTGAAGCGTATCATGACGTATCATCCGTATCGCCGCAAGTCTTTGTTTTTATTTATATCTTACGGATAATACGTATAAATATAAGTTTAGTATAAGTATGAGGATGTAGAAAAAAATTAATTTAAATTAATTCAAAATGGAGTTAATTGTTTTTTTCAAAGTTGTATAAAGTATAGCGGCGACGCGTATCATCCGTATCATCCGTAAGATGTACCACTGAACCCAGTCGCGGCGCACCATAGAAGTGTGTGGAGTGAACTACGGATAGGTCCAAATCTTACGTCATTATACGCTTAAATTCTATGCGTAAGGTTAGCCAGCTAACTATATCTCCTTTTTAATTTCAAGCGGCAATCCCAGAGACGGCGCAGCCTACAGGCCCACACACCACGGTACACGCCCCAAAACCTAGTGATTCCCTCTCCAATACCACAACACCACAGTACAATATTCTTCCAAATTCGCACACATATTCAAGACACAAAAATCACGTCACAATACTCACACCCCCACCATCCTCTAATAGATTTACACAAATCAATCGCTTTATCCGATAATAAAGACTCACAAGCAACAAGCAAACAAAAAGGGCCAATCGGCCCTCTTAACATTAATCACTATTAAAATATAAAATTCTTCACTCCAAGCCTTTTAAATTCCTTCCTTATCATCATATTAAACTTCTTCAATTTAGTTTTATTCATCCTTAAAGGATTGTAAGTGAGTACCTCTTCTATTACTTCCTTACGCATCTTTGAGCGCATATTAGTTAAGTAATAATTCTTGAACATATTAATAAGGTGATTGGCTTCCAGCTTAAGCTCAATTACTTCTTCCGATTCATCAAGCTCAAGTAATCCTTTTTGCGTAAGAATATCTCTTAATATATTCTGGCACTTCTTGCAATCACCTTTACCTAAAAGCGAATCGATATAATCGCCGCTGACGCGCTCATCACCGAAATATGTTGCGCGACCGCAAAGGCTTTGCACTTCTCCTTCGTCAAAGTAATGCGCACGATGGCCCCACTTCGGTATGGCCCAACCAGCGGCGATAAGCTTGTTACCCATCACCCCTCCTTAACGACGCGATAAGCAATGATGTCGCTGCCCTTTAACGCGCCTATATGGCCCCAGTGAAGATGGTCAGAGAGTCTTGACAGTACTTTATCTCCTCCATTGCGCAGCTTGTATTCAACCATCTTCCCAGGCACCGGATTATTGCCACCAAACCACACGGTCCACGCTTCCTCCTTCGGCGCATCAACGTCCACGCCTATAGTAGCAACAACGTCATGCAACTGCTTAACGAGCGCCGATGCATCACGGACCTGCGAGCGTAATGCAACCAACTCGCGTTGCGCTTCACTGTATTTCGCTTCCAGCGCGGCGTAGTCCTCATATGCAACAAAACGTCCTTCGTGACTTTCTGGAACAGGAGTGATGTCGAAATCTTCTGTCGCCACATCGTATGTCAGGTCATAACGTTGTATCATTTAACTTCTCCAAAATTTCAATAGCGATTTGCGTTTGCTTCTCAAGAGCAAGACGCAACATGTCAATTTGCAAGTCACGATGGGCCAGTTCAGCAGCGATGTCCGCCTTGCTGTAAAGTCCTTCATGCGTCATGGCAAAGATGTGGCGCGTATAATAGCCGCCCTCGTCGAGTTGCTCGATGTCACGCTGCCCGACTGCGTATTGCTTATCGGTCATGATGCATCCTTAGTTGGATAGAATTTAGGGTTGTTCTTATAGAATGCCTTGAGCCATGCCTTTGCTTCGGCGATGCTGCTGAACTCTTCCTTGGAGAGTCCGGTGCGGTCCTCGCCTGCGACCTTGAAATGGATGCGCACCTTGAGCCGAAGGTTGGTTGCTCTCGCGTAGTGGCCTTCATAGCCGTCATGGTTGAGACTTACTATCGCGGCGAGCATCTCGCAATCTTCTTTATCGGGATTGCCGCTGTAACAAGTCGGCCAGCCGCGACGTTGGAATGACCTGTATTGGCCTGTTGGCTCAGGGTCCACGTACCATTTCAATTTCATTCGAATTTCTCCGTTTCTTTAATGCACTGTAACACTTCTTCAAGGCCCACTTCAACTTGAACATCGCTGTGACGCATCTCATCAATGAAGTCATCTTCACAGCGTATCGGGTTGTGCATCGTTAATATTTCAAATACCTTGACGTGACTTACCAAAGGCAGAAGGTGCTTCCTTACTAGTTTGATCAAAACATCGTGGGAGTCTTTGTCTTTTAATTCTGATTCAATATTGTTTTCTTCACAGAAAAGTGACACAATGTCGCCATCCATGAATCCGAACTTAGATGCAAGCGAACGCGCCTGCAAGTGAAGAGTTTTCATTTGACCTTCTCCAATTGGAATCTTGCTTCTGGAAAGCCTGCGACAAACATGTCACGGCCCTCGACATCACGCTTCACGAACCAACGCATTCCGCTGACTACCGTGAAGACAATTTGCCTTCCATCAATAATAAGTCCTTTTGCCTCATAAAGCAAATAAGTCTGACCGACTTTGAAGCTTAACATATCCTTGCTTGTGCTGGTGCACTTGAGCCGCCACTGGGTGAGATTTGATTCGCTTGCTTCGATGTCAACAACCTTACCGCGCAGCGACGATGTGCGCTGAAGCTCTTGCATTTGCTCGTCGAACGTGAGTTCACGGCCTTCTTGCTCTTCCATTATTCCTCCACGACGCGATAAGCAATGATGTCATAAACGCTTCCGTTGTGCTGCCACAGCCATCCTTCTGAATTGGATGAATAAGAAGACTTCTCTTCATTCCTCCACATCAACATGACCTTCTTACCAGGCACCGGATTCTTGCCGCCAGCCCATTCAATCCAACCTTCATGAGATTCTTCGGGCTTCTTCAAGTGCTCATGCTTCTCACCGATGTGGGCGACAGGTTGACGGCTTCCGTAATAGAATGCCAACGCAACGTCGTAGGATGGATGGGTGTTGGATAAGCAAATGTCATCACACCAAAGCTCCATGGTGCGCGACTTAAGCGTCATCATATTAGTATACCACTCGATGGTGTAGTGGTCGTTAAGGTTGCCGACAATATAGAAGTTGCGGCAAAAGTGCGCAGCGTCATCCGACTTCTCGCGGCTATAGCTTCTGATTGCGCCTGCCTTTACAGCCATTTCCAATACTGCTTCGAGTTGTTCGATTTTCATTTCTTTACTCCTAGTTCAATTTGATAGCCGATTGACAATTCATTTTCGCCGATGTTGAATGCATCAACGGGCTGCGACATCACCGCCTTTAAATATACCTTCTTGCGCCGCTTTGCCTTGTACAAACAACGGTCGCCGCTGCGGTTGTAGATGTTAAGCCAGGTGCGCTTACTGATCTTATAAGGCACATGCGGCTTGATGAATAATAAACGGGCCTTAAGATTGGATGTCATAGTATTCACTTCCCTCCAAACGTTGCAACACGGATGTCGCGACGCGAAAAAGTCAGAACAGTGTCAAGGCTGCCAGCACAGGTTATGAATATATCGTCTGCAACAAGGTCATACCCGCCGACGCAAAGAATAAATGTGTCATCGCTATTCTTTAATAGCATGATTGCTGCAACACCGTCCTTTTTATTCTTAAAGAAGAATACTGGCTCACCGCCTTCTTGCGTCTCCTTGAACTCTTTAATTGCACCACAGTTCACGGCTTCTTGCAAAGCATTCAAAACCTTTTTCTTCATTGCTTCGTTACTCATAATCAATTCTCCTTTGCTTGATGAACTAAGTATAATACAGGCAAATAAAAAGGCAAGCATTTAGCTCACCTTTTTGAATTAAATATTCTTCGCCTCTTCGTGGAGGCCGACCGACCTTAGTTTTCGTCGCAAGTAAGCTTTCTTTTCACTCTCCCGCCCGGCTGGAGTCACGCGCCAGCGTAATGTGTTCTCCAGATTCTTGCGTCGGTTGTGCTTGTCGAGTAGCTCTACCAGTGCCTTTGCGTCGTCGAGTGTTAATGCCACGGGCCGCGACCCATTAACGGCTTGTCGAAGCTTCCGCGCGGCAACGGCTAACTTAGTCATCGGACCTTTGTTCACGGCAACTCCTTATTCATAGGCGTGATAGACAACACCTTTACGTCTGTGATGTCACGGTTGTATTCGCGCTTGATTTGTAGAATCTGGGATTGGATGCGCGCGATAAAGTGCCACGTGATGCCTTCCTTAACGTTAATCCAGGCCGCAAGCTGAATTGAATCGATTTCACTTCTCAATGTCATCGGTCTGTAAGCAGCACTTTGTGCACCATAAGCAGGCTGTGTATCGTAAGCTGAATACTTGAATGACACCAAGAACATTCTTTCTTCAAGCTGACTCTCGCTATTAGGATTCTTATCACAATTAGCCATGTGTCGCAAGAACTCTTCATGCGGAAGATGCATCACATCGTGACAATACGGACAACGTTTCATTCTCATTTTACACCTCATGCAAGAAAGACAAAGATTTGATGCAGACTATTTCTTTTCCAGATACTTCCTTTATTGTATCCAGCAGGCTTTCATACGCCTTTTTGGTGATCACCATTTCTTTCGTGGTAACGATTCCTGTTGCGCCTGAGCCGTCGTCTGCTTCCGCGTGATAATGATAATAGTAACGCGTCGAATTTTCAGGATTAGCTTCACAAACGTTAACGTGATGTAAATATTCTTCAACAGGAAGTCGCATAGTTAACAAGCAATGTGGGCAGCGTTGCACCTTCATTTTGCATACTCCATAGCATATTGCTGCAGCTTAAACGCAGCCTTTTGTAATTGTTTGTGACGTTCAAATAACGTCTCACGCTTTTCAGCAGGGCAATCGGCGCGAAGCATTGTTATGGCAACGCTTGACATAGCATTCAATAAAAACTGAAAACGAGACACCATTCTCAGCTCATTACGCTTGTTGAAAGACAGCTTACCCAGCGCGGCATTCATAATTGCACCTCGACACACGATTCACTAGCCTTGAATCCCCAGCCTTCCAGACCGACTTCGCCGCAGTAACGCGCCATTGCACGCTCATCCAAGAACCAACCGTGATATTGCTCTATGTACTTTGGTTTTTCTGAATAACAGTGAATGACTCCGTCGTCATCAATGGCCACGTAACGCGTGCCAGGCGCGACTGGTACAACTACGTTTGGGTGGACGATTGGCCAAGGCTTGATGTGTACGGCTGTGTCTAACTTAACGTTTGGCACCCTTGAAAGGTCTTTGTAAGCGCCCTCGTCCATTCCTAAGTAAATCATAATTCACCTCGCTTGTTAGTCTTGATGAAAAGAGTATAAGTATTGATAAAAGAAAAGGCAAGCATTTAGCTCACCTTTTTGATATTCATTTTACATAGTGGAGTAGGTCAATCTCTATCTCGTGCCTTGTCCTTGTTATCTTTGTATCACCCGTCCTGTGGGAGACTTGATGGAAGAAAGAGTCTTTGTGAGCGCATCGTTCAAACATCACGCTGGCAAATCTGCAGCCGCATATTGCATCAAGCTTTGCTCCGTTAGACAAAAGGTTGAATGTCAATACAGTGTTATCCATCCTTGCATTTTGCTTGATGCAGGACTTTAAGAAGGCGTAAGAATCGGCAAATGATTTGTGCCTTTTACAAATATCTTTAACCTTTTCACGCTCATGCGCGGCGAGTATCTGATCACGTGTCATCACTGCACCTCTGTTATTCCGGTAATGCGAACGATTACGGTGTCATCTAAATTGAACTGCTGCCGCGCGACGCGCTTGATGTCGTCCTTAAGGTCCGCAATCAACTCCCTTGTTAACACTGTACGCTCTGAGACGTCATATTGAACGTCAAAGGTATACTCGCCATAAAATACCGCGCCATTGGGAAGTTGTACGACATAGAATGCCATGTACATTGCATTGATATAATCTTCCATCATACATTCTCCACGGGTCGACGAATGAGTTTGCGTAATCCTTCGGGCCAGACCTTCTTGATGACGGCCTTTGCTGGGCTGGATGAAAGCTTCTTCAGCTTCAATAGGACACATCCTTCATCATCGTTCGGTTGCACCTGGATAACGACTCGCGCTTGTCGGTCGATGACCATGACATCCCCAATGCGAATGTCTTTTACCAACACGCCCATCTCCTTCGTGCCGGATACGCCATTGATGTGATCAAAACCTTTTCGCAGCGGTTTCATTATTTCTTCTCCTGCCATTTCTCTGACACGCTTCTTAATCTCTGCGCCAAACAACACTTCGTCTTTAACATGAGCCATGGTCGAGTACCTTATAGAATTTAGTGGTGAATCGCTCATCGCCATAGTAGCGATACTTGCCGCCGCCAGTGTTATCAAACCTTACCCATTGAATTAAAGTCTGGTCAGCGTCGTGCGACACGTAAATCACCCGGCCATTAACAGGAATTGCGCCCTCTTCCGCGTCCTTGCTTATGATTGAATCGCCGTTCTTGATGTCAAATATGTCAATCGGCTTAAGGCGCGGCTTTTTATCAACATAAGTTTGAATAGGAACTCTTACGCAACGTGATTGATGATGGACAAGTCTTTCAACATGCCTTTTGGTTGGCGGTAAAATCTCGAATGACTCAACGCCTGCAAACTCGCTGTCGATAAATTTATTTATTTTCATCCTTAATGGAATTGGGACGTTACATTGACTTGTTGCTGCTAAAATAATTGCTGCTTCTGTTTTACTTAACATTAAAGGGCGATGAATGATCATAATTAACCTCTGATTTGTGACACAAAACGTTTATAATGTTCTTTGGCTAAGACGCGTGCGCGCTCTTTCGTATGGCCGCTGGCTTCAAGTACGCGACGAAGCTGCTTGATTGCGTCTGCTTTACTAACCTTGTTATCGTTAAACTGAAATTTATTCATGCTTCACAAGCCGCCTTAATTTGACGTGGAGTAACGATGACTACTTCACCAACCAGTGACTTGTCATCTTCTTTTACCGTATCGATTCGAACGCGATAGTGATTGCGACCGCGTGAATCAGTAAGGTATTGATCCAGCTCAAGGATGGTGCCTGCGCGCATATTCTGTCCTGACATCCAACGGATACGGTCGCCAGCCTTAAGAGTTTTCTTTCTCATCTTCAACTCACTTATAGTATTTAAACATAGCCGCGCAAAAATCCTGCATGGCATTCTTAATTTGCTTCTTGAACAACGGGTCATGCATCGTTTCAACATTCGTCTTAATCCGAACGTGACCGATAACATCAAACGCAGTTGCTGGCATCGGCTCATAGATTTCATGATCGTTCAAGATTATATCTAGTCTTGACTCAGAAATCACGGGATAATTCTTTCCAGCAGTAAACTGGTCATCAATCGATAACGTGCACTTGACAAAGAATACTTTGTATGTAGTAATCATAGTGAGTCCTTCGGGCCGCAGTAGCGCCCGTCCAGGTAGCGGTCGTATTGGATTAAAGCGAATGTTTTCAACGAAAGGTTACGGCGCTTAAACAGGTGACCAGTTGATGGATTCTGCTCGTGCGCCGTTGGATAAAGGCGTGTCAGGTAGTGGATGAGGACTTGTAAAGCTCTACGTTGCTTTGTTATTCTCCCTTGTGTATTCATGGTTGAATCTACCCTCTGTCAATATCCGGTCGTGGATTACTATACCAGTACAGCGCAGGCGGTTGGCATTGCTTCGCGCCTTTGCTGCTTGATGAGGATTGAACAAGCCAAACAAACTAGCCTTAAAGGCAAACTGGTAATATTTGATTAAAGTACTAAGTGCTAACTCAATCCTGTCTAAATTAATCATAATATCACCTCGTCAGAAAAGCAAATATTTTGATGATAATTATCCTGTGGCCTGCATATTGCGTACATACTTCTGCTCTAATGAATAGATGAAGTCGGCGACCGTCAATCCTTTTGTGTGCCACTCATACATTGTGTAGCCTGTATTCAGGAAATAGCCGCGCACCTTGTCCATTGCTTCAGCTTCCTCCATGGAAGCCATCAGCGCGGCGACGTTATCATAAGAAGGCACAAATCCCTTCTTGCGTAGCGCATTGCGCAAATCTTTAGTTCTGAATCCAATCTTGCACAGGTCATCACGGCCCGTTGAAGATGCAACCTTCGGCAGTGCAAGGAACTCTTTGAGGAACATCGAGATGTTCAGGTCGCCTGCATCATCAAGCTTCTGGAGTCGGTTGCGACCGCGACCCTTGAATTCACTTGCACGAGGGTGAGCGCCAAAACAATGCGCCCCTTCCAATTTAGGGTCGATGATCATCAAATCTTTGCCTACGCGCAATTCAACGTAGTAAAGGTATGTCTCATCGACAAGCTTCGTGCGTTTACAGGTGATGGAGTCCTTATCGTACCCAAAACCACGCAACACGGTTGAAATCATCCGGTTCATTTCTTCTCCATGAACGTCACTCTCTTTGTTCAGTTCACCGAGATGTTGAAAGAATTTAGCGATGTTGATTGCTTTATTCATCAGAATTCATCCTTATCTCTTCCTAAAGAACGTTTGCGTTCAATAACCTTCTTCAAGAATTCAATATCTTCAGGGTCAGACTCGTCGCGGATAAGATACGCTAAGATAGTCATCAAATCAGAAATGTATTCCCCTGCTTCATTCTTAATCAGCGGCGTAAAGTAACCACGCTGGTTGCGATAGGTTGCAGGCTCAAATCCAAGCTTCGACATGTGCGGCGCAAGGGTACGTGAGAAAGGCGACTTGCCGCACTTAGCTCTGAATCCCATAGCGATTGCACCACTGGTGATGTGCCAGCGTCCGCTGTGATGTCGGTCATAAGGCGCGGTGATGACGACTTCAACAAGGTCGTTGTCGACCATCTCGTCACGGATAACGCCGCGAGCGCGTTCCATTTCGTTCTTGCTGAACTCAGTAAGCATACGAGATGTCTCACCGACAAAGGCGTTATAACCTGCTTCGCCGTGCTTCTCCATCCACGCAGCGCACTCAGCCATCAGCTGCCAAACGTCTTCTTTCAAAGTTGAAAGGTCAGCTTGGAAGTCTTTAGACCAGTTCGGTTGCCCGTCCTTGTCGGCGAGTTGGCCAACAAAGATAGGATACACACGACGGTTGCCTGTATCGTCACGTTGCATGCCTGCGTATTCGTTGCCGTCCATGATAGCAATCCACTGGCGTGGTTTAACCTGCGTGTCTTCAAATTTGAAGTCCAGGTCATCTTCCGTCTTAGTCAGGAATGCTTTCATGTTTTCGATGTCGGCCTTTTTAAAGCCTGTCATCTCACCAACGTTCGCGATAATTGAGCGACCCGTAATAGCTCGCAAGAACGGGTTGAAGTTCTGCGCGGCCAAGTTCAACGGAATCGGTGTTGCGTGGCGGTCGTTCATAATAGCTTCGCAAAGTAGCTTACTAAAATAACTCTTCCCTGCGTTCTGGCCGCCGATGAGCGCAATGGAGATTGGCGCTTGACAGCCAGGGTTGGTCAGGCGGTTATAGAGCGATAGCCAAAAATACACACCGATTTGTCGGTTTAACTCTGTATCGAACGGTCGGAATAGCTCGATAAGGTATTTCTCGATGCGCGCAGTGCCGTCCCATTCAGGAAGCTTCTTGTAGAAGAAGTCCATCAGGTCGTCGCGCTGATAACGCATGGCCCATTCCTTATAGGATTGAGCGACCTGACGTGAGTTTGGGTTGGACAGACCTGCTGCGTCGACAGCGGCAACTATCTCTGTGACTTCCAATGTACGGTCGGTGAATGTTTCGCCGCGATGGTCGACTAAGCGTCCACGAAAAGTATCTTTGTGAGGGAATGGGACAATGCCGCTTCCCTTATCAAACAACGCGTCGAAAACCGCATAACGGTTCATGTCACTCGTCCGGTCCGCCTGAAGAACAAAATCATCTTTCGTCGGTTTGTAGTGAGGGAACTTGATTACCTGAAGTGAGGCGAGCAAACGTGCTCTTTCAACCAAGTCTTCTTCGCCGTAGCACTCCATGCGCTCTGCATCTTTCTCAACAGCCTTATGCTGGAGGCTGATTTTAGCTCTGGTGCCTTGCTGCTCTGCCGCTTGCATCTCTTCTGACACACCAGCGTCTTGAATTTCGTCAAAGATTGCACCAAATTCATCACCTGTATCCTCTGGAAGATTGTCATGTTCAATTGACATTTAATCCTCCTGATACGGCTTTGTTATATTGTTGCATGGATATATCCTTTCAGGGTGCGGTAAATAAACGCCAGAAATCTGGCGTTGTATATTAATATAGTAAAACTCAGTTTAAAGCAATATAACTGGTGAACTATCAGCAAGGAAATTGGTCAGCGTATGCCTTTCTCAATTTGTTTACTGACTGAACAGAATGAAGGTATTGGCAATCGGTGAAGATGCGGCGCAAACAATCCATAGAAGACAGGTCATCGTTAGTAACCACCAGAATCTCTTCCGAAGGGCAACCAGCTTCTTTGGCAATCTCATTAAGATTTGAGCCATTAATTTCTTCAACACGTTTCACCTCATCGATACCGTAAACATCAACGGCAACTTCGATGTCGTCATCGCTGATATTCTCACCATAAAGAATTACAATATTCATTTACTCACCCCTGCCAAATAATGTGCCATATCCAATACATATAATAGCCCCAGGATGATAACAAGGGAAATGATTAATGTGTATTTCTTTACGGCTTTCATATGTATCTATACCTAAATTTACTGTTGAGGATCACCGATGGAGTCTGTCGCATCCCATTCAACGCGTGCTGTACGTTCTGCTGGTGGACAACCTTCTCCGGCGTAAAGCTCCACCACACCTTCGTGAGAGCAGCACTGGCACTCTACAAGGTCGCCGTCCTCCCAGGCACCTTCTTCTGCATTGCGATGCTGCCGCACCTTGATCACATCGCTTGCACAGTTAGGACAAGTCGAAAGACTGCTTGTGACGTTCCAAACGAACTCGTTGCGGAAAGCACCCATGCTACACCTCTTGATCTCGCTGTTGTTGAATCGCGGCTGCAGCTTCTTCAAAATTGACGGGCTCAACGGTAAATGTCGCGCTGACAGTGAAGTTGTTAATCGTCAGCAAAGTATTGAAACGCTCTGCATTCAGATTCATCGCCACGTGCGTCGACACATTAAGGATTGCACCAACGACTTCTTCCACCGCATAGCCTTTAAACAGAGGAAGAATTTCATTGACAAGCTTCAGCTCGTTCTCCACGCGAAGTTTTTGTGCTTCTTCAGTGGTCATCATTTTTGGTTCGTTCATTTTTATTCCTTAACAAATTCAGAGTAGTGTTTGGCCGCAGCCGATTGGTGGTGAGCCATGACACCTTCAAGGGTGGGAAGCTCTACGTGCTTAGGTTCTAACGAATTTAACAGACCTTCAAGCTCGATGTTCAATTCTTCGCTTTGCATAAATCACCTCTGCTTCAGTTCATAAAATGATTATAGTTGCTAGAAAAATAAAAGCAAACTATTTTATGCCACCTGCGCGACGATTTATCATATCAAGTTGATTCTCAATATAAGGCATGACTACTGCTTCAACAAAAGCGGTCCAGCCTTTCTTGCCTTCACCTTTCCGGTGACAGTCGTGAGCGCAACCGAAAACGAATTCATGTTCAGCGCCAGGGATTGGGCCTCGAAAATAAGCGCCGTATGGGTCGCCGTTGGTGTGCTCTTCACCCCAAGGACAGATGATGCGGCATTTACCTGACATGTTTTCAACCACATCGCCATCGGACCCTTCGCCCATCTTATTGCGCGCAAGGATTTGCTGGGCTATTTTATACCAAACAGCATCATATTTGTATTCGTCAACGTCGATTTGAATTTCACGCTTTTGCGGCATAACGACGTGGAAACCGAAGGCTTGGCAAATCTCTTCGATTGTGTAGCGCAAGGAATAGTCTGCATGGACAAGTCGGCAGCGGAACGGGTCGCCGTTCTCATCGACATATTTATAGGGGCCGTCGTGAGTCACACGCTTGTTGTTGATGCACCCAGGAACACGGCCCACGCGCGTCACGTCTTTAATCGTGTTGTCGCCGCCCTTCTTGAGTACCATGTTTACGAAAGACCCAAGGAATGCTTTGAACTGAATAAGATGGTCAATCGGTTCTTTAAAGAAGTACCACAGCTGATGGTTGTTCGGCGAAGTCTCGACGATGACGGTTGGTTTTAGGCGCTCGAAAAAGAATTCCAAATCTAAATCGCCCTTTGACCCTTTACCGTGCCCAATGTCGTCGACCATCATCGCCATGCCATGACCAAAGGCCGATTCCGTGCGCCAGTATCGCATCTCGCCTGTCTTTGGGTTGGGAGACTTACGCATTGAACTTATGCAGGCGTAACCGTTCTGATGTTGCATCAGCGGCTTGCCAAGCTTCCAAGGCTTAGGCCAGAAGCTGCTGTTAATCTTTTTGCCGCGCTCGTCAGTCTGCACTGTTGCTTCAGGCGCAAACACGGTCATGACGCGTTCATCTTCTGGAATGCCTCTTTGGAGTTCCGTCAAAAACTCTTCGATTATTTTTGCTTCTTCTCTTAAACTAGCCATCTTTCTTTCCTTCGGTGATCAATACCTGCAGTATAATATTGAGTGATACAAAGTCAACAATATTTACCATTTAGTTCACAATTTCGATTTACTTTGCTTTATACTATATCTGCAATTATACTATCAGAAAATATTTCCGCACTAACAAAGGTCGCCTGAAATGAACGAAAAAGATACGAAGCAACGCGAACGTGCAACACACGTCGGCATCGTTGAGTCCTTCCTTAATACAAGACTGAATTCAAGTCTTACAATTATGCGATTCCTGGGTCAACCAGACAGAATCAAATTCATCTTTGCCGCAAATCCGGTATCGCTTTACATCCCTGTTGAATCCATGGCGTACCTGGTGCGCGACGAGCAAGGGTGGAAGATACCAAACACGACTGTTTTCTTCAGCCACGTTGACGGTGAGATGTTTGAACGAAAAGAAGATTGCCATTTTATTCCAGTATATCTGGACCTTGAAAGCGTAGTGGAGTTATAATGAACATTCCAGAATTTAATAATGAGCCAGTGATTCAGTTCAACGCGCAACAGATTGATGCCATCGAAAAGGCCGTTGCATGGTACAAGCGATTGCAGGACGGTAAAACGACGAAGCGCGTGTTTTTCATCGCTGGCTATGCAGGAACAGGTAAAACCTCTATTGCGCGTGAGATTGTGCGCCGTTGTGTCGGTGAGTACGGTGCCATTTATATTGCGCCGACCGGAAAGGCCGCCAGCCGATTGAAGCAGAAAGGGTGTCGTGGCGCGAAGACCCTTCACCAGTTCATCTATAACGTGCGCGGCGTAAATGACGACAATGAGCCAATATTTTCGAGAAAGTCAAAGCTGGACGAAAAGCCGCATCTTGTAGTCCTTGATGAAGCTTCAATGGTTGGCGAGTGGGATACAGAGCGCCTTCTTGATCACCGCATCCCTGTGCTGGCATTAGGCGACATTGGACAAGTCCCTCCAGTAAAAGCCGCCGCCTACTTTACTGAAGATGCCGTTGACGTCCTGTTAACCGAAATCATGCGGCAGGGGAAAGAGTCCAACATAATCCGCGCTTCCTTCTTCGTGCGACAGGGCAACCGACTTCCTCCGCGTGAATACGATGACGTAAAGGTGTTGGCTGAATCGCCGCGCGTTACCGCGCTGAAGAAATTCATGGGCGAAGATGATCAAATTATTTGTTCATATAATAGCACTAAAGATAAATGGAATTCATTATTGCGACAAGTGAGCGGACGTATAACGCCAATGCCAGGAATCGGCGAGAAAGTTATTTGCACATTCAACCAACACGGGCCAGGATTCTGTAATGGCGAGCAAGGGATTGTTATTAGTTATGAGCCAGTGCCGGACTTTGAAAGGGATGAAGACGAGTCTAATGAAATCATGTATGTCAATTTGCGCTCGCTTACCGATGGCAAGGATATAAAGGTTAAGATCAATCCTCTTTCCTTCTCTACTGATCAGGAAGTGCGCAAAGAGGCTCAACGCGCTGTTGGAGGTATGGACTATGGCTATGTCATAACGGTGCACAAATCGCAAGGCAGCGAGTGGGACAATGTGTGCGTGCTGGAAGAAATCTTGCGCGGCGTTCCGTATGCCAAGATGATGTACACAGCCATCACCCGCGCTAAGAAGAATCTGACCGTGTACCGTGATTTGAAAGCGCGTTAATGTTGACGTAAATTTACGAAAAATAAAACTGAAAATCAGTTTAATTAAAGTGGCATCGCCGCCAGAGTTTTTAGTTGCTACTGGCGGCGACTGAAGGCATAATTAAGTTATCCCAAACGGGGAATATAAAATAAACTAATTTATTTAAGGACTGTGAATATGGCCGAAGCAATCAAAGTATTATCTAAAGAAGAAAAACAAGCAGCTGCAGCAGAACGTCGTCGCGTGGCTGAAGAAAAACGCCTGGCTAAAAAGAAAGAAGCCGAAGAAAAACGCCAGAAGCGTGAGCAGGAAAAACAAGCCAAGCGTGAAGAAGCTGCGCTGAAACGCAAGCAGGCTGCTGATGAGAAGGCTCAGAAGCGTGCTGAAGAAGCAGCGAAGAAAGCCAAAGAGCGTGCAGAAAAGGCTGCTGCTAAGAAAGCAGAGCGTGAAGCCGCTAAAGCAGCAAAAGAAATCGAAAAGGCAAAGGCTAAAGAAGAAGCCAAGCGCCTGAAAGCTGAACAAGCTGCTGCTAAGAAAGCAGAGCGTGATCAAGCCCGTGCTGCAGCGAAGGCCGAAAAAGAGAAGGCCAAAGAAGAAGCTAAAGCGAAACGCAAGGCAGAGCGTGAAGCTGCTAAGATTGCGGCTAAAGAAGCTGCAGAAAAGCAGAAAGAACAGCGTAAGAAAGAAGCTGAAGAACGTCGCAAAGCCATCGCAGAACGTAAGGCTGCTAAAAAGGCAAACGGTCAGCGTCGTGCAAAAGCAACCCACTTCATCTACACTGGCAATGGCCTGAGCCAGCCGCAAGAGCATTCCACCCGTGGACGCGTTCTGGCGGCGATCAAAGAAGGCGAAGTTGGCGTGGCGCAGTCTATCGATGAGCTGGGCGAAAAAGTTAAAGATCAACTGTTTGGCGCTTCCGTTCGCTCCTACCTGAGCAAGCTGGAAGAGATGGGCCACATCGAGTTTGTCGATGTTGAATCCAACGAAGATGCCGAAGACGGTGATCAAGCGGAATAACCTTAGGACGGTTATGCAGCGGTAATTGACCCACACTTGTTGTGGGTCTTTTTTCATCTGTACTAAATAAAATGACTTGTTGCTGTAAAATAATTTAGCTATTATACTTCTCATATCACCCACAAAGGACAAATGAACATGAAACAACCTGTAATGATTATCGGCGGCGGACTGGCAGGACTTATCACCGCGTGTCACTTCCCGAACTCTGTTGTGTACGAAGCAGGGGAACGAGCGCAACAGCACAAGGCGCTGCTACGCTTTCGCAGCGAAGAAGTAAGCCGTATTACCGGAATCCCTTTTAAGGCCGTGACAGTTGACAAGGCTGTGTATTTTCGCGGCAACTACTATCACGACCATTGCCCAATCAACCTTGCCAATATGTATTCCATGAAGGTCACCAATCAATTTGGCAGCCGTTCAATCATGAAGCTTAAGACTGCAACGCGTTATATTGCGCCTGATGACTTTTATGATCAGCTTGTCGACAAACTGGGTGACCGCATATTCTTTGATACTCCGGTTGATACTCTTTGCGGCTATAGCGAGACGCCAATCATCAACACGTCGCCGCTGCCAGTAATGATGAAGCTTGCTGGGATTGATCAAAAGCTTGATTTCTCATTTGATAAAGCAAACATTCGCGTTTACCGCTTTAAGATTAAACGTAAGTGTGATTTGTATCAGACAATTTACTTCCCTGACTACTCCGTCAGAACTTACCGCGCATCAATTACTGGTGACACGCTTATCATTGAAACAATTCCTTTGGTCAGCGTGAGTGAAGCTGCAGTTGAAGCCGCTGGCGGCATCACTCGTTACCGTGACATGAAGCTGCGCGCAGAAGTCGACGAAGTGTTGACAGCCTTTGGCCTCTCATGGAGTGACATTGCTCTTGAAGAAGTTGAAAAGGTCGACCAGAAATATGGCAAGATTGTCGACATTCCGAAAGACTTGCGACACGCCCTACTCCTGCAGCTGACTATGGATTTGAACGTGTTCAGTGTCGGTCGATTTGCTACCTGGCGCAACATTTTGCTTGATGACGTTGCCCATGACCTTGTTGAAGTTGAAAAACTCATCAAAGCAAATAACTATCAAAAATTTGCTTATATTGCTAATAAATAATTTGCTTTCTGCTTCAATGGGCGTATACTTTAATCATTGAAGCAGAACTCATAGAGGAAACGAAAATGAAACGAATCACTGGAATCGCGCTTGCCGCTACTGCTATTCTCGGCACCATGTATATGGAAGCGACTGAAGCTGCCATCCGTACTTCCGATTCAATCGCTGTTTACGATTGCGAAGCGATGGACGGCAAGACCTCAGCAACGACTGGTGCAAAGATTACCACTTACATCGGTGTGAACGAGCAAGAAGGTCTGAATATTCAGATTCAAGGATTCACAGGGAAAGGTACCAACCGTACTCCGTGGATGCAACGTTTCACTTTCGTCCAACCTCGTTCAACTGGCGACTTTATCAATCTGATTGGTGAAAACCGTTCTGGTGCAGAAATCTTTACATCAATGAGTTCTAATAATGAACCAAAGAAAAGTTTTCAGTTGCTTTATAACGCACAATTCGTTTATCATTGCACCTTCTCTGGTGATCAGCAACTAGTGAATTACCGTTAATAGGATAATTAAAATGAAAGTTGAATTAATTCGATACACCCAAGATGCACTTGACCTTTTGCTGGAAACAAAGAACACGCGCATGACTGGTAAGCCTGTCTCTGAGATGACGGAATCAGAGAAGCAAGAGCATTGGCGCTACATGCTTGATACAATCAAGTCGCCTTTTGACTTTGTGGACTATATCTTTGACATCACCGATGTTTCAAAGAATATGACCCATCAGATGGTGCGCACACGCACAGGCGCATATCAAGAACGCACCAGCCGCGCTCAGGAGTCGTCTGCATTTGATGCGATTCGTCCGAAGGCATTCTCACACCAAAATCCAGAGTTGATTGATCAATGTGAAGCATTTGGGACTGATGAAGAGCACCAGTCTTTACTTCAAAAGCAATACTTAGCAGAGAAGTGGGATGATGCGATGGCGACTATCGATGTTTTGTATCAAGAGCTTCGCGCGGCTGGCGCAGAGATTCAAGATGCACGTGCCGTGTTGCCTTCTAATATGCAAACGCATATCATGGCAAAGTTCAACTTGCGCACGCTGCAACAGATGGCGTCAAACCGCTTGTGCACGCGCACTCAAGGCGAGTATCAAGAAGTATTCCGCGCGATGGTTGCTGAAGTCCTCAAGGTGCACCCGTGGGCAAATCCATTATTACAGCCGCAATGCATCGGTATGGGTAAATGCGCGTTTCCTCGTCATGGCAAAGCCCATTGCCCTTGGTATCGTGATTGGATGGATACCACGGCACAGCAAGAAGAGTTGCGCATCCAGTTTTGGAGTGCGATGCCAATCACCAACAATCCAGTTGCTAAAGATGGAGTATCAAAAGGATGAGCATTAAAAACAGCGAAATCTTAAACGTATTCGACCTTGACGGAACGCTGTTTGATGACCGTTGGCGCTTAGACCGCATCAAGGTGGCAGGTCCGTTGTCAGACTATGATGACTATCACAGCGGTATTGGTTATGATCAGTTCTATCCTCACATTGCATCAGCAGTAGAGTCGGCATCTCTTCGCGGTGAGGCGGTTGAATATTGGACTGCAAGGCCAGAAAAATACAGACAAGTGACTTTTGAACGTCTGGATAATGTTTTTCCTTTTGATGAATTTACAATCAAGATGAGAGACTATGGCGACAAACGTCCATCAACTATTATGAAATCTGCATGGCTATCGCACGCATTGCGGCACGGCGATTATCGAATCATCAATGTATTCGACGACCGACAAGACGTACTCGCGCGGATGCAAGATGAAGCATTGTATTATAATTCCGTTGCTCAAAATAAAATCGCTTTTACATTTAATCTTTGCAAGGCAGGTGAAGTGGTGCAACAATTAGCAATTGATCCAAGCGCAACAGGGCAAGAAGAGACTAAGGCTGTGGAAGTTGAACAATCTCCGGCAACTGCCGCCGATATTCTTGATGCAATGGCAGCAACCTTCCGTGAGCGCAACGCTGTCTATGGTGATAACGCTGTGATGGTAGGTCAGGTTATGCAAGTGCTTTTCCCTAATGGCGTGACGTTGAAAACGCCGGAAGACTACCACATGTGGCATCTGTTCGAGCTTAAGATTGTCAAGCTTACACGCTTCGCAATCAGCGGCCTGAAGCACGAAGACTCTATACACGATGATGGTGTTTACAGCGCCATGTGTGAACGTCTTGTTAACGCCCATAATATTAATTTCAATAAATAGTTTACTTGTGCGTTTCGATGAGTTATATTTATCTCATCGAAACGAAGTCCAAAAAGGATAAATAAATGAAAAAAGTAATTGTTGTAACTGGCTGCAATTCCGGTCTTGGTAAATCCATTTTTGACACCCTTGGCGCTTACGGTCATGAAGTTGTCGGTATTGATTTGGAGAACGGCTATGACATCCGTAACGCGAAACAGATGAAAGAGCTTCTCTCTCAATACGACGTAGAAGGCTTGATCAACTGCGCTGGCGTCAACTCCAACAACTGGTTCGAAGATGTTAACTACGAAGAGTTCAATCGCGTTATGCACACCAACGCCTTCTCTTTCGTCAACACGACTCAGGCCGCGCTGAAAAGTCTTATCGACAACAAAGGTTTTGTGATCAATATCGTTTCTAACGCTGCGCATATTCCTATGACGTCCAGCTTGTGTTATAATGCTTCCAAGGCTGCTGCGCTCATGATTAGCAAGCAGATGGCTCACGAGCTTACGCCTAAATACGGGATCACGGTATTCTCTATTAGTCCTAACAAGCTACGTGGTACTGGCATGTCCAAACAAATTGAAGATGCTGTTTGCGCGACTCGCGGCTGGACTCCTGAGTATGCTGCTGAATACCAGAAAAAGGCGTTGATGAATGGATTGGAGACTGAGCCGCAAGTAATTGCTGACTTCATTCGCCATATCTTAATTACGGGCGCATGGCGCTTTATGTCTGGTACTGATATTCCATTTGGGAAATAAATCATGACTATCAAAGTTGTTGTAGAAGTGATTGGCGACGTGGCAGAAGTGAAGATTGATCAAGAAGGCGTTGGATTTGAAGTAATAAGAATCGAAAACGCAAAGATTAACCACGAGCGCGTCGGTTCAATTGAGACTTATTCCATAGAAGGCAACACAGTAATTAATCAATAATATTTAATTAAGGAAACAAAATGCCACATTTTAAAATTGAACAAATCGCCCTGTCAATTCCAGATGCTCAGCGCGCACAGGATTTTCTGGCTAAAATCGGCCTGACAGAATGGTTCCATGATCATGTTGTTGCTACTGGTCGCGTATTTGAAGCTGATGACTTTAAAGGTCAGCGCGGCGATTGCACCAACGAAGCTGACTTGCGCTTCAACTATCAAGCTGGCAACGGCACCGATGGCGGCGCTGGTAAGCCTCTTGAACTTGAAATTCTTGACTACACGAAAGGCCGCAACTGGATTAACGAAAACATCGAATACATCGATGCACATGACAATCAGGTTAGCCATCTTGGTATGCACGTGACTGCCGCTGAACTTGCTGAATGGCGCAAGTTCTTTAAAGAAGAAGGCATTCAGGTTGCGCAGGAAGTTGTGACCGACTCTCACACCAACCCAAACATTGCTGGTCAGCGTCGTTACAACTATGTGATCTTTGATACGCGTGAAATCATTGGTGTCGACCTTAAGTTCATCGTGCGGTTGAATCAAGACGGTACTCCGTACACTGTATAACGAATCGTGAATCTGTGGCCGTCCTAATGGGCGGCCTTTTTGTAGGAGGCCAATGTGTTATTTCTCCCTTATGACTTCGAAACAACCGGATTAACCGTGCACCCGAAAGCGCCGCTTGGAATGCAGCCGCGCCCTATTGAATTTGCAGGCCTGTTGACGGATGGAAAAGAGATTCTTGAAACTTTCGAGTTCATAATTAATCCTGAAATTGTGATTGAAGAAATCATCACAAAGATTACCGGATTAACCAATGAAGACCTTGAGTGCAATCCACCCTTTATTCATTTCGTTCCGCAACTAAAAGACATCTTCAAGAAGACTGATGCCACTATCGCGCACAACCATGCGTTCGATAAGAACATCCTTGATTATGCATTGCAGCGCGAAGGTCTTACACTTGGTGATGTTAATTTTCCAGAAATAAACATTTGTACAGTCGAGCAAACCTTGCCTATTTTTGGCCGAAGAGTTAAGCTTCAAGAGCTGTATGAATTATATTTCGGAAAATATGAACAGAAGCACCGTGCATTAGACGACGTAATATTACTGCACAAAGTCTGCCAACAAATTGGCGTATATGACATCTGGAGTAAATAATGTTTCCACAATTGAGAGTTCGCAGCGGTTACACGTTCAAAGAAGTATATGGACGGCATCCTGAAATTATAGCACGGCTCAAAGAGTTGGGCTGCGAAGTCGCGGCATTAGTTGATAACAATACATGGGGTCACGTTCGCTGGGAAAAGGAATGCCAGAAAAATGATATTAAGCCTATGTTCGGCATGGAGATTCCAATCATCGACCCTGATGCGGACCCGAAAAAGGGATTCAAACCGAAGGCTTGGATATTGGCGCTTGACCTGAAATCCTTTTACAATGCGACCACGCTTGCAACACAGCGCGGCGGATTGACCCGTGCAGAGTTCGGGGCGCTGGATGGCGTCGTTAAATTCTGTGGCGGTGCCGTGGAGCTGCTGCGGCCAGAGGACTACGATTATATAGACGTCAACCCATCATCGTTCCTTTTGGCCAAGCGCCAGGTATTGGCTCACCGCAGCAACGGAAGGCCGCTGGTTTTAACCGGATACAACCACATGCCTTCACCTGAGCACGTTGACTTTGCTTATGCTTGGGAAGTGCGCGACACGGTTAAGCCGCACTGCATCGTTGACGCGGAAGACTTGCGCAAACAGCTTAAAGGAATCCTGACCGAAGATGAGTTGAATCAAGCAACGGCCAATGCGGTTGATATTGCAAACGGAATCGTTGGGCTTGACCTGAAGCTGCGCAAGGCACCGATTATCCACCTTGCTGGTGACATGGTAAAGCTTGCTCGTGAGGGGATGGAGTACCGCCTCAAAGCAGGTCACATCAAAGAATGGACGCAGGAATATGAGGACCGATTCAACGAAGAGATTCACCAGATTCAGCTGAAAGATTTCGACTCATACTTTCTGGTGGTAGCGGACCTTGTACGATTTGCAAAAACAAAAATGCTCGTCGGACCCGCTCGCGGCTCATCGGCTGGTTCACTGGTTTGTTATTGCCTCGGCATCACGGAAGTTGACCCAATCCCGTATAAGCTGCTATTTGCCCGATTCATCGACGTAAGCCGCGCCGACCTCCCTGATATTGATATTGACTTTGAGGACACCAAACGCTATATGGTGTTTGATTACCTCAAAGAAAAATACGGCGAAATGAACGTTGCAAAGCTTGGAAACATCAACACGCTTAAGGCCAACTCAGTAATGGCTCAGGTTGGTAAGAAGTTCAACATTGGATATCACGAAACGGCCAACATTAAAAACGCATTGCTTGAATACTCATCCGGTGACGCCCGTTATGGTCACGGTCTGGAGGATACCTTTGCAACAACGACCACGGGCCAAGAGTTCGTGGCGAAATATCCTGACGCCGCGCGATGCATGGGTGACCTTGAGATTCACCCTTCTCACACTGGCGTTCATGCAGCGGGAATCATTGTGTGTAATGACCCAATCTCTGATTACTGTACTGTAACGGCGGAAGGGATTGCGCAAATTGATAAGCCTGACAGCGAATACCTTAACCTTTTGAAGCTTGATGCGTTGGGCCTTCGTACCCTCGGCATCATTTCTGATACTGGCGTGATAGATGCTGAAACGCTGTACGGAATCAAGCTTGATGATCAAAGCGTCCTTGACATCCTTAACGAAAACAAAATGTCAGGCATCTTCCAGTTTGAAGGTGACGCTGTACGCTCAGTAACCAACTTTGTGCACGTTGATAACTTTAACAAAATCGATAACCTGACAGCACTTGGTCGACCTGGCCCGTTGTCATCCGGTATGGCCCAAAAATACATCGAACGCGCGGCAGGACGTGCGCCGATTGAGTACGACGTGCCGCAGCTTGAGCCGTACTTAAAAGAGACTTACGGCGTGTTCCTTTACCAAGAGCAAATCATGGCCGTGGTTAAAGAGATTGGTTCATTTGACTGGGCGAAAACATCAGCCGTGCGTAAGGCGATGTCAGGTCGTAAGGGTGAGGAATACTTTAACAAGCTTGGCGAAGACTTCGTTGCAGGCGCAATAAATAACGGCGTACCGGAAGCGGATGCAAGAAAGCTTTGGCAGGCGATGGCGACGTTCGGGTCATGGGGCTTTAACAAGTCACACTCCGTGTCATACGCGGTCGTAACCTACTGGACCTTGTGGCTTAAACGACACTACCCGTTGGAATTTGCCGCTGCTTGCTTACGCGCTGCTAAGGACGAAGACCAGACGATTGCGATATTACGTGAACTTGCGAAGGAAGGCGTGGATTATGTGCCAATCGACCCTGATCACTCTTCAATGAACTGGACCATCGCTAACGGAAAGCTAATCGGCGGCATCATGAACGCTAAAGGGTACGGAATGGTGAAGGCGATGAAGTACATCGAAGCACGTGAAGCCGGAACCTTAACGCAAAAGCAGAAGGATGCATTGGCCAATGCTGAAGTCAAATACGGCGACCTTACAGAGATGCACACCAAGTTCGGCTGGGCATATAATGACCCATATCTTATTGGCGTCACTTCCGGCGCTTCAATACGCCAGATGAAGGAAGTAGGCGATGATGAGCGTGCAATAGTAATCGGCAAACTGACCAAGAAAGTGCTGGCAGACGAGAACGAAGCAACACGCATCCGTAAACGTCTTGAGCGCGGCATTTACACAAAGCACGGCAAACTTAAAAAGGGTCTTCAAGCTGATGGTCGCTACGCAGAGTTTGACCAGTATGGAAACAAGCTTGAAACTCAATTCATCGACCTTATGTGCAAGGACGATTCGACCGACTCGCCAATGCGCTTCAGGATTCGCCCAGAGAAGTTCCAGAAATACGGGAAGTACATTGCAGAGAACGTCGGGAACGGTGCATTCTTCCTGATGAAAGGCCGCAAGCTTGAAGGTATTGATATGTTCATCGTCGACGTTATCAAACAGGTGTATCCAGATGGCAACAAATAACCGCGAGCAAAAATACATATTCGTTCCTTTGAAGAAGCATTCAGAATCAATATTGAAGCTTCAACGAATCGAATCGATGACTGGTGATGGCGTGCCGGACGTAATCGGCACCAACCGGAAAGGTCGCGGCTTTTGGCTTGAAATGAAGTTCTTTGAATCGTGGCCTGCAAGGGCCACCACTGCACCTTTCAGAAATGCATTTGAGAAAGGTCAGTGCAGCTTTCTTTCTTCGTGGAATGATTGGAAATACCCATCATTTGTTTTGCTTAAAGTCGATTCTGAGAAGATGTTTTATTTAGTCCACCCTTCGATTGAATTAAAGCGTTATAATATTGCAGACGTTCAACGTGAGATAATCGTGAAGGGAACTATTCACCACATCATTAAGTATTTAGAGGAATTGTCATGAAAACACAAGGGATGCGCCACCAGCTTCTGGCGCTTGATAAAGCAGGCCGCAGAAAATACTTTGCCTATTTCATGGAACAGGGTCTTGGTAAAACTTGGACCGCTTTGGCAGAGTTTGAAAAGCACTTCACCGCTGGCGCGTTCGATGCCATGGTAGTCATCGCTCCAAACGGTGTCCACTCAAACTGGATTCGTCGTGAAGCGCCAGAGCACCTTTCCATCAAGTGGATTGGGCACTACTGGCGCGGCAACGATAAGATGAAAACTAAAAAGGGCAAGGCGCTTTGGGAGAAGATGTTTGCTGATCACTACCCCGAAGGCGAAGTGCCTGCGCGCATCTTCTCATTCAACATCGATACTGTCAACACACCAGTCGGTTATCAACACATCGAGTCGGTCTTGAAGAAGTACCGCTGCCTGATGATCATCGACGAATCAACGCGCATCAAGAATAACACAGCCAAACGCTCCATCAAGGTTGTGGAATTGGGACGGCTGGCAAAGGCCCGTCGAATCCTTTCTGGCACGCCGTTGCCGCGCTCGCCTGCGGATATTTACATGCAATACCACTTCCTTGAAGCAGGATTGCTCGGCACCAAATCATTCCGTGCCTTTAACTCTGAATTTACAGTGCTGCTTGAAGCGCACGACCCAGAGATGCAAGCCATCCTCAAGAAAATCGGCGGCAATGGCTATGGGATTCCGCAAGTGCCGCGCAAAGACCAGTTTGGCCGACCGATGTACAAGAACCTTGACAAGCTTATCCGGCTGATGGAACCGCACTATTTTCGTGCAACAAAAGCAGAATACTTGCCTGACCTTCCAGAGAAGGTGTACAAGTTTATTGACTTCGAGTTGTCGCCTAAACAACGCGATGTTTACGATGAACTCAAGAATGAGTACAACTATTTGATGGAATACAAGGGCGAAGAAGAAAACGTCAAGTTTGAGATGATCGCGTCGCGCACTAAGATGAAGCAGGTGACATCCGGCTTTGTTAAGGTGTATGATGAGATGGTCTACATGGAAGACAACCCACGATTCACGGCCTTTAAGGATTATGTGGAAGGTGTGCTGGAAGATGACCCAGAGCGCAAATTCATCGTTTGGGCCATCTTTAAGGAAGAGATGAACCAGATTAAGGACTGGCTTGAGTCTGAAGGCGTGGTCACTGGTGTATACAATGGTGAAACGTCCAAAGAGCAGCGAGAGTTCTTAATTGATGACTTCCAGAAGAATACAGTCGAGAACGGCGGAACGCAAGTCTTGGTTTGCCACGCTGCAGCGGCAGGCATCGGCATCACTCTTACCGCCGCTGACTTGGCAATTTATTATTCTTGCAACTACGACAACGAGCTGCGCAAACAATCCGAAGACCGAAATCACCGCATCGGCACCAAATCAAGCGTGTTGTATGTTGATTTTATTGGTGTTGATACCATCGACGAAGAAATTCAGCGTTCACTCAGTATGAAGTCAATGCTTGCTGATCACATCCTCGACGGCAAAAAGATGAATTAATATCAAAAATAATTTGACTTGTCACGGAAGATGAGTCATAATTACTTCATCGAAACGAAATAGAGGAATACAAAATGGTACGCATCCTTGAACGTTACAAAAATGAAGCTACTGGCGCAATCGCGTTCAAACGTCTTTTGGTCAAAGAAATTGACGGTATGTTCCGCGTTGTAAAAGAGTTTGATTATGGCAACGGTGCTGGGGTGAATACCGTAATTATGCCTGGCATCAAGGCATATAAGACTTTAAAAGGCGCTGAGAAGGCTTTGGCGGCTTGGAAACCTGAACGTTATCAAATGACCCGTGTTGAAGGGCTAATGCAAGAAGGTAAAATATGAGCAATATTAATTGGGAAGATGATTTGCCGCAGGTTGCTCCTGAGAGCATTCAGGAGCGTCTTGCGCGCTTAGTATCTGAATTGGCAGAGCGCCAAGAAGCTTTGACAGAGCTTGAAGATGAAGCTGATATGCAAAAGCAGCGCATCAGTGAAATCAAAACTGTTCTGCTTCCTGGCGTTATGGATGAGCTTGGCGTGTCCGAAATCAAGCTTGAAGACAAGACCAAAATCAAGGTCGAGTCAAAAGTAAACGCTTCAATCAAGAAAGAAAATGAATTGAAGGTATTCGATTGGCTTGTCAACAATGGTTACGGCGGCTTGATCAAGTCCAGCGTCACGGCTGAGTTCGGTCGCGAAGAAATCGAGCAAGCGCAAGAGATTGTTGCCGCGCTGCGTGAAGATGGTGTTGAAGCCACGTTGAAACAAGGCGTTCATTCTGCTACACTGAAGTCGTTTGTAAAAGAACAGCTGGAAGCGGGCAATCCAGTTAGTGAAGATATTAGCGTTTTTGAATACAAAGAAGCTAAAATAACCTTGCCTAAAAGCAAAAAGTAATTTAACCTTTATCTTGAAATCAGGTTGCCACGAAACTTGATACTATAGGAAAATATCAAATGTCTAAGAAAGAAACCACCGAAGTTGCAGTGAAAAACACCCAGATGTCCGCTATGGCTGATTTTGTCGACATGACCGATTTTGGCGCTGGTTTTGAAGGTGCCGATGCCGATGCGTATGCCATTCCTTTTATCGTCGTACTGCAGAAGATGTCTCCTATGGTCGACGAAGATGATCCAAAACACGTTCCTGGCGCAAAGGCTGGCATGCTTTACAACACCGTTACTGGTGAGTTGTATGACGGCAAGAAAGGCGTGCAGATCATCCCTTGCGCATTCAAACGCACCTTCATTCTTTGGGGCGGTCGCGAGTCCGACGATAAAGGCTTTAAAGGTGAATTCACCAAAGAGCACGTTGATGCAGAAGTCGCGGCAGGCCGCGCTGTTGAGATCAACGGTAAGGTATTCGTGCCGGACGAAAACGGCAAGGTGCACGAGAAGAAATCTCCTTACTACGCAGATACACGCAACCACTTCGTAATTCTGTTGAACGAAGAAACTGGTGAATTTGGTAGCGCAATGCTGTCTCTGACTTCTTCCATGATCAAGCCGTCTCGCATGCTGATGACCGCTCTGCAGCAGAAGAAAGTTCAGACTCCGCAGGGTCTGAAAACGCCGCCGACCTTTATGAACATCGTTCGCATGGGTACTGCATCCCAGTCCAAAGACGGCAACACCTGGTCTGTTCTGAAGTTTGAGCTGGAAGGTCTGGTGCAGGACAAAGGCCTGTACGAAGTCGCCAAGGCATTCCACAACGACGTAGTGGGCGGTAACGTTAACATCGACCGCAGCAAGCAGGAAGAAGCAAGCGGTGCCGCTGGTCCTGTCAATGAAACTCCTACCGACGCAGAAGAGTTTTAATCGACAATCAAATCAACAAGGCTGCCGATTGGCGGCCTTTTATTTATCTGGTGCATCATGATAGAAAGAATTGTACCGCTCTTGAAGATTCTGGCCCTTGTTGGCGCGTTTGCCGCTGGATCATACGTTGAAGACCTGCAGCAAACCAACGCATCACTGGCCAAGGATAATCAATATCTGACATCGCTTAATGAGCGTAAGGACAAGATAAATGCACTCGAAGAGCAAATTGCATCTTTACAGGTTGAATCGGCATCGGCATATGAGAAAGGTCGCCAGGAAGCGCAACTGGTTGCTGATGACACTATTGCTCGTTACAAGTCTGGGAATATCAAGTTGCGCGCGCAACTCAGCTGCTCCCGTGAGTTACTCAGGAGTATGCCCGACTCTGCGACCACTGGACGCCTCTCTATCCCAGAAGGAAACTGTGGACTATCAGAAGAAGATGTCAGTTTTCTTGTTCAGTTCGCCGCAGAAACAAATCGATTAAAAGAGAAAGTTAATAGCTTGATTGATACTTATAATCAGGCTAAAATAAAAATCGATCAATTCAATGCATCAAAGGAAAATAAATGAAACAGATTTATGCAAACATTCGCCAGTGGGCTTCTGACCGTAACATCATCCAAGGTTGCGACCTTAAGGACCAATACCCGAAGCTTATCAGCGAGTTCGGGGAGTTAACCGACCACGTTGATCAACTCCATGACCTTGTGTTCTTCGACCCTGAAATTGGATATACAGAGCAAGCCATCTGTGACTTGCAGGCAGCAATTAAGGACGACATCGGCGATTGCCTTGTTGTGTTGACCATCCTGGCGGCGCAAAACGGTACTGAAATCGAAAACATTAATGGCGGCGGTTGTGCTGATAAAGGCGCTCACCCTCATTCATTCATCCTTCGCCTGGCAAAGACCCTTGGACGGCTTGGTGATGCTATTGCTAAGAATCAGACCATGGATATTGACGTCACCATCATGGCCGCAGTCGATTACCTTTCCGGCGTAGCTCATGATTATGGCCTTCGCTTATCCGACTGTGCGCAAGCGGCCTACGAAGACATCAAGGACCGCAAAGGTGTCATGTACAACGGAACGTTCATCAAATCTACTGATCCAGCTTATGAGCACTCCTGCAAAATGGTAAAGAAGCTGGAACTTGAAGACCGTGTGATCAGAGAAGTTACAGGACAATAATTATGACAGCATTAAAACCAATGAAGGGTTGCCAACGTAAGCAGATTATCGAGCGCGGCGAGGACGTGCCGCTGCCTTGCGGACTGTCATTCAAGGTCGATGGCATACGTGCAATGGCGTATGACAACTTGCCAATGGGCACTTCCGGCATGCCGTTGCGCAACGTTCAAATCAAAAAAGAGTTCCTCTTTTTGGGTGAACTAATTCACGGACTTGATGGAGAGCTAATCGACGGCAATCCAAATGATAAGAACGTCATGCAACAGGCCTATACTGCATGCATGAATACTGATGCAATCACTAACTTTACATGGTGGGTGTTTGATGACTTCAGCGACCCTGATCTGCCTTTTGAAAAGCGTTATGCAAACTATCGAGCTAGAGTTGCTGAGGTCAATCAGCATCTCATCAACCATGGTCGACGCCCATTCCTTCGCGCTCTCGAATATCGAAACATCGAAAATATGGAACAGTACGCGGCGATGCAAATCGAAGCAGACCAGCTTGGATATGAAGGCTTGTATGGCAAGTCTTGGACGGGCAAATACAAGCATGGCCGCGCGACGCCGAAGTCACGTGATGTGTGGAAGGACAAGCCGTGGACGGATGAAGAAGGATTGATCATAGACTTCGTTGAGATGATGGAGAACAACAACGAAGCATTCATTGACGAATTGGGTCGCACCAAGCGTTCAAAAGAGGCTGAAGGTTTAGTTGCAAAAGGATACCTTGGCTCATTCGTAGTCGTCAATCCGAAATATGTGGATGAGAAAGGTGAAATGATTCCTTTCCGCGTATCCGCTGGTTCAATGCCTATGGCAGAGAGAAAAATGCTTTGGGAGAATCGCGAGAACTATCGCGATAAATATCTAACGTATAAATTCTTTAACTTCGGCATTGTTGATGTGCCGCGCTCTGCTTTGTATAAATGCTTCCGTGATATTACCGATATGGAGTATTTTTAAGACACTAGATAAATAATTGGTGCGGATAATCTATCGCGTTGTTTTATAGAATTTAATATACAGTGTATACATAAAGCCGGAAATCTCCGGCTTTTCTTTTATTTACCTTTCGCCTTATTTACTTTCAAAACCTTCGGCCTATACTATTAATATTCGTAATCAAAAGGTGAATTATAATGAAATCGAAAACTTTAAAGATTGTTTTGATCACCATCATGGCTATGCTGACAGTCTTGTTCTTCACCAAAAGTGCAGCGGCTGAAAGTATGTTTACGCCGCCAAATAGTAATGCCAAAGTGTTAACGAGATATTTTAACAACGGCCAATCGTTCGAATTTTGCTGGAACAAATATGATGTGATAAAGGAAAGGTTTGATAAGGAAAAGATGTGCGTAATGAATGATCGCGGTCGCCAAGTCGTTTCGTTTGTGTTCGGAATGTCAATTGCAAAAGTTGATGCCGCTGAAATCGTTGTCAGGTATAATACATTGGACAGCGGCCTTGTCGACAAGACATACCCTGTTGCAGTAGACAGCAGGACAGGCGGCGCACTCATACTCACTCCAGAAGATAAATCAGATGTCGTTAACATGCTCATCAACAGCAAAGACGTAATCGTGTTTTATCATGTTGAAGGCGTATCAGACTACCAAATGGCCTACTATCCACTGCCCTTAAGAGATGCTTCAGGTAATGTTAAGACACAGGATGTGCGTTGACATGGGTGGTAGTTATGCAGAAAGATTTGGAAGAAAACAAAAGGCTGAAAAAGGCTTTGACGTCTCAAATCTTGTCCCTGTTGGTAAAGCTTATTGGGGAGTCAATTAGCAACAAGGTGGCACGGGCCGCGATTGTTGGCGTGATTGGCATGGCGGGGTATTACTTCGACTTGCCAGACATTGATACAAGTTCCGCGCCGCCAGTCCAGGTTGAAGCCGTGAAATAAACAAAGGCCCATATGGGCCTTTTTCTTACATAACTGCTAGTGCATCCTTGTAACGCTTCCGTCGCAAATCCCCATGGTTAGCCGTATTCGGCGCGGCCCCGTTAATCCGCTTCACGGTCGAATCAAATGCACCCGCATCGGCAAGTGGAATGCAACCGCTGTTCTTGAAGAACCACGCTGCGCTGTCAGCGATGTATTTCGGCTCAGTCAAAATGTCAGGGTTATTCAAGGCGTCATACCCTGATTGCTTTGAATACTCTGCATAGTTATCCTTTCCAGTCAGCTGAATGGCACCACGGCCACGGTACTTCCAACCGTCGCCAGATGCTACCGAACCATTTCCCATTCGGTTTGCATATGTATTATTGGCGATTTCCATTGGTTTACGGGCAATCGACAACGCCAAGGAGTTTGGTGCGCCACCGAAACGACCGCTGACGCTGTAACGGCTAGGCCACGTGTTGGCAAGACCCTGTGCAGAGTAGTTGAGATTTTCCACAAATGTTCTCAAGCTGCCTGTCTCTACTCCTACGTTTGCAAGGAATGCCGCGATGGCATTCTTGCTTTTGATTCCGTAGTGCTCACAAGCCTGCTTGAAAGGGTCCACCCATTTCTCTGCGACATCCATGCTGCATCCGGTCCCTTTAGATATTACGTTTGCATTAATCATAAATCACCTTATGCGCTTCTGTACCAGCCGTTCAAGACGACATATCGCGGCAGAGTTGAAACAGCCGTTGGGACGGACTGCCCTGCATCGCCAGTGTTACCGACCACATCGTGAGTGTGAGCGGGGAGGGTATATCCATGGCTGTGATTGCCAGCGTAATTTATATTCAACCCATGAGTGTGTGACCCAGAAGATTGAATATTGTGAACGTGGTTGCCGTTAGTTGAGGTGTTGTATTTATAGTTGTCCCAGTCGCCGCCCTTTCGACTTCCGAAGTTGTTGTGCGTCCCATCATACACGCCATACCGCGCATCATTCGTATTTGCTTCACCCCAGCTACTGTCATGGTGGTGGTTGCCTGCTGAATCCATTCCGTGCACGTGAGCACCGTTTTGACTGGTATCGCCTGTGTGGTTATGGTTGCCTGCGTCTCCAGTGGTATTGGACCATGGACCACTCTGTCGCGTAGTTATGTTCACGCTGTGATTGTGCAGAGGAAGCATGGCGGCGGTAAGAGTAACAGAGTCTGCACCTCCAGTGTCAAGACCGTTTCTTGCCGTGCCAGACGTCCTGATGACCATGTTATCAGGCAACCTGGTCCATACCTGACCGTAAGCGCCCAGTTTAGTATTTGGGTTAGTGCCATTAGTCAAGAATCGAGTCTCACCGACTTCGAATACATCACCCATAGTTATCAACTTCGCGGCCAAAGCATCGAGTTGGCGCTTTGTGACAAACTGTTGCGGCTCACTAGCATCGACACCGATTTGCGCCGCGCCGAATGCTTGAAGAAGACGCCAAACGGTGCCGTCATAAATAATAGTAAAAGGAAGAAGACCGACGATGGACCCTGCTGGCAGCTCGCCGCCGTCGAATCCAAGGACTGCAACTTTGTTTGCACCAATGGTCACGGTAACAGGTCCGGTGGTCGTTACATCATTGACAATTGTCAGGCGACTACCTGCTGACGGAGGCCATGAATAACCTGCTGGAACGGTAAGGATTATATCTTGTGCGCCTTTACCTGATGCAAGATTCGGCGTTCCAATTTGCACGTCTTGAACAGTTGCATTTTGAATCCAAGCACTCCAAGCGCCAGACGTATAAGAGCGGGTGAAAACATATCCGTTCATTGACGTGTATTGTTGCAGGGCGAAAGTCTGCGCATTAACCTGCCAAGCGCAAACCTGGAGACGACCTGCAACCTTCGTCGCACCAACCGCGTTCGGGATGTTAGAGCAGAGAGCGGCGACTGCGTCAGATTGAATAACAATAGTTGTGGAAGTCGTGATATTATCAAAGTCCACAAAGTTTGAAATCAGTCCGCGAACAAAATACGGGTTTTGCGCATCGCCGCCAGCAGGCATAGGAATATATTTTCGCGCTTCGCTAGGCAGCGTCAATTCCTGCCAAGATTCCGTTTCGCCGTTAGCTGGGACTGCGCTGGTGTTGCCGTCAACCACGCTCTGGAAAATGCGCCATTCAGGCGCTGAAGGGGTGCCAGAGTTGCTTACAACGATGGCATTTTTCGGGTATCCATCTGGCTTCAAGTCAGACGAGAAATACTGTTGAGCGCCGTGGTCCTGGATGAACATAAGGTTGTCGGTGATCAGATTCAGCAACCAGTTCATCGACTCACGTTCAACTGCTTTCGCGGCGACGTTTCCGGCTTCCAGCGCAAGTGCATAGTCAGGGGTGTAGCCGCGCTGGAAGTTCACATAACCGCTTGGACTTGCATCCGGCACCACGGATACATCACCGCTTTGCGCGAAAGGTCTGTTAATAAGTGTTGGCATTGCCGTTCCTCTACACGATGTATTTAATTTTTGATAAAAGGGTTGATGCCCAATCACCAGTTAAGTCAGTTATGTTCATGCTTGAAACATAACCACCAGCAGCACTTCTCGGAAAGTTTACTGTTGCTACAACATCACCATTAGAAGCAATCAATTGAATTCCAGTGGCAAGTGATCCTGGGTTTTTGATGTATATAGAAGTCGCAGTTTTCTTTGCGAAATCTTCGCTTGTTGAAATTGCAAGCGCATTCATCGTACTACCAGACACAAGCATCAAGCTTAAAATATCAAGTTCAAGAGTCGTACCAACTTCGGTCGGCAAGTCTTTCCCTGATATCAAACCGATGCTGATGCCGCCTGTCGATCCATCCCAGGTAGAGCCTTCAACAATCTCAGCGGCAAGGTCAATTTCGATACGTTGCAAATCACCTGCGCCTATGTTGTAGAATTTAGGGATATAGCCACCCATCCCATCCGGTACAGTTACAAAAAGTTTTTGACCGTTAACCGTGTTGTTTTTGACTATTGCGATAAACGACAAAGGGCCAGTCAGGGTGCCAGTGTATTTAGTAGCAAGTACAGCGCGTGCATAACCGGACGCTGGCACAGTCCCTATTGTAGCGGAAAGCTTGAATGATGGGAACTGGTTGGGCACACCGCTGATTGGCGTCGCTGTGACAGTGTTTACGCCATCCTCAATGATATTGCCAAAAGATGTACCGTCGTTTGGCTGTGTGTAGCGCCAATAGTTAGTGATTGCCGTGCGTGGTATTTCACGACCAAAGTCATCTCTTGATGCTTTTGAGATTGAATAGTCGTTGACAAGCGCGCCGTCGACGACCTGGTTCACACCTTTCAAAGATTCAAGCTGGCGTATCACACCGTTGAAGTTGTTCAGCGGCCACTCGTTAATGCCGCCAACTCTGATGATACCGTCAGTGTTAATCCACGCAACACCTTCCGTTTCAAATCCTACGCGCGTGTCTGTTATGTCGCTGACAGTCAAATCGATATCAGATAAGTCTGCGACTTCTTGGTAAAGCTGCCATCGTATTCCGGCATTTGCTGGCAAGAATCCTTCATTCCTGTCGCCAACTAGCGTCTTAAAGTTGTCAGACAGGTTGTTGGCGAAATAAGGTCCGATGACGTATTCCATGTAATAGTCGGCGGTCGGAGGCGGCGGTACTCCATCCAGCCTGCTAACGTTCCATGAGCGTCTGATTCCATCAGTCTCTGCAATCAGCGTGGCGTTCCCTGGGTACGGGTAGCCGCCGATTGAGCCAGAGTATGCAAGTGATGAGCCAGGTTGCATGAATGACTCGCCAACTACACCGTTTCTTGTCGTCAGCGGTCCGTTTGCACAGGAGATGTTATTGAGCGTTCCCGCCGTTACAGACAGGATTGCTGTTCCGTCAGAAGGAGGGTTTTGCGTTCCATAAAAATAAGGCTCAGGCCCATTTGGATTCTGAACAGGGTCGCAGACGCAAATCGAGTATCCAAACAAAAGGGCATCAGACCCTTCAGGCAATTCACGAGTTTGAGTTGATCCAGCGGCAGTCGCCTTCAACTCTATTGAAAAGCTGGTACTTACTCCAGAAGCAGCGGTTGCCGTCTGCTCTACAATCCAGATTCGATACCAATCGCCGCCAATTGCTTTTATGCCACCACGGTTTGATTCCCTTCTTACTCCATCGAATTTGCCTTTGATGAAATAGCTCAATGACGGGTCCAAGTTGAACTGGCCAGTGACGGGGTCAAACAGCTTTCCATTACTCGATGCATCACTATTCTCTGTAACAGAAACAGAAGCGACGTTTTCAGAAAGCACCTTTATGTAGAAGCTATAGCAAACGTTGACGCCAGCCTGCGAAGGAAGCGAAATTGATTTGGCACTTGGATTATTGGCCAAAGAATACACAGGCTCACCGCTTGAAGCCGTCTTGATGACCCTTACTGCGTTGGCAAAATTCTCTATGGCCTCGCCTGGGTAATCGCCACACAACTGCCCATAGTAATCAGGCCCACCATACTGTCTGGTATCGCCGCCGACAAGCCCTGCGCCGGAACCATTTCCCCATGAGTACCAATCTGGGTGCGCCATCCGTGACACGGTGCCTGACACTCCGCTGATGGTCAGCCCGGCGTTGTTGCCATGGCTTAAAAGTATCTGCTTATAATCATGCTGAATCTCAGTTGACCCCTGCCAGTCGTACAGAAGGAATGAGCCATTGGTTGATTCAGACGAAGACACCGCGCCTTGAGTATTGTCGGTCACATATGCGTAGCGTGATGAAGAGTAATCCCAAGACTCTCCACGGTTGAAAATCCACTTAAGCATGCGGTTGATACTTTCGATGCGGCCATCACTTGTAAGCGTCAGATAACGAAGCTTAAGAAGTATGCGCGCTTCTTCGATATTCTTTACAACCTTCCCGCCAGCACCAAAGAAGTTGCCGCCGATGTTGTCCGCACCTTCAAAGTTGTCGCGCGTCGGTCCAAACGCCCAGTTGTGCTCATAATTGCTTAAGTCCACAAAGTCTCTTGGTATGCAAAGAATGTCGCACCAAATATAAATTCCCATTGCATCACAAGTGTCAATGTTAAAAATGTTATTGTACCAGTCAGTCCAAAACTGATCTTGGTATCTTTCATACCAGTCACTTTTCTTTTGCACCAAAGATGTAATGTTTGGTGCATTGTTCTGCATCCACTTAAGGTTTTGCAACAGGTTTGTGTCAAACTTTTGCATAGTTCCTCACACAAATTTAACGTTGATGAAGCCGCGCATAGTATTCGCCTTATCCCAAGGGTTGGCAATCCACTCGCTGCCGTAATCGGATGGATAATTTGGCGCTGCCTGTCCGCTTTTTACTGCTGCAATTTTGCAATCTTTAATGTACAGACCTGGATACTCGCAAGACACTGCTGAAGCAATCTCAAAAGAAGATTGAGATTGGCCCACTGCATATCCTTGCTCGCCGTTAAAATTTCCATTACCGTAATTCAACACAGCGGCAATAATGGATTCGGCATCGGCGGTTGCGGTGCCTCTTACAACAGTAATATCGACATACAAGTCATATATGACAGCAGTGTTGAACTTTACGAAATAAGACAGTTGCGATTCTTCGTCGACAACTTCTATTCCATCAGGCGAGTTGACTGGATCACCCTGGTTGGTAGCACCAAAGTCCCACGGCTGGCCGCCCATCTTTGCCTTGAAAATAGTCTCAGCAAAAACTTGCTTATCGAACGTTCCGCTTGCGCACACCCAGACACCGTTAGGCGTTGAAAAGGTGATGCCGCGCACCGTTCCAGGCAATCCCGTGTCGTTCTCCACGACCATCACCGATTCCACGCCGTCGACCGACATGGCGCGAGCGCGAATAGCACCAAGCGATGCAATTCCCTGCTGGTAAAGGCGCTTAACGCGAGCGGCCTTTAACGCTCCGTCGCCCATGTATTGTGTTCCTGGCACGGTCGTCGTTTCCGACGTTGAATAAGTTCTTGACCATCCGATGACGTCATAACCTTGCACCACTGTGAACTCTTCATCAGGTGCAACAGTGAATGATCCATAGTCTTTTGACGCAAGAGTCATATTGCTTGTCTTGCCAGTCGAAGCGATTTGAACGTCTTCCAGCACATACCAGTATGTACCATTTGAATCAGTAAGAAGACTTCCAGCAGGAATTTCCAGCAGCGGCGTTCCCTCTGCAGTCACACCTTTCAGCATCGTGCTTACGTTTTTTGTGCGCTCGATACCAAGAAACGCCGCGATTGCATCAAGATATACTCCATATGAGTAGTTAGGGTTGATGAGACTTCCCAATTCGGCATTGTTCTTCATCACTGAAGTTCTTGCCAACGTCTCTGTTGCGATTAGCGTGCCTTGCGGCGTCGAAGCATCAACATCAAGCCCGACCCCTAAAGACTCAATCCATTCACCTTGAACATCAGCCAATAAATCTGCCGTGTCAATGGTGATCACACCAGTACTTACTATGTAAGAATATTGTGCACTCATTCTATCATATTCCCAGTTCTGTTTCCAGGCCCGTTACCGATATGCCCGTGAGTGGATACATCAATGCCGCCGACCGTTGTGCCAGTCGGAAGCGTTGCCGTCGTTCCTTCTTTGCCTTCTATCCCACCATTGAATGTTGCTTTTCCATTTACTATCAATTGTTGATCGATAGTGGTTATCGGGGTCTTGACGTTTACTCCAGCAGACGCAGTTATGTTTATTGAGTCATCGCTTAGTGCAATTCTCACAGCGCCGCTGAGGGATTGAATTACCATTGACCCCGCATCCTCTCCGCTTATGGTGTATTTTCGGAATACATCCGGTATGAACAGTCCATCAGCGAAAGTTTTTACACGGCCATTGGTAGGCGCGGTCGGCTTCAATTCTTCAAGGAATGTCGACAACTCGCGGTCGCCAGCGAATATCCAGCCCAAGTCGCCTTCCTTCAAAGGGAAGTTGATCACGAATCCGCCGCCGCCGATTGCCAGTACCGGAATTGACACCAAAGGTTGACGCTCCACTGGCTTATCATCAAGACTTACGAAATGAATAACAGGTTTTATGACTGCTAAATTTTTCTTGCGGTCATAAGATATTACTTGCGCAGGAATCATGCCATCAGTGGTATACTTGCCACGGTCCAGCATTCCCTGAAGCGCGGCAAACATACTTGATTTGTCAGTTTGGTTGGGGCTTGTAAGTTGGGTTAACTTTTCTGCCATCATAGACTCCTTATATCTGATCAACAAATTATAATCTATAAGGAGTCTATAAGCAATATTTTAGCGATTTGACTTTGATTCTTTAATGGCAGCTTCGTTTGAGTAGGCTTCATTAAGTGATTTTGCTATTAAACCATCAAACATGGCAAATGCATCACGCAGTGAATAGTATTCTTCCAACTCCTTTAAAGATGCAAGGCCGTTATTTATTAGACTTGCAACCATTGGCTCAAGATAATTAGGCTCTACTGTCGGTGCATCAGCCAAGAATCTATTTGGAATTTTGGTGCTTTTCCAATCGCTAAGGAATCCAAAGTTGTGCTTTTTAACGGCTTCCATCAATACTTTCAACACAAGATTAGGCGGCAAGTGATTAGGAATACTTTTCACTTCCTCACTAATTACTTTTTCAGAATTAAGCCTTACTTTGGACCCGTCATATTTGATCACATAACATTCACTCAATAATTCAAGTGGAGTTAATATACTTATGTCATCCACCATTTCAAATGCATCTATTGCGCTAAATTGATGAATTTCATAAGTCACGCCAAACAAGTCGATTATTTTATTCTTTCTCATATTTATGCCGATGGTGCAACGCCGCCCGTCACCGTAAATATATCATCACGACTCGCTAAATCATATTCAAGTTGCATGATGACAAATGTGGTGTCGTTCAAGCTTGGGTTTAAGACTGATTTGAATTTAACACCTTGTGCAAGCTTCAAATCTGCGTTATACATACAAGTGAAGTCTGCACCCCACTCGTTCCACATCGGTATTCCGACAAATTCCTCAATGACTGTAATCTGGTCTGGATTTAGAATTTTGTCTTTATCCTTAACAATTAACGTATCGTCATCAATGTATGCCGCGATGGAGTTGCGTTGATAGTTCTGGATCTCAAGCAGCAGCGCAGCAGCAACATATGTCGTTCTTCCTGGATTCACAAGGCGCTGATTATTAATCGACGTGTCGCAAATAACAGTATCGATGTCCATTTGTTTTGCAGACCATTCCACGAACTCTTTGAAAGTCGGGTTGGATGGCGCAGCTTGAGTTATGAACTTCGTTCTGTTTATTTGGTTGGTGTAACAAGTGATTCTGATGACTATATTCGGCGGCGGCGCTGTTATCTCAACTGTCGTCACCTGTCCCTTGTATACCAAGTTGCTGCTGATTACGTTTCCCTCTCTGTATCCAGCTTCAATAGTCACGTTGACGTAGTTCGCCGCCAGCTGACCTTGATCACGCAGACGTTTGTTGAATGCCGTGAAGTTGGAAAGCAGGTACTCTCTCAAGTACCCTGTTAATCCTGCGACTTCAATCGTGGCCTTATTCTGAACGGAAAGTGCTGCCTTTTTGATTCGGCATCTAAGCATCAATCCTTCATCAAGCACTTGGCTTGTGCCATCCGGCATAAATAAGGTGACTTTAAGGATTCTCTTTTTCAAATTATCACCACTTCAAAGGTGTAGCAGTAAGGTTGTTTATGTCGTTGATATCATCTTGTTCAAGCACACGCTTAGTCTCAATCGCCGTGCTTCTTGGGTCTTGAGCGCCGTTGACGTTGATGACAACGTTTTTCTGACCCATAGTGATATCACGCCCACCAGGTCGACTATTCGCGGAAAGGTCACTGCCGTATTTCTGGAATGCCTCAAGCTGAAATGCCGCAAGACGAGCATTCTTCATCGCTTCGGCCTGAATGTTCGGTCTTACACCTGGAGTTGAAGCCAGCTGCATGTTTTTAATATAATCCCTTTGCGTTCCAAGTTTAAGGTAAGTTTGAGCAAAGTCAATATCACCTTTGTTTACTTGTCCTTGCATCAGCTGCTCAACTGGCACGTTGAGGTATCCTGCAATAGCTTCTTGCAGCTGTCTGTATTGCACCGTTTGGCGGGATTGTCCCTGTACTGGAGCGTAGCTGCCTTTTGGCGCTTCTACTCCGCTACCGCTAAGCACTGGAGTAACTGGTGCACCTTGCGGCGCTCCCGTGGCGTATTCTCCATTCGCCTGTCGTTCGAGAGCGGCCATTACCTTGCCAGGGTATGCACGGGTGTTCTTTCCCCATCCGCTGCGGTCATATCCGCCGTGATACATAGTCAGCGCAAGATTCCAATCGCCATTAGCAGCGGTGAAATATTCCTTGAGAAGTTGAGCGCCGCCCATAATGTTTTGTCTAGGGTCGTTGCCGTCTGTGATGCCAAGACCCTTGAAGTTGGAAGGCATTATTTGCATCAGTCCGGTCGCGCCTGCTCCGCTTACGGCATTAGGGTTGAATCCAGATTCGACTTCTGTGACGGCCTTCATCATCGCAACAGGTATTCCATAACGCTTGGAGGCTTCCTCATAGATTGAGTCGTAAGCGGTCGGATTGCCTGACCCCAAGTTATTGCCTACGGTCGCACCAGTACTTAGTGCTGGTGTTCCAGGTATGGCGGATTGGCCTGCGCTTCGTCCTATCTCACCAGCCCATGCAGCCCACGCTTGTCGCTCATCAATGACTCCAGCAAAGGTTGAAACGGCGCTTGAAAACAGGTTTATATCGCGAGTGAAAAGTGCTTGCGCAGAACGTTGTTCAGCCGCGTTTTGCTCCTGGTTCCTCTGGCGTTTCACATCGCCGTCGGCCATCTGCGTGATCCATCTATCAACGGCACGCTCGTGACGCTCGTTAACAGCCGCTTGTTTATCAAACGGGTGTTTCAAGTCAGCGATGAAATTGTCGACAAATTCAGACCATCCATCAGACATTCTTTGGAACATCATCTGGAATCCTTCGACTGTATCGGCAGTCTTGCTGACAAGCGTCGAGAATGCCGGCATCACGTTCTCGCCGATTACCAGTTCAATGCGTCGCCAGTCTTCTTGAATTTGGCCCATGCTGTTTCGTATCGTTTCAAGTGCGGCCTGCTGTCTTTGCAGCTTCGCGGTTTCTTCGTCGCTTATACGGGTGCTTTCTTTGACTGATTGATTTCGCTCACGAAGCGCACGGACTTCATCAGCGGTAAAACCTGCCAGAGCACCAATAGCACGAGCGGTTTGCTCATTTACACTTCTCAGCTTTGTGCCAATTTCATCAAGCAGCTGGTTTGTGTCTTTTATGCCGCCGTTACTGTTGAAAGGACTGGTTCCCATCTTGTTAAGCAACAAGTTGTCCTTGTTCATAACATCTGGGTTGGTGTATGCGTTGAATGCGAGATTAGAAGCCTTGCTGATCAAATCCCTTGACCCTTGCGCACCAAGAACTCCGCCTGAACTCTCATTCAATTGTCGCTGTAATTGCTCCACGCCAATTGGTGAAAGTCCTGCTTCAAATCCCAGCTTCCTTTGCGCTTCGTATTCTTTTCGAACATCAACAATGGATTTGACGACGACAGCCAATCCTGCGACAACAGGAACGAGCGCGGCAAAGCGATAAGTAAGCCGCGCAAGGATTCCGTCAATAGACCCCAGTTCAGCTGTGAGAGGCTTCAGCTCACCAAACACATCTTTGAATGCTCCGGTGAAGTCTTTACCAGCGGCCTTTGCCTTTTTGTTTGTCTGATCAACCTTATCTTGCAATTGCTCAAGACGATTGATGGACTCTTTCAAGTCCACCGTATATTGAAGAACAAATTTTTCTAATGAGTCAGACACAGTTTACCCCTTGTTTGGAGTCTCGCCGCTGAGGAATGGCGCGATTAATCGCATCGATTCGCCAATAAATGCTGCAGCCATTTCGCCGCCAGCTTGTTCCCAGTATCCTTCACGTTCAGCGTGAGTCTCTGGGTTGATTCCGTTTTCCATCAACACTGCTTCGAAAACCAATTTCAAGTTTTCCCAGTCGCCAAGATGGTTGTCAATAAGTGCGCCAGTGCTCAGCGGAATTTCTTGCCCGACATCAAGTTCAACCTTTGCAAAGCTTAACACTTCCATTGTGTATTCTGAACGGAATGCAGGGTCTTTTGACATTGCAAATTCGATGAATCGGCGCTGTATGTTCCAACCTTCCATCGCAGTCATTTTGCTGATTTTAATTTCTACTTTACGACCAGTTTGTTTATTGGTGATCTTCATTTTATATTCCTACTGTTGATTTTATTTTATTATATAACGAACTCACAGTTGTAGTCAAACTGACTGGCTCTTTAATAGCCACGCCATTTGACGATTCATCTGCGGACTGTTTAGGGTCAAAGCTTCCTTGAATACTAAATGACGTCTGTTCAAATGTTATTACAATTGAGACTCCATTCAGGTTTTCTTCTGACTGAGTTATTTCGACATCAGACATCGACATTTTGCTTGCAATTATGCTTCGAGAAGTTATTGAAAATGTGACTTCATCATTGTCGAATGTATTAATTATGTTTTCAATAGTCGATTGGTCGTTGCAAATTACGTTTAGCGCCATGTGCGCTGGCATTATTACTTTTGCCGCCTGTAGATTGCTTACTGAGGATGTACTTGATACTTCCACCACCTGCATCGCCGTTCCAGCAATTGGAAATTGAGTAGTTTCTGCTGGTGATGTTATTTCTGCAGACACTGGAGAAAGCCTTGTCCAGACAGGAAGCCCTGTCGACTCATTCGTTATGGTCAGAGATTGACCAGAAAGCAGAATCGAAACAAAGTCCATCAGAACATCCCCTTGATGCCATTCATCACCTTTGTTGCAACGCCAGTGACGCTGGCAGTAGTCTCTTTTATATAAGCGATGCCGCGCTCAATGACAGTGGAGTCGGCTGCTTGCGCTGTTTGAATAGACACATCCTGCTGTGTTAATATCTCGTGGAAGACCAGTTGTATGGGTTGTGAAGTTATATTGTCAGCATCTTGGCTGAGATTGTTATTTTGCAGCACCATACGTTCAAATATTAGCCCACGAGAATTTATTGTGTATATAGTGGACCTATTTTGCAGCATCTTTGCGATTGCTTCGGACGCGCTTTTTGTCTGTGCTATTACAGTCACAGTCAATATTCTAGGCATTTTGACCCTGCCATCGACAATATAGCTTCCATCCTCCCTTTGGTTCTTGAATATCTTTGCTTGGAGTCTTATTTTAACGTTAACAATCGCCCAACCAAGCGTTGACACTTCCCCAAGGTTGAAGCTTCTTATTGTGAAGCTTCTGTTGGAAAGACTATATGACAATAAATCGATAGCCATTAAATTGACCCCAATATACTCTGCACCACGCCTTTTGCAATTTGTGATGTGCTCTGTGCGCCGCCGTAGCTGGCAAACACGAATGTGTATCTGTTTGTCTTACGACGACCGGATTGCTCAATGGAGTCGCCAAGCGGACCGCTGATGATGGTCCCGTTCGAAAATGCTACTCTGCCGCCATCAGGATATGTAATAAGCATTGATGTGACATCCTGTATAGGAAGCCACTTGAATCCGCCTTTACGAGCGGAAAGCAAAAGCTTTAGATTTATGTCGTCTTCAGTGTTTGGGATCACTGCAATGGATACGCGAACGACGGCGGCCTTGTCATAAATACAAATGCCGCCGTCATAAGTAAGTTGATAGCCTACTGATTCAACTTCCTCAATAATTAGCGAATCCTGGTCATCAGACAAAGAACTGATATTCAGCCCAACAGGAAAAGATTGGAGAGCGACAATTCTAATGCTTGTGCCAAATCCACTAATATTGACCATGTTTACTCCGCAGATGCAGATTTAACTGCTGCAAGAATTTCATCCTTATAAGAAAGACCTTTGATGTCAATCTCATGTTCCTTTGCATAAGCCTTCAATTCAGAGACGCTCATTGAATCAAAATCAACTTTCGATTCCACTGCCTTCTCTTCAACCTGTTCTTTCTTCTCCGCAACAGGGTTTGAAGTCTTTTTGAATAATTCCGATGCGTCTTCAAATTTTTCGCCAAATTTCATGACGCCATTAGCAAAATGAATTACTTGTGCCATTATTGATTACTCACCTTTATACGTTCGCCATAAATAGTCACCACTTCAGCGGTGAATCCAAGAATACCGTTTTGGATGGTGACAGTCAATGAGTCGATTCCGGCAACGTCTGCTTTCTTCAGAATAGCATCTGCAATCGACTTTCTCGCACCGTCTTCATCAACGGGCGATTTGAAAACAGTGCCTAAATAATCGACTCCGTTTTCAACATCGTACAAGTCTTCACCAAGTCGCATTTGATGCGCTGCCTTGATAACTTGTACCATGGCCTTTTCTCCTGACAGAATATTCAAATTTCTTCCATCAGGCAGAAACAGGTCGTTGTTATCATTAACTTCAATCGTTAGAGTTGTCAAATTGCAAACTCCGCTTCAGCAGTTTTCTGGAATTCAGCCAACTCAGATTCTGACATGTAATATAAATTACAGCCGCCAGAGTTAAAATTCTCATAATCGGGTGTGCTGTCAAAAATAAAATTGCCGTACCCAATCATGAGATATTTATAAGGCACCATTGGTATACCACCAAAACAACGTACCCCCTGAATCAACAATTCGCCATTGCGGTAAACATCTGCGCACATGTGCTCAATTGCGGCGAATATGTGCAGCTGCCAATAAGCACCGTCAACGTTAAAGCTGATATTCTGGTTAGGTACGCTGTCAAGTGGTATTTGATACATTATAAAATCTCTTGGTTGCTCACGCCAGTTTTGACTACGTTCTCAAACTTAAAGCGATATTGACGTGTTTTTACACGACCCTGAGACTGGATGCCAGGAATTACTGAGCCAGTCGTCAAAGTGCCCTTGTTCAGTGTAATGACCATGCCAGAAGGGTAGGTCAGAATAAGGGTGATCACGTCTTTCGCAGAGTTCTTTCGCTTGCCTACACGGTTAGCCGCTGCCAGAACATCTAAGTTCACATCGCTTTCAGAAGTAGGGATGATGTTGACGCCTACTTCAAGAGGGTTGGCACGGTTCCATACTACCAGGTCACCGTTCAATCCCATTGCTGCTTCAGAGATTTGAAGATCAGGCGCGTCAATCGGATCAGCATCATCTGCGAAATCAGAAAGAGTTACACCATTTGGAAAAGTGTTTGATGCCACTAAACGAATCGAAGCGCCAAAACCGGAAACGTTAATCATTACAGATTCCTCTCAGAGAGATGGCCGCCAGTTACGGCGGCAATTATTTAGATAAGAACGTCACGACCTTCAACGCGACGCACAGCATCATCTTTAGAGTAGATTAGCGTGTATGTTGCATAGTATTCGGTGCGCCCATCGGAAGTGGTTTCAGTATCAAAATCTACAGTCAGCCAGTAACCGATAGTTTCAACCTGCCGCCAAGCAGTGTTGTCACCGGAAGTTTGCGTGATGTATTGTTTCTGAATCTCAGTCAGCGCCTTGCCAACAGAGATGGTGCCGTTCACTTTTGCGTTATCCACAGCAACCTGAATCATGGCTTGCACAGTCGCTTTCCCTTCTTCGTTAGCAGGGACGCGACCAAGATTCAAGAACATGCTGAACAGCTGAGATGTAATAGCAGACTTGAGCCACATTTCGTTGGCATAAGTGTTCATATCAACTGCTGCTGTTGACCCGCCCATCAATACGCCGCGCTGGAAGAATGCCAAGGTTTGTCCGGCCTGCTGAGTAGCACCGATGTAGTTCGCACGGTTTTGATCAGCAGTATCTGCGCGAGAGTCAGTTGAAACAGTCACGTTGCGAGTATCAAACTGATAATACATGTAGTTTTGAGTCGCATTCACAGTATTATAGTTTGTTGCCGCGAGGATTTCAGCAGGTGCTTGGTCGATGTAATCGTTGGCAAGGTTAGTTGCGCGAATCATCATGCCAACGCCTGAGTACCCTTTCAGAGCGGTGTAGTATGACCCGATATTAGCGAACGAAGTCGAGAATAAATACATGTACATATTATTCTGCGAATGAGTCCACGCTGCCACAGCGGTAATCTCTTCCAGAGTTCGGTCTGCTCCAGCGAAAAGGAATGAGCCGAAGTTGTTGGAGATTTCCACAGATGCTGCGATTGCTTCTACCGGACTTGAAACGCCCTGGCCTGCAACGGTTACGGTGCCAGTGGTGGTCCAACCCAACGCTTGAGACGGGTCGGTCGGTTGGCCTGTGACGTTGATAGACAGGTTGCCTGCACCAGCGGTAGACGGTGCTGCTTCCAGCGTGAACTGCTGAGTATTAGCATTCCAATACACTTCTGCATCAGCAAGTGCAGGCACCGATGTGCCACCTTCTGCTGCAAATTTAGTATTGATTGCCGTTTCCAGAAGTTCAGCAACATTTGCCAGACTTGTCGCTGCTGAAAGGTTAATTGCGTCAGTCAGGTAGTCTGTGCCATCGTAAGTGATGCTTAAGATAGCGCCAGTGAATGCCTGAAACGTAGCAAGCACTTTAGGCTCAGTATCACCGATTACCATTGCTGGAATCGCAGTCGACACAATACGCGAGAAGCTGATCGAATCAGGCGAGTTAATTTGCTTGCTGATGAATCCAAAATATAATGCTGCGCGCTTATATTCTTCGGAAGAATAACCGAAATATGATCCAACAGCATCAGCCGTTGAAAATTCTGCTACAATGCCAGGCGGCAGAACTGTATTAGAAGTCATGACGCGAAGAGACAGTTTGCGAACTGCAACAGCCGCGCCTGCTCCGACCCCTGATACAATTTTAATATAACGAGATTGACTGATCACGTCGGTGTCCTCTTATTTAATGACTTGGCTGTTGACAGATTGCCACATAAGACTGCTGTGGATTAAAGGCTTGTCGAATCCCTTCACACGTACAGTATATCTGGCGTTTCTTTGCCACGGTCCGTTTTTAATTGATTCGACAATCTTTGCTTCCATCGCAAGCCCAATTTGACCCAATGCCTGTCTAGCGTCTATTTTACCGGAAAAAATCTTTTTAGCAATTTTATTCTCTATTTCACTGCGCTCACTAACGAATAATTCATAGGCATATCTCATGAATGGTCTGGGTGGCACTTCTACCCTGACTGGGCCTTGTCCAAAGTTCAAAACGGCTATGTGACCAAATTCGTTAAGCCGCGCGACTTCTGAAACCAACATTCCTTCTCCACCAGTTTCTGAAGGGTATCTGGTAGAATCAAACCATCCCGCCTCGACAGTAAGACCCTTCATAGATTGAAGCGCCTTAATCTGTTTTTCTATCATTTTTGATTTTGTCATATTACACCGGAACGTCACCCAAATCATTATTAACAGCTCTTGCCACTGCAGGAGTATCAATTGAAATTGCGTTTCTGTGAAGTATTACCAAATCAAAAGAAGGGAATGATTCAAATTGCGACATATCATCATAAAACTTTTCATTATTATTCATGTCGATTCGATATACTGAGGCCTGATGCTTTTTGAACCAATCTCTCAGATTAGCTTTATGAGTTATGAATCTTGCCAAATAAGTCAATACGTCATTAGCAGTAGGCTTTTCTGGGTCACCAGGGACTTCTGGAAATAAGCCACTAATTTGAAAACGTGTTGCGTATATCTGATCTTCAATATCTTTAAATTTGCCGTTTACAAATTGAGACTCATCATTGACAAATTCACTTTTCCTCATGGACCATCCAAACGGAACTGAGAATAAAAGGTTAAACCAAATTTGGTCACCAGTCGGAATGCCCTGTTGAGTCGGTTGATACTTTTTCTGGACCGGAACAGCAGAAAGGTCTGCACGACTATACGCCGCCAGACCTTCTTCAATTCGCGTTGCCAGCATGTCAATCAGGTCGACATCTGTCATATACACCTCAAGTAGACACTGGAAAGCTTTGTTTTATTTCCACGGCAAGGCAAGTCGTCCAACCATCTTGGTCAAACCATGTCGTTTCATCTTCCATTTTATACGTTTTCCCACCAAACACAAAATAGTCGCCGGAAGCGTCGCGGTCAAGGTCAACAATGTCTTTGTCTACCCAGATTTTGACATAGTTCTTTTGAAGCTCCAATCCAAGCTCGACGTATTGATTTCGAAGAACAGCCTGCACCGAAGCAAGTAGCGTGATTGGTTCTTCATAAGTGGTAACGTAGTTGCGCATTTTATCAAGAGTGCGCCCCTTGTACATGTAATATTGAATCGGTTGGCGACCGATGACCTTTGTCGCAACTCGATATAAGTTTACGCCAGGAATCCTCACCAGAATACCCCACCAATTTTACGAAATCCTTCGCGCTCTGGAAGACCGCCAAACGACAAGCCGCCGACAGCCAGTGCTTGCAGAAGCGCCCAAAGCGCCATGCCATAAGGAGTACTTGAAAGCCAGTATTCCCAACCATCACTTGCAGGCGGCGCTACCTTATTCACGGTGATGTCACCGATTGTTGCACCAGTCACGAAGCCGCCTTGTTCAACTCCGTCACCAGAAGACACAGACACCTGTTGGTCTGTGGCTATGCATAAAAGATGAGCCGTCATATATTCCAATGCCAGCTCCAATTTACTGCCATTTAAAACACGACAAGGACTGTCTTGTGATTCAATAAATTCACATGCCATGTCATAGAAAACTTGAAGCGTTGTGTCAGGGAATTTTACCTGATCAGCAAACTGTGGAAATTTTATTCTGAACTTTTCGTAATCTAATGACATGGCATTCACCTTATTTAAACGCGGAACAAATCATCTTCTTGTTCGCCGCTCAATTTAACCTTGATGCGCTTGTCAGCCGTCTCACGCGTCATAGGTGCGAACGGGTCATCTGACATGCCGCGCACTTCTTTAGCGACAGCTTTATGATTGCCAACGATGTCGTGGTTAACCACTTTAACCAGACCTTTTTCAAGGTGCTGCTTGAATACGTGATGATCTTTTAAATGTTCAAAATCAGCATCGCTTACAACGGTGACGATTCCTTCAGGAGTCCACAAAGGTGCACCATCAGCGCCTTTTGCCATTTCACCAAAGCCGGAAGTTGCCGAAGTAAGACCAGCACCGCCCTTGATCAGAATCTGTTTGCGAATATTTGGAAGAGCGCCTGAACCAGCTTTTGCATTCGGGTTTTCTTTCACTTCCGTATAGAAAGTGTAGTTGACTGACATAGACATAGTTGAAACGATGTATTTTGGCATTTTGTAGTCCTATTTATATAAGCCTCAGATAAGCCCCTACAGCCCTTGAGGTCTATTGATATGGGGCGAAGCCTTTCGACCACGCCCCATGTGTTTTACTGTGTAATCACAGCAATTAGATACCAGTCATACGGACGACTGCGAAAGGACGCTTGAGCAGAACGCCTGCTGTTGCGTTTGCGTAGTCTTCAACGTAGCTCTTAGCACGTTTCTCAACGCCCAGAGTCATGAACTTAGTCTGAACCAGCTGGCTGAATACGGAACCATCGTCGCTTGAACCATCAATTGAGGAATCGATGTGATCAGCGTACAGATATGCCACGTTCAGGAAAGTCGGGTCACTGCCAAGTGCGCCGTTGAGTTCCGGTGCAGATTTGATCTTCATCTTCGGATAAGTCTGGGTGATCCAGTCACGTACAGAAATACCGAAGTCGGTGGTGTTTGACAGCCAATCAATAGAGTTGGTCGGCAGCGCCAGAGTCATATCAACCTTCTCTGGATCAATCTGGTCCTGAGAGTTGACACGGATTTGACGAACCATCAAACGGATGTCTGCAGTCACCTGTTGGAAGGTCGCAGTAGCCCAGCCGGAAGTGGTGTTTGAAGTCATCGCCGCTGGCAGGTTTGGATCATTCAGGAAGCCGAACGTGCGGTTGTTCCCGTTGTACCAGCCATAGAAGCCGATTGCGTTACGCATGATTTCCAGAGATACAGCAGCCTGCTGGCGCTTGGTCTCTGCGGAGTTCAGACGCATCGCAGACGCGCGACCTTCTTCCAGCATGCCGACTGCCATGCCCATTTCACCACGAACGATGGAGCGGCGTTCAAAGTTTACGTTCCAGCTTGCCAGAGGAATAGAGGTGAAATCACCATATTCAACTGCGGTGCCAGCTGGTTCAACGATACCCTGAACGATTTCCGCATCTTCCCACTGACCAACGGTGTCAATACCAACCAGCTCATCGATTTTACGAGCGGCGGTCATGATTTTGACGAAGCCAGGCAGCCACTGTTGCAGGAATTGCAGCGGGGTCGGGATTGATGGCGTGGTCTGCGGCGCAGTAAACGCGGCGTCACCTACGCGGAAAGCGCCTGCACGGTTTAAGTGCTCAATCTGATCACGCACAATCGCGGAATCAAACACAATACCGATACGAGCAAGCTGGGAAACAGCCGCGTCGGTTACGGATTGCATATCAAAAGGACGCACCTTGCTCGCTGGGAGGCGAGAGTGTGTTTGGCTAATGCGAGTCATTATTCACCTGCCTATTAACGAGTCAATTGTACAATGGTATAAGTGGAAGACTGGACGCTTGGGCCGGAAAGGGCAATAGTCGTCGGGTCAATCACAATACCGCCTGGGATGGCAACCATGCCAGTTGGCAATGAGCCAGTATAGGCGATAATTGCACCAATAGGCAAGTTGTTCGGGTTGTTACCGCTGGAAATGCCTTTAGGTACATAAGCAAGCAGGTCGCCATAGTTAAGCGTCTGCGGACTGGTGCTTGGGTTGAATACTTCAACTACGAGGCCCGTGCACATATCATAGAACTCGCCTTCGCTATATTGAGGCAGAACCATGCTGGCACCCAAAGGGCCAGTAGAGTTGCCATACAGCGCGTAACGCTTGCTATTGCCGAGGATGCCGTAGTAGTTAGTGCCGCCCAGCTCAACTTCAAAGTCCTGCGCGCCCAAAGTTTTGGTTTGACCAGTACCCATTAAGGATACGTCAGTCTTAAAACCGAACACACGGCTGATGGCGTTTACGTTTGCGCCTTCGTTAGCGTTGGCAATTCGGCCTGGCTTCCCACGCTGTGGGCCGTCGCGAACGATGTCGCCAGGAAAGCCAGTTGTATATTGACGGCCTACACTAGTTTGGAAAGTCATGTTTATTCCCCTTTCAACCAAGCTTCAAACGCTTCGTCAGTTGCTGCAGAATCCGCAGCGGCCTTTTGTTTTGCGACTACACGCTGTTTTTGACCGTGTTCAACGCCGCGCAGATAATTATCCACCACGTCAAACTCAGCACCATCAACGCACTTCAAGCCTAACTTTTTAGCGCCATATTTCGCTACGGACTTGGAGTCCATAGTTGCATGATCAAAGGCACCAACAACTTTAGACAGGCGCTGGTAGAGGCTATTCTTACGAGCAGAATCAGCGTAGAAAGCAGCAACTGCTGAATCAGATGCCATTGAGTGTTCCCCTTTTGCTGGACCTGGCGACGCTTTCGCCGCTTTTGTCGGTTTGTCATCTTTTTCGACCGAAGCCCCCTTTACGTTGCTGTTTTGCAGGCCGCTAACCACATCTTCAGCTTTGTCGCAAGGTGATACATCTTCAGCCTTGACTTCAACTTCTTCGTCTTTGACTTCGGCTTCAACTTCTTCTTCATCACCTACCGCGCCACCTTTCAGTTTTGCAATAAGTGCTTCGATTTGGCTGATCAGTTGCGGAAGCTCGCCGCCAGCGTGAGATTCAGTTTCAACTTCAAACTTCTCTTCACCTTCTGGAGTCTCTTCAGCTTCTGCTTTGACTTCTGGATCAACCATCACTTCTTCACGTTCTTCGGTTGAATCCTTCTCTTCTGCTTTCACTTCAACTTCGTCCTGATGAGCAGCTTCGGTGCTCTCTTCATTCAGAAATTGTTCGAGCGCAGGGATCAGTGACTTCAGCTGTTCAACAGCATTATCACGCGCTTTACCTTTTAACGGTTTTGGCATGTCTAAATCCTCGTTGGATGGTGTTACAGTCGTCAAACAAAGATGGTCAAAGCAACGACCATCCAGCACCCGTGCACCTGGTACTCGACCAACGTCCACGAGAGCAATGTGGTTGCCGCGAAGAGTTGTCTGTACCACTTCATACGGCTGCCCGTCAAACTCTCCAGACTGTATGATGAATTCACAGTCATAGCCCAAAGACAAGTCAACCTTTCCAGAATCGATGGCTTTCTTCAGACGACGGCTAAAAACTTTAAGGTCGCCGCGCATCCATGGCTTGTCATAATAAACATTGCCAGTTAGAACGCCATCAACGCCATACTCTTCGGGTGCTGTGTTATCCTCATCACCTTCGAATCCAGAAAGCATTTCGTGATTGTCGATGAAAGGGATATTTTTGAATGAATCTATCGCTTCGGGGTCTTTCACCGCTGACTCTGGGCGATAAACTTTTACGATGCGATTCGGATCACCATCAAGTCCAACCTGACCTGCAGAATAATCAAAAATGCCAAATGACGAAATGGGACAACCCACAATCGTCAAGAATCCATTTTTGTCAATTTCGCGTGCCGTTTGCATTCGCATCCACCCTCAAATAAGTATTGTGTATTATATCTAATGAAAAAAACTTAGGCAAACAATAATTATGGTTTGAATATGTATAACAACCGATATAGCCGCGCCTTAATTAGTGTGATACGGATGATACGGATAAAATGAGGCGTATTTTTATCCGTATCGGTGTATAAGCCGCGCTATCACTGGTGTGCTACGGATGATACGGATGATACGGATACTTTTCATATATAAGAGTTTATAAAAAAAATAAAATTAAATTAGATATATAATTTTAAATTAATTTATTTGAATTCCTATAAAGTATCGCGGCAACGCGTATCATCCGTATCATCCGTAAGATTCTTTTGAAAACAACTACTTACTTGATACGGATGATACGTCATTATACGCGTAAAATCCTGCGGCAATCCATTGCCAGGCGATTCAGTGAATATTAAAAAGCACTCCAGCAACTAAAACGCCAATCAGCATCGAGTCGTAAACAGCCCATTTCCAAGAAAGCAAAGAGTTGCAATTAATATTTCGCACTTTAACGTAACGTGACTGAATAATCTTTTGCATAACTTCCTCTTTAGTTCAACTTAATTGCGGTGATCTGTCCGTAAACGGTAGATGTCAATGCGTCTGTGCATTGATAGTTTAGATACACATTGCCAGGCGCGGCAAGAGTAATTATCTTTGTTGGAATATTGCCGCCGAAACGACCTGCAGCCCGAATGCCAGCAGACATCGTGAATGCATCATCCGTAATATCTGAATTACTTGTTGACAATTTTACTGTAATTCCGGTATTCGCTTGAACTCCTTCTGTTGCGACAGTCAACTGACTTGCTGTCACAAGCCATTTCCCTGCAGGCAGGTTTAATGTTGCCAGATTCACCAGAGTTGTCGGAGGATTGCTTACACTATTGCTTGTGTTTTGCACATTGCTTGCAGCAGCATTAAGAACTCCAGAACCATCAATTGATAGTGTCGTTCCTACTTTTACGCCACCCAAGGTTGATGCTGATGCAATCGGTAACGAGTATTGAGTAACACTAATTGTACCGTCACCTGCAACACTTATGCCACTTCCTATCTTGACACCGCCGAGAACAGAAGCCGTTGCCGCTGGTAACGTGTATTGGTTGCCGCTGGATTTGACTACCTTAACGGCGACAGCATTCTTGGACCCTCCAGACTCCATGCCTATAATCACCGCTTCTCCAAAAGCGATGGTGATTGTAGATGCAGTTAAACCAGTCTGCACGTCTGTTATGTTCATTTTGGGAACTGAAAGTGTCAGATTCGGCTTGCTGGTAGAATCGCCATCATTACCGATCATAAAGAATTGACCAACTGAATTGTATCCAGACGCCAATGGCGGACTCAATGGAACAATCAGGTTTTTATCGGATGTAAATTCTGAAACAATCGCCAAACCGTTAGCATATACAGCAGGCAATACTGGCGTTTGTCCAGATAGAGGAAACGTGCTGATTGGTATCGTCATAATGACCTCAAATGATTGGTATTTTTCTGCACTTGCAGTGTATTGCCCATCCAGGAGGACCGATGTCACCCTTTTTGAACTTCAATTCGCCGCCAACTTCCCATAGGCGCTTGTCATCAAGTTTAAATCTCATTCCGTCGACGTGTTCATGAGAGATTCGCGGCTCCTTTCCTGCTCCTGAGTGCGCCCATTCAAATTCTTCAACTCCATTCTGGCGCATTCTTTCATCGCTCAGAACGCAATACAATTTGCTTGTCTGGTCTTTGGCGATTAAGTCGACTCTCTTTGCAGAGAAGTGTTTTACGTTTCGCAGCGCCGCCTGAATGCCTGACGTGCCTTGCTGGGCTGGGTCGGGCGAAGTCAGTGAAAGCATAACTGCTTCGTACACTCTGTTGTGAATATCCTCGCCAACCTTGGTCACTAGAGTCGTGTTGAACGTCTCGCTTGTTCTAAGAGTGTTCTCAACGAATTTGTTATATGTGGCCTTTGGCGCTTCTATGCCTGCGGACTTAAGGCTGGCGAATGTAGCAGAAGTGGCACCCTTTTCGACCGACTTGATAAAATCAGCGGCAATCTTCGACCCAACACGCGCAAACGCCTTTGCCCATTTCAGCTGCAGACGTTTCATAAGAGTTTGGAATGTTGAATCAGCAGAGTCTTGCGCAAAGAACTTCTGCACCTGCTTCTTTTCAAGCCATTCTGAAATGCCTGCCTGATAGTCATCAATCATCGCATAGCAAAGACCTTTCATCTCACGACGGTAGGCCATCGCAATAGCGTTTGATGGGATTATCGGACTGCCGCGCCCGATTCTATCGGGTGAGCGGCGTTCACGTTTTTTCGAAGCTTTAAAAGCCATATCAACCTTGCTTCGGTGAATTAGTAGGATTATTGAGTGCTCCGTATGCTTGAGAGCAATCACCCTTCAACCACTCTTTGAATGAGTTCACATCTAATTCGTGGATTGAGTCGAATCCGTTCCAACCGTTACCAAATGATGCCTGATAAGCTTCTTTTGCTTCTTCTGCTGAATCGAATCCAAGCATGCACTTGTGTTCATCGAACTCGCCAGAGTAGTTATCGTTTTGGTTCACGATAAAGACCTTCGGCGACTTCAGATTTGTGCCAACAAAGCAGTCGACTTCATCGCCGTCCGCGCCCTTGGTGCCTTTGATGAATCCGTAGTGGTGCGGCATCTTGACTGCCCATTCACCGTCAAGGCTGTTTCCTCTACGGATGCTGTTGCGAGGATTCTCAATCCCAAGAATCAGCCCATGCAACTTCATCTTAGGTAATGATGCTGCGTCCATCTTTCCAACGTTGTGTCGTAAGTTGACGACATTACCTTTGACGCTTGGAAGGGTAGACGGTTGCACCGACCGTGAATCTTTTTGAGGGTCAAAATCCACATCCTGACCTTCTTTCAGGTAGTAATCCGCAATACCCTCCAGACCTTCTTTCAACTGCGTTAGGACATCAACCTGATGGCTTGATTCATCGTCGGTATCGTCCATGTTGATTTCGACAGGCGCTCTGTCAGGGTTTTCCGCCAACTCACCGCGCGCGGCACCTTCTGGCATAATGCCTGTTTCACTGTAGAACTGGCCGCCCATCTTAACGACATCAGCTTTCGCCTGTTCAATATCGGCCTTACCTTGTAGGACTTCACCAGCAGACTTGCCAAGCAATGCCATATTCTCTGGAGACATCCCTGGTGTTTCTTCTGCCGCATCTTCCGGCAGACGGTTGTAGCCGCTGTTTTTGTCGTCTTTGATGCGGTCGCGCTCTTCATCAGGAGAAATGACGCCAGCATCAATAAGAGTTTTGCCAGTGTTGGCTCGCTTATCATTGATTTCTGCAAGTTGAGTAGCAGTAAGTGAGCCAACTGGTTCCCATGCAACCTTAACATCGACATCCACCCCTTCTGATTTGAGAAGGATTTTGTAATGGCGGTCGAGAATTTTTGTCAGGTCATGCTGCTGGCACGTTTCCAACTCTTCGTGATAGCTGACCATCTCGAATTCACCAGTGGCGTTAAAGCCTTTTGGCGAAGTCCCAAGCAGTTTGGTCGACGGAACTTTTGCGATTGCGGCCACCAGCTGGTACTGGTTCATGATGATGCTGTCGAAGTCTGACAAGTTGATATCAAACTGGTCCATCTCTTCTTTTTGGCCAAGCACTTTGACTGCATAGTTGTCGCGGTACTTGATCCACATCATCAGACGTTCTGCAAAAGACCGCTCATTGGCAATCGCCTTGTCAACGTCGGTCCGCAGCGTGGTTGTACGCTTGGACATCGCCAGCAATGGCGCTTCGTTAGCGGTACGTTCAGCGGCATAGATGCGTTCATAAATCTGCTGAGTCAGAGGAATGCCGCCGTAAATATAAGTTGGCTTGAGAATATCAGCTGGCTCATCATTGCGCAAGATGATGAGGTGACTTCGATGATAACGTTGTCCACTGATCACCCAGTATTCTGGATCATAGAAGTGCTGTGATGCAGGGTCGGCGGTGTTTTCAGACGTCAAAAATGGCATCATCCAATAAGGGTCGACCTGAATGATTCCCTTATAAGACCCCTTTGTCACACCATCAATGTTAAAAGGCTTGCTGTAATATTCTGGGTCATCGCTACGCACATCAAATATGATGACGCGGATACCAAAAATATTTTTGAATCGTTCGGCTTCAACTAAGTGCTCTTTGATATTAAATTCTTTATCAATTTGCTTTAGGCGTTCGCTTGCCTGTACTGACAATTCTGACTCAGAACTGGATTTGACTTCCCATCCTTTACGGACCGCATCGCGGCCTACCATGGAACAAGCCTTGTTCACCAGCCAGTGCTGCGCGATGATGGCGCAAGCTTGATATCCGATAAATGATTGCGATAAGTACCAGTTTTGCAACTGAATAGGTACTGTGTATGGGTTGACTTGCCCTTCTGAACTGATGTTCTTTAAGGCATTATCCATAACTTTTTTGGATACTGTTGCGGAATCGACTGAGCGACCTTTTATGATTGCAACACCATCGCCATTAATATCAGGCTCATATAAAGGGAAGTCATCAACCGTTTTAAAGGTCGGTCGATTGCTTTCAGTCTTTTCCCAGCGTTGACCGCTGCCGCGCCTTTCAAGGCGTTCAAACGGTGCCAATGGGTCGCCTGGCGGCATCTCCGCTGGTTCGGCTTCTGGTTGCGTCTTCTCCCAGAGTTTTATGCCAAGAATTTTCATTGTTAACGCCACCTGACAGTGAAAGGGAATCAATCTATATTATAAATATTCATGTGTTTGTAAGCAAATGATATGTATGGTGATCATAAATAGTTCATAAAATATTTTGCTTTTGTATCATTTTGAGTTATATTTTAGTTAACCAAACGAAAGGAGATTGAAATGAGCACAACAATTGTATTTGTCGTCCTACACAACGGCGAAGTCGTTAACGTATGCGAATATGAAGAACTGGCAAAGGCCACTGCTGCGCGATACGAAGGTGCTACTATTGACCCGTGGATTTTAGATGCGCGCAACGTCTTGCAGGCGACTTTGGATGAGTGGCTGTTGGGTCGCAAAGTCTATCCAGTAGACGACATCGACTCAATTCAAGGTGAAACAGTATATTTTGAAGATGAATGCGTTCGCGGCATCGGCAAATTTATGGGATTGTGCCCATCTTCATCCAAAAATAAATTTTATCGTATTCAAGTTGAAGAAAACGATATGTTTGACAAAGTTACGCGCTCGATTGTTCCTGACGGCGGCACTCCAATCTTTATGGCAGAATCAGACATCAAGGGGATCATCAAATGAGAACGTTAACCGAACTCGATGTTTTGAAAGACGTTGCAGCCGCGCTGGGCGTAGAATTATCCGAAAAGGCGACACTAGGTGCTTTGCGTCGGGATTTACTCGAAGCTGTTGACCGCAACGATTTTGACCGTAAGTGTATGCAAAAGAAGATTCGGCAGGCGGTGAGAGCGGGTAAGCGATTCCGTGCCAGGTCGTTTGCCGCAAGAAAGCTTGACCTTCAGCACGGAATGCTTTGATTGTTAAAGGTTAGAGAAGAAGCCGGATGCTGCAACGATTGGTTTCATCAATGCCATGATTGCTGCGTCCGCTTTGTTAGGTGATTTGACTCCACGCTTTGCCATATCCTTTTTGGATTCAACTTTGAACTTGCCAAGAACAGACGTATCTTTGCGCGGCGCTGACATCTCAAAAAGAAACGTCTCAATCTCTTCAGTAGTCCAAGCTGGAATCCCAAGTTCCGGTATACCATCGGTGTCGATTGAAATCAATTCATCAGTCGGATATACGGCTTGCCCAGTTGCATATTCGTATGTCTTTCTGAATCTCTCTGCAATTTCAGTCCACTTTTGCGCTTTTATGTTTGCGAAATGGTCTTTATTGAGTATTTCAACGTGTGGTAGCTCAAGAAAAACGTCATCAGGATCATCAACAGACCCTTGCGCGTTGAACGCATTAAATTCGATTCTTGGAAATGATGGATTTTCATGTATTGCATACTCGTTTAGTTCATCAAACTTTGAACCAGCAAAAGCGCCGACACCGATGGCGTCATAAGTTATGGAAGCGCCGAATGTAAGCGCATCTTTCCAAACTCCGCTTGCCGATTTCAACAATTCATCTTCCAGGCCTTCCCACGTCTTGATGCCGCGCAATACGTTTCCTGTGACGAATGCAGTGGCGTTAAGGTCGTCGCCATCGTCCGCTACGTCAAAGCCTATACGGTTAGACCCTGACAAACTCCAGCCCAGCGTTGGGTGCTTGTGGAGATTAAGCGCGGCCTTAACGAATGCGCGGTTGATTACAGATTTGTCGCCGCCAGTCTTCGGCACGCCGCCATAAACGTGCTCTGCCTTTTTCGGGTCACGCTCGTACATGCCTGCAATAACGTCCAACATTGTTTGCGACAAGAATGGATTATCTTGCCAGTTTATCTTTTTAACAATTGCATTCTTCGGCGGTCGCATAACAAAGTTTTGATATACGAAATCGGCCTCTTCATCAGGGTTAAAGATGATCCATATTTCGGACCCTTCTTTACGTATTGTCGGCTCAATAATGTCCCACTGTTCTTCAGTAAGCGCGTGCGCTTCTTCCAGCCAAAGAACATCAACGCCTTCTGTTGATTTGATTTCATCAACGTTACGTGCGATACCATAAAATAGAAATTCAGATTTAGTTCTTTTGTGTTCGATAGAGTTCTTTAATAAATTGAACTCATCTTTAAAATCAGAAATCTCTATTTTGTCTTTTAATAGTGTATATACAGATTCAGAAATCTTGTTCTGGAATTGTCGAACGCAAAGGAATTTTAATTTGAAGTTTGCCGCCAAATAAATAGCAAAACCAGCGGCATCGTGCGATTTGGAAGATGCACGACCGCCGTATATTACTTTGTATCGCGCTTTTGTCTTCCAGACTTCTTTTAAAGCAGGATTCAACTGGTACATGAATTTCCAATTATGTGTTAATATTTTATTCATATTATAGTTTGCTTGTACAAGCTATATCAAGTAAAATTATGATTCCAGCTTAGTAGTGGATAAAGGGTGATCTTTCGGCCAGATTTTTTCTGGCCATTTTTTTGATTAAAATTCACAAAAAGTTTGCCTTTCTGAAACTCTGCGTTATAATCATATTAACTCAAAACCGGAGGTAATATGAAACTCATCGACCGTGCCATCAAAGCCATAGATAACCATTCCACAGCTATTGCATTTGTAATGGGATTCTGTTTTACTGCTGCGTTTGGCGACGTTCACACATTCAAGTCTGTCATCTTGTGCTGGTCTATCTGGTCCCTCATTTCTCTGGTTTTGATTCTTCCGATGACGTGGCTTATCCTTACTTGTCTGGAATCTCAAGGTGAAGACTGATGAGACTATCAATCAAAGAGCGGGCAAAACGTCCCAAAAGGAGTGAGCCAAAAGCGAAATATACATGCGTAGGCGGTCCATTCGACGGTCAAGCGATGTGGCTTTCAAAATCTAATCCATCGACGGTTGAGTTTAGCCTTCATGGAATGCGCGGCAGATACCTGCTAAACAGAGAAACAATCGGCAGCACATTTGTGGAGTGGAAAGAAAATGGCAAGTGAATTAACTTTAAAAGTACCAAAAGAAGTGCTAGATAAGGCATATGCAGATTCTGTAAAAGAATTGGCCGTGGTGCTTGGGATTGAAAATGAATTTAACGTTCAATTGCAATTCCTTAAGGACACGCTTCAAATTAAAGAGAATAGAGAGGCTGGAAGCGGTGCGCCTTTAGCTCTGGCAATCCTCTATACAGGTCTGATTTTGCAATCTGGAGACGAACTGTGAATCGTTGGTGCAGTTGGAAGTTGAAACGTCTTGCCTGGGCCAATGCCGCCAATTCTGCTGGCCCAATCACCGCTGGCGTTGGGTCGGTATGGGATGGCGAAGGCCGTTGGGACTCGCTGTGTGGTACGCGCCTATTCTTTCGCGTAAAATAATTATCACCCTTCCCACTTCGGGAAGGGAATTTAAAGAGGTTATCATGAACAACACTTTATCACAACTGCTAATCTGGACTATCGCCGCTATCATCGGCACCGTCATTATGATGTCAAGCGCAAAGGCGCAAACTGATATTTGCGGCAGACTTATTTCTGAGAATGGCGAGATTTATTATGGCAACTCAAAAGGCGATTATATATCACCTGAAGTTTGCGCTCAGAAGAAGGCGGAAATGCAAAAGCAGTATCATGAAGATCAATCCATATCTCAGGCCGCGCTGATTGAATTAAGTATATCAGCCATCATCTTTCTGATCGTTTTTATGCTCATTATTAAACCAAATAATGACAGCAACCGTCATATTCCTCTCAAAAGAAATTAAGGCTATAATACGGTTGTCGACAAAACGAGGACCGTAAAATGCCAAGGCTAATATTCAAAAACAACTTTGAGGTCGCGCTTGCTCAGCCAACGACGACTTCAGACACCACAATTACAATCCGCTCAGGGTCGGGCTTTCCGACCTTGGCCGCAAACGAGCGTGTAGTGGCGACAATCGTCGACGCTGCAACAGGCCTCCAATTCGAAATCATCACAGTAACAGCCGTCGTTGGTGATGTCCTGACCGTTCAGCGTGCACAGGAAGGGACTGCAGCGCGTGCATGGGCGGCTGGCGACATGCTTTCCATTCGAACAACTGCTGCGACTTTGACGGGTACTGTCCGAAACTTTGGCGTAATTCCTAATGGAGTAAACCTTAACGCGCTGAACGGAAGCTGGTTCGGGCAGTATTACCAACTGGCTGATTCTGGGGCATCAATATCACTCAACTATCCTGTCGCACAAGCGGGAATACTTGAAGTTTTACAAACGGGAGTTTCAACGAACGGATGTGTTCAGCGATACACACCTTACAACACTAACACTGTATACCAGAGGCTGTATAATGCCATCACATCAACTTGGTCTGATTGGGTTCAAGTTTATAATACGCAAAGCGTTATACCAGTCGCAAATGGCGGTACAGGACAAACGACCATCCAAGGGATGAAGTCTGCTTTTGGATTCGGAACGGTCGCTGATCAAAACATTGTTCCCACTTCAATGGGCGGTACGGGATCAGCAGACAATGCGCAGGCATGGCTTAACATTCGTCCACAAGGGTCGACTCCGCTGGCTGGCGACCCTGTGAATGATTATGATGCCGCAACTAAGCGTTGGGTTGAGAACTTAGTAAATACTGGCACCGTTGGCCCAAGCATGAACGGTGTTATGAACTATGGCGTCGGTGACTTCCACTTACGCGACAGTCGTGCTTATATTCAACCATATGAAGTCGTTGCTGATGGGCAGTTGTTAAACCGCGCTGACTGGCCTGAACTTTGGGCGTATGCGCAAATGCTTTCTCCTATTGCTGATGCCGACTGGCTTGCTGACCCAGCGAAACGCGGCAAGTATTCACTTGGTAATGGCACAACGACATTCCGTGTACCAGACAGAAATGGTGTCCAGACCGGTTCCATACAAGCCTTATTTGGCAGGGGTGACGGCGGTAATTCATCGGCCAACGGAGTCGTTTCTGAGTCAGGTGCACCAAATATAACTTACTCCGCGCCGCACACAATGGTCACGTTGGCTTCTGCGCCAAGTCAGGTGGCGACTAATGGCGCTTTTCAGTCGATCACTTCTGGGGACTCTCCAGCAGCAGCAGGTTCTGGTTCAAGATTCATACAAACAAACTTTGACGCTTCTCGATCAAGCCCTGTATACGGAAGATCAGCAGCGGAAATCGTTCCGCGTAACTTTGTTGGCGTTTGGGTGATTCGTGCATCGGGTGGCTTTGTTGCCGCGAATACGACTTGGAGCGTTATTAATGGTGACGCAGTAAAACCTGCAACCGGAACGCTTGTCAGAGGCGGCAGTGTAAAATCTGAATATAAAATTGGCACCAACATTGCGTATCAAGCATTCTTGCAAGCATACGGTAAGATTGATGGATTAACGTCTGAACAAGGTGCTGTGATATCTAATGGGGTGCAAGAATGGAAGTTTGCGCAAGATGGCACATTTTATTTCCCTAACTCCATAAATCAAATTGGCACGGAAAGGACAGACGGGGCGCTGAATGTTAATGCATATCTCAGACCAAAAGACCTTGTTGCGCAACCGTTAAACTCAGTAGGCGTTGCAGCGTATGAAAGCAACGGCATGAGGATGATAAACTTCAACCAGTCAACACCTGGGTATGTATCATATTTTTCAGGGGATTGGTATGCTGGCAGCTATACATTCGGAGGCGTTCGAGGCACTGGAACTGATTTGATGCACGCGCAAATATCCATAAACAATGGGCAAGGCGCTGCAGCAGATTTCAAATTCATGCCTGATGGTACTGCTACTGCAGGGAACTGGGTCAGCACGTCTGATGAGAGGGTCAAGACAAATATTCAAAGGATCTCCGACCCGTTAGGAAAGATGAGATTGATCAAGGGTGTGACTTGGGAGCGCCTTGATAAGTCAGAGAAACCGAATGGCATCGGATTTATAGCTCAAGATGTAGAAGGTGTATTTCCTGACGCAGTAAAAACTTTGAAATATTCAAACACGGAACTCAAGGATGGGACTGTTGTCGAAGATATCAAGTCAGTTGACACTTACGGCGTTGCAGCGGCACTGCACCACGAGGCTATTCTCGCATTGATGGATCAAATAGATGAACTCAAGGCAGAGATAGCCGCGCTGAAAGCAGCGAAATAATTCACTCAAGGCGCTGAAAAGCGCCTTTACTTTATGCGCTATTAAGTTATACTCATTATACGTTAACAAGTGAGGTGTATTGTGAAATTTGAAGATATTGATAAGGCTCATAAAGCAAAAGCGTTGCCTAAATATGTGATTTGCGGAATTGATCCTGAAGACAACCGCTTGGTTTTCTTGAAACAAGTTGATAGCAATGATTCTGGCGACGCAGTTAATTGGTGCATCCCTTTGTTTGAGACAGCAGAAGAAGCCCAGAAAGTATTGTCAGAAAGCAATCTGCCTAAACACTACAACGTGATTTCACAAGATGACATGGCAAAATTAGTGTTTAATTTTATGGATATTGGGAGAAGGTTCTAATGGAAATTAAATTATTGTCCGATTTCGTAAAAAGTATTGAAGCCAAAGGCATGACAATCAAGGCTAAGAAAGGCGGCATTGTCTGCATTGACAAACAACAAAGCGATCAAGGCATATCACTTGATGACATCAAAACTATGCAAAAGCTTAATAAGAAAGGCGACTTGCACAAGTTCTTGAAGGATATTGGAGCGGTGGACAATGGATAAAGAGTCACGACGCTTTGCATTTTGGGGCACGGTATGCATTGCCGCGCTGTTTGGTATCGCTTATGCAATTGCTTACGCTGCAGCGGCATAAATCATGATCATCGATATTGAAAAGGCTCTCAAGCGCGAATTGACGCCAGGTGCGACTCCTGGCGAAGAAGCCTACTACCGACCGAAGGCGCAACGCACCAATGAGATTCCGGTCGTGAAGCGGACAGTGAATAAGAACGGTCAGCGGTCGCGACCGCGCTCTATCCGGTCCGGTGAAAGGCTGAAAACGATTCGCCAGTGTCTACAACGACTCGAAATCATGGGTTGTCGCGCTTATATCGACCCTGATGGAAAGGTCATGGTGAGAATTGGCAATAGTACACAACTACAAGACGGATTGCCTTGCGGCGAATCCAGACCCATAGCAAAGACCGACCGTGTGGCTACTGGCCGCGAGGTTGAGGAAAGTTGGTTGGGTGCTTTCTTATTAAAATATTGAGGTCGACATGAATAAAAATGAATCAGTAGCATTCTTGCAATGGCTTGAAGGTGTGGTGGAGTATTACGCTCCAAAAGACCGTTTCATCTTTCAAGGTAAAAGCTTCAAGCGCAAAGGCCAAGCCGAGAAGGCAGCGCGCAAGTACTGGAAGGAAGTTTATTCAGAGTTCTTTCAGCACATCGGCACAGCTGGTATCGATTGATGAATCCAATCGTTACAATTAATAAACCGATTTGAATGCCGCGCTATGCGGCTTTATTATAATTTAAGTTAATCACCCTCATGAAAGGTAATGATATGTCAAATAAGAATGATTCTATTCACAATACATATACTAAAGGCAGCGGAATGGCCTTTGGTGGCAGTATCAAAATTGACGCTCCATCTTGCGATTCTGATGGATTGGAAGTCGGCAACCGAGACTTAACATGGGTTTTACGTCGCCAATCCGATTTAGAAGAGAAGCTGGAAAATATTGAGCGTTCTCTTGAAAGTCTTCGCGACCAGCTTTTTGGTTGTCCTGAAGATGATTCAAAACCTGGACCATATGCATCCAATCATGGTTTGATTGATAATATGCTTGCTATTACCGCTCGATCAATTGGTAAAACTGTGTCCATTGAATCATTGATCAGTCAGATTGCGGATGGCTTTGGTGATGCCCATAAGAGTGAATAGTGGGTGTTGCTGATTTAACCGTGAATCGTGGGTCGCTGTGGCGGCCCTTTCTTTTGCCTGCCGCGCAGGAGTGTACTGCAAATTTACTGTGGGCACAAAATAGTACGGTACTGTCTAGGACTTTTTCTTTGAAAAGTTAGTGGACCAAATGTGTCGTATTTTGATTAGTGTACTGCAAATTTCATCAAGTACCAAAACGCACCAAAAGACCCATGCCCTAAAAACCACACGAACGCAATAATCAATCGCCGTTACAGTTTCCAGCGTTACAATTAGAAAGCGAATGATTCGGCGCATAATAATATGAAGCATAATAGTTCGAAAGCGAATGATTGCGCGCAGAATAATATCGGTTGGGATTATTCTAGATGTCGGTAATTTCGCATGCGTACTATTTTCGGGCGAAGGGTCGGCATATTTCTCGTTTTAGTTCGGAACGAAGGGAAAGTTTTGCGCCTTTATAAAACAACGACTTGCGCGACCCGCCTTAACGTTCCGATATAGGTGTCTATATAAAACAACGACTTACGCGATGTTCTCCATTTAACGTAATACCTGTTATGCGAACTAAGGCGCATCTCGATGAAGATTATGCGACGAAGAAGGGAAGGATAAAGGAGTTTTCGCGGAGAAGCGCATCGAGATAGGGGCGAAGAAAAGCCGCGACTAAGCGCGGCCTATTAGTAACGGTGGGTGATTATAATTAAAGGAATAATCCGGCGCGTTTAATTTGCCCAAGGACGTTATCGCGACGGCGACGCATAACCGCGTATTTAACTTCTTCTTCGTATCCCCAGCCGCCGATGGATAACATCGAGTTCATATTATCGCATAATTCCTTAAGCTCGCGAAACATATCGATTACGGCGGAGCGATGGGCGCGCGCGTTAAGAGAGTTATTCATATTAATCATTTTCTTCTCCTTAAAGGCTTACGATTTTAAAGAAAGTTACTTCGCCGCCGAGTTGCGGTACAGCGATATATTCGCCGCCGATTTCGGTAATCGTATAAACGAAGCCGTTAATCGTTACGCGGTAGGATACGATGTCCTCGTCGCGATACTTGTAAAGGTCGAGGAAGTTGATCGGCTCATAAATAGCCTCGATAGTCGCGTCGACGTTAAAAAGATAGACGTGTTTAAGTTTTTCACCAAATACATTGGAGTTTTCGGAAGTCTCGACGCGAGCGTCGCGGATAGCGGCTAAAGTAATCATAATATTCTCCTAGTTAGTCGGGAGGGTAGCGACCTATTCGCTACCTCATCCCCTCTCGATATAAAACATTATAGTCTTAGTGTACGAATAAGTAAAGCACTTTTTCGTTATTTTGCGATAAAATATTTATAAGCCTTATCGCCTTCTACGTCGATATACTCGACGATAATTAATTCTTCGCCGCGTGGCGTAACCGTCTCGATAAGGGTAACGGCTTCGTCGTCGGTCTTCGCGAAGCGGATTGCGCTACGTTCGGCATACTTAATATCGTCGAAGGATAATCCGACGAAGGCGACGGCGCGCGCTTTAATAATGCTCGTTTCGAGTTCCGCGTTAACGGCGGCGATAAGAGAGCGAACGGTTAAGCGGTCTTCGTCGTAAGTAAGGATAGAAGAGATTAAAGTGGTCATAATAAAACTCCCGGTGCTAGTAGAAGGAAGGGCCATCGCCCGTCTCGATATGAACAAGTATACGCGAGTGTACGAAGAAGTAAAGAAAAAAGATAAAATAATTTATCGCATTTTTATCGAAAAAGTGCTTTACTTTTTTCTACACTATATTATAATGTACTCATATCGGGACGGGATGAGTTAACGAATAGGTCGTTAACGCCTCTCCCCAACTAGGAGTTTATTATGG 3 | --------------------------------------------------------------------------------